diff --git a/BUILD.bazel b/BUILD.bazel index 85e25555..d239ce4f 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -27,6 +27,7 @@ basic_naming( pkg_tar( name = "many-rs-tar", srcs = [ + "//src/event-parser", "//src/genesis-from-db", "//src/http-proxy", "//src/idstore-export", diff --git a/Cargo.Bazel.lock b/Cargo.Bazel.lock index 06b0ef2d..a9c35d26 100644 --- a/Cargo.Bazel.lock +++ b/Cargo.Bazel.lock @@ -37,6 +37,21 @@ dependencies = [ "memchr", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" version = "0.5.0" @@ -656,11 +671,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", + "wasm-bindgen", + "windows-link", ] [[package]] @@ -1020,6 +1040,27 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "382ce8820a5bb815055d3553a610e8cb542b2d767bbacea99038afda96cd760d" +[[package]] +name = "csv" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +dependencies = [ + "memchr", +] + [[package]] name = "ct-logs" version = "0.8.0" @@ -1551,6 +1592,37 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-parser" +version = "0.3.0" +dependencies = [ + "anyhow", + "base64 0.21.4", + "chrono", + "clap 3.2.25", + "const_format", + "csv", + "hex", + "indicatif", + "many-cli-helpers", + "many-client", + "many-error", + "many-identity", + "many-identity-dsa", + "many-identity-hsm", + "many-modules", + "many-protocol", + "many-types", + "minicbor", + "serde", + "serde_derive", + "serde_json", + "strum 0.24.1", + "strum_macros 0.24.3", + "tracing", + "tracing-subscriber", +] + [[package]] name = "eyre" version = "0.6.8" @@ -2206,6 +2278,29 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2395,10 +2490,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -5708,23 +5804,24 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if 1.0.0", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn 2.0.37", @@ -5745,9 +5842,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5755,9 +5852,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -5768,9 +5865,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web" @@ -5951,6 +6051,21 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-sys" version = "0.45.0" @@ -5999,6 +6114,22 @@ dependencies = [ "windows_x86_64_msvc 0.48.5", ] +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "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.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -6011,6 +6142,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -6023,6 +6160,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -6035,6 +6178,18 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -6047,6 +6202,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -6059,6 +6220,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -6071,6 +6238,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -6083,6 +6256,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "winnow" version = "0.5.15" diff --git a/Cargo.lock b/Cargo.lock index 20eb50f7..c5e524cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -63,6 +63,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" version = "0.3.2" @@ -676,12 +685,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", + "wasm-bindgen", + "windows-link", ] [[package]] @@ -1043,6 +1056,27 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "382ce8820a5bb815055d3553a610e8cb542b2d767bbacea99038afda96cd760d" +[[package]] +name = "csv" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +dependencies = [ + "memchr", +] + [[package]] name = "ct-logs" version = "0.8.0" @@ -1568,6 +1602,37 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-parser" +version = "0.3.0" +dependencies = [ + "anyhow", + "base64 0.21.2", + "chrono", + "clap 3.2.25", + "const_format", + "csv", + "hex", + "indicatif", + "many-cli-helpers", + "many-client", + "many-error", + "many-identity", + "many-identity-dsa", + "many-identity-hsm", + "many-modules", + "many-protocol", + "many-types", + "minicbor", + "serde", + "serde_derive", + "serde_json", + "strum 0.24.1", + "strum_macros 0.24.3", + "tracing", + "tracing-subscriber", +] + [[package]] name = "eyre" version = "0.6.8" @@ -2231,6 +2296,29 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2424,10 +2512,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.63" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -5728,23 +5817,24 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.86" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if 1.0.0", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.86" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn 2.0.18", @@ -5765,9 +5855,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.86" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5775,9 +5865,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.86" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -5788,9 +5878,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.86" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web" @@ -5970,6 +6063,21 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-sys" version = "0.42.0" @@ -6033,6 +6141,22 @@ dependencies = [ "windows_x86_64_msvc 0.48.0", ] +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "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.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -6045,6 +6169,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -6057,6 +6187,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -6069,6 +6205,18 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -6081,6 +6229,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -6093,6 +6247,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -6105,6 +6265,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -6117,6 +6283,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "winnow" version = "0.4.6" diff --git a/Cargo.toml b/Cargo.toml index d6c2dfce..a0c2bacd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ resolver = "2" members = [ + "src/event-parser", "src/genesis-from-db", "src/http-proxy", "src/idstore-export", diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index 08c81ce1..78ade21f 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -51,6 +51,7 @@ crates_repository( lockfile = "//:cargo-bazel-lock.json", manifests = [ "//:Cargo.toml", + "//src/event-parser:Cargo.toml", "//src/genesis-from-db:Cargo.toml", "//src/http-proxy:Cargo.toml", "//src/idstore-export:Cargo.toml", diff --git a/cargo-bazel-lock.json b/cargo-bazel-lock.json index 9c22426b..1d4a24b5 100644 --- a/cargo-bazel-lock.json +++ b/cargo-bazel-lock.json @@ -1,5 +1,5 @@ { - "checksum": "268010f3e6c366c93817b3ee83579be42fbf0762c966e091e0c3a52854ff0af3", + "checksum": "397d0ef584a38fc5cd2ef9d5d06d6aec1e1511ad2dd6175b814a5e172bdfaa09", "crates": { "addr2line 0.21.0": { "name": "addr2line", @@ -167,6 +167,75 @@ }, "license": "Unlicense OR MIT" }, + "android-tzdata 0.1.1": { + "name": "android-tzdata", + "version": "0.1.1", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/android-tzdata/0.1.1/download", + "sha256": "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + } + }, + "targets": [ + { + "Library": { + "crate_name": "android_tzdata", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "android_tzdata", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2018", + "version": "0.1.1" + }, + "license": "MIT OR Apache-2.0" + }, + "android_system_properties 0.1.5": { + "name": "android_system_properties", + "version": "0.1.5", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/android_system_properties/0.1.5/download", + "sha256": "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" + } + }, + "targets": [ + { + "Library": { + "crate_name": "android_system_properties", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "android_system_properties", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "libc 0.2.148", + "target": "libc" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.5" + }, + "license": "MIT/Apache-2.0" + }, "anstream 0.5.0": { "name": "anstream", "version": "0.5.0", @@ -3199,7 +3268,7 @@ "target": "bs58" }, { - "id": "chrono 0.4.31", + "id": "chrono 0.4.41", "target": "chrono" }, { @@ -3398,13 +3467,13 @@ }, "license": "MIT/Apache-2.0" }, - "chrono 0.4.31": { + "chrono 0.4.41": { "name": "chrono", - "version": "0.4.31", + "version": "0.4.41", "repository": { "Http": { - "url": "https://static.crates.io/crates/chrono/0.4.31/download", - "sha256": "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" + "url": "https://static.crates.io/crates/chrono/0.4.41/download", + "sha256": "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" } }, "targets": [ @@ -3425,7 +3494,19 @@ ], "crate_features": { "common": [ - "alloc" + "alloc", + "android-tzdata", + "clock", + "default", + "iana-time-zone", + "js-sys", + "now", + "oldtime", + "std", + "wasm-bindgen", + "wasmbind", + "winapi", + "windows-link" ], "selects": {} }, @@ -3436,10 +3517,39 @@ "target": "num_traits" } ], - "selects": {} + "selects": { + "cfg(all(target_arch = \"wasm32\", not(any(target_os = \"emscripten\", target_os = \"wasi\"))))": [ + { + "id": "js-sys 0.3.77", + "target": "js_sys" + }, + { + "id": "wasm-bindgen 0.2.100", + "target": "wasm_bindgen" + } + ], + "cfg(target_os = \"android\")": [ + { + "id": "android-tzdata 0.1.1", + "target": "android_tzdata" + } + ], + "cfg(unix)": [ + { + "id": "iana-time-zone 0.1.61", + "target": "iana_time_zone" + } + ], + "cfg(windows)": [ + { + "id": "windows-link 0.1.3", + "target": "windows_link" + } + ] + } }, "edition": "2021", - "version": "0.4.31" + "version": "0.4.41" }, "license": "MIT OR Apache-2.0" }, @@ -5374,19 +5484,19 @@ }, "license": "MIT/Apache-2.0" }, - "ct-logs 0.8.0": { - "name": "ct-logs", - "version": "0.8.0", + "csv 1.3.1": { + "name": "csv", + "version": "1.3.1", "repository": { "Http": { - "url": "https://static.crates.io/crates/ct-logs/0.8.0/download", - "sha256": "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" + "url": "https://static.crates.io/crates/csv/1.3.1/download", + "sha256": "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" } }, "targets": [ { "Library": { - "crate_name": "ct_logs", + "crate_name": "csv", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -5394,7 +5504,7 @@ } } ], - "library_target_name": "ct_logs", + "library_target_name": "csv", "common_attrs": { "compile_data_glob": [ "**" @@ -5402,30 +5512,42 @@ "deps": { "common": [ { - "id": "sct 0.6.1", - "target": "sct" + "id": "csv-core 0.1.12", + "target": "csv_core" + }, + { + "id": "itoa 1.0.9", + "target": "itoa" + }, + { + "id": "ryu 1.0.15", + "target": "ryu" + }, + { + "id": "serde 1.0.163", + "target": "serde" } ], "selects": {} }, - "edition": "2018", - "version": "0.8.0" + "edition": "2021", + "version": "1.3.1" }, - "license": "Apache-2.0/ISC/MIT" + "license": "Unlicense/MIT" }, - "cucumber 0.19.1": { - "name": "cucumber", - "version": "0.19.1", + "csv-core 0.1.12": { + "name": "csv-core", + "version": "0.1.12", "repository": { "Http": { - "url": "https://static.crates.io/crates/cucumber/0.19.1/download", - "sha256": "a845da7c9fb958144700201d22e3f61f55114f9e269c13f03fe179d9da500984" + "url": "https://static.crates.io/crates/csv-core/0.1.12/download", + "sha256": "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" } }, "targets": [ { "Library": { - "crate_name": "cucumber", + "crate_name": "csv_core", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -5433,124 +5555,77 @@ } } ], - "library_target_name": "cucumber", + "library_target_name": "csv_core", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default", - "macros" + "default" ], "selects": {} }, "deps": { "common": [ { - "id": "anyhow 1.0.75", - "target": "anyhow" - }, - { - "id": "atty 0.2.14", - "target": "atty" - }, - { - "id": "clap 4.4.4", - "target": "clap" - }, - { - "id": "console 0.15.7", - "target": "console" - }, - { - "id": "cucumber-expressions 0.2.1", - "target": "cucumber_expressions" - }, - { - "id": "drain_filter_polyfill 0.1.3", - "target": "drain_filter_polyfill" - }, - { - "id": "either 1.9.0", - "target": "either" - }, - { - "id": "futures 0.3.28", - "target": "futures" - }, - { - "id": "gherkin 0.13.0", - "target": "gherkin" - }, - { - "id": "globwalk 0.8.1", - "target": "globwalk" - }, - { - "id": "humantime 2.1.0", - "target": "humantime" - }, - { - "id": "inventory 0.3.12", - "target": "inventory" - }, - { - "id": "itertools 0.10.5", - "target": "itertools" - }, - { - "id": "linked-hash-map 0.5.6", - "target": "linked_hash_map" - }, - { - "id": "once_cell 1.18.0", - "target": "once_cell" - }, - { - "id": "regex 1.9.5", - "target": "regex" + "id": "memchr 2.6.3", + "target": "memchr" } ], "selects": {} }, - "edition": "2021", - "proc_macro_deps": { + "edition": "2018", + "version": "0.1.12" + }, + "license": "Unlicense/MIT" + }, + "ct-logs 0.8.0": { + "name": "ct-logs", + "version": "0.8.0", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/ct-logs/0.8.0/download", + "sha256": "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" + } + }, + "targets": [ + { + "Library": { + "crate_name": "ct_logs", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "ct_logs", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { "common": [ { - "id": "async-trait 0.1.73", - "target": "async_trait" - }, - { - "id": "cucumber-codegen 0.19.1", - "target": "cucumber_codegen" - }, - { - "id": "derive_more 0.99.17", - "target": "derive_more" - }, - { - "id": "sealed 0.4.0", - "target": "sealed" - }, - { - "id": "smart-default 0.6.0", - "target": "smart_default" + "id": "sct 0.6.1", + "target": "sct" } ], "selects": {} }, - "version": "0.19.1" + "edition": "2018", + "version": "0.8.0" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0/ISC/MIT" }, - "cucumber 0.20.0": { + "cucumber 0.19.1": { "name": "cucumber", - "version": "0.20.0", + "version": "0.19.1", "repository": { "Http": { - "url": "https://static.crates.io/crates/cucumber/0.20.0/download", - "sha256": "0ead33440b8c33da870588443d745a0f23de153013fe847ae71073d176f75293" + "url": "https://static.crates.io/crates/cucumber/0.19.1/download", + "sha256": "a845da7c9fb958144700201d22e3f61f55114f9e269c13f03fe179d9da500984" } }, "targets": [ @@ -5572,9 +5647,7 @@ "crate_features": { "common": [ "default", - "libtest", - "macros", - "timestamps" + "macros" ], "selects": {} }, @@ -5584,6 +5657,10 @@ "id": "anyhow 1.0.75", "target": "anyhow" }, + { + "id": "atty 0.2.14", + "target": "atty" + }, { "id": "clap 4.4.4", "target": "clap" @@ -5593,7 +5670,136 @@ "target": "console" }, { - "id": "cucumber-expressions 0.3.0", + "id": "cucumber-expressions 0.2.1", + "target": "cucumber_expressions" + }, + { + "id": "drain_filter_polyfill 0.1.3", + "target": "drain_filter_polyfill" + }, + { + "id": "either 1.9.0", + "target": "either" + }, + { + "id": "futures 0.3.28", + "target": "futures" + }, + { + "id": "gherkin 0.13.0", + "target": "gherkin" + }, + { + "id": "globwalk 0.8.1", + "target": "globwalk" + }, + { + "id": "humantime 2.1.0", + "target": "humantime" + }, + { + "id": "inventory 0.3.12", + "target": "inventory" + }, + { + "id": "itertools 0.10.5", + "target": "itertools" + }, + { + "id": "linked-hash-map 0.5.6", + "target": "linked_hash_map" + }, + { + "id": "once_cell 1.18.0", + "target": "once_cell" + }, + { + "id": "regex 1.9.5", + "target": "regex" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "async-trait 0.1.73", + "target": "async_trait" + }, + { + "id": "cucumber-codegen 0.19.1", + "target": "cucumber_codegen" + }, + { + "id": "derive_more 0.99.17", + "target": "derive_more" + }, + { + "id": "sealed 0.4.0", + "target": "sealed" + }, + { + "id": "smart-default 0.6.0", + "target": "smart_default" + } + ], + "selects": {} + }, + "version": "0.19.1" + }, + "license": "MIT OR Apache-2.0" + }, + "cucumber 0.20.0": { + "name": "cucumber", + "version": "0.20.0", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/cucumber/0.20.0/download", + "sha256": "0ead33440b8c33da870588443d745a0f23de153013fe847ae71073d176f75293" + } + }, + "targets": [ + { + "Library": { + "crate_name": "cucumber", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "cucumber", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "libtest", + "macros", + "timestamps" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "anyhow 1.0.75", + "target": "anyhow" + }, + { + "id": "clap 4.4.4", + "target": "clap" + }, + { + "id": "console 0.15.7", + "target": "console" + }, + { + "id": "cucumber-expressions 0.3.0", "target": "cucumber_expressions" }, { @@ -8089,6 +8295,95 @@ }, "license": "Apache-2.0 OR MIT" }, + "event-parser 0.3.0": { + "name": "event-parser", + "version": "0.3.0", + "repository": null, + "targets": [], + "library_target_name": null, + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "anyhow 1.0.75", + "target": "anyhow" + }, + { + "id": "base64 0.21.4", + "target": "base64" + }, + { + "id": "chrono 0.4.41", + "target": "chrono" + }, + { + "id": "clap 3.2.25", + "target": "clap" + }, + { + "id": "const_format 0.2.31", + "target": "const_format" + }, + { + "id": "csv 1.3.1", + "target": "csv" + }, + { + "id": "hex 0.4.3", + "target": "hex" + }, + { + "id": "indicatif 0.17.6", + "target": "indicatif" + }, + { + "id": "minicbor 0.19.1", + "target": "minicbor" + }, + { + "id": "serde 1.0.163", + "target": "serde" + }, + { + "id": "serde_json 1.0.99", + "target": "serde_json" + }, + { + "id": "strum 0.24.1", + "target": "strum" + }, + { + "id": "tracing 0.1.37", + "target": "tracing" + }, + { + "id": "tracing-subscriber 0.3.17", + "target": "tracing_subscriber" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "serde_derive 1.0.163", + "target": "serde_derive" + }, + { + "id": "strum_macros 0.24.3", + "target": "strum_macros" + } + ], + "selects": {} + }, + "version": "0.3.0" + }, + "license": null + }, "eyre 0.6.8": { "name": "eyre", "version": "0.6.8", @@ -9682,11 +9977,11 @@ "selects": { "cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\"))": [ { - "id": "js-sys 0.3.64", + "id": "js-sys 0.3.77", "target": "js_sys" }, { - "id": "wasm-bindgen 0.2.87", + "id": "wasm-bindgen 0.2.100", "target": "wasm_bindgen" } ], @@ -11506,6 +11801,143 @@ }, "license": "MIT/Apache-2.0" }, + "iana-time-zone 0.1.61": { + "name": "iana-time-zone", + "version": "0.1.61", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/iana-time-zone/0.1.61/download", + "sha256": "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" + } + }, + "targets": [ + { + "Library": { + "crate_name": "iana_time_zone", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "iana_time_zone", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "fallback" + ], + "selects": {} + }, + "deps": { + "common": [], + "selects": { + "cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))": [ + { + "id": "js-sys 0.3.77", + "target": "js_sys" + }, + { + "id": "wasm-bindgen 0.2.100", + "target": "wasm_bindgen" + } + ], + "cfg(any(target_os = \"macos\", target_os = \"ios\"))": [ + { + "id": "core-foundation-sys 0.8.4", + "target": "core_foundation_sys" + } + ], + "cfg(target_os = \"android\")": [ + { + "id": "android_system_properties 0.1.5", + "target": "android_system_properties" + } + ], + "cfg(target_os = \"haiku\")": [ + { + "id": "iana-time-zone-haiku 0.1.2", + "target": "iana_time_zone_haiku" + } + ], + "cfg(target_os = \"windows\")": [ + { + "id": "windows-core 0.52.0", + "target": "windows_core" + } + ] + } + }, + "edition": "2018", + "version": "0.1.61" + }, + "license": "MIT OR Apache-2.0" + }, + "iana-time-zone-haiku 0.1.2": { + "name": "iana-time-zone-haiku", + "version": "0.1.2", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/iana-time-zone-haiku/0.1.2/download", + "sha256": "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" + } + }, + "targets": [ + { + "Library": { + "crate_name": "iana_time_zone_haiku", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "iana_time_zone_haiku", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "iana-time-zone-haiku 0.1.2", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.2" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "cc 1.0.83", + "target": "cc" + } + ], + "selects": {} + } + }, + "license": "MIT OR Apache-2.0" + }, "ident_case 1.0.1": { "name": "ident_case", "version": "1.0.1", @@ -12487,13 +12919,13 @@ }, "license": "MIT/Apache-2.0" }, - "js-sys 0.3.64": { + "js-sys 0.3.77": { "name": "js-sys", - "version": "0.3.64", + "version": "0.3.77", "repository": { "Http": { - "url": "https://static.crates.io/crates/js-sys/0.3.64/download", - "sha256": "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" + "url": "https://static.crates.io/crates/js-sys/0.3.77/download", + "sha256": "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" } }, "targets": [ @@ -12512,19 +12944,30 @@ "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "wasm-bindgen 0.2.87", + "id": "once_cell 1.18.0", + "target": "once_cell" + }, + { + "id": "wasm-bindgen 0.2.100", "target": "wasm_bindgen" } ], "selects": {} }, - "edition": "2018", - "version": "0.3.64" + "edition": "2021", + "version": "0.3.77" }, - "license": "MIT/Apache-2.0" + "license": "MIT OR Apache-2.0" }, "json5 0.4.1": { "name": "json5", @@ -21386,7 +21829,7 @@ ], "cfg(target_arch = \"wasm32\")": [ { - "id": "js-sys 0.3.64", + "id": "js-sys 0.3.77", "target": "js_sys" }, { @@ -21394,7 +21837,7 @@ "target": "serde_json" }, { - "id": "wasm-bindgen 0.2.87", + "id": "wasm-bindgen 0.2.100", "target": "wasm_bindgen" }, { @@ -29169,13 +29612,13 @@ }, "license": "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT" }, - "wasm-bindgen 0.2.87": { + "wasm-bindgen 0.2.100": { "name": "wasm-bindgen", - "version": "0.2.87", + "version": "0.2.100", "repository": { "Http": { - "url": "https://static.crates.io/crates/wasm-bindgen/0.2.87/download", - "sha256": "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" + "url": "https://static.crates.io/crates/wasm-bindgen/0.2.100/download", + "sha256": "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" } }, "targets": [ @@ -29206,7 +29649,8 @@ "crate_features": { "common": [ "default", - "spans", + "msrv", + "rustversion", "std" ], "selects": {} @@ -29218,38 +29662,46 @@ "target": "cfg_if" }, { - "id": "wasm-bindgen 0.2.87", + "id": "once_cell 1.18.0", + "target": "once_cell" + }, + { + "id": "wasm-bindgen 0.2.100", "target": "build_script_build" } ], "selects": {} }, - "edition": "2018", + "edition": "2021", "proc_macro_deps": { "common": [ { - "id": "wasm-bindgen-macro 0.2.87", + "id": "rustversion 1.0.14", + "target": "rustversion" + }, + { + "id": "wasm-bindgen-macro 0.2.100", "target": "wasm_bindgen_macro" } ], "selects": {} }, - "version": "0.2.87" + "version": "0.2.100" }, "build_script_attrs": { "data_glob": [ "**" ] }, - "license": "MIT/Apache-2.0" + "license": "MIT OR Apache-2.0" }, - "wasm-bindgen-backend 0.2.87": { + "wasm-bindgen-backend 0.2.100": { "name": "wasm-bindgen-backend", - "version": "0.2.87", + "version": "0.2.100", "repository": { "Http": { - "url": "https://static.crates.io/crates/wasm-bindgen-backend/0.2.87/download", - "sha256": "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" + "url": "https://static.crates.io/crates/wasm-bindgen-backend/0.2.100/download", + "sha256": "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" } }, "targets": [ @@ -29268,12 +29720,6 @@ "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "spans" - ], - "selects": {} - }, "deps": { "common": [ { @@ -29284,10 +29730,6 @@ "id": "log 0.4.20", "target": "log" }, - { - "id": "once_cell 1.18.0", - "target": "once_cell" - }, { "id": "proc-macro2 1.0.67", "target": "proc_macro2" @@ -29301,16 +29743,16 @@ "target": "syn" }, { - "id": "wasm-bindgen-shared 0.2.87", + "id": "wasm-bindgen-shared 0.2.100", "target": "wasm_bindgen_shared" } ], "selects": {} }, - "edition": "2018", - "version": "0.2.87" + "edition": "2021", + "version": "0.2.100" }, - "license": "MIT/Apache-2.0" + "license": "MIT OR Apache-2.0" }, "wasm-bindgen-futures 0.4.37": { "name": "wasm-bindgen-futures", @@ -29344,11 +29786,11 @@ "target": "cfg_if" }, { - "id": "js-sys 0.3.64", + "id": "js-sys 0.3.77", "target": "js_sys" }, { - "id": "wasm-bindgen 0.2.87", + "id": "wasm-bindgen 0.2.100", "target": "wasm_bindgen" } ], @@ -29366,13 +29808,13 @@ }, "license": "MIT/Apache-2.0" }, - "wasm-bindgen-macro 0.2.87": { + "wasm-bindgen-macro 0.2.100": { "name": "wasm-bindgen-macro", - "version": "0.2.87", + "version": "0.2.100", "repository": { "Http": { - "url": "https://static.crates.io/crates/wasm-bindgen-macro/0.2.87/download", - "sha256": "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" + "url": "https://static.crates.io/crates/wasm-bindgen-macro/0.2.100/download", + "sha256": "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" } }, "targets": [ @@ -29391,12 +29833,6 @@ "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "spans" - ], - "selects": {} - }, "deps": { "common": [ { @@ -29404,24 +29840,24 @@ "target": "quote" }, { - "id": "wasm-bindgen-macro-support 0.2.87", + "id": "wasm-bindgen-macro-support 0.2.100", "target": "wasm_bindgen_macro_support" } ], "selects": {} }, - "edition": "2018", - "version": "0.2.87" + "edition": "2021", + "version": "0.2.100" }, - "license": "MIT/Apache-2.0" + "license": "MIT OR Apache-2.0" }, - "wasm-bindgen-macro-support 0.2.87": { + "wasm-bindgen-macro-support 0.2.100": { "name": "wasm-bindgen-macro-support", - "version": "0.2.87", + "version": "0.2.100", "repository": { "Http": { - "url": "https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.87/download", - "sha256": "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" + "url": "https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.100/download", + "sha256": "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" } }, "targets": [ @@ -29440,12 +29876,6 @@ "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "spans" - ], - "selects": {} - }, "deps": { "common": [ { @@ -29461,28 +29891,28 @@ "target": "syn" }, { - "id": "wasm-bindgen-backend 0.2.87", + "id": "wasm-bindgen-backend 0.2.100", "target": "wasm_bindgen_backend" }, { - "id": "wasm-bindgen-shared 0.2.87", + "id": "wasm-bindgen-shared 0.2.100", "target": "wasm_bindgen_shared" } ], "selects": {} }, - "edition": "2018", - "version": "0.2.87" + "edition": "2021", + "version": "0.2.100" }, - "license": "MIT/Apache-2.0" + "license": "MIT OR Apache-2.0" }, - "wasm-bindgen-shared 0.2.87": { + "wasm-bindgen-shared 0.2.100": { "name": "wasm-bindgen-shared", - "version": "0.2.87", + "version": "0.2.100", "repository": { "Http": { - "url": "https://static.crates.io/crates/wasm-bindgen-shared/0.2.87/download", - "sha256": "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + "url": "https://static.crates.io/crates/wasm-bindgen-shared/0.2.100/download", + "sha256": "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" } }, "targets": [ @@ -29513,14 +29943,18 @@ "deps": { "common": [ { - "id": "wasm-bindgen-shared 0.2.87", + "id": "unicode-ident 1.0.12", + "target": "unicode_ident" + }, + { + "id": "wasm-bindgen-shared 0.2.100", "target": "build_script_build" } ], "selects": {} }, - "edition": "2018", - "version": "0.2.87" + "edition": "2021", + "version": "0.2.100" }, "build_script_attrs": { "data_glob": [ @@ -29528,7 +29962,7 @@ ], "links": "wasm_bindgen" }, - "license": "MIT/Apache-2.0" + "license": "MIT OR Apache-2.0" }, "web 0.3.0": { "name": "web", @@ -29668,11 +30102,11 @@ "deps": { "common": [ { - "id": "js-sys 0.3.64", + "id": "js-sys 0.3.77", "target": "js_sys" }, { - "id": "wasm-bindgen 0.2.87", + "id": "wasm-bindgen 0.2.100", "target": "wasm_bindgen" } ], @@ -30422,6 +30856,75 @@ }, "license": "MIT/Apache-2.0" }, + "windows-core 0.52.0": { + "name": "windows-core", + "version": "0.52.0", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows-core/0.52.0/download", + "sha256": "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_core", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_core", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "windows-targets 0.52.6", + "target": "windows_targets" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.52.0" + }, + "license": "MIT OR Apache-2.0" + }, + "windows-link 0.1.3": { + "name": "windows-link", + "version": "0.1.3", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows-link/0.1.3/download", + "sha256": "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_link", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_link", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2021", + "version": "0.1.3" + }, + "license": "MIT OR Apache-2.0" + }, "windows-sys 0.45.0": { "name": "windows-sys", "version": "0.45.0", @@ -30733,6 +31236,89 @@ }, "license": "MIT OR Apache-2.0" }, + "windows-targets 0.52.6": { + "name": "windows-targets", + "version": "0.52.6", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows-targets/0.52.6/download", + "sha256": "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_targets", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_targets", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [], + "selects": { + "aarch64-pc-windows-gnullvm": [ + { + "id": "windows_aarch64_gnullvm 0.52.6", + "target": "windows_aarch64_gnullvm" + } + ], + "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": [ + { + "id": "windows_x86_64_msvc 0.52.6", + "target": "windows_x86_64_msvc" + } + ], + "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": [ + { + "id": "windows_aarch64_msvc 0.52.6", + "target": "windows_aarch64_msvc" + } + ], + "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": [ + { + "id": "windows_i686_gnu 0.52.6", + "target": "windows_i686_gnu" + } + ], + "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": [ + { + "id": "windows_i686_msvc 0.52.6", + "target": "windows_i686_msvc" + } + ], + "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": [ + { + "id": "windows_x86_64_gnu 0.52.6", + "target": "windows_x86_64_gnu" + } + ], + "i686-pc-windows-gnullvm": [ + { + "id": "windows_i686_gnullvm 0.52.6", + "target": "windows_i686_gnullvm" + } + ], + "x86_64-pc-windows-gnullvm": [ + { + "id": "windows_x86_64_gnullvm 0.52.6", + "target": "windows_x86_64_gnullvm" + } + ] + } + }, + "edition": "2021", + "version": "0.52.6" + }, + "license": "MIT OR Apache-2.0" + }, "windows_aarch64_gnullvm 0.42.2": { "name": "windows_aarch64_gnullvm", "version": "0.42.2", @@ -30839,6 +31425,59 @@ }, "license": "MIT OR Apache-2.0" }, + "windows_aarch64_gnullvm 0.52.6": { + "name": "windows_aarch64_gnullvm", + "version": "0.52.6", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download", + "sha256": "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_aarch64_gnullvm", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_aarch64_gnullvm", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "windows_aarch64_gnullvm 0.52.6", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.52.6" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0" + }, "windows_aarch64_msvc 0.42.2": { "name": "windows_aarch64_msvc", "version": "0.42.2", @@ -30945,6 +31584,59 @@ }, "license": "MIT OR Apache-2.0" }, + "windows_aarch64_msvc 0.52.6": { + "name": "windows_aarch64_msvc", + "version": "0.52.6", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download", + "sha256": "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_aarch64_msvc", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_aarch64_msvc", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "windows_aarch64_msvc 0.52.6", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.52.6" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0" + }, "windows_i686_gnu 0.42.2": { "name": "windows_i686_gnu", "version": "0.42.2", @@ -30982,14 +31674,67 @@ "deps": { "common": [ { - "id": "windows_i686_gnu 0.42.2", + "id": "windows_i686_gnu 0.42.2", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.42.2" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0" + }, + "windows_i686_gnu 0.48.5": { + "name": "windows_i686_gnu", + "version": "0.48.5", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows_i686_gnu/0.48.5/download", + "sha256": "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_i686_gnu", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_i686_gnu", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "windows_i686_gnu 0.48.5", "target": "build_script_build" } ], "selects": {} }, "edition": "2018", - "version": "0.42.2" + "version": "0.48.5" }, "build_script_attrs": { "data_glob": [ @@ -30998,13 +31743,13 @@ }, "license": "MIT OR Apache-2.0" }, - "windows_i686_gnu 0.48.5": { + "windows_i686_gnu 0.52.6": { "name": "windows_i686_gnu", - "version": "0.48.5", + "version": "0.52.6", "repository": { "Http": { - "url": "https://static.crates.io/crates/windows_i686_gnu/0.48.5/download", - "sha256": "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + "url": "https://static.crates.io/crates/windows_i686_gnu/0.52.6/download", + "sha256": "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" } }, "targets": [ @@ -31035,14 +31780,67 @@ "deps": { "common": [ { - "id": "windows_i686_gnu 0.48.5", + "id": "windows_i686_gnu 0.52.6", "target": "build_script_build" } ], "selects": {} }, - "edition": "2018", - "version": "0.48.5" + "edition": "2021", + "version": "0.52.6" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0" + }, + "windows_i686_gnullvm 0.52.6": { + "name": "windows_i686_gnullvm", + "version": "0.52.6", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download", + "sha256": "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_i686_gnullvm", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_i686_gnullvm", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "windows_i686_gnullvm 0.52.6", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.52.6" }, "build_script_attrs": { "data_glob": [ @@ -31157,6 +31955,59 @@ }, "license": "MIT OR Apache-2.0" }, + "windows_i686_msvc 0.52.6": { + "name": "windows_i686_msvc", + "version": "0.52.6", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows_i686_msvc/0.52.6/download", + "sha256": "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_i686_msvc", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_i686_msvc", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "windows_i686_msvc 0.52.6", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.52.6" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0" + }, "windows_x86_64_gnu 0.42.2": { "name": "windows_x86_64_gnu", "version": "0.42.2", @@ -31263,6 +32114,59 @@ }, "license": "MIT OR Apache-2.0" }, + "windows_x86_64_gnu 0.52.6": { + "name": "windows_x86_64_gnu", + "version": "0.52.6", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download", + "sha256": "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_x86_64_gnu", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_x86_64_gnu", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "windows_x86_64_gnu 0.52.6", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.52.6" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0" + }, "windows_x86_64_gnullvm 0.42.2": { "name": "windows_x86_64_gnullvm", "version": "0.42.2", @@ -31369,6 +32273,59 @@ }, "license": "MIT OR Apache-2.0" }, + "windows_x86_64_gnullvm 0.52.6": { + "name": "windows_x86_64_gnullvm", + "version": "0.52.6", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download", + "sha256": "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_x86_64_gnullvm", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_x86_64_gnullvm", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "windows_x86_64_gnullvm 0.52.6", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.52.6" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0" + }, "windows_x86_64_msvc 0.42.2": { "name": "windows_x86_64_msvc", "version": "0.42.2", @@ -31475,6 +32432,59 @@ }, "license": "MIT OR Apache-2.0" }, + "windows_x86_64_msvc 0.52.6": { + "name": "windows_x86_64_msvc", + "version": "0.52.6", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download", + "sha256": "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + } + }, + "targets": [ + { + "Library": { + "crate_name": "windows_x86_64_msvc", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "windows_x86_64_msvc", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "windows_x86_64_msvc 0.52.6", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.52.6" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0" + }, "winnow 0.5.15": { "name": "winnow", "version": "0.5.15", @@ -32033,6 +33043,7 @@ }, "binary_crates": [], "workspace_members": { + "event-parser 0.3.0": "src/event-parser", "genesis-from-db 0.3.0": "src/genesis-from-db", "http-proxy 0.3.0": "src/http-proxy", "idstore-export 0.3.0": "src/idstore-export", @@ -32077,6 +33088,9 @@ "cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\"))": [ "wasm32-unknown-unknown" ], + "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": [ + "x86_64-pc-windows-msvc" + ], "cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\"))))))))": [ "aarch64-linux-android", "armv7-linux-androideabi", @@ -32178,12 +33192,21 @@ "aarch64-apple-ios", "aarch64-apple-ios-sim" ], + "cfg(all(target_arch = \"wasm32\", not(any(target_os = \"emscripten\", target_os = \"wasi\"))))": [ + "wasm32-unknown-unknown" + ], "cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))": [ "wasm32-unknown-unknown" ], + "cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))": [ + "wasm32-unknown-unknown" + ], "cfg(all(target_arch = \"wasm32\", target_vendor = \"unknown\", target_os = \"unknown\", target_env = \"\"))": [ "wasm32-unknown-unknown" ], + "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": [ + "i686-unknown-linux-gnu" + ], "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(windows_raw_dylib)))": [ "i686-unknown-linux-gnu" ], @@ -32677,11 +33700,18 @@ "x86_64-unknown-linux-gnu" ], "cfg(target_feature = \"atomics\")": [], + "cfg(target_os = \"android\")": [ + "aarch64-linux-android", + "armv7-linux-androideabi", + "i686-linux-android", + "x86_64-linux-android" + ], "cfg(target_os = \"dragonfly\")": [], "cfg(target_os = \"freebsd\")": [ "i686-unknown-freebsd", "x86_64-unknown-freebsd" ], + "cfg(target_os = \"haiku\")": [], "cfg(target_os = \"hermit\")": [], "cfg(target_os = \"linux\")": [ "aarch64-unknown-linux-gnu", @@ -32737,6 +33767,7 @@ "x86_64-pc-windows-msvc" ], "i686-pc-windows-gnu": [], + "i686-pc-windows-gnullvm": [], "i686-pc-windows-msvc": [ "i686-pc-windows-msvc" ], diff --git a/src/event-parser/BUILD.bazel b/src/event-parser/BUILD.bazel new file mode 100644 index 00000000..ec939ba4 --- /dev/null +++ b/src/event-parser/BUILD.bazel @@ -0,0 +1,26 @@ +load("@crate_index//:defs.bzl", "aliases", "all_crate_deps") +load("@rules_rust//rust:defs.bzl", "rust_binary") + +package(default_visibility = [ + "//:__pkg__", +]) + +rust_binary( + name = "event-parser", + srcs = glob(include = ["src/**/*.rs"]), + aliases = aliases(), + proc_macro_deps = all_crate_deps( + proc_macro = True, + ), + deps = all_crate_deps( + normal = True, + ) + [ + "//src/many-cli-helpers", + "//src/many-client", + "//src/many-identity", + "//src/many-error", + "//src/many-modules", + "//src/many-protocol", + "//src/many-types", + ], +) diff --git a/src/event-parser/Cargo.toml b/src/event-parser/Cargo.toml new file mode 100644 index 00000000..df511d0c --- /dev/null +++ b/src/event-parser/Cargo.toml @@ -0,0 +1,40 @@ +[package] +name = "event-parser" +version = "0.3.0" # managed by release.sh +edition = "2021" +description = "Parse MANY events" +license-file = "../../LICENSE" +homepage = "https://liftedinit.org/" +repository = "https://github.com/liftedinit/many-rs.git" +authors = ["The Lifted Initiative "] + +[[bin]] +name = "event-parser" +doc = false + +[dependencies] +anyhow = "1.0.71" +base64 = "0.21.2" +chrono = "0.4.41" +clap = { version = "3.2.25", features = ["derive"] } +const_format = "0.2.31" +csv = "1.3.1" +hex = "0.4.3" +indicatif = "0.17.3" +many-cli-helpers = { path = "../many-cli-helpers", version = "0.3.0" } # managed by release.sh +many-client = { path = "../many-client", version = "0.3.0" } # managed by release.sh +many-error = { path = "../many-error", version = "0.3.0" } # managed by release.sh +many-identity = { path = "../many-identity", features = ["serde"], version = "0.3.0" } # managed by release.sh +many-identity-dsa = { path = "../many-identity-dsa", features = ["ed25519", "ecdsa"], version = "0.3.0" } # managed by release.sh +many-identity-hsm = { path = "../many-identity-hsm", version = "0.3.0" } # managed by release.sh +many-protocol = { path = "../many-protocol", version = "0.3.0" } # managed by release.sh +many-modules = { path = "../many-modules", version = "0.3.0" } # managed by release.sh +many-types = { path = "../many-types", version = "0.3.0" } # managed by release.sh +minicbor = "0.19.1" +serde = "=1.0.163" +serde_derive = "1.0.163" +serde_json = "1.0.96" +strum = "0.24.1" +strum_macros = "0.24.3" +tracing = "0.1.37" +tracing-subscriber = "0.3.17" diff --git a/src/event-parser/src/main.rs b/src/event-parser/src/main.rs new file mode 100644 index 00000000..57b1f554 --- /dev/null +++ b/src/event-parser/src/main.rs @@ -0,0 +1,375 @@ +use std::collections::{BTreeMap, Bound}; +use std::fs; +use std::fs::File; +use std::str::FromStr; +use anyhow::anyhow; +use chrono::{DateTime, Utc}; +use clap::{Parser}; +use csv::Writer; +use indicatif::ProgressBar; +use minicbor::{Decode, Encode}; +use many_cli_helpers::error::ClientServerError; +use many_cli_helpers::error::ClientServerError::Client; +use many_client::client::blocking::ManyClient; +use many_identity::{Address, AnonymousIdentity, Identity}; +use many_modules::events::{EventFilter, EventId}; +use many_modules::ledger::{SendArgs, TokenBurnArgs, TokenMintArgs}; +use many_types::{CborRange, Memo}; +use many_types::ledger::TokenAmount; + +#[derive(Encode, Decode)] +struct CachedEvents { + #[n(0)] + events: Vec, +} + +#[derive(Parser)] +struct Opts { + #[clap(flatten)] + common_flags: many_cli_helpers::CommonCliFlags, + + /// Many server URL to connect to. + #[clap(default_value = "http://localhost:8000")] + servers: Vec, + +} + + +fn load_or_fetch_events( + id: usize, + client: ManyClient +) -> Result, ClientServerError> { + let cache_file = format!("{}_events_cache.cbor", id); + if let Ok(data) = fs::read(&cache_file) { + println!("Loading events from cache: {}", &cache_file); + if let Ok(cached) = minicbor::decode::(&data) { + return Ok(cached.events); + } + } + + println!("Fetching events from server..."); + let events = _extract_events(client)?; + let cached = CachedEvents { events }; + if let Ok(cbor) = minicbor::to_vec(&cached) { + let _ = fs::write(cache_file, cbor); + } + Ok(cached.events) +} + +fn _extract_events( + client: ManyClient, + // identity: Option, +) -> Result, ClientServerError> { + let mut filter = EventFilter::default(); + let event_count_result: many_modules::events::ListReturns = minicbor::decode(&client.call_("events.list", many_modules::events::ListArgs { + count: Some(1), + order: None, + filter: None, + })?)?; + let total_event_count = event_count_result.nb_events; + let pb = ProgressBar::new(total_event_count); + + let mut all_events = vec![]; + let mut last_id: Option = None; + loop { + if let Some(last_id) = &last_id { + filter.id_range = Some(CborRange { + start: Bound::Excluded(last_id.clone()), + end: Bound::Unbounded, + }); + } + let list: many_modules::events::ListReturns = minicbor::decode(&client.call_("events.list", many_modules::events::ListArgs { + count: Some(100), // Adjust count as needed + order: None, + filter: Some(filter.clone()), + })?)?; + + if list.events.is_empty() { + break; + } + + pb.inc(list.events.len() as u64); + + last_id = list.events.last().map(|e| e.id.clone()); + all_events.extend(list.events); + } + + pb.finish_with_message(format!("Retrieved {} events", all_events.len())); + + Ok(all_events) +} + +fn parse_balances( + all_events: &Vec, + mfx: Address +) -> Result<(), ClientServerError> { + let mut balances: BTreeMap = BTreeMap::from([("mqdjnydq6funtibfdehemay6lwirrgeroazmqqhhac2jaq5yaaaaayf".into(), TokenAmount::from(100_000_000__000_000_000u128))]); + let mut to_add: BTreeMap = BTreeMap::new(); + let mut to_sub: BTreeMap = BTreeMap::new(); + + for event in all_events { + match &event.content { + many_modules::events::EventInfo::TokenMint { symbol, distribution, .. } => { + if symbol != &mfx { + continue; + } + for (account, amount) in distribution { + *to_add.entry(account.to_string()).or_insert(TokenAmount::from(0u8)) += amount; + } + }, + many_modules::events::EventInfo::TokenBurn { symbol, distribution, .. } => { + if symbol != &mfx { + continue; + } + for (account, amount) in distribution { + *to_sub.entry(account.to_string()).or_insert(TokenAmount::from(0u8)) += amount; + } + }, + many_modules::events::EventInfo::Send { from, to, symbol, amount, .. } => { + if symbol != &mfx { + continue; + } + *to_sub.entry(from.to_string()).or_insert(TokenAmount::from(0u8)) += amount.clone(); + *to_add.entry(to.to_string()).or_insert(TokenAmount::from(0u8)) += amount; + }, + _ => {} + } + } + + for (address, amount) in to_add { + *balances.entry(address).or_insert(TokenAmount::from(0u8)) += amount; + } + + for (address, amount) in to_sub { + *balances.entry(address).or_insert(TokenAmount::from(0u8)) -= amount; + } + + let mut wtr = Writer::from_writer(File::create("balances.csv").map_err(|_e| Client(anyhow!("Can't create CSV writer")))?); + wtr.write_record(&["address", "amount"]).map_err(|_e| Client(anyhow!("Can't write CSV header")))?; + for (address, amount) in &balances { + wtr.write_record(&[address, &amount.to_string()]).map_err(|_e| Client(anyhow!("Can't write CSV record")))?; + } + wtr.flush().map_err(|_e| Client(anyhow!("Can't flush CSV record")))?; + + Ok(()) +} + +fn parse_transactions( + all_events: BTreeMap, + mfx: Address, +) -> Result<(), ClientServerError> { + let mut wtr = Writer::from_writer(File::create("transactions.csv").map_err(|_e| Client(anyhow!("Can't create CSV writer")))?); + wtr.write_record(&["date", "from", "to", "amount", "type", "memo"]).map_err(|_e| Client(anyhow!("Can't write CSV header")))?; + + // Collect all events that are of type AccountMultisigSubmit for memo extraction + let submit_events = all_events + .iter() + .filter(|(_, event)| matches!(event.content, many_modules::events::EventInfo::AccountMultisigSubmit { .. })) + .collect::>(); + + for (_id, event) in &all_events { + let t = event.time.as_system_time()?; + let dt: DateTime = t.into(); + let iso_dt = dt.to_rfc3339(); + + match &event.content { + many_modules::events::EventInfo::TokenMint { symbol, distribution, memo } => { + if symbol != &mfx { + continue; + } + + // Do we have a direct memo? + let m = if let Some(m) = memo { + m.clone() + // If not, check if we have a matching Submit transaction + } else { + let submit_found = submit_events.iter().find(|(_, e)| match &e.content { + many_modules::events::EventInfo::AccountMultisigSubmit { transaction, .. } => { + matches!(transaction.as_ref(), many_modules::events::AccountMultisigTransaction::TokenMint(TokenMintArgs { symbol: t_symbol, distribution: t_distribution, memo: t_memo }) if t_symbol == symbol && t_distribution == distribution && t_memo == memo) + } + _ => false, + }); + + if let Some((_, submit_event)) = submit_found { + if let many_modules::events::EventInfo::AccountMultisigSubmit { memo, memo_, .. } = &submit_event.content { + if let Some(memo) = memo { + memo.clone() + } else if let Some(memo_) = memo_ { + Memo::from(memo_.clone()) + } else { + Memo::try_from("")? + } + } else { + Memo::try_from("")? + } + } else { + Memo::try_from("")? + } + }; + + + let a: Vec = m.iter_str().map(|s| s.to_string()).collect(); + let memo_str = if a.is_empty() { + "".to_string() + } + else { + format!("{}", a.join(", ")) + }; + + for (account, amount) in distribution { + wtr.write_record(&[ + iso_dt.clone(), + "".to_string(), + account.to_string(), + amount.to_string(), + "tokens.mint".to_string(), + memo_str.clone(), + ]).map_err(|_e| Client(anyhow!("Can't write CSV record")))?; + } + }, + many_modules::events::EventInfo::TokenBurn { symbol, distribution, memo } => { + if symbol != &mfx { + continue; + } + + // Do we have a direct memo? + let m = if let Some(m) = memo { + m.clone() + // If not, check if we have a matching Submit transaction + } else { + let submit_found = submit_events.iter().find(|(_, e)| match &e.content { + many_modules::events::EventInfo::AccountMultisigSubmit { transaction, .. } => { + matches!(transaction.as_ref(), many_modules::events::AccountMultisigTransaction::TokenBurn(TokenBurnArgs { symbol: t_symbol, distribution: t_distribution, memo: t_memo, .. }) if t_symbol == symbol && t_distribution == distribution && t_memo == memo) + } + _ => false, + }); + + if let Some((_, submit_event)) = submit_found { + if let many_modules::events::EventInfo::AccountMultisigSubmit { memo, memo_, .. } = &submit_event.content { + if let Some(memo) = memo { + memo.clone() + } else if let Some(memo_) = memo_ { + Memo::from(memo_.clone()) + } else { + Memo::try_from("")? + } + } else { + Memo::try_from("")? + } + } else { + Memo::try_from("")? + } + }; + + let a: Vec = m.iter_str().map(|s| s.to_string()).collect(); + let memo_str = if a.is_empty() { + "".to_string() + } + else { + format!("{}", a.join(", ")) + }; + + for (account, amount) in distribution { + wtr.write_record(&[ + iso_dt.clone(), + account.to_string(), + "".to_string(), + amount.to_string(), + "tokens.burn".to_string(), + memo_str.clone(), + ]).map_err(|_e| Client(anyhow!("Can't write CSV record")))?; + } + } + many_modules::events::EventInfo::Send { from, to, symbol, memo, amount } => { + if symbol != &mfx { + continue; + } + + // Do we have a direct memo? + let m = if let Some(m) = memo { + m.clone() + // If not, check if we have a matching Submit transaction + } else { + let submit_found = submit_events.iter().find(|(_, e)| match &e.content { + many_modules::events::EventInfo::AccountMultisigSubmit { transaction, .. } => { + matches!(transaction.as_ref(), many_modules::events::AccountMultisigTransaction::Send(SendArgs {from: t_from, to: t_to, amount: t_amount, symbol: t_symbol, memo: t_memo }) if t_symbol == symbol && t_from == from && t_to == to && t_amount == amount && t_memo == memo) + } + _ => false, + }); + + if let Some((_, submit_event)) = submit_found { + if let many_modules::events::EventInfo::AccountMultisigSubmit { memo, memo_, .. } = &submit_event.content { + if let Some(memo) = memo { + memo.clone() + } else if let Some(memo_) = memo_ { + Memo::from(memo_.clone()) + } else { + Memo::try_from("")? + } + } else { + Memo::try_from("")? + } + } else { + Memo::try_from("")? + } + }; + let a: Vec = m.iter_str().map(|s| s.to_string()).collect(); + let memo_str = if a.is_empty() { + "".to_string() + } + else { + format!("{}", a.join(", ")) + }; + + wtr.write_record(&[ + iso_dt, + from.to_string(), + to.to_string(), + amount.to_string(), + "ledger.send".to_string(), + memo_str, + ]).map_err(|_e| Client(anyhow!("Can't write CSV record")))?; + } + _ => {} + } + } + + Ok(()) +} + +fn main() -> Result<(), anyhow::Error> { + let Opts { + common_flags, + servers, + } = Opts::parse(); + + common_flags.init_logging().unwrap(); + + let mfx = many_identity::Address::from_str("mqbh742x4s356ddaryrxaowt4wxtlocekzpufodvowrirfrqaaaaa3l").expect("Can't parse MFX address"); + let clients = servers + .iter() + .map(|server| { + ManyClient::new(server, Address::anonymous(), AnonymousIdentity) + .map_err(|e| Client(anyhow!("Failed to create client: {}", e))) + }) + .collect::, _>>().map_err(|e| anyhow!("Failed to create clients: {}", e.to_string()))?; + + let mut all_events = vec![]; + for (i, (s, c)) in servers.into_iter().zip(clients.into_iter()).enumerate() { + println!("Processing server: {}", s); + let events = load_or_fetch_events(i, c).map_err(|e| anyhow!("Failed to fetch events: {}", e))?; + all_events.extend(events); + } + + println!("Total events loaded: {}", all_events.len()); + + let event_map: BTreeMap<_, _> = all_events + .iter() + .map(|event| (event.id.clone(), event)) + .collect(); + + parse_balances(&all_events, mfx).map_err(|e| anyhow!("Failed to parse events: {}", e))?; + parse_transactions(event_map, mfx).map_err(|e| anyhow!("Failed to parse transactions: {}", e))?; + + Ok(()) +} \ No newline at end of file