[package]
edition = "2024"
rust-version = "1.87"
name = "ferrokinesis"
version = "0.7.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A local AWS Kinesis mock server for testing, written in Rust"
readme = "README.md"
license = "MIT"
[features]
access-log = ["dep:tower-http"]
default = [
"server",
"access-log",
]
loadtest = [
"rt",
"dep:goose",
"tokio/rt-multi-thread",
]
mirror = [
"server",
"dep:backon",
"dep:reqwest",
"dep:aws-credential-types",
"dep:aws-sigv4",
"dep:aws-smithy-runtime-api",
"dep:url",
]
mirror-aws-config = [
"mirror",
"dep:aws-config",
]
rt = [
"tokio/rt",
"tokio/time",
"tokio/macros",
]
server = [
"rt",
"dep:clap",
"dep:hyper",
"dep:hyper-util",
"dep:opentelemetry",
"dep:opentelemetry-otlp",
"dep:opentelemetry_sdk",
"dep:toml",
"dep:tracing-subscriber",
"dep:tracing-opentelemetry",
"dep:tower",
"dep:url",
"axum/http1",
"axum/http2",
"axum/tokio",
"tokio/fs",
"tokio/io-util",
"tokio/net",
"tokio/process",
"tokio/rt-multi-thread",
"tokio/signal",
]
tls = [
"server",
"dep:axum-server",
"dep:rcgen",
"dep:rustls",
]
wasi = [
"rt",
"dep:httparse",
"dep:tower",
"dep:tracing-subscriber",
]
wasm = [
"dep:getrandom",
"dep:js-sys",
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
"getrandom/wasm_js",
"uuid/js",
]
[lib]
name = "ferrokinesis"
path = "src/lib.rs"
[[bin]]
name = "ferrokinesis"
path = "src/main.rs"
required-features = ["server"]
[[bin]]
name = "ferrokinesis-wasi"
path = "src/bin/wasi.rs"
required-features = ["wasi"]
[[bin]]
name = "loadtest"
path = "src/bin/loadtest.rs"
required-features = ["loadtest"]
[[test]]
name = "arn_validation"
path = "tests/arn_validation.rs"
[[test]]
name = "capture_replay"
path = "tests/capture_replay.rs"
[[test]]
name = "cbor_json_equivalence"
path = "tests/cbor_json_equivalence.rs"
[[test]]
name = "concurrent_stress"
path = "tests/concurrent_stress.rs"
[[test]]
name = "configurable_account_region"
path = "tests/configurable_account_region.rs"
[[test]]
name = "connection"
path = "tests/connection.rs"
[[test]]
name = "consumers"
path = "tests/consumers.rs"
[[test]]
name = "create_stream"
path = "tests/create_stream.rs"
[[test]]
name = "delete_stream"
path = "tests/delete_stream.rs"
[[test]]
name = "describe_stream"
path = "tests/describe_stream.rs"
[[test]]
name = "describe_stream_summary"
path = "tests/describe_stream_summary.rs"
[[test]]
name = "durable_state"
path = "tests/durable_state.rs"
[[test]]
name = "encryption"
path = "tests/encryption.rs"
[[test]]
name = "enhanced_monitoring"
path = "tests/enhanced_monitoring.rs"
[[test]]
name = "error_conformance"
path = "tests/error_conformance.rs"
[[test]]
name = "event_stream"
path = "tests/event_stream.rs"
[[test]]
name = "get_records"
path = "tests/get_records.rs"
[[test]]
name = "get_records_expired"
path = "tests/get_records_expired.rs"
[[test]]
name = "get_shard_iterator"
path = "tests/get_shard_iterator.rs"
[[test]]
name = "health"
path = "tests/health.rs"
[[test]]
name = "health_check_cli"
path = "tests/health_check_cli.rs"
[[test]]
name = "list_shards"
path = "tests/list_shards.rs"
[[test]]
name = "list_streams"
path = "tests/list_streams.rs"
[[test]]
name = "mirror"
path = "tests/mirror.rs"
[[test]]
name = "observability_runtime"
path = "tests/observability_runtime.rs"
[[test]]
name = "prop_batch_operations"
path = "tests/prop_batch_operations.rs"
[[test]]
name = "prop_cbor_json_equivalence"
path = "tests/prop_cbor_json_equivalence.rs"
[[test]]
name = "prop_data_roundtrip"
path = "tests/prop_data_roundtrip.rs"
[[test]]
name = "prop_error_batch_limits"
path = "tests/prop_error_batch_limits.rs"
[[test]]
name = "prop_error_data_blob"
path = "tests/prop_error_data_blob.rs"
[[test]]
name = "prop_error_duplicate_stream"
path = "tests/prop_error_duplicate_stream.rs"
[[test]]
name = "prop_error_expired_iterator"
path = "tests/prop_error_expired_iterator.rs"
[[test]]
name = "prop_error_explicit_hash_key"
path = "tests/prop_error_explicit_hash_key.rs"
[[test]]
name = "prop_error_nonexistent_stream"
path = "tests/prop_error_nonexistent_stream.rs"
[[test]]
name = "prop_error_partition_key"
path = "tests/prop_error_partition_key.rs"
[[test]]
name = "prop_hash_space_coverage"
path = "tests/prop_hash_space_coverage.rs"
[[test]]
name = "prop_sequence_ordering"
path = "tests/prop_sequence_ordering.rs"
[[test]]
name = "prop_sequence_roundtrip"
path = "tests/prop_sequence_roundtrip.rs"
[[test]]
name = "prop_shard_routing"
path = "tests/prop_shard_routing.rs"
[[test]]
name = "prop_stream_name_validation"
path = "tests/prop_stream_name_validation.rs"
[[test]]
name = "put_record"
path = "tests/put_record.rs"
[[test]]
name = "put_records"
path = "tests/put_records.rs"
[[test]]
name = "request_body_limit"
path = "tests/request_body_limit.rs"
[[test]]
name = "resource_policy"
path = "tests/resource_policy.rs"
[[test]]
name = "resource_tags"
path = "tests/resource_tags.rs"
[[test]]
name = "retention_period"
path = "tests/retention_period.rs"
[[test]]
name = "retention_reaper"
path = "tests/retention_reaper.rs"
[[test]]
name = "sdk_integration"
path = "tests/sdk_integration.rs"
[[test]]
name = "sequence"
path = "tests/sequence.rs"
[[test]]
name = "split_merge_shards"
path = "tests/split_merge_shards.rs"
[[test]]
name = "stream_updates"
path = "tests/stream_updates.rs"
[[test]]
name = "stress"
path = "tests/stress.rs"
[[test]]
name = "subscribe_to_shard"
path = "tests/subscribe_to_shard.rs"
[[test]]
name = "tags"
path = "tests/tags.rs"
[[test]]
name = "tls"
path = "tests/tls.rs"
[[test]]
name = "type_errors"
path = "tests/type_errors.rs"
[[test]]
name = "unit"
path = "tests/unit.rs"
[[bench]]
name = "kinesis_api"
path = "benches/kinesis_api.rs"
harness = false
[dependencies.aws-config]
version = "1"
features = [
"default-https-client",
"rt-tokio",
"credentials-process",
]
optional = true
default-features = false
[dependencies.aws-credential-types]
version = "1"
optional = true
[dependencies.aws-sigv4]
version = "1"
optional = true
[dependencies.aws-smithy-runtime-api]
version = "1"
features = ["client"]
optional = true
[dependencies.axum]
version = "0.8"
features = ["json"]
default-features = false
[dependencies.axum-server]
version = "0.8"
features = ["tls-rustls"]
optional = true
[dependencies.backon]
version = "1.6"
features = ["tokio-sleep"]
optional = true
default-features = false
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1"
[dependencies.ciborium]
version = "0.2"
[dependencies.clap]
version = "4"
features = [
"derive",
"env",
]
optional = true
[dependencies.dashmap]
version = "6"
[dependencies.ferrokinesis-core]
version = "0.7.0"
[dependencies.getrandom]
version = "0.3"
optional = true
default-features = false
[dependencies.goose]
version = "0.18"
optional = true
[dependencies.httparse]
version = "1"
optional = true
[dependencies.hyper]
version = "1"
features = [
"server",
"http1",
"http2",
]
optional = true
default-features = false
[dependencies.hyper-util]
version = "0.1"
features = [
"server-auto",
"server-graceful",
"tokio",
"http1",
"http2",
]
optional = true
default-features = false
[dependencies.js-sys]
version = "0.3"
optional = true
[dependencies.md-5]
version = "0.10"
default-features = false
[dependencies.num-bigint]
version = "0.4"
[dependencies.num-traits]
version = "0.2"
[dependencies.opentelemetry]
version = "0.31"
features = ["trace"]
optional = true
[dependencies.opentelemetry-otlp]
version = "0.31"
features = [
"trace",
"grpc-tonic",
"http-proto",
]
optional = true
[dependencies.opentelemetry_sdk]
version = "0.31"
features = ["rt-tokio"]
optional = true
[dependencies.postcard]
version = "1"
features = ["alloc"]
default-features = false
[dependencies.rand]
version = "0.9"
[dependencies.rcgen]
version = "0.14"
optional = true
[dependencies.regex]
version = "1"
[dependencies.reqwest]
version = "0.12"
features = ["json"]
optional = true
[dependencies.rustls]
version = "0.23"
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.thiserror]
version = "2.0.18"
[dependencies.tokio]
version = "1"
features = ["sync"]
default-features = false
[dependencies.toml]
version = "0.8"
optional = true
[dependencies.tower]
version = "0.5"
features = ["util"]
optional = true
[dependencies.tower-http]
version = "0.6"
features = ["trace"]
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.32"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"json",
]
optional = true
[dependencies.url]
version = "2"
optional = true
[dependencies.uuid]
version = "1"
features = ["v4"]
[dependencies.wasm-bindgen]
version = "0.2"
optional = true
[dependencies.wasm-bindgen-futures]
version = "0.4"
optional = true
[dev-dependencies.aes]
version = "0.8"
[dev-dependencies.aws-credential-types]
version = "1"
features = ["test-util"]
[dev-dependencies.aws-sdk-kinesis]
version = "1"
[dev-dependencies.base64]
version = "0.22"
[dev-dependencies.cbc]
version = "0.1"
[dev-dependencies.ciborium]
version = "0.2"
[dev-dependencies.criterion]
version = "0.5"
features = ["async_tokio"]
[dev-dependencies.num-bigint]
version = "0.4"
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.reqwest]
version = "0.12"
features = ["json"]
[dev-dependencies.tempfile]
version = "3"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.async-stream]
version = "0.3"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.aws-smithy-eventstream]
version = "0.60"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.aws-smithy-types]
version = "1.4"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1"
features = [
"sync",
"rt",
"time",
"macros",
]
default-features = false
[profile.release]
lto = true
codegen-units = 1
panic = "abort"
strip = true