[package]
name = "rustapi-rs"
description = "A FastAPI-like web framework for Rust - DX-first, type-safe, batteries included"
documentation = "https://docs.rs/rustapi-rs"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
rust-version.workspace = true
readme = "README.md"
[dependencies]
rustapi-core = { workspace = true, default-features = false }
rustapi-macros = { workspace = true }
rustapi-extras = { workspace = true, optional = true }
rustapi-toon = { workspace = true, optional = true }
rustapi-ws = { workspace = true, optional = true }
rustapi-view = { workspace = true, optional = true }
rustapi-validate = { workspace = true }
async-trait = { workspace = true }
tokio = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
tracing = { workspace = true }
validator = { workspace = true }
rustapi-openapi = { workspace = true, default-features = false }
[dev-dependencies]
rustapi-core = { workspace = true }
rustapi-macros = { workspace = true }
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
utoipa = { workspace = true }
doc-comment = "0.3"
uuid = { workspace = true, features = ["serde", "v4"] }
[features]
default = ["swagger-ui", "tracing"]
swagger-ui = ["rustapi-core/swagger-ui", "rustapi-openapi/swagger-ui"]
simd-json = ["rustapi-core/simd-json"]
tracing = ["rustapi-core/tracing"]
compression = ["rustapi-core/compression"]
compression-brotli = ["rustapi-core/compression-brotli"]
jwt = ["dep:rustapi-extras", "rustapi-extras/jwt"]
cors = ["dep:rustapi-extras", "rustapi-extras/cors"]
rate-limit = ["dep:rustapi-extras", "rustapi-extras/rate-limit"]
config = ["dep:rustapi-extras", "rustapi-extras/config"]
cookies = ["dep:rustapi-extras", "rustapi-extras/cookies", "rustapi-core/cookies"]
sqlx = ["dep:rustapi-extras", "rustapi-extras/sqlx"]
insight = ["dep:rustapi-extras", "rustapi-extras/insight"]
toon = ["dep:rustapi-toon"]
ws = ["dep:rustapi-ws"]
view = ["dep:rustapi-view"]
timeout = ["dep:rustapi-extras", "rustapi-extras/timeout"]
guard = ["dep:rustapi-extras", "rustapi-extras/guard"]
logging = ["dep:rustapi-extras", "rustapi-extras/logging"]
circuit-breaker = ["dep:rustapi-extras", "rustapi-extras/circuit-breaker"]
retry = ["dep:rustapi-extras", "rustapi-extras/retry"]
security-headers = ["dep:rustapi-extras", "rustapi-extras/security-headers"]
api-key = ["dep:rustapi-extras", "rustapi-extras/api-key"]
cache = ["dep:rustapi-extras", "rustapi-extras/cache"]
dedup = ["dep:rustapi-extras", "rustapi-extras/dedup"]
sanitization = ["dep:rustapi-extras", "rustapi-extras/sanitization"]
otel = ["dep:rustapi-extras", "rustapi-extras/otel"]
structured-logging = ["dep:rustapi-extras", "rustapi-extras/structured-logging"]
extras = ["jwt", "cors", "rate-limit"]
full = ["extras", "config", "cookies", "sqlx", "toon", "insight", "compression", "ws", "view", "timeout", "guard", "logging", "circuit-breaker", "security-headers", "api-key", "cache", "dedup", "sanitization", "otel", "structured-logging"]