[package]
edition = "2021"
name = "rustapi-extras"
version = "0.1.300"
authors = ["RustAPI Contributors"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Production-ready middleware collection for RustAPI. Includes JWT auth, CORS, Rate Limiting, SQLx integration, and OpenTelemetry observability."
homepage = "https://github.com/Tuntii/RustAPI"
documentation = "https://docs.rs/rustapi-extras"
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/Tuntii/RustAPI"
[features]
api-key = []
audit = ["dep:rand"]
cache = ["dep:dashmap"]
circuit-breaker = []
config = [
"dep:dotenvy",
"dep:envy",
]
cookies = ["dep:cookie"]
cors = []
csrf = [
"dep:cookie",
"dep:rand",
"dep:base64",
]
dedup = ["dep:dashmap"]
default = []
diesel = [
"dep:diesel",
"dep:r2d2",
]
diesel-mysql = [
"diesel",
"diesel/mysql",
]
diesel-postgres = [
"diesel",
"diesel/postgres",
]
diesel-sqlite = [
"diesel",
"diesel/sqlite",
]
extras = [
"jwt",
"cors",
"rate-limit",
]
full = [
"extras",
"config",
"cookies",
"sqlx",
"insight",
"webhook",
"timeout",
"guard",
"logging",
"circuit-breaker",
"security-headers",
"api-key",
"cache",
"dedup",
"sanitization",
"retry",
"otel",
"structured-logging",
"csrf",
"oauth2-client",
"audit",
"replay",
]
guard = ["jwt"]
insight = [
"dep:dashmap",
"dep:urlencoding",
]
jwt = ["dep:jsonwebtoken"]
logging = []
oauth2-client = [
"dep:sha2",
"dep:rand",
"dep:base64",
"dep:reqwest",
"dep:urlencoding",
]
observability = [
"otel",
"structured-logging",
]
otel = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
"dep:opentelemetry-semantic-conventions",
"dep:tracing-opentelemetry",
]
rate-limit = ["dep:dashmap"]
replay = [
"dep:reqwest",
"dep:dashmap",
"dep:uuid",
"rustapi-core/replay",
]
retry = []
sanitization = []
security-headers = []
sqlx = ["dep:sqlx"]
sqlx-mysql = [
"sqlx",
"sqlx/mysql",
"sqlx/runtime-tokio",
]
sqlx-postgres = [
"sqlx",
"sqlx/postgres",
"sqlx/runtime-tokio",
]
sqlx-sqlite = [
"sqlx",
"sqlx/sqlite",
"sqlx/runtime-tokio",
]
structured-logging = []
timeout = []
webhook = [
"insight",
"dep:reqwest",
]
[lib]
name = "rustapi_extras"
path = "src/lib.rs"
[[test]]
name = "webhook_performance"
path = "tests/webhook_performance.rs"
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.22"
optional = true
[dependencies.bytes]
version = "1.5"
[dependencies.cookie]
version = "0.18"
optional = true
[dependencies.dashmap]
version = "6.0"
optional = true
[dependencies.diesel]
version = "2.2"
features = ["r2d2"]
optional = true
default-features = false
[dependencies.dotenvy]
version = "0.15"
optional = true
[dependencies.envy]
version = "0.4"
optional = true
[dependencies.futures-util]
version = "0.3"
[dependencies.http]
version = "1.0"
[dependencies.http-body-util]
version = "0.1"
[dependencies.jsonwebtoken]
version = "9.3"
optional = true
[dependencies.opentelemetry]
version = "0.22"
optional = true
[dependencies.opentelemetry-otlp]
version = "0.31"
optional = true
[dependencies.opentelemetry-semantic-conventions]
version = "0.14"
optional = true
[dependencies.opentelemetry_sdk]
version = "0.31"
features = ["rt-tokio"]
optional = true
[dependencies.r2d2]
version = "0.8"
optional = true
[dependencies.rand]
version = "0.8"
optional = true
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
optional = true
default-features = false
[dependencies.rustapi-core]
version = "0.1.188"
default-features = false
[dependencies.rustapi-openapi]
version = "0.1.188"
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sha2]
version = "0.10"
optional = true
[dependencies.sqlx]
version = "0.8"
optional = true
default-features = false
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.35"
features = ["full"]
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.32"
optional = true
[dependencies.urlencoding]
version = "2.1"
optional = true
[dependencies.uuid]
version = "1.6"
features = ["v4"]
optional = true
[dev-dependencies.proptest]
version = "1.4"
[dev-dependencies.rustapi-core]
version = "0.1.188"
features = ["test-utils"]
default-features = false
[dev-dependencies.rustapi-testing]
version = "0.1.188"
[dev-dependencies.serial_test]
version = "3.2"
[dev-dependencies.tempfile]
version = "3.10"
[dev-dependencies.tokio]
version = "1.35"
features = [
"full",
"macros",
"rt-multi-thread",
]