[package]
name = "tasker-worker"
version = "0.1.2"
edition = "2021"
default-run = "tasker-worker"
description = "Worker foundation system for multi-language step execution"
readme = "README.md"
repository = "https://github.com/tasker-systems/tasker-core"
license = "MIT"
keywords = ["async", "execution", "ffi", "task", "worker"]
categories = ["asynchronous", "concurrency", "web-programming"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[package.metadata.cargo-machete]
ignored = [
"cargo-llvm-cov",
"serial_test",
"tasker-core",
"tempfile",
"tokio-test",
"url",
"axum-extra",
"prost",
"prost-types",
"tokio-stream",
"bigdecimal",
"criterion",
"crossbeam",
"dotenvy",
"fastrand",
"jsonwebtoken",
"opentelemetry-otlp",
"rand",
"regex",
"reqwest",
"rsa",
"rust_decimal",
"serde_yaml",
"sysinfo",
"toml",
"tracing-subscriber",
]
[lib]
crate-type = ["rlib"]
name = "tasker_worker"
[[bin]]
name = "tasker-worker"
path = "src/bin/server.rs"
required-features = ["web-api"]
[[bin]]
name = "generate-worker-openapi"
path = "src/bin/generate_openapi.rs"
required-features = ["web-api"]
[dependencies]
anyhow = { workspace = true }
async-trait = { workspace = true }
axum = { workspace = true, optional = true }
axum-extra = { workspace = true, optional = true }
bigdecimal = { workspace = true }
chrono = { workspace = true }
config = { workspace = true }
criterion = { workspace = true, optional = true }
dashmap = { workspace = true }
crossbeam = { workspace = true }
dotenvy = { workspace = true }
fastrand = { workspace = true }
futures = { workspace = true }
jsonwebtoken = { workspace = true, optional = true }
metrics = "0.24"
opentelemetry = { workspace = true }
opentelemetry-otlp = { workspace = true }
pgmq = { workspace = true }
tasker-pgmq = { path = "../tasker-pgmq", version = "=0.1.2" }
rand = { workspace = true }
regex = { workspace = true }
reqwest = { workspace = true }
rsa = { workspace = true, optional = true }
rust_decimal = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
sqlx = { workspace = true, optional = true }
sysinfo = { workspace = true }
tasker-client = { package = "tasker-client", path = "../tasker-client", version = "=0.1.2" }
tasker-shared = { package = "tasker-shared", path = "../tasker-shared", version = "=0.1.2" }
thiserror = { workspace = true }
tokio = { workspace = true }
toml = { workspace = true }
tower = { workspace = true, optional = true }
tower-http = { workspace = true, optional = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
utoipa = { workspace = true, optional = true }
utoipa-swagger-ui = { workspace = true, optional = true }
uuid = { workspace = true }
workspace_tools = { workspace = true }
tonic = { workspace = true, optional = true }
tonic-health = { workspace = true, optional = true }
tonic-reflection = { workspace = true, optional = true }
prost = { workspace = true, optional = true }
prost-types = { workspace = true, optional = true }
tokio-stream = { workspace = true, optional = true }
[dev-dependencies]
cargo-llvm-cov = { workspace = true }
serial_test = { workspace = true }
tasker-core = { package = "tasker-core", path = "../" }
tempfile = { workspace = true }
tokio-test = { workspace = true }
url = { workspace = true }
[features]
default = ["grpc-api", "postgres", "test-utils", "web-api"]
benchmarks = ["criterion"]
postgres = ["sqlx/postgres"]
test-utils = []
web-api = [
"axum",
"axum-extra",
"jsonwebtoken",
"rsa",
"tower",
"tower-http",
"utoipa",
"utoipa-swagger-ui",
]
grpc-api = [
"web-api",
"tonic",
"tonic-health",
"tonic-reflection",
"prost",
"prost-types",
"tokio-stream",
"tasker-shared/grpc-api",
]
test-db = []
test-messaging = ["test-db"]
test-services = ["test-messaging"]
test-cluster = ["test-services"]
tokio-console = ["tasker-shared/tokio-console"]
[lints]
workspace = true