diff --git a/.github/workflows/cargo.yml b/.github/workflows/cargo.yml index 0172104..75007ef 100644 --- a/.github/workflows/cargo.yml +++ b/.github/workflows/cargo.yml @@ -38,7 +38,7 @@ jobs: - name: Install latest stable uses: actions-rs/toolchain@v1 with: - toolchain: 1.69.0 + toolchain: 1.71.0 override: true components: rustfmt, clippy diff --git a/.github/workflows/cargo_test.yml b/.github/workflows/cargo_test.yml index 43bcff9..3697648 100644 --- a/.github/workflows/cargo_test.yml +++ b/.github/workflows/cargo_test.yml @@ -50,7 +50,7 @@ jobs: - uses: actions-rs/toolchain@v1 with: - toolchain: 1.69.0 + toolchain: 1.71.0 override: true components: cargo, rustc diff --git a/Cargo.lock b/Cargo.lock index d93f92f..63769e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,9 +14,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -43,7 +43,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ "cfg-if", - "cipher 0.3.0", + "cipher", "cpufeatures", "opaque-debug", ] @@ -56,7 +56,7 @@ checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc" dependencies = [ "aead", "aes", - "cipher 0.3.0", + "cipher", "ctr", "polyval", "subtle", @@ -81,15 +81,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if", + "getrandom 0.2.10", "once_cell", "version_check", ] [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" dependencies = [ "memchr", ] @@ -115,6 +116,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "anchor-attribute-access-control" version = "0.26.0" @@ -123,8 +130,8 @@ checksum = "cf7d535e1381be3de2c0716c0a1c1e32ad9df1042cddcf7bc18d743569e53319" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "regex", "syn 1.0.109", ] @@ -138,8 +145,8 @@ dependencies = [ "anchor-syn", "anyhow", "bs58 0.4.0", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "rustversion", "syn 1.0.109", ] @@ -151,7 +158,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1be64a48e395fe00b8217287f226078be2cf32dae42fdf8a885b997945c3d28" dependencies = [ "anchor-syn", - "proc-macro2 1.0.66", + "proc-macro2 1.0.67", "syn 1.0.109", ] @@ -162,8 +169,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38ea6713d1938c0da03656ff8a693b17dc0396da66d1ba320557f07e86eca0d4" dependencies = [ "anchor-syn", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -175,8 +182,8 @@ checksum = "d401f11efb3644285685f8339829a9786d43ed7490bb1699f33c478d04d5a582" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -189,8 +196,8 @@ dependencies = [ "anchor-syn", "anyhow", "heck 0.3.3", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -202,8 +209,8 @@ checksum = "6ad769993b5266714e8939e47fbdede90e5c030333c7522d99a4d4748cf26712" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -215,8 +222,8 @@ checksum = "4e677fae4a016a554acdd0e3b7f178d3acafaa7e7ffac6b8690cf4e171f1c116" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -228,8 +235,8 @@ checksum = "340beef6809d1c3fcc7ae219153d981e95a8a277ff31985bd7050e32645dc9a8" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -266,9 +273,9 @@ dependencies = [ "anyhow", "bs58 0.3.1", "heck 0.3.3", - "proc-macro2 1.0.66", + "proc-macro2 1.0.67", "proc-macro2-diagnostics", - "quote 1.0.32", + "quote 1.0.33", "serde", "serde_json", "sha2 0.9.9", @@ -302,30 +309,29 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" dependencies = [ "utf8parse", ] @@ -341,9 +347,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" dependencies = [ "anstyle", "windows-sys 0.48.0", @@ -351,13 +357,136 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" dependencies = [ "backtrace", ] +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.4", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.4", + "num-traits", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint 0.4.4", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "array-bytes" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ad284aeb45c13f2fb4f084de4a420ebf447423bdf9386c0540ce33cb3ef4b8c" + [[package]] name = "arrayref" version = "0.3.7" @@ -366,9 +495,15 @@ checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" [[package]] name = "asn1-rs" @@ -383,7 +518,7 @@ dependencies = [ "num-traits", "rusticata-macros", "thiserror", - "time 0.3.22", + "time", ] [[package]] @@ -392,8 +527,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", "synstructure", ] @@ -404,8 +539,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -421,15 +556,15 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "async-channel" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", "event-listener", @@ -438,9 +573,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0122885821398cc923ece939e24d1056a2384ee719432397fa9db87230ff11" +checksum = "bb42b2197bf15ccb092b62c74515dbd8b86d0effd934795f6687c93b6e679a2c" dependencies = [ "brotli", "flate2", @@ -459,7 +594,7 @@ dependencies = [ "async-lock", "async-task", "concurrent-queue", - "fastrand", + "fastrand 1.9.0", "futures-lite", "slab", ] @@ -494,17 +629,17 @@ dependencies = [ "log", "parking", "polling", - "rustix", + "rustix 0.37.23", "slab", - "socket2", + "socket2 0.4.9", "waker-fn", ] [[package]] name = "async-lock" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ "event-listener", ] @@ -562,9 +697,9 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -575,13 +710,13 @@ checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" [[package]] name = "async-trait" -version = "0.1.71" +version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a564d521dd56509c4c47480d00b80ee55f7e385ae48db5744c67ad50c92d2ebf" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -627,14 +762,14 @@ dependencies = [ [[package]] name = "axum" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", "axum-core", - "bitflags", - "bytes", + "bitflags 1.3.2", + "bytes 1.5.0", "futures-util", "http", "http-body", @@ -660,7 +795,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", - "bytes", + "bytes 1.5.0", "futures-util", "http", "http-body", @@ -690,23 +825,23 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c1a6197b2120bb2185a267f6515038558b019e92b832bb0320e96d66268dcf9" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", - "pin-project", + "pin-project 1.1.3", "tokio", ] [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", "cfg-if", "libc", - "miniz_oxide 0.6.2", + "miniz_oxide", "object", "rustc-demangle", ] @@ -719,8 +854,8 @@ checksum = "33b8de67cc41132507eeece2584804efcb15f85ba516e34c944b7667f480397a" dependencies = [ "heck 0.3.3", "proc-macro-error", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -738,9 +873,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.2" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "base64ct" @@ -763,7 +898,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" dependencies = [ - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-integer", "num-traits", ] @@ -783,6 +918,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + [[package]] name = "bitmaps" version = "2.1.0" @@ -806,9 +947,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" +checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5" dependencies = [ "arrayref", "arrayvec", @@ -853,7 +994,7 @@ dependencies = [ "async-lock", "async-task", "atomic-waker", - "fastrand", + "fastrand 1.9.0", "futures-lite", "log", ] @@ -887,7 +1028,7 @@ dependencies = [ "borsh-derive-internal 0.9.3", "borsh-schema-derive-internal 0.9.3", "proc-macro-crate 0.1.5", - "proc-macro2 1.0.66", + "proc-macro2 1.0.67", "syn 1.0.109", ] @@ -900,7 +1041,7 @@ dependencies = [ "borsh-derive-internal 0.10.3", "borsh-schema-derive-internal 0.10.3", "proc-macro-crate 0.1.5", - "proc-macro2 1.0.66", + "proc-macro2 1.0.67", "syn 1.0.109", ] @@ -910,8 +1051,8 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -921,8 +1062,8 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -932,8 +1073,8 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -943,8 +1084,8 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -992,9 +1133,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bv" @@ -1023,29 +1164,29 @@ version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -1056,9 +1197,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.4.0" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + +[[package]] +name = "bytes" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "caps" @@ -1072,11 +1219,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -1087,18 +1235,17 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", - "time 0.1.45", "wasm-bindgen", - "winapi", + "windows-targets 0.48.5", ] [[package]] @@ -1110,16 +1257,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - [[package]] name = "clap" version = "2.34.0" @@ -1128,7 +1265,7 @@ checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", - "bitflags", + "bitflags 1.3.2", "strsim 0.8.0", "textwrap 0.11.0", "unicode-width", @@ -1142,10 +1279,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", - "bitflags", + "bitflags 1.3.2", "clap_derive 3.2.25", "clap_lex 0.2.4", - "indexmap", + "indexmap 1.9.3", "once_cell", "strsim 0.10.0", "termcolor", @@ -1154,26 +1291,23 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.3" +version = "4.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8f255e4b8027970e78db75e78831229c9815fdbfa67eb1a1b777a62e24b4a0" +checksum = "b1d7b8d5ec32af0fadc644bf1fd509a688c2103b185644bb1e29d164e0703136" dependencies = [ "clap_builder", - "clap_derive 4.3.2", - "once_cell", + "clap_derive 4.4.2", ] [[package]] name = "clap_builder" -version = "4.3.3" +version = "4.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd4f3c17c83b0ba34ffbc4f8bbd74f079413f747f84a6f89292f138057e36ab" +checksum = "5179bb514e4d7c2051749d8fcefa2ed6d06a9f4e6d69faf3805f5d80b8cf8d56" dependencies = [ "anstream", "anstyle", - "bitflags", - "clap_lex 0.5.0", - "once_cell", + "clap_lex 0.5.1", "strsim 0.10.0", ] @@ -1185,21 +1319,21 @@ checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ "heck 0.4.1", "proc-macro-error", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "clap_derive" -version = "4.3.2" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" +checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -1213,9 +1347,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" [[package]] name = "colorchoice" @@ -1223,6 +1357,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + [[package]] name = "concurrent-queue" version = "2.2.0" @@ -1273,9 +1420,9 @@ checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" [[package]] name = "constant_time_eq" -version = "0.1.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "core-foundation" @@ -1295,9 +1442,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -1334,14 +1481,14 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.8.0", + "memoffset 0.9.0", "scopeguard", ] @@ -1357,9 +1504,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -1396,7 +1543,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" dependencies = [ - "cipher 0.3.0", + "cipher", ] [[package]] @@ -1415,9 +1562,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ "darling_core", "darling_macro", @@ -1425,37 +1572,37 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "strsim 0.10.0", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "darling_macro" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", - "quote 1.0.32", - "syn 2.0.28", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] name = "dashmap" -version = "5.4.0" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.12.3", + "hashbrown 0.14.0", "lock_api", "once_cell", "parking_lot_core 0.9.8", @@ -1485,17 +1632,37 @@ dependencies = [ "asn1-rs", "displaydoc", "nom", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "rusticata-macros", ] +[[package]] +name = "deranged" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +dependencies = [ + "serde", +] + [[package]] name = "derivation-path" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + [[package]] name = "dialoguer" version = "0.10.4" @@ -1537,16 +1704,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.3.7" @@ -1558,26 +1715,15 @@ dependencies = [ "winapi", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "displaydoc" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -1665,14 +1811,14 @@ dependencies = [ "derivation-path", "ed25519-dalek", "hmac 0.12.1", - "sha2 0.10.6", + "sha2 0.10.7", ] [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encode_unicode" @@ -1682,43 +1828,31 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] [[package]] name = "enum-iterator" -version = "0.8.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2953d1df47ac0eb70086ccabf0275aa8da8591a28bd358ee2b52bd9f9e3ff9e9" +checksum = "7add3873b5dd076766ee79c8e406ad1a472c385476b9e38849f8eec24f1be689" dependencies = [ "enum-iterator-derive", ] [[package]] name = "enum-iterator-derive" -version = "0.8.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8958699f9359f0b04e691a13850d48b7de329138023876d07cbd024c2c820598" +checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 1.0.109", -] - -[[package]] -name = "enum_dispatch" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2" -dependencies = [ - "once_cell", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 1.0.109", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -1734,11 +1868,17 @@ dependencies = [ "termcolor", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" dependencies = [ "errno-dragonfly", "libc", @@ -1770,12 +1910,24 @@ dependencies = [ "instant", ] +[[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + [[package]] name = "feature-probe" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + [[package]] name = "fixedbitset" version = "0.4.2" @@ -1784,12 +1936,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", - "miniz_oxide 0.7.1", + "miniz_oxide", ] [[package]] @@ -1893,7 +2045,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", "futures-io", "memchr", @@ -1908,9 +2060,9 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -1944,12 +2096,15 @@ dependencies = [ ] [[package]] -name = "fxhash" -version = "0.2.1" +name = "futures_codec" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +checksum = "ce54d63f8b0c75023ed920d46fd71d0cbbb830b0ee012726b5b4f506fb6dea5b" dependencies = [ - "byteorder", + "bytes 0.5.6", + "futures", + "memchr", + "pin-project 0.4.30", ] [[package]] @@ -2001,9 +2156,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "gloo-timers" @@ -2017,25 +2172,45 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "goblin" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" +dependencies = [ + "log", + "plain", + "scroll", +] + [[package]] name = "h2" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ - "bytes", + "bytes 1.5.0", "fnv", "futures-core", "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", "tokio-util", "tracing", ] +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.11.2" @@ -2063,13 +2238,47 @@ dependencies = [ "ahash 0.8.3", ] +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +dependencies = [ + "ahash 0.8.3", + "allocator-api2", +] + [[package]] name = "hashlink" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0761a1b9491c4f2e3d66aa0f62d0fba0af9a0e2852e4d48ea506632a4b56e6aa" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.13.2", + "hashbrown 0.14.0", +] + +[[package]] +name = "headers" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" +dependencies = [ + "base64 0.21.4", + "bytes 1.5.0", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http", ] [[package]] @@ -2101,18 +2310,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -2170,15 +2370,15 @@ dependencies = [ [[package]] name = "holaplex-hub-core" -version = "0.5.0" -source = "git+https://github.com/holaplex/hub-core?branch=stable#711b8a0c9a1056490dff05acadf5a2b354612f01" +version = "0.5.6" +source = "git+https://github.com/holaplex/hub-core?branch=stable#1d20d2fbb974c59340dbaca00387988d1bb69272" dependencies = [ "anyhow", "async-trait", "backon", "bs58 0.5.0", "chrono", - "clap 4.3.3", + "clap 4.4.4", "dotenv", "futures-util", "holaplex-hub-core-macros", @@ -2186,7 +2386,11 @@ dependencies = [ "hostname", "jsonrpsee-core", "num_cpus", + "opentelemetry", + "opentelemetry-prometheus", + "opentelemetry_sdk", "pin-project-lite", + "prometheus", "prost", "prost-types", "rdkafka", @@ -2208,7 +2412,7 @@ dependencies = [ [[package]] name = "holaplex-hub-core-build" version = "0.2.1" -source = "git+https://github.com/holaplex/hub-core?branch=stable#711b8a0c9a1056490dff05acadf5a2b354612f01" +source = "git+https://github.com/holaplex/hub-core?branch=stable#1d20d2fbb974c59340dbaca00387988d1bb69272" dependencies = [ "anyhow", "dotenv", @@ -2217,7 +2421,7 @@ dependencies = [ "prost-build", "reqwest", "serde", - "sha2 0.10.6", + "sha2 0.10.7", "tempfile", "tokio", "toml", @@ -2227,18 +2431,18 @@ dependencies = [ [[package]] name = "holaplex-hub-core-macros" version = "0.1.0" -source = "git+https://github.com/holaplex/hub-core?branch=stable#711b8a0c9a1056490dff05acadf5a2b354612f01" +source = "git+https://github.com/holaplex/hub-core?branch=stable#1d20d2fbb974c59340dbaca00387988d1bb69272" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", "thiserror", ] [[package]] name = "holaplex-hub-core-schemas" -version = "0.3.1" -source = "git+https://github.com/holaplex/hub-core?branch=stable#711b8a0c9a1056490dff05acadf5a2b354612f01" +version = "0.3.2" +source = "git+https://github.com/holaplex/hub-core?branch=stable#1d20d2fbb974c59340dbaca00387988d1bb69272" dependencies = [ "holaplex-hub-core-build", "prost", @@ -2256,6 +2460,7 @@ dependencies = [ "jsonrpsee", "mpl-bubblegum", "mpl-token-metadata", + "poem", "rand 0.8.5", "serde", "serde_json", @@ -2264,9 +2469,9 @@ dependencies = [ "solana-sdk", "solana-transaction-status", "spl-account-compression", - "spl-associated-token-account", + "spl-associated-token-account 1.1.3", "spl-noop", - "spl-token", + "spl-token 3.5.0", ] [[package]] @@ -2290,6 +2495,15 @@ dependencies = [ "serde", ] +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + [[package]] name = "hostname" version = "0.3.1" @@ -2307,7 +2521,7 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ - "bytes", + "bytes 1.5.0", "fnv", "itoa", ] @@ -2318,7 +2532,7 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes", + "bytes 1.5.0", "http", "pin-project-lite", ] @@ -2331,9 +2545,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -2343,11 +2557,11 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.26" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ - "bytes", + "bytes 1.5.0", "futures-channel", "futures-core", "futures-util", @@ -2358,7 +2572,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -2367,14 +2581,15 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ + "futures-util", "http", "hyper", "log", - "rustls 0.21.1", + "rustls 0.21.7", "rustls-native-certs", "tokio", "tokio-rustls 0.24.1", @@ -2398,7 +2613,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ - "bytes", + "bytes 1.5.0", "hyper", "native-tls", "tokio", @@ -2472,24 +2687,26 @@ dependencies = [ ] [[package]] -name = "indicatif" -version = "0.16.2" +name = "indexmap" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d207dc617c7a380ab07ff572a6e52fa202a2a8f355860ac9c38e23f8196be1b" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ - "console", - "lazy_static", - "number_prefix", - "regex", + "equivalent", + "hashbrown 0.14.0", ] [[package]] -name = "inout" -version = "0.1.3" +name = "indicatif" +version = "0.17.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730" dependencies = [ - "generic-array", + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", ] [[package]] @@ -2507,43 +2724,40 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi 0.3.3", "libc", "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.7.2" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] -name = "is-terminal" -version = "0.4.7" +name = "itertools" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", - "windows-sys 0.48.0", + "either", ] [[package]] name = "itertools" -version = "0.10.5" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jobserver" @@ -2556,9 +2770,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.63" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -2637,8 +2851,8 @@ checksum = "21dc12b1d4f16a86e8c522823c4fab219c88c03eb7c924ec0501a64bf12e058b" dependencies = [ "heck 0.4.1", "proc-macro-crate 1.3.1", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -2682,19 +2896,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.146" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] name = "libsecp256k1" @@ -2746,9 +2950,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.9" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ "cc", "libc", @@ -2757,16 +2961,16 @@ dependencies = [ ] [[package]] -name = "linked-hash-map" -version = "0.5.6" +name = "linux-raw-sys" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" [[package]] name = "lock_api" @@ -2780,9 +2984,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.18" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" dependencies = [ "value-bag", ] @@ -2809,14 +3013,14 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] name = "matchit" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" +checksum = "ed1202b2a6f884ae56f04cff409ab315c5ce26b5e58d7412e484f01fd52f52ef" [[package]] name = "md-5" @@ -2829,9 +3033,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memmap2" @@ -2844,18 +3048,18 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.6.5" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" dependencies = [ "autocfg", ] [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] @@ -2880,7 +3084,7 @@ dependencies = [ "holaplex-hub-nfts-solana-entity", "sea-orm-migration", "solana-sdk", - "spl-associated-token-account", + "spl-associated-token-account 1.1.3", ] [[package]] @@ -2895,15 +3099,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -2935,19 +3130,20 @@ dependencies = [ "mpl-token-metadata", "solana-program", "spl-account-compression", - "spl-associated-token-account", - "spl-token", + "spl-associated-token-account 1.1.3", + "spl-token 3.5.0", ] [[package]] name = "mpl-token-auth-rules" -version = "1.3.0" +version = "1.4.3-beta.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24dcb2b0ec0e9246f6f035e0336ba3359c21f6928dfd90281999e2c8e8ab53eb" +checksum = "81a34d740606a10a9dac7507d0c9025d72e0ce311c68ae85b6634982cf69a9c6" dependencies = [ "borsh 0.9.3", - "mpl-token-metadata-context-derive", - "num-derive", + "bytemuck", + "mpl-token-metadata-context-derive 0.2.1", + "num-derive 0.3.3", "num-traits", "rmp-serde", "serde", @@ -2959,21 +3155,21 @@ dependencies = [ [[package]] name = "mpl-token-metadata" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f661ff8c1d64c48cf207c0d259783d411a4249058c1b861fabd8bb6ce30ae4d8" +checksum = "654976568c99887549e1291e7b7e55ae31a70732e56ebb25cb1cdfc08c018333" dependencies = [ "arrayref", "borsh 0.9.3", "mpl-token-auth-rules", - "mpl-token-metadata-context-derive", + "mpl-token-metadata-context-derive 0.3.0", "mpl-utils", - "num-derive", + "num-derive 0.3.3", "num-traits", "shank", "solana-program", - "spl-associated-token-account", - "spl-token", + "spl-associated-token-account 2.1.0", + "spl-token 4.0.0", "thiserror", ] @@ -2983,20 +3179,29 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12989bc45715b0ee91944855130131479f9c772e198a910c3eb0ea327d5bffc3" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "mpl-token-metadata-context-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a739019e11d93661a64ef5fe108ab17c79b35961e944442ff6efdd460ad01a" +dependencies = [ + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "mpl-utils" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822133b6cba8f9a43e5e0e189813be63dd795858f54155c729833be472ffdb51" +checksum = "3f2e4f92aec317d5853c0cc4c03c55f5178511c45bb3dbb441aea63117bf3dc9" dependencies = [ "arrayref", - "borsh 0.9.3", "solana-program", - "spl-token", + "spl-token-2022 0.6.1", ] [[package]] @@ -3025,14 +3230,15 @@ dependencies = [ [[package]] name = "nix" -version = "0.24.3" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "libc", - "memoffset 0.6.5", + "memoffset 0.7.1", + "pin-utils", ] [[package]] @@ -3082,9 +3288,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -3107,11 +3313,22 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] +[[package]] +name = "num-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e6a0fd4f737c707bd9086cc16c925f294943eb62eb71499e9fd4cf71f8b9f4e" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + [[package]] name = "num-integer" version = "0.1.45" @@ -3147,20 +3364,20 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.3", "libc", ] @@ -3170,7 +3387,25 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ - "num_enum_derive", + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive 0.6.1", +] + +[[package]] +name = "num_enum" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb" +dependencies = [ + "num_enum_derive 0.7.0", ] [[package]] @@ -3180,11 +3415,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + [[package]] name = "number_prefix" version = "0.4.0" @@ -3193,9 +3452,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.30.4" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -3223,11 +3482,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.54" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b3f656a17a6cbc115b5c7a40c616947d213ba182135b014d6051b73ab6f019" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags", + "bitflags 2.4.0", "cfg-if", "foreign-types", "libc", @@ -3242,9 +3501,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -3255,9 +3514,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.88" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ce0f250f34a308dcfdbb351f511359857d4ed2134ba715a4eadd46e1ffd617" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ "cc", "libc", @@ -3265,6 +3524,76 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "opentelemetry" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" +dependencies = [ + "opentelemetry_api", + "opentelemetry_sdk", +] + +[[package]] +name = "opentelemetry-prometheus" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d81bc254e2d572120363a2b16cdb0d715d301b5789be0cfc26ad87e4e10e53" +dependencies = [ + "once_cell", + "opentelemetry_api", + "opentelemetry_sdk", + "prometheus", + "protobuf", +] + +[[package]] +name = "opentelemetry_api" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" +dependencies = [ + "futures-channel", + "futures-util", + "indexmap 1.9.3", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", + "urlencoding", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "once_cell", + "opentelemetry_api", + "ordered-float", + "percent-encoding", + "rand 0.8.5", + "regex", + "thiserror", + "tokio", + "tokio-stream", +] + +[[package]] +name = "ordered-float" +version = "3.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a54938017eacd63036332b4ae5c8a49fc8c0c1d6d629893057e4f13609edd06" +dependencies = [ + "num-traits", +] + [[package]] name = "os_pipe" version = "1.1.4" @@ -3277,9 +3606,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.5.0" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "ouroboros" @@ -3299,8 +3628,8 @@ checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" dependencies = [ "Inflector", "proc-macro-error", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -3361,14 +3690,14 @@ dependencies = [ "libc", "redox_syscall 0.3.5", "smallvec", - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pbkdf2" @@ -3414,39 +3743,59 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 2.0.0", ] [[package]] name = "pin-project" -version = "1.1.0" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a" +dependencies = [ + "pin-project-internal 0.4.30", +] + +[[package]] +name = "pin-project" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ - "pin-project-internal", + "pin-project-internal 1.1.3", ] [[package]] name = "pin-project-internal" -version = "1.1.0" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -3471,6 +3820,56 @@ version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "poem" +version = "1.3.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc7ae19f3e791ae8108b08801abb3708d64d3a16490c720e0b81040cae87b5d" +dependencies = [ + "anyhow", + "async-trait", + "bytes 1.5.0", + "futures-util", + "headers", + "http", + "hyper", + "mime", + "parking_lot 0.12.1", + "percent-encoding", + "pin-project-lite", + "poem-derive", + "regex", + "rfc7239", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "sse-codec", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "poem-derive" +version = "1.3.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2550a0bce7273b278894ef3ccc5a6869e7031b6870042f3cc6826ed9faa980a6" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + [[package]] name = "polling" version = "2.8.0" @@ -3478,7 +3877,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" dependencies = [ "autocfg", - "bitflags", + "bitflags 1.3.2", "cfg-if", "concurrent-queue", "libc", @@ -3499,6 +3898,12 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "portable-atomic" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -3511,7 +3916,7 @@ version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.67", "syn 1.0.109", ] @@ -3541,8 +3946,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", "version_check", ] @@ -3553,8 +3958,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "version_check", ] @@ -3569,9 +3974,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] @@ -3582,20 +3987,35 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", "version_check", "yansi", ] +[[package]] +name = "prometheus" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot 0.12.1", + "protobuf", + "thiserror", +] + [[package]] name = "prost" version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" dependencies = [ - "bytes", + "bytes 1.5.0", "prost-derive", ] @@ -3605,9 +4025,9 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ - "bytes", + "bytes 1.5.0", "heck 0.4.1", - "itertools", + "itertools 0.10.5", "lazy_static", "log", "multimap", @@ -3628,9 +4048,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", - "itertools", - "proc-macro2 1.0.66", - "quote 1.0.32", + "itertools 0.10.5", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -3643,6 +4063,12 @@ dependencies = [ "prost", ] +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + [[package]] name = "protobuf-src" version = "1.1.0+21.5" @@ -3667,8 +4093,8 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -3683,17 +4109,16 @@ dependencies = [ [[package]] name = "quinn" -version = "0.8.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b435e71d9bfa0d8889927231970c51fb89c58fa63bffcab117c9c7a41e5ef8f" +checksum = "2e8b432585672228923edbbf64b8b12c14e1112f62e88737655b4a083dbcd78e" dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "fxhash", + "bytes 1.5.0", + "pin-project-lite", "quinn-proto", "quinn-udp", - "rustls 0.20.8", + "rustc-hash", + "rustls 0.20.9", "thiserror", "tokio", "tracing", @@ -3702,17 +4127,16 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.8.4" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fce546b9688f767a57530652488420d419a8b1f44a478b451c3d1ab6d992a55" +checksum = "f31999cfc7927c4e212e60fd50934ab40e8e8bfd2d493d6095d2d306bc0764d9" dependencies = [ - "bytes", - "fxhash", + "bytes 1.5.0", "rand 0.8.5", "ring", - "rustls 0.20.8", + "rustc-hash", + "rustls 0.20.9", "rustls-native-certs", - "rustls-pemfile 0.2.1", "slab", "thiserror", "tinyvec", @@ -3722,16 +4146,15 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.1.4" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07946277141531aea269befd949ed16b2c85a780ba1043244eda0969e538e54" +checksum = "641538578b21f5e5c8ea733b736895576d0fe329bb883b937db6f4d163dbaaf4" dependencies = [ - "futures-util", "libc", "quinn-proto", - "socket2", - "tokio", + "socket2 0.4.9", "tracing", + "windows-sys 0.42.0", ] [[package]] @@ -3745,11 +4168,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.67", ] [[package]] @@ -3862,13 +4285,13 @@ dependencies = [ [[package]] name = "rcgen" -version = "0.9.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" dependencies = [ "pem", "ring", - "time 0.3.22", + "time", "yasna", ] @@ -3892,13 +4315,13 @@ dependencies = [ [[package]] name = "rdkafka-sys" -version = "4.5.0+1.9.2" +version = "4.6.0+2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb0676c2112342ac7165decdedbc4e7086c0af384479ccce534546b10687a5d" +checksum = "ad63c279fca41a27c231c450a2d2ad18288032e9cbb159ad16c9d96eba35aaaf" dependencies = [ "libc", "libz-sys", - "num_enum", + "num_enum 0.5.11", "openssl-sys", "pkg-config", "sasl2-sys", @@ -3911,7 +4334,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -3920,7 +4343,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -3936,13 +4359,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.2", + "regex-automata 0.3.8", + "regex-syntax 0.7.5", ] [[package]] @@ -3954,6 +4378,17 @@ dependencies = [ "regex-syntax 0.6.29", ] +[[package]] +name = "regex-automata" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.5", +] + [[package]] name = "regex-syntax" version = "0.6.29" @@ -3962,9 +4397,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "rend" @@ -3977,13 +4412,13 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ "async-compression", - "base64 0.21.2", - "bytes", + "base64 0.21.4", + "bytes 1.5.0", "encoding_rs", "futures-core", "futures-util", @@ -4001,8 +4436,8 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.1", - "rustls-pemfile 1.0.2", + "rustls 0.21.7", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", @@ -4016,10 +4451,19 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots", + "webpki-roots 0.25.2", "winreg", ] +[[package]] +name = "rfc7239" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "087317b3cf7eb481f13bd9025d729324b7cd068d6f470e2d76d049e191f5ba47" +dependencies = [ + "uncased", +] + [[package]] name = "ring" version = "0.16.20" @@ -4058,16 +4502,16 @@ version = "0.7.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "rmp" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44519172358fd6d58656c86ab8e7fbc9e1490c3e8f14d35ed78ca0dd07403c9f" +checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20" dependencies = [ "byteorder", "num-traits", @@ -4076,9 +4520,9 @@ dependencies = [ [[package]] name = "rmp-serde" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b13be192e0220b8afb7222aa5813cb62cc269ebb5cac346ca6487681d2913e" +checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a" dependencies = [ "byteorder", "rmp", @@ -4087,27 +4531,34 @@ dependencies = [ [[package]] name = "rpassword" -version = "6.0.1" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf099a1888612545b683d2661a1940089f6c2e5a8e38979b2159da876bfd956" +checksum = "6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322" +dependencies = [ + "libc", + "rtoolbox", + "winapi", +] + +[[package]] +name = "rtoolbox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a" dependencies = [ "libc", - "serde", - "serde_json", "winapi", ] [[package]] name = "rust_decimal" -version = "1.29.1" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26bd36b60561ee1fb5ec2817f198b6fd09fa571c897a5e86d1487cfc2b096dfc" +checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" dependencies = [ "arrayvec", "borsh 0.10.3", - "bytecheck", - "byteorder", - "bytes", + "bytes 1.5.0", "num-traits", "rand 0.8.5", "rkyv", @@ -4147,23 +4598,36 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.19" +version = "0.37.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ - "bitflags", + "bitflags 1.3.2", "errno", "io-lifetimes", "libc", - "linux-raw-sys", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys 0.4.7", "windows-sys 0.48.0", ] [[package]] name = "rustls" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ "log", "ring", @@ -4173,9 +4637,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.1" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c911ba11bc8433e811ce56fde130ccf32f5127cab0e0194e9c68c5a5b671791e" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", "ring", @@ -4185,39 +4649,30 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pemfile 1.0.2", + "rustls-pemfile", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" -dependencies = [ - "base64 0.13.1", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", ] [[package]] name = "rustls-webpki" -version = "0.100.1" +version = "0.101.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" +checksum = "45a27e3b59326c16e23d30aeb7a36a24cc0d29e71d68ff611cdfb4a01d013bed" dependencies = [ "ring", "untrusted", @@ -4225,15 +4680,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "sasl2-sys" @@ -4249,18 +4704,38 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] [[package]] name = "sct" @@ -4294,7 +4769,7 @@ dependencies = [ "serde_json", "sqlx", "thiserror", - "time 0.3.22", + "time", "tracing", "url", "uuid", @@ -4324,8 +4799,8 @@ checksum = "28936f26d62234ff0be16f80115dbdeb3237fe9c25cf18fbcd1e3b3592360f20" dependencies = [ "bae", "heck 0.3.3", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -4357,7 +4832,7 @@ dependencies = [ "rust_decimal", "sea-query-derive", "serde_json", - "time 0.3.22", + "time", "uuid", ] @@ -4373,7 +4848,7 @@ dependencies = [ "sea-query", "serde_json", "sqlx", - "time 0.3.22", + "time", "uuid", ] @@ -4384,8 +4859,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63f62030c60f3a691f5fe251713b4e220b306e50a71e1d6f9cce1f24bb781978" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", "thiserror", ] @@ -4408,8 +4883,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56821b7076f5096b8f726e2791ad255a99c82498e08ec477a65a96c461ff1927" dependencies = [ "heck 0.3.3", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -4429,8 +4904,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69b4397b825df6ccf1e98bcdabef3bbcfc47ff5853983467850eeab878384f21" dependencies = [ "heck 0.3.3", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "rustversion", "syn 1.0.109", ] @@ -4443,11 +4918,11 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "security-framework" -version = "2.9.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-foundation-sys", "libc", @@ -4456,9 +4931,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -4466,44 +4941,44 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.9" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" +checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -4531,11 +5006,11 @@ dependencies = [ "base64 0.13.1", "chrono", "hex", - "indexmap", + "indexmap 1.9.3", "serde", "serde_json", "serde_with_macros", - "time 0.3.22", + "time", ] [[package]] @@ -4545,21 +5020,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" dependencies = [ "darling", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", -] - -[[package]] -name = "serde_yaml" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" -dependencies = [ - "indexmap", - "ryu", - "serde", - "yaml-rust", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -4599,9 +5062,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", @@ -4645,8 +5108,8 @@ version = "0.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63927d22a1e8b74bda98cc6e151fcdf178b7abb0dc6c4f81e0bbf5ffe2fc4ec8" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "shank_macro_impl", "syn 1.0.109", ] @@ -4658,8 +5121,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40ce03403df682f80f4dc1efafa87a4d0cb89b03726d0565e6364bdca5b9a441" dependencies = [ "anyhow", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "serde", "syn 1.0.109", ] @@ -4722,18 +5185,18 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "snap" @@ -4751,14 +5214,24 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "solana-account-decoder" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e1192dfabdf54bdcbb2ecf24f2937751f69eec8e2a2ec7ee6ba59e3784d6c" +checksum = "b83daa56035885dac1a47f5bd3d4e02379e3fc5915b2c3ce978a9af9eeecf07d" dependencies = [ "Inflector", - "base64 0.13.1", + "base64 0.21.4", "bincode", "bs58 0.4.0", "bv", @@ -4769,23 +5242,22 @@ dependencies = [ "solana-address-lookup-table-program", "solana-config-program", "solana-sdk", - "solana-vote-program", - "spl-token", - "spl-token-2022", + "spl-token 3.5.0", + "spl-token-2022 0.6.1", "thiserror", "zstd", ] [[package]] name = "solana-address-lookup-table-program" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad05e123f815f2d6d2819d5c3a62f819f4ff85e1b8f197c8df0e8b87dad263d9" +checksum = "2dd3f3e85d67e559985fbdc6b5b4d5dd9c8462b78e6079c3b465496c1f3c55d6" dependencies = [ "bincode", "bytemuck", "log", - "num-derive", + "num-derive 0.3.3", "num-traits", "rustc_version", "serde", @@ -4799,9 +5271,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5043af10304295bab0309077428fbc23fc764be90ac5b2f6b8f20e6c35198a4" +checksum = "3669a399b8ef60642471e68e1f93d3f3050248a4fa1436341596cfcb2a484e8b" dependencies = [ "chrono", "clap 2.34.0", @@ -4815,81 +5287,44 @@ dependencies = [ "url", ] -[[package]] -name = "solana-cli-config" -version = "1.14.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8454021580994e7ab6d098b3698093fe2a1390ee60e129ceb70b58a9c6b20d4c" -dependencies = [ - "dirs-next", - "lazy_static", - "serde", - "serde_derive", - "serde_yaml", - "solana-clap-utils", - "solana-sdk", - "url", -] - [[package]] name = "solana-client" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6330cf467acac5fe26021f2c2f8ceaccdb41c14124aa349c7e5838d6778c6c" +checksum = "e96d8a28ca30cd385f7c2c4a7f93edc32c18bc041baa0e8b25bd56cd28c51cbb" dependencies = [ - "async-mutex", "async-trait", - "base64 0.13.1", "bincode", - "bs58 0.4.0", - "bytes", - "clap 2.34.0", - "crossbeam-channel", - "enum_dispatch", "futures", "futures-util", - "indexmap", + "indexmap 1.9.3", "indicatif", - "itertools", - "jsonrpc-core", - "lazy_static", "log", "quinn", - "quinn-proto", "rand 0.7.3", - "rand_chacha 0.2.2", "rayon", - "reqwest", - "rustls 0.20.8", - "semver", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder", - "solana-clap-utils", - "solana-faucet", + "solana-connection-cache", "solana-measure", "solana-metrics", - "solana-net-utils", + "solana-pubsub-client", + "solana-quic-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-rpc-client-nonce-utils", "solana-sdk", "solana-streamer", - "solana-transaction-status", - "solana-version", - "solana-vote-program", - "spl-token-2022", + "solana-thin-client", + "solana-tpu-client", + "solana-udp-client", "thiserror", "tokio", - "tokio-stream", - "tokio-tungstenite", - "tungstenite", - "url", ] [[package]] name = "solana-config-program" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22c75f090dfa209011b39c754bc31fbc1d27a8194041ff3f5508af4351cd274" +checksum = "0a35e4cc9f2996a2ef95aac398443fc4a110ef585521e11a7685b3591648b7cf" dependencies = [ "bincode", "chrono", @@ -4900,38 +5335,35 @@ dependencies = [ ] [[package]] -name = "solana-faucet" -version = "1.14.21" +name = "solana-connection-cache" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2df0d0a76fd3b87be552027421f7b39c0ef4d732a85053928534f1660532b608" +checksum = "5ecb12464ee1322a02635345522839958d78a2bacff18298991cacf298178f64" dependencies = [ + "async-trait", "bincode", - "byteorder", - "clap 2.34.0", - "crossbeam-channel", + "futures-util", + "indexmap 1.9.3", "log", - "serde", - "serde_derive", - "solana-clap-utils", - "solana-cli-config", - "solana-logger", + "rand 0.7.3", + "rayon", + "rcgen", + "solana-measure", "solana-metrics", "solana-sdk", - "solana-version", - "spl-memo", "thiserror", "tokio", ] [[package]] name = "solana-frozen-abi" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351019a83ce0f3c4e3be94d77478ab05fc63173054008bf7d94c879a2fbecabd" +checksum = "35b9e2169fd13394af838b13f047067c35ce69372aea0fb46e026405b5e931f9" dependencies = [ - "ahash 0.7.6", + "ahash 0.8.3", "blake3", - "block-buffer 0.9.0", + "block-buffer 0.10.4", "bs58 0.4.0", "bv", "byteorder", @@ -4939,7 +5371,6 @@ dependencies = [ "either", "generic-array", "getrandom 0.1.16", - "hashbrown 0.12.3", "im", "lazy_static", "log", @@ -4951,7 +5382,7 @@ dependencies = [ "serde_bytes", "serde_derive", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "solana-frozen-abi-macro", "subtle", "thiserror", @@ -4959,14 +5390,14 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbce93c3e02ed81ce0fee3fda2ebd27ff83b2c29e539ac834cef18e6c506b7a" +checksum = "db08ab0af4007dc0954b900aa5febc0c0ae50d9f9f598be27263c3195d90240b" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "rustc_version", - "syn 1.0.109", + "syn 2.0.37", ] [[package]] @@ -4986,16 +5417,16 @@ dependencies = [ "solana-client", "solana-program", "solana-sdk", - "spl-token", + "spl-token 3.5.0", "yellowstone-grpc-client", "yellowstone-grpc-proto", ] [[package]] name = "solana-logger" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af924d1eaaaf8024ac8d065c68dfed46843a5dd98a5b08863a06132a16f181e3" +checksum = "bf8a48e734f78a44399516f7c130c114b455911e351f001abc0d96e7c5694efa" dependencies = [ "env_logger", "lazy_static", @@ -5004,9 +5435,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96e6cb02090f6b263a2eeec14d27c4973d8dce4e0fe8985b59e034e5f98c376" +checksum = "d3529d2ff63ceedd3707c51188aacb9e3c142118de3f55447c40584a78223ffd" dependencies = [ "log", "solana-sdk", @@ -5014,9 +5445,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "017e96008b253ade11d43d33d26cb47d7df77cd95424eed5000bd805febc0977" +checksum = "4792f29de5378a13c51be3fa9fdd526a20550b5ffabd7d1a57a4e49468e17d90" dependencies = [ "crossbeam-channel", "gethostname", @@ -5028,9 +5459,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f142bddde7a8a075b994e49cba28bb693ecf4e863c1827081f96cb900fe607" +checksum = "7ed75beb465e211c79d31ae2049cb85974203e5ac21ae89396378d5a2fe71962" dependencies = [ "bincode", "clap 3.2.25", @@ -5040,7 +5471,7 @@ dependencies = [ "rand 0.7.3", "serde", "serde_derive", - "socket2", + "socket2 0.4.9", "solana-logger", "solana-sdk", "solana-version", @@ -5050,11 +5481,11 @@ dependencies = [ [[package]] name = "solana-perf" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c52ab8bd2da5ff24f2be54730dce2052c517bd115f8b51f31d69def1a55110e3" +checksum = "9218d9c823b22a465f91c966e8254a5f57b6817e0121ec6d4bf9a5ddc8307f18" dependencies = [ - "ahash 0.7.6", + "ahash 0.8.3", "bincode", "bv", "caps", @@ -5077,16 +5508,21 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad7bf19fac9aa34717ff346c4588b4cae07f17b6caeca2bca6012101e8214415" +checksum = "2f17a1fbcf1e94e282db16153d323b446d6386ac99f597f78e76332265829336" dependencies = [ - "base64 0.13.1", + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "array-bytes", + "base64 0.21.4", "bincode", - "bitflags", + "bitflags 1.3.2", "blake3", + "borsh 0.10.3", "borsh 0.9.3", - "borsh-derive 0.9.3", "bs58 0.4.0", "bv", "bytemuck", @@ -5095,14 +5531,15 @@ dependencies = [ "console_log", "curve25519-dalek", "getrandom 0.2.10", - "itertools", + "itertools 0.10.5", "js-sys", "lazy_static", "libc", "libsecp256k1", "log", - "memoffset 0.6.5", - "num-derive", + "memoffset 0.9.0", + "num-bigint 0.4.4", + "num-derive 0.3.3", "num-traits", "parking_lot 0.12.1", "rand 0.7.3", @@ -5113,7 +5550,7 @@ dependencies = [ "serde_bytes", "serde_derive", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "sha3 0.10.8", "solana-frozen-abi", "solana-frozen-abi-macro", @@ -5126,20 +5563,20 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b025618e10766f1f8811911441bdace29c3408055898b6fdf145537ee57dbb" +checksum = "2ff9f0c8043b2e7921e25a3fee88fa253b8cb5dbab1e521a4d83e78e8874c551" dependencies = [ - "base64 0.13.1", + "base64 0.21.4", "bincode", "eager", "enum-iterator", - "itertools", + "itertools 0.10.5", "libc", - "libloading", "log", - "num-derive", + "num-derive 0.3.3", "num-traits", + "percentage", "rand 0.7.3", "rustc_version", "serde", @@ -5148,14 +5585,68 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-pubsub-client" +version = "1.16.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0659db803f68fb440c87f43a603e2da7adb3dd11d68e119c3209ed3ca02073" +dependencies = [ + "crossbeam-channel", + "futures-util", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tungstenite", + "url", +] + +[[package]] +name = "solana-quic-client" +version = "1.16.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd4e0689f7b3b2e98e73089bf3aa6b3290cb8a2cbff97fca2ee579cc3ca2717e" +dependencies = [ + "async-mutex", + "async-trait", + "futures", + "itertools 0.10.5", + "lazy_static", + "log", + "quinn", + "quinn-proto", + "quinn-udp", + "rcgen", + "rustls 0.20.9", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-rpc-client-api", + "solana-sdk", + "solana-streamer", "thiserror", + "tokio", ] [[package]] name = "solana-rayon-threadlimit" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602a3630c618e794c71da27cb0164e3e8ec801e6398e86b521b077e0b621e079" +checksum = "ab3c3996bd418c45a540ee2c2d23e9796c244d3e5c9f135a86aa8501e1afea19" dependencies = [ "lazy_static", "num_cpus", @@ -5163,14 +5654,14 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06063a097809f2139a1efefd4ad3de53999dd8204b74801bc1cbdbb1a8c46671" +checksum = "40927d4df440e354f618cbf9e5eb81e02cf4563ef8360782b5493f395b63f61a" dependencies = [ "console", "dialoguer", "log", - "num-derive", + "num-derive 0.3.3", "num-traits", "parking_lot 0.12.1", "qstring", @@ -5180,17 +5671,78 @@ dependencies = [ "uriparse", ] +[[package]] +name = "solana-rpc-client" +version = "1.16.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871cf6d60098c556755a3a7dbd1742201718220a13b988d012f0658eddaad674" +dependencies = [ + "async-trait", + "base64 0.21.4", + "bincode", + "bs58 0.4.0", + "indicatif", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "solana-vote-program", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "1.16.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3214d68e3b661ddfd960271f67eb8042298ac7d90d9bd86d330200c3a5518404" +dependencies = [ + "base64 0.21.4", + "bs58 0.4.0", + "jsonrpc-core", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "spl-token-2022 0.6.1", + "thiserror", +] + +[[package]] +name = "solana-rpc-client-nonce-utils" +version = "1.16.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf08c480fb3d0d861abe10a0517990edea8151529ccf537c0a833233f1381d8" +dependencies = [ + "clap 2.34.0", + "solana-clap-utils", + "solana-rpc-client", + "solana-sdk", + "thiserror", +] + [[package]] name = "solana-sdk" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57788649d5e83cf68188ecc731cf6432a47558e2c85ab919e21e4dcb023fed5b" +checksum = "74a01f25b9f4022fc222c21c589ef7943027fb0fa2b9f6ae943fc4a65c2c01a2" dependencies = [ "assert_matches", - "base64 0.13.1", + "base64 0.21.4", "bincode", - "bitflags", - "borsh 0.9.3", + "bitflags 1.3.2", + "borsh 0.10.3", "bs58 0.4.0", "bytemuck", "byteorder", @@ -5201,14 +5753,15 @@ dependencies = [ "ed25519-dalek-bip32", "generic-array", "hmac 0.12.1", - "itertools", + "itertools 0.10.5", "js-sys", "lazy_static", "libsecp256k1", "log", "memmap2", - "num-derive", + "num-derive 0.3.3", "num-traits", + "num_enum 0.6.1", "pbkdf2 0.11.0", "qstring", "rand 0.7.3", @@ -5219,7 +5772,8 @@ dependencies = [ "serde_bytes", "serde_derive", "serde_json", - "sha2 0.10.6", + "serde_with", + "sha2 0.10.7", "sha3 0.10.8", "solana-frozen-abi", "solana-frozen-abi-macro", @@ -5233,28 +5787,30 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19aa23da3d994c1ede69ff48a0f34f6c7600ae6ea7309344dc357349c463695c" +checksum = "a75b33716470fa4a65a23ddc2d4abcb8d28532c6e3ae3f04f4fe79b5e1f8c247" dependencies = [ "bs58 0.4.0", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "rustversion", - "syn 1.0.109", + "syn 2.0.37", ] [[package]] name = "solana-streamer" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c37930e71813d46ca03e16162b48f01c4bd3f4874db10508fba68a7ce8b3e06b" +checksum = "705ef2b2649c4162061a74aaf12f02b244828ed847ad981581e3e51155279ca5" dependencies = [ + "async-channel", + "bytes 1.5.0", "crossbeam-channel", "futures-util", "histogram", - "indexmap", - "itertools", + "indexmap 1.9.3", + "itertools 0.10.5", "libc", "log", "nix", @@ -5262,9 +5818,11 @@ dependencies = [ "percentage", "pkcs8", "quinn", + "quinn-proto", + "quinn-udp", "rand 0.7.3", "rcgen", - "rustls 0.20.8", + "rustls 0.20.9", "solana-metrics", "solana-perf", "solana-sdk", @@ -5274,13 +5832,53 @@ dependencies = [ ] [[package]] -name = "solana-transaction-status" -version = "1.14.21" +name = "solana-thin-client" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec5cc51e5d23dcbb7648ef4bcdc7a1fcd57683fc9a3c8bfaa5dddf9e8afb86" +checksum = "dc8a9f9c101395d314c4e5e1b19801dd54f4cd501e40b8c2d7d8b896cd2e0980" +dependencies = [ + "bincode", + "log", + "rayon", + "solana-connection-cache", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", +] + +[[package]] +name = "solana-tpu-client" +version = "1.16.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a8a4d90f74e666cd2a5f7ac9ed230ca186d8f7351a927f061801b3ba4e8f2f" +dependencies = [ + "async-trait", + "bincode", + "futures-util", + "indexmap 1.9.3", + "indicatif", + "log", + "rand 0.7.3", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-transaction-status" +version = "1.16.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9266f75afa4163c9a5f29f1066f907e87482858749942380d6538af567b44c7" dependencies = [ "Inflector", - "base64 0.13.1", + "base64 0.21.4", "bincode", "borsh 0.9.3", "bs58 0.4.0", @@ -5291,22 +5889,34 @@ dependencies = [ "serde_json", "solana-account-decoder", "solana-address-lookup-table-program", - "solana-measure", - "solana-metrics", "solana-sdk", - "solana-vote-program", - "spl-associated-token-account", - "spl-memo", - "spl-token", - "spl-token-2022", + "spl-associated-token-account 1.1.3", + "spl-memo 3.0.1", + "spl-token 3.5.0", + "spl-token-2022 0.6.1", "thiserror", ] +[[package]] +name = "solana-udp-client" +version = "1.16.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0f475a0a0faa55f7783084258c1e88be39ed3ea5c4f945bf728b7ca8c7a3262" +dependencies = [ + "async-trait", + "solana-connection-cache", + "solana-net-utils", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + [[package]] name = "solana-version" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c62789e68ac24692055b8ca381392cd24715f499830ffa2fe5e8e4fadec0a47" +checksum = "886a0c01be1e2b3a7ec3bed63f2112cd7f80c4b8182e95fa98b7ab7e37faf90a" dependencies = [ "log", "rustc_version", @@ -5320,13 +5930,13 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e5d2fe35378b378215dd01ff374b99e633d9d4a81e0f105ee063b33439ef98" +checksum = "01b1102b13ca7c760439545dba83588419d208b500a93eb61f6565be26bef490" dependencies = [ "bincode", "log", - "num-derive", + "num-derive 0.3.3", "num-traits", "rustc_version", "serde", @@ -5334,6 +5944,7 @@ dependencies = [ "solana-frozen-abi", "solana-frozen-abi-macro", "solana-metrics", + "solana-program", "solana-program-runtime", "solana-sdk", "thiserror", @@ -5341,23 +5952,21 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.14.21" +version = "1.16.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616b4b714c1facfc2265c5254ecb270cda5504dd6a9328b584cc94ebb2dd062e" +checksum = "1669c9d223d850cd96cad69d3ba1a4234bc3e2f83ac837fbdbc0ce774dac7b92" dependencies = [ "aes-gcm-siv", - "arrayref", - "base64 0.13.1", + "base64 0.21.4", "bincode", "bytemuck", "byteorder", - "cipher 0.4.4", "curve25519-dalek", "getrandom 0.1.16", - "itertools", + "itertools 0.10.5", "lazy_static", "merlin", - "num-derive", + "num-derive 0.3.3", "num-traits", "rand 0.7.3", "serde", @@ -5370,6 +5979,25 @@ dependencies = [ "zeroize", ] +[[package]] +name = "solana_rbpf" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3082ec3a1d4ef7879eb5b84916d5acde057abd59733eec3647e0ab8885283ef" +dependencies = [ + "byteorder", + "combine", + "goblin", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "scroll", + "thiserror", + "winapi", +] + [[package]] name = "spin" version = "0.5.2" @@ -5406,11 +6034,27 @@ checksum = "978dba3bcbe88d0c2c58366c254d9ea41c5f73357e72fc0bdee4d6b5fc99c8f4" dependencies = [ "assert_matches", "borsh 0.9.3", - "num-derive", + "num-derive 0.3.3", "num-traits", "solana-program", - "spl-token", - "spl-token-2022", + "spl-token 3.5.0", + "spl-token-2022 0.6.1", + "thiserror", +] + +[[package]] +name = "spl-associated-token-account" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "477696277857a7b2c17a6f7f3095e835850ad1c0f11637b5bd2693ca777d8546" +dependencies = [ + "assert_matches", + "borsh 0.10.3", + "num-derive 0.4.0", + "num-traits", + "solana-program", + "spl-token 4.0.0", + "spl-token-2022 0.8.0", "thiserror", ] @@ -5425,6 +6069,41 @@ dependencies = [ "thiserror", ] +[[package]] +name = "spl-discriminator" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4fa8f409b5c5e0ac571df17c981ae1424b204743daa4428430627d38717caf5" +dependencies = [ + "quote 1.0.33", + "spl-discriminator-syn", + "syn 2.0.37", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21968d7da2f0a624c509f24580c3fee70b364a6886d90709e679e64f572eca2f" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "solana-program", + "syn 2.0.37", + "thiserror", +] + [[package]] name = "spl-memo" version = "3.0.1" @@ -5434,6 +6113,15 @@ dependencies = [ "solana-program", ] +[[package]] +name = "spl-memo" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" +dependencies = [ + "solana-program", +] + [[package]] name = "spl-noop" version = "0.1.3" @@ -5443,6 +6131,58 @@ dependencies = [ "solana-program", ] +[[package]] +name = "spl-pod" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" +dependencies = [ + "borsh 0.10.3", + "bytemuck", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error", +] + +[[package]] +name = "spl-program-error" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" +dependencies = [ + "num-derive 0.4.0", + "num-traits", + "solana-program", + "spl-program-error-derive", + "thiserror", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6709c5f41fefb730f2bd8464da741079cf0efd1d0f522e041224b98d431b9b3" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "solana-program", + "syn 2.0.37", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7960b1e1a41e4238807fca0865e72a341b668137a3f2ddcd770d04fd1b374c96" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", +] + [[package]] name = "spl-token" version = "3.5.0" @@ -5451,9 +6191,24 @@ checksum = "8e85e168a785e82564160dcb87b2a8e04cee9bfd1f4d488c729d53d6a4bd300d" dependencies = [ "arrayref", "bytemuck", - "num-derive", + "num-derive 0.3.3", "num-traits", - "num_enum", + "num_enum 0.5.11", + "solana-program", + "thiserror", +] + +[[package]] +name = "spl-token" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.3.3", + "num-traits", + "num_enum 0.6.1", "solana-program", "thiserror", ] @@ -5466,23 +6221,88 @@ checksum = "0043b590232c400bad5ee9eb983ced003d15163c4c5d56b090ac6d9a57457b47" dependencies = [ "arrayref", "bytemuck", - "num-derive", + "num-derive 0.3.3", + "num-traits", + "num_enum 0.5.11", + "solana-program", + "solana-zk-token-sdk", + "spl-memo 3.0.1", + "spl-token 3.5.0", + "thiserror", +] + +[[package]] +name = "spl-token-2022" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84fc0c7a763c3f53fa12581d07ed324548a771bb648a1217e4f330b1d0a59331" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.4.0", "num-traits", - "num_enum", + "num_enum 0.7.0", "solana-program", "solana-zk-token-sdk", - "spl-memo", - "spl-token", + "spl-memo 4.0.0", + "spl-pod", + "spl-token 4.0.0", + "spl-token-metadata-interface", + "spl-transfer-hook-interface", + "spl-type-length-value", "thiserror", ] +[[package]] +name = "spl-token-metadata-interface" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" +dependencies = [ + "borsh 0.10.3", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7489940049417ae5ce909314bead0670e2a5ea5c82d43ab96dc15c8fcbbccba" +dependencies = [ + "arrayref", + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-tlv-account-resolution", + "spl-type-length-value", +] + +[[package]] +name = "spl-type-length-value" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", +] + [[package]] name = "sqlformat" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e" +checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85" dependencies = [ - "itertools", + "itertools 0.11.0", "nom", "unicode_categories", ] @@ -5507,9 +6327,9 @@ dependencies = [ "atoi", "base64 0.13.1", "bigdecimal", - "bitflags", + "bitflags 1.3.2", "byteorder", - "bytes", + "bytes 1.5.0", "chrono", "crossbeam-queue", "dirs", @@ -5524,34 +6344,34 @@ dependencies = [ "hex", "hkdf", "hmac 0.12.1", - "indexmap", + "indexmap 1.9.3", "itoa", "libc", "log", "md-5", "memchr", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "once_cell", "paste", "percent-encoding", "rand 0.8.5", "rust_decimal", - "rustls 0.20.8", - "rustls-pemfile 1.0.2", + "rustls 0.20.9", + "rustls-pemfile", "serde", "serde_json", "sha1", - "sha2 0.10.6", + "sha2 0.10.7", "smallvec", "sqlformat", "sqlx-rt", "stringprep", "thiserror", - "time 0.3.22", + "time", "tokio-stream", "url", "uuid", - "webpki-roots", + "webpki-roots 0.22.6", "whoami", ] @@ -5565,8 +6385,8 @@ dependencies = [ "either", "heck 0.4.1", "once_cell", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "serde_json", "sqlx-core", "sqlx-rt", @@ -5585,12 +6405,25 @@ dependencies = [ "tokio-rustls 0.23.4", ] +[[package]] +name = "sse-codec" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84a59f811350c44b4a037aabeb72dc6a9591fc22aa95a036db9a96297c58085a" +dependencies = [ + "bytes 0.5.6", + "futures-io", + "futures_codec", + "memchr", +] + [[package]] name = "stringprep" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" dependencies = [ + "finl_unicode", "unicode-bidi", "unicode-normalization", ] @@ -5630,19 +6463,19 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.28" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "unicode-ident", ] @@ -5658,8 +6491,8 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", "unicode-xid 0.2.4", ] @@ -5672,23 +6505,22 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.6.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ - "autocfg", "cfg-if", - "fastrand", + "fastrand 2.0.0", "redox_syscall 0.3.5", - "rustix", + "rustix 0.38.13", "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] @@ -5710,22 +6542,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -5740,21 +6572,11 @@ dependencies = [ [[package]] name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.22" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" +checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48" dependencies = [ + "deranged", "itoa", "serde", "time-core", @@ -5769,9 +6591,9 @@ checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" -version = "0.2.9" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572" dependencies = [ "time-core", ] @@ -5812,19 +6634,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.2" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ - "autocfg", - "bytes", + "backtrace", + "bytes 1.5.0", "libc", "mio", "num_cpus", "parking_lot 0.12.1", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.4", "tokio-macros", "windows-sys 0.48.0", ] @@ -5845,9 +6667,9 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -5866,7 +6688,7 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls 0.20.8", + "rustls 0.20.9", "tokio", "webpki", ] @@ -5877,7 +6699,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.1", + "rustls 0.21.7", "tokio", ] @@ -5900,12 +6722,12 @@ checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" dependencies = [ "futures-util", "log", - "rustls 0.20.8", + "rustls 0.20.9", "tokio", "tokio-rustls 0.23.4", "tungstenite", "webpki", - "webpki-roots", + "webpki-roots 0.22.6", ] [[package]] @@ -5914,8 +6736,9 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ - "bytes", + "bytes 1.5.0", "futures-core", + "futures-io", "futures-sink", "pin-project-lite", "tokio", @@ -5928,23 +6751,23 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ - "indexmap", + "indexmap 1.9.3", "serde", ] [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.0.0", "toml_datetime", "winnow", ] @@ -5958,8 +6781,8 @@ dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.21.2", - "bytes", + "base64 0.21.4", + "bytes 1.5.0", "flate2", "futures-core", "futures-util", @@ -5969,10 +6792,10 @@ dependencies = [ "hyper", "hyper-timeout", "percent-encoding", - "pin-project", + "pin-project 1.1.3", "prost", "rustls-native-certs", - "rustls-pemfile 1.0.2", + "rustls-pemfile", "tokio", "tokio-rustls 0.24.1", "tokio-stream", @@ -5989,9 +6812,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" dependencies = [ "prettyplease", - "proc-macro2 1.0.66", + "proc-macro2 1.0.67", "prost-build", - "quote 1.0.32", + "quote 1.0.33", "syn 1.0.109", ] @@ -6016,8 +6839,8 @@ checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", "futures-util", - "indexmap", - "pin-project", + "indexmap 1.9.3", + "pin-project 1.1.3", "pin-project-lite", "rand 0.8.5", "slab", @@ -6055,13 +6878,13 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -6087,9 +6910,9 @@ dependencies = [ [[package]] name = "tracing-loki" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630f9edbf303c204f36d08d99510bb7b5b2cb6c010146be3aa6537a183907a95" +checksum = "49bbc87d08020d7c2a9f4bb0b7d10da5381d3867f8ae57fcc54621b34567e963" dependencies = [ "loki-api", "reqwest", @@ -6148,25 +6971,34 @@ checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" dependencies = [ "base64 0.13.1", "byteorder", - "bytes", + "bytes 1.5.0", "http", "httparse", "log", "rand 0.8.5", - "rustls 0.20.8", + "rustls 0.20.9", "sha-1", "thiserror", "url", "utf-8", "webpki", - "webpki-roots", + "webpki-roots 0.22.6", ] [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uncased" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "9b9bc53168a4be7402ab86c3aad243a84dd7381d09be0eddc81280c1da95ca68" +dependencies = [ + "version_check", +] [[package]] name = "unicode-bidi" @@ -6176,9 +7008,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -6197,9 +7029,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -6229,6 +7061,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + [[package]] name = "untrusted" version = "0.7.1" @@ -6247,9 +7088,9 @@ dependencies = [ [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -6257,6 +7098,12 @@ dependencies = [ "serde", ] +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "utf-8" version = "0.7.6" @@ -6271,9 +7118,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.3.3" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ "serde", ] @@ -6286,9 +7133,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4d330786735ea358f3bc09eea4caa098569c1c93f342d9aca0514915022fe7e" +checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" [[package]] name = "vcpkg" @@ -6308,6 +7155,12 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + [[package]] name = "waker-fn" version = "1.1.0" @@ -6316,11 +7169,10 @@ checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -6330,12 +7182,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -6344,9 +7190,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -6354,24 +7200,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.36" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -6381,38 +7227,38 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-streams" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" dependencies = [ "futures-util", "js-sys", @@ -6423,9 +7269,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.63" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -6433,9 +7279,9 @@ dependencies = [ [[package]] name = "webpki" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "f0e74f82d49d545ad128049b7e88f6576df2da6b02e9ce565c6f533be576957e" dependencies = [ "ring", "untrusted", @@ -6450,22 +7296,29 @@ dependencies = [ "webpki", ] +[[package]] +name = "webpki-roots" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" + [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix 0.38.13", ] [[package]] name = "whoami" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c70234412ca409cc04e864e89523cb0fc37f5e1344ebed5a3ebf4192b6b9f68" +checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" dependencies = [ "wasm-bindgen", "web-sys", @@ -6508,7 +7361,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -6541,7 +7394,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -6561,17 +7414,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -6582,9 +7435,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" @@ -6594,9 +7447,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" @@ -6606,9 +7459,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" @@ -6618,9 +7471,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" @@ -6630,9 +7483,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" @@ -6642,9 +7495,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" @@ -6654,26 +7507,27 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.4.6" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] @@ -6700,16 +7554,7 @@ dependencies = [ "oid-registry", "rusticata-macros", "thiserror", - "time 0.3.22", -] - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", + "time", ] [[package]] @@ -6724,7 +7569,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" dependencies = [ - "time 0.3.22", + "time", ] [[package]] @@ -6732,7 +7577,7 @@ name = "yellowstone-grpc-client" version = "1.9.0+solana.1.16.1" source = "git+https://github.com/rpcpool/yellowstone-grpc?tag=v1.7.1+solana.1.16.1#afd6569ddc8f4d2c377c50c0497ca0650c2836d5" dependencies = [ - "bytes", + "bytes 1.5.0", "futures", "http", "thiserror", @@ -6768,9 +7613,9 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] diff --git a/Dockerfile b/Dockerfile index 0f8f54a..6a88049 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.69.0-bullseye as chef +FROM rust:1.71.0-bullseye as chef RUN cargo install cargo-chef --locked WORKDIR /app @@ -80,4 +80,4 @@ CMD ["bin/migration"] FROM base AS solana-indexer COPY --from=builder-solana-indexer /app/target/release/solana-indexer /usr/local/bin -CMD ["/usr/local/bin/solana-indexer"] \ No newline at end of file +CMD ["/usr/local/bin/solana-indexer"] diff --git a/consumer/Cargo.toml b/consumer/Cargo.toml index 9ca79a3..29c8f7d 100644 --- a/consumer/Cargo.toml +++ b/consumer/Cargo.toml @@ -32,10 +32,11 @@ holaplex-hub-nfts-solana-core = { path = "../core" } holaplex-hub-nfts-solana-entity = { path = "../entity" } jsonrpsee = { version = "0.19.0", features = ["macros", "http-client"] } rand = "0.8.5" +poem = { version = "1.3.50", features = ["anyhow", "test"] } [dependencies.hub-core] package = "holaplex-hub-core" -version = "0.5.0" -git = "https://github.com/holaplex/hub-core" +version = "0.5.6" branch = "stable" -features = ["jsonrpsee-core", "kafka", "sea-orm", "solana"] +git = "https://github.com/holaplex/hub-core" +features = ["jsonrpsee-core", "kafka", "kafka_internal", "sea-orm", "solana", "metrics"] diff --git a/consumer/src/events.rs b/consumer/src/events.rs index 5d92493..22043ce 100644 --- a/consumer/src/events.rs +++ b/consumer/src/events.rs @@ -1,3 +1,5 @@ +use std::time::Instant; + use holaplex_hub_nfts_solana_core::{ db, proto::{ @@ -19,6 +21,7 @@ use holaplex_hub_nfts_solana_entity::{ }; use hub_core::{ chrono::Utc, + metrics::KeyValue, prelude::*, producer::{Producer, SendError}, thiserror, @@ -34,6 +37,7 @@ use crate::{ CollectionBackend, MasterEditionAddresses, MintBackend, MintEditionAddresses, MintMetaplexAddresses, TransferBackend, UpdateCollectionMintAddresses, }, + metrics::Metrics, solana::{CompressedRef, EditionRef, Solana, SolanaAssetIdError, UncompressedRef}, }; @@ -103,12 +107,12 @@ impl ErrorSource { #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum EventKind { - CreateDrop, - MintDrop, - UpdateDrop, + CreateEditionDrop, + MintEditionDrop, + UpdateEditionDrop, TransferAsset, - RetryCreateDrop, - RetryMintDrop, + RetryCreateEditionDrop, + RetryMintEditionDrop, CreateCollection, RetryCreateCollection, UpdateCollection, @@ -117,17 +121,22 @@ pub enum EventKind { UpdateCollectionMint, RetryUpdateCollectionMint, SwitchMintCollection, + CreateOpenDrop, + MintOpenDrop, + UpdateOpenDrop, + RetryCreateOpenDrop, + RetryMintOpenDrop, } impl EventKind { fn name(self) -> &'static str { match self { - Self::CreateDrop => "drop creation", - Self::MintDrop => "drop mint", - Self::UpdateDrop => "drop update", + Self::CreateEditionDrop => "edition drop creation", + Self::MintEditionDrop => "edition drop mint", + Self::UpdateEditionDrop => "edition drop update", Self::TransferAsset => "asset transfer", - Self::RetryCreateDrop => "drop creation retry", - Self::RetryMintDrop => "drop mint retry", + Self::RetryCreateEditionDrop => "editiondrop creation retry", + Self::RetryMintEditionDrop => "edition drop mint retry", Self::CreateCollection => "collection creation", Self::RetryCreateCollection => "collection creation retry", Self::UpdateCollection => "collection update", @@ -136,17 +145,26 @@ impl EventKind { Self::UpdateCollectionMint => "collection mint update", Self::RetryUpdateCollectionMint => "collection mint update retry", Self::SwitchMintCollection => "switch mint collection", + Self::CreateOpenDrop => "open drop creation", + Self::MintOpenDrop => "open drop mint", + Self::UpdateOpenDrop => "open drop update", + Self::RetryCreateOpenDrop => "open drop creation retry", + Self::RetryMintOpenDrop => "open drop mint retry", } } fn into_sign_request(self, tx: SolanaPendingTransaction) -> SolanaNftEvent { match self { - EventKind::CreateDrop => SolanaNftEvent::CreateDropSigningRequested(tx), - EventKind::MintDrop => SolanaNftEvent::MintDropSigningRequested(tx), - EventKind::UpdateDrop => SolanaNftEvent::UpdateDropSigningRequested(tx), + EventKind::CreateEditionDrop => SolanaNftEvent::CreateEditionDropSigningRequested(tx), + EventKind::MintEditionDrop => SolanaNftEvent::MintEditionDropSigningRequested(tx), + EventKind::UpdateEditionDrop => SolanaNftEvent::UpdateEditionDropSigningRequested(tx), EventKind::TransferAsset => SolanaNftEvent::TransferAssetSigningRequested(tx), - EventKind::RetryCreateDrop => SolanaNftEvent::RetryCreateDropSigningRequested(tx), - EventKind::RetryMintDrop => SolanaNftEvent::RetryMintDropSigningRequested(tx), + EventKind::RetryCreateEditionDrop => { + SolanaNftEvent::RetryCreateEditionDropSigningRequested(tx) + }, + EventKind::RetryMintEditionDrop => { + SolanaNftEvent::RetryMintEditionDropSigningRequested(tx) + }, EventKind::CreateCollection => SolanaNftEvent::CreateCollectionSigningRequested(tx), EventKind::UpdateCollection => SolanaNftEvent::UpdateCollectionSigningRequested(tx), EventKind::RetryCreateCollection => { @@ -165,6 +183,13 @@ impl EventKind { EventKind::SwitchMintCollection => { SolanaNftEvent::SwitchMintCollectionSigningRequested(tx) }, + EventKind::CreateOpenDrop => SolanaNftEvent::CreateOpenDropSigningRequested(tx), + EventKind::MintOpenDrop => SolanaNftEvent::MintOpenDropSigningRequested(tx), + EventKind::UpdateOpenDrop => SolanaNftEvent::UpdateOpenDropSigningRequested(tx), + EventKind::RetryCreateOpenDrop => { + SolanaNftEvent::RetryCreateOpenDropSigningRequested(tx) + }, + EventKind::RetryMintOpenDrop => SolanaNftEvent::RetryMintOpenDropSigningRequested(tx), } } @@ -178,13 +203,13 @@ impl EventKind { let id = || Uuid::parse_str(&key.id); Ok(match self { - Self::CreateDrop => { + Self::CreateEditionDrop => { let id = id()?; let collection = Collection::find_by_id(conn, id) .await? .ok_or(ProcessorErrorKind::RecordNotFound)?; - SolanaNftEvent::CreateDropSubmitted(SolanaCompletedMintTransaction { + SolanaNftEvent::CreateEditionDropSubmitted(SolanaCompletedMintTransaction { signature, address: collection.mint, }) @@ -218,7 +243,7 @@ impl EventKind { signature, }) }, - Self::MintToCollection => { + Self::MintToCollection | Self::MintOpenDrop => { let id = id()?; let collection_mint = CollectionMint::find_by_id(conn, id).await?; @@ -248,49 +273,55 @@ impl EventKind { .ok_or(ProcessorErrorKind::RecordNotFound)? .mint }; + let transaction = SolanaCompletedMintTransaction { signature, address }; - SolanaNftEvent::MintToCollectionSubmitted(SolanaCompletedMintTransaction { - signature, - address, - }) + match self { + Self::MintToCollection => { + SolanaNftEvent::MintToCollectionSubmitted(transaction) + }, + Self::MintOpenDrop => SolanaNftEvent::MintOpenDropSubmitted(transaction), + _ => unreachable!(), + } }, - Self::MintDrop => { + Self::MintEditionDrop => { let id = id()?; let collection_mint = CollectionMint::find_by_id(conn, id) .await? .ok_or(ProcessorErrorKind::RecordNotFound)?; - SolanaNftEvent::MintDropSubmitted(SolanaCompletedMintTransaction { + SolanaNftEvent::MintEditionDropSubmitted(SolanaCompletedMintTransaction { signature, address: collection_mint.mint, }) }, - Self::UpdateDrop => { - SolanaNftEvent::UpdateDropSubmitted(SolanaCompletedUpdateTransaction { signature }) + Self::UpdateEditionDrop => { + SolanaNftEvent::UpdateEditionDropSubmitted(SolanaCompletedUpdateTransaction { + signature, + }) }, Self::TransferAsset => { SolanaNftEvent::TransferAssetSubmitted(SolanaCompletedTransferTransaction { signature, }) }, - Self::RetryCreateDrop => { + Self::RetryCreateEditionDrop => { let id = id()?; let collection = Collection::find_by_id(conn, id) .await? .ok_or(ProcessorErrorKind::RecordNotFound)?; - SolanaNftEvent::RetryCreateDropSubmitted(SolanaCompletedMintTransaction { + SolanaNftEvent::RetryCreateEditionDropSubmitted(SolanaCompletedMintTransaction { signature, address: collection.mint, }) }, - Self::RetryMintDrop => { + Self::RetryMintEditionDrop => { let id = id()?; let collection_mint = CollectionMint::find_by_id(conn, id) .await? .ok_or(ProcessorErrorKind::RecordNotFound)?; - SolanaNftEvent::RetryMintDropSubmitted(SolanaCompletedMintTransaction { + SolanaNftEvent::RetryMintEditionDropSubmitted(SolanaCompletedMintTransaction { signature, address: collection_mint.mint, }) @@ -321,17 +352,55 @@ impl EventKind { signature, }) }, + Self::CreateOpenDrop => { + let id = id()?; + let collection = Collection::find_by_id(conn, id) + .await? + .ok_or(ProcessorErrorKind::RecordNotFound)?; + + SolanaNftEvent::CreateOpenDropSubmitted(SolanaCompletedMintTransaction { + signature, + address: collection.mint, + }) + }, + Self::UpdateOpenDrop => { + SolanaNftEvent::UpdateOpenDropSubmitted(SolanaCompletedUpdateTransaction { + signature, + }) + }, + Self::RetryCreateOpenDrop => { + let id = id()?; + let collection = Collection::find_by_id(conn, id) + .await? + .ok_or(ProcessorErrorKind::RecordNotFound)?; + + SolanaNftEvent::RetryCreateOpenDropSubmitted(SolanaCompletedMintTransaction { + signature, + address: collection.mint, + }) + }, + Self::RetryMintOpenDrop => { + let id = id()?; + let collection_mint = CollectionMint::find_by_id(conn, id) + .await? + .ok_or(ProcessorErrorKind::RecordNotFound)?; + + SolanaNftEvent::RetryMintOpenDropSubmitted(SolanaCompletedMintTransaction { + signature, + address: collection_mint.mint, + }) + }, }) } fn into_failure(self, tx: SolanaFailedTransaction) -> SolanaNftEvent { match self { - Self::CreateDrop => SolanaNftEvent::CreateDropFailed(tx), - Self::MintDrop => SolanaNftEvent::MintDropFailed(tx), - Self::UpdateDrop => SolanaNftEvent::UpdateDropFailed(tx), + Self::CreateEditionDrop => SolanaNftEvent::CreateEditionDropFailed(tx), + Self::MintEditionDrop => SolanaNftEvent::MintEditionDropFailed(tx), + Self::UpdateEditionDrop => SolanaNftEvent::UpdateEditionDropFailed(tx), Self::TransferAsset => SolanaNftEvent::TransferAssetFailed(tx), - Self::RetryCreateDrop => SolanaNftEvent::RetryCreateDropFailed(tx), - Self::RetryMintDrop => SolanaNftEvent::RetryMintDropFailed(tx), + Self::RetryCreateEditionDrop => SolanaNftEvent::RetryCreateEditionDropFailed(tx), + Self::RetryMintEditionDrop => SolanaNftEvent::RetryMintEditionDropFailed(tx), Self::CreateCollection => SolanaNftEvent::CreateCollectionFailed(tx), Self::RetryCreateCollection => SolanaNftEvent::RetryCreateCollectionFailed(tx), Self::UpdateCollection => SolanaNftEvent::UpdateCollectionFailed(tx), @@ -340,6 +409,11 @@ impl EventKind { Self::UpdateCollectionMint => SolanaNftEvent::UpdateCollectionMintFailed(tx), Self::RetryUpdateCollectionMint => SolanaNftEvent::RetryUpdateMintFailed(tx), Self::SwitchMintCollection => SolanaNftEvent::SwitchMintCollectionFailed(tx), + Self::CreateOpenDrop => SolanaNftEvent::CreateOpenDropFailed(tx), + Self::MintOpenDrop => SolanaNftEvent::MintOpenDropFailed(tx), + Self::UpdateOpenDrop => SolanaNftEvent::UpdateOpenDropFailed(tx), + Self::RetryCreateOpenDrop => SolanaNftEvent::RetryCreateOpenDropFailed(tx), + Self::RetryMintOpenDrop => SolanaNftEvent::RetryMintOpenDropFailed(tx), } } } @@ -349,16 +423,23 @@ pub struct Processor { solana: DebugShim, db: db::Connection, producer: Producer, + metrics: Metrics, } impl Processor { #[inline] #[must_use] - pub fn new(solana: Solana, db: db::Connection, producer: Producer) -> Self { + pub fn new( + solana: Solana, + db: db::Connection, + producer: Producer, + metrics: Metrics, + ) -> Self { Self { solana: DebugShim(solana), db, producer, + metrics, } } @@ -373,9 +454,9 @@ impl Processor { let key = SolanaNftEventKey::from(key); match msg.event { - Some(NftEvent::SolanaCreateDrop(payload)) => { + Some(NftEvent::SolanaCreateEditionDrop(payload)) => { self.process_nft( - EventKind::CreateDrop, + EventKind::CreateEditionDrop, &key, self.create_collection(&UncompressedRef(self.solana()), &key, payload), ) @@ -389,9 +470,9 @@ impl Processor { ) .await }, - Some(NftEvent::SolanaMintDrop(payload)) => { + Some(NftEvent::SolanaMintEditionDrop(payload)) => { self.process_nft( - EventKind::MintDrop, + EventKind::MintEditionDrop, &key, self.mint_drop(&EditionRef(self.solana()), &key, payload), ) @@ -405,9 +486,9 @@ impl Processor { ) .await }, - Some(NftEvent::SolanaUpdateDrop(payload)) => { + Some(NftEvent::SolanaUpdateEditionDrop(payload)) => { self.process_nft( - EventKind::UpdateDrop, + EventKind::UpdateEditionDrop, &key, self.update_collection(&UncompressedRef(self.solana()), &key, payload), ) @@ -429,9 +510,9 @@ impl Processor { ) .await }, - Some(NftEvent::SolanaRetryDrop(payload)) => { + Some(NftEvent::SolanaRetryEditionDrop(payload)) => { self.process_nft( - EventKind::RetryCreateDrop, + EventKind::RetryCreateEditionDrop, &key, self.retry_create_collection( &UncompressedRef(self.solana()), @@ -453,9 +534,9 @@ impl Processor { ) .await }, - Some(NftEvent::SolanaRetryMintDrop(payload)) => { + Some(NftEvent::SolanaRetryMintEditionDrop(payload)) => { self.process_nft( - EventKind::RetryMintDrop, + EventKind::RetryMintEditionDrop, &key, self.retry_mint_drop(&EditionRef(self.solana()), &key, payload), ) @@ -504,7 +585,54 @@ impl Processor { ) .await }, - + Some(NftEvent::SolanaCreateOpenDrop(payload)) => { + self.process_nft( + EventKind::CreateOpenDrop, + &key, + self.create_collection(&UncompressedRef(self.solana()), &key, payload), + ) + .await + }, + Some(NftEvent::SolanaMintOpenDrop(payload)) => { + self.process_nft( + EventKind::MintOpenDrop, + &key, + self.mint_to_collection(&key, payload), + ) + .await + }, + Some(NftEvent::SolanaUpdateOpenDrop(payload)) => { + self.process_nft( + EventKind::UpdateOpenDrop, + &key, + self.update_collection(&UncompressedRef(self.solana()), &key, payload), + ) + .await + }, + Some(NftEvent::SolanaRetryOpenDrop(payload)) => { + self.process_nft( + EventKind::RetryCreateOpenDrop, + &key, + self.retry_create_collection( + &UncompressedRef(self.solana()), + &key, + payload, + ), + ) + .await + }, + Some(NftEvent::SolanaRetryMintOpenDrop(payload)) => { + self.process_nft( + EventKind::RetryMintOpenDrop, + &key, + self.retry_mint_to_collection( + &UncompressedRef(self.solana()), + &key, + payload, + ), + ) + .await + }, _ => Ok(()), } }, @@ -512,25 +640,28 @@ impl Processor { let key = SolanaNftEventKey::from(key); match msg.event { - Some(TreasuryEvent::SolanaCreateDropSigned(res)) => { - self.process_treasury(EventKind::CreateDrop, key, res).await + Some(TreasuryEvent::SolanaCreateEditionDropSigned(res)) => { + self.process_treasury(EventKind::CreateEditionDrop, key, res) + .await }, - Some(TreasuryEvent::SolanaMintDropSigned(res)) => { - self.process_treasury(EventKind::MintDrop, key, res).await + Some(TreasuryEvent::SolanaMintEditionDropSigned(res)) => { + self.process_treasury(EventKind::MintEditionDrop, key, res) + .await }, - Some(TreasuryEvent::SolanaUpdateDropSigned(res)) => { - self.process_treasury(EventKind::UpdateDrop, key, res).await + Some(TreasuryEvent::SolanaUpdateEditionDropSigned(res)) => { + self.process_treasury(EventKind::UpdateEditionDrop, key, res) + .await }, Some(TreasuryEvent::SolanaTransferAssetSigned(res)) => { self.process_treasury(EventKind::TransferAsset, key, res) .await }, - Some(TreasuryEvent::SolanaRetryCreateDropSigned(res)) => { - self.process_treasury(EventKind::RetryCreateDrop, key, res) + Some(TreasuryEvent::SolanaRetryCreateEditionDropSigned(res)) => { + self.process_treasury(EventKind::RetryCreateEditionDrop, key, res) .await }, - Some(TreasuryEvent::SolanaRetryMintDropSigned(res)) => { - self.process_treasury(EventKind::RetryMintDrop, key, res) + Some(TreasuryEvent::SolanaRetryMintEditionDropSigned(res)) => { + self.process_treasury(EventKind::RetryMintEditionDrop, key, res) .await }, Some(TreasuryEvent::SolanaMintToCollectionSigned(res)) => { @@ -565,6 +696,26 @@ impl Processor { self.process_treasury(EventKind::SwitchMintCollection, key, res) .await }, + Some(TreasuryEvent::SolanaCreateOpenDropSigned(res)) => { + self.process_treasury(EventKind::CreateOpenDrop, key, res) + .await + }, + Some(TreasuryEvent::SolanaMintOpenDropSigned(res)) => { + self.process_treasury(EventKind::MintOpenDrop, key, res) + .await + }, + Some(TreasuryEvent::SolanaUpdateOpenDropSigned(res)) => { + self.process_treasury(EventKind::UpdateOpenDrop, key, res) + .await + }, + Some(TreasuryEvent::SolanaRetryCreateOpenDropSigned(res)) => { + self.process_treasury(EventKind::RetryCreateOpenDrop, key, res) + .await + }, + Some(TreasuryEvent::SolanaRetryMintOpenDropSigned(res)) => { + self.process_treasury(EventKind::RetryMintOpenDrop, key, res) + .await + }, _ => Ok(()), } }, @@ -606,6 +757,7 @@ impl Processor { key: SolanaNftEventKey, res: SolanaTransactionResult, ) -> Result<()> { + let start = Instant::now(); let status = TransactionStatus::from_i32(res.status).ok_or_else(|| { ProcessorError::new( ProcessorErrorKind::TransactionStatusNotFound, @@ -621,7 +773,7 @@ impl Processor { .map_err(|k| ProcessorError::new(k, kind, ErrorSource::TreasuryStatus)); } - match self.solana().submit_transaction(&res) { + let res = match self.solana().submit_transaction(&res) { Ok(sig) => self .event_submitted(kind, &key, sig) .await @@ -635,7 +787,13 @@ impl Processor { .await .map_err(|k| ProcessorError::new(k, kind, ErrorSource::TreasuryFailure)) }, - } + }; + let elapsed = i64::try_from(start.elapsed().as_millis()).unwrap_or(0); + + self.metrics + .rpc_tx_submission_duration_ms_bucket + .record(elapsed, &[KeyValue::new("blockchain", "Solana")]); + res } async fn event_submitted( @@ -717,6 +875,7 @@ impl Processor { key: &SolanaNftEventKey, payload: MintMetaplexMetadataTransaction, ) -> ProcessResult { + let start = Instant::now(); let conn = self.db.get(); let id = Uuid::parse_str(&key.id.clone())?; let collection_id = Uuid::parse_str(&payload.collection_id)?; @@ -743,6 +902,14 @@ impl Processor { }; CompressionLeaf::create(conn, compression_leaf).await?; + let elapsed = i64::try_from(start.elapsed().as_millis()).unwrap_or(0); + + self.metrics + .rpc_tx_assembly_duration_ms_bucket + .record(elapsed, &[ + KeyValue::new("blockchain", "Solana"), + KeyValue::new("compressed", "true"), + ]); return Ok(tx.into()); } @@ -763,6 +930,14 @@ impl Processor { }; CollectionMint::create(conn, collection_mint).await?; + let elapsed = i64::try_from(start.elapsed().as_millis()).unwrap_or(0); + + self.metrics + .rpc_tx_assembly_duration_ms_bucket + .record(elapsed, &[ + KeyValue::new("blockchain", "Solana"), + KeyValue::new("compressed", "false"), + ]); Ok(tx.into()) } diff --git a/consumer/src/handlers.rs b/consumer/src/handlers.rs new file mode 100644 index 0000000..26604d9 --- /dev/null +++ b/consumer/src/handlers.rs @@ -0,0 +1,20 @@ +use hub_core::{ + anyhow::Result, + metrics::{Encoder, TextEncoder}, +}; +use poem::{handler, http::StatusCode, web::Data}; + +use crate::Metrics; + +#[handler] +pub fn health() -> StatusCode { + StatusCode::OK +} + +#[handler] +pub fn metrics_handler(Data(metrics): Data<&Metrics>) -> Result { + let mut buffer = vec![]; + let encoder = TextEncoder::new(); + encoder.encode(&metrics.registry.gather(), &mut buffer)?; + Ok(String::from_utf8_lossy(&buffer).into_owned()) +} diff --git a/consumer/src/lib.rs b/consumer/src/lib.rs index c73deba..0a6fb23 100644 --- a/consumer/src/lib.rs +++ b/consumer/src/lib.rs @@ -5,15 +5,21 @@ pub(crate) mod asset_api; mod backend; pub mod events; +pub mod handlers; pub mod import; +pub mod metrics; pub mod solana; use holaplex_hub_nfts_solana_core::db::DbArgs; use hub_core::{clap, prelude::*}; +use metrics::Metrics; use solana::SolanaArgs; #[derive(Debug, clap::Args)] #[command(version, author, about)] pub struct Args { + #[arg(short, long, env, default_value_t = 3004)] + pub port: u16, + #[command(flatten)] pub db: DbArgs, diff --git a/consumer/src/main.rs b/consumer/src/main.rs index 6dc4fc0..2a63ac2 100644 --- a/consumer/src/main.rs +++ b/consumer/src/main.rs @@ -1,6 +1,14 @@ -use holaplex_hub_nfts_solana::{events, import, solana::Solana, Args}; +use holaplex_hub_nfts_solana::{ + events, + handlers::{health, metrics_handler}, + import, + metrics::Metrics, + solana::Solana, + Args, +}; use holaplex_hub_nfts_solana_core::{db::Connection, proto::SolanaNftEvents, Services}; -use hub_core::{prelude::*, triage}; +use hub_core::{prelude::*, tokio, triage}; +use poem::{get, listener::TcpListener, middleware::AddData, EndpointExt, Route, Server}; pub fn main() { let opts = hub_core::StartConfig { @@ -8,7 +16,7 @@ pub fn main() { }; hub_core::run(opts, |common, args| { - let Args { db, solana } = args; + let Args { db, solana, port } = args; common.rt.block_on(async move { let connection = Connection::new(db) @@ -23,32 +31,43 @@ pub fn main() { // TODO: change these names once there are fewer in-flight feature branches let import_processor = import::Processor::new(solana.clone(), connection.clone(), producer.clone()); - let event_processor = events::Processor::new(solana, connection, producer); - - cons.consume::<_, _, _, triage::BoxedSync>( - |b| { - b.with_jitter() - .with_min_delay(Duration::from_millis(500)) - .with_max_delay(Duration::from_secs(90)) - }, - move |e| async move { - if let Some(()) = import_processor - .process(&e) - .await - .map_err(|e| Box::new(e) as triage::BoxedSync)? - { - return Ok(()); - } - - event_processor - .process(e) - .await - .map_err(|e| Box::new(e) as triage::BoxedSync) - }, - ) - .await; - - Ok(()) + + let metrics = Metrics::new()?; + let event_processor = + events::Processor::new(solana, connection, producer, metrics.clone()); + + tokio::spawn(async move { + cons.consume::<_, _, _, triage::BoxedSync>( + |b| { + b.with_jitter() + .with_min_delay(Duration::from_millis(500)) + .with_max_delay(Duration::from_secs(90)) + }, + move |e| async move { + if let Some(()) = import_processor + .process(&e) + .await + .map_err(|e| Box::new(e) as triage::BoxedSync)? + { + return Ok(()); + } + + event_processor + .process(e) + .await + .map_err(|e| Box::new(e) as triage::BoxedSync) + }, + ) + .await; + }); + Server::new(TcpListener::bind(format!("0.0.0.0:{port}"))) + .run( + Route::new() + .at("/health", get(health)) + .at("/metrics", get(metrics_handler).with(AddData::new(metrics))), + ) + .await + .context("failed to build graphql server") }) }); } diff --git a/consumer/src/metrics.rs b/consumer/src/metrics.rs new file mode 100644 index 0000000..c861a4e --- /dev/null +++ b/consumer/src/metrics.rs @@ -0,0 +1,55 @@ +#[allow(clippy::wildcard_imports)] +use hub_core::{ + anyhow::{anyhow, Result}, + metrics::*, +}; + +#[derive(Debug, Clone)] +pub struct Metrics { + pub registry: Registry, + pub provider: MeterProvider, + pub rpc_tx_submission_duration_ms_bucket: Histogram, + pub rpc_tx_assembly_duration_ms_bucket: Histogram, +} + +impl Metrics { + /// Res + /// # Errors + pub fn new() -> Result { + let registry = Registry::new(); + let exporter = hub_core::metrics::exporter() + .with_registry(registry.clone()) + .with_namespace("hub_nfts_solana") + .build() + .map_err(|e| anyhow!("Failed to build exporter: {}", e))?; + + let provider = MeterProvider::builder() + .with_reader(exporter) + .with_resource(Resource::new(vec![KeyValue::new( + "service.name", + "hub-nfts-solana", + )])) + .build(); + + let meter = provider.meter("hub-nfts-solana"); + + let rpc_tx_submission_duration_ms_bucket = meter + .i64_histogram("rpc_tx_submission.time") + .with_unit(Unit::new("ms")) + .with_description("RPC Tx duration time in milliseconds.") + .init(); + + let rpc_tx_assembly_duration_ms_bucket = meter + .i64_histogram("rpc_tx_assembly.time") + .with_unit(Unit::new("ms")) + .with_description("Transaction assembly duration time in milliseconds.") + .init(); + + Ok(Self { + registry, + provider, + rpc_tx_submission_duration_ms_bucket, + rpc_tx_assembly_duration_ms_bucket, + }) + } +} diff --git a/core/Cargo.toml b/core/Cargo.toml index 84f0f43..8cae8a9 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -28,13 +28,13 @@ mpl-bubblegum = "0.7.0" [dependencies.hub-core] package = "holaplex-hub-core" -version = "0.5.0" -git = "https://github.com/holaplex/hub-core" +version = "0.5.6" branch = "stable" -features = ["kafka"] +git = "https://github.com/holaplex/hub-core" +features = ["kafka_internal"] [build-dependencies.hub-core-build] package = "holaplex-hub-core-build" -version = "0.2.0" -git = "https://github.com/holaplex/hub-core" +version = "0.2.1" branch = "stable" +git = "https://github.com/holaplex/hub-core" diff --git a/core/proto.lock b/core/proto.lock index 14f6b5d..1c4fe4d 100644 --- a/core/proto.lock +++ b/core/proto.lock @@ -1,14 +1,14 @@ [[schemas]] subject = "nfts" -version = 27 -sha512 = "ec52dffa482eb3beb72b1ae1745f3b8cb1b6d321d20fdc30078f4362c924b0f75ebe3dc53c54e5de92ea55163b64f09fe4e2b749c1bc5bc64d92f8356835eb90" +version = 29 +sha512 = "b3b2136bd6c7a136d317da84395661de5fc056e8270510575a3281d78884d99a0d89f444754ed02cb18ad26dcc7cd65300c1df73b9d74d2edc6bcc8d552465d0" [[schemas]] subject = "solana_nfts" -version = 10 -sha512 = "1bcb166ab5dfdf4841d60caa07a4098dcec03d7e3b0e63adb090ed2f5fe990c1e13826867e8df7521ec631027d5a931a08865fd2cf2daa905807c4b7dca40213" +version = 11 +sha512 = "967fefde938a0f6ce05194e4fca15673e681caac54d8aeec114c5d38418632b9696dbaf5362345a15114e5abb49de55d0af8b9edcc0f2c91f9ef1ccc4ff55d68" [[schemas]] subject = "treasury" -version = 22 -sha512 = "bde788b07f818aa52e684dcbd91e1f1e3db82f242f616ec2a42ab6d412df33a1461677c229f2f9bae345938c2f325e6332a95caef2c7e01a47531af53e39bf03" +version = 23 +sha512 = "0e4d77999767d5971122e720c1cee7a57c3e47ce69f58a582f1762d8e65e031ea3bd9024cfc21bd7da5db6e38a71657151c58cdfa21d9ff643fb2fc657105cf5" diff --git a/core/proto.toml b/core/proto.toml index 5d1fe9f..62864f2 100644 --- a/core/proto.toml +++ b/core/proto.toml @@ -2,6 +2,6 @@ endpoint = "https://schemas.holaplex.tools" [schemas] -nfts = 27 -treasury = 22 -solana_nfts = 10 \ No newline at end of file +nfts = 29 +treasury = 23 +solana_nfts = 11 \ No newline at end of file diff --git a/indexer/Cargo.toml b/indexer/Cargo.toml index 087d2a4..c9f3173 100644 --- a/indexer/Cargo.toml +++ b/indexer/Cargo.toml @@ -33,9 +33,10 @@ backoff = { version = "0.4.0", features = ["tokio"] } [dependencies.hub-core] package = "holaplex-hub-core" -version = "0.5.0" +version = "0.5.6" git = "https://github.com/holaplex/hub-core" branch = "stable" +features = ["kafka_internal"] [dependencies.holaplex-hub-nfts-solana-core] path = "../core" diff --git a/indexer/src/connector.rs b/indexer/src/connector.rs index 3fe3389..5a443a3 100644 --- a/indexer/src/connector.rs +++ b/indexer/src/connector.rs @@ -2,6 +2,7 @@ use std::{collections::HashMap, vec}; use futures::{channel::mpsc::SendError, Sink, Stream}; use hub_core::prelude::*; +use solana_program::pubkey::Pubkey; use yellowstone_grpc_client::GeyserGrpcClient; use yellowstone_grpc_proto::{prelude::*, tonic::Status}; @@ -29,7 +30,7 @@ impl GeyserGrpcConnector { Ok((subscribe_tx, stream)) } - pub fn build_request() -> SubscribeRequest { + pub fn build_request(program_id: Pubkey) -> SubscribeRequest { let mut slots = HashMap::new(); slots.insert("client".to_owned(), SubscribeRequestFilterSlots {}); @@ -38,20 +39,16 @@ impl GeyserGrpcConnector { vote: Some(false), failed: Some(false), signature: None, - account_include: vec![spl_token::ID.to_string(), mpl_bubblegum::ID.to_string()], + account_include: vec![program_id.to_string()], account_exclude: Vec::new(), account_required: Vec::new(), }); SubscribeRequest { - accounts: HashMap::new(), slots, transactions, - blocks: HashMap::new(), - blocks_meta: HashMap::new(), commitment: Some(CommitmentLevel::Finalized as i32), - accounts_data_slice: vec![], - entry: HashMap::new(), + ..Default::default() } } } diff --git a/indexer/src/handler.rs b/indexer/src/handler.rs index cdde0fc..f70c3ee 100644 --- a/indexer/src/handler.rs +++ b/indexer/src/handler.rs @@ -1,42 +1,23 @@ -use std::{convert::TryInto, sync::Arc}; +use std::sync::Arc; -use anchor_lang::AnchorDeserialize; -use backoff::ExponentialBackoff; -use dashmap::DashMap; use futures::{sink::SinkExt, stream::StreamExt}; -use holaplex_hub_nfts_solana_core::{ - db::Connection, - proto::{ - solana_nft_events::Event::UpdateMintOwner, MintOwnershipUpdate, SolanaNftEventKey, - SolanaNftEvents, - }, - sea_orm::Set, - CollectionMint, CompressionLeaf, +use holaplex_hub_nfts_solana_core::{db::Connection, proto::SolanaNftEvents}; +use hub_core::{ + backon::{ExponentialBuilder, Retryable}, + prelude::*, + producer::Producer, + tokio, }; -use holaplex_hub_nfts_solana_entity::compression_leafs; -use hub_core::{prelude::*, producer::Producer, tokio::task}; -use mpl_bubblegum::utils::get_asset_id; use solana_client::rpc_client::RpcClient; -use solana_program::program_pack::Pack; -use solana_sdk::{pubkey::Pubkey, signature::Signature}; -use spl_token::{instruction::TokenInstruction, state::Account}; use yellowstone_grpc_client::GeyserGrpcClientError; -use yellowstone_grpc_proto::{ - prelude::{ - subscribe_update::UpdateOneof, Message, SubscribeUpdate, SubscribeUpdateTransaction, - }, - tonic::Status, -}; +use yellowstone_grpc_proto::prelude::SubscribeRequest; -use crate::{Args, GeyserGrpcConnector}; +use crate::{processor::Processor, Args, GeyserGrpcConnector}; #[derive(Clone)] pub struct MessageHandler { - db: Connection, - dashmap: DashMap>, - rpc: Arc, connector: GeyserGrpcConnector, - producer: Producer, + processor: Processor, } impl MessageHandler { @@ -51,241 +32,68 @@ impl MessageHandler { let db = Connection::new(db) .await .context("failed to get database connection")?; - let dashmap: DashMap> = DashMap::new(); + let rpc = Arc::new(RpcClient::new(solana_endpoint)); let connector = GeyserGrpcConnector::new(dragon_mouth_endpoint, dragon_mouth_x_token); + let processor = Processor::new(db, rpc, producer); + Ok(Self { - db, - dashmap, - rpc, connector, - producer, + processor, }) } - pub async fn run(&self) -> Result<()> { - let request = GeyserGrpcConnector::build_request(); - let (mut subscribe_tx, mut stream) = self.connector.subscribe().await?; - - loop { - let request = request.clone(); + async fn connect(&self, request: SubscribeRequest) -> Result<()> { + (|| async { + let (mut subscribe_tx, mut stream) = self.connector.subscribe().await?; subscribe_tx - .send(request) + .send(request.clone()) .await .map_err(GeyserGrpcClientError::SubscribeSendError)?; while let Some(message) = stream.next().await { - self.handle_message(message).await?; + self.processor.process(message).await?; } - } - } - - async fn handle_message(&self, message: Result) -> Result<()> { - match message { - Ok(msg) => match msg.update_oneof { - Some(UpdateOneof::Transaction(tx)) => { - self.dashmap.entry(tx.slot).or_insert(Vec::new()).push(tx); - }, - Some(UpdateOneof::Slot(slot)) => { - if let Some((_, transactions)) = self.dashmap.remove(&slot.slot) { - for tx in transactions { - task::spawn(self.clone().process_transaction(tx)); - } - } - }, - _ => {}, - }, - Err(error) => return Err(anyhow!("stream error: {:?}", error)), - }; - Ok(()) + Ok(()) + }) + .retry( + &ExponentialBuilder::default() + .with_max_times(10) + .with_jitter(), + ) + .notify(|err: &Error, dur: Duration| { + error!("stream error: {:?} retrying in {:?}", err, dur); + }) + .await } - async fn process_transaction(self, tx: SubscribeUpdateTransaction) -> Result<()> { - let message = tx - .transaction - .clone() - .context("SubscribeTransactionInfo not found")? - .transaction - .context("Transaction not found")? - .message - .context("Message not found")?; - let sig = tx - .transaction - .as_ref() - .ok_or_else(|| anyhow!("failed to get transaction"))? - .signature - .clone(); - - let keys = message.clone().account_keys; - - for (idx, key) in message.clone().account_keys.iter().enumerate() { - let key: &[u8] = key; - let k = Pubkey::try_from(key)?; - if k == spl_token::ID { - self.process_spl_token_transaction(idx, &keys, &sig, &message) - .await?; - } else if k == mpl_bubblegum::ID { - self.process_mpl_bubblegum_transaction(idx, &keys, &sig, &message) - .await?; + pub async fn run(self) -> Result<()> { + let spl_token_stream = tokio::spawn({ + let handler = self.clone(); + async move { + handler + .connect(GeyserGrpcConnector::build_request(spl_token::ID)) + .await } - } - - Ok(()) - } - - async fn process_mpl_bubblegum_transaction( - &self, - program_account_index: usize, - keys: &[Vec], - sig: &Vec, - message: &Message, - ) -> Result<()> { - for ins in message.instructions.iter() { - let account_indices = ins.accounts.clone(); - let program_idx: usize = ins.program_id_index.try_into()?; - - if program_idx == program_account_index { - let conn = self.db.get(); - let data = ins.data.clone(); - let data = data.as_slice(); - - let tkn_instruction = - mpl_bubblegum::instruction::Transfer::try_from_slice(&data[8..])?; - let new_leaf_owner_account_index = account_indices[3]; - let merkle_tree_account_index = account_indices[4]; - let new_leaf_owner_bytes: &[u8] = &keys[new_leaf_owner_account_index as usize]; - let merkle_tree_bytes: &[u8] = &keys[merkle_tree_account_index as usize]; - let new_leaf_owner = Pubkey::try_from(new_leaf_owner_bytes)?; - let merkle_tree = Pubkey::try_from(merkle_tree_bytes)?; - - let asset_id = get_asset_id(&merkle_tree, tkn_instruction.nonce); - - let compression_leaf = - CompressionLeaf::find_by_asset_id(conn, asset_id.to_string()) - .await? - .context("compression leaf not found")?; + }); - let collection_mint_id = compression_leaf.id; - let leaf_owner = compression_leaf.leaf_owner.clone(); - let mut compression_leaf: compression_leafs::ActiveModel = compression_leaf.into(); - - compression_leaf.leaf_owner = Set(new_leaf_owner.to_string()); - - CompressionLeaf::update(conn, compression_leaf).await?; - - self.producer - .send( - Some(&SolanaNftEvents { - event: Some(UpdateMintOwner(MintOwnershipUpdate { - mint_address: asset_id.to_string(), - sender: leaf_owner, - recipient: new_leaf_owner.to_string(), - tx_signature: Signature::new(sig.as_slice()).to_string(), - })), - }), - Some(&SolanaNftEventKey { - id: collection_mint_id.to_string(), - ..Default::default() - }), - ) - .await?; + let mpl_bubblegum_stream = tokio::spawn({ + async move { + self.connect(GeyserGrpcConnector::build_request(mpl_bubblegum::ID)) + .await } - } - - Ok(()) - } - - async fn process_spl_token_transaction( - &self, - program_account_index: usize, - keys: &[Vec], - sig: &Vec, - message: &Message, - ) -> Result<()> { - let conn = self.db.get(); - for ins in message.instructions.iter() { - let account_indices = ins.accounts.clone(); - let program_idx: usize = ins.program_id_index.try_into()?; - - if program_idx == program_account_index { - let data = ins.data.clone(); - let data = data.as_slice(); - let tkn_instruction = spl_token::instruction::TokenInstruction::unpack(data)?; - - let transfer_info = match tkn_instruction { - TokenInstruction::TransferChecked { amount, .. } => Some((amount, 2)), - TokenInstruction::Transfer { amount } => Some((amount, 1)), - _ => None, - }; - - if transfer_info.is_none() { - continue; - } - - if let Some((1, destination_ata_index)) = transfer_info { - let source_account_index = account_indices[0]; - let source_bytes: &[u8] = &keys[source_account_index as usize]; - let source = Pubkey::try_from(source_bytes)?; + }); - let collection_mint = - CollectionMint::find_by_ata(conn, source.to_string()).await?; - - if collection_mint.is_none() { - return Ok(()); - } - - let destination_account_index = account_indices[destination_ata_index]; - let destination_bytes: &[u8] = &keys[destination_account_index as usize]; - let destination = Pubkey::try_from(destination_bytes)?; - - let acct = fetch_account(&self.rpc, &destination).await?; - let destination_tkn_act = Account::unpack(&acct.data)?; - let new_owner = destination_tkn_act.owner.to_string(); - let mint = collection_mint.context("No mint found")?; - - CollectionMint::update_owner_and_ata( - conn, - &mint, - new_owner.clone(), - destination.to_string(), - ) - .await?; - - self.producer - .send( - Some(&SolanaNftEvents { - event: Some(UpdateMintOwner(MintOwnershipUpdate { - mint_address: destination_tkn_act.mint.to_string(), - sender: mint.owner.to_string(), - recipient: new_owner, - tx_signature: Signature::new(sig.as_slice()).to_string(), - })), - }), - Some(&SolanaNftEventKey { - id: mint.id.to_string(), - ..Default::default() - }), - ) - .await?; - } + tokio::select! { + Err(e) = spl_token_stream => { + bail!("spl token stream error: {:?}", e) + }, + Err(e) = mpl_bubblegum_stream => { + bail!("mpl bumblegum stream error: {:?}", e) } } - - Ok(()) } } - -async fn fetch_account( - rpc: &Arc, - address: &Pubkey, -) -> Result { - backoff::future::retry(ExponentialBackoff::default(), || async { - let acct = rpc.get_account(address)?; - - Ok(acct) - }) - .await -} diff --git a/indexer/src/lib.rs b/indexer/src/lib.rs index 53d0373..5b66883 100644 --- a/indexer/src/lib.rs +++ b/indexer/src/lib.rs @@ -1,5 +1,6 @@ mod connector; mod handler; +mod processor; use clap::{arg, command}; pub use connector::GeyserGrpcConnector; pub use handler::MessageHandler; diff --git a/indexer/src/processor.rs b/indexer/src/processor.rs new file mode 100644 index 0000000..b6531dd --- /dev/null +++ b/indexer/src/processor.rs @@ -0,0 +1,262 @@ +use std::{convert::TryInto, sync::Arc}; + +use anchor_lang::AnchorDeserialize; +use backoff::ExponentialBackoff; +use dashmap::DashMap; +use holaplex_hub_nfts_solana_core::{ + db::Connection, + proto::{ + solana_nft_events::Event::UpdateMintOwner, MintOwnershipUpdate, SolanaNftEventKey, + SolanaNftEvents, + }, + sea_orm::Set, + CollectionMint, CompressionLeaf, +}; +use holaplex_hub_nfts_solana_entity::compression_leafs; +use hub_core::{prelude::*, producer::Producer, tokio::task}; +use mpl_bubblegum::utils::get_asset_id; +use solana_client::rpc_client::RpcClient; +use solana_program::program_pack::Pack; +use solana_sdk::{pubkey::Pubkey, signature::Signature}; +use spl_token::{instruction::TokenInstruction, state::Account}; +use yellowstone_grpc_proto::{ + prelude::{ + subscribe_update::UpdateOneof, Message, SubscribeUpdate, SubscribeUpdateTransaction, + }, + tonic::Status, +}; + +#[derive(Clone)] +pub struct Processor { + db: Connection, + rpc: Arc, + producer: Producer, + dashmap: DashMap>, +} + +impl Processor { + pub(crate) fn new( + db: Connection, + rpc: Arc, + producer: Producer, + ) -> Self { + Self { + db, + rpc, + producer, + dashmap: DashMap::new(), + } + } + + pub(crate) async fn process(&self, message: Result) -> Result<()> { + match message { + Ok(msg) => match msg.update_oneof { + Some(UpdateOneof::Transaction(tx)) => { + self.dashmap.entry(tx.slot).or_insert(Vec::new()).push(tx); + }, + Some(UpdateOneof::Slot(slot)) => { + if let Some((_, transactions)) = self.dashmap.remove(&slot.slot) { + let handles: Vec<_> = transactions + .into_iter() + .map(|tx| task::spawn(self.clone().process_transaction(tx))) + .collect(); + + for handle in handles { + handle.await?? + } + } + }, + _ => {}, + }, + Err(error) => bail!("stream error: {:?}", error), + }; + + Ok(()) + } + + pub(crate) async fn process_transaction(self, tx: SubscribeUpdateTransaction) -> Result<()> { + let message = tx + .transaction + .clone() + .context("SubscribeTransactionInfo not found")? + .transaction + .context("Transaction not found")? + .message + .context("Message not found")?; + let sig = tx + .transaction + .as_ref() + .ok_or_else(|| anyhow!("failed to get transaction"))? + .signature + .clone(); + + let keys = message.clone().account_keys; + + for (idx, key) in message.clone().account_keys.iter().enumerate() { + let key: &[u8] = key; + let k = Pubkey::try_from(key)?; + if k == spl_token::ID { + self.process_spl_token_transaction(idx, &keys, &sig, &message) + .await?; + } else if k == mpl_bubblegum::ID { + self.process_mpl_bubblegum_transaction(idx, &keys, &sig, &message) + .await?; + } + } + + Ok(()) + } + + pub(crate) async fn process_mpl_bubblegum_transaction( + &self, + program_account_index: usize, + keys: &[Vec], + sig: &Vec, + message: &Message, + ) -> Result<()> { + for ins in message.instructions.iter() { + let account_indices = ins.accounts.clone(); + let program_idx: usize = ins.program_id_index.try_into()?; + + if program_idx == program_account_index { + let conn = self.db.get(); + let data = ins.data.clone(); + let data = data.as_slice(); + + let tkn_instruction = + mpl_bubblegum::instruction::Transfer::try_from_slice(&data[8..])?; + let new_leaf_owner_account_index = account_indices[3]; + let merkle_tree_account_index = account_indices[4]; + let new_leaf_owner_bytes: &[u8] = &keys[new_leaf_owner_account_index as usize]; + let merkle_tree_bytes: &[u8] = &keys[merkle_tree_account_index as usize]; + let new_leaf_owner = Pubkey::try_from(new_leaf_owner_bytes)?; + let merkle_tree = Pubkey::try_from(merkle_tree_bytes)?; + + let asset_id = get_asset_id(&merkle_tree, tkn_instruction.nonce); + + let compression_leaf = + CompressionLeaf::find_by_asset_id(conn, asset_id.to_string()) + .await? + .context("compression leaf not found")?; + + let collection_mint_id = compression_leaf.id; + let leaf_owner = compression_leaf.leaf_owner.clone(); + let mut compression_leaf: compression_leafs::ActiveModel = compression_leaf.into(); + + compression_leaf.leaf_owner = Set(new_leaf_owner.to_string()); + + CompressionLeaf::update(conn, compression_leaf).await?; + + self.producer + .send( + Some(&SolanaNftEvents { + event: Some(UpdateMintOwner(MintOwnershipUpdate { + mint_address: asset_id.to_string(), + sender: leaf_owner, + recipient: new_leaf_owner.to_string(), + tx_signature: Signature::new(sig.as_slice()).to_string(), + })), + }), + Some(&SolanaNftEventKey { + id: collection_mint_id.to_string(), + ..Default::default() + }), + ) + .await?; + } + } + + Ok(()) + } + + pub(crate) async fn process_spl_token_transaction( + &self, + program_account_index: usize, + keys: &[Vec], + sig: &Vec, + message: &Message, + ) -> Result<()> { + let conn = self.db.get(); + for ins in message.instructions.iter() { + let account_indices = ins.accounts.clone(); + let program_idx: usize = ins.program_id_index.try_into()?; + + if program_idx == program_account_index { + let data = ins.data.clone(); + let data = data.as_slice(); + let tkn_instruction = spl_token::instruction::TokenInstruction::unpack(data)?; + + let transfer_info = match tkn_instruction { + TokenInstruction::TransferChecked { amount, .. } => Some((amount, 2)), + TokenInstruction::Transfer { amount } => Some((amount, 1)), + _ => None, + }; + + if transfer_info.is_none() { + continue; + } + + if let Some((1, destination_ata_index)) = transfer_info { + let source_account_index = account_indices[0]; + let source_bytes: &[u8] = &keys[source_account_index as usize]; + let source = Pubkey::try_from(source_bytes)?; + + let collection_mint = + CollectionMint::find_by_ata(conn, source.to_string()).await?; + + if collection_mint.is_none() { + return Ok(()); + } + + let destination_account_index = account_indices[destination_ata_index]; + let destination_bytes: &[u8] = &keys[destination_account_index as usize]; + let destination = Pubkey::try_from(destination_bytes)?; + + let acct = fetch_account(&self.rpc, &destination).await?; + let destination_tkn_act = Account::unpack(&acct.data)?; + let new_owner = destination_tkn_act.owner.to_string(); + let mint = collection_mint.context("No mint found")?; + + CollectionMint::update_owner_and_ata( + conn, + &mint, + new_owner.clone(), + destination.to_string(), + ) + .await?; + + self.producer + .send( + Some(&SolanaNftEvents { + event: Some(UpdateMintOwner(MintOwnershipUpdate { + mint_address: destination_tkn_act.mint.to_string(), + sender: mint.owner.to_string(), + recipient: new_owner, + tx_signature: Signature::new(sig.as_slice()).to_string(), + })), + }), + Some(&SolanaNftEventKey { + id: mint.id.to_string(), + ..Default::default() + }), + ) + .await?; + } + } + } + + Ok(()) + } +} + +async fn fetch_account( + rpc: &Arc, + address: &Pubkey, +) -> Result { + backoff::future::retry(ExponentialBackoff::default(), || async { + let acct = rpc.get_account(address)?; + + Ok(acct) + }) + .await +} diff --git a/rust-toolchain.toml b/rust-toolchain.toml index f5dd4b4..db8508b 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "1.69.0" +channel = "1.71.0" components = [ "cargo", "clippy",