[package]
name = "derust"
version = "0.2.2"
edition = "2021"
authors = ["Deroldo <diogoderoldo@gmail.com>"]
license = "MIT"
description = "Easy way to start your Rust asynchronous application server using Tokio and Axum frameworks."
readme = "README.md"
homepage = "https://github.com/deroldo/derust"
repository = "https://github.com/deroldo/derust"
keywords = ["rust-boot", "tokio-boot", "axum-boot", "spring-boot", "config"]
categories = ["web-programming"]
[features]
default = [
"http_server",
]
env = [
"dep:thiserror",
"dep:serde",
"dep:dotenv",
"dep:config",
]
http_server = [
"env",
"dep:axum",
"dep:tower-http",
"dep:bytes",
"dep:lazy_static",
"dep:async-trait",
"dep:serde",
"dep:serde_json",
"dep:tracing",
"dep:uuid",
"dep:tokio",
"dep:axum-tracing-opentelemetry",
"dep:opentelemetry-otlp",
"dep:init-tracing-opentelemetry",
"dep:tracing-subscriber",
"dep:wg",
"dep:chrono",
"dep:regex",
"dep:openssl",
]
http_client = [
"dep:reqwest",
"dep:reqwest-middleware",
"dep:reqwest-tracing",
"dep:opentelemetry",
"dep:tracing-opentelemetry",
"dep:opentelemetry-http",
]
aws = [
"dep:aws-sdk-sqs",
"dep:aws-sdk-sns",
"dep:aws-sdk-secretsmanager",
"dep:aws-config",
]
env_from_secrets_manager = [
"aws"
]
postgres = [
"dep:sqlx",
"dep:serde",
]
outbox = [
"dep:outbox-pattern-processor",
"dep:sqlx",
"dep:wg",
]
statsd = [
"dep:regex",
"dep:tracing",
"dep:lazy_static",
"dep:async-trait",
"dep:tokio",
"dep:cadence",
"dep:metrics-exporter-statsd",
"dep:metrics",
]
prometheus = [
"dep:regex",
"dep:tracing",
"dep:lazy_static",
"dep:async-trait",
"dep:tokio",
"dep:cadence",
"dep:metrics-exporter-prometheus",
"dep:metrics",
"dep:http-body-util",
"dep:hyper",
]
growthbook = [
"dep:growthbook-sdk-rust"
]
[dependencies]
tokio = { workspace = true, features = ["full"], optional = true }
axum = { workspace = true, default-features = true, features = ["macros", "tokio"], optional = true }
tower-http = { workspace = true, features = ["catch-panic", "timeout", "trace", "request-id", "util", "sensitive-headers", "compression-gzip"], optional = true }
hyper = { workspace = true, optional = true }
reqwest = { workspace = true, features = ["http2", "default-tls", "default", "json", "gzip"], optional = true }
reqwest-middleware = { workspace = true, features = ["json", "http2", "rustls-tls"], optional = true }
reqwest-tracing = { workspace = true, features = ["opentelemetry_0_26"], optional = true }
serde = { workspace = true, features = ["derive"], optional = true }
serde_json = { workspace = true, optional = true }
thiserror = { workspace = true, optional = true }
outbox-pattern-processor = { workspace = true, optional = true }
growthbook-sdk-rust = { workspace = true, optional = true }
sqlx = { workspace = true, features = ["json", "chrono", "postgres", "uuid", "runtime-tokio"], optional = true }
aws-sdk-sqs = { workspace = true, optional = true }
aws-sdk-sns = { workspace = true, optional = true }
aws-sdk-secretsmanager = { workspace = true, optional = true }
aws-config = { workspace = true, features = ["behavior-version-latest"], optional = true }
opentelemetry = { workspace = true, optional = true }
tracing = { workspace = true, features = ["attributes", "tracing-attributes"], optional = true }
axum-tracing-opentelemetry = { workspace = true, optional = true }
opentelemetry-otlp = { workspace = true, features = ["http", "logs", "reqwest-client", "tracing", "serde", "integration-testing", "reqwest", "metrics"], optional = true}
init-tracing-opentelemetry = { workspace = true, features = ["otlp", "opentelemetry-otlp", "tracer", "tracing_subscriber_ext"], optional = true }
tracing-subscriber = { workspace = true, optional = true }
tracing-opentelemetry = { workspace = true, optional = true }
opentelemetry-http = { workspace = true, features = ["reqwest"], optional = true }
cadence = { workspace = true, optional = true }
metrics-exporter-statsd = { workspace = true, optional = true }
metrics-exporter-prometheus = { workspace = true, optional = true }
metrics = { workspace = true, optional = true }
lazy_static = { workspace = true, optional = true }
async-trait = { workspace = true, optional = true }
bytes = { workspace = true, optional = true }
uuid = { workspace = true, features = ["v7", "fast-rng", "serde"], optional = true }
wg = { workspace = true, optional = true }
chrono = { workspace = true, features = ["serde"], optional = true }
http-body-util = { workspace = true, optional = true }
regex = { workspace = true, optional = true }
dotenv = { workspace = true, optional = true }
config = { workspace = true, optional = true }
openssl = { workspace = true, features = ["vendored"], optional = true }