[package]
name = "streamweave"
version = "0.2.1"
edition = "2024"
authors = ["Tom Wieland <tom.wieland@gmail.com>"]
description = "Composable, async, stream-first computation in pure Rust"
license = "CC-BY-SA-4.0"
repository = "https://github.com/Industrial/streamweave"
homepage = "https://github.com/Industrial/streamweave"
documentation = "https://docs.rs/streamweave"
keywords = ["stream", "async", "pipeline", "data-processing", "rust"]
categories = ["asynchronous", "data-structures", "web-programming::http-server"]
readme = "README.md"
[package.metadata.rust-analyzer]
check.allTargets = true
[features]
default = ["native"]
native = [
"tokio/full",
"tokio-stream/io-util",
"dep:async-compression",
"dep:hyper-tungstenite",
"dep:hyper-util",
"dep:jsonschema",
"dep:tokio-tungstenite",
"dep:tokio-util",
"dep:tracing-subscriber",
"file-formats",
"random",
"http-server",
]
wasm = [
"tokio/sync",
"tokio/macros",
"tokio/rt",
"tokio/time",
]
wasm-minimal = [
"tokio/sync",
"tokio/rt",
"tokio/time",
"tokio/macros",
]
file-formats = [
"dep:arrow",
"dep:parquet",
"dep:csv",
"dep:rmp-serde",
]
random = [
"dep:rand",
"dep:uuid",
]
compression = ["dep:async-compression"]
kafka = ["dep:rdkafka"]
redis-streams = ["dep:redis"]
database = ["dep:sqlx"]
http-poll = ["dep:reqwest"]
http-server = ["dep:axum", "dep:tower", "dep:tower-http", "dep:http-body-util"]
sql = ["dep:sqlparser"]
ml = ["dep:ort", "dep:ndarray"]
opentelemetry = ["dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp", "dep:tracing-opentelemetry"]
prometheus = []
[dependencies]
tokio = { version = "1.0", default-features = false, features = ["macros", "rt"] }
futures = "0.3"
async-trait = "0.1"
async-compression = { version = "0.4", features = ["tokio", "gzip", "deflate"], optional = true }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
csv = { version = "1.3", optional = true }
rmp-serde = { version = "1.3", optional = true }
arrow = { version = "54", default-features = false, features = ["ipc"], optional = true }
parquet = { version = "54", default-features = false, features = ["arrow", "snap", "lz4", "zstd"], optional = true }
jsonschema = { version = "0.37", optional = true }
chrono = { version = "0.4", features = ["serde"] }
rand = { version = "0.9", optional = true }
uuid = { version = "1.0", features = ["v4", "serde"], optional = true }
pin-project = "1.0"
async-stream = "0.3.3"
hyper-tungstenite = { version = "0.19", optional = true }
hyper-util = { version = "0.1", features = ["full"], optional = true }
tokio-tungstenite = { version = "0.28", optional = true }
rdkafka = { version = "0.36", optional = true, features = ["cmake-build"] }
redis = { version = "0.26", optional = true, features = ["tokio-comp", "streams", "connection-manager"] }
sqlx = { version = "0.8", optional = true, default-features = false, features = [
"runtime-tokio-native-tls",
"postgres",
"mysql",
"sqlite",
"chrono",
"uuid",
] }
reqwest = { version = "0.12", optional = true, default-features = false, features = [
"json",
"gzip",
"brotli",
] }
axum = { version = "0.7", optional = true, features = ["macros", "query", "form", "json", "multipart"] }
tower = { version = "0.4", optional = true }
tower-http = { version = "0.5", optional = true, features = ["cors", "trace", "compression-gzip", "compression-deflate"] }
http-body-util = { version = "0.1", optional = true }
sqlparser = { version = "0.40", optional = true }
ort = { version = "2.0.0-rc.10", optional = true }
ndarray = { version = "0.15", optional = true }
opentelemetry = { version = "0.31", optional = true, features = ["trace", "metrics"] }
opentelemetry_sdk = { version = "0.31", optional = true, features = ["rt-tokio", "trace", "metrics"] }
opentelemetry-otlp = { version = "0.31", optional = true, default-features = false, features = ["trace", "metrics", "grpc-tonic"] }
tracing-opentelemetry = { version = "0.32", optional = true }
jsonwebtoken = { version = "10.2", default-features = false, features = ["rust_crypto"] }
mime = "0.3"
num-traits = "0.2.19"
regex = "1.10"
serde_urlencoded = "0.7"
sha2 = "0.10"
thiserror = "2.0.17"
tokio-stream = { version = "0.1", default-features = false }
tracing = "0.1.40"
tracing-subscriber = { version = "0.3.20", optional = true }
base64 = "0.22.1"
tokio-util = { version = "0.7.14", optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.2", features = ["js"] }
[[example]]
name = "basic_pipeline"
path = "examples/basic_pipeline/main.rs"
[[example]]
name = "advanced_pipeline"
path = "examples/advanced_pipeline/main.rs"
[[example]]
name = "kafka_integration"
path = "examples/kafka_integration/main.rs"
[[example]]
name = "redis_streams_integration"
path = "examples/redis_streams_integration/main.rs"
[[example]]
name = "database_integration"
path = "examples/database_integration/main.rs"
[[example]]
name = "http_poll_integration"
path = "examples/http_poll_integration/main.rs"
required-features = ["http-poll"]
[[example]]
name = "http_server_integration"
path = "examples/http_server_integration/main.rs"
required-features = ["http-server"]
[[example]]
name = "metrics_monitoring"
path = "examples/metrics_monitoring/main.rs"
[[example]]
name = "file_formats"
path = "examples/file_formats/main.rs"
[[example]]
name = "stateful_processing"
path = "examples/stateful_processing/main.rs"
[[example]]
name = "sql_dialect"
path = "examples/sql_dialect/main.rs"
required-features = ["sql"]
[[example]]
name = "visualization"
path = "examples/visualization/main.rs"
[[example]]
name = "visualization_web"
path = "examples/visualization_web/main.rs"
[[example]]
name = "sql_parser"
path = "examples/sql_parser/main.rs"
required-features = ["sql"]
[[example]]
name = "sql_query"
path = "examples/sql_query/main.rs"
required-features = ["sql"]
[[example]]
name = "error_handling"
path = "examples/error_handling/main.rs"
[[example]]
name = "advanced_transformers"
path = "examples/advanced_transformers/main.rs"
[[example]]
name = "windowing"
path = "examples/windowing/main.rs"
[[example]]
name = "exactly_once"
path = "examples/exactly_once/main.rs"
[dev-dependencies]
proptest = "1.4"
tempfile = "3.10.0"
[profile.release]
lto = true
codegen-units = 1
panic = "abort"
strip = true
[profile.wasm-release]
inherits = "release"
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
strip = true