From 6ce11ab10120b3e3ca65902c2c20c508865b7b45 Mon Sep 17 00:00:00 2001 From: Aaron Siddhartha Mondal Date: Mon, 20 Nov 2023 05:45:51 +0100 Subject: [PATCH] Migrate S3 store to official AWS SDK (#369) This is a breaking change. - The S3 store now uses the aws-sdk for Rust to handle higher level interactions with the S3 API. - It now also supports HTTP/2 via hyper/rustls. - The concurrency limits have been removed and are now only configurable for multipart uploads. - The default behavior is now HTTPS. To enable unencrypted communication, an `insecure_allow_http` flag has been added. Fixes #131 --- Cargo.Bazel.lock | 8943 ++++++++++++++++++---------- Cargo.lock | 1232 ++-- Cargo.toml | 12 +- cas/scheduler/grpc_scheduler.rs | 2 +- cas/store/BUILD | 22 +- cas/store/default_store_factory.rs | 2 +- cas/store/grpc_store.rs | 2 +- cas/store/s3_store.rs | 598 +- cas/store/tests/s3_store_test.rs | 718 +-- config/stores.rs | 22 +- flake.nix | 1 + gencargo/s3_store/Cargo.toml | 13 +- gencargo/s3_store_test/Cargo.toml | 9 +- tools/cargo_shared.bzl | 35 +- util/buf_channel.rs | 30 +- util/retry.rs | 5 +- util/tests/retry_test.rs | 8 +- 17 files changed, 7349 insertions(+), 4305 deletions(-) diff --git a/Cargo.Bazel.lock b/Cargo.Bazel.lock index faf388237..7c88083ab 100644 --- a/Cargo.Bazel.lock +++ b/Cargo.Bazel.lock @@ -1,5 +1,5 @@ { - "checksum": "fc8fb60f6dcfbed1b747a623c3e447b2f8bac11464b0d8fdb672fb28d12fd34e", + "checksum": "2f3e1cf6a29c0aed4782676f08d75e1756ec33038612223f348ad4ced9f8e9f8", "crates": { "addr2line 0.21.0": { "name": "addr2line", @@ -230,75 +230,6 @@ }, "license": "MIT OR Apache-2.0" }, - "android-tzdata 0.1.1": { - "name": "android-tzdata", - "version": "0.1.1", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/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://crates.io/api/v1/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.150", - "target": "libc" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.1.5" - }, - "license": "MIT/Apache-2.0" - }, "anstream 0.6.4": { "name": "anstream", "version": "0.6.4", @@ -659,6 +590,58 @@ }, "license": "MIT OR Apache-2.0" }, + "assert-json-diff 1.1.0": { + "name": "assert-json-diff", + "version": "1.1.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/assert-json-diff/1.1.0/download", + "sha256": "4259cbe96513d2f1073027a259fc2ca917feb3026a5a8d984e3628e490255cc0" + } + }, + "targets": [ + { + "Library": { + "crate_name": "assert_json_diff", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "assert_json_diff", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "serde 1.0.192", + "target": "serde" + }, + { + "id": "serde_json 1.0.108", + "target": "serde_json" + } + ], + "selects": {} + }, + "edition": "2018", + "proc_macro_deps": { + "common": [ + { + "id": "extend 0.1.2", + "target": "extend" + } + ], + "selects": {} + }, + "version": "1.1.0" + }, + "license": "MIT" + }, "async-lock 2.8.0": { "name": "async-lock", "version": "2.8.0", @@ -793,308 +776,222 @@ }, "license": "Apache-2.0 OR MIT" }, - "axum 0.6.20": { - "name": "axum", - "version": "0.6.20", + "aws-config 0.57.2": { + "name": "aws-config", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/axum/0.6.20/download", - "sha256": "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" + "url": "https://crates.io/api/v1/crates/aws-config/0.57.2/download", + "sha256": "f2bf00cb9416daab4ce4927c54ebe63c08b9caf4d7b9314b6d7a4a2c5a1afb09" } }, "targets": [ { "Library": { - "crate_name": "axum", + "crate_name": "aws_config", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "axum", + "library_target_name": "aws_config", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ + "client-hyper", + "credentials-process", "default", - "form", - "http1", - "json", - "matched-path", - "original-uri", - "query", - "tokio", - "tower-log" + "rt-tokio", + "rustls", + "sso" ], "selects": {} }, "deps": { "common": [ { - "id": "axum 0.6.20", - "target": "build_script_build" + "id": "aws-credential-types 0.57.2", + "target": "aws_credential_types" }, { - "id": "axum-core 0.3.4", - "target": "axum_core" + "id": "aws-http 0.57.2", + "target": "aws_http" }, { - "id": "bitflags 1.3.2", - "target": "bitflags" + "id": "aws-runtime 0.57.2", + "target": "aws_runtime" }, { - "id": "bytes 1.5.0", - "target": "bytes" + "id": "aws-sdk-sso 0.36.0", + "target": "aws_sdk_sso" }, { - "id": "futures-util 0.3.29", - "target": "futures_util" + "id": "aws-sdk-ssooidc 0.36.0", + "target": "aws_sdk_ssooidc" }, { - "id": "http 0.2.11", - "target": "http" + "id": "aws-sdk-sts 0.36.0", + "target": "aws_sdk_sts" }, { - "id": "http-body 0.4.5", - "target": "http_body" + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" }, { - "id": "hyper 0.14.27", - "target": "hyper" + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" }, { - "id": "itoa 1.0.9", - "target": "itoa" + "id": "aws-smithy-json 0.57.2", + "target": "aws_smithy_json" }, { - "id": "matchit 0.7.3", - "target": "matchit" + "id": "aws-smithy-runtime 0.57.2", + "target": "aws_smithy_runtime" }, { - "id": "memchr 2.6.4", - "target": "memchr" + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" }, { - "id": "mime 0.3.17", - "target": "mime" + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" }, { - "id": "percent-encoding 2.3.0", - "target": "percent_encoding" + "id": "aws-types 0.57.2", + "target": "aws_types" }, { - "id": "pin-project-lite 0.2.13", - "target": "pin_project_lite" + "id": "bytes 1.5.0", + "target": "bytes" }, { - "id": "serde 1.0.192", - "target": "serde" + "id": "fastrand 2.0.1", + "target": "fastrand" }, { - "id": "serde_json 1.0.108", - "target": "serde_json" + "id": "hex 0.4.3", + "target": "hex" }, { - "id": "serde_path_to_error 0.1.14", - "target": "serde_path_to_error" + "id": "http 0.2.11", + "target": "http" }, { - "id": "serde_urlencoded 0.7.1", - "target": "serde_urlencoded" + "id": "hyper 0.14.27", + "target": "hyper" }, { - "id": "sync_wrapper 0.1.2", - "target": "sync_wrapper" + "id": "ring 0.17.5", + "target": "ring" }, { - "id": "tokio 1.34.0", - "target": "tokio" + "id": "time 0.3.30", + "target": "time" }, { - "id": "tower 0.4.13", - "target": "tower" + "id": "tokio 1.34.0", + "target": "tokio" }, { - "id": "tower-layer 0.3.2", - "target": "tower_layer" + "id": "tracing 0.1.40", + "target": "tracing" }, { - "id": "tower-service 0.3.2", - "target": "tower_service" + "id": "zeroize 1.7.0", + "target": "zeroize" } ], "selects": {} }, "edition": "2021", - "proc_macro_deps": { - "common": [ - { - "id": "async-trait 0.1.74", - "target": "async_trait" - } - ], - "selects": {} - }, - "version": "0.6.20" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ], - "proc_macro_deps": { - "common": [ - { - "id": "rustversion 1.0.14", - "target": "rustversion" - } - ], - "selects": {} - } + "version": "0.57.2" }, - "license": "MIT" + "license": "Apache-2.0" }, - "axum-core 0.3.4": { - "name": "axum-core", - "version": "0.3.4", + "aws-credential-types 0.57.2": { + "name": "aws-credential-types", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/axum-core/0.3.4/download", - "sha256": "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" + "url": "https://crates.io/api/v1/crates/aws-credential-types/0.57.2/download", + "sha256": "cb9073c88dbf12f68ce7d0e149f989627a1d1ae3d2b680459f04ccc29d1cbd0f" } }, "targets": [ { "Library": { - "crate_name": "axum_core", + "crate_name": "aws_credential_types", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "axum_core", + "library_target_name": "aws_credential_types", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "test-util" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "axum-core 0.3.4", - "target": "build_script_build" - }, - { - "id": "bytes 1.5.0", - "target": "bytes" - }, - { - "id": "futures-util 0.3.29", - "target": "futures_util" + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" }, { - "id": "http 0.2.11", - "target": "http" + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" }, { - "id": "http-body 0.4.5", - "target": "http_body" + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" }, { - "id": "mime 0.3.17", - "target": "mime" - }, - { - "id": "tower-layer 0.3.2", - "target": "tower_layer" - }, - { - "id": "tower-service 0.3.2", - "target": "tower_service" + "id": "zeroize 1.7.0", + "target": "zeroize" } ], "selects": {} }, "edition": "2021", - "proc_macro_deps": { - "common": [ - { - "id": "async-trait 0.1.74", - "target": "async_trait" - } - ], - "selects": {} - }, - "version": "0.3.4" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ], - "proc_macro_deps": { - "common": [ - { - "id": "rustversion 1.0.14", - "target": "rustversion" - } - ], - "selects": {} - } + "version": "0.57.2" }, - "license": "MIT" + "license": "Apache-2.0" }, - "backtrace 0.3.69": { - "name": "backtrace", - "version": "0.3.69", + "aws-http 0.57.2": { + "name": "aws-http", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/backtrace/0.3.69/download", - "sha256": "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" + "url": "https://crates.io/api/v1/crates/aws-http/0.57.2/download", + "sha256": "24067106d09620cf02d088166cdaedeaca7146d4d499c41b37accecbea11b246" } }, "targets": [ { "Library": { - "crate_name": "backtrace", + "crate_name": "aws_http", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "backtrace", + "library_target_name": "aws_http", "common_attrs": { "compile_data_glob": [ "**" @@ -1102,71 +999,62 @@ "deps": { "common": [ { - "id": "backtrace 0.3.69", - "target": "build_script_build" + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" }, { - "id": "cfg-if 1.0.0", - "target": "cfg_if" + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" }, { - "id": "rustc-demangle 0.1.23", - "target": "rustc_demangle" - } - ], - "selects": { - "cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))": [ - { - "id": "addr2line 0.21.0", - "target": "addr2line" - }, - { - "id": "libc 0.2.150", - "target": "libc" - }, - { - "id": "miniz_oxide 0.7.1", - "target": "miniz_oxide" - }, - { - "id": "object 0.32.1", - "target": "object" - } - ] - } - }, - "edition": "2018", - "version": "0.3.69" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ], - "deps": { - "common": [ + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, { - "id": "cc 1.0.83", - "target": "cc" + "id": "aws-types 0.57.2", + "target": "aws_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "http-body 0.4.5", + "target": "http_body" + }, + { + "id": "pin-project-lite 0.2.13", + "target": "pin_project_lite" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" } ], "selects": {} - } + }, + "edition": "2021", + "version": "0.57.2" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "base64 0.13.1": { - "name": "base64", - "version": "0.13.1", + "aws-runtime 0.57.2": { + "name": "aws-runtime", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/base64/0.13.1/download", - "sha256": "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + "url": "https://crates.io/api/v1/crates/aws-runtime/0.57.2/download", + "sha256": "fc6ee0152c06d073602236a4e94a8c52a327d310c1ecd596570ce795af8777ff" } }, "targets": [ { "Library": { - "crate_name": "base64", + "crate_name": "aws_runtime", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1174,36 +1062,97 @@ } } ], - "library_target_name": "base64", + "library_target_name": "aws_runtime", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default", - "std" + "event-stream", + "sigv4a" ], "selects": {} }, - "edition": "2018", - "version": "0.13.1" + "deps": { + "common": [ + { + "id": "aws-credential-types 0.57.2", + "target": "aws_credential_types" + }, + { + "id": "aws-http 0.57.2", + "target": "aws_http" + }, + { + "id": "aws-sigv4 0.57.2", + "target": "aws_sigv4" + }, + { + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" + }, + { + "id": "aws-smithy-eventstream 0.57.2", + "target": "aws_smithy_eventstream" + }, + { + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" + }, + { + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "aws-types 0.57.2", + "target": "aws_types" + }, + { + "id": "fastrand 2.0.1", + "target": "fastrand" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "percent-encoding 2.3.0", + "target": "percent_encoding" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" + }, + { + "id": "uuid 1.5.0", + "target": "uuid" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.57.2" }, - "license": "MIT/Apache-2.0" + "license": "Apache-2.0" }, - "base64 0.21.5": { - "name": "base64", - "version": "0.21.5", + "aws-sdk-config 0.35.0": { + "name": "aws-sdk-config", + "version": "0.35.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/base64/0.21.5/download", - "sha256": "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + "url": "https://crates.io/api/v1/crates/aws-sdk-config/0.35.0/download", + "sha256": "75fa529a69c86c40743988c7bd72401dae18b70fabd33e132c1daa81c03d9698" } }, "targets": [ { "Library": { - "crate_name": "base64", + "crate_name": "aws_sdk_config", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1211,76 +1160,98 @@ } } ], - "library_target_name": "base64", + "library_target_name": "aws_sdk_config", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", "default", - "std" + "rt-tokio", + "rustls" ], "selects": {} }, - "edition": "2018", - "version": "0.21.5" - }, - "license": "MIT OR Apache-2.0" - }, - "bincode 1.3.3": { - "name": "bincode", - "version": "1.3.3", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/bincode/1.3.3/download", - "sha256": "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" - } - }, - "targets": [ - { - "Library": { - "crate_name": "bincode", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "bincode", - "common_attrs": { - "compile_data_glob": [ - "**" - ], "deps": { "common": [ { - "id": "serde 1.0.192", - "target": "serde" + "id": "aws-credential-types 0.57.2", + "target": "aws_credential_types" + }, + { + "id": "aws-http 0.57.2", + "target": "aws_http" + }, + { + "id": "aws-runtime 0.57.2", + "target": "aws_runtime" + }, + { + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" + }, + { + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" + }, + { + "id": "aws-smithy-json 0.57.2", + "target": "aws_smithy_json" + }, + { + "id": "aws-smithy-runtime 0.57.2", + "target": "aws_smithy_runtime" + }, + { + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "aws-types 0.57.2", + "target": "aws_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "regex 1.10.2", + "target": "regex" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" } ], "selects": {} }, - "edition": "2015", - "version": "1.3.3" + "edition": "2021", + "version": "0.35.0" }, - "license": "MIT" + "license": "Apache-2.0" }, - "bitflags 1.3.2": { - "name": "bitflags", - "version": "1.3.2", + "aws-sdk-s3 0.35.0": { + "name": "aws-sdk-s3", + "version": "0.35.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/bitflags/1.3.2/download", - "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + "url": "https://crates.io/api/v1/crates/aws-sdk-s3/0.35.0/download", + "sha256": "84022763485483ea17d417f9832d5da198bc36829b59f086c0d35ecd2ce59991" } }, "targets": [ { "Library": { - "crate_name": "bitflags", + "crate_name": "aws_sdk_s3", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1288,35 +1259,132 @@ } } ], - "library_target_name": "bitflags", + "library_target_name": "aws_sdk_s3", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default" + "default", + "rt-tokio", + "rustls", + "sigv4a", + "test-util" ], "selects": {} }, - "edition": "2018", - "version": "1.3.2" + "deps": { + "common": [ + { + "id": "aws-credential-types 0.57.2", + "target": "aws_credential_types" + }, + { + "id": "aws-http 0.57.2", + "target": "aws_http" + }, + { + "id": "aws-runtime 0.57.2", + "target": "aws_runtime" + }, + { + "id": "aws-sigv4 0.57.2", + "target": "aws_sigv4" + }, + { + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" + }, + { + "id": "aws-smithy-checksums 0.57.2", + "target": "aws_smithy_checksums" + }, + { + "id": "aws-smithy-eventstream 0.57.2", + "target": "aws_smithy_eventstream" + }, + { + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" + }, + { + "id": "aws-smithy-json 0.57.2", + "target": "aws_smithy_json" + }, + { + "id": "aws-smithy-runtime 0.57.2", + "target": "aws_smithy_runtime" + }, + { + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "aws-smithy-xml 0.57.2", + "target": "aws_smithy_xml" + }, + { + "id": "aws-types 0.57.2", + "target": "aws_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "http-body 0.4.5", + "target": "http_body" + }, + { + "id": "once_cell 1.18.0", + "target": "once_cell" + }, + { + "id": "percent-encoding 2.3.0", + "target": "percent_encoding" + }, + { + "id": "regex 1.10.2", + "target": "regex" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" + }, + { + "id": "url 2.4.1", + "target": "url" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.35.0" }, - "license": "MIT/Apache-2.0" + "license": "Apache-2.0" }, - "bitflags 2.4.1": { - "name": "bitflags", - "version": "2.4.1", + "aws-sdk-sso 0.36.0": { + "name": "aws-sdk-sso", + "version": "0.36.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/bitflags/2.4.1/download", - "sha256": "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + "url": "https://crates.io/api/v1/crates/aws-sdk-sso/0.36.0/download", + "sha256": "2eb8158015232b4596ccef74a205600398e152d704b40b7ec9f486092474d7fa" } }, "targets": [ { "Library": { - "crate_name": "bitflags", + "crate_name": "aws_sdk_sso", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1324,120 +1392,181 @@ } } ], - "library_target_name": "bitflags", + "library_target_name": "aws_sdk_sso", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "std" + { + "id": "aws-credential-types 0.57.2", + "target": "aws_credential_types" + }, + { + "id": "aws-http 0.57.2", + "target": "aws_http" + }, + { + "id": "aws-runtime 0.57.2", + "target": "aws_runtime" + }, + { + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" + }, + { + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" + }, + { + "id": "aws-smithy-json 0.57.2", + "target": "aws_smithy_json" + }, + { + "id": "aws-smithy-runtime 0.57.2", + "target": "aws_smithy_runtime" + }, + { + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "aws-types 0.57.2", + "target": "aws_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "regex 1.10.2", + "target": "regex" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" + } ], "selects": {} }, "edition": "2021", - "version": "2.4.1" + "version": "0.36.0" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "blake3 1.5.0": { - "name": "blake3", - "version": "1.5.0", + "aws-sdk-ssooidc 0.36.0": { + "name": "aws-sdk-ssooidc", + "version": "0.36.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/blake3/1.5.0/download", - "sha256": "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" + "url": "https://crates.io/api/v1/crates/aws-sdk-ssooidc/0.36.0/download", + "sha256": "36a1493e1c57f173e53621935bfb5b6217376168dbdb4cd459aebcf645924a48" } }, "targets": [ { "Library": { - "crate_name": "blake3", + "crate_name": "aws_sdk_ssooidc", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "blake3", + "library_target_name": "aws_sdk_ssooidc", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "std" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "arrayref 0.3.7", - "target": "arrayref" + "id": "aws-credential-types 0.57.2", + "target": "aws_credential_types" }, { - "id": "arrayvec 0.7.4", - "target": "arrayvec" + "id": "aws-http 0.57.2", + "target": "aws_http" }, { - "id": "blake3 1.5.0", - "target": "build_script_build" + "id": "aws-runtime 0.57.2", + "target": "aws_runtime" }, { - "id": "cfg-if 1.0.0", - "target": "cfg_if" + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" }, { - "id": "constant_time_eq 0.3.0", - "target": "constant_time_eq" + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" + }, + { + "id": "aws-smithy-json 0.57.2", + "target": "aws_smithy_json" + }, + { + "id": "aws-smithy-runtime 0.57.2", + "target": "aws_smithy_runtime" + }, + { + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "aws-types 0.57.2", + "target": "aws_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "regex 1.10.2", + "target": "regex" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" } ], "selects": {} }, "edition": "2021", - "version": "1.5.0" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "cc 1.0.83", - "target": "cc" - } - ], - "selects": {} - } + "version": "0.36.0" }, - "license": "CC0-1.0 OR Apache-2.0" + "license": "Apache-2.0" }, - "block-buffer 0.10.4": { - "name": "block-buffer", - "version": "0.10.4", + "aws-sdk-sts 0.36.0": { + "name": "aws-sdk-sts", + "version": "0.36.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/block-buffer/0.10.4/download", - "sha256": "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" + "url": "https://crates.io/api/v1/crates/aws-sdk-sts/0.36.0/download", + "sha256": "e032b77f5cd1dd3669d777a38ac08cbf8ec68e29460d4ef5d3e50cffa74ec75a" } }, "targets": [ { "Library": { - "crate_name": "block_buffer", + "crate_name": "aws_sdk_sts", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1445,7 +1574,7 @@ } } ], - "library_target_name": "block_buffer", + "library_target_name": "aws_sdk_sts", "common_attrs": { "compile_data_glob": [ "**" @@ -1453,30 +1582,86 @@ "deps": { "common": [ { - "id": "generic-array 0.14.7", - "target": "generic_array" + "id": "aws-credential-types 0.57.2", + "target": "aws_credential_types" + }, + { + "id": "aws-http 0.57.2", + "target": "aws_http" + }, + { + "id": "aws-runtime 0.57.2", + "target": "aws_runtime" + }, + { + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" + }, + { + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" + }, + { + "id": "aws-smithy-json 0.57.2", + "target": "aws_smithy_json" + }, + { + "id": "aws-smithy-query 0.57.2", + "target": "aws_smithy_query" + }, + { + "id": "aws-smithy-runtime 0.57.2", + "target": "aws_smithy_runtime" + }, + { + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "aws-smithy-xml 0.57.2", + "target": "aws_smithy_xml" + }, + { + "id": "aws-types 0.57.2", + "target": "aws_types" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "regex 1.10.2", + "target": "regex" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" } ], "selects": {} }, - "edition": "2018", - "version": "0.10.4" + "edition": "2021", + "version": "0.36.0" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "block-buffer 0.9.0": { - "name": "block-buffer", - "version": "0.9.0", + "aws-sigv4 0.57.2": { + "name": "aws-sigv4", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/block-buffer/0.9.0/download", - "sha256": "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" + "url": "https://crates.io/api/v1/crates/aws-sigv4/0.57.2/download", + "sha256": "64f81a6abc4daab06b53cabf27c54189928893283093e37164ca53aa47488a5b" } }, "targets": [ { "Library": { - "crate_name": "block_buffer", + "crate_name": "aws_sigv4", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1484,68 +1669,120 @@ } } ], - "library_target_name": "block_buffer", + "library_target_name": "aws_sigv4", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "generic-array 0.14.7", - "target": "generic_array" - } + "default", + "http0-compat", + "sign-eventstream", + "sign-http", + "sigv4a" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "aws-credential-types 0.57.2", + "target": "aws_credential_types" + }, + { + "id": "aws-smithy-eventstream 0.57.2", + "target": "aws_smithy_eventstream" + }, + { + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" + }, + { + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "form_urlencoded 1.2.0", + "target": "form_urlencoded" + }, + { + "id": "hex 0.4.3", + "target": "hex" + }, + { + "id": "hmac 0.12.1", + "target": "hmac" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "num-bigint 0.4.4", + "target": "num_bigint" + }, + { + "id": "once_cell 1.18.0", + "target": "once_cell" + }, + { + "id": "p256 0.11.1", + "target": "p256" + }, + { + "id": "percent-encoding 2.3.0", + "target": "percent_encoding" + }, + { + "id": "regex 1.10.2", + "target": "regex" + }, + { + "id": "ring 0.17.5", + "target": "ring" + }, + { + "id": "sha2 0.10.8", + "target": "sha2" + }, + { + "id": "time 0.3.30", + "target": "time" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" + }, + { + "id": "zeroize 1.7.0", + "target": "zeroize" + } ], "selects": {} }, - "edition": "2018", - "version": "0.9.0" - }, - "license": "MIT OR Apache-2.0" - }, - "bumpalo 3.14.0": { - "name": "bumpalo", - "version": "3.14.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/bumpalo/3.14.0/download", - "sha256": "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" - } - }, - "targets": [ - { - "Library": { - "crate_name": "bumpalo", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "bumpalo", - "common_attrs": { - "compile_data_glob": [ - "**" - ], "edition": "2021", - "version": "3.14.0" + "version": "0.57.2" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "byteorder 1.5.0": { - "name": "byteorder", - "version": "1.5.0", + "aws-smithy-async 0.57.2": { + "name": "aws-smithy-async", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/byteorder/1.5.0/download", - "sha256": "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + "url": "https://crates.io/api/v1/crates/aws-smithy-async/0.57.2/download", + "sha256": "dbe53fccd3b10414b9cae63767a15a2789b34e6c6727b6e32b33e8c7998a3e80" } }, "targets": [ { "Library": { - "crate_name": "byteorder", + "crate_name": "aws_smithy_async", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1553,36 +1790,52 @@ } } ], - "library_target_name": "byteorder", + "library_target_name": "aws_smithy_async", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default", - "std" + "rt-tokio" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "futures-util 0.3.29", + "target": "futures_util" + }, + { + "id": "pin-project-lite 0.2.13", + "target": "pin_project_lite" + }, + { + "id": "tokio 1.34.0", + "target": "tokio" + } ], "selects": {} }, "edition": "2021", - "version": "1.5.0" + "version": "0.57.2" }, - "license": "Unlicense OR MIT" + "license": "Apache-2.0" }, - "bytes 1.5.0": { - "name": "bytes", - "version": "1.5.0", + "aws-smithy-checksums 0.57.2": { + "name": "aws-smithy-checksums", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/bytes/1.5.0/download", - "sha256": "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + "url": "https://crates.io/api/v1/crates/aws-smithy-checksums/0.57.2/download", + "sha256": "9fb5701fbfb40600cc0fa547f318552dfd4e632b2099bd75d95fb0faae70675d" } }, "targets": [ { "Library": { - "crate_name": "bytes", + "crate_name": "aws_smithy_checksums", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1590,36 +1843,86 @@ } } ], - "library_target_name": "bytes", + "library_target_name": "aws_smithy_checksums", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "default", - "std" + { + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "crc32c 0.6.4", + "target": "crc32c" + }, + { + "id": "crc32fast 1.3.2", + "target": "crc32fast" + }, + { + "id": "hex 0.4.3", + "target": "hex" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "http-body 0.4.5", + "target": "http_body" + }, + { + "id": "md-5 0.10.6", + "target": "md5" + }, + { + "id": "pin-project-lite 0.2.13", + "target": "pin_project_lite" + }, + { + "id": "sha1 0.10.6", + "target": "sha1" + }, + { + "id": "sha2 0.10.8", + "target": "sha2" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" + } ], "selects": {} }, - "edition": "2018", - "version": "1.5.0" + "edition": "2021", + "version": "0.57.2" }, - "license": "MIT" + "license": "Apache-2.0" }, - "cc 1.0.83": { - "name": "cc", - "version": "1.0.83", + "aws-smithy-eventstream 0.57.2": { + "name": "aws-smithy-eventstream", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cc/1.0.83/download", - "sha256": "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" + "url": "https://crates.io/api/v1/crates/aws-smithy-eventstream/0.57.2/download", + "sha256": "6b33fa99f928a5815b94ee07e1377901bcf51aa749034a2c802dc38f9dcfacf5" } }, "targets": [ { "Library": { - "crate_name": "cc", + "crate_name": "aws_smithy_eventstream", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1627,70 +1930,46 @@ } } ], - "library_target_name": "cc", + "library_target_name": "aws_smithy_eventstream", "common_attrs": { "compile_data_glob": [ "**" ], "deps": { - "common": [], - "selects": { - "cfg(unix)": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ] - } + "common": [ + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "crc32fast 1.3.2", + "target": "crc32fast" + } + ], + "selects": {} }, - "edition": "2018", - "version": "1.0.83" - }, - "license": "MIT OR Apache-2.0" - }, - "cfg-if 1.0.0": { - "name": "cfg-if", - "version": "1.0.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/cfg-if/1.0.0/download", - "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - } - }, - "targets": [ - { - "Library": { - "crate_name": "cfg_if", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "cfg_if", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "edition": "2018", - "version": "1.0.0" + "edition": "2021", + "version": "0.57.2" }, - "license": "MIT/Apache-2.0" + "license": "Apache-2.0" }, - "chrono 0.4.31": { - "name": "chrono", - "version": "0.4.31", + "aws-smithy-http 0.57.2": { + "name": "aws-smithy-http", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/chrono/0.4.31/download", - "sha256": "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" + "url": "https://crates.io/api/v1/crates/aws-smithy-http/0.57.2/download", + "sha256": "f7972373213d1d6e619c0edc9dda2d6634154e4ed75c5e0b2bf065cd5ec9f0d1" } }, "targets": [ { "Library": { - "crate_name": "chrono", + "crate_name": "aws_smithy_http", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1698,88 +1977,93 @@ } } ], - "library_target_name": "chrono", + "library_target_name": "aws_smithy_http", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "android-tzdata", - "clock", - "default", - "iana-time-zone", - "js-sys", - "oldtime", - "serde", - "std", - "wasm-bindgen", - "wasmbind", - "winapi", - "windows-targets" + "aws-smithy-eventstream", + "event-stream" ], "selects": {} }, "deps": { "common": [ { - "id": "num-traits 0.2.17", - "target": "num_traits" + "id": "aws-smithy-eventstream 0.57.2", + "target": "aws_smithy_eventstream" }, { - "id": "serde 1.0.192", - "target": "serde" + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "bytes-utils 0.1.4", + "target": "bytes_utils" + }, + { + "id": "futures-core 0.3.29", + "target": "futures_core" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "http-body 0.4.5", + "target": "http_body" + }, + { + "id": "once_cell 1.18.0", + "target": "once_cell" + }, + { + "id": "percent-encoding 2.3.0", + "target": "percent_encoding" + }, + { + "id": "pin-project-lite 0.2.13", + "target": "pin_project_lite" + }, + { + "id": "pin-utils 0.1.0", + "target": "pin_utils" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" } ], - "selects": { - "cfg(all(target_arch = \"wasm32\", not(any(target_os = \"emscripten\", target_os = \"wasi\"))))": [ - { - "id": "js-sys 0.3.65", - "target": "js_sys" - }, - { - "id": "wasm-bindgen 0.2.88", - "target": "wasm_bindgen" - } - ], - "cfg(target_os = \"android\")": [ - { - "id": "android-tzdata 0.1.1", - "target": "android_tzdata" - } - ], - "cfg(unix)": [ - { - "id": "iana-time-zone 0.1.58", - "target": "iana_time_zone" - } - ], - "cfg(windows)": [ - { - "id": "windows-targets 0.48.5", - "target": "windows_targets" - } - ] - } + "selects": {} }, "edition": "2021", - "version": "0.4.31" + "version": "0.57.2" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "clap 4.4.8": { - "name": "clap", - "version": "4.4.8", + "aws-smithy-json 0.57.2": { + "name": "aws-smithy-json", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/clap/4.4.8/download", - "sha256": "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" + "url": "https://crates.io/api/v1/crates/aws-smithy-json/0.57.2/download", + "sha256": "b6d64d5af16dd585de9ff6c606423c1aaad47c6baa38de41c2beb32ef21c6645" } }, "targets": [ { "Library": { - "crate_name": "clap", + "crate_name": "aws_smithy_json", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1787,60 +2071,38 @@ } } ], - "library_target_name": "clap", + "library_target_name": "aws_smithy_json", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "color", - "default", - "derive", - "error-context", - "help", - "std", - "suggestions", - "usage" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "clap_builder 4.4.8", - "target": "clap_builder" + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" } ], "selects": {} }, "edition": "2021", - "proc_macro_deps": { - "common": [ - { - "id": "clap_derive 4.4.7", - "target": "clap_derive" - } - ], - "selects": {} - }, - "version": "4.4.8" + "version": "0.57.2" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "clap_builder 4.4.8": { - "name": "clap_builder", - "version": "4.4.8", + "aws-smithy-protocol-test 0.57.2": { + "name": "aws-smithy-protocol-test", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/clap_builder/4.4.8/download", - "sha256": "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" + "url": "https://crates.io/api/v1/crates/aws-smithy-protocol-test/0.57.2/download", + "sha256": "26f2e88fc47108b787e2a5419adc22436db606557613e0bb02836d38e83c19bb" } }, "targets": [ { "Library": { - "crate_name": "clap_builder", + "crate_name": "aws_smithy_protocol_test", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1848,61 +2110,66 @@ } } ], - "library_target_name": "clap_builder", + "library_target_name": "aws_smithy_protocol_test", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "color", - "error-context", - "help", - "std", - "suggestions", - "usage" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "anstream 0.6.4", - "target": "anstream" + "id": "assert-json-diff 1.1.0", + "target": "assert_json_diff" }, { - "id": "anstyle 1.0.4", - "target": "anstyle" + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" }, { - "id": "clap_lex 0.6.0", - "target": "clap_lex" + "id": "http 0.2.11", + "target": "http" }, { - "id": "strsim 0.10.0", - "target": "strsim" + "id": "pretty_assertions 1.4.0", + "target": "pretty_assertions" + }, + { + "id": "regex 1.10.2", + "target": "regex" + }, + { + "id": "roxmltree 0.14.1", + "target": "roxmltree" + }, + { + "id": "serde_json 1.0.108", + "target": "serde_json" + }, + { + "id": "thiserror 1.0.50", + "target": "thiserror" } ], "selects": {} }, "edition": "2021", - "version": "4.4.8" + "version": "0.57.2" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "clap_derive 4.4.7": { - "name": "clap_derive", - "version": "4.4.7", + "aws-smithy-query 0.57.2": { + "name": "aws-smithy-query", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/clap_derive/4.4.7/download", - "sha256": "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" + "url": "https://crates.io/api/v1/crates/aws-smithy-query/0.57.2/download", + "sha256": "7527bf5335154ba1b285479c50b630e44e93d1b4a759eaceb8d0bf9fbc82caa5" } }, "targets": [ { - "ProcMacro": { - "crate_name": "clap_derive", + "Library": { + "crate_name": "aws_smithy_query", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -1910,116 +2177,42 @@ } } ], - "library_target_name": "clap_derive", + "library_target_name": "aws_smithy_query", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "heck 0.4.1", - "target": "heck" - }, - { - "id": "proc-macro2 1.0.69", - "target": "proc_macro2" - }, - { - "id": "quote 1.0.33", - "target": "quote" + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" }, { - "id": "syn 2.0.39", - "target": "syn" + "id": "urlencoding 2.1.3", + "target": "urlencoding" } ], "selects": {} }, "edition": "2021", - "version": "4.4.7" - }, - "license": "MIT OR Apache-2.0" - }, - "clap_lex 0.6.0": { - "name": "clap_lex", - "version": "0.6.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/clap_lex/0.6.0/download", - "sha256": "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" - } - }, - "targets": [ - { - "Library": { - "crate_name": "clap_lex", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "clap_lex", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "edition": "2021", - "version": "0.6.0" - }, - "license": "MIT OR Apache-2.0" - }, - "colorchoice 1.0.0": { - "name": "colorchoice", - "version": "1.0.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/colorchoice/1.0.0/download", - "sha256": "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" - } - }, - "targets": [ - { - "Library": { - "crate_name": "colorchoice", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "colorchoice", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "edition": "2021", - "version": "1.0.0" + "version": "0.57.2" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "constant_time_eq 0.3.0": { - "name": "constant_time_eq", - "version": "0.3.0", + "aws-smithy-runtime 0.57.2": { + "name": "aws-smithy-runtime", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/constant_time_eq/0.3.0/download", - "sha256": "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + "url": "https://crates.io/api/v1/crates/aws-smithy-runtime/0.57.2/download", + "sha256": "839b363adf3b2bdab2742a1f540fec23039ea8bc9ec0f9f61df48470cfe5527b" } }, "targets": [ { "Library": { - "crate_name": "constant_time_eq", + "crate_name": "aws_smithy_runtime", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -2027,29 +2220,126 @@ } } ], - "library_target_name": "constant_time_eq", + "library_target_name": "aws_smithy_runtime", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2021", - "version": "0.3.0" - }, - "license": "CC0-1.0 OR MIT-0 OR Apache-2.0" - }, - "core-foundation 0.9.3": { - "name": "core-foundation", - "version": "0.9.3", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/core-foundation/0.9.3/download", - "sha256": "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" + "crate_features": { + "common": [ + "client", + "connector-hyper-0-14-x", + "rt-tokio", + "test-util", + "tls-rustls" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" + }, + { + "id": "aws-smithy-http 0.57.2", + "target": "aws_smithy_http" + }, + { + "id": "aws-smithy-protocol-test 0.57.2", + "target": "aws_smithy_protocol_test" + }, + { + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "fastrand 2.0.1", + "target": "fastrand" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "http-body 0.4.5", + "target": "http_body", + "alias": "http_body_0_4" + }, + { + "id": "hyper 0.14.27", + "target": "hyper", + "alias": "hyper_0_14" + }, + { + "id": "hyper-rustls 0.24.2", + "target": "hyper_rustls" + }, + { + "id": "once_cell 1.18.0", + "target": "once_cell" + }, + { + "id": "pin-project-lite 0.2.13", + "target": "pin_project_lite" + }, + { + "id": "pin-utils 0.1.0", + "target": "pin_utils" + }, + { + "id": "rustls 0.21.9", + "target": "rustls" + }, + { + "id": "serde 1.0.192", + "target": "serde" + }, + { + "id": "serde_json 1.0.108", + "target": "serde_json" + }, + { + "id": "tokio 1.34.0", + "target": "tokio" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" + }, + { + "id": "tracing-subscriber 0.3.18", + "target": "tracing_subscriber" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.57.2" + }, + "license": "Apache-2.0" + }, + "aws-smithy-runtime-api 0.57.2": { + "name": "aws-smithy-runtime-api", + "version": "0.57.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/aws-smithy-runtime-api/0.57.2/download", + "sha256": "f24ecc446e62c3924539e7c18dec8038dba4fdf8718d5c2de62f9d2fecca8ba9" } }, "targets": [ { "Library": { - "crate_name": "core_foundation", + "crate_name": "aws_smithy_runtime_api", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -2057,42 +2347,75 @@ } } ], - "library_target_name": "core_foundation", + "library_target_name": "aws_smithy_runtime_api", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "client", + "default", + "http-auth", + "test-util" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "core-foundation-sys 0.8.4", - "target": "core_foundation_sys" + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" }, { - "id": "libc 0.2.150", - "target": "libc" + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "pin-project-lite 0.2.13", + "target": "pin_project_lite" + }, + { + "id": "tokio 1.34.0", + "target": "tokio" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" + }, + { + "id": "zeroize 1.7.0", + "target": "zeroize" } ], "selects": {} }, - "edition": "2015", - "version": "0.9.3" + "edition": "2021", + "version": "0.57.2" }, - "license": "MIT / Apache-2.0" + "license": "Apache-2.0" }, - "core-foundation-sys 0.8.4": { - "name": "core-foundation-sys", - "version": "0.8.4", + "aws-smithy-types 0.57.2": { + "name": "aws-smithy-types", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/core-foundation-sys/0.8.4/download", - "sha256": "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + "url": "https://crates.io/api/v1/crates/aws-smithy-types/0.57.2/download", + "sha256": "051de910296522a21178a2ea402ea59027eef4b63f1cef04a0be2bb5e25dea03" } }, "targets": [ { "Library": { - "crate_name": "core_foundation_sys", + "crate_name": "aws_smithy_types", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -2100,29 +2423,107 @@ } } ], - "library_target_name": "core_foundation_sys", + "library_target_name": "aws_smithy_types", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2015", - "version": "0.8.4" + "crate_features": { + "common": [ + "byte-stream-poll-next", + "http-body-0-4-x", + "rt-tokio", + "test-util" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "base64-simd 0.8.0", + "target": "base64_simd" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "bytes-utils 0.1.4", + "target": "bytes_utils" + }, + { + "id": "futures-core 0.3.29", + "target": "futures_core" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "http-body 0.4.5", + "target": "http_body", + "alias": "http_body_0_4" + }, + { + "id": "itoa 1.0.9", + "target": "itoa" + }, + { + "id": "num-integer 0.1.45", + "target": "num_integer" + }, + { + "id": "pin-project-lite 0.2.13", + "target": "pin_project_lite" + }, + { + "id": "pin-utils 0.1.0", + "target": "pin_utils" + }, + { + "id": "ryu 1.0.15", + "target": "ryu" + }, + { + "id": "time 0.3.30", + "target": "time" + }, + { + "id": "tokio 1.34.0", + "target": "tokio" + }, + { + "id": "tokio-util 0.7.10", + "target": "tokio_util" + } + ], + "selects": { + "cfg(aws_sdk_unstable)": [ + { + "id": "serde 1.0.192", + "target": "serde" + } + ] + } + }, + "edition": "2021", + "version": "0.57.2" }, - "license": "MIT / Apache-2.0" + "license": "Apache-2.0" }, - "cpufeatures 0.2.11": { - "name": "cpufeatures", - "version": "0.2.11", + "aws-smithy-xml 0.57.2": { + "name": "aws-smithy-xml", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cpufeatures/0.2.11/download", - "sha256": "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" + "url": "https://crates.io/api/v1/crates/aws-smithy-xml/0.57.2/download", + "sha256": "cb1e3ac22c652662096c8e37a6f9af80c6f3520cab5610b2fe76c725bce18eac" } }, "targets": [ { "Library": { - "crate_name": "cpufeatures", + "crate_name": "aws_smithy_xml", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -2130,58 +2531,38 @@ } } ], - "library_target_name": "cpufeatures", + "library_target_name": "aws_smithy_xml", "common_attrs": { "compile_data_glob": [ "**" ], "deps": { - "common": [], - "selects": { - "aarch64-linux-android": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ], - "cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ], - "cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ], - "cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ] - } + "common": [ + { + "id": "xmlparser 0.13.6", + "target": "xmlparser" + } + ], + "selects": {} }, - "edition": "2018", - "version": "0.2.11" + "edition": "2021", + "version": "0.57.2" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "crc32fast 1.3.2": { - "name": "crc32fast", - "version": "1.3.2", + "aws-types 0.57.2": { + "name": "aws-types", + "version": "0.57.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/crc32fast/1.3.2/download", - "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" + "url": "https://crates.io/api/v1/crates/aws-types/0.57.2/download", + "sha256": "048bbf1c24cdf4eb1efcdc243388a93a90ebf63979e25fc1c7b8cbd9cb6beb38" } }, "targets": [ { "Library": { - "crate_name": "crc32fast", + "crate_name": "aws_types", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -2198,18 +2579,1581 @@ } } ], - "library_target_name": "crc32fast", + "library_target_name": "aws_types", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "std" - ], - "selects": {} - }, + "deps": { + "common": [ + { + "id": "aws-credential-types 0.57.2", + "target": "aws_credential_types" + }, + { + "id": "aws-smithy-async 0.57.2", + "target": "aws_smithy_async" + }, + { + "id": "aws-smithy-runtime-api 0.57.2", + "target": "aws_smithy_runtime_api" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" + }, + { + "id": "aws-types 0.57.2", + "target": "build_script_build" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "tracing 0.1.40", + "target": "tracing" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.57.2" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "rustc_version 0.4.0", + "target": "rustc_version" + } + ], + "selects": {} + } + }, + "license": "Apache-2.0" + }, + "axum 0.6.20": { + "name": "axum", + "version": "0.6.20", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/axum/0.6.20/download", + "sha256": "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" + } + }, + "targets": [ + { + "Library": { + "crate_name": "axum", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "axum", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "form", + "http1", + "json", + "matched-path", + "original-uri", + "query", + "tokio", + "tower-log" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "axum 0.6.20", + "target": "build_script_build" + }, + { + "id": "axum-core 0.3.4", + "target": "axum_core" + }, + { + "id": "bitflags 1.3.2", + "target": "bitflags" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "futures-util 0.3.29", + "target": "futures_util" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "http-body 0.4.5", + "target": "http_body" + }, + { + "id": "hyper 0.14.27", + "target": "hyper" + }, + { + "id": "itoa 1.0.9", + "target": "itoa" + }, + { + "id": "matchit 0.7.3", + "target": "matchit" + }, + { + "id": "memchr 2.6.4", + "target": "memchr" + }, + { + "id": "mime 0.3.17", + "target": "mime" + }, + { + "id": "percent-encoding 2.3.0", + "target": "percent_encoding" + }, + { + "id": "pin-project-lite 0.2.13", + "target": "pin_project_lite" + }, + { + "id": "serde 1.0.192", + "target": "serde" + }, + { + "id": "serde_json 1.0.108", + "target": "serde_json" + }, + { + "id": "serde_path_to_error 0.1.14", + "target": "serde_path_to_error" + }, + { + "id": "serde_urlencoded 0.7.1", + "target": "serde_urlencoded" + }, + { + "id": "sync_wrapper 0.1.2", + "target": "sync_wrapper" + }, + { + "id": "tokio 1.34.0", + "target": "tokio" + }, + { + "id": "tower 0.4.13", + "target": "tower" + }, + { + "id": "tower-layer 0.3.2", + "target": "tower_layer" + }, + { + "id": "tower-service 0.3.2", + "target": "tower_service" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "async-trait 0.1.74", + "target": "async_trait" + } + ], + "selects": {} + }, + "version": "0.6.20" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "proc_macro_deps": { + "common": [ + { + "id": "rustversion 1.0.14", + "target": "rustversion" + } + ], + "selects": {} + } + }, + "license": "MIT" + }, + "axum-core 0.3.4": { + "name": "axum-core", + "version": "0.3.4", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/axum-core/0.3.4/download", + "sha256": "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" + } + }, + "targets": [ + { + "Library": { + "crate_name": "axum_core", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "axum_core", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "axum-core 0.3.4", + "target": "build_script_build" + }, + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "futures-util 0.3.29", + "target": "futures_util" + }, + { + "id": "http 0.2.11", + "target": "http" + }, + { + "id": "http-body 0.4.5", + "target": "http_body" + }, + { + "id": "mime 0.3.17", + "target": "mime" + }, + { + "id": "tower-layer 0.3.2", + "target": "tower_layer" + }, + { + "id": "tower-service 0.3.2", + "target": "tower_service" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "async-trait 0.1.74", + "target": "async_trait" + } + ], + "selects": {} + }, + "version": "0.3.4" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "proc_macro_deps": { + "common": [ + { + "id": "rustversion 1.0.14", + "target": "rustversion" + } + ], + "selects": {} + } + }, + "license": "MIT" + }, + "backtrace 0.3.69": { + "name": "backtrace", + "version": "0.3.69", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/backtrace/0.3.69/download", + "sha256": "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" + } + }, + "targets": [ + { + "Library": { + "crate_name": "backtrace", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "backtrace", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "backtrace 0.3.69", + "target": "build_script_build" + }, + { + "id": "cfg-if 1.0.0", + "target": "cfg_if" + }, + { + "id": "rustc-demangle 0.1.23", + "target": "rustc_demangle" + } + ], + "selects": { + "cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))": [ + { + "id": "addr2line 0.21.0", + "target": "addr2line" + }, + { + "id": "libc 0.2.150", + "target": "libc" + }, + { + "id": "miniz_oxide 0.7.1", + "target": "miniz_oxide" + }, + { + "id": "object 0.32.1", + "target": "object" + } + ] + } + }, + "edition": "2018", + "version": "0.3.69" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "cc 1.0.83", + "target": "cc" + } + ], + "selects": {} + } + }, + "license": "MIT OR Apache-2.0" + }, + "base16ct 0.1.1": { + "name": "base16ct", + "version": "0.1.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/base16ct/0.1.1/download", + "sha256": "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + } + }, + "targets": [ + { + "Library": { + "crate_name": "base16ct", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "base16ct", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc" + ], + "selects": {} + }, + "edition": "2021", + "version": "0.1.1" + }, + "license": "Apache-2.0 OR MIT" + }, + "base64 0.21.5": { + "name": "base64", + "version": "0.21.5", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/base64/0.21.5/download", + "sha256": "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + } + }, + "targets": [ + { + "Library": { + "crate_name": "base64", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "base64", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "default", + "std" + ], + "selects": {} + }, + "edition": "2018", + "version": "0.21.5" + }, + "license": "MIT OR Apache-2.0" + }, + "base64-simd 0.8.0": { + "name": "base64-simd", + "version": "0.8.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/base64-simd/0.8.0/download", + "sha256": "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" + } + }, + "targets": [ + { + "Library": { + "crate_name": "base64_simd", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "base64_simd", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "default", + "detect", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "outref 0.5.1", + "target": "outref" + }, + { + "id": "vsimd 0.8.0", + "target": "vsimd" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.8.0" + }, + "license": "MIT" + }, + "base64ct 1.6.0": { + "name": "base64ct", + "version": "1.6.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/base64ct/1.6.0/download", + "sha256": "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + } + }, + "targets": [ + { + "Library": { + "crate_name": "base64ct", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "base64ct", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc" + ], + "selects": {} + }, + "edition": "2021", + "version": "1.6.0" + }, + "license": "Apache-2.0 OR MIT" + }, + "bincode 1.3.3": { + "name": "bincode", + "version": "1.3.3", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/bincode/1.3.3/download", + "sha256": "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" + } + }, + "targets": [ + { + "Library": { + "crate_name": "bincode", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "bincode", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "serde 1.0.192", + "target": "serde" + } + ], + "selects": {} + }, + "edition": "2015", + "version": "1.3.3" + }, + "license": "MIT" + }, + "bitflags 1.3.2": { + "name": "bitflags", + "version": "1.3.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/bitflags/1.3.2/download", + "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + } + }, + "targets": [ + { + "Library": { + "crate_name": "bitflags", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "bitflags", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "edition": "2018", + "version": "1.3.2" + }, + "license": "MIT/Apache-2.0" + }, + "bitflags 2.4.1": { + "name": "bitflags", + "version": "2.4.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/bitflags/2.4.1/download", + "sha256": "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + } + }, + "targets": [ + { + "Library": { + "crate_name": "bitflags", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "bitflags", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "std" + ], + "selects": {} + }, + "edition": "2021", + "version": "2.4.1" + }, + "license": "MIT OR Apache-2.0" + }, + "blake3 1.5.0": { + "name": "blake3", + "version": "1.5.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/blake3/1.5.0/download", + "sha256": "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" + } + }, + "targets": [ + { + "Library": { + "crate_name": "blake3", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "blake3", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "arrayref 0.3.7", + "target": "arrayref" + }, + { + "id": "arrayvec 0.7.4", + "target": "arrayvec" + }, + { + "id": "blake3 1.5.0", + "target": "build_script_build" + }, + { + "id": "cfg-if 1.0.0", + "target": "cfg_if" + }, + { + "id": "constant_time_eq 0.3.0", + "target": "constant_time_eq" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "1.5.0" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "cc 1.0.83", + "target": "cc" + } + ], + "selects": {} + } + }, + "license": "CC0-1.0 OR Apache-2.0" + }, + "block-buffer 0.10.4": { + "name": "block-buffer", + "version": "0.10.4", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/block-buffer/0.10.4/download", + "sha256": "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" + } + }, + "targets": [ + { + "Library": { + "crate_name": "block_buffer", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "block_buffer", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "generic-array 0.14.7", + "target": "generic_array" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.10.4" + }, + "license": "MIT OR Apache-2.0" + }, + "bumpalo 3.14.0": { + "name": "bumpalo", + "version": "3.14.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/bumpalo/3.14.0/download", + "sha256": "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + } + }, + "targets": [ + { + "Library": { + "crate_name": "bumpalo", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "bumpalo", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2021", + "version": "3.14.0" + }, + "license": "MIT OR Apache-2.0" + }, + "byteorder 1.5.0": { + "name": "byteorder", + "version": "1.5.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/byteorder/1.5.0/download", + "sha256": "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + } + }, + "targets": [ + { + "Library": { + "crate_name": "byteorder", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "byteorder", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, + "edition": "2021", + "version": "1.5.0" + }, + "license": "Unlicense OR MIT" + }, + "bytes 1.5.0": { + "name": "bytes", + "version": "1.5.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/bytes/1.5.0/download", + "sha256": "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + } + }, + "targets": [ + { + "Library": { + "crate_name": "bytes", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "bytes", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, + "edition": "2018", + "version": "1.5.0" + }, + "license": "MIT" + }, + "bytes-utils 0.1.4": { + "name": "bytes-utils", + "version": "0.1.4", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/bytes-utils/0.1.4/download", + "sha256": "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" + } + }, + "targets": [ + { + "Library": { + "crate_name": "bytes_utils", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "bytes_utils", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "bytes 1.5.0", + "target": "bytes" + }, + { + "id": "either 1.9.0", + "target": "either" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.1.4" + }, + "license": "Apache-2.0/MIT" + }, + "cc 1.0.83": { + "name": "cc", + "version": "1.0.83", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/cc/1.0.83/download", + "sha256": "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" + } + }, + "targets": [ + { + "Library": { + "crate_name": "cc", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "cc", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [], + "selects": { + "cfg(unix)": [ + { + "id": "libc 0.2.150", + "target": "libc" + } + ] + } + }, + "edition": "2018", + "version": "1.0.83" + }, + "license": "MIT OR Apache-2.0" + }, + "cfg-if 1.0.0": { + "name": "cfg-if", + "version": "1.0.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/cfg-if/1.0.0/download", + "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + } + }, + "targets": [ + { + "Library": { + "crate_name": "cfg_if", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "cfg_if", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2018", + "version": "1.0.0" + }, + "license": "MIT/Apache-2.0" + }, + "clap 4.4.8": { + "name": "clap", + "version": "4.4.8", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/clap/4.4.8/download", + "sha256": "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" + } + }, + "targets": [ + { + "Library": { + "crate_name": "clap", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "clap", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "color", + "default", + "derive", + "error-context", + "help", + "std", + "suggestions", + "usage" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "clap_builder 4.4.8", + "target": "clap_builder" + } + ], + "selects": {} + }, + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "clap_derive 4.4.7", + "target": "clap_derive" + } + ], + "selects": {} + }, + "version": "4.4.8" + }, + "license": "MIT OR Apache-2.0" + }, + "clap_builder 4.4.8": { + "name": "clap_builder", + "version": "4.4.8", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/clap_builder/4.4.8/download", + "sha256": "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" + } + }, + "targets": [ + { + "Library": { + "crate_name": "clap_builder", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "clap_builder", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "color", + "error-context", + "help", + "std", + "suggestions", + "usage" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "anstream 0.6.4", + "target": "anstream" + }, + { + "id": "anstyle 1.0.4", + "target": "anstyle" + }, + { + "id": "clap_lex 0.6.0", + "target": "clap_lex" + }, + { + "id": "strsim 0.10.0", + "target": "strsim" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "4.4.8" + }, + "license": "MIT OR Apache-2.0" + }, + "clap_derive 4.4.7": { + "name": "clap_derive", + "version": "4.4.7", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/clap_derive/4.4.7/download", + "sha256": "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" + } + }, + "targets": [ + { + "ProcMacro": { + "crate_name": "clap_derive", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "clap_derive", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "heck 0.4.1", + "target": "heck" + }, + { + "id": "proc-macro2 1.0.69", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.33", + "target": "quote" + }, + { + "id": "syn 2.0.39", + "target": "syn" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "4.4.7" + }, + "license": "MIT OR Apache-2.0" + }, + "clap_lex 0.6.0": { + "name": "clap_lex", + "version": "0.6.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/clap_lex/0.6.0/download", + "sha256": "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + } + }, + "targets": [ + { + "Library": { + "crate_name": "clap_lex", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "clap_lex", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2021", + "version": "0.6.0" + }, + "license": "MIT OR Apache-2.0" + }, + "colorchoice 1.0.0": { + "name": "colorchoice", + "version": "1.0.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/colorchoice/1.0.0/download", + "sha256": "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + } + }, + "targets": [ + { + "Library": { + "crate_name": "colorchoice", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "colorchoice", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2021", + "version": "1.0.0" + }, + "license": "MIT OR Apache-2.0" + }, + "const-oid 0.9.5": { + "name": "const-oid", + "version": "0.9.5", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/const-oid/0.9.5/download", + "sha256": "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" + } + }, + "targets": [ + { + "Library": { + "crate_name": "const_oid", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "const_oid", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2021", + "version": "0.9.5" + }, + "license": "Apache-2.0 OR MIT" + }, + "constant_time_eq 0.3.0": { + "name": "constant_time_eq", + "version": "0.3.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/constant_time_eq/0.3.0/download", + "sha256": "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + } + }, + "targets": [ + { + "Library": { + "crate_name": "constant_time_eq", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "constant_time_eq", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2021", + "version": "0.3.0" + }, + "license": "CC0-1.0 OR MIT-0 OR Apache-2.0" + }, + "core-foundation 0.9.3": { + "name": "core-foundation", + "version": "0.9.3", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/core-foundation/0.9.3/download", + "sha256": "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" + } + }, + "targets": [ + { + "Library": { + "crate_name": "core_foundation", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "core_foundation", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "core-foundation-sys 0.8.4", + "target": "core_foundation_sys" + }, + { + "id": "libc 0.2.150", + "target": "libc" + } + ], + "selects": {} + }, + "edition": "2015", + "version": "0.9.3" + }, + "license": "MIT / Apache-2.0" + }, + "core-foundation-sys 0.8.4": { + "name": "core-foundation-sys", + "version": "0.8.4", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/core-foundation-sys/0.8.4/download", + "sha256": "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + } + }, + "targets": [ + { + "Library": { + "crate_name": "core_foundation_sys", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "core_foundation_sys", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2015", + "version": "0.8.4" + }, + "license": "MIT / Apache-2.0" + }, + "cpufeatures 0.2.11": { + "name": "cpufeatures", + "version": "0.2.11", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/cpufeatures/0.2.11/download", + "sha256": "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" + } + }, + "targets": [ + { + "Library": { + "crate_name": "cpufeatures", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "cpufeatures", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [], + "selects": { + "aarch64-linux-android": [ + { + "id": "libc 0.2.150", + "target": "libc" + } + ], + "cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))": [ + { + "id": "libc 0.2.150", + "target": "libc" + } + ], + "cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))": [ + { + "id": "libc 0.2.150", + "target": "libc" + } + ], + "cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))": [ + { + "id": "libc 0.2.150", + "target": "libc" + } + ] + } + }, + "edition": "2018", + "version": "0.2.11" + }, + "license": "MIT OR Apache-2.0" + }, + "crc32c 0.6.4": { + "name": "crc32c", + "version": "0.6.4", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/crc32c/0.6.4/download", + "sha256": "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74" + } + }, + "targets": [ + { + "Library": { + "crate_name": "crc32c", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "crc32c", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "crc32c 0.6.4", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.6.4" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "rustc_version 0.4.0", + "target": "rustc_version" + } + ], + "selects": {} + } + }, + "license": "Apache-2.0/MIT" + }, + "crc32fast 1.3.2": { + "name": "crc32fast", + "version": "1.3.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/crc32fast/1.3.2/download", + "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" + } + }, + "targets": [ + { + "Library": { + "crate_name": "crc32fast", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "crc32fast", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, "deps": { "common": [ { @@ -2233,19 +4177,19 @@ }, "license": "MIT OR Apache-2.0" }, - "crypto-common 0.1.6": { - "name": "crypto-common", - "version": "0.1.6", + "crypto-bigint 0.4.9": { + "name": "crypto-bigint", + "version": "0.4.9", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/crypto-common/0.1.6/download", - "sha256": "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" + "url": "https://crates.io/api/v1/crates/crypto-bigint/0.4.9/download", + "sha256": "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" } }, "targets": [ { "Library": { - "crate_name": "crypto_common", + "crate_name": "crypto_bigint", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -2253,14 +4197,16 @@ } } ], - "library_target_name": "crypto_common", + "library_target_name": "crypto_bigint", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "std" + "generic-array", + "rand_core", + "zeroize" ], "selects": {} }, @@ -2271,30 +4217,38 @@ "target": "generic_array" }, { - "id": "typenum 1.17.0", - "target": "typenum" + "id": "rand_core 0.6.4", + "target": "rand_core" + }, + { + "id": "subtle 2.5.0", + "target": "subtle" + }, + { + "id": "zeroize 1.7.0", + "target": "zeroize" } ], "selects": {} }, - "edition": "2018", - "version": "0.1.6" + "edition": "2021", + "version": "0.4.9" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0 OR MIT" }, - "crypto-mac 0.11.1": { - "name": "crypto-mac", - "version": "0.11.1", + "crypto-common 0.1.6": { + "name": "crypto-common", + "version": "0.1.6", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/crypto-mac/0.11.1/download", - "sha256": "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" + "url": "https://crates.io/api/v1/crates/crypto-common/0.1.6/download", + "sha256": "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" } }, "targets": [ { "Library": { - "crate_name": "crypto_mac", + "crate_name": "crypto_common", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -2302,11 +4256,17 @@ } } ], - "library_target_name": "crypto_mac", + "library_target_name": "crypto_common", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "std" + ], + "selects": {} + }, "deps": { "common": [ { @@ -2314,14 +4274,14 @@ "target": "generic_array" }, { - "id": "subtle 2.4.1", - "target": "subtle" + "id": "typenum 1.17.0", + "target": "typenum" } ], "selects": {} }, "edition": "2018", - "version": "0.11.1" + "version": "0.1.6" }, "license": "MIT OR Apache-2.0" }, @@ -2368,6 +4328,58 @@ }, "license": "Apache-2.0 OR MIT" }, + "der 0.6.1": { + "name": "der", + "version": "0.6.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/der/0.6.1/download", + "sha256": "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" + } + }, + "targets": [ + { + "Library": { + "crate_name": "der", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "der", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "const-oid", + "oid", + "zeroize" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "const-oid 0.9.5", + "target": "const_oid" + }, + { + "id": "zeroize 1.7.0", + "target": "zeroize" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.6.1" + }, + "license": "Apache-2.0 OR MIT" + }, "deranged 0.3.9": { "name": "deranged", "version": "0.3.9", @@ -2476,7 +4488,9 @@ "block-buffer", "core-api", "default", - "std" + "mac", + "std", + "subtle" ], "selects": {} }, @@ -2489,58 +4503,16 @@ { "id": "crypto-common 0.1.6", "target": "crypto_common" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.10.7" - }, - "license": "MIT OR Apache-2.0" - }, - "digest 0.9.0": { - "name": "digest", - "version": "0.9.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/digest/0.9.0/download", - "sha256": "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" - } - }, - "targets": [ - { - "Library": { - "crate_name": "digest", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "digest", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "alloc", - "std" - ], - "selects": {} - }, - "deps": { - "common": [ + }, { - "id": "generic-array 0.14.7", - "target": "generic_array" + "id": "subtle 2.5.0", + "target": "subtle" } ], "selects": {} }, "edition": "2018", - "version": "0.9.0" + "version": "0.10.7" }, "license": "MIT OR Apache-2.0" }, @@ -2567,8 +4539,28 @@ "deps": { "common": [ { - "id": "async-lock 2.8.0", - "target": "async_lock" + "id": "async-lock 2.8.0", + "target": "async_lock" + }, + { + "id": "aws-config 0.57.2", + "target": "aws_config" + }, + { + "id": "aws-sdk-config 0.35.0", + "target": "aws_sdk_config" + }, + { + "id": "aws-sdk-s3 0.35.0", + "target": "aws_sdk_s3" + }, + { + "id": "aws-smithy-runtime 0.57.2", + "target": "aws_smithy_runtime" + }, + { + "id": "aws-smithy-types 0.57.2", + "target": "aws_smithy_types" }, { "id": "axum 0.6.20", @@ -2630,6 +4622,10 @@ "id": "hyper 0.14.27", "target": "hyper" }, + { + "id": "hyper-rustls 0.24.2", + "target": "hyper_rustls" + }, { "id": "json5 0.4.1", "target": "json5" @@ -2706,22 +4702,6 @@ "id": "relative-path 1.9.0", "target": "relative_path" }, - { - "id": "rusoto_core 0.48.0", - "target": "rusoto_core" - }, - { - "id": "rusoto_mock 0.48.0", - "target": "rusoto_mock" - }, - { - "id": "rusoto_s3 0.48.0", - "target": "rusoto_s3" - }, - { - "id": "rusoto_signature 0.48.0", - "target": "rusoto_signature" - }, { "id": "rustls-pemfile 1.0.4", "target": "rustls_pemfile" @@ -2846,49 +4826,6 @@ }, "license": "MIT OR Apache-2.0" }, - "dirs-next 2.0.0": { - "name": "dirs-next", - "version": "2.0.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/dirs-next/2.0.0/download", - "sha256": "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" - } - }, - "targets": [ - { - "Library": { - "crate_name": "dirs_next", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "dirs_next", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "cfg-if 1.0.0", - "target": "cfg_if" - }, - { - "id": "dirs-sys-next 0.1.2", - "target": "dirs_sys_next" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "2.0.0" - }, - "license": "MIT OR Apache-2.0" - }, "dirs-sys 0.4.1": { "name": "dirs-sys", "version": "0.4.1", @@ -2947,19 +4884,19 @@ }, "license": "MIT OR Apache-2.0" }, - "dirs-sys-next 0.1.2": { - "name": "dirs-sys-next", - "version": "0.1.2", + "dtoa 1.0.9": { + "name": "dtoa", + "version": "1.0.9", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/dirs-sys-next/0.1.2/download", - "sha256": "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" + "url": "https://crates.io/api/v1/crates/dtoa/1.0.9/download", + "sha256": "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" } }, "targets": [ { "Library": { - "crate_name": "dirs_sys_next", + "crate_name": "dtoa", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -2967,52 +4904,29 @@ } } ], - "library_target_name": "dirs_sys_next", + "library_target_name": "dtoa", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { - "common": [], - "selects": { - "cfg(target_os = \"redox\")": [ - { - "id": "redox_users 0.4.4", - "target": "redox_users" - } - ], - "cfg(unix)": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ], - "cfg(windows)": [ - { - "id": "winapi 0.3.9", - "target": "winapi" - } - ] - } - }, "edition": "2018", - "version": "0.1.2" + "version": "1.0.9" }, "license": "MIT OR Apache-2.0" }, - "dtoa 1.0.9": { - "name": "dtoa", - "version": "1.0.9", + "ecdsa 0.14.8": { + "name": "ecdsa", + "version": "0.14.8", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/dtoa/1.0.9/download", - "sha256": "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" + "url": "https://crates.io/api/v1/crates/ecdsa/0.14.8/download", + "sha256": "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" } }, "targets": [ { "Library": { - "crate_name": "dtoa", + "crate_name": "ecdsa", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -3020,15 +4934,51 @@ } } ], - "library_target_name": "dtoa", + "library_target_name": "ecdsa", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2018", - "version": "1.0.9" + "crate_features": { + "common": [ + "alloc", + "arithmetic", + "der", + "digest", + "hazmat", + "pkcs8", + "rfc6979", + "sign", + "std", + "verify" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "der 0.6.1", + "target": "der" + }, + { + "id": "elliptic-curve 0.12.3", + "target": "elliptic_curve" + }, + { + "id": "rfc6979 0.3.1", + "target": "rfc6979" + }, + { + "id": "signature 1.6.4", + "target": "signature" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.14.8" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0 OR MIT" }, "either 1.9.0": { "name": "either", @@ -3067,6 +5017,103 @@ }, "license": "MIT OR Apache-2.0" }, + "elliptic-curve 0.12.3": { + "name": "elliptic-curve", + "version": "0.12.3", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/elliptic-curve/0.12.3/download", + "sha256": "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" + } + }, + "targets": [ + { + "Library": { + "crate_name": "elliptic_curve", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "elliptic_curve", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "arithmetic", + "digest", + "ff", + "group", + "hazmat", + "pkcs8", + "sec1", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "base16ct 0.1.1", + "target": "base16ct" + }, + { + "id": "crypto-bigint 0.4.9", + "target": "crypto_bigint" + }, + { + "id": "der 0.6.1", + "target": "der" + }, + { + "id": "digest 0.10.7", + "target": "digest" + }, + { + "id": "ff 0.12.1", + "target": "ff" + }, + { + "id": "generic-array 0.14.7", + "target": "generic_array" + }, + { + "id": "group 0.12.1", + "target": "group" + }, + { + "id": "pkcs8 0.9.0", + "target": "pkcs8" + }, + { + "id": "rand_core 0.6.4", + "target": "rand_core" + }, + { + "id": "sec1 0.3.0", + "target": "sec1" + }, + { + "id": "subtle 2.5.0", + "target": "subtle" + }, + { + "id": "zeroize 1.7.0", + "target": "zeroize" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.12.3" + }, + "license": "Apache-2.0 OR MIT" + }, "env_logger 0.10.1": { "name": "env_logger", "version": "0.10.1", @@ -3257,6 +5304,57 @@ }, "license": "Apache-2.0 OR MIT" }, + "extend 0.1.2": { + "name": "extend", + "version": "0.1.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/extend/0.1.2/download", + "sha256": "f47da3a72ec598d9c8937a7ebca8962a5c7a1f28444e38c2b33c771ba3f55f05" + } + }, + "targets": [ + { + "ProcMacro": { + "crate_name": "extend", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "extend", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "proc-macro-error 1.0.4", + "target": "proc_macro_error" + }, + { + "id": "proc-macro2 1.0.69", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.33", + "target": "quote" + }, + { + "id": "syn 1.0.109", + "target": "syn" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.2" + }, + "license": "MIT" + }, "fastrand 2.0.1": { "name": "fastrand", "version": "2.0.1", @@ -3284,16 +5382,59 @@ ], "crate_features": { "common": [ - "alloc", - "default", - "std" + "alloc", + "default", + "std" + ], + "selects": {} + }, + "edition": "2018", + "version": "2.0.1" + }, + "license": "Apache-2.0 OR MIT" + }, + "ff 0.12.1": { + "name": "ff", + "version": "0.12.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/ff/0.12.1/download", + "sha256": "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" + } + }, + "targets": [ + { + "Library": { + "crate_name": "ff", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "ff", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "rand_core 0.6.4", + "target": "rand_core" + }, + { + "id": "subtle 2.5.0", + "target": "subtle" + } ], "selects": {} }, - "edition": "2018", - "version": "2.0.1" + "edition": "2021", + "version": "0.12.1" }, - "license": "Apache-2.0 OR MIT" + "license": "MIT/Apache-2.0" }, "filetime 0.2.22": { "name": "filetime", @@ -3502,75 +5643,6 @@ }, "license": "Apache-2.0 / MIT" }, - "foreign-types 0.3.2": { - "name": "foreign-types", - "version": "0.3.2", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/foreign-types/0.3.2/download", - "sha256": "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" - } - }, - "targets": [ - { - "Library": { - "crate_name": "foreign_types", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "foreign_types", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "foreign-types-shared 0.1.1", - "target": "foreign_types_shared" - } - ], - "selects": {} - }, - "edition": "2015", - "version": "0.3.2" - }, - "license": "MIT/Apache-2.0" - }, - "foreign-types-shared 0.1.1": { - "name": "foreign-types-shared", - "version": "0.1.1", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/foreign-types-shared/0.1.1/download", - "sha256": "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - } - }, - "targets": [ - { - "Library": { - "crate_name": "foreign_types_shared", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "foreign_types_shared", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "edition": "2015", - "version": "0.1.1" - }, - "license": "MIT/Apache-2.0" - }, "form_urlencoded 1.2.0": { "name": "form_urlencoded", "version": "1.2.0", @@ -4365,6 +6437,53 @@ }, "license": "MIT OR Apache-2.0" }, + "group 0.12.1": { + "name": "group", + "version": "0.12.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/group/0.12.1/download", + "sha256": "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" + } + }, + "targets": [ + { + "Library": { + "crate_name": "group", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "group", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "ff 0.12.1", + "target": "ff" + }, + { + "id": "rand_core 0.6.4", + "target": "rand_core" + }, + { + "id": "subtle 2.5.0", + "target": "subtle" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.12.1" + }, + "license": "MIT/Apache-2.0" + }, "h2 0.3.22": { "name": "h2", "version": "0.3.22", @@ -4684,13 +6803,13 @@ }, "license": "MIT OR Apache-2.0" }, - "hmac 0.11.0": { + "hmac 0.12.1": { "name": "hmac", - "version": "0.11.0", + "version": "0.12.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/hmac/0.11.0/download", - "sha256": "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" + "url": "https://crates.io/api/v1/crates/hmac/0.12.1/download", + "sha256": "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" } }, "targets": [ @@ -4709,21 +6828,23 @@ "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "reset" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "crypto-mac 0.11.1", - "target": "crypto_mac" - }, - { - "id": "digest 0.9.0", + "id": "digest 0.10.7", "target": "digest" } ], "selects": {} }, "edition": "2018", - "version": "0.11.0" + "version": "0.12.1" }, "license": "MIT OR Apache-2.0" }, @@ -5097,19 +7218,19 @@ }, "license": "MIT" }, - "hyper-timeout 0.4.1": { - "name": "hyper-timeout", - "version": "0.4.1", + "hyper-rustls 0.24.2": { + "name": "hyper-rustls", + "version": "0.24.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/hyper-timeout/0.4.1/download", - "sha256": "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" + "url": "https://crates.io/api/v1/crates/hyper-rustls/0.24.2/download", + "sha256": "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" } }, "targets": [ { "Library": { - "crate_name": "hyper_timeout", + "crate_name": "hyper_rustls", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -5117,50 +7238,87 @@ } } ], - "library_target_name": "hyper_timeout", + "library_target_name": "hyper_rustls", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "acceptor", + "default", + "http1", + "http2", + "log", + "logging", + "native-tokio", + "rustls-native-certs", + "tls12", + "tokio-runtime", + "webpki-roots", + "webpki-tokio" + ], + "selects": {} + }, "deps": { "common": [ + { + "id": "futures-util 0.3.29", + "target": "futures_util" + }, + { + "id": "http 0.2.11", + "target": "http" + }, { "id": "hyper 0.14.27", "target": "hyper" }, { - "id": "pin-project-lite 0.2.13", - "target": "pin_project_lite" + "id": "log 0.4.20", + "target": "log" + }, + { + "id": "rustls 0.21.9", + "target": "rustls" + }, + { + "id": "rustls-native-certs 0.6.3", + "target": "rustls_native_certs" }, { "id": "tokio 1.34.0", "target": "tokio" }, { - "id": "tokio-io-timeout 1.2.0", - "target": "tokio_io_timeout" + "id": "tokio-rustls 0.24.1", + "target": "tokio_rustls" + }, + { + "id": "webpki-roots 0.25.2", + "target": "webpki_roots" } ], "selects": {} }, - "edition": "2018", - "version": "0.4.1" + "edition": "2021", + "version": "0.24.2" }, - "license": "MIT/Apache-2.0" + "license": "Apache-2.0 OR ISC OR MIT" }, - "hyper-tls 0.5.0": { - "name": "hyper-tls", - "version": "0.5.0", + "hyper-timeout 0.4.1": { + "name": "hyper-timeout", + "version": "0.4.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/hyper-tls/0.5.0/download", - "sha256": "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" + "url": "https://crates.io/api/v1/crates/hyper-timeout/0.4.1/download", + "sha256": "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" } }, "targets": [ { "Library": { - "crate_name": "hyper_tls", + "crate_name": "hyper_timeout", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -5168,54 +7326,50 @@ } } ], - "library_target_name": "hyper_tls", + "library_target_name": "hyper_timeout", "common_attrs": { "compile_data_glob": [ "**" ], "deps": { "common": [ - { - "id": "bytes 1.5.0", - "target": "bytes" - }, { "id": "hyper 0.14.27", "target": "hyper" }, { - "id": "native-tls 0.2.11", - "target": "native_tls" + "id": "pin-project-lite 0.2.13", + "target": "pin_project_lite" }, { "id": "tokio 1.34.0", "target": "tokio" }, { - "id": "tokio-native-tls 0.3.1", - "target": "tokio_native_tls" + "id": "tokio-io-timeout 1.2.0", + "target": "tokio_io_timeout" } ], "selects": {} }, "edition": "2018", - "version": "0.5.0" + "version": "0.4.1" }, "license": "MIT/Apache-2.0" }, - "iana-time-zone 0.1.58": { - "name": "iana-time-zone", - "version": "0.1.58", + "idna 0.4.0": { + "name": "idna", + "version": "0.4.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/iana-time-zone/0.1.58/download", - "sha256": "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" + "url": "https://crates.io/api/v1/crates/idna/0.4.0/download", + "sha256": "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" } }, "targets": [ { "Library": { - "crate_name": "iana_time_zone", + "crate_name": "idna", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -5223,120 +7377,34 @@ } } ], - "library_target_name": "iana_time_zone", + "library_target_name": "idna", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "fallback" - ], - "selects": {} - }, - "deps": { - "common": [], - "selects": { - "cfg(any(target_os = \"macos\", target_os = \"ios\"))": [ - { - "id": "core-foundation-sys 0.8.4", - "target": "core_foundation_sys" - } - ], - "cfg(target_arch = \"wasm32\")": [ - { - "id": "js-sys 0.3.65", - "target": "js_sys" - }, - { - "id": "wasm-bindgen 0.2.88", - "target": "wasm_bindgen" - } - ], - "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.51.1", - "target": "windows_core" - } - ] - } - }, - "edition": "2018", - "version": "0.1.58" - }, - "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://crates.io/api/v1/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" - } + "alloc", + "default", + "std" ], "selects": {} }, - "edition": "2018", - "version": "0.1.2" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ], "deps": { "common": [ { - "id": "cc 1.0.83", - "target": "cc" + "id": "unicode-bidi 0.3.13", + "target": "unicode_bidi" + }, + { + "id": "unicode-normalization 0.1.22", + "target": "unicode_normalization" } ], "selects": {} - } + }, + "edition": "2018", + "version": "0.4.0" }, "license": "MIT OR Apache-2.0" }, @@ -5486,7 +7554,7 @@ "selects": { "cfg(not(any(windows, target_os = \"hermit\", target_os = \"unknown\")))": [ { - "id": "rustix 0.38.24", + "id": "rustix 0.38.25", "target": "rustix" } ], @@ -6123,13 +8191,13 @@ }, "license": "MIT AND BSD-3-Clause" }, - "md-5 0.9.1": { + "md-5 0.10.6": { "name": "md-5", - "version": "0.9.1", + "version": "0.10.6", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/md-5/0.9.1/download", - "sha256": "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" + "url": "https://crates.io/api/v1/crates/md-5/0.10.6/download", + "sha256": "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" } }, "targets": [ @@ -6158,22 +8226,18 @@ "deps": { "common": [ { - "id": "block-buffer 0.9.0", - "target": "block_buffer" + "id": "cfg-if 1.0.0", + "target": "cfg_if" }, { - "id": "digest 0.9.0", + "id": "digest 0.10.7", "target": "digest" - }, - { - "id": "opaque-debug 0.3.0", - "target": "opaque_debug" } ], "selects": {} }, "edition": "2018", - "version": "0.9.1" + "version": "0.10.6" }, "license": "MIT OR Apache-2.0" }, @@ -6536,117 +8600,6 @@ }, "license": "MIT/Apache-2.0" }, - "native-tls 0.2.11": { - "name": "native-tls", - "version": "0.2.11", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/native-tls/0.2.11/download", - "sha256": "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" - } - }, - "targets": [ - { - "Library": { - "crate_name": "native_tls", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "native_tls", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "native-tls 0.2.11", - "target": "build_script_build" - } - ], - "selects": { - "cfg(any(target_os = \"macos\", target_os = \"ios\"))": [ - { - "id": "lazy_static 1.4.0", - "target": "lazy_static" - }, - { - "id": "libc 0.2.150", - "target": "libc" - }, - { - "id": "security-framework 2.9.2", - "target": "security_framework" - }, - { - "id": "security-framework-sys 2.9.1", - "target": "security_framework_sys" - }, - { - "id": "tempfile 3.8.1", - "target": "tempfile" - } - ], - "cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))": [ - { - "id": "log 0.4.20", - "target": "log" - }, - { - "id": "openssl 0.10.59", - "target": "openssl" - }, - { - "id": "openssl-probe 0.1.5", - "target": "openssl_probe" - }, - { - "id": "openssl-sys 0.9.95", - "target": "openssl_sys" - } - ], - "cfg(target_os = \"windows\")": [ - { - "id": "schannel 0.1.22", - "target": "schannel" - } - ] - } - }, - "edition": "2015", - "version": "0.2.11" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ], - "link_deps": { - "common": [], - "selects": { - "cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))": [ - { - "id": "openssl-sys 0.9.95", - "target": "openssl_sys" - } - ] - } - } - }, - "license": "MIT/Apache-2.0" - }, "nix 0.26.4": { "name": "nix", "version": "0.26.4", @@ -6727,185 +8680,37 @@ "target": "libc" }, { - "id": "pin-utils 0.1.0", - "target": "pin_utils" - } - ], - "selects": { - "cfg(not(target_os = \"redox\"))": [ - { - "id": "memoffset 0.7.1", - "target": "memoffset" - } - ] - } - }, - "edition": "2018", - "version": "0.26.4" - }, - "license": "MIT" - }, - "num-traits 0.2.17": { - "name": "num-traits", - "version": "0.2.17", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/num-traits/0.2.17/download", - "sha256": "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" - } - }, - "targets": [ - { - "Library": { - "crate_name": "num_traits", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "num_traits", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "num-traits 0.2.17", - "target": "build_script_build" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.2.17" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "autocfg 1.1.0", - "target": "autocfg" - } - ], - "selects": {} - } - }, - "license": "MIT OR Apache-2.0" - }, - "num_cpus 1.16.0": { - "name": "num_cpus", - "version": "1.16.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/num_cpus/1.16.0/download", - "sha256": "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" - } - }, - "targets": [ - { - "Library": { - "crate_name": "num_cpus", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "num_cpus", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [], - "selects": { - "cfg(not(windows))": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ], - "cfg(target_os = \"hermit\")": [ - { - "id": "hermit-abi 0.3.3", - "target": "hermit_abi" - } - ] - } - }, - "edition": "2015", - "version": "1.16.0" - }, - "license": "MIT OR Apache-2.0" - }, - "object 0.32.1": { - "name": "object", - "version": "0.32.1", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/object/0.32.1/download", - "sha256": "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" - } - }, - "targets": [ - { - "Library": { - "crate_name": "object", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "object", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "memchr 2.6.4", - "target": "memchr" + "id": "pin-utils 0.1.0", + "target": "pin_utils" } ], - "selects": {} + "selects": { + "cfg(not(target_os = \"redox\"))": [ + { + "id": "memoffset 0.7.1", + "target": "memoffset" + } + ] + } }, "edition": "2018", - "version": "0.32.1" + "version": "0.26.4" }, - "license": "Apache-2.0 OR MIT" + "license": "MIT" }, - "once_cell 1.18.0": { - "name": "once_cell", - "version": "1.18.0", + "nu-ansi-term 0.46.0": { + "name": "nu-ansi-term", + "version": "0.46.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/once_cell/1.18.0/download", - "sha256": "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + "url": "https://crates.io/api/v1/crates/nu-ansi-term/0.46.0/download", + "sha256": "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" } }, "targets": [ { "Library": { - "crate_name": "once_cell", + "crate_name": "nu_ansi_term", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -6913,69 +8718,45 @@ } } ], - "library_target_name": "once_cell", + "library_target_name": "nu_ansi_term", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "alloc", - "default", - "race", - "std", - "unstable" + { + "id": "overload 0.1.1", + "target": "overload" + } ], - "selects": {} - }, - "edition": "2021", - "version": "1.18.0" - }, - "license": "MIT OR Apache-2.0" - }, - "opaque-debug 0.3.0": { - "name": "opaque-debug", - "version": "0.3.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/opaque-debug/0.3.0/download", - "sha256": "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - } - }, - "targets": [ - { - "Library": { - "crate_name": "opaque_debug", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" + "selects": { + "cfg(target_os = \"windows\")": [ + { + "id": "winapi 0.3.9", + "target": "winapi" + } ] } - } - ], - "library_target_name": "opaque_debug", - "common_attrs": { - "compile_data_glob": [ - "**" - ], + }, "edition": "2018", - "version": "0.3.0" + "version": "0.46.0" }, - "license": "MIT OR Apache-2.0" + "license": "MIT" }, - "openssl 0.10.59": { - "name": "openssl", - "version": "0.10.59", + "num-bigint 0.4.4": { + "name": "num-bigint", + "version": "0.4.4", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/openssl/0.10.59/download", - "sha256": "7a257ad03cd8fb16ad4172fedf8094451e1af1c4b70097636ef2eac9a5f0cc33" + "url": "https://crates.io/api/v1/crates/num-bigint/0.4.4/download", + "sha256": "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" } }, "targets": [ { "Library": { - "crate_name": "openssl", + "crate_name": "num_bigint", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -6992,170 +8773,141 @@ } } ], - "library_target_name": "openssl", + "library_target_name": "num_bigint", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default" + "default", + "std" ], "selects": {} }, "deps": { "common": [ { - "id": "bitflags 2.4.1", - "target": "bitflags" - }, - { - "id": "cfg-if 1.0.0", - "target": "cfg_if" - }, - { - "id": "foreign-types 0.3.2", - "target": "foreign_types" - }, - { - "id": "libc 0.2.150", - "target": "libc" - }, - { - "id": "once_cell 1.18.0", - "target": "once_cell" + "id": "num-bigint 0.4.4", + "target": "build_script_build" }, { - "id": "openssl 0.10.59", - "target": "build_script_build" + "id": "num-integer 0.1.45", + "target": "num_integer" }, { - "id": "openssl-sys 0.9.95", - "target": "openssl_sys", - "alias": "ffi" + "id": "num-traits 0.2.17", + "target": "num_traits" } ], "selects": {} }, "edition": "2018", - "proc_macro_deps": { - "common": [ - { - "id": "openssl-macros 0.1.1", - "target": "openssl_macros" - } - ], - "selects": {} - }, - "version": "0.10.59" + "version": "0.4.4" }, "build_script_attrs": { "data_glob": [ "**" ], - "link_deps": { + "deps": { "common": [ { - "id": "openssl-sys 0.9.95", - "target": "openssl_sys", - "alias": "ffi" + "id": "autocfg 1.1.0", + "target": "autocfg" } ], "selects": {} } }, - "license": "Apache-2.0" + "license": "MIT OR Apache-2.0" }, - "openssl-macros 0.1.1": { - "name": "openssl-macros", - "version": "0.1.1", + "num-integer 0.1.45": { + "name": "num-integer", + "version": "0.1.45", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/openssl-macros/0.1.1/download", - "sha256": "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" + "url": "https://crates.io/api/v1/crates/num-integer/0.1.45/download", + "sha256": "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" } }, "targets": [ { - "ProcMacro": { - "crate_name": "openssl_macros", + "Library": { + "crate_name": "num_integer", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "openssl_macros", + "library_target_name": "num_integer", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "i128", + "std" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "proc-macro2 1.0.69", - "target": "proc_macro2" - }, - { - "id": "quote 1.0.33", - "target": "quote" + "id": "num-integer 0.1.45", + "target": "build_script_build" }, { - "id": "syn 2.0.39", - "target": "syn" + "id": "num-traits 0.2.17", + "target": "num_traits" } ], "selects": {} }, - "edition": "2018", - "version": "0.1.1" - }, - "license": "MIT/Apache-2.0" - }, - "openssl-probe 0.1.5": { - "name": "openssl-probe", - "version": "0.1.5", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/openssl-probe/0.1.5/download", - "sha256": "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - } + "edition": "2015", + "version": "0.1.45" }, - "targets": [ - { - "Library": { - "crate_name": "openssl_probe", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "openssl_probe", - "common_attrs": { - "compile_data_glob": [ + "build_script_attrs": { + "data_glob": [ "**" ], - "edition": "2015", - "version": "0.1.5" + "deps": { + "common": [ + { + "id": "autocfg 1.1.0", + "target": "autocfg" + } + ], + "selects": {} + } }, - "license": "MIT/Apache-2.0" + "license": "MIT OR Apache-2.0" }, - "openssl-sys 0.9.95": { - "name": "openssl-sys", - "version": "0.9.95", + "num-traits 0.2.17": { + "name": "num-traits", + "version": "0.2.17", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/openssl-sys/0.9.95/download", - "sha256": "40a4130519a360279579c2053038317e40eff64d13fd3f004f9e1b72b8a6aaf9" + "url": "https://crates.io/api/v1/crates/num-traits/0.2.17/download", + "sha256": "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" } }, "targets": [ { "Library": { - "crate_name": "openssl_sys", + "crate_name": "num_traits", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7164,34 +8916,37 @@ }, { "BuildScript": { - "crate_name": "build_script_main", - "crate_root": "build/main.rs", + "crate_name": "build_script_build", + "crate_root": "build.rs", "srcs": [ "**/*.rs" ] } } ], - "library_target_name": "openssl_sys", + "library_target_name": "num_traits", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "i128", + "std" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "libc 0.2.150", - "target": "libc" - }, - { - "id": "openssl-sys 0.9.95", - "target": "build_script_main" + "id": "num-traits 0.2.17", + "target": "build_script_build" } ], "selects": {} }, "edition": "2018", - "version": "0.9.95" + "version": "0.2.17" }, "build_script_attrs": { "data_glob": [ @@ -7200,37 +8955,28 @@ "deps": { "common": [ { - "id": "cc 1.0.83", - "target": "cc" - }, - { - "id": "pkg-config 0.3.27", - "target": "pkg_config" - }, - { - "id": "vcpkg 0.2.15", - "target": "vcpkg" + "id": "autocfg 1.1.0", + "target": "autocfg" } ], "selects": {} - }, - "links": "openssl" + } }, - "license": "MIT" + "license": "MIT OR Apache-2.0" }, - "option-ext 0.2.0": { - "name": "option-ext", - "version": "0.2.0", + "num_cpus 1.16.0": { + "name": "num_cpus", + "version": "1.16.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/option-ext/0.2.0/download", - "sha256": "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + "url": "https://crates.io/api/v1/crates/num_cpus/1.16.0/download", + "sha256": "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" } }, "targets": [ { "Library": { - "crate_name": "option_ext", + "crate_name": "num_cpus", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7238,29 +8984,46 @@ } } ], - "library_target_name": "option_ext", + "library_target_name": "num_cpus", "common_attrs": { "compile_data_glob": [ "**" ], + "deps": { + "common": [], + "selects": { + "cfg(not(windows))": [ + { + "id": "libc 0.2.150", + "target": "libc" + } + ], + "cfg(target_os = \"hermit\")": [ + { + "id": "hermit-abi 0.3.3", + "target": "hermit_abi" + } + ] + } + }, "edition": "2015", - "version": "0.2.0" + "version": "1.16.0" }, - "license": "MPL-2.0" + "license": "MIT OR Apache-2.0" }, - "parking_lot 0.12.1": { - "name": "parking_lot", - "version": "0.12.1", + "object 0.32.1": { + "name": "object", + "version": "0.32.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/parking_lot/0.12.1/download", - "sha256": "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" + "url": "https://crates.io/api/v1/crates/object/0.32.1/download", + "sha256": "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" } }, "targets": [ { "Library": { - "crate_name": "parking_lot", + "crate_name": "object", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7268,128 +9031,78 @@ } } ], - "library_target_name": "parking_lot", + "library_target_name": "object", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "lock_api 0.4.11", - "target": "lock_api" - }, - { - "id": "parking_lot_core 0.9.9", - "target": "parking_lot_core" + "id": "memchr 2.6.4", + "target": "memchr" } ], "selects": {} }, "edition": "2018", - "version": "0.12.1" + "version": "0.32.1" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0 OR MIT" }, - "parking_lot_core 0.9.9": { - "name": "parking_lot_core", - "version": "0.9.9", + "once_cell 1.18.0": { + "name": "once_cell", + "version": "1.18.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/parking_lot_core/0.9.9/download", - "sha256": "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" + "url": "https://crates.io/api/v1/crates/once_cell/1.18.0/download", + "sha256": "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" } }, "targets": [ { "Library": { - "crate_name": "parking_lot_core", + "crate_name": "once_cell", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "parking_lot_core", + "library_target_name": "once_cell", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "cfg-if 1.0.0", - "target": "cfg_if" - }, - { - "id": "parking_lot_core 0.9.9", - "target": "build_script_build" - }, - { - "id": "smallvec 1.11.2", - "target": "smallvec" - } + "alloc", + "default", + "race", + "std", + "unstable" ], - "selects": { - "cfg(target_os = \"redox\")": [ - { - "id": "redox_syscall 0.4.1", - "target": "syscall" - } - ], - "cfg(unix)": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ], - "cfg(windows)": [ - { - "id": "windows-targets 0.48.5", - "target": "windows_targets" - } - ] - } + "selects": {} }, - "edition": "2018", - "version": "0.9.9" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ] + "edition": "2021", + "version": "1.18.0" }, "license": "MIT OR Apache-2.0" }, - "pem 3.0.2": { - "name": "pem", - "version": "3.0.2", + "openssl-probe 0.1.5": { + "name": "openssl-probe", + "version": "0.1.5", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pem/3.0.2/download", - "sha256": "3163d2912b7c3b52d651a055f2c7eec9ba5cd22d26ef75b8dd3a59980b185923" + "url": "https://crates.io/api/v1/crates/openssl-probe/0.1.5/download", + "sha256": "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" } }, "targets": [ { "Library": { - "crate_name": "pem", + "crate_name": "openssl_probe", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7397,45 +9110,29 @@ } } ], - "library_target_name": "pem", + "library_target_name": "openssl_probe", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "std" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "base64 0.21.5", - "target": "base64" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "3.0.2" + "edition": "2015", + "version": "0.1.5" }, - "license": "MIT" + "license": "MIT/Apache-2.0" }, - "percent-encoding 2.3.0": { - "name": "percent-encoding", - "version": "2.3.0", + "option-ext 0.2.0": { + "name": "option-ext", + "version": "0.2.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/percent-encoding/2.3.0/download", - "sha256": "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + "url": "https://crates.io/api/v1/crates/option-ext/0.2.0/download", + "sha256": "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" } }, "targets": [ { "Library": { - "crate_name": "percent_encoding", + "crate_name": "option_ext", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7443,37 +9140,29 @@ } } ], - "library_target_name": "percent_encoding", + "library_target_name": "option_ext", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "alloc", - "default", - "std" - ], - "selects": {} - }, - "edition": "2018", - "version": "2.3.0" + "edition": "2015", + "version": "0.2.0" }, - "license": "MIT OR Apache-2.0" + "license": "MPL-2.0" }, - "pest 2.7.5": { - "name": "pest", - "version": "2.7.5", + "outref 0.5.1": { + "name": "outref", + "version": "0.5.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pest/2.7.5/download", - "sha256": "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" + "url": "https://crates.io/api/v1/crates/outref/0.5.1/download", + "sha256": "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" } }, "targets": [ { "Library": { - "crate_name": "pest", + "crate_name": "outref", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7481,54 +9170,29 @@ } } ], - "library_target_name": "pest", + "library_target_name": "outref", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "memchr", - "std" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "memchr 2.6.4", - "target": "memchr" - }, - { - "id": "thiserror 1.0.50", - "target": "thiserror" - }, - { - "id": "ucd-trie 0.1.6", - "target": "ucd_trie" - } - ], - "selects": {} - }, "edition": "2021", - "version": "2.7.5" + "version": "0.5.1" }, - "license": "MIT OR Apache-2.0" + "license": "MIT" }, - "pest_derive 2.7.5": { - "name": "pest_derive", - "version": "2.7.5", + "overload 0.1.1": { + "name": "overload", + "version": "0.1.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pest_derive/2.7.5/download", - "sha256": "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" + "url": "https://crates.io/api/v1/crates/overload/0.1.1/download", + "sha256": "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" } }, "targets": [ { - "ProcMacro": { - "crate_name": "pest_derive", + "Library": { + "crate_name": "overload", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7536,49 +9200,29 @@ } } ], - "library_target_name": "pest_derive", + "library_target_name": "overload", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "std" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "pest 2.7.5", - "target": "pest" - }, - { - "id": "pest_generator 2.7.5", - "target": "pest_generator" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "2.7.5" + "edition": "2018", + "version": "0.1.1" }, - "license": "MIT OR Apache-2.0" + "license": "MIT" }, - "pest_generator 2.7.5": { - "name": "pest_generator", - "version": "2.7.5", + "p256 0.11.1": { + "name": "p256", + "version": "0.11.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pest_generator/2.7.5/download", - "sha256": "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" + "url": "https://crates.io/api/v1/crates/p256/0.11.1/download", + "sha256": "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" } }, "targets": [ { "Library": { - "crate_name": "pest_generator", + "crate_name": "p256", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7586,13 +9230,21 @@ } } ], - "library_target_name": "pest_generator", + "library_target_name": "p256", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ + "arithmetic", + "default", + "digest", + "ecdsa", + "ecdsa-core", + "pkcs8", + "sha2", + "sha256", "std" ], "selects": {} @@ -7600,46 +9252,39 @@ "deps": { "common": [ { - "id": "pest 2.7.5", - "target": "pest" - }, - { - "id": "pest_meta 2.7.5", - "target": "pest_meta" - }, - { - "id": "proc-macro2 1.0.69", - "target": "proc_macro2" + "id": "ecdsa 0.14.8", + "target": "ecdsa", + "alias": "ecdsa_core" }, { - "id": "quote 1.0.33", - "target": "quote" + "id": "elliptic-curve 0.12.3", + "target": "elliptic_curve" }, { - "id": "syn 2.0.39", - "target": "syn" + "id": "sha2 0.10.8", + "target": "sha2" } ], "selects": {} }, "edition": "2021", - "version": "2.7.5" + "version": "0.11.1" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0 OR MIT" }, - "pest_meta 2.7.5": { - "name": "pest_meta", - "version": "2.7.5", + "parking_lot 0.12.1": { + "name": "parking_lot", + "version": "0.12.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pest_meta/2.7.5/download", - "sha256": "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" + "url": "https://crates.io/api/v1/crates/parking_lot/0.12.1/download", + "sha256": "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" } }, "targets": [ { "Library": { - "crate_name": "pest_meta", + "crate_name": "parking_lot", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7647,7 +9292,7 @@ } } ], - "library_target_name": "pest_meta", + "library_target_name": "parking_lot", "common_attrs": { "compile_data_glob": [ "**" @@ -7661,42 +9306,51 @@ "deps": { "common": [ { - "id": "once_cell 1.18.0", - "target": "once_cell" + "id": "lock_api 0.4.11", + "target": "lock_api" }, { - "id": "pest 2.7.5", - "target": "pest" + "id": "parking_lot_core 0.9.9", + "target": "parking_lot_core" } ], "selects": {} }, - "edition": "2021", - "version": "2.7.5" + "edition": "2018", + "version": "0.12.1" }, "license": "MIT OR Apache-2.0" }, - "petgraph 0.6.4": { - "name": "petgraph", - "version": "0.6.4", + "parking_lot_core 0.9.9": { + "name": "parking_lot_core", + "version": "0.9.9", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/petgraph/0.6.4/download", - "sha256": "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" + "url": "https://crates.io/api/v1/crates/parking_lot_core/0.9.9/download", + "sha256": "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" } }, "targets": [ { "Library": { - "crate_name": "petgraph", + "crate_name": "parking_lot_core", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "petgraph", + "library_target_name": "parking_lot_core", "common_attrs": { "compile_data_glob": [ "**" @@ -7704,34 +9358,62 @@ "deps": { "common": [ { - "id": "fixedbitset 0.4.2", - "target": "fixedbitset" + "id": "cfg-if 1.0.0", + "target": "cfg_if" }, { - "id": "indexmap 2.1.0", - "target": "indexmap" + "id": "parking_lot_core 0.9.9", + "target": "build_script_build" + }, + { + "id": "smallvec 1.11.2", + "target": "smallvec" } ], - "selects": {} + "selects": { + "cfg(target_os = \"redox\")": [ + { + "id": "redox_syscall 0.4.1", + "target": "syscall" + } + ], + "cfg(unix)": [ + { + "id": "libc 0.2.150", + "target": "libc" + } + ], + "cfg(windows)": [ + { + "id": "windows-targets 0.48.5", + "target": "windows_targets" + } + ] + } }, "edition": "2018", - "version": "0.6.4" + "version": "0.9.9" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] }, "license": "MIT OR Apache-2.0" }, - "pin-project 1.1.3": { - "name": "pin-project", - "version": "1.1.3", + "pem 3.0.2": { + "name": "pem", + "version": "3.0.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pin-project/1.1.3/download", - "sha256": "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" + "url": "https://crates.io/api/v1/crates/pem/3.0.2/download", + "sha256": "3163d2912b7c3b52d651a055f2c7eec9ba5cd22d26ef75b8dd3a59980b185923" } }, "targets": [ { "Library": { - "crate_name": "pin_project", + "crate_name": "pem", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7739,38 +9421,45 @@ } } ], - "library_target_name": "pin_project", + "library_target_name": "pem", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2021", - "proc_macro_deps": { + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, + "deps": { "common": [ { - "id": "pin-project-internal 1.1.3", - "target": "pin_project_internal" + "id": "base64 0.21.5", + "target": "base64" } ], "selects": {} }, - "version": "1.1.3" + "edition": "2021", + "version": "3.0.2" }, - "license": "Apache-2.0 OR MIT" + "license": "MIT" }, - "pin-project-internal 1.1.3": { - "name": "pin-project-internal", - "version": "1.1.3", + "percent-encoding 2.3.0": { + "name": "percent-encoding", + "version": "2.3.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pin-project-internal/1.1.3/download", - "sha256": "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" + "url": "https://crates.io/api/v1/crates/percent-encoding/2.3.0/download", + "sha256": "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" } }, "targets": [ { - "ProcMacro": { - "crate_name": "pin_project_internal", + "Library": { + "crate_name": "percent_encoding", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7778,46 +9467,37 @@ } } ], - "library_target_name": "pin_project_internal", + "library_target_name": "percent_encoding", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "proc-macro2 1.0.69", - "target": "proc_macro2" - }, - { - "id": "quote 1.0.33", - "target": "quote" - }, - { - "id": "syn 2.0.39", - "target": "syn" - } + "alloc", + "default", + "std" ], "selects": {} }, - "edition": "2021", - "version": "1.1.3" + "edition": "2018", + "version": "2.3.0" }, - "license": "Apache-2.0 OR MIT" + "license": "MIT OR Apache-2.0" }, - "pin-project-lite 0.2.13": { - "name": "pin-project-lite", - "version": "0.2.13", + "pest 2.7.5": { + "name": "pest", + "version": "2.7.5", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pin-project-lite/0.2.13/download", - "sha256": "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + "url": "https://crates.io/api/v1/crates/pest/2.7.5/download", + "sha256": "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" } }, "targets": [ { "Library": { - "crate_name": "pin_project_lite", + "crate_name": "pest", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7825,29 +9505,54 @@ } } ], - "library_target_name": "pin_project_lite", + "library_target_name": "pest", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2018", - "version": "0.2.13" + "crate_features": { + "common": [ + "default", + "memchr", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "memchr 2.6.4", + "target": "memchr" + }, + { + "id": "thiserror 1.0.50", + "target": "thiserror" + }, + { + "id": "ucd-trie 0.1.6", + "target": "ucd_trie" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "2.7.5" }, - "license": "Apache-2.0 OR MIT" + "license": "MIT OR Apache-2.0" }, - "pin-utils 0.1.0": { - "name": "pin-utils", - "version": "0.1.0", + "pest_derive 2.7.5": { + "name": "pest_derive", + "version": "2.7.5", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pin-utils/0.1.0/download", - "sha256": "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + "url": "https://crates.io/api/v1/crates/pest_derive/2.7.5/download", + "sha256": "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" } }, "targets": [ { - "Library": { - "crate_name": "pin_utils", + "ProcMacro": { + "crate_name": "pest_derive", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7855,29 +9560,49 @@ } } ], - "library_target_name": "pin_utils", + "library_target_name": "pest_derive", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2018", - "version": "0.1.0" + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "pest 2.7.5", + "target": "pest" + }, + { + "id": "pest_generator 2.7.5", + "target": "pest_generator" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "2.7.5" }, "license": "MIT OR Apache-2.0" }, - "pkg-config 0.3.27": { - "name": "pkg-config", - "version": "0.3.27", + "pest_generator 2.7.5": { + "name": "pest_generator", + "version": "2.7.5", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pkg-config/0.3.27/download", - "sha256": "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + "url": "https://crates.io/api/v1/crates/pest_generator/2.7.5/download", + "sha256": "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" } }, "targets": [ { "Library": { - "crate_name": "pkg_config", + "crate_name": "pest_generator", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7885,29 +9610,60 @@ } } ], - "library_target_name": "pkg_config", + "library_target_name": "pest_generator", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2015", - "version": "0.3.27" + "crate_features": { + "common": [ + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "pest 2.7.5", + "target": "pest" + }, + { + "id": "pest_meta 2.7.5", + "target": "pest_meta" + }, + { + "id": "proc-macro2 1.0.69", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.33", + "target": "quote" + }, + { + "id": "syn 2.0.39", + "target": "syn" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "2.7.5" }, "license": "MIT OR Apache-2.0" }, - "powerfmt 0.2.0": { - "name": "powerfmt", - "version": "0.2.0", + "pest_meta 2.7.5": { + "name": "pest_meta", + "version": "2.7.5", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/powerfmt/0.2.0/download", - "sha256": "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + "url": "https://crates.io/api/v1/crates/pest_meta/2.7.5/download", + "sha256": "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" } }, "targets": [ { "Library": { - "crate_name": "powerfmt", + "crate_name": "pest_meta", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7915,29 +9671,48 @@ } } ], - "library_target_name": "powerfmt", + "library_target_name": "pest_meta", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "once_cell 1.18.0", + "target": "once_cell" + }, + { + "id": "pest 2.7.5", + "target": "pest" + } + ], + "selects": {} + }, "edition": "2021", - "version": "0.2.0" + "version": "2.7.5" }, "license": "MIT OR Apache-2.0" }, - "ppv-lite86 0.2.17": { - "name": "ppv-lite86", - "version": "0.2.17", + "petgraph 0.6.4": { + "name": "petgraph", + "version": "0.6.4", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/ppv-lite86/0.2.17/download", - "sha256": "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + "url": "https://crates.io/api/v1/crates/petgraph/0.6.4/download", + "sha256": "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" } }, "targets": [ { "Library": { - "crate_name": "ppv_lite86", + "crate_name": "petgraph", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7945,36 +9720,42 @@ } } ], - "library_target_name": "ppv_lite86", + "library_target_name": "petgraph", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "simd", - "std" + { + "id": "fixedbitset 0.4.2", + "target": "fixedbitset" + }, + { + "id": "indexmap 2.1.0", + "target": "indexmap" + } ], "selects": {} }, "edition": "2018", - "version": "0.2.17" + "version": "0.6.4" }, - "license": "MIT/Apache-2.0" + "license": "MIT OR Apache-2.0" }, - "pretty_assertions 1.4.0": { - "name": "pretty_assertions", - "version": "1.4.0", + "pin-project 1.1.3": { + "name": "pin-project", + "version": "1.1.3", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pretty_assertions/1.4.0/download", - "sha256": "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" + "url": "https://crates.io/api/v1/crates/pin-project/1.1.3/download", + "sha256": "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" } }, "targets": [ { "Library": { - "crate_name": "pretty_assertions", + "crate_name": "pin_project", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -7982,255 +9763,224 @@ } } ], - "library_target_name": "pretty_assertions", + "library_target_name": "pin_project", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "std" - ], - "selects": {} - }, - "deps": { + "edition": "2021", + "proc_macro_deps": { "common": [ { - "id": "diff 0.1.13", - "target": "diff" - }, - { - "id": "yansi 0.5.1", - "target": "yansi" + "id": "pin-project-internal 1.1.3", + "target": "pin_project_internal" } ], "selects": {} }, - "edition": "2018", - "version": "1.4.0" + "version": "1.1.3" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0 OR MIT" }, - "prettyplease 0.1.25": { - "name": "prettyplease", - "version": "0.1.25", + "pin-project-internal 1.1.3": { + "name": "pin-project-internal", + "version": "1.1.3", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/prettyplease/0.1.25/download", - "sha256": "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" + "url": "https://crates.io/api/v1/crates/pin-project-internal/1.1.3/download", + "sha256": "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" } }, "targets": [ { - "Library": { - "crate_name": "prettyplease", + "ProcMacro": { + "crate_name": "pin_project_internal", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "prettyplease", + "library_target_name": "pin_project_internal", "common_attrs": { "compile_data_glob": [ "**" ], "deps": { "common": [ - { - "id": "prettyplease 0.1.25", - "target": "build_script_build" - }, { "id": "proc-macro2 1.0.69", "target": "proc_macro2" }, { - "id": "syn 1.0.109", + "id": "quote 1.0.33", + "target": "quote" + }, + { + "id": "syn 2.0.39", "target": "syn" } ], "selects": {} }, "edition": "2021", - "version": "0.1.25" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ], - "links": "prettyplease01" + "version": "1.1.3" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0 OR MIT" }, - "proc-macro2 1.0.69": { - "name": "proc-macro2", - "version": "1.0.69", + "pin-project-lite 0.2.13": { + "name": "pin-project-lite", + "version": "0.2.13", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/proc-macro2/1.0.69/download", - "sha256": "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" + "url": "https://crates.io/api/v1/crates/pin-project-lite/0.2.13/download", + "sha256": "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" } }, "targets": [ { "Library": { - "crate_name": "proc_macro2", + "crate_name": "pin_project_lite", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "proc_macro2", + "library_target_name": "pin_project_lite", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "proc-macro" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "proc-macro2 1.0.69", - "target": "build_script_build" - }, - { - "id": "unicode-ident 1.0.12", - "target": "unicode_ident" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "1.0.69" + "edition": "2018", + "version": "0.2.13" }, - "build_script_attrs": { - "data_glob": [ + "license": "Apache-2.0 OR MIT" + }, + "pin-utils 0.1.0": { + "name": "pin-utils", + "version": "0.1.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/pin-utils/0.1.0/download", + "sha256": "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + } + }, + "targets": [ + { + "Library": { + "crate_name": "pin_utils", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "pin_utils", + "common_attrs": { + "compile_data_glob": [ "**" - ] + ], + "edition": "2018", + "version": "0.1.0" }, "license": "MIT OR Apache-2.0" }, - "prometheus-client 0.21.2": { - "name": "prometheus-client", - "version": "0.21.2", + "pkcs8 0.9.0": { + "name": "pkcs8", + "version": "0.9.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/prometheus-client/0.21.2/download", - "sha256": "3c99afa9a01501019ac3a14d71d9f94050346f55ca471ce90c799a15c58f61e2" + "url": "https://crates.io/api/v1/crates/pkcs8/0.9.0/download", + "sha256": "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" } }, "targets": [ { "Library": { - "crate_name": "prometheus_client", + "crate_name": "pkcs8", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "prometheus_client", + "library_target_name": "pkcs8", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default" + "alloc" ], "selects": {} }, "deps": { "common": [ { - "id": "dtoa 1.0.9", - "target": "dtoa" - }, - { - "id": "itoa 1.0.9", - "target": "itoa" - }, - { - "id": "parking_lot 0.12.1", - "target": "parking_lot" + "id": "der 0.6.1", + "target": "der" }, { - "id": "prometheus-client 0.21.2", - "target": "build_script_build" + "id": "spki 0.6.0", + "target": "spki" } ], "selects": {} }, "edition": "2021", - "proc_macro_deps": { - "common": [ - { - "id": "prometheus-client-derive-encode 0.4.2", - "target": "prometheus_client_derive_encode" - } - ], - "selects": {} - }, - "version": "0.21.2" + "version": "0.9.0" }, - "build_script_attrs": { - "data_glob": [ + "license": "Apache-2.0 OR MIT" + }, + "powerfmt 0.2.0": { + "name": "powerfmt", + "version": "0.2.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/powerfmt/0.2.0/download", + "sha256": "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + } + }, + "targets": [ + { + "Library": { + "crate_name": "powerfmt", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "powerfmt", + "common_attrs": { + "compile_data_glob": [ "**" - ] + ], + "edition": "2021", + "version": "0.2.0" }, - "license": "Apache-2.0 OR MIT" + "license": "MIT OR Apache-2.0" }, - "prometheus-client-derive-encode 0.4.2": { - "name": "prometheus-client-derive-encode", - "version": "0.4.2", + "ppv-lite86 0.2.17": { + "name": "ppv-lite86", + "version": "0.2.17", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/prometheus-client-derive-encode/0.4.2/download", - "sha256": "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" + "url": "https://crates.io/api/v1/crates/ppv-lite86/0.2.17/download", + "sha256": "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" } }, "targets": [ { - "ProcMacro": { - "crate_name": "prometheus_client_derive_encode", + "Library": { + "crate_name": "ppv_lite86", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -8238,46 +9988,36 @@ } } ], - "library_target_name": "prometheus_client_derive_encode", + "library_target_name": "ppv_lite86", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "proc-macro2 1.0.69", - "target": "proc_macro2" - }, - { - "id": "quote 1.0.33", - "target": "quote" - }, - { - "id": "syn 2.0.39", - "target": "syn" - } + "simd", + "std" ], "selects": {} }, - "edition": "2021", - "version": "0.4.2" + "edition": "2018", + "version": "0.2.17" }, - "license": "Apache-2.0 OR MIT" + "license": "MIT/Apache-2.0" }, - "prost 0.11.9": { - "name": "prost", - "version": "0.11.9", + "pretty_assertions 1.4.0": { + "name": "pretty_assertions", + "version": "1.4.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/prost/0.11.9/download", - "sha256": "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" + "url": "https://crates.io/api/v1/crates/pretty_assertions/1.4.0/download", + "sha256": "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" } }, "targets": [ { "Library": { - "crate_name": "prost", + "crate_name": "pretty_assertions", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -8285,7 +10025,7 @@ } } ], - "library_target_name": "prost", + "library_target_name": "pretty_assertions", "common_attrs": { "compile_data_glob": [ "**" @@ -8293,7 +10033,6 @@ "crate_features": { "common": [ "default", - "prost-derive", "std" ], "selects": {} @@ -8301,160 +10040,130 @@ "deps": { "common": [ { - "id": "bytes 1.5.0", - "target": "bytes" - } - ], - "selects": {} - }, - "edition": "2021", - "proc_macro_deps": { - "common": [ + "id": "diff 0.1.13", + "target": "diff" + }, { - "id": "prost-derive 0.11.9", - "target": "prost_derive" + "id": "yansi 0.5.1", + "target": "yansi" } ], "selects": {} }, - "version": "0.11.9" + "edition": "2018", + "version": "1.4.0" }, - "license": "Apache-2.0" + "license": "MIT OR Apache-2.0" }, - "prost-build 0.11.9": { - "name": "prost-build", - "version": "0.11.9", + "prettyplease 0.1.25": { + "name": "prettyplease", + "version": "0.1.25", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/prost-build/0.11.9/download", - "sha256": "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" + "url": "https://crates.io/api/v1/crates/prettyplease/0.1.25/download", + "sha256": "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" } }, "targets": [ { "Library": { - "crate_name": "prost_build", + "crate_name": "prettyplease", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "prost_build", + "library_target_name": "prettyplease", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "default", - "format", - "prettyplease", - "syn" - ], - "selects": {} - }, "deps": { "common": [ - { - "id": "bytes 1.5.0", - "target": "bytes" - }, - { - "id": "heck 0.4.1", - "target": "heck" - }, - { - "id": "itertools 0.10.5", - "target": "itertools" - }, - { - "id": "lazy_static 1.4.0", - "target": "lazy_static" - }, - { - "id": "log 0.4.20", - "target": "log" - }, - { - "id": "multimap 0.8.3", - "target": "multimap" - }, - { - "id": "petgraph 0.6.4", - "target": "petgraph" - }, { "id": "prettyplease 0.1.25", - "target": "prettyplease" - }, - { - "id": "prost 0.11.9", - "target": "prost" - }, - { - "id": "prost-types 0.11.9", - "target": "prost_types" + "target": "build_script_build" }, { - "id": "regex 1.10.2", - "target": "regex" + "id": "proc-macro2 1.0.69", + "target": "proc_macro2" }, { "id": "syn 1.0.109", "target": "syn" - }, - { - "id": "tempfile 3.8.1", - "target": "tempfile" - }, - { - "id": "which 4.4.2", - "target": "which" } ], "selects": {} }, "edition": "2021", - "version": "0.11.9" + "version": "0.1.25" }, - "license": "Apache-2.0" + "build_script_attrs": { + "data_glob": [ + "**" + ], + "links": "prettyplease01" + }, + "license": "MIT OR Apache-2.0" }, - "prost-derive 0.11.9": { - "name": "prost-derive", - "version": "0.11.9", + "proc-macro-error 1.0.4": { + "name": "proc-macro-error", + "version": "1.0.4", "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/prost-derive/0.11.9/download", - "sha256": "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" + "Http": { + "url": "https://crates.io/api/v1/crates/proc-macro-error/1.0.4/download", + "sha256": "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" } }, "targets": [ { - "ProcMacro": { - "crate_name": "prost_derive", + "Library": { + "crate_name": "proc_macro_error", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "prost_derive", + "library_target_name": "proc_macro_error", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "syn", + "syn-error" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "anyhow 1.0.75", - "target": "anyhow" - }, - { - "id": "itertools 0.10.5", - "target": "itertools" + "id": "proc-macro-error 1.0.4", + "target": "build_script_build" }, { "id": "proc-macro2 1.0.69", @@ -8471,78 +10180,134 @@ ], "selects": {} }, - "edition": "2021", - "version": "0.11.9" + "edition": "2018", + "proc_macro_deps": { + "common": [ + { + "id": "proc-macro-error-attr 1.0.4", + "target": "proc_macro_error_attr" + } + ], + "selects": {} + }, + "version": "1.0.4" }, - "license": "Apache-2.0" + "build_script_attrs": { + "data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "version_check 0.9.4", + "target": "version_check" + } + ], + "selects": {} + } + }, + "license": "MIT OR Apache-2.0" }, - "prost-types 0.11.9": { - "name": "prost-types", - "version": "0.11.9", + "proc-macro-error-attr 1.0.4": { + "name": "proc-macro-error-attr", + "version": "1.0.4", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/prost-types/0.11.9/download", - "sha256": "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" + "url": "https://crates.io/api/v1/crates/proc-macro-error-attr/1.0.4/download", + "sha256": "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" } }, "targets": [ { - "Library": { - "crate_name": "prost_types", + "ProcMacro": { + "crate_name": "proc_macro_error_attr", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "prost_types", + "library_target_name": "proc_macro_error_attr", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { + "deps": { "common": [ - "default", - "std" + { + "id": "proc-macro-error-attr 1.0.4", + "target": "build_script_build" + }, + { + "id": "proc-macro2 1.0.69", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.33", + "target": "quote" + } ], "selects": {} }, + "edition": "2018", + "version": "1.0.4" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], "deps": { "common": [ { - "id": "prost 0.11.9", - "target": "prost" + "id": "version_check 0.9.4", + "target": "version_check" } ], "selects": {} - }, - "edition": "2021", - "version": "0.11.9" + } }, - "license": "Apache-2.0" + "license": "MIT OR Apache-2.0" }, - "quote 1.0.33": { - "name": "quote", - "version": "1.0.33", + "proc-macro2 1.0.69": { + "name": "proc-macro2", + "version": "1.0.69", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/quote/1.0.33/download", - "sha256": "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" + "url": "https://crates.io/api/v1/crates/proc-macro2/1.0.69/download", + "sha256": "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" } }, "targets": [ { "Library": { - "crate_name": "quote", + "crate_name": "proc_macro2", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "quote", + "library_target_name": "proc_macro2", "common_attrs": { "compile_data_glob": [ "**" @@ -8558,92 +10323,118 @@ "common": [ { "id": "proc-macro2 1.0.69", - "target": "proc_macro2" + "target": "build_script_build" + }, + { + "id": "unicode-ident 1.0.12", + "target": "unicode_ident" } ], "selects": {} }, - "edition": "2018", - "version": "1.0.33" + "edition": "2021", + "version": "1.0.69" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] }, "license": "MIT OR Apache-2.0" }, - "rand 0.8.5": { - "name": "rand", - "version": "0.8.5", + "prometheus-client 0.21.2": { + "name": "prometheus-client", + "version": "0.21.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rand/0.8.5/download", - "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" + "url": "https://crates.io/api/v1/crates/prometheus-client/0.21.2/download", + "sha256": "3c99afa9a01501019ac3a14d71d9f94050346f55ca471ce90c799a15c58f61e2" } }, "targets": [ { "Library": { - "crate_name": "rand", + "crate_name": "prometheus_client", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "rand", + "library_target_name": "prometheus_client", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", - "default", - "getrandom", - "libc", - "rand_chacha", - "small_rng", - "std", - "std_rng" + "default" ], "selects": {} }, "deps": { "common": [ { - "id": "rand_chacha 0.3.1", - "target": "rand_chacha" + "id": "dtoa 1.0.9", + "target": "dtoa" }, { - "id": "rand_core 0.6.4", - "target": "rand_core" + "id": "itoa 1.0.9", + "target": "itoa" + }, + { + "id": "parking_lot 0.12.1", + "target": "parking_lot" + }, + { + "id": "prometheus-client 0.21.2", + "target": "build_script_build" } ], - "selects": { - "cfg(unix)": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ] - } + "selects": {} }, - "edition": "2018", - "version": "0.8.5" + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "prometheus-client-derive-encode 0.4.2", + "target": "prometheus_client_derive_encode" + } + ], + "selects": {} + }, + "version": "0.21.2" }, - "license": "MIT OR Apache-2.0" + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "Apache-2.0 OR MIT" }, - "rand_chacha 0.3.1": { - "name": "rand_chacha", - "version": "0.3.1", + "prometheus-client-derive-encode 0.4.2": { + "name": "prometheus-client-derive-encode", + "version": "0.4.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rand_chacha/0.3.1/download", - "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" + "url": "https://crates.io/api/v1/crates/prometheus-client-derive-encode/0.4.2/download", + "sha256": "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" } }, "targets": [ { - "Library": { - "crate_name": "rand_chacha", + "ProcMacro": { + "crate_name": "prometheus_client_derive_encode", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -8651,48 +10442,46 @@ } } ], - "library_target_name": "rand_chacha", + "library_target_name": "prometheus_client_derive_encode", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "std" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "ppv-lite86 0.2.17", - "target": "ppv_lite86" + "id": "proc-macro2 1.0.69", + "target": "proc_macro2" }, { - "id": "rand_core 0.6.4", - "target": "rand_core" + "id": "quote 1.0.33", + "target": "quote" + }, + { + "id": "syn 2.0.39", + "target": "syn" } ], "selects": {} }, - "edition": "2018", - "version": "0.3.1" + "edition": "2021", + "version": "0.4.2" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0 OR MIT" }, - "rand_core 0.6.4": { - "name": "rand_core", - "version": "0.6.4", + "prost 0.11.9": { + "name": "prost", + "version": "0.11.9", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rand_core/0.6.4/download", - "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + "url": "https://crates.io/api/v1/crates/prost/0.11.9/download", + "sha256": "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" } }, "targets": [ { "Library": { - "crate_name": "rand_core", + "crate_name": "prost", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -8700,15 +10489,15 @@ } } ], - "library_target_name": "rand_core", + "library_target_name": "prost", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", - "getrandom", + "default", + "prost-derive", "std" ], "selects": {} @@ -8716,30 +10505,39 @@ "deps": { "common": [ { - "id": "getrandom 0.2.11", - "target": "getrandom" + "id": "bytes 1.5.0", + "target": "bytes" } ], "selects": {} }, - "edition": "2018", - "version": "0.6.4" + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "prost-derive 0.11.9", + "target": "prost_derive" + } + ], + "selects": {} + }, + "version": "0.11.9" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "rcgen 0.11.3": { - "name": "rcgen", - "version": "0.11.3", + "prost-build 0.11.9": { + "name": "prost-build", + "version": "0.11.9", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rcgen/0.11.3/download", - "sha256": "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" + "url": "https://crates.io/api/v1/crates/prost-build/0.11.9/download", + "sha256": "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" } }, "targets": [ { "Library": { - "crate_name": "rcgen", + "crate_name": "prost_build", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -8747,7 +10545,7 @@ } } ], - "library_target_name": "rcgen", + "library_target_name": "prost_build", "common_attrs": { "compile_data_glob": [ "**" @@ -8755,49 +10553,91 @@ "crate_features": { "common": [ "default", - "pem" + "format", + "prettyplease", + "syn" ], "selects": {} }, "deps": { "common": [ { - "id": "pem 3.0.2", - "target": "pem" + "id": "bytes 1.5.0", + "target": "bytes" }, { - "id": "ring 0.16.20", - "target": "ring" + "id": "heck 0.4.1", + "target": "heck" }, { - "id": "time 0.3.30", - "target": "time" + "id": "itertools 0.10.5", + "target": "itertools" }, { - "id": "yasna 0.5.2", - "target": "yasna" + "id": "lazy_static 1.4.0", + "target": "lazy_static" + }, + { + "id": "log 0.4.20", + "target": "log" + }, + { + "id": "multimap 0.8.3", + "target": "multimap" + }, + { + "id": "petgraph 0.6.4", + "target": "petgraph" + }, + { + "id": "prettyplease 0.1.25", + "target": "prettyplease" + }, + { + "id": "prost 0.11.9", + "target": "prost" + }, + { + "id": "prost-types 0.11.9", + "target": "prost_types" + }, + { + "id": "regex 1.10.2", + "target": "regex" + }, + { + "id": "syn 1.0.109", + "target": "syn" + }, + { + "id": "tempfile 3.8.1", + "target": "tempfile" + }, + { + "id": "which 4.4.2", + "target": "which" } ], "selects": {} }, "edition": "2021", - "version": "0.11.3" + "version": "0.11.9" }, - "license": "MIT OR Apache-2.0" + "license": "Apache-2.0" }, - "redox_syscall 0.3.5": { - "name": "redox_syscall", - "version": "0.3.5", + "prost-derive 0.11.9": { + "name": "prost-derive", + "version": "0.11.9", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/redox_syscall/0.3.5/download", - "sha256": "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" + "url": "https://crates.io/api/v1/crates/prost-derive/0.11.9/download", + "sha256": "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" } }, "targets": [ { - "Library": { - "crate_name": "syscall", + "ProcMacro": { + "crate_name": "prost_derive", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -8805,7 +10645,7 @@ } } ], - "library_target_name": "syscall", + "library_target_name": "prost_derive", "common_attrs": { "compile_data_glob": [ "**" @@ -8813,30 +10653,46 @@ "deps": { "common": [ { - "id": "bitflags 1.3.2", - "target": "bitflags" + "id": "anyhow 1.0.75", + "target": "anyhow" + }, + { + "id": "itertools 0.10.5", + "target": "itertools" + }, + { + "id": "proc-macro2 1.0.69", + "target": "proc_macro2" + }, + { + "id": "quote 1.0.33", + "target": "quote" + }, + { + "id": "syn 1.0.109", + "target": "syn" } ], "selects": {} }, - "edition": "2018", - "version": "0.3.5" + "edition": "2021", + "version": "0.11.9" }, - "license": "MIT" + "license": "Apache-2.0" }, - "redox_syscall 0.4.1": { - "name": "redox_syscall", - "version": "0.4.1", + "prost-types 0.11.9": { + "name": "prost-types", + "version": "0.11.9", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/redox_syscall/0.4.1/download", - "sha256": "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" + "url": "https://crates.io/api/v1/crates/prost-types/0.11.9/download", + "sha256": "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" } }, "targets": [ { "Library": { - "crate_name": "syscall", + "crate_name": "prost_types", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -8844,85 +10700,45 @@ } } ], - "library_target_name": "syscall", + "library_target_name": "prost_types", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "bitflags 1.3.2", - "target": "bitflags" - } + "default", + "std" ], "selects": {} }, - "edition": "2018", - "version": "0.4.1" - }, - "license": "MIT" - }, - "redox_users 0.4.4": { - "name": "redox_users", - "version": "0.4.4", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/redox_users/0.4.4/download", - "sha256": "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" - } - }, - "targets": [ - { - "Library": { - "crate_name": "redox_users", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "redox_users", - "common_attrs": { - "compile_data_glob": [ - "**" - ], "deps": { "common": [ { - "id": "getrandom 0.2.11", - "target": "getrandom" - }, - { - "id": "libredox 0.0.1", - "target": "libredox" - }, - { - "id": "thiserror 1.0.50", - "target": "thiserror" + "id": "prost 0.11.9", + "target": "prost" } ], "selects": {} }, "edition": "2021", - "version": "0.4.4" + "version": "0.11.9" }, - "license": "MIT" + "license": "Apache-2.0" }, - "regex 1.10.2": { - "name": "regex", - "version": "1.10.2", + "quote 1.0.33": { + "name": "quote", + "version": "1.0.33", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex/1.10.2/download", - "sha256": "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" + "url": "https://crates.io/api/v1/crates/quote/1.0.33/download", + "sha256": "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" } }, "targets": [ { "Library": { - "crate_name": "regex", + "crate_name": "quote", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -8930,64 +10746,45 @@ } } ], - "library_target_name": "regex", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "perf", - "perf-backtrack", - "perf-cache", - "perf-dfa", - "perf-inline", - "perf-literal", - "perf-onepass", - "std", - "unicode-bool" + "library_target_name": "quote", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "proc-macro" ], "selects": {} }, "deps": { "common": [ { - "id": "aho-corasick 1.1.2", - "target": "aho_corasick" - }, - { - "id": "memchr 2.6.4", - "target": "memchr" - }, - { - "id": "regex-automata 0.4.3", - "target": "regex_automata" - }, - { - "id": "regex-syntax 0.8.2", - "target": "regex_syntax" + "id": "proc-macro2 1.0.69", + "target": "proc_macro2" } ], "selects": {} }, - "edition": "2021", - "version": "1.10.2" + "edition": "2018", + "version": "1.0.33" }, "license": "MIT OR Apache-2.0" }, - "regex-automata 0.4.3": { - "name": "regex-automata", - "version": "0.4.3", + "rand 0.8.5": { + "name": "rand", + "version": "0.8.5", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex-automata/0.4.3/download", - "sha256": "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" + "url": "https://crates.io/api/v1/crates/rand/0.8.5/download", + "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" } }, "targets": [ { "Library": { - "crate_name": "regex_automata", + "crate_name": "rand", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -8995,7 +10792,7 @@ } } ], - "library_target_name": "regex_automata", + "library_target_name": "rand", "common_attrs": { "compile_data_glob": [ "**" @@ -9003,57 +10800,54 @@ "crate_features": { "common": [ "alloc", - "dfa-onepass", - "hybrid", - "meta", - "nfa-backtrack", - "nfa-pikevm", - "nfa-thompson", - "perf-inline", - "perf-literal", - "perf-literal-multisubstring", - "perf-literal-substring", + "default", + "getrandom", + "libc", + "rand_chacha", + "small_rng", "std", - "syntax", - "unicode-bool" + "std_rng" ], "selects": {} }, "deps": { "common": [ { - "id": "aho-corasick 1.1.2", - "target": "aho_corasick" - }, - { - "id": "memchr 2.6.4", - "target": "memchr" + "id": "rand_chacha 0.3.1", + "target": "rand_chacha" }, { - "id": "regex-syntax 0.8.2", - "target": "regex_syntax" + "id": "rand_core 0.6.4", + "target": "rand_core" } ], - "selects": {} + "selects": { + "cfg(unix)": [ + { + "id": "libc 0.2.150", + "target": "libc" + } + ] + } }, - "edition": "2021", - "version": "0.4.3" + "edition": "2018", + "version": "0.8.5" }, "license": "MIT OR Apache-2.0" }, - "regex-syntax 0.8.2": { - "name": "regex-syntax", - "version": "0.8.2", + "rand_chacha 0.3.1": { + "name": "rand_chacha", + "version": "0.3.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex-syntax/0.8.2/download", - "sha256": "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + "url": "https://crates.io/api/v1/crates/rand_chacha/0.3.1/download", + "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" } }, "targets": [ { "Library": { - "crate_name": "regex_syntax", + "crate_name": "rand_chacha", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -9061,36 +10855,48 @@ } } ], - "library_target_name": "regex_syntax", + "library_target_name": "rand_chacha", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "std", - "unicode-bool" + "std" ], "selects": {} }, - "edition": "2021", - "version": "0.8.2" + "deps": { + "common": [ + { + "id": "ppv-lite86 0.2.17", + "target": "ppv_lite86" + }, + { + "id": "rand_core 0.6.4", + "target": "rand_core" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.3.1" }, "license": "MIT OR Apache-2.0" }, - "relative-path 1.9.0": { - "name": "relative-path", - "version": "1.9.0", + "rand_core 0.6.4": { + "name": "rand_core", + "version": "0.6.4", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/relative-path/1.9.0/download", - "sha256": "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" + "url": "https://crates.io/api/v1/crates/rand_core/0.6.4/download", + "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" } }, "targets": [ { "Library": { - "crate_name": "relative_path", + "crate_name": "rand_core", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -9098,175 +10904,194 @@ } } ], - "library_target_name": "relative_path", + "library_target_name": "rand_core", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "default" + "alloc", + "getrandom", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "getrandom 0.2.11", + "target": "getrandom" + } ], "selects": {} }, "edition": "2018", - "version": "1.9.0" + "version": "0.6.4" }, - "license": "MIT/Apache-2.0" + "license": "MIT OR Apache-2.0" }, - "ring 0.16.20": { - "name": "ring", - "version": "0.16.20", + "rcgen 0.11.3": { + "name": "rcgen", + "version": "0.11.3", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/ring/0.16.20/download", - "sha256": "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" + "url": "https://crates.io/api/v1/crates/rcgen/0.11.3/download", + "sha256": "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" } }, "targets": [ { "Library": { - "crate_name": "ring", + "crate_name": "rcgen", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "ring", + "library_target_name": "rcgen", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ - "alloc", "default", - "dev_urandom_fallback", - "once_cell" + "pem" ], "selects": {} }, "deps": { "common": [ + { + "id": "pem 3.0.2", + "target": "pem" + }, { "id": "ring 0.16.20", - "target": "build_script_build" + "target": "ring" }, { - "id": "untrusted 0.7.1", - "target": "untrusted" + "id": "time 0.3.30", + "target": "time" + }, + { + "id": "yasna 0.5.2", + "target": "yasna" } ], - "selects": { - "cfg(all(target_arch = \"wasm32\", target_vendor = \"unknown\", target_os = \"unknown\", target_env = \"\"))": [ - { - "id": "web-sys 0.3.65", - "target": "web_sys" - } - ], - "cfg(any(target_arch = \"x86\", target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"fuchsia\", target_os = \"linux\"))))": [ - { - "id": "spin 0.5.2", - "target": "spin" - } - ], - "cfg(any(target_os = \"android\", target_os = \"linux\"))": [ - { - "id": "libc 0.2.150", - "target": "libc" - }, - { - "id": "once_cell 1.18.0", - "target": "once_cell" - } - ], - "cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"illumos\", target_os = \"netbsd\", target_os = \"openbsd\", target_os = \"solaris\"))": [ - { - "id": "once_cell 1.18.0", - "target": "once_cell" - } - ], - "cfg(target_os = \"windows\")": [ - { - "id": "winapi 0.3.9", - "target": "winapi" - } - ] - } + "selects": {} }, - "edition": "2018", - "version": "0.16.20" + "edition": "2021", + "version": "0.11.3" }, - "build_script_attrs": { - "data_glob": [ + "license": "MIT OR Apache-2.0" + }, + "redox_syscall 0.3.5": { + "name": "redox_syscall", + "version": "0.3.5", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/redox_syscall/0.3.5/download", + "sha256": "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" + } + }, + "targets": [ + { + "Library": { + "crate_name": "syscall", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "syscall", + "common_attrs": { + "compile_data_glob": [ "**" ], "deps": { "common": [ { - "id": "cc 1.0.83", - "target": "cc" + "id": "bitflags 1.3.2", + "target": "bitflags" } ], "selects": {} }, - "links": "ring-asm" + "edition": "2018", + "version": "0.3.5" }, - "license": null + "license": "MIT" }, - "ring 0.17.5": { - "name": "ring", - "version": "0.17.5", + "redox_syscall 0.4.1": { + "name": "redox_syscall", + "version": "0.4.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/ring/0.17.5/download", - "sha256": "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" + "url": "https://crates.io/api/v1/crates/redox_syscall/0.4.1/download", + "sha256": "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" } }, "targets": [ { "Library": { - "crate_name": "ring", + "crate_name": "syscall", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + } + ], + "library_target_name": "syscall", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "bitflags 1.3.2", + "target": "bitflags" + } + ], + "selects": {} }, + "edition": "2018", + "version": "0.4.1" + }, + "license": "MIT" + }, + "redox_users 0.4.4": { + "name": "redox_users", + "version": "0.4.4", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/redox_users/0.4.4/download", + "sha256": "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" + } + }, + "targets": [ { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", + "Library": { + "crate_name": "redox_users", + "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } } ], - "library_target_name": "ring", + "library_target_name": "redox_users", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "alloc", - "default", - "dev_urandom_fallback" - ], - "selects": {} - }, "deps": { "common": [ { @@ -9274,85 +11099,42 @@ "target": "getrandom" }, { - "id": "ring 0.17.5", - "target": "build_script_build" + "id": "libredox 0.0.1", + "target": "libredox" }, { - "id": "untrusted 0.9.0", - "target": "untrusted" - } - ], - "selects": { - "cfg(all(target_arch = \"aarch64\", target_os = \"windows\"))": [ - { - "id": "windows-sys 0.48.0", - "target": "windows_sys" - } - ], - "cfg(any(target_arch = \"x86\", target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"fuchsia\", target_os = \"linux\", target_os = \"windows\"))))": [ - { - "id": "spin 0.9.8", - "target": "spin" - } - ], - "cfg(any(target_os = \"android\", target_os = \"linux\"))": [ - { - "id": "libc 0.2.150", - "target": "libc" - } - ] - } - }, - "edition": "2021", - "version": "0.17.5" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "cc 1.0.83", - "target": "cc" + "id": "thiserror 1.0.50", + "target": "thiserror" } ], "selects": {} }, - "links": "ring_core_0_17_5" + "edition": "2021", + "version": "0.4.4" }, - "license": null + "license": "MIT" }, - "rusoto_core 0.48.0": { - "name": "rusoto_core", - "version": "0.48.0", + "regex 1.10.2": { + "name": "regex", + "version": "1.10.2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rusoto_core/0.48.0/download", - "sha256": "1db30db44ea73551326269adcf7a2169428a054f14faf9e1768f2163494f2fa2" + "url": "https://crates.io/api/v1/crates/regex/1.10.2/download", + "sha256": "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" } }, "targets": [ { "Library": { - "crate_name": "rusoto_core", + "crate_name": "regex", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } - }, - { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", - "srcs": [ - "**/*.rs" - ] - } } ], - "library_target_name": "rusoto_core", + "library_target_name": "regex", "common_attrs": { "compile_data_glob": [ "**" @@ -9360,121 +11142,219 @@ "crate_features": { "common": [ "default", - "hyper-tls", - "native-tls" + "perf", + "perf-backtrack", + "perf-cache", + "perf-dfa", + "perf-inline", + "perf-literal", + "perf-onepass", + "std", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment" ], "selects": {} }, "deps": { "common": [ { - "id": "base64 0.13.1", - "target": "base64" - }, - { - "id": "bytes 1.5.0", - "target": "bytes" - }, - { - "id": "crc32fast 1.3.2", - "target": "crc32fast" - }, - { - "id": "futures 0.3.29", - "target": "futures" - }, - { - "id": "http 0.2.11", - "target": "http" - }, - { - "id": "hyper 0.14.27", - "target": "hyper" - }, - { - "id": "hyper-tls 0.5.0", - "target": "hyper_tls" - }, - { - "id": "lazy_static 1.4.0", - "target": "lazy_static" - }, - { - "id": "log 0.4.20", - "target": "log" - }, - { - "id": "rusoto_core 0.48.0", - "target": "build_script_build" - }, - { - "id": "rusoto_credential 0.48.0", - "target": "rusoto_credential" - }, - { - "id": "rusoto_signature 0.48.0", - "target": "rusoto_signature" - }, - { - "id": "serde 1.0.192", - "target": "serde" + "id": "aho-corasick 1.1.2", + "target": "aho_corasick" }, { - "id": "serde_json 1.0.108", - "target": "serde_json" + "id": "memchr 2.6.4", + "target": "memchr" }, { - "id": "tokio 1.34.0", - "target": "tokio" + "id": "regex-automata 0.4.3", + "target": "regex_automata" }, { - "id": "xml-rs 0.8.19", - "target": "xml" + "id": "regex-syntax 0.8.2", + "target": "regex_syntax" } ], "selects": {} }, - "edition": "2018", - "proc_macro_deps": { + "edition": "2021", + "version": "1.10.2" + }, + "license": "MIT OR Apache-2.0" + }, + "regex-automata 0.4.3": { + "name": "regex-automata", + "version": "0.4.3", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/regex-automata/0.4.3/download", + "sha256": "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" + } + }, + "targets": [ + { + "Library": { + "crate_name": "regex_automata", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "regex_automata", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "dfa-onepass", + "hybrid", + "meta", + "nfa-backtrack", + "nfa-pikevm", + "nfa-thompson", + "perf-inline", + "perf-literal", + "perf-literal-multisubstring", + "perf-literal-substring", + "std", + "syntax", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment", + "unicode-word-boundary" + ], + "selects": {} + }, + "deps": { "common": [ { - "id": "async-trait 0.1.74", - "target": "async_trait" + "id": "aho-corasick 1.1.2", + "target": "aho_corasick" + }, + { + "id": "memchr 2.6.4", + "target": "memchr" + }, + { + "id": "regex-syntax 0.8.2", + "target": "regex_syntax" } ], "selects": {} }, - "version": "0.48.0" + "edition": "2021", + "version": "0.4.3" }, - "build_script_attrs": { - "data_glob": [ + "license": "MIT OR Apache-2.0" + }, + "regex-syntax 0.8.2": { + "name": "regex-syntax", + "version": "0.8.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/regex-syntax/0.8.2/download", + "sha256": "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + } + }, + "targets": [ + { + "Library": { + "crate_name": "regex_syntax", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "regex_syntax", + "common_attrs": { + "compile_data_glob": [ "**" ], - "deps": { + "crate_features": { "common": [ - { - "id": "rustc_version 0.4.0", - "target": "rustc_version" - } + "default", + "std", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment" ], "selects": {} + }, + "edition": "2021", + "version": "0.8.2" + }, + "license": "MIT OR Apache-2.0" + }, + "relative-path 1.9.0": { + "name": "relative-path", + "version": "1.9.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/relative-path/1.9.0/download", + "sha256": "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" } }, - "license": "MIT" + "targets": [ + { + "Library": { + "crate_name": "relative_path", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "relative_path", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "edition": "2018", + "version": "1.9.0" + }, + "license": "MIT/Apache-2.0" }, - "rusoto_credential 0.48.0": { - "name": "rusoto_credential", - "version": "0.48.0", + "rfc6979 0.3.1": { + "name": "rfc6979", + "version": "0.3.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rusoto_credential/0.48.0/download", - "sha256": "ee0a6c13db5aad6047b6a44ef023dbbc21a056b6dab5be3b79ce4283d5c02d05" + "url": "https://crates.io/api/v1/crates/rfc6979/0.3.1/download", + "sha256": "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" } }, "targets": [ { "Library": { - "crate_name": "rusoto_credential", + "crate_name": "rfc6979", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -9482,7 +11362,7 @@ } } ], - "library_target_name": "rusoto_credential", + "library_target_name": "rfc6979", "common_attrs": { "compile_data_glob": [ "**" @@ -9490,36 +11370,12 @@ "deps": { "common": [ { - "id": "chrono 0.4.31", - "target": "chrono" - }, - { - "id": "dirs-next 2.0.0", - "target": "dirs_next" - }, - { - "id": "futures 0.3.29", - "target": "futures" - }, - { - "id": "hyper 0.14.27", - "target": "hyper" - }, - { - "id": "serde 1.0.192", - "target": "serde" - }, - { - "id": "serde_json 1.0.108", - "target": "serde_json" - }, - { - "id": "shlex 1.2.0", - "target": "shlex" + "id": "crypto-bigint 0.4.9", + "target": "crypto_bigint" }, { - "id": "tokio 1.34.0", - "target": "tokio" + "id": "hmac 0.12.1", + "target": "hmac" }, { "id": "zeroize 1.7.0", @@ -9528,175 +11384,233 @@ ], "selects": {} }, - "edition": "2018", - "proc_macro_deps": { - "common": [ - { - "id": "async-trait 0.1.74", - "target": "async_trait" - } - ], - "selects": {} - }, - "version": "0.48.0" + "edition": "2021", + "version": "0.3.1" }, - "license": "MIT" + "license": "Apache-2.0 OR MIT" }, - "rusoto_mock 0.48.0": { - "name": "rusoto_mock", - "version": "0.48.0", + "ring 0.16.20": { + "name": "ring", + "version": "0.16.20", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rusoto_mock/0.48.0/download", - "sha256": "5a384880f3c6d514e9499e6df75490bef5f6f39237bc24844e3933dfc09e9e55" + "url": "https://crates.io/api/v1/crates/ring/0.16.20/download", + "sha256": "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" } }, "targets": [ { "Library": { - "crate_name": "rusoto_mock", + "crate_name": "ring", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "rusoto_mock", + "library_target_name": "ring", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ + "alloc", "default", - "native-tls" + "dev_urandom_fallback", + "once_cell" ], "selects": {} }, "deps": { "common": [ { - "id": "chrono 0.4.31", - "target": "chrono" - }, - { - "id": "futures 0.3.29", - "target": "futures" - }, - { - "id": "http 0.2.11", - "target": "http" - }, - { - "id": "rusoto_core 0.48.0", - "target": "rusoto_core" - }, - { - "id": "serde 1.0.192", - "target": "serde" + "id": "ring 0.16.20", + "target": "build_script_build" }, { - "id": "serde_json 1.0.108", - "target": "serde_json" + "id": "untrusted 0.7.1", + "target": "untrusted" } ], - "selects": {} + "selects": { + "cfg(all(target_arch = \"wasm32\", target_vendor = \"unknown\", target_os = \"unknown\", target_env = \"\"))": [ + { + "id": "web-sys 0.3.65", + "target": "web_sys" + } + ], + "cfg(any(target_arch = \"x86\", target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"fuchsia\", target_os = \"linux\"))))": [ + { + "id": "spin 0.5.2", + "target": "spin" + } + ], + "cfg(any(target_os = \"android\", target_os = \"linux\"))": [ + { + "id": "libc 0.2.150", + "target": "libc" + }, + { + "id": "once_cell 1.18.0", + "target": "once_cell" + } + ], + "cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"illumos\", target_os = \"netbsd\", target_os = \"openbsd\", target_os = \"solaris\"))": [ + { + "id": "once_cell 1.18.0", + "target": "once_cell" + } + ], + "cfg(target_os = \"windows\")": [ + { + "id": "winapi 0.3.9", + "target": "winapi" + } + ] + } }, "edition": "2018", - "proc_macro_deps": { + "version": "0.16.20" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "deps": { "common": [ { - "id": "async-trait 0.1.74", - "target": "async_trait" + "id": "cc 1.0.83", + "target": "cc" } ], "selects": {} }, - "version": "0.48.0" + "links": "ring-asm" }, - "license": "MIT" + "license": null }, - "rusoto_s3 0.48.0": { - "name": "rusoto_s3", - "version": "0.48.0", + "ring 0.17.5": { + "name": "ring", + "version": "0.17.5", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rusoto_s3/0.48.0/download", - "sha256": "7aae4677183411f6b0b412d66194ef5403293917d66e70ab118f07cc24c5b14d" + "url": "https://crates.io/api/v1/crates/ring/0.17.5/download", + "sha256": "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" } }, "targets": [ { "Library": { - "crate_name": "rusoto_s3", + "crate_name": "ring", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "rusoto_s3", + "library_target_name": "ring", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ + "alloc", "default", - "native-tls" + "dev_urandom_fallback" ], "selects": {} }, "deps": { "common": [ { - "id": "bytes 1.5.0", - "target": "bytes" - }, - { - "id": "futures 0.3.29", - "target": "futures" + "id": "getrandom 0.2.11", + "target": "getrandom" }, { - "id": "rusoto_core 0.48.0", - "target": "rusoto_core" + "id": "ring 0.17.5", + "target": "build_script_build" }, { - "id": "xml-rs 0.8.19", - "target": "xml" + "id": "untrusted 0.9.0", + "target": "untrusted" } ], - "selects": {} + "selects": { + "cfg(all(target_arch = \"aarch64\", target_os = \"windows\"))": [ + { + "id": "windows-sys 0.48.0", + "target": "windows_sys" + } + ], + "cfg(any(target_arch = \"x86\", target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"fuchsia\", target_os = \"linux\", target_os = \"windows\"))))": [ + { + "id": "spin 0.9.8", + "target": "spin" + } + ], + "cfg(any(target_os = \"android\", target_os = \"linux\"))": [ + { + "id": "libc 0.2.150", + "target": "libc" + } + ] + } }, - "edition": "2018", - "proc_macro_deps": { + "edition": "2021", + "version": "0.17.5" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "deps": { "common": [ { - "id": "async-trait 0.1.74", - "target": "async_trait" + "id": "cc 1.0.83", + "target": "cc" } ], "selects": {} }, - "version": "0.48.0" + "links": "ring_core_0_17_5" }, - "license": "MIT" + "license": null }, - "rusoto_signature 0.48.0": { - "name": "rusoto_signature", - "version": "0.48.0", + "roxmltree 0.14.1": { + "name": "roxmltree", + "version": "0.14.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rusoto_signature/0.48.0/download", - "sha256": "a5ae95491c8b4847931e291b151127eccd6ff8ca13f33603eb3d0035ecb05272" + "url": "https://crates.io/api/v1/crates/roxmltree/0.14.1/download", + "sha256": "921904a62e410e37e215c40381b7117f830d9d89ba60ab5236170541dd25646b" } }, "targets": [ { "Library": { - "crate_name": "rusoto_signature", + "crate_name": "roxmltree", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -9704,88 +11618,31 @@ } } ], - "library_target_name": "rusoto_signature", + "library_target_name": "roxmltree", "common_attrs": { "compile_data_glob": [ "**" ], + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, "deps": { "common": [ { - "id": "base64 0.13.1", - "target": "base64" - }, - { - "id": "bytes 1.5.0", - "target": "bytes" - }, - { - "id": "chrono 0.4.31", - "target": "chrono" - }, - { - "id": "digest 0.9.0", - "target": "digest" - }, - { - "id": "futures 0.3.29", - "target": "futures" - }, - { - "id": "hex 0.4.3", - "target": "hex" - }, - { - "id": "hmac 0.11.0", - "target": "hmac" - }, - { - "id": "http 0.2.11", - "target": "http" - }, - { - "id": "hyper 0.14.27", - "target": "hyper" - }, - { - "id": "log 0.4.20", - "target": "log" - }, - { - "id": "md-5 0.9.1", - "target": "md5" - }, - { - "id": "percent-encoding 2.3.0", - "target": "percent_encoding" - }, - { - "id": "pin-project-lite 0.2.13", - "target": "pin_project_lite" - }, - { - "id": "rusoto_credential 0.48.0", - "target": "rusoto_credential" - }, - { - "id": "serde 1.0.192", - "target": "serde" - }, - { - "id": "sha2 0.9.9", - "target": "sha2" - }, - { - "id": "tokio 1.34.0", - "target": "tokio" + "id": "xmlparser 0.13.6", + "target": "xmlparser" } ], "selects": {} }, "edition": "2018", - "version": "0.48.0" + "version": "0.14.1" }, - "license": "MIT" + "license": "MIT/Apache-2.0" }, "rustc-demangle 0.1.23": { "name": "rustc-demangle", @@ -9856,13 +11713,13 @@ }, "license": "MIT/Apache-2.0" }, - "rustix 0.38.24": { + "rustix 0.38.25": { "name": "rustix", - "version": "0.38.24", + "version": "0.38.25", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rustix/0.38.24/download", - "sha256": "9ad981d6c340a49cdc40a1028d9c6084ec7e9fa33fcb839cab656a267071e234" + "url": "https://crates.io/api/v1/crates/rustix/0.38.25/download", + "sha256": "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" } }, "targets": [ @@ -9908,7 +11765,7 @@ "target": "bitflags" }, { - "id": "rustix 0.38.24", + "id": "rustix 0.38.25", "target": "build_script_build" } ], @@ -9955,7 +11812,7 @@ } }, "edition": "2021", - "version": "0.38.24" + "version": "0.38.25" }, "build_script_attrs": { "data_glob": [ @@ -10000,6 +11857,7 @@ ], "crate_features": { "common": [ + "default", "log", "logging", "tls12" @@ -10050,6 +11908,64 @@ }, "license": "Apache-2.0 OR ISC OR MIT" }, + "rustls-native-certs 0.6.3": { + "name": "rustls-native-certs", + "version": "0.6.3", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/rustls-native-certs/0.6.3/download", + "sha256": "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" + } + }, + "targets": [ + { + "Library": { + "crate_name": "rustls_native_certs", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "rustls_native_certs", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "rustls-pemfile 1.0.4", + "target": "rustls_pemfile" + } + ], + "selects": { + "cfg(all(unix, not(target_os = \"macos\")))": [ + { + "id": "openssl-probe 0.1.5", + "target": "openssl_probe" + } + ], + "cfg(target_os = \"macos\")": [ + { + "id": "security-framework 2.9.2", + "target": "security_framework" + } + ], + "cfg(windows)": [ + { + "id": "schannel 0.1.22", + "target": "schannel" + } + ] + } + }, + "edition": "2021", + "version": "0.6.3" + }, + "license": "Apache-2.0 OR ISC OR MIT" + }, "rustls-pemfile 1.0.4": { "name": "rustls-pemfile", "version": "1.0.4", @@ -10342,6 +12258,79 @@ }, "license": "Apache-2.0 OR ISC OR MIT" }, + "sec1 0.3.0": { + "name": "sec1", + "version": "0.3.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/sec1/0.3.0/download", + "sha256": "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" + } + }, + "targets": [ + { + "Library": { + "crate_name": "sec1", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "sec1", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "base16ct", + "default", + "der", + "generic-array", + "pkcs8", + "point", + "subtle", + "zeroize" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "base16ct 0.1.1", + "target": "base16ct" + }, + { + "id": "der 0.6.1", + "target": "der" + }, + { + "id": "generic-array 0.14.7", + "target": "generic_array" + }, + { + "id": "pkcs8 0.9.0", + "target": "pkcs8" + }, + { + "id": "subtle 2.5.0", + "target": "subtle" + }, + { + "id": "zeroize 1.7.0", + "target": "zeroize" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.3.0" + }, + "license": "Apache-2.0 OR MIT" + }, "security-framework 2.9.2": { "name": "security-framework", "version": "2.9.2", @@ -10791,19 +12780,19 @@ }, "license": "MIT/Apache-2.0" }, - "sha2 0.10.8": { - "name": "sha2", - "version": "0.10.8", + "sha1 0.10.6": { + "name": "sha1", + "version": "0.10.6", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sha2/0.10.8/download", - "sha256": "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" + "url": "https://crates.io/api/v1/crates/sha1/0.10.6/download", + "sha256": "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" } }, "targets": [ { "Library": { - "crate_name": "sha2", + "crate_name": "sha1", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -10811,7 +12800,7 @@ } } ], - "library_target_name": "sha2", + "library_target_name": "sha1", "common_attrs": { "compile_data_glob": [ "**" @@ -10835,7 +12824,7 @@ } ], "selects": { - "cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))": [ + "cfg(any(target_arch = \"aarch64\", target_arch = \"x86\", target_arch = \"x86_64\"))": [ { "id": "cpufeatures 0.2.11", "target": "cpufeatures" @@ -10844,17 +12833,17 @@ } }, "edition": "2018", - "version": "0.10.8" + "version": "0.10.6" }, "license": "MIT OR Apache-2.0" }, - "sha2 0.9.9": { + "sha2 0.10.8": { "name": "sha2", - "version": "0.9.9", + "version": "0.10.8", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sha2/0.9.9/download", - "sha256": "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" + "url": "https://crates.io/api/v1/crates/sha2/0.10.8/download", + "sha256": "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" } }, "targets": [ @@ -10882,36 +12871,67 @@ }, "deps": { "common": [ - { - "id": "block-buffer 0.9.0", - "target": "block_buffer" - }, { "id": "cfg-if 1.0.0", "target": "cfg_if" }, { - "id": "digest 0.9.0", + "id": "digest 0.10.7", "target": "digest" - }, + } + ], + "selects": { + "cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))": [ + { + "id": "cpufeatures 0.2.11", + "target": "cpufeatures" + } + ] + } + }, + "edition": "2018", + "version": "0.10.8" + }, + "license": "MIT OR Apache-2.0" + }, + "sharded-slab 0.1.7": { + "name": "sharded-slab", + "version": "0.1.7", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/sharded-slab/0.1.7/download", + "sha256": "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" + } + }, + "targets": [ + { + "Library": { + "crate_name": "sharded_slab", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "sharded_slab", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ { - "id": "opaque-debug 0.3.0", - "target": "opaque_debug" + "id": "lazy_static 1.4.0", + "target": "lazy_static" } ], - "selects": { - "cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))": [ - { - "id": "cpufeatures 0.2.11", - "target": "cpufeatures" - } - ] - } + "selects": {} }, "edition": "2018", - "version": "0.9.9" + "version": "0.1.7" }, - "license": "MIT OR Apache-2.0" + "license": "MIT" }, "shellexpand 3.1.0": { "name": "shellexpand", @@ -11037,6 +13057,60 @@ }, "license": "Apache-2.0/MIT" }, + "signature 1.6.4": { + "name": "signature", + "version": "1.6.4", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/signature/1.6.4/download", + "sha256": "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + } + }, + "targets": [ + { + "Library": { + "crate_name": "signature", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "signature", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "digest", + "digest-preview", + "hazmat-preview", + "rand-preview", + "rand_core", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "digest 0.10.7", + "target": "digest" + }, + { + "id": "rand_core 0.6.4", + "target": "rand_core" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "1.6.4" + }, + "license": "Apache-2.0 OR MIT" + }, "slab 0.4.9": { "name": "slab", "version": "0.4.9", @@ -11308,6 +13382,56 @@ }, "license": "MIT" }, + "spki 0.6.0": { + "name": "spki", + "version": "0.6.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/spki/0.6.0/download", + "sha256": "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" + } + }, + "targets": [ + { + "Library": { + "crate_name": "spki", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "spki", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "base64ct" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "base64ct 1.6.0", + "target": "base64ct" + }, + { + "id": "der 0.6.1", + "target": "der" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.6.0" + }, + "license": "Apache-2.0 OR MIT" + }, "static_assertions 1.1.0": { "name": "static_assertions", "version": "1.1.0", @@ -11398,13 +13522,13 @@ }, "license": "MIT" }, - "subtle 2.4.1": { + "subtle 2.5.0": { "name": "subtle", - "version": "2.4.1", + "version": "2.5.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/subtle/2.4.1/download", - "sha256": "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + "url": "https://crates.io/api/v1/crates/subtle/2.5.0/download", + "sha256": "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" } }, "targets": [ @@ -11423,8 +13547,14 @@ "compile_data_glob": [ "**" ], - "edition": "2015", - "version": "2.4.1" + "crate_features": { + "common": [ + "i128" + ], + "selects": {} + }, + "edition": "2018", + "version": "2.5.0" }, "license": "BSD-3-Clause" }, @@ -11639,7 +13769,7 @@ "selects": { "cfg(any(unix, target_os = \"wasi\"))": [ { - "id": "rustix 0.38.24", + "id": "rustix 0.38.25", "target": "rustix" } ], @@ -11808,23 +13938,191 @@ "selects": {} }, "edition": "2021", - "version": "1.0.50" + "version": "1.0.50" + }, + "license": "MIT OR Apache-2.0" + }, + "thread_local 1.1.7": { + "name": "thread_local", + "version": "1.1.7", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/thread_local/1.1.7/download", + "sha256": "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" + } + }, + "targets": [ + { + "Library": { + "crate_name": "thread_local", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "thread_local", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "cfg-if 1.0.0", + "target": "cfg_if" + }, + { + "id": "once_cell 1.18.0", + "target": "once_cell" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "1.1.7" + }, + "license": "MIT OR Apache-2.0" + }, + "time 0.3.30": { + "name": "time", + "version": "0.3.30", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/time/0.3.30/download", + "sha256": "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" + } + }, + "targets": [ + { + "Library": { + "crate_name": "time", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "time", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "default", + "parsing", + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "deranged 0.3.9", + "target": "deranged" + }, + { + "id": "powerfmt 0.2.0", + "target": "powerfmt" + }, + { + "id": "time-core 0.1.2", + "target": "time_core" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.3.30" + }, + "license": "MIT OR Apache-2.0" + }, + "time-core 0.1.2": { + "name": "time-core", + "version": "0.1.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/time-core/0.1.2/download", + "sha256": "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + } + }, + "targets": [ + { + "Library": { + "crate_name": "time_core", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "time_core", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2021", + "version": "0.1.2" + }, + "license": "MIT OR Apache-2.0" + }, + "time-macros 0.2.15": { + "name": "time-macros", + "version": "0.2.15", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/time-macros/0.2.15/download", + "sha256": "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" + } + }, + "targets": [ + { + "ProcMacro": { + "crate_name": "time_macros", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "time_macros", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "time-core 0.1.2", + "target": "time_core" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "0.2.15" }, "license": "MIT OR Apache-2.0" }, - "time 0.3.30": { - "name": "time", - "version": "0.3.30", + "tinyvec 1.6.0": { + "name": "tinyvec", + "version": "1.6.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/time/0.3.30/download", - "sha256": "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" + "url": "https://crates.io/api/v1/crates/tinyvec/1.6.0/download", + "sha256": "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" } }, "targets": [ { "Library": { - "crate_name": "time", + "crate_name": "tinyvec", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -11832,7 +14130,7 @@ } } ], - "library_target_name": "time", + "library_target_name": "tinyvec", "common_attrs": { "compile_data_glob": [ "**" @@ -11840,45 +14138,38 @@ "crate_features": { "common": [ "alloc", - "std" + "default", + "tinyvec_macros" ], "selects": {} }, "deps": { "common": [ { - "id": "deranged 0.3.9", - "target": "deranged" - }, - { - "id": "powerfmt 0.2.0", - "target": "powerfmt" - }, - { - "id": "time-core 0.1.2", - "target": "time_core" + "id": "tinyvec_macros 0.1.1", + "target": "tinyvec_macros" } ], "selects": {} }, - "edition": "2021", - "version": "0.3.30" + "edition": "2018", + "version": "1.6.0" }, - "license": "MIT OR Apache-2.0" + "license": "Zlib OR Apache-2.0 OR MIT" }, - "time-core 0.1.2": { - "name": "time-core", - "version": "0.1.2", + "tinyvec_macros 0.1.1": { + "name": "tinyvec_macros", + "version": "0.1.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/time-core/0.1.2/download", - "sha256": "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + "url": "https://crates.io/api/v1/crates/tinyvec_macros/0.1.1/download", + "sha256": "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" } }, "targets": [ { "Library": { - "crate_name": "time_core", + "crate_name": "tinyvec_macros", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -11886,15 +14177,15 @@ } } ], - "library_target_name": "time_core", + "library_target_name": "tinyvec_macros", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2021", - "version": "0.1.2" + "edition": "2018", + "version": "0.1.1" }, - "license": "MIT OR Apache-2.0" + "license": "MIT OR Apache-2.0 OR Zlib" }, "tls-listener 0.7.0": { "name": "tls-listener", @@ -12174,49 +14465,6 @@ }, "license": "MIT" }, - "tokio-native-tls 0.3.1": { - "name": "tokio-native-tls", - "version": "0.3.1", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/tokio-native-tls/0.3.1/download", - "sha256": "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" - } - }, - "targets": [ - { - "Library": { - "crate_name": "tokio_native_tls", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "tokio_native_tls", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "native-tls 0.2.11", - "target": "native_tls" - }, - { - "id": "tokio 1.34.0", - "target": "tokio" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.3.1" - }, - "license": "MIT" - }, "tokio-rustls 0.24.1": { "name": "tokio-rustls", "version": "0.24.1", @@ -12907,22 +15155,219 @@ ], "crate_features": { "common": [ + "default", "once_cell", + "std", + "valuable" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "once_cell 1.18.0", + "target": "once_cell" + } + ], + "selects": { + "cfg(tracing_unstable)": [ + { + "id": "valuable 0.1.0", + "target": "valuable" + } + ] + } + }, + "edition": "2018", + "version": "0.1.32" + }, + "license": "MIT" + }, + "tracing-log 0.2.0": { + "name": "tracing-log", + "version": "0.2.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/tracing-log/0.2.0/download", + "sha256": "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" + } + }, + "targets": [ + { + "Library": { + "crate_name": "tracing_log", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "tracing_log", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "log-tracer", "std" ], "selects": {} }, "deps": { "common": [ + { + "id": "log 0.4.20", + "target": "log" + }, { "id": "once_cell 1.18.0", "target": "once_cell" + }, + { + "id": "tracing-core 0.1.32", + "target": "tracing_core" } ], "selects": {} }, "edition": "2018", - "version": "0.1.32" + "version": "0.2.0" + }, + "license": "MIT" + }, + "tracing-serde 0.1.3": { + "name": "tracing-serde", + "version": "0.1.3", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/tracing-serde/0.1.3/download", + "sha256": "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" + } + }, + "targets": [ + { + "Library": { + "crate_name": "tracing_serde", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "tracing_serde", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "serde 1.0.192", + "target": "serde" + }, + { + "id": "tracing-core 0.1.32", + "target": "tracing_core" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.3" + }, + "license": "MIT" + }, + "tracing-subscriber 0.3.18": { + "name": "tracing-subscriber", + "version": "0.3.18", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/tracing-subscriber/0.3.18/download", + "sha256": "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" + } + }, + "targets": [ + { + "Library": { + "crate_name": "tracing_subscriber", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "tracing_subscriber", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "ansi", + "default", + "fmt", + "json", + "nu-ansi-term", + "registry", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "std", + "thread_local", + "tracing-log", + "tracing-serde" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "nu-ansi-term 0.46.0", + "target": "nu_ansi_term" + }, + { + "id": "serde 1.0.192", + "target": "serde" + }, + { + "id": "serde_json 1.0.108", + "target": "serde_json" + }, + { + "id": "sharded-slab 0.1.7", + "target": "sharded_slab" + }, + { + "id": "smallvec 1.11.2", + "target": "smallvec" + }, + { + "id": "thread_local 1.1.7", + "target": "thread_local" + }, + { + "id": "tracing-core 0.1.32", + "target": "tracing_core" + }, + { + "id": "tracing-log 0.2.0", + "target": "tracing_log" + }, + { + "id": "tracing-serde 0.1.3", + "target": "tracing_serde" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.3.18" }, "license": "MIT" }, @@ -13052,19 +15497,55 @@ }, "license": "MIT OR Apache-2.0" }, - "ucd-trie 0.1.6": { - "name": "ucd-trie", - "version": "0.1.6", + "ucd-trie 0.1.6": { + "name": "ucd-trie", + "version": "0.1.6", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/ucd-trie/0.1.6/download", + "sha256": "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + } + }, + "targets": [ + { + "Library": { + "crate_name": "ucd_trie", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "ucd_trie", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "std" + ], + "selects": {} + }, + "edition": "2021", + "version": "0.1.6" + }, + "license": "MIT OR Apache-2.0" + }, + "unicode-bidi 0.3.13": { + "name": "unicode-bidi", + "version": "0.3.13", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/ucd-trie/0.1.6/download", - "sha256": "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + "url": "https://crates.io/api/v1/crates/unicode-bidi/0.3.13/download", + "sha256": "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" } }, "targets": [ { "Library": { - "crate_name": "ucd_trie", + "crate_name": "unicode_bidi", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -13072,19 +15553,20 @@ } } ], - "library_target_name": "ucd_trie", + "library_target_name": "unicode_bidi", "common_attrs": { "compile_data_glob": [ "**" ], "crate_features": { "common": [ + "hardcoded-data", "std" ], "selects": {} }, - "edition": "2021", - "version": "0.1.6" + "edition": "2018", + "version": "0.3.13" }, "license": "MIT OR Apache-2.0" }, @@ -13118,6 +15600,51 @@ }, "license": "(MIT OR Apache-2.0) AND Unicode-DFS-2016" }, + "unicode-normalization 0.1.22": { + "name": "unicode-normalization", + "version": "0.1.22", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/unicode-normalization/0.1.22/download", + "sha256": "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" + } + }, + "targets": [ + { + "Library": { + "crate_name": "unicode_normalization", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "unicode_normalization", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "std" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "tinyvec 1.6.0", + "target": "tinyvec" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.22" + }, + "license": "MIT/Apache-2.0" + }, "untrusted 0.7.1": { "name": "untrusted", "version": "0.7.1", @@ -13178,6 +15705,89 @@ }, "license": "ISC" }, + "url 2.4.1": { + "name": "url", + "version": "2.4.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/url/2.4.1/download", + "sha256": "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" + } + }, + "targets": [ + { + "Library": { + "crate_name": "url", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "url", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "form_urlencoded 1.2.0", + "target": "form_urlencoded" + }, + { + "id": "idna 0.4.0", + "target": "idna" + }, + { + "id": "percent-encoding 2.3.0", + "target": "percent_encoding" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "2.4.1" + }, + "license": "MIT OR Apache-2.0" + }, + "urlencoding 2.1.3": { + "name": "urlencoding", + "version": "2.1.3", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/urlencoding/2.1.3/download", + "sha256": "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + } + }, + "targets": [ + { + "Library": { + "crate_name": "urlencoding", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "urlencoding", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2021", + "version": "2.1.3" + }, + "license": "MIT" + }, "utf8parse 0.2.1": { "name": "utf8parse", "version": "0.2.1", @@ -13263,35 +15873,58 @@ }, "license": "Apache-2.0 OR MIT" }, - "vcpkg 0.2.15": { - "name": "vcpkg", - "version": "0.2.15", + "valuable 0.1.0": { + "name": "valuable", + "version": "0.1.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/vcpkg/0.2.15/download", - "sha256": "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + "url": "https://crates.io/api/v1/crates/valuable/0.1.0/download", + "sha256": "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" } }, "targets": [ { "Library": { - "crate_name": "vcpkg", + "crate_name": "valuable", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], - "library_target_name": "vcpkg", + "library_target_name": "valuable", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2015", - "version": "0.2.15" + "deps": { + "common": [ + { + "id": "valuable 0.1.0", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.0" }, - "license": "MIT/Apache-2.0" + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT" }, "version_check 0.9.4": { "name": "version_check", @@ -13323,6 +15956,44 @@ }, "license": "MIT/Apache-2.0" }, + "vsimd 0.8.0": { + "name": "vsimd", + "version": "0.8.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/vsimd/0.8.0/download", + "sha256": "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + } + }, + "targets": [ + { + "Library": { + "crate_name": "vsimd", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "vsimd", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "alloc", + "detect", + "std" + ], + "selects": {} + }, + "edition": "2021", + "version": "0.8.0" + }, + "license": "MIT" + }, "want 0.3.1": { "name": "want", "version": "0.3.1", @@ -13716,6 +16387,36 @@ }, "license": "MIT OR Apache-2.0" }, + "webpki-roots 0.25.2": { + "name": "webpki-roots", + "version": "0.25.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/webpki-roots/0.25.2/download", + "sha256": "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" + } + }, + "targets": [ + { + "Library": { + "crate_name": "webpki_roots", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "webpki_roots", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2018", + "version": "0.25.2" + }, + "license": "MPL-2.0" + }, "which 4.4.2": { "name": "which", "version": "4.4.2", @@ -13748,7 +16449,7 @@ "target": "either" }, { - "id": "rustix 0.38.24", + "id": "rustix 0.38.25", "target": "rustix" } ], @@ -13812,14 +16513,11 @@ "errhandlingapi", "fileapi", "handleapi", - "knownfolders", "minwindef", "ntsecapi", - "objbase", "processenv", "processthreadsapi", "psapi", - "shlobj", "std", "sysinfoapi", "winbase", @@ -14011,45 +16709,6 @@ }, "license": "MIT/Apache-2.0" }, - "windows-core 0.51.1": { - "name": "windows-core", - "version": "0.51.1", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/windows-core/0.51.1/download", - "sha256": "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" - } - }, - "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.48.5", - "target": "windows_targets" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "0.51.1" - }, - "license": "MIT OR Apache-2.0" - }, "windows-sys 0.48.0": { "name": "windows-sys", "version": "0.48.0", @@ -14570,19 +17229,19 @@ }, "license": "MIT OR Apache-2.0" }, - "xml-rs 0.8.19": { - "name": "xml-rs", - "version": "0.8.19", + "xmlparser 0.13.6": { + "name": "xmlparser", + "version": "0.13.6", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/xml-rs/0.8.19/download", - "sha256": "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" + "url": "https://crates.io/api/v1/crates/xmlparser/0.13.6/download", + "sha256": "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" } }, "targets": [ { "Library": { - "crate_name": "xml", + "crate_name": "xmlparser", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -14590,15 +17249,22 @@ } } ], - "library_target_name": "xml", + "library_target_name": "xmlparser", "common_attrs": { "compile_data_glob": [ "**" ], - "edition": "2021", - "version": "0.8.19" + "crate_features": { + "common": [ + "default", + "std" + ], + "selects": {} + }, + "edition": "2018", + "version": "0.13.6" }, - "license": "MIT" + "license": "MIT/Apache-2.0" }, "yansi 0.5.1": { "name": "yansi", @@ -14840,7 +17506,6 @@ "cfg(all(target_arch = \"aarch64\", target_os = \"windows\"))": [], "cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))": [], "cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))": [], - "cfg(all(target_arch = \"wasm32\", not(any(target_os = \"emscripten\", target_os = \"wasi\"))))": [], "cfg(all(target_arch = \"wasm32\", target_vendor = \"unknown\", target_os = \"unknown\", target_env = \"\"))": [], "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(windows_raw_dylib)))": [], "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": [], @@ -14850,7 +17515,18 @@ "cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))": [ "x86_64-pc-windows-msvc" ], + "cfg(all(unix, not(target_os = \"macos\")))": [ + "aarch64-unknown-linux-gnu", + "arm-unknown-linux-gnueabi", + "armv7-unknown-linux-gnueabi", + "x86_64-unknown-linux-gnu" + ], "cfg(any())": [], + "cfg(any(target_arch = \"aarch64\", target_arch = \"x86\", target_arch = \"x86_64\"))": [ + "aarch64-unknown-linux-gnu", + "x86_64-pc-windows-msvc", + "x86_64-unknown-linux-gnu" + ], "cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))": [ "aarch64-unknown-linux-gnu", "x86_64-pc-windows-msvc", @@ -14883,7 +17559,6 @@ "armv7-unknown-linux-gnueabi", "x86_64-unknown-linux-gnu" ], - "cfg(any(target_os = \"macos\", target_os = \"ios\"))": [], "cfg(any(unix, target_os = \"wasi\"))": [ "aarch64-unknown-linux-gnu", "arm-unknown-linux-gnueabi", @@ -14897,6 +17572,7 @@ "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu" ], + "cfg(aws_sdk_unstable)": [], "cfg(not(all(target_arch = \"arm\", target_os = \"none\")))": [ "aarch64-unknown-linux-gnu", "arm-unknown-linux-gnueabi", @@ -14910,12 +17586,6 @@ "armv7-unknown-linux-gnueabi", "x86_64-unknown-linux-gnu" ], - "cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))": [ - "aarch64-unknown-linux-gnu", - "arm-unknown-linux-gnueabi", - "armv7-unknown-linux-gnueabi", - "x86_64-unknown-linux-gnu" - ], "cfg(not(any(windows, target_os = \"hermit\", target_os = \"unknown\")))": [ "aarch64-unknown-linux-gnu", "arm-unknown-linux-gnueabi", @@ -14942,16 +17612,15 @@ "armv7-unknown-linux-gnueabi", "x86_64-unknown-linux-gnu" ], - "cfg(target_arch = \"wasm32\")": [], - "cfg(target_os = \"android\")": [], - "cfg(target_os = \"haiku\")": [], "cfg(target_os = \"hermit\")": [], + "cfg(target_os = \"macos\")": [], "cfg(target_os = \"redox\")": [], "cfg(target_os = \"wasi\")": [], "cfg(target_os = \"windows\")": [ "x86_64-pc-windows-msvc" ], "cfg(tokio_taskdump)": [], + "cfg(tracing_unstable)": [], "cfg(unix)": [ "aarch64-unknown-linux-gnu", "arm-unknown-linux-gnueabi", diff --git a/Cargo.lock b/Cargo.lock index 1bebf3cad..70336617e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -44,21 +44,6 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" -[[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.6.4" @@ -125,6 +110,17 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "assert-json-diff" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4259cbe96513d2f1073027a259fc2ca917feb3026a5a8d984e3628e490255cc0" +dependencies = [ + "extend", + "serde", + "serde_json", +] + [[package]] name = "async-lock" version = "2.8.0" @@ -151,6 +147,424 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "aws-config" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2bf00cb9416daab4ce4927c54ebe63c08b9caf4d7b9314b6d7a4a2c5a1afb09" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-sdk-sso", + "aws-sdk-ssooidc", + "aws-sdk-sts", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "hex", + "http", + "hyper", + "ring 0.17.5", + "time", + "tokio", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-credential-types" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb9073c88dbf12f68ce7d0e149f989627a1d1ae3d2b680459f04ccc29d1cbd0f" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "zeroize", +] + +[[package]] +name = "aws-http" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24067106d09620cf02d088166cdaedeaca7146d4d499c41b37accecbea11b246" +dependencies = [ + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http", + "http-body", + "pin-project-lite", + "tracing", +] + +[[package]] +name = "aws-runtime" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6ee0152c06d073602236a4e94a8c52a327d310c1ecd596570ce795af8777ff" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-eventstream", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "fastrand", + "http", + "percent-encoding", + "tracing", + "uuid", +] + +[[package]] +name = "aws-sdk-config" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75fa529a69c86c40743988c7bd72401dae18b70fabd33e132c1daa81c03d9698" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http", + "regex", + "tracing", +] + +[[package]] +name = "aws-sdk-s3" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84022763485483ea17d417f9832d5da198bc36829b59f086c0d35ecd2ce59991" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-checksums", + "aws-smithy-eventstream", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "bytes", + "http", + "http-body", + "once_cell", + "percent-encoding", + "regex", + "tracing", + "url", +] + +[[package]] +name = "aws-sdk-sso" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb8158015232b4596ccef74a205600398e152d704b40b7ec9f486092474d7fa" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http", + "regex", + "tracing", +] + +[[package]] +name = "aws-sdk-ssooidc" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36a1493e1c57f173e53621935bfb5b6217376168dbdb4cd459aebcf645924a48" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http", + "regex", + "tracing", +] + +[[package]] +name = "aws-sdk-sts" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e032b77f5cd1dd3669d777a38ac08cbf8ec68e29460d4ef5d3e50cffa74ec75a" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-query", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "http", + "regex", + "tracing", +] + +[[package]] +name = "aws-sigv4" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f81a6abc4daab06b53cabf27c54189928893283093e37164ca53aa47488a5b" +dependencies = [ + "aws-credential-types", + "aws-smithy-eventstream", + "aws-smithy-http", + "aws-smithy-runtime-api", + "bytes", + "form_urlencoded", + "hex", + "hmac", + "http", + "num-bigint", + "once_cell", + "p256", + "percent-encoding", + "regex", + "ring 0.17.5", + "sha2", + "time", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-smithy-async" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe53fccd3b10414b9cae63767a15a2789b34e6c6727b6e32b33e8c7998a3e80" +dependencies = [ + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "aws-smithy-checksums" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb5701fbfb40600cc0fa547f318552dfd4e632b2099bd75d95fb0faae70675d" +dependencies = [ + "aws-smithy-http", + "aws-smithy-types", + "bytes", + "crc32c", + "crc32fast", + "hex", + "http", + "http-body", + "md-5", + "pin-project-lite", + "sha1", + "sha2", + "tracing", +] + +[[package]] +name = "aws-smithy-eventstream" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b33fa99f928a5815b94ee07e1377901bcf51aa749034a2c802dc38f9dcfacf5" +dependencies = [ + "aws-smithy-types", + "bytes", + "crc32fast", +] + +[[package]] +name = "aws-smithy-http" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7972373213d1d6e619c0edc9dda2d6634154e4ed75c5e0b2bf065cd5ec9f0d1" +dependencies = [ + "aws-smithy-eventstream", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "bytes-utils", + "futures-core", + "http", + "http-body", + "once_cell", + "percent-encoding", + "pin-project-lite", + "pin-utils", + "tracing", +] + +[[package]] +name = "aws-smithy-json" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d64d5af16dd585de9ff6c606423c1aaad47c6baa38de41c2beb32ef21c6645" +dependencies = [ + "aws-smithy-types", +] + +[[package]] +name = "aws-smithy-protocol-test" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26f2e88fc47108b787e2a5419adc22436db606557613e0bb02836d38e83c19bb" +dependencies = [ + "assert-json-diff", + "aws-smithy-runtime-api", + "http", + "pretty_assertions", + "regex", + "roxmltree", + "serde_json", + "thiserror", +] + +[[package]] +name = "aws-smithy-query" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7527bf5335154ba1b285479c50b630e44e93d1b4a759eaceb8d0bf9fbc82caa5" +dependencies = [ + "aws-smithy-types", + "urlencoding", +] + +[[package]] +name = "aws-smithy-runtime" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "839b363adf3b2bdab2742a1f540fec23039ea8bc9ec0f9f61df48470cfe5527b" +dependencies = [ + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-protocol-test", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "fastrand", + "http", + "http-body", + "hyper", + "hyper-rustls", + "once_cell", + "pin-project-lite", + "pin-utils", + "rustls", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "aws-smithy-runtime-api" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f24ecc446e62c3924539e7c18dec8038dba4fdf8718d5c2de62f9d2fecca8ba9" +dependencies = [ + "aws-smithy-async", + "aws-smithy-types", + "bytes", + "http", + "pin-project-lite", + "tokio", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-smithy-types" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051de910296522a21178a2ea402ea59027eef4b63f1cef04a0be2bb5e25dea03" +dependencies = [ + "base64-simd", + "bytes", + "bytes-utils", + "futures-core", + "http", + "http-body", + "itoa", + "num-integer", + "pin-project-lite", + "pin-utils", + "ryu", + "serde", + "time", + "tokio", + "tokio-util", +] + +[[package]] +name = "aws-smithy-xml" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb1e3ac22c652662096c8e37a6f9af80c6f3520cab5610b2fe76c725bce18eac" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "aws-types" +version = "0.57.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "048bbf1c24cdf4eb1efcdc243388a93a90ebf63979e25fc1c7b8cbd9cb6beb38" +dependencies = [ + "aws-credential-types", + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "http", + "rustc_version", + "tracing", +] + [[package]] name = "axum" version = "0.6.20" @@ -216,10 +630,10 @@ dependencies = [ ] [[package]] -name = "base64" -version = "0.13.1" +name = "base16ct" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" [[package]] name = "base64" @@ -227,6 +641,22 @@ version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +[[package]] +name = "base64-simd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" +dependencies = [ + "outref", + "vsimd", +] + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "bincode" version = "1.3.3" @@ -261,15 +691,6 @@ dependencies = [ "constant_time_eq", ] -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -297,6 +718,16 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +[[package]] +name = "bytes-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" +dependencies = [ + "bytes", + "either", +] + [[package]] name = "cc" version = "1.0.83" @@ -312,21 +743,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "chrono" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets", -] - [[package]] name = "clap" version = "4.4.8" @@ -373,6 +789,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "const-oid" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" + [[package]] name = "constant_time_eq" version = "0.3.0" @@ -404,6 +826,15 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32c" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74" +dependencies = [ + "rustc_version", +] + [[package]] name = "crc32fast" version = "1.3.2" @@ -414,23 +845,25 @@ dependencies = [ ] [[package]] -name = "crypto-common" -version = "0.1.6" +name = "crypto-bigint" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ "generic-array", - "typenum", + "rand_core", + "subtle", + "zeroize", ] [[package]] -name = "crypto-mac" -version = "0.11.1" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "subtle", + "typenum", ] [[package]] @@ -443,6 +876,16 @@ dependencies = [ "syn 2.0.39", ] +[[package]] +name = "der" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "deranged" version = "0.3.9" @@ -458,23 +901,15 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "crypto-common", + "subtle", ] [[package]] @@ -483,6 +918,11 @@ version = "0.0.1" dependencies = [ "async-lock", "async-trait", + "aws-config", + "aws-sdk-config", + "aws-sdk-s3", + "aws-smithy-runtime", + "aws-smithy-types", "axum", "bincode", "blake3", @@ -499,6 +939,7 @@ dependencies = [ "hex", "http", "hyper", + "hyper-rustls", "json5", "log", "lru", @@ -518,14 +959,10 @@ dependencies = [ "rand", "rcgen", "relative-path", - "rusoto_core", - "rusoto_mock", - "rusoto_s3", - "rusoto_signature", "rustls-pemfile", "scopeguard", "serde", - "sha2 0.10.8", + "sha2", "shellexpand", "shlex", "stdext", @@ -549,16 +986,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.4.1" @@ -571,29 +998,50 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dtoa" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +[[package]] +name = "ecdsa" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +dependencies = [ + "der", + "elliptic-curve", + "rfc6979", + "signature", +] + [[package]] name = "either" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +[[package]] +name = "elliptic-curve" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +dependencies = [ + "base16ct", + "crypto-bigint", + "der", + "digest", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "env_logger" version = "0.10.1" @@ -629,12 +1077,34 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "extend" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47da3a72ec598d9c8937a7ebca8962a5c7a1f28444e38c2b33c771ba3f55f05" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "fastrand" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "rand_core", + "subtle", +] + [[package]] name = "filetime" version = "0.2.22" @@ -675,21 +1145,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "form_urlencoded" version = "1.2.0" @@ -821,6 +1276,17 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + [[package]] name = "h2" version = "0.3.22" @@ -885,12 +1351,11 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hmac" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "crypto-mac", - "digest 0.9.0", + "digest", ] [[package]] @@ -967,51 +1432,42 @@ dependencies = [ ] [[package]] -name = "hyper-timeout" -version = "0.4.1" +name = "hyper-rustls" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ + "futures-util", + "http", "hyper", - "pin-project-lite", + "log", + "rustls", + "rustls-native-certs", "tokio", - "tokio-io-timeout", + "tokio-rustls", + "webpki-roots", ] [[package]] -name = "hyper-tls" -version = "0.5.0" +name = "hyper-timeout" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "bytes", "hyper", - "native-tls", + "pin-project-lite", "tokio", - "tokio-native-tls", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", + "tokio-io-timeout", ] [[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" +name = "idna" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "cc", + "unicode-bidi", + "unicode-normalization", ] [[package]] @@ -1157,13 +1613,12 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "md-5" -version = "0.9.1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug", + "cfg-if", + "digest", ] [[package]] @@ -1229,24 +1684,6 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - [[package]] name = "nix" version = "0.26.4" @@ -1260,6 +1697,37 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.17" @@ -1284,47 +1752,15 @@ name = "object" version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "openssl" -version = "0.10.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a257ad03cd8fb16ad4172fedf8094451e1af1c4b70097636ef2eac9a5f0cc33" -dependencies = [ - "bitflags 2.4.1", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", +dependencies = [ + "memchr", ] [[package]] -name = "openssl-macros" -version = "0.1.1" +name = "once_cell" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.39", -] +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "openssl-probe" @@ -1332,24 +1768,35 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" -[[package]] -name = "openssl-sys" -version = "0.9.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40a4130519a360279579c2053038317e40eff64d13fd3f004f9e1b72b8a6aaf9" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "outref" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p256" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +dependencies = [ + "ecdsa", + "elliptic-curve", + "sha2", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -1379,7 +1826,7 @@ version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3163d2912b7c3b52d651a055f2c7eec9ba5cd22d26ef75b8dd3a59980b185923" dependencies = [ - "base64 0.21.5", + "base64", "serde", ] @@ -1431,7 +1878,7 @@ checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" dependencies = [ "once_cell", "pest", - "sha2 0.10.8", + "sha2", ] [[package]] @@ -1477,10 +1924,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] -name = "pkg-config" -version = "0.3.27" +name = "pkcs8" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +dependencies = [ + "der", + "spki", +] [[package]] name = "powerfmt" @@ -1514,6 +1965,30 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro2" version = "1.0.69" @@ -1715,6 +2190,17 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" +[[package]] +name = "rfc6979" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +dependencies = [ + "crypto-bigint", + "hmac", + "zeroize", +] + [[package]] name = "ring" version = "0.16.20" @@ -1745,100 +2231,12 @@ dependencies = [ ] [[package]] -name = "rusoto_core" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db30db44ea73551326269adcf7a2169428a054f14faf9e1768f2163494f2fa2" -dependencies = [ - "async-trait", - "base64 0.13.1", - "bytes", - "crc32fast", - "futures", - "http", - "hyper", - "hyper-tls", - "lazy_static", - "log", - "rusoto_credential", - "rusoto_signature", - "rustc_version", - "serde", - "serde_json", - "tokio", - "xml-rs", -] - -[[package]] -name = "rusoto_credential" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee0a6c13db5aad6047b6a44ef023dbbc21a056b6dab5be3b79ce4283d5c02d05" -dependencies = [ - "async-trait", - "chrono", - "dirs-next", - "futures", - "hyper", - "serde", - "serde_json", - "shlex", - "tokio", - "zeroize", -] - -[[package]] -name = "rusoto_mock" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a384880f3c6d514e9499e6df75490bef5f6f39237bc24844e3933dfc09e9e55" -dependencies = [ - "async-trait", - "chrono", - "futures", - "http", - "rusoto_core", - "serde", - "serde_json", -] - -[[package]] -name = "rusoto_s3" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aae4677183411f6b0b412d66194ef5403293917d66e70ab118f07cc24c5b14d" -dependencies = [ - "async-trait", - "bytes", - "futures", - "rusoto_core", - "xml-rs", -] - -[[package]] -name = "rusoto_signature" -version = "0.48.0" +name = "roxmltree" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ae95491c8b4847931e291b151127eccd6ff8ca13f33603eb3d0035ecb05272" +checksum = "921904a62e410e37e215c40381b7117f830d9d89ba60ab5236170541dd25646b" dependencies = [ - "base64 0.13.1", - "bytes", - "chrono", - "digest 0.9.0", - "futures", - "hex", - "hmac", - "http", - "hyper", - "log", - "md-5", - "percent-encoding", - "pin-project-lite", - "rusoto_credential", - "rustc_version", - "serde", - "sha2 0.9.9", - "tokio", + "xmlparser", ] [[package]] @@ -1858,9 +2256,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.24" +version = "0.38.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ad981d6c340a49cdc40a1028d9c6084ec7e9fa33fcb839cab656a267071e234" +checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" dependencies = [ "bitflags 2.4.1", "errno", @@ -1881,13 +2279,25 @@ dependencies = [ "sct", ] +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64", ] [[package]] @@ -1937,6 +2347,20 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "sec1" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "security-framework" version = "2.9.2" @@ -2020,16 +2444,14 @@ dependencies = [ ] [[package]] -name = "sha2" -version = "0.9.9" +name = "sha1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "block-buffer 0.9.0", "cfg-if", "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "digest", ] [[package]] @@ -2040,7 +2462,16 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", ] [[package]] @@ -2067,6 +2498,16 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +dependencies = [ + "digest", + "rand_core", +] + [[package]] name = "slab" version = "0.4.9" @@ -2114,6 +2555,16 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -2134,9 +2585,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" @@ -2208,6 +2659,16 @@ dependencies = [ "syn 2.0.39", ] +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + [[package]] name = "time" version = "0.3.30" @@ -2218,6 +2679,7 @@ dependencies = [ "powerfmt", "serde", "time-core", + "time-macros", ] [[package]] @@ -2226,6 +2688,30 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +[[package]] +name = "time-macros" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tls-listener" version = "0.7.0" @@ -2280,16 +2766,6 @@ dependencies = [ "syn 2.0.39", ] -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.24.1" @@ -2334,7 +2810,7 @@ checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" dependencies = [ "async-trait", "axum", - "base64 0.21.5", + "base64", "bytes", "flate2", "futures-core", @@ -2430,6 +2906,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "nu-ansi-term", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", + "tracing-serde", ] [[package]] @@ -2460,12 +2975,27 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + [[package]] name = "untrusted" version = "0.7.1" @@ -2478,6 +3008,23 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "utf8parse" version = "0.2.1" @@ -2494,10 +3041,10 @@ dependencies = [ ] [[package]] -name = "vcpkg" -version = "0.2.15" +name = "valuable" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "version_check" @@ -2505,6 +3052,12 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "vsimd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + [[package]] name = "want" version = "0.3.1" @@ -2584,6 +3137,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" + [[package]] name = "which" version = "4.4.2" @@ -2627,15 +3186,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-core" -version = "0.51.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -2703,10 +3253,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] -name = "xml-rs" -version = "0.8.19" +name = "xmlparser" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" [[package]] name = "yansi" diff --git a/Cargo.toml b/Cargo.toml index b5d666fee..d9bedc9ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -103,6 +103,11 @@ members = [ [workspace.dependencies] async-lock = "2.7.0" async-trait = "0.1.71" +aws-config = "0.57.1" +aws-sdk-config = "0.35.0" +aws-sdk-s3 = { version = "0.35.0", features = ["rt-tokio", "test-util"] } +aws-smithy-runtime = { version = "0.57.1", features = ["client", "connector-hyper-0-14-x"] } +aws-smithy-types = "0.57.1" axum = "0.6.18" bincode = "1.3.3" blake3 = "1.4.1" @@ -118,7 +123,8 @@ futures = "0.3.28" hashbrown = "0.14" hex = "0.4.3" http = "^0.2" -hyper = "0.14.27" +hyper = { version = "0.14.27", features = ["tcp", "client"] } +hyper-rustls = { version = "0.24.2", features = ["webpki-tokio"] } json5 = "0.4.1" log = "0.4.19" lru = "0.10.1" @@ -138,10 +144,6 @@ prost-types = "0.11.9" rand = "0.8.5" rcgen = "0.11.3" relative-path = "1.8.0" -rusoto_core = "0.48.0" -rusoto_mock = "=0.48.0" -rusoto_s3 = "0.48.0" -rusoto_signature = "0.48.0" rustls-pemfile = "1.0.3" scopeguard = "1.2.0" serde = "1.0.167" diff --git a/cas/scheduler/grpc_scheduler.rs b/cas/scheduler/grpc_scheduler.rs index 9a603c89b..b3e196731 100644 --- a/cas/scheduler/grpc_scheduler.rs +++ b/cas/scheduler/grpc_scheduler.rs @@ -78,7 +78,7 @@ impl GrpcScheduler { platform_property_managers: Mutex::new(HashMap::new()), jitter_fn, retry: config.retry.clone(), - retrier: Retrier::new(Box::new(|duration| Box::pin(sleep(duration)))), + retrier: Retrier::new(Arc::new(|duration| Box::pin(sleep(duration)))), }) } diff --git a/cas/store/BUILD b/cas/store/BUILD index c66de1ad6..aa70a3207 100644 --- a/cas/store/BUILD +++ b/cas/store/BUILD @@ -275,16 +275,15 @@ rust_library( "//util:common", "//util:error", "//util:retry", - "@crate_index//:bytes", + "@crate_index//:aws-config", + "@crate_index//:aws-sdk-s3", + "@crate_index//:aws-smithy-runtime", "@crate_index//:futures", - "@crate_index//:http", - "@crate_index//:once_cell", + "@crate_index//:hyper", + "@crate_index//:hyper-rustls", "@crate_index//:rand", - "@crate_index//:rusoto_core", - "@crate_index//:rusoto_s3", - "@crate_index//:rusoto_signature", "@crate_index//:tokio", - "@crate_index//:tokio-util", + "@crate_index//:tokio-stream", ], ) @@ -468,17 +467,14 @@ rust_test( ":s3_store", ":traits", "//config", - "//util:async_fixed_buffer", "//util:common", "//util:error", - "@crate_index//:futures", + "@crate_index//:aws-sdk-s3", + "@crate_index//:aws-smithy-runtime", + "@crate_index//:aws-smithy-types", "@crate_index//:http", "@crate_index//:pretty_assertions", - "@crate_index//:rusoto_core", - "@crate_index//:rusoto_mock", - "@crate_index//:rusoto_s3", "@crate_index//:tokio", - "@crate_index//:tokio-util", ], ) diff --git a/cas/store/default_store_factory.rs b/cas/store/default_store_factory.rs index 33d39be14..1ab99948a 100644 --- a/cas/store/default_store_factory.rs +++ b/cas/store/default_store_factory.rs @@ -46,7 +46,7 @@ pub fn store_factory<'a>( Box::pin(async move { let store: Arc = match backend { StoreConfig::memory(config) => Arc::new(MemoryStore::new(config)), - StoreConfig::s3_store(config) => Arc::new(S3Store::new(config)?), + StoreConfig::s3_store(config) => Arc::new(S3Store::new(config).await?), StoreConfig::verify(config) => Arc::new(VerifyStore::new( config, store_factory(&config.backend, store_manager, None).await?, diff --git a/cas/store/grpc_store.rs b/cas/store/grpc_store.rs index 595f1ee24..5099aab8f 100644 --- a/cas/store/grpc_store.rs +++ b/cas/store/grpc_store.rs @@ -108,7 +108,7 @@ impl GrpcStore { store_type: config.store_type, jitter_fn, retry: config.retry.to_owned(), - retrier: Retrier::new(Box::new(|duration| Box::pin(sleep(duration)))), + retrier: Retrier::new(Arc::new(|duration| Box::pin(sleep(duration)))), }) } diff --git a/cas/store/s3_store.rs b/cas/store/s3_store.rs index 92172998b..0746c358d 100644 --- a/cas/store/s3_store.rs +++ b/cas/store/s3_store.rs @@ -13,160 +13,147 @@ // limitations under the License. use std::cmp; -use std::io::Cursor; +use std::future::Future; use std::marker::Send; use std::pin::Pin; -use std::sync::{Arc, Mutex}; +use std::sync::Arc; +use std::task::{Context, Poll}; use std::time::Duration; use async_trait::async_trait; -use futures::future::{try_join_all, FutureExt}; -use futures::stream::{unfold, FuturesUnordered}; -use futures::TryStreamExt; -use http::status::StatusCode; -use once_cell::sync::Lazy; -use rand::{rngs::OsRng, Rng}; -use rusoto_core::credential::DefaultCredentialsProvider; -use rusoto_core::request::{DispatchSignedRequest, DispatchSignedRequestFuture}; -use rusoto_core::{region::Region, ByteStream, HttpClient, HttpDispatchError, RusotoError}; -use rusoto_s3::{ - AbortMultipartUploadRequest, CompleteMultipartUploadRequest, CompletedMultipartUpload, CompletedPart, - CreateMultipartUploadRequest, GetObjectError, GetObjectRequest, HeadObjectError, HeadObjectRequest, - PutObjectRequest, S3Client, UploadPartRequest, S3, -}; -use rusoto_signature::signature::SignedRequest; -use tokio::sync::Semaphore; -use tokio::time::sleep; -use tokio_util::io::ReaderStream; - +use aws_sdk_s3::operation::create_multipart_upload::CreateMultipartUploadOutput; +use aws_sdk_s3::operation::get_object::GetObjectError; +use aws_sdk_s3::operation::head_object::HeadObjectError; +use aws_sdk_s3::primitives::{ByteStream, SdkBody}; +use aws_sdk_s3::types::builders::{CompletedMultipartUploadBuilder, CompletedPartBuilder}; +use aws_sdk_s3::Client; +use aws_smithy_runtime::client::http::hyper_014::HyperClientBuilder; use buf_channel::{DropCloserReadHalf, DropCloserWriteHalf}; -use common::{log, DigestInfo, JoinHandleDropGuard}; +use common::{log, DigestInfo}; use error::{error_if, make_err, make_input_err, Code, Error, ResultExt}; +use futures::stream::{unfold, FuturesUnordered}; +use futures::{try_join, FutureExt, StreamExt, TryStreamExt}; +use hyper::client::connect::HttpConnector; +use hyper::service::Service; +use hyper::Uri; +use hyper_rustls::{HttpsConnector, MaybeHttpsStream}; +use rand::rngs::OsRng; +use rand::Rng; use retry::{ExponentialBackoff, Retrier, RetryResult}; +use tokio::net::TcpStream; +use tokio::sync::mpsc; +use tokio::time::sleep; +use tokio_stream::wrappers::ReceiverStream; use traits::{StoreTrait, UploadSizeInfo}; // S3 parts cannot be smaller than this number. See: // https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html const MIN_MULTIPART_SIZE: usize = 5 * 1024 * 1024; // 5mb. -// Size for the large vector pool if not specified. -// NOTE: If this value is changed also change comment in stores.rs. -const DEFAULT_ADDITIONAL_MAX_CONCURRENT_REQUESTS: usize = 20; +// Default limit for concurrent part uploads per multipart upload. +// Note: If you change this, adjust the docs in the config. +const DEFAULT_MULTIPART_MAX_CONCURRENT_UPLOADS: usize = 10; -struct InnerThrottledDispatcher { - client: HttpClient, - active_request_semaphore: Semaphore, +#[derive(Clone)] +pub struct TlsConnector { + connector: HttpsConnector, + retry: config::stores::Retry, + retrier: Retrier, + jitter_fn: Arc Duration + Send + Sync>, } -struct ThrottledDispatcher { - inner: Arc, -} +impl TlsConnector { + #[must_use] + pub fn new(config: &config::stores::S3Store, jitter_fn: Arc Duration + Send + Sync>) -> Self { + let connector_with_roots = hyper_rustls::HttpsConnectorBuilder::new().with_webpki_roots(); + + let connector_with_schemes = if config.insecure_allow_http { + connector_with_roots.https_or_http() + } else { + connector_with_roots.https_only() + }; + + let connector = connector_with_schemes.enable_http1().enable_http2().build(); -impl ThrottledDispatcher { - fn new() -> Self { Self { - inner: Arc::new(InnerThrottledDispatcher { - client: HttpClient::new().expect("failed to create request dispatcher"), - active_request_semaphore: Semaphore::new(0), // We will fill this later. - }), + connector, + retry: config.retry.clone(), + retrier: Retrier::new(Arc::new(|duration| Box::pin(sleep(duration)))), + jitter_fn, } } - fn add_permits(&self, count: usize) { - self.inner.active_request_semaphore.add_permits(count); + async fn call_with_retry(&self, req: &Uri) -> Result, Error> { + let retry_config = ExponentialBackoff::new(Duration::from_millis(self.retry.delay as u64)) + .map(|d| (self.jitter_fn)(d)) + .take(self.retry.max_retries); // Remember this is number of retries, so will run max_retries + 1. + let retry_stream_fn = unfold(self.connector.clone(), move |mut connector| async move { + match connector.call(req.clone()).await { + Ok(stream) => Some((RetryResult::Ok(stream), connector)), + Err(e) => Some(( + RetryResult::Retry(make_err!( + Code::Unavailable, + "Failed to call S3 connector: {e:?}, retries: {}", + self.retry.max_retries + 1, + )), + connector, + )), + } + }); + self.retrier.retry(retry_config, retry_stream_fn).await } } -impl DispatchSignedRequest for ThrottledDispatcher { - fn dispatch(&self, request: SignedRequest, timeout: Option) -> DispatchSignedRequestFuture { - let inner = self.inner.clone(); - Box::pin(async move { - // This will limit the number of concurrent requests permitted at once. - let _permit = inner - .active_request_semaphore - .acquire() - .await - .map_err(|_| HttpDispatchError::new("Semaphore closed".into()))?; - inner.client.dispatch(request, timeout).await - }) - } -} +impl Service for TlsConnector { + type Response = MaybeHttpsStream; + type Error = Error; + type Future = Pin> + Send + 'static>>; -static SHARED_CLIENT: Lazy>> = - Lazy::new(|| Mutex::new(Arc::new(ThrottledDispatcher::new()))); - -fn should_retry(result: Result>) -> RetryResult -where - RusotoError: std::fmt::Display, -{ - match result { - // Object found in S3. - Ok(v) => RetryResult::Ok(v), // Success - - // Timeout-like errors. This can retry. - Err(RusotoError::HttpDispatch(e)) => RetryResult::Retry(make_err!(Code::Unavailable, "{}", e.to_string())), - - // HTTP-level errors. Sometimes can retry. - Err(RusotoError::Unknown(e)) => match e.status { - StatusCode::NOT_FOUND => RetryResult::Err(make_err!(Code::NotFound, "{}", e.status.to_string())), - StatusCode::INTERNAL_SERVER_ERROR | StatusCode::SERVICE_UNAVAILABLE => { - RetryResult::Retry(make_err!(Code::Unavailable, "{}", e.status.to_string())) - } - StatusCode::CONFLICT => RetryResult::Retry(make_err!(Code::Unavailable, "{}", e.status.to_string())), - other_err => RetryResult::Err(make_err!(Code::Unavailable, "{}", other_err.to_string())), - }, + fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { + self.connector + .poll_ready(cx) + .map_err(|e| make_err!(Code::Unavailable, "Failed poll in S3: {e}")) + } - // Other errors (eg. Validation, Parse, Credentials). Never retry. - Err(other_err) => RetryResult::Err(make_err!(Code::Unavailable, "{}", other_err.to_string())), + fn call(&mut self, req: Uri) -> Self::Future { + let connector_clone = self.clone(); + Box::pin(async move { connector_clone.call_with_retry(&req).await }) } } pub struct S3Store { - s3_client: Arc, + s3_client: Arc, bucket: String, key_prefix: String, - jitter_fn: Box Duration + Send + Sync>, + jitter_fn: Arc Duration + Send + Sync>, retry: config::stores::Retry, retrier: Retrier, + multipart_max_concurrent_uploads: usize, } impl S3Store { - pub fn new(config: &config::stores::S3Store) -> Result { - let mut additional_max_concurrent_requests = config.additional_max_concurrent_requests; - if additional_max_concurrent_requests == 0 { - additional_max_concurrent_requests = DEFAULT_ADDITIONAL_MAX_CONCURRENT_REQUESTS; - } + pub async fn new(config: &config::stores::S3Store) -> Result { + let jitter_amt = config.retry.jitter; + let jitter_fn = Arc::new(move |delay: Duration| { + if jitter_amt == 0. { + return delay; + } + let min = 1. - (jitter_amt / 2.); + let max = 1. + (jitter_amt / 2.); + delay.mul_f32(OsRng.gen_range(min..max)) + }); let s3_client = { - let dispatcher = SHARED_CLIENT.lock().unwrap().clone(); - dispatcher.add_permits(additional_max_concurrent_requests); - let credentials_provider = - DefaultCredentialsProvider::new().expect("failed to create credentials provider"); - - let region = config - .region - .parse::() - .map_err(|e| make_input_err!("{}", e.to_string()))?; - S3Client::new_with(dispatcher, credentials_provider, region) + let http_client = HyperClientBuilder::new().build(TlsConnector::new(config, jitter_fn.clone())); + let shared_config = aws_config::from_env().http_client(http_client).load().await; + aws_sdk_s3::Client::new(&shared_config) }; - let jitter_amt = config.retry.jitter; - Self::new_with_client_and_jitter( - config, - s3_client, - Box::new(move |delay: Duration| { - if jitter_amt == 0. { - return delay; - } - let min = 1. - (jitter_amt / 2.); - let max = 1. + (jitter_amt / 2.); - delay.mul_f32(OsRng.gen_range(min..max)) - }), - ) + Self::new_with_client_and_jitter(config, s3_client, jitter_fn) } pub fn new_with_client_and_jitter( config: &config::stores::S3Store, - s3_client: S3Client, - jitter_fn: Box Duration + Send + Sync>, + s3_client: Client, + jitter_fn: Arc Duration + Send + Sync>, ) -> Result { Ok(Self { s3_client: Arc::new(s3_client), @@ -174,7 +161,10 @@ impl S3Store { key_prefix: config.key_prefix.as_ref().unwrap_or(&String::new()).clone(), jitter_fn, retry: config.retry.clone(), - retrier: Retrier::new(Box::new(|duration| Box::pin(sleep(duration)))), + retrier: Retrier::new(Arc::new(|duration| Box::pin(sleep(duration)))), + multipart_max_concurrent_uploads: config + .multipart_max_concurrent_uploads + .map_or(DEFAULT_MULTIPART_MAX_CONCURRENT_UPLOADS, |v| v), }) } @@ -186,47 +176,42 @@ impl S3Store { let retry_config = ExponentialBackoff::new(Duration::from_millis(self.retry.delay as u64)) .map(|d| (self.jitter_fn)(d)) .take(self.retry.max_retries); // Remember this is number of retries, so will run max_retries + 1. - let s3_path = &self.make_s3_path(digest); self.retrier .retry( retry_config, unfold((), move |state| async move { - let head_req = HeadObjectRequest { - bucket: self.bucket.clone(), - key: s3_path.clone(), - ..Default::default() - }; - - let result = self.s3_client.head_object(head_req).await; - if let Err(RusotoError::Service(HeadObjectError::NoSuchKey(_))) = &result { - return Some((RetryResult::Ok(None), state)); - } + let result = self + .s3_client + .head_object() + .bucket(&self.bucket) + .key(&self.make_s3_path(digest)) + .send() + .await; - match should_retry(result) { - RetryResult::Ok(result) => { - if let Some(sz) = result.content_length { - return Some((RetryResult::Ok(Some(sz as usize)), state)); - } - Some(( - RetryResult::Err(make_input_err!("Expected size to exist in s3 store has")), - state, - )) - } - RetryResult::Err(err) => { - if err.code == Code::NotFound { - return Some((RetryResult::Ok(None), state)); - } - Some((RetryResult::Err(err), state)) + match result { + Ok(head_object_output) => { + let sz = head_object_output.content_length; + Some((RetryResult::Ok(Some(sz as usize)), state)) } - RetryResult::Retry(err) => Some(( - RetryResult::Retry(make_err!( - Code::Unavailable, - "Error attempting to load s3 result, retried {} times. Error: {}", - self.retry.max_retries + 1, - err, + Err(sdk_error) => match sdk_error.into_service_error() { + HeadObjectError::NotFound(_) => Some((RetryResult::Ok(None), state)), + HeadObjectError::Unhandled(e) => Some(( + RetryResult::Retry(make_err!( + Code::Unavailable, + "Unhandled HeadObjectError in S3: {e:?}, retries: {}", + self.retry.max_retries + 1, + )), + state, )), - state, - )), + other => Some(( + RetryResult::Err(make_err!( + Code::Unavailable, + "Unkown error getting head_object in S3: {other:?}, retries: {}", + self.retry.max_retries + 1, + )), + state, + )), + }, } }), ) @@ -265,17 +250,24 @@ impl StoreTrait for S3Store { let max_size = match upload_size { UploadSizeInfo::ExactSize(sz) | UploadSizeInfo::MaxSize(sz) => sz, }; - // NOTE(blaise.bruer) It might be more optimal to use a different heuristic here, but for - // simplicity we use a hard codded value. Anything going down this if-statement will have - // the advantage of only 1 network request for the upload instead of minimum of 3 required - // for multipart upload requests. + // NOTE(blaise.bruer) It might be more optimal to use a different + // heuristic here, but for simplicity we use a hard coded value. + // Anything going down this if-statement will have the advantage of only + // 1 network request for the upload instead of minimum of 3 required for + // multipart upload requests. if max_size < MIN_MULTIPART_SIZE { let (body, content_length) = if let UploadSizeInfo::ExactSize(sz) = upload_size { reader.set_close_after_size(sz as u64); - (Some(ByteStream::new(reader)), Some(sz as i64)) + ( + ByteStream::new(SdkBody::from( + DropCloserReadHalf::take(&mut reader, sz) + .await + .err_tip(|| "Failed to take {sz} bytes from reader in S3")?, + )), + sz as i64, + ) } else { - let write_buf = reader - .take(max_size + 1) // Just in case, we want to capture the EOF, so +1. + let write_buf = DropCloserReadHalf::take(&mut reader, max_size + 1) // Just in case, we want to capture the EOF, so +1. .await .err_tip(|| "Failed to read file in upload to s3 in single chunk")?; error_if!( @@ -284,24 +276,19 @@ impl StoreTrait for S3Store { digest.hash_str() ); let content_length = write_buf.len(); - ( - Some(ByteStream::new(ReaderStream::new(Cursor::new(write_buf)))), - Some(content_length as i64), - ) + (ByteStream::new(SdkBody::from(write_buf)), content_length as i64) }; - let put_object_request = PutObjectRequest { - bucket: self.bucket.clone(), - key: s3_path.clone(), - content_length, - body, - ..Default::default() - }; return self .s3_client - .put_object(put_object_request) + .put_object() + .bucket(&self.bucket) + .key(s3_path.clone()) + .content_length(content_length) + .body(body) + .send() .await - .map_or_else(|e| Err(make_err!(Code::Unknown, "{:?}", e)), |_| Ok(())) + .map_or_else(|e| Err(make_err!(Code::Internal, "{e:?}")), |_| Ok(())) .err_tip(|| "Failed to upload file to s3 in single chunk"); } @@ -309,97 +296,113 @@ impl StoreTrait for S3Store { // 5mb and can have up to 10,000 parts. let bytes_per_upload_part = cmp::max(MIN_MULTIPART_SIZE, max_size / (MIN_MULTIPART_SIZE - 1)); - let response = self + let response: CreateMultipartUploadOutput = self .s3_client - .create_multipart_upload(CreateMultipartUploadRequest { - bucket: self.bucket.clone(), - key: s3_path.clone(), - ..Default::default() - }) + .create_multipart_upload() + .bucket(&self.bucket) + .key(s3_path) + .send() .await - .map_err(|e| make_err!(Code::Unknown, "Failed to create multipart upload to s3: {:?}", e))?; + .map_err(|e| make_err!(Code::Internal, "Failed to create multipart upload to s3: {e:?}"))?; let upload_id = response .upload_id .err_tip(|| "Expected upload_id to be set by s3 response")?; let complete_result = { - let mut part_number: i64 = 1; - - // We might end up with +1 capacity units than needed, but that is the worst case. - let mut completed_part_futs = Vec::with_capacity((max_size / bytes_per_upload_part) + 1); - loop { - // TODO(blaise.bruer) We should limit the number of bytes or requests active - // at a time here. Otherwise a client that has very high upload speed but - // s3 has slow download speeds, we might end up using an insane amount of ram. - let write_buf = reader - .take(bytes_per_upload_part) - .await - .err_tip(|| "Failed to read chunk in s3_store")?; - if write_buf.is_empty() { - break; // Reached EOF. + let mut part_number: i32 = 1; + + // This will ensure we only have `multipart_max_concurrent_uploads` * `bytes_per_upload_part` + // bytes in memory at any given time waiting to be uploaded. + let (tx, rx) = mpsc::channel(self.multipart_max_concurrent_uploads); + let upload_id_clone = upload_id.clone(); + + let read_stream_fut = async move { + loop { + let write_buf = DropCloserReadHalf::take(&mut reader, bytes_per_upload_part) + .await + .err_tip(|| "Failed to read chunk in s3_store")?; + if write_buf.is_empty() { + break; // Reached EOF. + } + + let upload_fut = self + .s3_client + .upload_part() + .bucket(self.bucket.clone()) + .key(s3_path) + .upload_id(upload_id_clone.clone()) + .body(ByteStream::new(SdkBody::from(write_buf))) + .part_number(part_number) + .send() + .map(move |result| { + result.map_or_else( + |e| { + Err(make_err!( + Code::Internal, + "Failed to upload part {part_number} in S3 store: {e:?}" + )) + }, + |mut response| { + Ok(CompletedPartBuilder::default() + // Only set an entity tag if it exists. This saves + // 13 bytes per part on the final request if it can + // omit the `` string. + .set_e_tag(response.e_tag.take()) + .part_number(part_number) + .build()) + }, + ) + }); + tx.send(upload_fut).await.map_err(|e| { + make_err!( + Code::Internal, + "Could not send across mpsc for {part_number} in S3 store: {e:?}" + ) + })?; + part_number += 1; } + Ok(()) + }; - let write_buf_len = write_buf.len() as i64; - let body = Some(ByteStream::new(ReaderStream::new(Cursor::new(write_buf)))); - - let request = UploadPartRequest { - bucket: self.bucket.clone(), - key: s3_path.clone(), - content_length: Some(write_buf_len), - body, - part_number, - upload_id: upload_id.clone(), - ..Default::default() - }; - - let s3_client = self.s3_client.clone(); - completed_part_futs.push( - JoinHandleDropGuard::new(tokio::spawn(async move { - let part_number = request.part_number; - let mut response = s3_client - .upload_part(request) - .await - .map_err(|e| make_err!(Code::Unknown, "Failed to upload part: {:?}", e))?; - let e_tag = response.e_tag.take(); - Result::::Ok(CompletedPart { - e_tag, - part_number: Some(part_number), - }) - })) - .map(|r| match r.err_tip(|| "Failed to run s3 upload spawn") { - Ok(r2) => r2.err_tip(|| "S3 upload chunk failure"), - Err(e) => Err(e), - }), - ); - part_number += 1; - } + // This will ensure we only have `multipart_max_concurrent_uploads` requests in flight + // at any given time. + let completed_parts_fut = ReceiverStream::new(rx) + .buffer_unordered(self.multipart_max_concurrent_uploads) + .try_collect::>(); + + // Wait for the entire stream to be read and all parts to be uploaded. + let ((), mut completed_parts) = + try_join!(read_stream_fut, completed_parts_fut).err_tip(|| "In s3 store")?; + + // Even though the spec does not require parts to be sorted by number, we do it just in case + // there's an S3 implementation that requires it. + completed_parts.sort_unstable_by_key(|part| part.part_number); - let completed_parts = try_join_all(completed_part_futs).await?; self.s3_client - .complete_multipart_upload(CompleteMultipartUploadRequest { - bucket: self.bucket.clone(), - key: s3_path.clone(), - upload_id: upload_id.clone(), - multipart_upload: Some(CompletedMultipartUpload { - parts: Some(completed_parts), - }), - ..Default::default() - }) + .complete_multipart_upload() + .bucket(&self.bucket) + .key(s3_path.clone()) + .multipart_upload( + CompletedMultipartUploadBuilder::default() + .set_parts(Some(completed_parts)) + .build(), + ) + .upload_id(upload_id.clone()) + .send() .await - .map_or_else(|e| Err(make_err!(Code::Unknown, "{:?}", e)), |_| Ok(())) + .map_or_else(|e| Err(make_err!(Code::Internal, "{e:?}")), |_| Ok(())) .err_tip(|| "Failed to complete multipart to s3")?; Ok(()) }; if complete_result.is_err() { let abort_result = self .s3_client - .abort_multipart_upload(AbortMultipartUploadRequest { - bucket: self.bucket.clone(), - key: s3_path.clone(), - upload_id: upload_id.clone(), - ..Default::default() - }) + .abort_multipart_upload() + .bucket(&self.bucket) + .key(s3_path.clone()) + .upload_id(upload_id.clone()) + .send() .await; if let Err(err) = abort_result { log::info!("\x1b[0;31ms3_store\x1b[0m: Failed to abort_multipart_upload: {:?}", err); @@ -435,79 +438,74 @@ impl StoreTrait for S3Store { unfold(writer, move |writer| async move { let result = self .s3_client - .get_object(GetObjectRequest { - bucket: self.bucket.clone(), - key: s3_path.clone(), - range: Some(format!( - "bytes={}-{}", - offset + writer.get_bytes_written() as usize, - end_read_byte.map_or_else(String::new, |v| v.to_string()) - )), - ..Default::default() - }) + .get_object() + .bucket(&self.bucket) + .key(s3_path) + .range(format!( + "bytes={}-{}", + offset + writer.get_bytes_written() as usize, + end_read_byte.map_or_else(String::new, |v| v.to_string()) + )) + .send() .await; - if let Err(RusotoError::Service(GetObjectError::NoSuchKey(err))) = &result { - return Some(( - RetryResult::Err(make_err!(Code::NotFound, "File not found in S3: {:?}", err)), - writer, - )); - } + let mut s3_in_stream = match result { + Ok(head_object_output) => head_object_output.body, + Err(sdk_error) => match sdk_error.into_service_error() { + GetObjectError::NoSuchKey(e) => { + return Some(( + RetryResult::Err(make_err!(Code::NotFound, "No such key in S3: {e}")), + writer, + )); + } + GetObjectError::Unhandled(e) => { + return Some(( + RetryResult::Retry(make_err!( + Code::Unavailable, + "Unhandled GetObjectError in S3: {e:?}, retries: {}", + self.retry.max_retries + 1, + )), + writer, + )); + } + other => { + return Some(( + RetryResult::Err(make_err!( + Code::Unavailable, + "Unkown error getting result in S3: {other:?}, retries: {}", + self.retry.max_retries + 1, + )), + writer, + )); + } + }, + }; - let s3_in_stream = match should_retry(result) { - RetryResult::Ok(get_object_output) => { - let body_result = get_object_output - .body - .err_tip(|| "Expected body to be set in s3 get request"); - match body_result { - Ok(s3_in_stream) => s3_in_stream, - Err(err) => { + // Copy data from s3 input stream to the writer stream. + while let Some(maybe_bytes) = s3_in_stream.next().await { + match maybe_bytes { + Ok(bytes) => { + if let Err(e) = writer.send(bytes).await { return Some(( - RetryResult::Err(make_err!( - Code::Unavailable, - "Error attempting to get s3 result. This is not a retryable error: {}", - err - )), + RetryResult::Err(make_input_err!("Error sending bytes to consumer in S3: {e}")), writer, )); } } + Err(e) => { + return Some(( + RetryResult::Retry(make_input_err!("Bad bytestream element in S3: {e}")), + writer, + )); + } } - RetryResult::Err(err) => { - return Some((RetryResult::Err(err), writer)); - } - RetryResult::Retry(err) => { - return Some(( - RetryResult::Retry(make_err!( - Code::Unavailable, - "Error attempting to get s3 result, retried {} times. Error: {}", - self.retry.max_retries + 1, - err, - )), - writer, - )); - } - }; - - // Copy data from s3 input stream to the writer stream. - let result = writer - .forward(s3_in_stream, true /* Forward EOF */) - .await - .err_tip(|| "Failed to forward data in s3_store"); - if let Err(e) = result { - // Prevent retry if pipe is gone. - if writer.is_pipe_broken() { - return Some(( - RetryResult::Err(make_input_err!( - "Output channel is shutdown. Nowhere to send data in s3_store" - )), - writer, - )); - } - // This looks like maybe S3 closed our connection, so we will retry. - return Some((RetryResult::Retry(e), writer)); } - + if let Err(e) = writer.send_eof().await { + return Some(( + RetryResult::Err(make_input_err!("Failed to send EOF to consumer in S3: {e}")), + writer, + )); + } Some((RetryResult::Ok(()), writer)) }), ) diff --git a/cas/store/tests/s3_store_test.rs b/cas/store/tests/s3_store_test.rs index abccf58ac..e1acd034c 100644 --- a/cas/store/tests/s3_store_test.rs +++ b/cas/store/tests/s3_store_test.rs @@ -13,182 +13,129 @@ // limitations under the License. use std::pin::Pin; -use std::str::from_utf8; +use std::sync::Arc; use std::time::Duration; -use futures::executor::block_on; -use futures::future::ready; -use futures::FutureExt; -use http::status::StatusCode; -use rusoto_core::{ - request::{HttpDispatchError, HttpResponse}, - signature::{SignedRequest, SignedRequestPayload}, - ByteStream, DispatchSignedRequest, Region, -}; -use rusoto_mock::{MockCredentialsProvider, MockRequestDispatcher, MultipleMockRequestDispatcher}; -use rusoto_s3::S3Client; -use tokio::io::{AsyncReadExt, AsyncWrite, AsyncWriteExt}; -use tokio::join; -use tokio::sync::mpsc::{unbounded_channel, UnboundedSender}; -use tokio_util::io::ReaderStream; - -use async_fixed_buffer::AsyncFixedBuf; +use aws_sdk_s3::config::{Builder, Region}; +use aws_smithy_runtime::client::http::test_util::{ReplayEvent, StaticReplayClient}; +use aws_smithy_types::body::SdkBody; use common::DigestInfo; use error::Error; -use error::ResultExt; +use http::header; +use http::status::StatusCode; use s3_store::S3Store; use traits::StoreTrait; -// Should match constant in s3_store. -const MIN_MULTIPART_SIZE: usize = 5 * 1024 * 1024; // 5mb. - -fn get_body(request: &mut SignedRequest) -> Vec { - let mut raw_payload = Vec::new(); - match request.payload.take() { - Some(SignedRequestPayload::Stream(stream)) => { - let mut async_reader = stream.into_async_read(); - assert!(block_on(async_reader.read_to_end(&mut raw_payload)).is_ok()); - } - Some(SignedRequestPayload::Buffer(buffer)) => raw_payload.extend_from_slice(&buffer[..]), - None => {} - } - raw_payload -} - -type RequestWithWriter = (SignedRequest, Box); - -/// Utility dispatcher that allows tests to receive the requests being performed and publish -/// data to the body stream using channels. -struct StreamMockRequestDispatcher { - writer_sender: UnboundedSender, -} - -impl StreamMockRequestDispatcher { - pub fn new(writer_sender: UnboundedSender) -> Self { - Self { writer_sender } - } -} - -impl DispatchSignedRequest for StreamMockRequestDispatcher { - fn dispatch( - &self, - request: SignedRequest, - _timeout: Option, - ) -> rusoto_core::request::DispatchSignedRequestFuture { - let (rx, tx) = AsyncFixedBuf::new(vec![0u8; 1024]).split_into_reader_writer(); - let result = self.writer_sender.send((request, Box::new(tx))); - if result.is_err() { - panic!("Failed to send request and tx"); - } - - ready(Ok(HttpResponse { - status: StatusCode::OK, - body: ByteStream::new(ReaderStream::new(rx)), - headers: Default::default(), - })) - .boxed() - } -} - -/// Takes a request and extracts out the `range` into the start and end ranges when requesting data. -fn get_range_from_request(request: &SignedRequest) -> Result<(usize, Option), Error> { - let range_header = from_utf8(&request.headers["range"][0]).unwrap(); - assert!( - range_header.starts_with("bytes="), - "expected range header to start with 'bytes=', got {}", - range_header - ); - let (start, end) = range_header["bytes=".len()..] - .split_once('-') - .err_tip(|| "Expected '-' to be in 'range' header")?; - let start = start.parse::()?; - let end = if !end.is_empty() { - Some(end.parse::()?) - } else { - None - }; - Ok((start, end)) -} +// TODO(aaronmondal): Figure out how to test the connector retry mechanism. #[cfg(test)] mod s3_store_tests { - use super::*; - use pretty_assertions::assert_eq; // Must be declared in every module. + use pretty_assertions::assert_eq; + + use super::*; // Must be declared in every module. const BUCKET_NAME: &str = "dummy-bucket-name"; const VALID_HASH1: &str = "0123456789abcdef000000000000000000010000000000000123456789abcdef"; + const REGION: &str = "testregion"; #[tokio::test] async fn simple_has_object_found() -> Result<(), Error> { - let s3_client = S3Client::new_with( - MockRequestDispatcher::with_status(StatusCode::OK.into()).with_header("Content-Length", "512"), - MockCredentialsProvider, - Region::UsEast1, - ); + let mock_client = StaticReplayClient::new(vec![ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .header(header::CONTENT_LENGTH, "512") + .body(SdkBody::empty()) + .unwrap(), + )]); + let test_config = Builder::new() + .region(Region::from_static(REGION)) + .http_client(mock_client) + .build(); + let s3_client = aws_sdk_s3::Client::from_conf(test_config); let store = S3Store::new_with_client_and_jitter( &config::stores::S3Store { bucket: BUCKET_NAME.to_string(), ..Default::default() }, s3_client, - Box::new(move |_delay| Duration::from_secs(0)), + Arc::new(move |_delay| Duration::from_secs(0)), )?; let store_pin = Pin::new(&store); let digest = DigestInfo::try_new(VALID_HASH1, 100).unwrap(); let result = store_pin.has(digest).await; - assert_eq!(result, Ok(Some(512)), "Expected to find item, got: {:?}", result); + assert_eq!(result, Ok(Some(512)), "Expected to find item, got: {result:?}"); Ok(()) } #[tokio::test] async fn simple_has_object_not_found() -> Result<(), Error> { - let s3_client = S3Client::new_with( - MockRequestDispatcher::with_status(StatusCode::NOT_FOUND.into()).with_body( - r#" - - NoSuchKey - The specified key does not exist. - dummy_path - request_id - foobar - "#, - ), - MockCredentialsProvider, - Region::UsEast1, - ); + let mock_client = StaticReplayClient::new(vec![ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::NOT_FOUND) + .body(SdkBody::empty()) + .unwrap(), + )]); + let test_config = Builder::new() + .region(Region::from_static(REGION)) + .http_client(mock_client) + .build(); + let s3_client = aws_sdk_s3::Client::from_conf(test_config); let store = S3Store::new_with_client_and_jitter( &config::stores::S3Store { bucket: BUCKET_NAME.to_string(), ..Default::default() }, s3_client, - Box::new(move |_delay| Duration::from_secs(0)), + Arc::new(move |_delay| Duration::from_secs(0)), )?; let store_pin = Pin::new(&store); - let digest = DigestInfo::try_new(VALID_HASH1, 100).unwrap(); let result = store_pin.has(digest).await; - assert_eq!(result, Ok(None), "Expected to not find item, got: {:?}", result); + assert_eq!(result, Ok(None), "Expected to not find item, got: {result:?}"); Ok(()) } #[tokio::test] async fn simple_has_retries() -> Result<(), Error> { - let s3_client = S3Client::new_with( - MultipleMockRequestDispatcher::new(vec![ - // Common Status errors that will retry. - MockRequestDispatcher::with_status(StatusCode::INTERNAL_SERVER_ERROR.into()), - MockRequestDispatcher::with_status(StatusCode::SERVICE_UNAVAILABLE.into()), - MockRequestDispatcher::with_status(StatusCode::CONFLICT.into()), - // Dispatch errors are retried. Like timeouts. - MockRequestDispatcher::with_dispatch_error(HttpDispatchError::new("maybe timeout?".to_string())), - // Note: "OK" must always be last. - MockRequestDispatcher::with_status(StatusCode::OK.into()).with_header("Content-Length", "111"), - ]), - MockCredentialsProvider, - Region::UsEast1, - ); + let mock_client = StaticReplayClient::new(vec![ + ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(SdkBody::empty()) + .unwrap(), + ), + ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::SERVICE_UNAVAILABLE) + .body(SdkBody::empty()) + .unwrap(), + ), + ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::CONFLICT) + .body(SdkBody::empty()) + .unwrap(), + ), + ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .header(header::CONTENT_LENGTH, "111") + .body(SdkBody::empty()) + .unwrap(), + ), + ]); + let test_config = Builder::new() + .region(Region::from_static(REGION)) + .http_client(mock_client) + .build(); + let s3_client = aws_sdk_s3::Client::from_conf(test_config); + let store = S3Store::new_with_client_and_jitter( &config::stores::S3Store { bucket: BUCKET_NAME.to_string(), @@ -200,7 +147,7 @@ mod s3_store_tests { ..Default::default() }, s3_client, - Box::new(move |_delay| Duration::from_secs(0)), + Arc::new(move |_delay| Duration::from_secs(0)), )?; let store_pin = Pin::new(&store); @@ -212,59 +159,49 @@ mod s3_store_tests { #[tokio::test] async fn simple_update_ac() -> Result<(), Error> { - let (request_tx, mut request_rx) = unbounded_channel::(); - let s3_client = S3Client::new_with( - StreamMockRequestDispatcher::new(request_tx), - MockCredentialsProvider, - Region::UsEast1, - ); - - // Create dummy data. - let mut send_data = Vec::with_capacity(50); + const AC_ENTRY_SIZE: u64 = 199; + const CONTENT_LENGTH: usize = 50; + let mut send_data = Vec::with_capacity(CONTENT_LENGTH); for i in 0..send_data.capacity() { send_data.push(((i * 3) % 256) as u8); } - // Send payload. + let mock_client = StaticReplayClient::new(vec![ReplayEvent::new( + http::Request::builder() + .uri(format!( + "https://{BUCKET_NAME}.s3.{REGION}.amazonaws.com/{VALID_HASH1}-{AC_ENTRY_SIZE}?x-id=PutObject", + )) + .method("PUT") + .header("content-type", "application/octet-stream") + .header("content-length", CONTENT_LENGTH.to_string()) + .body(SdkBody::from(send_data.clone())) + .unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .body(SdkBody::empty()) + .unwrap(), + )]); + let test_config = Builder::new() + .region(Region::from_static(REGION)) + .http_client(mock_client.clone()) + .build(); + let s3_client = aws_sdk_s3::Client::from_conf(test_config); let store = S3Store::new_with_client_and_jitter( &config::stores::S3Store { bucket: BUCKET_NAME.to_string(), ..Default::default() }, s3_client, - Box::new(move |_delay| Duration::from_secs(0)), + Arc::new(move |_delay| Duration::from_secs(0)), )?; let store_pin = Pin::new(&store); - let get_part_fut = store_pin.update_oneshot(DigestInfo::try_new(VALID_HASH1, 199)?, send_data.clone().into()); - - // Check requests. - let send_data_fut = async move { - let (mut request, mut tx) = request_rx.recv().await.err_tip(|| "Could not get next payload")?; - - assert_eq!(request.method, "PUT"); - assert_eq!( - from_utf8(&request.headers["content-type"][0]).unwrap(), - "application/octet-stream" - ); - assert_eq!( - from_utf8(&request.headers["host"][0]).unwrap(), - "s3.us-east-1.amazonaws.com" - ); - assert_eq!(request.canonical_query_string, ""); - assert_eq!( - request.canonical_uri, - "/dummy-bucket-name/0123456789abcdef000000000000000000010000000000000123456789abcdef-199" - ); - assert_eq!(send_data, get_body(&mut request), "Expected sizes to match",); - - tx.write(&[]).await.err_tip(|| "Failed to write EOF")?; // Send EOF to finish stream. - Result::<(), Error>::Ok(()) - }; - - let (get_part_result, send_data_result) = join!(get_part_fut, send_data_fut); - get_part_result?; - send_data_result?; - + store_pin + .update_oneshot( + DigestInfo::try_new(VALID_HASH1, AC_ENTRY_SIZE)?, + send_data.clone().into(), + ) + .await?; + mock_client.assert_requests_match(&[]); Ok(()) } @@ -273,18 +210,25 @@ mod s3_store_tests { const VALUE: &str = "23"; const AC_ENTRY_SIZE: u64 = 1000; // Any size that is not VALUE.len(). - let s3_client = S3Client::new_with( - MockRequestDispatcher::with_status(StatusCode::OK.into()).with_body(VALUE), - MockCredentialsProvider, - Region::UsEast1, - ); + let mock_client = StaticReplayClient::new(vec![ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .body(SdkBody::from(VALUE)) + .unwrap(), + )]); + let test_config = Builder::new() + .region(Region::from_static(REGION)) + .http_client(mock_client) + .build(); + let s3_client = aws_sdk_s3::Client::from_conf(test_config); let store = S3Store::new_with_client_and_jitter( &config::stores::S3Store { bucket: BUCKET_NAME.to_string(), ..Default::default() }, s3_client, - Box::new(move |_delay| Duration::from_secs(0)), + Arc::new(move |_delay| Duration::from_secs(0)), )?; let store_pin = Pin::new(&store); @@ -294,10 +238,7 @@ mod s3_store_tests { assert_eq!( store_data, VALUE.as_bytes(), - "Hash for key: {} did not insert. Expected: {:#x?}, but got: {:#x?}", - VALID_HASH1, - VALUE, - store_data + "Hash for key: {VALID_HASH1} did not insert. Expected: {VALUE:#x?}, but got: {store_data:#x?}", ); Ok(()) } @@ -305,30 +246,36 @@ mod s3_store_tests { #[tokio::test] async fn smoke_test_get_part() -> Result<(), Error> { const AC_ENTRY_SIZE: u64 = 1000; // Any size that is not raw_send_data.len(). - - let s3_client = S3Client::new_with( - MockRequestDispatcher::with_status(StatusCode::OK.into()).with_request_checker(move |request| { - let range = get_range_from_request(request); - assert!(range.is_ok(), "Unable to get range from request"); - let (start, end) = range.unwrap(); - assert_eq!(start, OFFSET, "Expected start range to match"); - assert_eq!(end, Some(OFFSET + LENGTH), "Expected end range to match"); - }), - MockCredentialsProvider, - Region::UsEast1, - ); + const OFFSET: usize = 105; + const LENGTH: usize = 50_000; // Just a size that is not the same as the real data size. + let mock_client = StaticReplayClient::new(vec![ReplayEvent::new( + http::Request::builder() + .uri(format!( + "https://{BUCKET_NAME}.s3.{REGION}.amazonaws.com/{VALID_HASH1}-{AC_ENTRY_SIZE}?x-id=GetObject", + )) + .header("range", format!("bytes={}-{}", OFFSET, OFFSET + LENGTH)) + .body(SdkBody::empty()) + .unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .body(SdkBody::empty()) + .unwrap(), + )]); + let test_config = Builder::new() + .region(Region::from_static(REGION)) + .http_client(mock_client.clone()) + .build(); + let s3_client = aws_sdk_s3::Client::from_conf(test_config); let store = S3Store::new_with_client_and_jitter( &config::stores::S3Store { bucket: BUCKET_NAME.to_string(), ..Default::default() }, s3_client, - Box::new(move |_delay| Duration::from_secs(0)), + Arc::new(move |_delay| Duration::from_secs(0)), )?; let store_pin = Pin::new(&store); - const OFFSET: usize = 105; - const LENGTH: usize = 50_000; // Just a size that is not the same as the real data size. store_pin .get_part_unchunked( DigestInfo::try_new(VALID_HASH1, AC_ENTRY_SIZE)?, @@ -338,99 +285,48 @@ mod s3_store_tests { ) .await?; + mock_client.assert_requests_match(&[]); Ok(()) } - /// This test will run `get_part` on the s3 store and then abruptly terminate the stream - /// after sending a few bytes of data. We expect retries to happen automatically and - /// test that it resumes downloading from where it left off. #[tokio::test] - async fn get_part_retries_broken_pipe() -> Result<(), Error> { - let (request_tx, mut request_rx) = unbounded_channel::(); - - let store = S3Store::new_with_client_and_jitter( - &config::stores::S3Store { - bucket: BUCKET_NAME.to_string(), - retry: config::stores::Retry { - max_retries: 2, - delay: 0., - jitter: 0., - }, - ..Default::default() - }, - S3Client::new_with( - StreamMockRequestDispatcher::new(request_tx), - MockCredentialsProvider, - Region::UsEast1, + async fn get_part_simple_retries() -> Result<(), Error> { + let mock_client = StaticReplayClient::new(vec![ + ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(SdkBody::empty()) + .unwrap(), ), - Box::new(move |_delay| Duration::from_secs(0)), - )?; - - const START_BYTE: usize = 1; - const SHUTDOWN_AFTER_N_BYTES: usize = 2; - const SEND_BYTES: [u8; 5] = [9u8, 8u8, 7u8, 6u8, 5u8]; - - // This future represents the s3 side sending data and abruptly shutting down a few times. - let send_data_fut = async move { - let mut expected_current_start: usize = START_BYTE; - { - // Send a few bytes then abruptly shutdown. - let (request, mut tx) = request_rx.recv().await.unwrap(); - let (start, _) = get_range_from_request(&request)?; - assert_eq!(start, expected_current_start, "Expected start position to match"); - tx.write_all(&SEND_BYTES[start..start + SHUTDOWN_AFTER_N_BYTES]).await?; - expected_current_start += SHUTDOWN_AFTER_N_BYTES; - tx.shutdown().await.err_tip(|| "Failed shutdown")?; // Abruptly terminate the stream causing disconnect. - } - { - // Send a few more bytes then abruptly shutdown. - let (request, mut tx) = request_rx.recv().await.unwrap(); - let (start, _) = get_range_from_request(&request)?; - assert_eq!(start, expected_current_start, "Expected start position to match"); - tx.write_all(&SEND_BYTES[start..start + SHUTDOWN_AFTER_N_BYTES]).await?; - expected_current_start += SHUTDOWN_AFTER_N_BYTES; - tx.shutdown().await.err_tip(|| "Failed shutdown")?; // Abruptly terminate the stream causing disconnect. - } - { - // This time complete the request. - let (request, mut tx) = request_rx.recv().await.unwrap(); - let (start, _) = get_range_from_request(&request)?; - assert_eq!(start, expected_current_start, "Expected start position to match"); - tx.write_all(&SEND_BYTES[start..]).await?; - tx.write(&[]).await.err_tip(|| "Failed to write EOF")?; // Send EOF to finish stream. - } - Result::<(), Error>::Ok(()) - }; - - let digest = DigestInfo::try_new(VALID_HASH1, 100).unwrap(); - let get_part_fut = Pin::new(&store).get_part_unchunked(digest, START_BYTE, None, None); - - // Now run our test. - let (get_part_result, send_data_result) = join!(get_part_fut, send_data_fut); - - send_data_result?; - // At this point we shutdown the stream 2 times, but sent a little bit each time. We need - // to make sure it resumed the data properly and at the proper position. - assert_eq!(get_part_result?, SEND_BYTES[START_BYTE..], "Expected data to match."); - Ok(()) - } + ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::SERVICE_UNAVAILABLE) + .body(SdkBody::empty()) + .unwrap(), + ), + ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::CONFLICT) + .body(SdkBody::empty()) + .unwrap(), + ), + ReplayEvent::new( + http::Request::builder().body(SdkBody::empty()).unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .body(SdkBody::empty()) + .unwrap(), + ), + ]); + let test_config = Builder::new() + .region(Region::from_static(REGION)) + .http_client(mock_client) + .build(); + let s3_client = aws_sdk_s3::Client::from_conf(test_config); - #[tokio::test] - async fn get_part_simple_retries() -> Result<(), Error> { - let s3_client = S3Client::new_with( - MultipleMockRequestDispatcher::new(vec![ - // Common Status errors that will retry. - MockRequestDispatcher::with_status(StatusCode::INTERNAL_SERVER_ERROR.into()), - MockRequestDispatcher::with_status(StatusCode::SERVICE_UNAVAILABLE.into()), - MockRequestDispatcher::with_status(StatusCode::CONFLICT.into()), - // Dispatch errors are retried. Like timeouts. - MockRequestDispatcher::with_dispatch_error(HttpDispatchError::new("maybe timeout?".to_string())), - // Note: "OK" must always be last. - MockRequestDispatcher::with_status(StatusCode::OK.into()), - ]), - MockCredentialsProvider, - Region::UsEast1, - ); let store = S3Store::new_with_client_and_jitter( &config::stores::S3Store { bucket: BUCKET_NAME.to_string(), @@ -442,180 +338,130 @@ mod s3_store_tests { ..Default::default() }, s3_client, - Box::new(move |_delay| Duration::from_secs(0)), + Arc::new(move |_delay| Duration::from_secs(0)), )?; let digest = DigestInfo::try_new(VALID_HASH1, 100).unwrap(); let result = Pin::new(&store).get_part_unchunked(digest, 0, None, None).await; - assert!(result.is_ok(), "Expected to find item, got: {:?}", result); + assert!(result.is_ok(), "Expected to find item, got: {result:?}"); Ok(()) } #[tokio::test] async fn multipart_update_large_cas() -> Result<(), Error> { - let (request_tx, mut request_rx) = unbounded_channel::(); - let s3_client = S3Client::new_with( - StreamMockRequestDispatcher::new(request_tx), - MockCredentialsProvider, - Region::UsEast1, - ); + // Same as in s3_store. + const MIN_MULTIPART_SIZE: usize = 5 * 1024 * 1024; // 5mb. + const AC_ENTRY_SIZE: usize = MIN_MULTIPART_SIZE * 2 + 50; - // Create dummy data. - let mut send_data = Vec::with_capacity(MIN_MULTIPART_SIZE * 2 + 50); + let mut send_data = Vec::with_capacity(AC_ENTRY_SIZE); for i in 0..send_data.capacity() { send_data.push(((i * 3) % 256) as u8); } - - // Send payload. let digest = DigestInfo::try_new(VALID_HASH1, send_data.len())?; + + let mock_client = StaticReplayClient::new(vec![ + ReplayEvent::new( + http::Request::builder() + .uri(format!( + "https://{BUCKET_NAME}.s3.{REGION}.amazonaws.com/{VALID_HASH1}-{AC_ENTRY_SIZE}?uploads&x-id=CreateMultipartUpload", + )) + .method("POST") + .body(SdkBody::empty()) + .unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .body(SdkBody::from( + r#" + + Dummy-uploadid + "# + .as_bytes(), + )) + .unwrap(), + ), + ReplayEvent::new( + http::Request::builder() + .uri(format!( + "https://{BUCKET_NAME}.s3.{REGION}.amazonaws.com/{VALID_HASH1}-{AC_ENTRY_SIZE}?x-id=UploadPart&partNumber=1&uploadId=Dummy-uploadid", + )) + .method("PUT") + .header("content-type", "application/octet-stream") + .header("content-length", "5242880") + .body(SdkBody::from(&send_data[0..MIN_MULTIPART_SIZE])) + .unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .body(SdkBody::empty()) + .unwrap(), + ), + ReplayEvent::new( + http::Request::builder() + .uri(format!( + "https://{BUCKET_NAME}.s3.{REGION}.amazonaws.com/{VALID_HASH1}-{AC_ENTRY_SIZE}?x-id=UploadPart&partNumber=2&uploadId=Dummy-uploadid", + )) + .method("PUT") + .header("content-type", "application/octet-stream") + .header("content-length", "5242880") + .body(SdkBody::from(&send_data[MIN_MULTIPART_SIZE..MIN_MULTIPART_SIZE * 2])) + .unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .body(SdkBody::empty()) + .unwrap(), + ), + ReplayEvent::new( + http::Request::builder() + .uri(format!( + "https://{BUCKET_NAME}.s3.{REGION}.amazonaws.com/{VALID_HASH1}-{AC_ENTRY_SIZE}?x-id=UploadPart&partNumber=3&uploadId=Dummy-uploadid", + )) + .method("PUT") + .header("content-type", "application/octet-stream") + .header("content-length", "50") + .body(SdkBody::from( + &send_data[MIN_MULTIPART_SIZE * 2..MIN_MULTIPART_SIZE * 2 + 50], + )) + .unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .body(SdkBody::empty()) + .unwrap(), + ), + ReplayEvent::new( + http::Request::builder() + .uri(format!( + "https://{BUCKET_NAME}.s3.{REGION}.amazonaws.com/{VALID_HASH1}-{AC_ENTRY_SIZE}?x-id=CompleteMultipartUpload&uploadId=Dummy-uploadid", + )) + .method("POST") + .header("content-length", "216") + .body(SdkBody::from(concat!( + r#""#, + "1", + "2", + "3", + "", + ))) + .unwrap(), + http::Response::builder() + .status(StatusCode::OK) + .body(SdkBody::empty()) + .unwrap(), + ), + ]); + let test_config = Builder::new() + .region(Region::from_static(REGION)) + .http_client(mock_client.clone()) + .build(); + let s3_client = aws_sdk_s3::Client::from_conf(test_config); let store = S3Store::new_with_client_and_jitter( &config::stores::S3Store { bucket: BUCKET_NAME.to_string(), ..Default::default() }, s3_client, - Box::new(move |_delay| Duration::from_secs(0)), + Arc::new(move |_delay| Duration::from_secs(0)), )?; - let get_part_fut = Pin::new(&store).update_oneshot(digest, send_data.clone().into()); - - // Check requests. - let send_data_fut = async move { - { - // First request is the create_multipart_upload request. - let (mut request, mut tx) = request_rx.recv().await.err_tip(|| "Could not get next payload")?; - - let rt_data = get_body(&mut request); - assert_eq!(rt_data.len(), 0, "Expected first request payload to be empty"); - assert_eq!(request.method, "POST"); - assert_eq!( - from_utf8(&request.headers["content-type"][0]).unwrap(), - "application/octet-stream" - ); - assert_eq!( - from_utf8(&request.headers["host"][0]).unwrap(), - "s3.us-east-1.amazonaws.com" - ); - assert_eq!( - from_utf8(&request.headers["content-length"][0]).unwrap(), - format!("{}", rt_data.len()) - ); - assert_eq!(request.canonical_query_string, "uploads="); - assert_eq!( - request.canonical_uri, - "/dummy-bucket-name/0123456789abcdef000000000000000000010000000000000123456789abcdef-10485810" - ); - tx.write_all( - r#" - - Dummy-uploadid - "# - .as_bytes(), - ) - .await?; - tx.write(&[]).await.err_tip(|| "Failed to write EOF")?; // Send EOF to finish stream. - } - { - // Further requests are the actual data. - let (mut request, _) = request_rx.recv().await.err_tip(|| "Could not get next payload")?; - let rt_data = get_body(&mut request); - assert_eq!(&send_data[0..MIN_MULTIPART_SIZE], rt_data, "Expected data to match"); - assert_eq!(request.method, "PUT"); - assert_eq!( - from_utf8(&request.headers["content-type"][0]).unwrap(), - "application/octet-stream" - ); - assert_eq!( - from_utf8(&request.headers["host"][0]).unwrap(), - "s3.us-east-1.amazonaws.com" - ); - assert_eq!( - from_utf8(&request.headers["content-length"][0]).unwrap(), - format!("{}", rt_data.len()) - ); - assert_eq!(request.canonical_query_string, "partNumber=1&uploadId=Dummy-uploadid"); - assert_eq!( - request.canonical_uri, - "/dummy-bucket-name/0123456789abcdef000000000000000000010000000000000123456789abcdef-10485810" - ); - } - { - let (mut request, _) = request_rx.recv().await.err_tip(|| "Could not get next payload")?; - let rt_data = get_body(&mut request); - assert_eq!( - &send_data[MIN_MULTIPART_SIZE..MIN_MULTIPART_SIZE * 2], - rt_data, - "Expected data to match" - ); - - assert_eq!( - from_utf8(&request.headers["content-length"][0]).unwrap(), - format!("{}", rt_data.len()) - ); - assert_eq!(request.canonical_query_string, "partNumber=2&uploadId=Dummy-uploadid"); - assert_eq!( - request.canonical_uri, - "/dummy-bucket-name/0123456789abcdef000000000000000000010000000000000123456789abcdef-10485810" - ); - } - { - let (mut request, _) = request_rx.recv().await.err_tip(|| "Could not get next payload")?; - let rt_data = get_body(&mut request); - assert_eq!( - &send_data[MIN_MULTIPART_SIZE * 2..MIN_MULTIPART_SIZE * 2 + 50], - rt_data, - "Expected data to match" - ); - assert_eq!( - from_utf8(&request.headers["content-length"][0]).unwrap(), - format!("{}", rt_data.len()) - ); - assert_eq!(request.canonical_query_string, "partNumber=3&uploadId=Dummy-uploadid"); - assert_eq!( - request.canonical_uri, - "/dummy-bucket-name/0123456789abcdef000000000000000000010000000000000123456789abcdef-10485810" - ); - } - { - // Final payload is the complete_multipart_upload request. - let (mut request, mut tx) = request_rx.recv().await.err_tip(|| "Could not get next payload")?; - let rt_data = get_body(&mut request); - const COMPLETE_MULTIPART_PAYLOAD_DATA: &str = concat!( - r#""#, - "", - "1", - "2", - "3", - "", - ); - assert_eq!( - from_utf8(&rt_data).unwrap(), - COMPLETE_MULTIPART_PAYLOAD_DATA, - "Expected last payload to be empty" - ); - assert_eq!(request.method, "POST"); - assert_eq!( - from_utf8(&request.headers["content-length"][0]).unwrap(), - format!("{}", COMPLETE_MULTIPART_PAYLOAD_DATA.len()) - ); - assert_eq!( - from_utf8(&request.headers["x-amz-content-sha256"][0]).unwrap(), - "730f96c9a87580c7930b5bd4fd0457fbe01b34f2261dcdde877d09b06d937b5e" - ); - assert_eq!(request.canonical_query_string, "uploadId=Dummy-uploadid"); - assert_eq!( - request.canonical_uri, - "/dummy-bucket-name/0123456789abcdef000000000000000000010000000000000123456789abcdef-10485810" - ); - tx.write(&[]).await.err_tip(|| "Failed to write EOF")?; // Send EOF to finish stream. - } - Result::<(), Error>::Ok(()) - }; - - // Now run our test. - let (get_part_result, send_data_result) = join!(get_part_fut, send_data_fut); - get_part_result?; - send_data_result?; - + let _ = Pin::new(&store).update_oneshot(digest, send_data.clone().into()).await; + mock_client.assert_requests_match(&[]); Ok(()) } } diff --git a/config/stores.rs b/config/stores.rs index 7122b7f51..923e5e733 100644 --- a/config/stores.rs +++ b/config/stores.rs @@ -13,7 +13,6 @@ // limitations under the License. use serde::{Deserialize, Serialize}; - use serde_utils::{convert_numeric_with_shellexpand, convert_string_with_shellexpand}; /// Name of the store. This type will be used when referencing a store @@ -419,19 +418,16 @@ pub struct S3Store { #[serde(default)] pub retry: Retry, - /// Additional number of active requests this store will add to the total - /// amount of permitted concurrent requests to s3. Instead of limiting the - /// number of requests to s3 per store, we instead have a central counter - /// that is global to all s3 stores. This means that if one store has this - /// value set to 5 and another set to 0, both stores can use a maximum of 5. - /// It is done this way because it is rare that a user would want to limit - /// a certain store to a certain number of concurrent requests, but instead - /// would want to globally limit it, but because s3_store has no global - /// settings we do it on the individual store level to apply globally. + /// Maximum number of concurrent UploadPart requests per MultipartUpload. /// - /// Default: 20. - #[serde(default, deserialize_with = "convert_numeric_with_shellexpand")] - pub additional_max_concurrent_requests: usize, + /// Default: 10. + pub multipart_max_concurrent_uploads: Option, + + /// Allow unencrypted HTTP connections. Only use this for local testing. + /// + /// Default: false + #[serde(default)] + pub insecure_allow_http: bool, } #[derive(Serialize, Deserialize, Debug, Clone, Copy)] diff --git a/flake.nix b/flake.nix index cf90e05ee..6ab4c3795 100644 --- a/flake.nix +++ b/flake.nix @@ -34,6 +34,7 @@ pkgs.pre-commit openssl_static # Required explicitly for cargo test support. bazel + pkgs.awscli2 ]; shellHook = '' # Generate the .pre-commit-config.yaml symlink when entering the diff --git a/gencargo/s3_store/Cargo.toml b/gencargo/s3_store/Cargo.toml index 2a0770216..c5c9a14c8 100644 --- a/gencargo/s3_store/Cargo.toml +++ b/gencargo/s3_store/Cargo.toml @@ -20,16 +20,15 @@ doctest = false [dependencies] async-trait = { workspace = true } -bytes = { workspace = true } +aws-config = { workspace = true } +aws-sdk-s3 = { workspace = true } +aws-smithy-runtime = { workspace = true } futures = { workspace = true } -http = { workspace = true } -once_cell = { workspace = true } +hyper = { workspace = true } +hyper-rustls = { workspace = true } rand = { workspace = true } -rusoto_core = { workspace = true } -rusoto_s3 = { workspace = true } -rusoto_signature = { workspace = true } tokio = { workspace = true } -tokio-util = { workspace = true } +tokio-stream = { workspace = true } # Local libraries. traits = { workspace = true } diff --git a/gencargo/s3_store_test/Cargo.toml b/gencargo/s3_store_test/Cargo.toml index 24610502b..edc973da6 100644 --- a/gencargo/s3_store_test/Cargo.toml +++ b/gencargo/s3_store_test/Cargo.toml @@ -19,19 +19,16 @@ path = "../../cas/store/tests/s3_store_test.rs" doctest = false [dependencies] -futures = { workspace = true } +aws-sdk-s3 = { workspace = true } +aws-smithy-runtime = { workspace = true } +aws-smithy-types = { workspace = true } http = { workspace = true } pretty_assertions = { workspace = true } -rusoto_core = { workspace = true } -rusoto_mock = { workspace = true } -rusoto_s3 = { workspace = true } tokio = { workspace = true } -tokio-util = { workspace = true } # Local libraries. s3_store = { workspace = true } traits = { workspace = true } config = { workspace = true } -async_fixed_buffer = { workspace = true } common = { workspace = true } error = { workspace = true } diff --git a/tools/cargo_shared.bzl b/tools/cargo_shared.bzl index 4dcd7bc76..37453bba7 100644 --- a/tools/cargo_shared.bzl +++ b/tools/cargo_shared.bzl @@ -69,15 +69,6 @@ PACKAGES = { "rand": { "version": "0.8.5", }, - "rusoto_s3": { - "version": "0.48.0", - }, - "rusoto_core": { - "version": "0.48.0", - }, - "rusoto_signature": { - "version": "0.48.0", - }, "http": { "version": "^0.2", }, @@ -130,6 +121,11 @@ PACKAGES = { }, "hyper": { "version": "0.14.27", + "features": ["tcp", "client"], + }, + "hyper-rustls": { + "version": "0.24.2", + "features": ["webpki-tokio"], }, "axum": { "version": "0.6.18", @@ -164,9 +160,6 @@ PACKAGES = { "mock_instant": { "version": "0.3.1", }, - "rusoto_mock": { - "version": "=0.48.0", - }, "ctor": { "version": "0.2.3", }, @@ -179,4 +172,22 @@ PACKAGES = { "once_cell": { "version": "1.18.0", }, + "aws-config": { + "version": "0.57.1", + }, + "aws-sdk-config": { + "version": "0.35.0", + }, + "aws-sdk-s3": { + "version": "0.35.0", + # TODO(aaronmondal): Make "test-util" a dev-dependency feature. + "features": ["rt-tokio", "test-util"], + }, + "aws-smithy-runtime": { + "version": "0.57.1", + "features": ["client", "connector-hyper-0-14-x"], + }, + "aws-smithy-types": { + "version": "0.57.1", + }, } diff --git a/util/buf_channel.rs b/util/buf_channel.rs index dfbee468e..29a0acbe0 100644 --- a/util/buf_channel.rs +++ b/util/buf_channel.rs @@ -16,12 +16,12 @@ use std::pin::Pin; use std::task::Poll; use bytes::{BufMut, Bytes, BytesMut}; -use futures::{task::Context, Future, Stream, StreamExt}; +use error::{error_if, make_err, Code, Error, ResultExt}; +use futures::task::Context; +use futures::{Future, Stream}; use tokio::sync::{mpsc, oneshot}; pub use tokio_util::io::StreamReader; -use error::{error_if, make_err, Code, Error, ResultExt}; - /// Create a channel pair that can be used to transport buffer objects around to /// different components. This wrapper is used because the streams give some /// utility like managing EOF in a more friendly way, ensure if no EOF is received @@ -94,30 +94,6 @@ impl DropCloserWriteHalf { .map_err(|_| make_err!(Code::Internal, "Receiver went away before receiving EOF"))? } - /// Forwards data from this writer to a reader. This is an efficient way to bind a writer - /// and reader together to just forward the data on. - pub async fn forward(&mut self, mut reader: S, forward_eof: bool) -> Result<(), Error> - where - S: Stream> + Send + Unpin, - { - loop { - if let Some(maybe_chunk) = reader.next().await { - let chunk = maybe_chunk.err_tip(|| "Failed to forward message")?; - if chunk.is_empty() { - // Don't send EOF here. We instead rely on None result to be EOF. - continue; - } - self.send(chunk).await?; - } else { - if forward_eof { - self.send_eof().await?; - } - break; - } - } - Ok(()) - } - /// Returns the number of bytes written so far. This does not mean the receiver received /// all of the bytes written to the stream so far. #[must_use] diff --git a/util/retry.rs b/util/retry.rs index 1a04c6ef0..644cefac5 100644 --- a/util/retry.rs +++ b/util/retry.rs @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +use std::sync::Arc; + use futures::future::Future; use futures::stream::StreamExt; use std::pin::Pin; @@ -38,7 +40,7 @@ impl Iterator for ExponentialBackoff { } } -type SleepFn = Box Pin + Send>> + Sync + Send>; +type SleepFn = Arc Pin + Send>> + Sync + Send>; #[derive(PartialEq, Eq, Debug)] pub enum RetryResult { @@ -48,6 +50,7 @@ pub enum RetryResult { } /// Class used to retry a job with a sleep function in between each retry. +#[derive(Clone)] pub struct Retrier { sleep_fn: SleepFn, } diff --git a/util/tests/retry_test.rs b/util/tests/retry_test.rs index ff287e840..d5de26f5c 100644 --- a/util/tests/retry_test.rs +++ b/util/tests/retry_test.rs @@ -50,7 +50,7 @@ mod retry_tests { #[tokio::test] async fn retry_simple_success() -> Result<(), Error> { - let retrier = Retrier::new(Box::new(|_duration| Box::pin(ready(())))); + let retrier = Retrier::new(Arc::new(|_duration| Box::pin(ready(())))); let retry_config = MockDurationIterator::new(Duration::from_millis(1)); let run_count = Arc::new(AtomicI32::new(0)); @@ -75,7 +75,7 @@ mod retry_tests { #[tokio::test] async fn retry_fails_after_3_runs() -> Result<(), Error> { - let retrier = Retrier::new(Box::new(|_duration| Box::pin(ready(())))); + let retrier = Retrier::new(Arc::new(|_duration| Box::pin(ready(())))); let retry_config = MockDurationIterator::new(Duration::from_millis(1)).take(2); // .take() will run X times + 1. let run_count = Arc::new(AtomicI32::new(0)); @@ -100,7 +100,7 @@ mod retry_tests { #[tokio::test] async fn retry_success_after_2_runs() -> Result<(), Error> { - let retrier = Retrier::new(Box::new(|_duration| Box::pin(ready(())))); + let retrier = Retrier::new(Arc::new(|_duration| Box::pin(ready(())))); let retry_config = MockDurationIterator::new(Duration::from_millis(1)).take(5); // .take() will run X times + 1. let run_count = Arc::new(AtomicI32::new(0)); @@ -127,7 +127,7 @@ mod retry_tests { const EXPECTED_MS: u64 = 71; let sleep_fn_run_count = Arc::new(AtomicI32::new(0)); let sleep_fn_run_count_copy = sleep_fn_run_count.clone(); - let retrier = Retrier::new(Box::new(move |duration| { + let retrier = Retrier::new(Arc::new(move |duration| { // Note: Need to make another copy to make the compiler happy. let sleep_fn_run_count_copy = sleep_fn_run_count_copy.clone(); Box::pin(async move {