[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-grpc = { 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, optional = 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"] }
doc-comment = "0.3"
uuid = { workspace = true, features = ["serde", "v4"] }
[features]
default = ["core"]
core = ["core-openapi", "core-tracing"]
core-openapi = ["rustapi-core/swagger-ui", "rustapi-openapi/swagger-ui"]
core-tracing = ["rustapi-core/tracing"]
core-simd-json = ["rustapi-core/simd-json"]
core-legacy-validator = ["dep:validator", "rustapi-core/legacy-validator"]
core-compression = ["rustapi-core/compression"]
core-compression-brotli = ["rustapi-core/compression-brotli"]
core-cookies = ["dep:rustapi-extras", "rustapi-extras/cookies", "rustapi-core/cookies"]
core-http3 = ["rustapi-core/http3"]
core-http3-dev = ["rustapi-core/http3-dev"]
protocol-toon = ["dep:rustapi-toon"]
protocol-ws = ["dep:rustapi-ws"]
protocol-view = ["dep:rustapi-view"]
protocol-grpc = ["dep:rustapi-grpc"]
protocol-http3 = ["core-http3"]
protocol-http3-dev = ["core-http3-dev"]
protocol-all = ["protocol-toon", "protocol-ws", "protocol-view", "protocol-grpc"]
extras-jwt = ["dep:rustapi-extras", "rustapi-extras/jwt"]
extras-cors = ["dep:rustapi-extras", "rustapi-extras/cors"]
extras-rate-limit = ["dep:rustapi-extras", "rustapi-extras/rate-limit"]
extras-config = ["dep:rustapi-extras", "rustapi-extras/config"]
extras-sqlx = ["dep:rustapi-extras", "rustapi-extras/sqlx"]
extras-insight = ["dep:rustapi-extras", "rustapi-extras/insight"]
extras-timeout = ["dep:rustapi-extras", "rustapi-extras/timeout"]
extras-guard = ["dep:rustapi-extras", "rustapi-extras/guard"]
extras-logging = ["dep:rustapi-extras", "rustapi-extras/logging"]
extras-circuit-breaker = ["dep:rustapi-extras", "rustapi-extras/circuit-breaker"]
extras-retry = ["dep:rustapi-extras", "rustapi-extras/retry"]
extras-security-headers = ["dep:rustapi-extras", "rustapi-extras/security-headers"]
extras-api-key = ["dep:rustapi-extras", "rustapi-extras/api-key"]
extras-cache = ["dep:rustapi-extras", "rustapi-extras/cache"]
extras-dedup = ["dep:rustapi-extras", "rustapi-extras/dedup"]
extras-sanitization = ["dep:rustapi-extras", "rustapi-extras/sanitization"]
extras-otel = ["dep:rustapi-extras", "rustapi-extras/otel"]
extras-structured-logging = ["dep:rustapi-extras", "rustapi-extras/structured-logging"]
extras-replay = ["dep:rustapi-extras", "rustapi-extras/replay"]
extras-all = [
"extras-jwt",
"extras-cors",
"extras-rate-limit",
"extras-config",
"extras-sqlx",
"extras-insight",
"extras-timeout",
"extras-guard",
"extras-logging",
"extras-circuit-breaker",
"extras-retry",
"extras-security-headers",
"extras-api-key",
"extras-cache",
"extras-dedup",
"extras-sanitization",
"extras-otel",
"extras-structured-logging",
"extras-replay",
]
swagger-ui = ["core-openapi"]
tracing = ["core-tracing"]
simd-json = ["core-simd-json"]
legacy-validator = ["core-legacy-validator"]
compression = ["core-compression"]
compression-brotli = ["core-compression-brotli"]
cookies = ["core-cookies"]
http3 = ["protocol-http3"]
http3-dev = ["protocol-http3-dev"]
toon = ["protocol-toon"]
ws = ["protocol-ws"]
view = ["protocol-view"]
grpc = ["protocol-grpc"]
jwt = ["extras-jwt"]
cors = ["extras-cors"]
rate-limit = ["extras-rate-limit"]
config = ["extras-config"]
sqlx = ["extras-sqlx"]
insight = ["extras-insight"]
timeout = ["extras-timeout"]
guard = ["extras-guard"]
logging = ["extras-logging"]
circuit-breaker = ["extras-circuit-breaker"]
retry = ["extras-retry"]
security-headers = ["extras-security-headers"]
api-key = ["extras-api-key"]
cache = ["extras-cache"]
dedup = ["extras-dedup"]
sanitization = ["extras-sanitization"]
otel = ["extras-otel"]
structured-logging = ["extras-structured-logging"]
replay = ["extras-replay"]
extras = ["extras-jwt", "extras-cors", "extras-rate-limit"]
full = ["core", "protocol-all", "extras-all", "core-legacy-validator"]