[package]
name = "chainmq"
version = "1.2.0"
edition = "2024"
authors = ["Alexander Nitiola <cre8tor.alexander@gmail.com>"]
description = "A Redis-backed, type-safe job queue for Rust. Provides job registration and execution, delayed jobs, retries with backoff, and scalable workers."
license = "MIT"
repository = "https://github.com/thecre8tor/chainmq"
documentation = "https://docs.rs/chainmq"
keywords = ["queue", "jobs", "bullmq", "redis", "workers"]
categories = ["web-programming", "data-structures", "development-tools", "asynchronous"]


[dependencies]
async-trait = "0.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tokio = { version = "1.0", features = ["full"] }
redis = { version = "1.2", features = ["tokio-comp", "script", "connection-manager"] }
uuid = { version = "1.0", features = ["v4", "serde"] }
anyhow = "1.0"
thiserror = "2.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
dashmap = "6.1"
chrono = { version = "0.4", features = ["serde"] }
futures = "0.3"
parking_lot = "0.12"

[dependencies.actix-session]
version = "0.11.0"
features = ["cookie-session"]
optional = true

[dependencies.actix-web]
version = "4.4"
optional = true

[dependencies.axum]
version = "0.8"
optional = true

[dependencies.bcrypt]
version = "0.19.0"
optional = true

[dependencies.cookie]
version = "0.18"
optional = true

[dependencies.http]
version = "1"
optional = true

[dependencies.rust-embed]
version = "8"
optional = true
features = ["include-exclude"]

[dependencies.tower-http]
version = "0.6"
optional = true
features = ["set-header"]

[dependencies.tower-sessions]
version = "0.14"
optional = true
features = ["axum-core"]

[dependencies.tower-sessions-cookie-store]
version = "0.5"
optional = true

[dev-dependencies]
tokio-test = "0.4"
actix-web = "4.4"
axum = "0.8"
http = "1"
http-body-util = "0.1"
tower = "0.5"
tower-http = { version = "0.6", features = ["set-header"] }
tower-sessions = { version = "0.14", features = ["axum-core"] }
tower-sessions-cookie-store = "0.5"

[features]
default = ["web-ui"]
# Back-compat alias: same as `web-ui-axum` (nestable Axum dashboard).
web-ui = ["web-ui-axum"]
web-ui-core = ["dep:rust-embed", "dep:bcrypt", "dep:http"]
web-ui-axum = [
    "web-ui-core",
    "dep:axum",
    "dep:cookie",
    "dep:tower-sessions",
    "dep:tower-sessions-cookie-store",
    "dep:tower-http",
]
web-ui-actix = ["web-ui-core", "dep:actix-web", "dep:actix-session"]
