[package]
name = "s2-lite"
version = "0.36.0"
description = "Lightweight server implementation of S2, the durable streams API, backed by object storage"
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
keywords = ["s2", "durable", "streams", "object", "storage"]
categories = ["database-implementations"]

[[bin]]
name = "openapi"
required-features = ["utoipa"]

[[bin]]
name = "server"

[features]
utoipa = ["dep:utoipa", "s2-api/utoipa", "s2-common/utoipa"]

[dependencies]
async-stream = { workspace = true }
async-trait = { workspace = true }
aws-config = { workspace = true }
aws-credential-types = { workspace = true }
axum = { workspace = true, features = ["macros"] }
axum-server = { workspace = true, features = ["tls-rustls"] }
bytes = { workspace = true }
bytesize = { workspace = true }
clap = { workspace = true, features = ["derive", "env"] }
dashmap = { workspace = true }
eyre = { workspace = true }
futures = { workspace = true }
http = { workspace = true }
indexmap = { workspace = true }
itertools = { workspace = true }
parking_lot = { workspace = true, features = ["arc_lock"] }
prometheus = { workspace = true, features = ["process"] }
prost = { workspace = true }
rand = { workspace = true }
rcgen = { workspace = true }
rustls = { workspace = true, features = ["aws-lc-rs"] }
s2-api = { workspace = true, features = ["axum"] }
s2-common = { workspace = true, features = ["clap", "resource_spec"] }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
slatedb = { workspace = true, features = ["lz4", "zstd"] }
strum = { workspace = true, features = ["derive"] }
thiserror = { workspace = true }
time = { workspace = true, features = ["serde", "formatting", "parsing"] }
tokio = { workspace = true, features = ["sync"] }
tokio-util = { workspace = true }
tower-http = { workspace = true, features = ["cors", "trace", "sensitive-headers", "compression-zstd", "compression-gzip", "decompression-zstd", "decompression-gzip"] }
tracing = { workspace = true }
tracing-subscriber = { workspace = true, features = ["env-filter"] }
utoipa = { workspace = true, optional = true, features = ["time"] }

# tikv-jemallocator does not build on the MSVC toolchain; on Windows-MSVC
# Rust falls back to the system allocator (HeapAlloc).
[target.'cfg(not(target_env = "msvc"))'.dependencies]
tikv-jemallocator = { workspace = true }

[dev-dependencies]
proptest = { workspace = true }
rstest = { workspace = true }
tokio = { workspace = true, features = ["macros", "rt", "test-util", "time"] }
tower = "0.5"
uuid = { workspace = true, features = ["v4"] }
