From fed42dcd1ea617a80331d8cd7d80d82d007a71d0 Mon Sep 17 00:00:00 2001 From: supernovahs <91280922+supernovahs@users.noreply.github.com> Date: Fri, 13 Sep 2024 01:21:53 +0530 Subject: [PATCH] update metrics , remove the use of metrics-derive (#98) - updated metrics crate to 0.23.0 - removed the use of metrics-derive, (harder to maintain on every update ) --------- Co-authored-by: supernovahs --- Cargo.lock | 1353 ++++++++++------- Cargo.toml | 6 +- crates/metrics/Cargo.toml | 11 +- crates/metrics/collectors/economic/Cargo.toml | 11 +- .../metrics/collectors/economic/src/error.rs | 18 + .../collectors/economic/src/fake_collector.rs | 120 ++ crates/metrics/collectors/economic/src/lib.rs | 196 ++- .../metrics/collectors/rpc_calls/Cargo.toml | 1 - .../metrics/collectors/rpc_calls/src/lib.rs | 57 +- crates/metrics/metrics-derive/Cargo.toml | 21 - crates/metrics/metrics-derive/src/expand.rs | 458 ------ crates/metrics/metrics-derive/src/lib.rs | 137 -- crates/metrics/metrics-derive/src/metric.rs | 74 - .../metrics/metrics-derive/src/with_attrs.rs | 17 - crates/metrics/src/eigenmetrics.rs | 45 +- crates/metrics/src/prometheus.rs | 130 +- 16 files changed, 1185 insertions(+), 1470 deletions(-) create mode 100644 crates/metrics/collectors/economic/src/error.rs create mode 100644 crates/metrics/collectors/economic/src/fake_collector.rs delete mode 100644 crates/metrics/metrics-derive/Cargo.toml delete mode 100644 crates/metrics/metrics-derive/src/expand.rs delete mode 100644 crates/metrics/metrics-derive/src/lib.rs delete mode 100644 crates/metrics/metrics-derive/src/metric.rs delete mode 100644 crates/metrics/metrics-derive/src/with_attrs.rs diff --git a/Cargo.lock b/Cargo.lock index b73d8007..0e9b1488 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,18 +14,18 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aes" @@ -67,9 +67,9 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "alloy-chains" -version = "0.1.21" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd47e5f8545bdf53beb545d3c039b4afa16040bdf69c50100581579b08776afd" +checksum = "2b4f201b0ac8f81315fbdc55269965a8ddadbc04ab47fa65a1a468f9a40f7a5f" dependencies = [ "num_enum", "strum", @@ -77,9 +77,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a016bfa21193744d4c38b3f3ab845462284d129e5e23c7cc0fafca7e92d9db37" +checksum = "da374e868f54c7f4ad2ad56829827badca388efd645f8cf5fccc61c2b5343504" dependencies = [ "alloy-eips", "alloy-primitives", @@ -91,9 +91,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47b2a620fd588d463ccf0f5931b41357664b293a8d31592768845a2a101bb9e" +checksum = "7dc6957ff706f9e5f6fd42f52a93e4bce476b726c92d077b348de28c4a76730c" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -122,14 +122,14 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow 0.6.13", + "winnow", ] [[package]] name = "alloy-eips" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d6d8118b83b0489cfb7e6435106948add2b35217f4a5004ef895f613f60299" +checksum = "f76ecab54890cdea1e4808fc0891c7e6cfcf71fe1a9fe26810c7280ef768f4ed" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -165,9 +165,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f0ae6e93b885cc70fe8dae449e7fd629751dbee8f59767eaaa7285333c5727" +checksum = "6d6f34930b7e3e2744bcc79056c217f00cb2abb33bc5d4ff88da7623c5bb078b" dependencies = [ "alloy-primitives", "serde", @@ -178,9 +178,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc122cbee2b8523854cc11d87bcd5773741602c553d2d2d106d82eeb9c16924a" +checksum = "25f6895fc31b48fa12306ef9b4f78b7764f8bd6d7d91cdb0a40e233704a0f23f" dependencies = [ "alloy-consensus", "alloy-eips", @@ -236,9 +236,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d5af289798fe8783acd0c5f10644d9d26f54a12bc52a083e4f3b31718e9bf92" +checksum = "9c538bfa893d07e27cb4f3c1ab5f451592b7c526d511d62b576a2ce59e146e4a" dependencies = [ "alloy-chains", "alloy-consensus", @@ -260,7 +260,7 @@ dependencies = [ "futures-utils-wasm", "lru", "pin-project", - "reqwest 0.12.5", + "reqwest 0.12.7", "serde", "serde_json", "tokio", @@ -270,9 +270,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702f330b7da123a71465ab9d39616292f8344a2811c28f2cc8d8438a69d79e35" +checksum = "0a7341322d9bc0e49f6e9fd9f2eb8e30f73806f2dd12cbb3d6bab2694c921f87" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -289,9 +289,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b155716bab55763c95ba212806cf43d05bcc70e5f35b02bad20cf5ec7fe11fed" +checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -300,20 +300,20 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8037e03c7f462a063f28daec9fda285a9a89da003c552f8637a80b9c8fd96241" +checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] name = "alloy-rpc-client" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40fcb53b2a9d0a78a4968b2eca8805a4b7011b9ee3fdfa2acaf137c5128f36b" +checksum = "5ba31bae67773fd5a60020bea900231f8396202b7feca4d0c70c6b59308ab4a8" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -323,7 +323,7 @@ dependencies = [ "alloy-transport-ws", "futures", "pin-project", - "reqwest 0.12.5", + "reqwest 0.12.7", "serde", "serde_json", "tokio", @@ -335,9 +335,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f2fbe956a3e0f0975c798f488dc6be96b669544df3737e18f4a325b42f4c86" +checksum = "184a7a42c7ba9141cc9e76368356168c282c3bc3d9e5d78f3556bdfe39343447" dependencies = [ "alloy-rpc-types-eth", "alloy-serde", @@ -345,9 +345,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "083f443a83b9313373817236a8f4bea09cca862618e9177d822aee579640a5d6" +checksum = "ab4123ee21f99ba4bd31bfa36ba89112a18a500f8b452f02b35708b1b951e2b9" dependencies = [ "alloy-consensus", "alloy-eips", @@ -363,9 +363,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d94da1c0c4e27cc344b05626fe22a89dc6b8b531b9475f3b7691dbf6913e4109" +checksum = "9416c52959e66ead795a11f4a86c248410e9e368a0765710e57055b8a1774dd6" dependencies = [ "alloy-primitives", "serde", @@ -374,9 +374,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58d876be3afd8b78979540084ff63995292a26aa527ad0d44276405780aa0ffd" +checksum = "b33753c09fa1ad85e5b092b8dc2372f1e337a42e84b9b4cff9fede75ba4adb32" dependencies = [ "alloy-primitives", "async-trait", @@ -406,9 +406,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40a37dc216c269b8a7244047cb1c18a9c69f7a0332ab2c4c2aa4cbb1a31468b" +checksum = "6dfc9c26fe6c6f1bad818c9a976de9044dd12e1f75f1f156a801ee3e8148c1b6" dependencies = [ "alloy-consensus", "alloy-network", @@ -431,7 +431,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -443,12 +443,12 @@ dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", - "heck 0.5.0", - "indexmap 2.2.6", + "heck", + "indexmap 2.5.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", "syn-solidity", "tiny-keccak", ] @@ -462,11 +462,11 @@ dependencies = [ "alloy-json-abi", "const-hex", "dunce", - "heck 0.5.0", + "heck", "proc-macro2", "quote", "serde_json", - "syn 2.0.67", + "syn 2.0.77", "syn-solidity", ] @@ -477,7 +477,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbcba3ca07cf7975f15d871b721fb18031eec8bce51103907f6dcce00b255d98" dependencies = [ "serde", - "winnow 0.6.13", + "winnow", ] [[package]] @@ -495,9 +495,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245af9541f0a0dbd5258669c80dfe3af118164cacec978a520041fc130550deb" +checksum = "01b51a291f949f755e6165c3ed562883175c97423703703355f4faa4b7d0a57c" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -508,18 +508,19 @@ dependencies = [ "thiserror", "tokio", "tower", + "tracing", "url", ] [[package]] name = "alloy-transport-http" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5619c017e1fdaa1db87f9182f4f0ed97c53d674957f4902fba655e972d359c6c" +checksum = "86d65871f9f1cafe1ed25cde2f1303be83e6473e995a2d56c275ae4fcce6119c" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest 0.12.5", + "reqwest 0.12.7", "serde_json", "tower", "tracing", @@ -528,15 +529,15 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c0aff8af5be5e58856c5cdd1e46db2c67c7ecd3a652d9100b4822c96c899947" +checksum = "aec83fd052684556c78c54df111433493267234d82321c2236560c752f595f20" dependencies = [ "alloy-pubsub", "alloy-transport", "futures", "http 1.1.0", - "rustls 0.23.10", + "rustls 0.23.13", "serde_json", "tokio", "tokio-tungstenite 0.23.1", @@ -610,9 +611,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356" [[package]] name = "ark-bn254" @@ -676,7 +677,7 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "zeroize", ] @@ -793,9 +794,9 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "ascii-canvas" @@ -849,18 +850,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -871,7 +872,7 @@ checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" dependencies = [ "futures", "pharos", - "rustc_version 0.4.0", + "rustc_version 0.4.1", ] [[package]] @@ -888,7 +889,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -899,9 +900,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "aws-config" -version = "1.5.4" +version = "1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf6cfe2881cb1fcbba9ae946fb9a6480d3b7a714ca84c74925014a89ef3387a" +checksum = "848d7b9b605720989929279fa644ce8f244d0ce3146fcca5b70e4eb7b3c020fc" dependencies = [ "aws-credential-types", "aws-runtime", @@ -919,7 +920,6 @@ dependencies = [ "fastrand", "hex", "http 0.2.12", - "hyper 0.14.29", "ring 0.17.8", "time", "tokio", @@ -930,9 +930,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16838e6c9e12125face1c1eff1343c75e3ff540de98ff7ebd61874a89bcfeb9" +checksum = "60e8f6b615cb5fc60a98132268508ad104310f0cfb25a1c22eee76efdf9154da" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -940,16 +940,44 @@ dependencies = [ "zeroize", ] +[[package]] +name = "aws-lc-rs" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f95446d919226d587817a7d21379e6eb099b97b45110a7f272a444ca5c54070" +dependencies = [ + "aws-lc-sys", + "mirai-annotations", + "paste", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234314bd569802ec87011d653d6815c6d7b9ffb969e9fee5b8b20ef860e8dce9" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", + "libc", + "paste", +] + [[package]] name = "aws-runtime" -version = "1.3.1" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c5f920ffd1e0526ec9e70e50bf444db50b204395a0fa7016bbf9e31ea1698f" +checksum = "a10d5c055aa540164d9561a0e2e74ad30f0dcf7393c3a92f6733ddf9c5762468" dependencies = [ "aws-credential-types", "aws-sigv4", "aws-smithy-async", "aws-smithy-http", + "aws-smithy-runtime", "aws-smithy-runtime-api", "aws-smithy-types", "aws-types", @@ -957,6 +985,7 @@ dependencies = [ "fastrand", "http 0.2.12", "http-body 0.4.6", + "once_cell", "percent-encoding", "pin-project-lite", "tracing", @@ -965,9 +994,9 @@ dependencies = [ [[package]] name = "aws-sdk-kms" -version = "1.37.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91f43512620f4b0d9e67ccf7d768fab5ed310ac2229ebb9422177abe99c36ba" +checksum = "d9f7cb482caa5444d445c94417b9c74e49a849beb09ede4f2f4c3c15f8157387" dependencies = [ "aws-credential-types", "aws-runtime", @@ -987,9 +1016,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.36.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6acca681c53374bf1d9af0e317a41d12a44902ca0f2d1e10e5cb5bb98ed74f35" +checksum = "27bf24cd0d389daa923e974b0e7c38daf308fc21e963c049f57980235017175e" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1009,9 +1038,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.37.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b79c6bdfe612503a526059c05c9ccccbf6bd9530b003673cb863e547fd7c0c9a" +checksum = "3b43b3220f1c46ac0e9dcc0a97d94b93305dacb36d1dd393996300c6b9b74364" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1031,9 +1060,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.36.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e6ecdb2bd756f3b2383e6f0588dc10a4e65f5d551e70a56e0bfe0c884673ce" +checksum = "d1c46924fb1add65bba55636e12812cae2febf68c0f37361766f627ddcca91ce" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1054,9 +1083,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5df1b0fa6be58efe9d4ccc257df0a53b89cd8909e86591a13ca54817c87517be" +checksum = "cc8db6904450bafe7473c6ca9123f88cc11089e41a025408f992db4e22d3be68" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1088,9 +1117,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.9" +version = "0.60.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9cd0ae3d97daa0a2bf377a4d8e8e1362cae590c4a1aad0d40058ebca18eb91e" +checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -1127,9 +1156,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.6.2" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce87155eba55e11768b8c1afa607f3e864ae82f03caf63258b37455b0ad02537" +checksum = "d1ce695746394772e7000b39fe073095db6d45a862d0767dd5ad0ac0d7f8eb87" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1140,9 +1169,9 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-rustls 0.24.2", "once_cell", "pin-project-lite", @@ -1154,9 +1183,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30819352ed0a04ecf6a2f3477e344d2d1ba33d43e0f09ad9047c12e0d923616f" +checksum = "e086682a53d3aa241192aa110fa8dfce98f2f5ac2ead0de84d41582c7e8fdb96" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -1171,9 +1200,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.0" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe321a6b21f5d8eabd0ade9c55d3d0335f3c3157fc2b3e87f05f34b539e4df5" +checksum = "03701449087215b5369c7ea17fef0dd5d24cb93439ec5af0c7615f58c3f22605" dependencies = [ "base64-simd", "bytes", @@ -1182,7 +1211,7 @@ dependencies = [ "http 0.2.12", "http 1.1.0", "http-body 0.4.6", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "itoa", "num-integer", @@ -1197,9 +1226,9 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.8" +version = "0.60.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d123fbc2a4adc3c301652ba8e149bf4bc1d1725affb9784eb20c953ace06bf55" +checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" dependencies = [ "xmlparser", ] @@ -1214,23 +1243,23 @@ dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "tracing", ] [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -1291,6 +1320,29 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.77", + "which", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -1314,9 +1366,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitvec" @@ -1341,9 +1393,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62dc83a094a71d43eeadd254b1ec2d24cb6a0bb6cadce00df51f0db594711a32" +checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" dependencies = [ "cc", "glob", @@ -1366,7 +1418,7 @@ dependencies = [ "home", "http 1.1.0", "http-body-util", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-named-pipe", "hyper-rustls 0.26.0", "hyper-util", @@ -1374,8 +1426,8 @@ dependencies = [ "log", "pin-project-lite", "rustls 0.22.4", - "rustls-native-certs 0.7.1", - "rustls-pemfile 2.1.2", + "rustls-native-certs 0.7.3", + "rustls-pemfile 2.1.3", "rustls-pki-types", "serde", "serde_derive", @@ -1431,9 +1483,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" dependencies = [ "serde", ] @@ -1471,23 +1523,24 @@ dependencies = [ [[package]] name = "c-kzg" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf100c4cea8f207e883ff91ca886d621d8a166cb04971dfaa9bb8fd99ed95df" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" dependencies = [ "blst", "cc", "glob", "hex", "libc", + "once_cell", "serde", ] [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] @@ -1517,13 +1570,22 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.99" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ "jobserver", "libc", - "once_cell", + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", ] [[package]] @@ -1534,9 +1596,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cfg_aliases" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" @@ -1550,7 +1612,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1563,11 +1625,22 @@ dependencies = [ "inout", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" -version = "4.5.11" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" dependencies = [ "clap_builder", "clap_derive", @@ -1575,9 +1648,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.11" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" dependencies = [ "anstream", "anstyle", @@ -1587,14 +1660,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.11" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -1603,6 +1676,15 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +[[package]] +name = "cmake" +version = "0.1.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" +dependencies = [ + "cc", +] + [[package]] name = "coins-bip32" version = "0.8.7" @@ -1723,15 +1805,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1805,7 +1887,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -1819,12 +1901,12 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.4" +version = "3.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" dependencies = [ "nix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1848,7 +1930,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -1859,7 +1941,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -1921,8 +2003,8 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version 0.4.0", - "syn 2.0.67", + "rustc_version 0.4.1", + "syn 2.0.77", ] [[package]] @@ -2001,9 +2083,9 @@ dependencies = [ [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "ecdsa" @@ -2036,7 +2118,7 @@ dependencies = [ "eigen-signer", "k256", "once_cell", - "reqwest 0.12.5", + "reqwest 0.12.7", "thiserror", "tokio", ] @@ -2231,15 +2313,18 @@ dependencies = [ name = "eigen-metrics" version = "0.0.1-alpha" dependencies = [ + "alloy-primitives", + "eigen-client-avsregistry", + "eigen-client-elcontracts", "eigen-logging", "eigen-metrics-collectors-economic", "eigen-metrics-collectors-rpc-calls", - "eigen-metrics-derive", - "eyre", - "hyper 0.14.29", + "eigen-testing-utils", "metrics", "metrics-exporter-prometheus", - "reqwest 0.12.5", + "metrics-util", + "num-bigint 0.4.6", + "reqwest 0.12.7", "tokio", ] @@ -2247,9 +2332,16 @@ dependencies = [ name = "eigen-metrics-collectors-economic" version = "0.0.1-alpha" dependencies = [ + "alloy-primitives", + "eigen-client-avsregistry", + "eigen-client-elcontracts", "eigen-logging", - "eigen-metrics-derive", + "eigen-testing-utils", + "eigen-types", "metrics", + "num-bigint 0.4.6", + "thiserror", + "tokio", ] [[package]] @@ -2257,21 +2349,7 @@ name = "eigen-metrics-collectors-rpc-calls" version = "0.0.1-alpha" dependencies = [ "eigen-logging", - "eigen-metrics-derive", - "metrics", -] - -[[package]] -name = "eigen-metrics-derive" -version = "0.0.1-alpha" -dependencies = [ "metrics", - "once_cell", - "proc-macro2", - "quote", - "regex", - "syn 2.0.67", - "trybuild", ] [[package]] @@ -2279,7 +2357,7 @@ name = "eigen-nodeapi" version = "0.0.1-alpha" dependencies = [ "ntex", - "reqwest 0.12.5", + "reqwest 0.12.7", "serde", "serde_json", "thiserror", @@ -2425,14 +2503,14 @@ dependencies = [ "alloy-sol-types", "alloy-transport", "alloy-transport-http", - "reqwest 0.12.5", + "reqwest 0.12.7", ] [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elliptic-curve" @@ -2471,6 +2549,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + [[package]] name = "enr" version = "0.10.0" @@ -2491,14 +2575,14 @@ dependencies = [ [[package]] name = "enum-as-inner" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -2653,7 +2737,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.67", + "syn 2.0.77", "toml", "walkdir", ] @@ -2671,7 +2755,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -2697,7 +2781,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.67", + "syn 2.0.77", "tempfile", "thiserror", "tiny-keccak", @@ -2917,9 +3001,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fastrlp" @@ -2962,9 +3046,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", "miniz_oxide", @@ -3010,6 +3094,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "funty" version = "2.0.0" @@ -3082,7 +3172,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -3164,9 +3254,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "glob" @@ -3209,7 +3299,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -3218,9 +3308,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -3228,7 +3318,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -3269,12 +3359,6 @@ dependencies = [ "fxhash", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -3426,9 +3510,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -3443,7 +3527,7 @@ dependencies = [ "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -3461,9 +3545,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -3485,17 +3569,18 @@ dependencies = [ [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", + "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -3510,7 +3595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", "pin-project-lite", "tokio", @@ -3526,7 +3611,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.29", + "hyper 0.14.30", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -3542,11 +3627,11 @@ checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", "log", "rustls 0.22.4", - "rustls-native-certs 0.7.1", + "rustls-native-certs 0.7.3", "rustls-pki-types", "tokio", "tokio-rustls 0.25.0", @@ -3555,21 +3640,22 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", - "rustls 0.23.10", - "rustls-native-certs 0.7.1", + "log", + "rustls 0.23.13", + "rustls-native-certs 0.8.0", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", "tower-service", - "webpki-roots 0.26.3", + "webpki-roots 0.26.5", ] [[package]] @@ -3579,7 +3665,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.29", + "hyper 0.14.30", "native-tls", "tokio", "tokio-native-tls", @@ -3593,7 +3679,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", "native-tls", "tokio", @@ -3603,16 +3689,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.3.1", + "http-body 1.0.1", + "hyper 1.4.1", "pin-project-lite", "socket2", "tokio", @@ -3629,7 +3715,7 @@ checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" dependencies = [ "hex", "http-body-util", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", "pin-project-lite", "tokio", @@ -3742,9 +3828,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -3797,14 +3883,14 @@ dependencies = [ "socket2", "widestring", "windows-sys 0.48.0", - "winreg 0.50.0", + "winreg", ] [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is_terminal_polyfill" @@ -3830,6 +3916,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.13.0" @@ -3847,18 +3942,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -3916,9 +4011,9 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -3960,11 +4055,27 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" + +[[package]] +name = "libloading" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] [[package]] name = "libm" @@ -3978,7 +4089,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -4006,15 +4117,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ "hashbrown 0.14.5", ] @@ -4028,15 +4139,6 @@ dependencies = [ "linked-hash-map", ] -[[package]] -name = "mach2" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" -dependencies = [ - "libc", -] - [[package]] name = "match_cfg" version = "0.1.0" @@ -4061,24 +4163,26 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "metrics" -version = "0.21.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fde3af1a009ed76a778cb84fdef9e7dbbdf5775ae3e4cc1f434a6a307f6f76c5" +checksum = "884adb57038347dfbaf2d5065887b6cf4312330dc8e94bc30a1a839bd79d3261" dependencies = [ "ahash", - "metrics-macros", "portable-atomic", ] [[package]] name = "metrics-exporter-prometheus" -version = "0.12.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d4fa7ce7c4862db464a37b0b31d89bca874562f034bd7993895572783d02950" +checksum = "b4f0c8427b39666bf970460908b213ec09b3b350f20c0c2eabcbba51704a08e6" dependencies = [ - "base64 0.21.7", - "hyper 0.14.29", - "indexmap 1.9.3", + "base64 0.22.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls 0.27.3", + "hyper-util", + "indexmap 2.5.0", "ipnet", "metrics", "metrics-util", @@ -4088,29 +4192,22 @@ dependencies = [ "tracing", ] -[[package]] -name = "metrics-macros" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b4faf00617defe497754acde3024865bc143d44a86799b24e191ecff91354f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.67", -] - [[package]] name = "metrics-util" -version = "0.15.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "111cb375987443c3de8d503580b536f77dc8416d32db62d9456db5d93bd7ac47" +checksum = "4259040465c955f9f2f1a4a8a16dc46726169bca0f88e8fb2dbeced487c3e828" dependencies = [ + "aho-corasick", "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.13.2", + "hashbrown 0.14.5", + "indexmap 2.5.0", "metrics", "num_cpus", + "ordered-float", "quanta", + "radix_trie", "sketches-ddsketch", ] @@ -4120,26 +4217,39 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] +[[package]] +name = "mirai-annotations" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9be0862c1b3f26a88803c4a49de6889c10e608b3ee9344e6ef5b45fb37ad3d1" + [[package]] name = "nanorand" version = "0.7.0" @@ -4169,18 +4279,37 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + [[package]] name = "nix" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "cfg_aliases", "libc", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "ntex" version = "2.4.0" @@ -4188,7 +4317,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0670f267be315383b642e8eb947543ca9d32ec3c54f7fc84bf668c473479aa3" dependencies = [ "base64 0.22.1", - "bitflags 2.5.0", + "bitflags 2.6.0", "bytes", "encoding_rs", "httparse", @@ -4225,7 +4354,7 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ffd6ac357a3fd885753ddeb4130ec92474e79d013362532eba4778854466981" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "bytes", "futures-core", "serde", @@ -4246,7 +4375,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98763f0ee78f247c02fe1bcdf6380f306a08d95169f9c2d83619d5e1cb26c738" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "fxhash", "log", "nanorand", @@ -4281,7 +4410,7 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec68a2766bcc47426631e3461c8d7994f6eec194445f394ab61f83d92756ad12" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "log", "ntex-bytes", "ntex-codec", @@ -4407,7 +4536,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb89227b7c7b6850e17be71b1abe711e2b6e96d8e386b76ea259c155c4ab65d4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "futures-core", "futures-sink", "futures-timer", @@ -4488,30 +4617,30 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] name = "object" -version = "0.32.2" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -4555,11 +4684,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -4576,7 +4705,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -4587,9 +4716,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -4603,6 +4732,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "ordered-float" +version = "4.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a91171844676f8c7990ce64959210cd2eaef32c2612c50f9fae9f8aaa6065a6" +dependencies = [ + "num-traits", +] + [[package]] name = "outref" version = "0.5.1" @@ -4667,7 +4805,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4692,7 +4830,7 @@ dependencies = [ "regex", "regex-syntax", "structmeta", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -4779,9 +4917,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.10" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" dependencies = [ "memchr", "thiserror", @@ -4795,7 +4933,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.5.0", ] [[package]] @@ -4805,7 +4943,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" dependencies = [ "futures", - "rustc_version 0.4.0", + "rustc_version 0.4.1", ] [[package]] @@ -4838,7 +4976,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -4876,7 +5014,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -4909,9 +5047,9 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "polling" -version = "3.7.2" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", @@ -4919,14 +5057,14 @@ dependencies = [ "pin-project-lite", "rustix", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "powerfmt" @@ -4936,9 +5074,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -4948,12 +5089,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -4972,11 +5113,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -5014,13 +5155,13 @@ dependencies = [ [[package]] name = "proptest" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.5.0", + "bitflags 2.6.0", "lazy_static", "num-traits", "rand", @@ -5034,13 +5175,12 @@ dependencies = [ [[package]] name = "quanta" -version = "0.11.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab" +checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" dependencies = [ "crossbeam-utils", "libc", - "mach2", "once_cell", "raw-cpuid", "wasi", @@ -5056,16 +5196,17 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.2" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash", - "rustls 0.23.10", + "rustc-hash 2.0.0", + "rustls 0.23.13", + "socket2", "thiserror", "tokio", "tracing", @@ -5073,15 +5214,15 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.3" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" dependencies = [ "bytes", "rand", "ring 0.17.8", - "rustc-hash", - "rustls 0.23.10", + "rustc-hash 2.0.0", + "rustls 0.23.13", "slab", "thiserror", "tinyvec", @@ -5090,22 +5231,22 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.2" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" dependencies = [ "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -5116,6 +5257,16 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + [[package]] name = "rand" version = "0.8.5" @@ -5157,11 +5308,11 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "10.7.0" +version = "11.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" +checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] @@ -5186,18 +5337,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -5206,9 +5357,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -5259,7 +5410,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-rustls 0.24.2", "hyper-tls 0.5.0", "ipnet", @@ -5276,7 +5427,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration", + "system-configuration 0.5.1", "tokio", "tokio-native-tls", "tokio-rustls 0.24.1", @@ -5286,27 +5437,27 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "webpki-roots 0.25.4", - "winreg 0.50.0", + "winreg", ] [[package]] name = "reqwest" -version = "0.12.5" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "hickory-resolver", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.3.1", - "hyper-rustls 0.27.2", + "hyper 1.4.1", + "hyper-rustls 0.27.3", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -5318,15 +5469,15 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.10", - "rustls-native-certs 0.7.1", - "rustls-pemfile 2.1.2", + "rustls 0.23.13", + "rustls-native-certs 0.7.3", + "rustls-pemfile 2.1.3", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 1.0.1", - "system-configuration", + "system-configuration 0.6.1", "tokio", "tokio-native-tls", "tokio-rustls 0.26.0", @@ -5335,8 +5486,8 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.3", - "winreg 0.52.0", + "webpki-roots 0.26.5", + "windows-registry", ] [[package]] @@ -5429,7 +5580,7 @@ dependencies = [ "futures", "futures-timer", "rstest_macros", - "rustc_version 0.4.0", + "rustc_version 0.4.1", ] [[package]] @@ -5445,8 +5596,8 @@ dependencies = [ "quote", "regex", "relative-path", - "rustc_version 0.4.0", - "syn 2.0.67", + "rustc_version 0.4.1", + "syn 2.0.77", "unicode-ident", ] @@ -5519,6 +5670,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -5536,20 +5693,20 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver 1.0.23", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -5577,21 +5734,23 @@ dependencies = [ "log", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.4", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] [[package]] name = "rustls" -version = "0.23.10" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ + "aws-lc-rs", + "log", "once_cell", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.4", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] @@ -5610,12 +5769,25 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +dependencies = [ + "openssl-probe", + "rustls-pemfile 2.1.3", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" +checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.2", + "rustls-pemfile 2.1.3", "rustls-pki-types", "schannel", "security-framework", @@ -5632,9 +5804,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64 0.22.1", "rustls-pki-types", @@ -5642,9 +5814,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-webpki" @@ -5658,10 +5830,11 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.4" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ + "aws-lc-rs", "ring 0.17.8", "rustls-pki-types", "untrusted 0.9.0", @@ -5735,20 +5908,20 @@ dependencies = [ [[package]] name = "scc" -version = "2.1.14" +version = "2.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79da19444d9da7a9a82b80ecf059eceba6d3129d84a8610fd25ff2364f255466" +checksum = "0c947adb109a8afce5fc9c7bf951f87f146e9147b3a6a58413105628fb1d1e66" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5793,9 +5966,9 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0495e4577c672de8254beb68d01a9b62d0e8a13c099edecdbedccce3223cd29f" +checksum = "60a7b59a5d9b0099720b417b6325d91a52cbf5b3dcb5041d864be53eefa58abc" [[package]] name = "sec1" @@ -5813,11 +5986,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -5826,9 +5999,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -5875,29 +6048,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.203" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.121" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", @@ -5913,14 +6086,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -5947,7 +6120,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.5.0", "serde", "serde_derive", "serde_json", @@ -5964,7 +6137,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -5989,7 +6162,7 @@ checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -6037,9 +6210,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" dependencies = [ "cc", "cfg-if", @@ -6054,6 +6227,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook" version = "0.3.17" @@ -6213,7 +6392,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -6224,14 +6403,14 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros", ] @@ -6242,18 +6421,18 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] name = "subtle" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0208408ba0c3df17ed26eb06992cb1a1268d41b2c0e12e65203fbe3972cee5" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "svm-rs" @@ -6288,9 +6467,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.67" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff8655ed1d86f3af4ee3fd3263786bc14245ad17c4c7e85ba7187fb3ae028c90" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -6306,7 +6485,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -6320,6 +6499,9 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "system-configuration" @@ -6329,7 +6511,18 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation", - "system-configuration-sys", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "system-configuration-sys 0.6.0", ] [[package]] @@ -6342,6 +6535,16 @@ dependencies = [ "libc", ] +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -6350,14 +6553,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6371,15 +6575,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "testcontainers" version = "0.20.1" @@ -6398,7 +6593,7 @@ dependencies = [ "memchr", "parse-display", "pin-project-lite", - "reqwest 0.12.5", + "reqwest 0.12.7", "serde", "serde_json", "serde_with", @@ -6411,22 +6606,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -6490,9 +6685,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -6505,32 +6700,31 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -6570,16 +6764,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.10", + "rustls 0.23.13", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -6610,19 +6804,19 @@ checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" dependencies = [ "futures-util", "log", - "rustls 0.23.10", + "rustls 0.23.13", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", "tungstenite 0.23.0", - "webpki-roots 0.26.3", + "webpki-roots 0.26.5", ] [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -6633,47 +6827,36 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.14" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow", ] [[package]] @@ -6694,15 +6877,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -6724,7 +6907,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -6791,20 +6974,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "trybuild" -version = "1.0.96" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33a5f13f11071020bb12de7a16b925d2d58636175c20c11dc5f96cb64bb6c9b3" -dependencies = [ - "glob", - "serde", - "serde_derive", - "serde_json", - "termcolor", - "toml", -] - [[package]] name = "tungstenite" version = "0.20.1" @@ -6838,7 +7007,7 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.23.10", + "rustls 0.23.13", "rustls-pki-types", "sha1", "thiserror", @@ -6883,9 +7052,9 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" @@ -6898,9 +7067,9 @@ dependencies = [ [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "untrusted" @@ -6977,9 +7146,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vsimd" @@ -7023,34 +7192,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -7060,9 +7230,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7070,28 +7240,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -7105,13 +7275,25 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" dependencies = [ "rustls-pki-types", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + [[package]] name = "widestring" version = "1.1.0" @@ -7136,11 +7318,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -7155,7 +7337,37 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", ] [[package]] @@ -7173,7 +7385,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -7193,18 +7414,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -7215,9 +7436,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -7227,9 +7448,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -7239,15 +7460,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -7257,9 +7478,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -7269,9 +7490,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -7281,9 +7502,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -7293,24 +7514,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" - -[[package]] -name = "winnow" -version = "0.5.40" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -7325,16 +7537,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "ws_stream_wasm" version = "0.7.4" @@ -7346,7 +7548,7 @@ dependencies = [ "js-sys", "log", "pharos", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "send_wrapper 0.6.0", "thiserror", "wasm-bindgen", @@ -7377,22 +7579,23 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -7412,7 +7615,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.77", ] [[package]] @@ -7456,9 +7659,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.11+zstd.1.5.6" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 0978fadd..092f0075 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,6 @@ members = [ "crates/metrics/", "crates/metrics/collectors/economic/", "crates/metrics/collectors/rpc_calls/", - "crates/metrics/metrics-derive", "crates/services/avsregistry/", "crates/services/bls_aggregation/", "crates/services/operatorsinfo/", @@ -73,7 +72,6 @@ eigen-logging = { path = "crates/logging/" } eigen-metrics = { version = "0.0.1-alpha", path = "crates/metrics/" } eigen-metrics-collectors-economic = { path = "crates/metrics/collectors/economic" } eigen-metrics-collectors-rpc-calls = { path = "crates/metrics/collectors/rpc_calls" } -eigen-metrics-derive = { path = "crates/metrics/metrics-derive" } eigen-services-avsregistry = { path = "crates/services/avsregistry" } eigen-services-bls_aggregation = { path = "crates/services/bls_aggregation" } eigen-services-operatorsinfo = { path = "crates/services/operatorsinfo" } @@ -92,8 +90,8 @@ hex-literal = "0.4.1" hyper = "0.14.25" info-operator-service = { path = "examples/info-operator-service" } k256 = "0.13.3" -metrics = "0.21.1" -metrics-exporter-prometheus = "0.12.0" +metrics = "0.23.0" +metrics-exporter-prometheus = "0.15.3" num-bigint = "0.4.6" once_cell = "1.17" prometheus-client = "0.22.2" diff --git a/crates/metrics/Cargo.toml b/crates/metrics/Cargo.toml index 72145297..99a9c70c 100644 --- a/crates/metrics/Cargo.toml +++ b/crates/metrics/Cargo.toml @@ -7,14 +7,17 @@ repository.workspace = true [dependencies] eigen-logging.workspace = true -eigen-metrics-derive.workspace = true -eyre.workspace = true -hyper.workspace = true metrics.workspace = true metrics-exporter-prometheus.workspace = true +metrics-util = "0.17.0" [dev-dependencies] +alloy-primitives.workspace = true eigen-metrics-collectors-economic.workspace = true eigen-metrics-collectors-rpc-calls.workspace = true +eigen-client-elcontracts.workspace = true +eigen-testing-utils.workspace = true +eigen-client-avsregistry.workspace = true +num-bigint.workspace = true reqwest = "0.12.4" -tokio.workspace = true +tokio.workspace = true \ No newline at end of file diff --git a/crates/metrics/collectors/economic/Cargo.toml b/crates/metrics/collectors/economic/Cargo.toml index e18cb7e9..4d8bfe38 100644 --- a/crates/metrics/collectors/economic/Cargo.toml +++ b/crates/metrics/collectors/economic/Cargo.toml @@ -6,6 +6,15 @@ rust-version.workspace = true repository.workspace = true [dependencies] +alloy-primitives.workspace = true eigen-logging.workspace = true -eigen-metrics-derive.workspace = true +eigen-types.workspace = true +eigen-client-elcontracts.workspace = true +eigen-client-avsregistry.workspace = true +thiserror.workspace = true metrics.workspace = true +num-bigint.workspace = true + +[dev-dependencies] +tokio.workspace = true +eigen-testing-utils.workspace = true \ No newline at end of file diff --git a/crates/metrics/collectors/economic/src/error.rs b/crates/metrics/collectors/economic/src/error.rs new file mode 100644 index 00000000..16704131 --- /dev/null +++ b/crates/metrics/collectors/economic/src/error.rs @@ -0,0 +1,18 @@ +use alloy_primitives::ruint; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum CollectorMetricError { + #[error("Collector metrics error ")] + ElContractsError(#[from] eigen_client_elcontracts::error::ElContractsError), + + #[error("Operator is not registered")] + OperatorNotRegistered, + + #[error("Collector metric error")] + AvsRegistryError(#[from] eigen_client_avsregistry::error::AvsRegistryError), + + /// Parse Error + #[error("Parse Error :{0}")] + ParseError(#[from] ruint::ParseError), +} diff --git a/crates/metrics/collectors/economic/src/fake_collector.rs b/crates/metrics/collectors/economic/src/fake_collector.rs new file mode 100644 index 00000000..6099c743 --- /dev/null +++ b/crates/metrics/collectors/economic/src/fake_collector.rs @@ -0,0 +1,120 @@ +use std::{collections::HashMap, str::FromStr}; + +use crate::error::CollectorMetricError; + +use alloy_primitives::{Address, FixedBytes, U256}; +use eigen_client_avsregistry::reader::AvsRegistryChainReader; +use eigen_logging::logger::SharedLogger; +use eigen_types::operator::OperatorId; +use metrics::{describe_gauge, gauge, Key, Label}; +use num_bigint::BigInt; + +/// RegisteredStakes Metrics with logger +#[derive(Debug)] +pub struct FakeCollector { + logger: SharedLogger, + operator_addr: Address, + operator_id: OperatorId, + avs_registry_reader: AvsRegistryChainReader, + quorum_names: HashMap, + avs_name: String, +} + +impl FakeCollector { + /// Operator stakes in AVS registry contract. + /// Most commonly represents a weighted combination of delegated shares in the DelegationManager EigenLayer contract. + pub fn new( + logger: SharedLogger, + operator_addr: Address, + operator_id: OperatorId, + avs_registry_reader: AvsRegistryChainReader, + quorum_names: HashMap, + avs_name: &str, + ) -> Self { + describe_gauge!( + "eigen_registered_stakes", + "A gauge with weighted delegation of delegated shares in delegation manager contract" + ); + // for now the namespace if "e" instead of eigen as the docs mention to not use the eigen namespace for this metric + describe_gauge!( + format!("{},_slashing_status", "e"), + "Whether the operator has been slashed" + ); + + Self { + logger, + operator_addr, + avs_registry_reader, + operator_id, + quorum_names, + avs_name: avs_name.to_owned(), + } + } + + pub fn set_stake(&self, quorum_number: &str, quorum_name: &str, avs_name: &str, value: f64) { + // Create the metric key with dynamic + let key = Key::from_parts( + "eigen_registered_stakes", + vec![ + Label::new("quorum_number", quorum_number.to_string()), + Label::new("quorum_name", quorum_name.to_string()), + Label::new("avs_name", avs_name.to_string()), + ], + ); + gauge!(key.to_string()).set(value); + self.logger.debug( + &format!( + "set registered stakes , quorum_name: {} , quorum_number: {} , avs_name: {}, value: {}", + quorum_name, quorum_number, avs_name, value + ), + "eigen-metrics-collectors-economic.set_stake", + ); + } + + pub async fn collect( + &mut self, + is_operator_frozen: bool, + quorum_stake_map: HashMap, + ) -> Result<(), CollectorMetricError> { + let mut operator_is_frozen_float = 0.0; + if is_operator_frozen { + operator_is_frozen_float = 1.0; + } + + gauge!("e_slashing_status").set(operator_is_frozen_float); + + for (quorum_num, stake) in quorum_stake_map { + let key = Key::from_parts( + "eigen_registered_stakes", + vec![ + Label::new("quorum_number", quorum_num.to_string()), + Label::new( + "quorum_name", + self.quorum_names[&(quorum_num as u64)].to_string(), + ), + Label::new("avs_name", self.avs_name.to_string()), + ], + ); + let u256_intermediate = U256::from_str(&stake.to_string())?; + gauge!(key.to_string()).set(f64::from(u256_intermediate)); + } + + Ok(()) + } + + pub async fn init_operator_id(&mut self) -> Result<(), CollectorMetricError> { + if self.operator_id.eq(&FixedBytes::default()) { + let operator_id = self + .avs_registry_reader + .get_operator_id(self.operator_addr) + .await?; + + if operator_id.eq(&FixedBytes::default()) { + return Err(CollectorMetricError::OperatorNotRegistered); + } + self.operator_id = operator_id; + return Ok(()); + } + Ok(()) + } +} diff --git a/crates/metrics/collectors/economic/src/lib.rs b/crates/metrics/collectors/economic/src/lib.rs index 90b56a6a..3b889289 100644 --- a/crates/metrics/collectors/economic/src/lib.rs +++ b/crates/metrics/collectors/economic/src/lib.rs @@ -3,65 +3,187 @@ issue_tracker_base_url = "https://github.com/Layr-Labs/eigensdk-rs/issues/" )] #![cfg_attr(not(test), warn(unused_crate_dependencies))] -use eigen_logging::logger::SharedLogger; -use eigen_metrics_derive::Metrics; -use metrics::{Gauge, Key, Label}; - -#[derive(Clone, Metrics)] -#[metrics(scope = "eigen.registeredstakes")] -pub struct RegisteredStakes { - #[metric( - rename = "eigen_registered_stakes", - describe = " A gauge with weighted delegation of delegated shares in delegation manager contract " - )] - registered_stake: Gauge, -} +use std::{collections::HashMap, str::FromStr}; +pub mod error; +pub mod fake_collector; +use alloy_primitives::{Address, FixedBytes, U256}; +use eigen_client_avsregistry::reader::AvsRegistryChainReader; +use eigen_client_elcontracts::reader::ELChainReader; +use eigen_logging::logger::SharedLogger; +use eigen_types::operator::OperatorId; +use error::CollectorMetricError; +use metrics::{describe_gauge, gauge, Key, Label}; /// RegisteredStakes Metrics with logger #[derive(Debug)] -pub struct RegisteredStakesMetrics { - /// Operator stakes in AVS registry contract. - /// Most commonly represents a weighted combination of delegated shares in the DelegationManager EigenLayer contract. - registered_stakes: RegisteredStakes, - +pub struct Collector { logger: SharedLogger, + operator_addr: Address, + operator_id: OperatorId, + el_reader: ELChainReader, + avs_registry_reader: AvsRegistryChainReader, + quorum_names: HashMap, + avs_name: String, } -impl RegisteredStakesMetrics { - pub fn new(logger: SharedLogger) -> Self { - let gauge = Self { - registered_stakes: RegisteredStakes { - registered_stake: metrics::register_gauge!("eigen_registered_stakes"), - }, - logger, - }; - RegisteredStakes::describe(); +impl Collector { + /// Operator stakes in AVS registry contract. + /// Most commonly represents a weighted combination of delegated shares in the DelegationManager EigenLayer contract. + pub fn new( + logger: SharedLogger, + operator_addr: Address, + operator_id: OperatorId, + el_reader: ELChainReader, + avs_registry_reader: AvsRegistryChainReader, + quorum_names: HashMap, + avs_name: &str, + ) -> Self { + describe_gauge!( + "eigen_registered_stakes", + "A gauge with weighted delegation of delegated shares in delegation manager contract" + ); + // for now the namespace if "e" instead of eigen as the docs mention to not use the eigen namespace for this metric + describe_gauge!( + format!("{},_slashing_status", "e"), + "Whether the operator has been slashed" + ); - gauge + Self { + logger, + operator_addr, + el_reader, + avs_registry_reader, + operator_id, + quorum_names, + avs_name: avs_name.to_owned(), + } } - pub fn set_stake(&self, quorum_number: &str, quorum_name: &str, value: f64) { - // Create the metric key with dynamic labels + pub fn set_stake(&self, quorum_number: &str, quorum_name: &str, avs_name: &str, value: f64) { + // Create the metric key with dynamic let key = Key::from_parts( "eigen_registered_stakes", vec![ Label::new("quorum_number", quorum_number.to_string()), Label::new("quorum_name", quorum_name.to_string()), + Label::new("avs_name", avs_name.to_string()), ], ); + gauge!(key.to_string()).set(value); self.logger.debug( &format!( - "set registered stakes , quorum_name: {} , quorum_number: {} , value: {} ", - quorum_name, quorum_number, value - ), + "set registered stakes , quorum_name: {} , quorum_number: {} , avs_name: {}, value: {}", + quorum_name, quorum_number, avs_name, value + ), "eigen-metrics-collectors-economic.set_stake", ); + } - // Register or retrieve the gauge with the specified key and set the value - metrics::gauge!(key.to_string(), value); + pub async fn collect(&mut self) -> Result<(), CollectorMetricError> { + let operator_is_frozen = self + .el_reader + .operator_is_frozen(self.operator_addr) + .await?; + + let mut operator_is_frozen_float = 0.0; + if operator_is_frozen { + operator_is_frozen_float = 1.0; + } + + gauge!("e_slashing_status").set(operator_is_frozen_float); + + self.init_operator_id().await.inspect_err(|e| { + self.logger.warn( + &format!("Failed to fetch and cache operator id. Skipping collection of registeredStake metric. , err {}", e), + "eigen-metrics-collectors-economic.collect" + ); + })?; + let quorum_stake_map = self + .avs_registry_reader + .get_operator_stake_in_quorums_of_operator_at_current_block(self.operator_id) + .await?; + for (quorum_num, stake) in quorum_stake_map { + let quorum_name_for_quorum_num = self.quorum_names.get(&(quorum_num as u64)); + let key; + if let Some(quorum_name) = quorum_name_for_quorum_num { + key = Key::from_parts( + "eigen_registered_stakes", + vec![ + Label::new("quorum_number", quorum_num.to_string()), + Label::new("quorum_name", quorum_name.to_string()), + Label::new("avs_name", self.avs_name.to_string()), + ], + ); + } else { + key = Key::from_parts( + "eigen_registered_stakes", + vec![ + Label::new("quorum_number", quorum_num.to_string()), + Label::new("quorum_name", "".to_string()), + Label::new("avs_name", self.avs_name.to_string()), + ], + ); + } + let u256_intermediate = U256::from_str(&stake.to_string())?; + gauge!(key.to_string()).set(f64::from(u256_intermediate)); + } + + Ok(()) + } + + pub async fn init_operator_id(&mut self) -> Result<(), CollectorMetricError> { + if self.operator_id.eq(&FixedBytes::default()) { + let operator_id = self + .avs_registry_reader + .get_operator_id(self.operator_addr) + .await?; + + if operator_id.eq(&FixedBytes::default()) { + return Err(CollectorMetricError::OperatorNotRegistered); + } + self.operator_id = operator_id; + return Ok(()); + } + Ok(()) } +} + +#[cfg(test)] +mod tests { + use std::collections::HashMap; + + use alloy_primitives::{Address, FixedBytes}; + use eigen_client_avsregistry::reader::AvsRegistryChainReader; + use eigen_logging::get_test_logger; + use eigen_testing_utils::anvil_constants; + + use crate::fake_collector::FakeCollector; + + #[tokio::test] + async fn test_init_operator_id() { + let operator_addr = Address::ZERO; + let operator_id = FixedBytes::<32>::default(); + let http_anvil = "http://localhost:8545"; + let avs_registry_reader = AvsRegistryChainReader::new( + get_test_logger(), + anvil_constants::get_registry_coordinator_address().await, + anvil_constants::get_operator_state_retriever_address().await, + http_anvil.to_string(), + ) + .await + .unwrap(); + + let quorums_names = HashMap::new(); + let avs_name = "eigensdk-rs"; + let mut collector = FakeCollector::new( + get_test_logger(), + operator_addr, + operator_id, + avs_registry_reader, + quorums_names, + avs_name, + ); - pub fn registered_stakes(&self) -> Gauge { - self.registered_stakes.registered_stake.clone() + assert!(collector.init_operator_id().await.is_err()); } } diff --git a/crates/metrics/collectors/rpc_calls/Cargo.toml b/crates/metrics/collectors/rpc_calls/Cargo.toml index 93fff7b1..364fc4a2 100644 --- a/crates/metrics/collectors/rpc_calls/Cargo.toml +++ b/crates/metrics/collectors/rpc_calls/Cargo.toml @@ -7,5 +7,4 @@ repository.workspace = true [dependencies] eigen-logging.workspace = true -eigen-metrics-derive.workspace = true metrics.workspace = true diff --git a/crates/metrics/collectors/rpc_calls/src/lib.rs b/crates/metrics/collectors/rpc_calls/src/lib.rs index a9153117..6983bcb9 100644 --- a/crates/metrics/collectors/rpc_calls/src/lib.rs +++ b/crates/metrics/collectors/rpc_calls/src/lib.rs @@ -4,57 +4,26 @@ )] #![cfg_attr(not(test), warn(unused_crate_dependencies))] use eigen_logging::logger::SharedLogger; -use eigen_metrics_derive::Metrics; -use metrics::{Counter, Histogram, Key, Label}; - -#[derive(Clone, Metrics)] -#[metrics(scope = "eigen.rpcmetrics")] -pub struct RpcCalls { - #[metric( - rename = "eigen_rpc_request_duration_seconds", - describe = " Duration of json-rpc in seconds from Ethereum Execution client " - )] - rpc_request_duration_seconds: Histogram, - #[metric( - rename = "eigen_rpc_request_total", - describe = "Total of json-rpc requests from Ethereum Execution client " - )] - rpc_request_total: Counter, -} +use metrics::{describe_counter, describe_histogram, Key, Label}; /// RpcCallsMetrics #[derive(Debug)] pub struct RpcCallsMetrics { - /// All things related to Metrics <> Rpc call Analytics - rpc_calls: RpcCalls, - logger: SharedLogger, } impl RpcCallsMetrics { pub fn new(logger: SharedLogger) -> Self { - let rpc_calls = Self { - rpc_calls: RpcCalls { - rpc_request_duration_seconds: metrics::register_histogram!( - "eigen_rpc_request_duration_seconds" - ), - rpc_request_total: metrics::register_counter!("eigen_rpc_request_total"), - }, - - logger, - }; - - RpcCalls::describe(); - - rpc_calls - } - - pub fn rpc_request_duration_seconds(&self) -> Histogram { - self.rpc_calls.rpc_request_duration_seconds.clone() - } + describe_histogram!( + "eigen_rpc_request_duration_seconds", + "Duration of json-rpc in seconds from Ethereum Execution client " + ); + describe_counter!( + "eigen_rpc_request_total", + "Total of json-rpc requests from Ethereum Execution client " + ); - pub fn rpc_request_total(&self) -> Counter { - self.rpc_calls.rpc_request_total.clone() + Self { logger } } /// set_rpc_request_duration_seconds @@ -67,12 +36,12 @@ impl RpcCallsMetrics { let key = Key::from_parts( "eigen_rpc_request_duration_seconds", vec![ - Label::new("method", method.to_string()), + Label::new("method ", method.to_string()), Label::new("client_version", client_version.to_string()), ], ); - metrics::histogram!(key.to_string(), duration); + metrics::histogram!(key.to_string()).record(duration); self.logger.debug( "set rpc requet duration seconds , methods : {} , client_version: {}, duration: {} ", "eigen-metrics-collectors-rpc-calls.set_rpc_request_duration_seconds", @@ -94,7 +63,7 @@ impl RpcCallsMetrics { ], ); - metrics::counter!(key.to_string(), rpc_request_total); + metrics::counter!(key.to_string()).absolute(rpc_request_total); self.logger.debug( "set rpc request total ", "eigen-metrics-collectors-rpc-calls.set_rpc_request_total", diff --git a/crates/metrics/metrics-derive/Cargo.toml b/crates/metrics/metrics-derive/Cargo.toml deleted file mode 100644 index 56f4ce65..00000000 --- a/crates/metrics/metrics-derive/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "eigen-metrics-derive" -version.workspace = true -edition.workspace = true -rust-version.workspace = true -repository.workspace = true - - -[lib] -proc-macro = true - -[dependencies] -once_cell.workspace = true -proc-macro2 = "1.0" -quote.workspace = true -regex = "1.6.0" -syn = { workspace = true, features = ["extra-traits"] } - -[dev-dependencies] -metrics.workspace = true -trybuild = "1.0" diff --git a/crates/metrics/metrics-derive/src/expand.rs b/crates/metrics/metrics-derive/src/expand.rs deleted file mode 100644 index a9a7dfaa..00000000 --- a/crates/metrics/metrics-derive/src/expand.rs +++ /dev/null @@ -1,458 +0,0 @@ -use once_cell::sync::Lazy; -use quote::{quote, ToTokens}; -use regex::Regex; -use syn::{ - punctuated::Punctuated, Attribute, Data, DeriveInput, Error, Expr, Field, Lit, LitBool, LitStr, - Meta, MetaNameValue, Result, Token, -}; - -use crate::{metric::Metric, with_attrs::WithAttrs}; - -/// Metric name regex according to Prometheus data model -/// -/// See -static METRIC_NAME_RE: Lazy = - Lazy::new(|| Regex::new(r"^[a-zA-Z_:.][a-zA-Z0-9_:.]*$").unwrap()); - -/// Supported metrics separators -const SUPPORTED_SEPARATORS: &[&str] = &[".", "_", ":"]; - -enum MetricField<'a> { - Included(Metric<'a>), - Skipped(&'a Field), -} - -impl<'a> MetricField<'a> { - fn field(&self) -> &'a Field { - match self { - MetricField::Included(Metric { field, .. }) | MetricField::Skipped(field) => field, - } - } -} - -pub(crate) fn derive(node: &DeriveInput) -> Result { - let ty = &node.ident; - let vis = &node.vis; - let ident_name = ty.to_string(); - - let metrics_attr = parse_metrics_attr(node)?; - let metric_fields = parse_metric_fields(node)?; - - let describe_doc = quote! { - /// Describe all exposed metrics. Internally calls `describe_*` macros from - /// the metrics crate according to the metric type. - /// - /// See - }; - let register_and_describe = match &metrics_attr.scope { - MetricsScope::Static(scope) => { - let (defaults, labeled_defaults, describes): (Vec<_>, Vec<_>, Vec<_>) = metric_fields - .iter() - .map(|metric| { - let field_name = &metric.field().ident; - match metric { - MetricField::Included(metric) => { - let metric_name = format!( - "{}{}{}", - scope.value(), - metrics_attr.separator(), - metric.name() - ); - let registrar = metric.register_stmt()?; - let describe = metric.describe_stmt()?; - let description = &metric.description; - Ok(( - quote! { - #field_name: #registrar(#metric_name), - }, - quote! { - #field_name: #registrar(#metric_name, labels.clone()), - }, - Some(quote! { - #describe(#metric_name, #description); - }), - )) - } - MetricField::Skipped(_) => Ok(( - quote! { - #field_name: Default::default(), - }, - quote! { - #field_name: Default::default(), - }, - None, - )), - } - }) - .collect::>>()? - .into_iter() - .fold((vec![], vec![], vec![]), |mut acc, x| { - acc.0.push(x.0); - acc.1.push(x.1); - if let Some(describe) = x.2 { - acc.2.push(describe); - } - acc - }); - - quote! { - impl Default for #ty { - fn default() -> Self { - #ty::describe(); - - Self { - #(#defaults)* - } - } - } - - impl #ty { - /// Create new instance of metrics with provided labels. - #vis fn new_with_labels(labels: impl metrics::IntoLabels + Clone) -> Self { - Self { - #(#labeled_defaults)* - } - } - - #describe_doc - #vis fn describe() { - #(#describes)* - } - } - } - } - MetricsScope::Dynamic => { - let (defaults, labeled_defaults, describes): (Vec<_>, Vec<_>, Vec<_>) = metric_fields - .iter() - .map(|metric| { - let field_name = &metric.field().ident; - match metric { - MetricField::Included(metric) => { - let name = metric.name(); - let separator = metrics_attr.separator(); - let metric_name = quote! { - format!("{}{}{}", scope, #separator, #name) - }; - - let registrar = metric.register_stmt()?; - let describe = metric.describe_stmt()?; - let description = &metric.description; - - Ok(( - quote! { - #field_name: #registrar(#metric_name), - }, - quote! { - #field_name: #registrar(#metric_name, labels.clone()), - }, - Some(quote! { - #describe(#metric_name, #description); - }), - )) - } - MetricField::Skipped(_) => Ok(( - quote! { - #field_name: Default::default(), - }, - quote! { - #field_name: Default::default(), - }, - None, - )), - } - }) - .collect::>>()? - .into_iter() - .fold((vec![], vec![], vec![]), |mut acc, x| { - acc.0.push(x.0); - acc.1.push(x.1); - if let Some(describe) = x.2 { - acc.2.push(describe); - } - acc - }); - - quote! { - impl #ty { - /// Create new instance of metrics with provided scope. - #vis fn new(scope: &str) -> Self { - #ty::describe(scope); - - Self { - #(#defaults)* - } - } - - /// Create new instance of metrics with provided labels. - #vis fn new_with_labels(scope: &str, labels: impl metrics::IntoLabels + Clone) -> Self { - Self { - #(#labeled_defaults)* - } - } - - #describe_doc - #vis fn describe(scope: &str) { - #(#describes)* - } - } - } - } - }; - Ok(quote! { - #register_and_describe - - impl std::fmt::Debug for #ty { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct(#ident_name).finish() - } - } - }) -} - -pub(crate) struct MetricsAttr { - pub(crate) scope: MetricsScope, - pub(crate) separator: Option, -} - -impl MetricsAttr { - const DEFAULT_SEPARATOR: &'static str = "."; - - fn separator(&self) -> String { - match &self.separator { - Some(sep) => sep.value(), - None => MetricsAttr::DEFAULT_SEPARATOR.to_owned(), - } - } -} - -pub(crate) enum MetricsScope { - Static(LitStr), - Dynamic, -} - -fn parse_metrics_attr(node: &DeriveInput) -> Result { - let metrics_attr = parse_single_required_attr(node, "metrics")?; - let parsed = - metrics_attr.parse_args_with(Punctuated::::parse_terminated)?; - let (mut scope, mut separator, mut dynamic) = (None, None, None); - for kv in parsed { - let lit = match kv.value { - Expr::Lit(ref expr) => &expr.lit, - _ => continue, - }; - if kv.path.is_ident("scope") { - if scope.is_some() { - return Err(Error::new_spanned(kv, "Duplicate `scope` value provided.")); - } - let scope_lit = parse_str_lit(lit)?; - validate_metric_name(&scope_lit)?; - scope = Some(scope_lit); - } else if kv.path.is_ident("separator") { - if separator.is_some() { - return Err(Error::new_spanned( - kv, - "Duplicate `separator` value provided.", - )); - } - let separator_lit = parse_str_lit(lit)?; - if !SUPPORTED_SEPARATORS.contains(&&*separator_lit.value()) { - return Err(Error::new_spanned( - kv, - format!( - "Unsupported `separator` value. Supported: {}.", - SUPPORTED_SEPARATORS - .iter() - .map(|sep| format!("`{sep}`")) - .collect::>() - .join(", ") - ), - )); - } - separator = Some(separator_lit); - } else if kv.path.is_ident("dynamic") { - if dynamic.is_some() { - return Err(Error::new_spanned(kv, "Duplicate `dynamic` flag provided.")); - } - dynamic = Some(parse_bool_lit(lit)?.value); - } else { - return Err(Error::new_spanned(kv, "Unsupported attribute entry.")); - } - } - - let scope = match (scope, dynamic) { - (Some(scope), None) | (Some(scope), Some(false)) => MetricsScope::Static(scope), - (None, Some(true)) => MetricsScope::Dynamic, - (Some(_), Some(_)) => { - return Err(Error::new_spanned( - node, - "`scope = ..` conflicts with `dynamic = true`.", - )) - } - _ => { - return Err(Error::new_spanned( - node, - "Either `scope = ..` or `dynamic = true` must be set.", - )) - } - }; - - Ok(MetricsAttr { scope, separator }) -} - -fn parse_metric_fields(node: &DeriveInput) -> Result>> { - let Data::Struct(ref data) = node.data else { - return Err(Error::new_spanned(node, "Only structs are supported.")); - }; - - let mut metrics = Vec::with_capacity(data.fields.len()); - for field in data.fields.iter() { - let (mut describe, mut rename, mut skip) = (None, None, false); - if let Some(metric_attr) = parse_single_attr(field, "metric")? { - let parsed = - metric_attr.parse_args_with(Punctuated::::parse_terminated)?; - for meta in parsed { - match meta { - Meta::Path(path) if path.is_ident("skip") => skip = true, - Meta::NameValue(kv) => { - let lit = match kv.value { - Expr::Lit(ref expr) => &expr.lit, - _ => continue, - }; - if kv.path.is_ident("describe") { - if describe.is_some() { - return Err(Error::new_spanned( - kv, - "Duplicate `describe` value provided.", - )); - } - describe = Some(parse_str_lit(lit)?); - } else if kv.path.is_ident("rename") { - if rename.is_some() { - return Err(Error::new_spanned( - kv, - "Duplicate `rename` value provided.", - )); - } - let rename_lit = parse_str_lit(lit)?; - validate_metric_name(&rename_lit)?; - rename = Some(rename_lit) - } else { - return Err(Error::new_spanned(kv, "Unsupported attribute entry.")); - } - } - _ => return Err(Error::new_spanned(meta, "Unsupported attribute entry.")), - } - } - } - - if skip { - metrics.push(MetricField::Skipped(field)); - continue; - } - - let description = match describe { - Some(lit_str) => lit_str.value(), - // Parse docs only if `describe` attribute was not provided - None => match parse_docs_to_string(field)? { - Some(docs_str) => docs_str, - None => { - return Err(Error::new_spanned( - field, - "Either doc comment or `describe = ..` must be set.", - )) - } - }, - }; - - metrics.push(MetricField::Included(Metric::new( - field, - description, - rename, - ))); - } - - Ok(metrics) -} - -fn validate_metric_name(name: &LitStr) -> Result<()> { - if METRIC_NAME_RE.is_match(&name.value()) { - Ok(()) - } else { - Err(Error::new_spanned( - name, - format!("Value must match regex {}", METRIC_NAME_RE.as_str()), - )) - } -} - -fn parse_single_attr<'a, T: WithAttrs + ToTokens>( - token: &'a T, - ident: &str, -) -> Result> { - let mut attr_iter = token.attrs().iter().filter(|a| a.path().is_ident(ident)); - if let Some(attr) = attr_iter.next() { - if let Some(next_attr) = attr_iter.next() { - Err(Error::new_spanned( - next_attr, - format!("Duplicate `#[{ident}(..)]` attribute provided."), - )) - } else { - Ok(Some(attr)) - } - } else { - Ok(None) - } -} - -fn parse_single_required_attr<'a, T: WithAttrs + ToTokens>( - token: &'a T, - ident: &str, -) -> Result<&'a Attribute> { - if let Some(attr) = parse_single_attr(token, ident)? { - Ok(attr) - } else { - Err(Error::new_spanned( - token, - format!("`#[{ident}(..)]` attribute must be provided."), - )) - } -} - -fn parse_docs_to_string(token: &T) -> Result> { - let mut doc_str = None; - for attr in token.attrs().iter() { - if let syn::Meta::NameValue(ref meta) = attr.meta { - if let Expr::Lit(ref lit) = meta.value { - if let Lit::Str(ref doc) = lit.lit { - let doc_value = doc.value().trim().to_string(); - doc_str = Some( - doc_str - .map(|prev_doc_value| format!("{prev_doc_value} {doc_value}")) - .unwrap_or(doc_value), - ); - } - } - } - } - Ok(doc_str) -} - -fn parse_str_lit(lit: &Lit) -> Result { - match lit { - Lit::Str(lit_str) => Ok(lit_str.to_owned()), - _ => Err(Error::new_spanned( - lit, - "Value **must** be a string literal.", - )), - } -} - -fn parse_bool_lit(lit: &Lit) -> Result { - match lit { - Lit::Bool(lit_bool) => Ok(lit_bool.to_owned()), - _ => Err(Error::new_spanned( - lit, - "Value **must** be a string literal.", - )), - } -} diff --git a/crates/metrics/metrics-derive/src/lib.rs b/crates/metrics/metrics-derive/src/lib.rs deleted file mode 100644 index 175e4460..00000000 --- a/crates/metrics/metrics-derive/src/lib.rs +++ /dev/null @@ -1,137 +0,0 @@ -#![doc( - html_logo_url = "https://github.com/Layr-Labs/eigensdk-rs/assets/91280922/bd13caec-3c00-4afc-839a-b83d2890beb5", - issue_tracker_base_url = "https://github.com/Layr-Labs/eigensdk-rs/issues/" -)] -#![cfg_attr(not(test), warn(unused_crate_dependencies))] - -use proc_macro::TokenStream; -use syn::{parse_macro_input, DeriveInput}; - -mod expand; -mod metric; -mod with_attrs; - -/// The [Metrics] derive macro instruments all of the struct fields and -/// creates a [Default] implementation for the struct registering all of -/// the metrics. -/// -/// Additionally, it creates a `describe` method on the struct, which -/// internally calls the describe statements for all metric fields. -/// -/// Sample usage: -/// ``` -/// use metrics::{Counter, Gauge, Histogram}; -/// use eigen_metrics_derive::Metrics; -/// -/// #[derive(Metrics)] -/// #[metrics(scope = "metrics_custom")] -/// pub struct CustomMetrics { -/// /// A gauge with doc comment description. -/// gauge: Gauge, -/// #[metric(rename = "second_gauge", describe = "A gauge with metric attribute description.")] -/// gauge2: Gauge, -/// /// Some doc comment -/// #[metric(describe = "Metric attribute description will be preferred over doc comment.")] -/// counter: Counter, -/// /// A renamed histogram. -/// #[metric(rename = "histogram")] -/// histo: Histogram, -/// } -/// ``` -/// -/// The example above will be expanded to: -/// ``` -/// pub struct CustomMetrics { -/// /// A gauge with doc comment description. -/// gauge: metrics::Gauge, -/// gauge2: metrics::Gauge, -/// /// Some doc comment -/// counter: metrics::Counter, -/// /// A renamed histogram. -/// histo: metrics::Histogram, -/// } -/// -/// impl Default for CustomMetrics { -/// fn default() -> Self { -/// Self { -/// gauge: metrics::register_gauge!("metrics_custom_gauge"), -/// gauge2: metrics::register_gauge!("metrics_custom_second_gauge"), -/// counter: metrics::register_counter!("metrics_custom_counter"), -/// histo: metrics::register_histogram!("metrics_custom_histogram"), -/// } -/// } -/// } -/// -/// impl CustomMetrics { -/// /// Describe all exposed metrics -/// pub fn describe() { -/// metrics::describe_gauge!( -/// "metrics_custom_gauge", -/// "A gauge with doc comment description." -/// ); -/// metrics::describe_gauge!( -/// "metrics_custom_second_gauge", -/// "A gauge with metric attribute description." -/// ); -/// metrics::describe_counter!( -/// "metrics_custom_counter", -/// "Metric attribute description will be preferred over doc comment." -/// ); -/// metrics::describe_histogram!("metrics_custom_histogram", "A renamed histogram."); -/// } -/// } -/// -/// impl std::fmt::Debug for CustomMetrics { -/// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { -/// f.debug_struct("CustomMetrics").finish() -/// } -/// } -/// ``` -/// -/// Similarly, you can derive metrics with "dynamic" scope, -/// meaning their scope can be set at the time of instantiation. -/// For example: -/// ``` -/// use eigen_metrics_derive::Metrics; -/// -/// #[derive(Metrics)] -/// #[metrics(dynamic = true)] -/// pub struct DynamicScopeMetrics { -/// /// A gauge with doc comment description. -/// gauge: metrics::Gauge, -/// } -/// ``` -/// -/// The example with dynamic scope will expand to -/// ``` -/// pub struct DynamicScopeMetrics { -/// /// A gauge with doc comment description. -/// gauge: metrics::Gauge, -/// } -/// -/// impl DynamicScopeMetrics { -/// pub fn new(scope: &str) -> Self { -/// Self { gauge: metrics::register_gauge!(format!("{}{}{}", scope, "_", "gauge")) } -/// } -/// -/// pub fn describe(scope: &str) { -/// metrics::describe_gauge!( -/// format!("{}{}{}", scope, "_", "gauge"), -/// "A gauge with doc comment description." -/// ); -/// } -/// } -/// -/// impl std::fmt::Debug for DynamicScopeMetrics { -/// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { -/// f.debug_struct("DynamicScopeMetrics").finish() -/// } -/// } -/// ``` -#[proc_macro_derive(Metrics, attributes(metrics, metric))] -pub fn derive_metrics(input: TokenStream) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - expand::derive(&input) - .unwrap_or_else(|err| err.to_compile_error()) - .into() -} diff --git a/crates/metrics/metrics-derive/src/metric.rs b/crates/metrics/metrics-derive/src/metric.rs deleted file mode 100644 index c0e635d2..00000000 --- a/crates/metrics/metrics-derive/src/metric.rs +++ /dev/null @@ -1,74 +0,0 @@ -use quote::quote; -use syn::{Error, Field, LitStr, Result, Type}; - -const COUNTER_TY: &str = "Counter"; -const HISTOGRAM_TY: &str = "Histogram"; -const GAUGE_TY: &str = "Gauge"; - -pub(crate) struct Metric<'a> { - pub(crate) field: &'a Field, - pub(crate) description: String, - rename: Option, -} - -impl<'a> Metric<'a> { - pub(crate) fn new(field: &'a Field, description: String, rename: Option) -> Self { - Self { - field, - description, - rename, - } - } - - pub(crate) fn name(&self) -> String { - match self.rename.as_ref() { - Some(name) => name.value(), - None => self - .field - .ident - .as_ref() - .map(ToString::to_string) - .unwrap_or_default(), - } - } - - pub(crate) fn register_stmt(&self) -> Result { - if let Type::Path(ref path_ty) = self.field.ty { - if let Some(last) = path_ty.path.segments.last() { - let registrar = match last.ident.to_string().as_str() { - COUNTER_TY => quote! { metrics::register_counter! }, - HISTOGRAM_TY => quote! { metrics::register_histogram! }, - GAUGE_TY => quote! { metrics::register_gauge! }, - _ => return Err(Error::new_spanned(path_ty, "Unsupported metric type")), - }; - - return Ok(quote! { #registrar }); - } - } - - Err(Error::new_spanned( - &self.field.ty, - "Unsupported metric type", - )) - } - - pub(crate) fn describe_stmt(&self) -> Result { - if let Type::Path(ref path_ty) = self.field.ty { - if let Some(last) = path_ty.path.segments.last() { - let descriptor = match last.ident.to_string().as_str() { - COUNTER_TY => quote! { metrics::describe_counter! }, - HISTOGRAM_TY => quote! { metrics::describe_histogram! }, - GAUGE_TY => quote! { metrics::describe_gauge! }, - _ => return Err(Error::new_spanned(path_ty, "Unsupported metric type")), - }; - - return Ok(quote! { #descriptor }); - } - } - - Err(Error::new_spanned( - &self.field.ty, - "Unsupported metric type", - )) - } -} diff --git a/crates/metrics/metrics-derive/src/with_attrs.rs b/crates/metrics/metrics-derive/src/with_attrs.rs deleted file mode 100644 index 9095d996..00000000 --- a/crates/metrics/metrics-derive/src/with_attrs.rs +++ /dev/null @@ -1,17 +0,0 @@ -use syn::{Attribute, DeriveInput, Field}; - -pub(crate) trait WithAttrs { - fn attrs(&self) -> &[Attribute]; -} - -impl WithAttrs for DeriveInput { - fn attrs(&self) -> &[Attribute] { - &self.attrs - } -} - -impl WithAttrs for Field { - fn attrs(&self) -> &[Attribute] { - &self.attrs - } -} diff --git a/crates/metrics/src/eigenmetrics.rs b/crates/metrics/src/eigenmetrics.rs index 102da666..5597c057 100644 --- a/crates/metrics/src/eigenmetrics.rs +++ b/crates/metrics/src/eigenmetrics.rs @@ -1,51 +1,22 @@ use eigen_logging::logger::SharedLogger; -use eigen_metrics_derive::Metrics; -use metrics::Gauge; +use metrics::{describe_gauge, gauge}; use std::fmt::Debug; -/// TODO(supernova): fee_earned_total is not yet implemented . As its not yet turned on -// Performance Metrics -#[derive(Clone, Metrics)] -#[metrics(scope = "eigenmetrics.performancemetrics")] -pub struct EigenPerformance { - /// performance score - #[metric( - rename = "eigen_performance_score", - describe = " A gauge with performance score " - )] - performance_score: Gauge, -} // TODO(supernova) : feeearnedtotal is not turned on yet,so not implemented yet // https://github.com/Layr-Labs/eigensdk-go/blob/67787e959b727b115628a34e796df3a9ef42f646/metrics/eigenmetrics.go#L23 #[derive(Debug)] pub struct EigenPerformanceMetrics { - /// The performance metric is a score between 0 and 100 and each developer can define their own way of calculating the score. - /// The score is calculated based on the performance of the AVS Node and the performance of the backing services. - eigen_metrics: EigenPerformance, - logger: SharedLogger, } impl EigenPerformanceMetrics { + /// TODO(supernova): fee_earned_total is not yet implemented . As its not yet turned on + /// The performance metric is a score between 0 and 100 and each developer can define their own way of calculating the score. + /// The score is calculated based on the performance of the AVS Node and the performance of the backing services. pub fn new(logger: SharedLogger) -> Self { - let eigen_metrics_metrics = Self { - eigen_metrics: EigenPerformance { - performance_score: metrics::register_gauge!("eigen_performance_score"), - }, - logger, - }; - EigenPerformance::describe(); - eigen_metrics_metrics - .eigen_metrics - .performance_score - .set(100_f64); - eigen_metrics_metrics - } - - /// Get the performance score - /// To set the performance score , use set() function available in [`Gauge`] - pub fn performance_score(&self) -> Gauge { - self.eigen_metrics.performance_score.clone() + describe_gauge!("eigen_performance_score", "A gauge with performance score"); + gauge!("eigen_performance_score").set(100_f64); + Self { logger } } pub fn set_performance_score(&self, score: f64) { @@ -53,6 +24,6 @@ impl EigenPerformanceMetrics { &format!("set performance score , new score {}", score), "eigen-metrics.set_performance_score", ); - self.eigen_metrics.performance_score.set(score) + gauge!("eigen_performance_score").set(score); } } diff --git a/crates/metrics/src/prometheus.rs b/crates/metrics/src/prometheus.rs index 300e42ad..4e47e776 100644 --- a/crates/metrics/src/prometheus.rs +++ b/crates/metrics/src/prometheus.rs @@ -1,55 +1,33 @@ -use eigen_logging::logger::SharedLogger; -use hyper::{ - body::Body, - service::{make_service_fn, service_fn}, - Request, Response, Server, -}; -use metrics_exporter_prometheus::{PrometheusBuilder, PrometheusHandle}; -use std::{convert::Infallible, net::SocketAddr}; +use metrics_exporter_prometheus::PrometheusBuilder; +use metrics_util::MetricKindMask; +use std::{net::SocketAddr, time::Duration}; #[allow(unused)] -fn init_registry() -> PrometheusHandle { - let recorder = PrometheusBuilder::new().build_recorder(); - let handle = recorder.handle(); - let boxed_recorder = Box::new(recorder); - let static_recorder: &'static dyn metrics::Recorder = Box::leak(boxed_recorder); - metrics::set_recorder(static_recorder).expect("failed to set metrics recorder"); - handle -} - -#[allow(unused)] -async fn serve_metrics( - addr: SocketAddr, - handle: PrometheusHandle, - logger: SharedLogger, -) -> eyre::Result<()> { - logger.info( - &format!("Starting metrics server at port {}", addr), - "eigen-metrics.serve_metrics", - ); - let make_svc = make_service_fn(move |_| { - let handle = handle.clone(); - - async move { - Ok::<_, Infallible>(service_fn(move |_: Request| { - let metrics = handle.render(); - async move { Ok::<_, Infallible>(Response::new(Body::from(metrics))) } - })) - } - }); - - let server = Server::bind(&addr).serve(make_svc); - server.await?; - Ok(()) +pub fn init_registry(socket_addr: SocketAddr) { + PrometheusBuilder::new() + .with_http_listener(socket_addr) + .idle_timeout( + MetricKindMask::COUNTER | MetricKindMask::HISTOGRAM, + Some(Duration::from_secs(10)), + ) + .install() + .expect("failed to install Prometheus recorder"); } #[cfg(test)] mod tests { + use std::collections::HashMap; + use super::*; use crate::eigenmetrics::EigenPerformanceMetrics; - use eigen_metrics_collectors_economic::RegisteredStakesMetrics; + use alloy_primitives::Address; + use alloy_primitives::FixedBytes; + use eigen_client_avsregistry::reader::AvsRegistryChainReader; + use eigen_metrics_collectors_economic::fake_collector::FakeCollector; use eigen_metrics_collectors_rpc_calls::RpcCallsMetrics; + use eigen_testing_utils::anvil_constants; + use num_bigint::BigInt; use tokio::time::sleep; use tokio::time::Duration; @@ -57,20 +35,58 @@ mod tests { async fn test_prometheus_server() { use eigen_logging::get_test_logger; let socket: SocketAddr = "127.0.0.1:9091".parse().unwrap(); - let handle = init_registry(); + init_registry(socket); + + let operator_addr = Address::ZERO; + let operator_id = FixedBytes::<32>::default(); + let http_anvil = "http://localhost:8545"; + let avs_registry_reader = AvsRegistryChainReader::new( + get_test_logger(), + anvil_constants::get_registry_coordinator_address().await, + anvil_constants::get_operator_state_retriever_address().await, + http_anvil.to_string(), + ) + .await + .unwrap(); - // Initialize EigenMetrics + let mut quorums_names = HashMap::new(); + quorums_names.insert(1, "rust".to_string()); + let avs_name = "eigensdk-rs"; + let mut collector = FakeCollector::new( + get_test_logger(), + operator_addr, + operator_id, + avs_registry_reader, + quorums_names, + avs_name, + ); + + collector.set_stake("1", "first", avs_name, 2.0); + sleep(Duration::from_secs(1)).await; + let client = reqwest::Client::new(); + let mut body = get_metrics_body(&client, "http://127.0.0.1:9091/metrics").await; + + assert!(body.contains("eigen_registered_stakes")); + assert!(body.contains("quorum_number___1")); + assert!(body.contains("quorum_name___first")); + assert!(body.contains("avs_name___eigensdk_rs")); + assert!(body.contains("eigen_registered_stakes___quorum_number___1__quorum_name___first__avs_name___eigensdk_rs__ 2")); + + let is_operator_frozen: bool = true; + let mut quorum_stake_map = HashMap::new(); + quorum_stake_map.insert(1, BigInt::from(23)); + let _ = collector + .collect(is_operator_frozen, quorum_stake_map) + .await; + + body = get_metrics_body(&client, "http://127.0.0.1:9091/metrics").await; + + assert!(body.contains("eigen_registered_stakes___quorum_number___1__quorum_name___rust__avs_name___eigensdk_rs__ 23")); + + // Initialize all the metrics let metrics = EigenPerformanceMetrics::new(get_test_logger()); - let registered_metrics = RegisteredStakesMetrics::new(get_test_logger()); let rpc_calls = RpcCallsMetrics::new(get_test_logger()); - // Run the metrics server in a background task - let server_handle = tokio::spawn(async move { - serve_metrics(socket, handle, get_test_logger()) - .await - .unwrap(); - }); - sleep(Duration::from_secs(1)).await; async fn get_metrics_body(client: &reqwest::Client, url: &str) -> String { @@ -87,21 +103,15 @@ mod tests { let mut body = resp.text().await.unwrap(); assert!(body.contains("eigen_performance_score 100")); - metrics.performance_score().set(80.0); + metrics.set_performance_score(80.0); rpc_calls.set_rpc_request_duration_seconds("eth_getBlockByNumber", "rethv1.0.3", 100.0); rpc_calls.set_rpc_request_total("eth_getBlockByNumber", "rethv1.0.3", 10); - registered_metrics.set_stake("4th", "hello Eigen", 8.0); sleep(Duration::from_secs(1)).await; body = get_metrics_body(&client, "http://127.0.0.1:9091/metrics").await; assert!(body.contains("eigen_performance_score 80")); - assert!(body.contains( - "Key_eigen_registered_stakes___quorum_number___4th__quorum_name___hello_Eigen__ 8" - )); - assert!(body.contains("eigen_rpc_request_duration_seconds___method___eth_getBlockByNumber__client_version___rethv1_0_3__{quantile=\"1\"} 100")); + assert!(body.contains("eigen_rpc_request_duration_seconds___method____eth_getBlockByNumber__client_version___rethv1_0_3__{quantile=\"1\"} 100")); assert!(body.contains("eigen_rpc_request_total___method___eth_getBlockByNumber__client_version___rethv1_0_3__ 10")); - // Shutdown the server - server_handle.abort(); } }