rustapi-extras 0.1.412

Production-ready middleware collection for RustAPI. Includes JWT auth, CORS, Rate Limiting, SQLx integration, and OpenTelemetry observability.
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
name = "rustapi-extras"
version = "0.1.412"
authors = ["RustAPI Contributors, Tuntii"]
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",
    "session",
    "session-redis",
    "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 = []
session = [
    "dep:cookie",
    "dep:uuid",
]
session-redis = [
    "session",
    "dep:redis",
]
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.31"
optional = true

[dependencies.opentelemetry-otlp]
version = "0.31"
optional = true

[dependencies.opentelemetry-semantic-conventions]
version = "0.31"
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.redis]
version = "0.27"
features = ["tokio-comp"]
optional = true
default-features = false

[dependencies.reqwest]
version = "0.12"
features = [
    "json",
    "rustls-tls",
]
optional = true
default-features = false

[dependencies.rustapi-core]
version = "0.1.335"
default-features = false

[dependencies.rustapi-openapi]
version = "0.1.335"
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 = [
    "rt",
    "sync",
    "time",
]

[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.335"
features = ["test-utils"]
default-features = false

[dev-dependencies.rustapi-testing]
version = "0.1.335"

[dev-dependencies.serial_test]
version = "3.2"

[dev-dependencies.tempfile]
version = "3.10"

[dev-dependencies.tokio]
version = "1.35"
features = [
    "macros",
    "rt-multi-thread",
]