[package]
name = "centaurus"
version = "0.9.0"
edition = "2024"
license = "MIT OR Apache-2.0"
description = "A utility library for various use cases."
repository = "https://github.com/Profiidev/centaurus"
categories = []
exclude = ["CHANGELOG.md"]
keywords = []
readme = "README.md"

[features]
default = ["axum", "logging", "metrics", "frontend"]
all = [
  "logging",
  "axum",
  "argon2",
  "base64",
  "chrono",
  "hmac",
  "http",
  "jsonwebtoken",
  "rsa",
  "sea-orm",
  "tokio",
  "uuid",
  "reqwest",
  "metrics",
  "error",
  "auth",
  "k8s",
  "docker",
  "frontend",
  "url",
]

logging = [
  "dep:color-eyre",
  "dep:tracing-error",
  "dep:tracing-subscriber",
  "dep:tracing",
  "serde",
]
axum = [
  "http",
  "tokio",
  "dep:axum",
  "dep:tower-http",
  "dep:tower",
  "dep:axum-extra",
  "error",
  "serde_json",
  "serde_xml",
  "serde",
  "dep:thiserror",
  "dep:async-trait",
  "dep:governor",
  "dep:tower_governor",
  "dep:dashmap",
  "dep:tower-service",
  "dep:addr",
  "dep:url",
  "dep:futures-util",
  "config_site",
  "url/serde",
  "uuid",
  "uuid/v4",
  "openapi",
]
openapi = ["dep:aide", "dep:schemars", "schemars/uuid1", "schemars/url2"]
metrics = [
  "dep:metrics",
  "dep:metrics-exporter-prometheus",
  "centaurus-derive/metrics",
]
error = ["dep:eyre"]
sea-orm = [
  "dep:sea-orm",
  "dep:tracing",
  "dep:sea-orm-migration",
  "serde",
  "error",
  "chrono",
  "uuid/v4",
  "uuid",
  "serde_json"
]
auth = [
  "argon2",
  "base64",
  "error",
  "rsa",
  "serde",
  "url",
  "url/serde",
  "jsonwebtoken",
  "reqwest",
  "dep:time",
  "rand",
]
serde = ["dep:serde"]
k8s = ["dep:k8s-openapi", "dep:kube"]
docker = ["dep:bollard"]
frontend = ["proxy"]
proxy = ["axum", "dep:hyper-util"]
gravatar = ["dep:md5", "reqwest", "base64"]
lettre = ["dep:lettre", "serde", "error", "http"]
config_site = ["centaurus-derive/site"]

argon2 = ["dep:argon2"]
base64 = ["dep:base64"]
chrono = ["dep:chrono"]
hmac = ["dep:hmac"]
http = ["dep:http"]
jsonwebtoken = ["dep:jsonwebtoken"]
rsa = ["dep:rsa"]
tokio = ["dep:tokio"]
uuid = ["dep:uuid"]
reqwest = ["dep:reqwest"]
webauthn = ["dep:webauthn-rs-core"]
image = ["dep:image"]
url = ["dep:url"]
serde_json = ["dep:serde_json"]
serde_xml = ["dep:serde-xml-rs"]

[dependencies]
centaurus-derive = { workspace = true }
axum = { version = "0.8.8", optional = true, features = [
  "multipart",
  "macros",
  "ws",
  "tracing",
] }
axum-extra = { version = "0.12.5", optional = true, features = [
  "typed-header",
  "cookie",
] }
tracing = { version = "0.1.44", optional = true, features = ["std"] }
tracing-subscriber = { version = "=0.3.19", optional = true }
eyre = { version = "0.6.12", optional = true }
hmac = { version = "0.13.0", optional = true }
chrono = { version = "0.4.44", optional = true, features = ["serde"] }
serde-xml-rs = { version = "0.8.2", optional = true }
http = { version = "1.4.0", optional = true }
argon2 = { version = "0.5.3", optional = true, features = ["std"] }
base64 = { version = "0.22.1", optional = true }
jsonwebtoken = { version = "10.3.0", optional = true, features = [
  "rust_crypto",
] }
rsa = { version = "0.9.10", optional = true }
sea-orm = { version = "1.1.20", optional = true, features = [
  "sqlx-postgres",
  "runtime-tokio-rustls",
] }
color-eyre = { version = "0.6.5", optional = true }
tracing-error = { version = "0.2.1", optional = true }
tower-http = { version = "0.6.8", optional = true, features = [
  "trace",
  "cors",
] }
tokio = { version = "1.51.0", features = ["full"], optional = true }
tower = { version = "0.5.3", optional = true }
thiserror = { version = "2.0.18", optional = true }
serde = { version = "1.0.228", features = ["derive"], optional = true }
serde_json = { version = "1.0.149", optional = true }
uuid = { version = "1.23.0", optional = true }
reqwest = { version = "0.13.2", optional = true, features = [
  "http2",
  "system-proxy",
  "charset",
  "json",
  "form",
], default-features = false }
metrics-exporter-prometheus = { version = "0.18.1", optional = true, default-features = false }
metrics = { version = "0.24.3", optional = true }
sea-orm-migration = { version = "1.1.20", optional = true }
lettre = { version = "0.11.21", default-features = false, features = [
  "smtp-transport",
  "rustls",
  "builder",
  "rustls-native-certs",
  "ring",
  "tokio1-rustls",
], optional = true }
webauthn-rs-core = { version = "0.5.4", default-features = false, optional = true }
image = { version = "0.25.10", default-features = false, optional = true }
kube = { version = "3.1.0", features = ["runtime", "derive"], optional = true }
k8s-openapi = { version = "0.27.1", features = [
  "latest",
  "schemars",
], optional = true }
async-trait = { version = "0.1.89", optional = true }
bollard = { version = "0.20.2", optional = true, default-features = false }
hyper-util = { version = "0.1.20", features = [
  "client-legacy",
], optional = true }
url = { version = "2.5.8", optional = true }
aide = { version = "0.16.0-alpha.3", features = [
  "axum",
  "axum-json",
  "axum-tokio",
  "axum-query",
  "axum-ws",
  "axum-extra",
  "axum-extra-cookie",
  "axum-extra-headers",
  "macros",
  "swagger",
], optional = true }
tower_governor = { version = "0.8.0", features = [
  "axum",
], default-features = false, optional = true }
governor = { version = "0.10.4", optional = true }
dashmap = { version = "6.1.0", optional = true }
tower-service = { version = "0.3.3", optional = true }
addr = { version = "0.15.6", optional = true }
md5 = { version = "0.8.0", optional = true }
schemars = { version = "1.2.1", optional = true }
futures-util = { version = "0.3.32", optional = true }
time = { version = "0.3.47", optional = true }
rand = { version = "0.10.0", optional = true }

[lib]
path = "src/lib.rs"
