[package]
name = "rustapi-extras"
description = "Optional security and utility features for RustAPI framework"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
[dependencies]
rustapi-core = { workspace = true }
rustapi-openapi = { workspace = true }
tokio = { workspace = true }
futures-util = { workspace = true }
http = { workspace = true }
bytes = { workspace = true }
http-body-util = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
jsonwebtoken = { version = "9.3", optional = true }
dashmap = { version = "6.0", optional = true }
sqlx = { version = "0.8", optional = true, default-features = false }
dotenvy = { version = "0.15", optional = true }
envy = { version = "0.4", optional = true }
cookie = { version = "0.18", optional = true }
urlencoding = { version = "2.1", optional = true }
[dev-dependencies]
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
proptest = "1.4"
rustapi-core = { workspace = true, features = ["test-utils"] }
tempfile = "3.10"
serial_test = "3.2"
[features]
default = []
jwt = ["dep:jsonwebtoken"]
cors = []
rate-limit = ["dep:dashmap"]
config = ["dep:dotenvy", "dep:envy"]
cookies = ["dep:cookie"]
sqlx = ["dep:sqlx"]
insight = ["dep:dashmap", "dep:urlencoding"]
extras = ["jwt", "cors", "rate-limit"]
full = ["extras", "config", "cookies", "sqlx", "insight"]