[package]
name = "r8r"
version = "0.1.0"
edition = "2024"
rust-version = "1.85"
license = "Unlicense"
repository = "https://github.com/cochranblock/r8r"
authors = ["Michael Cochran <mcochran@cochranblock.org>"]
description = "n8n.io reimagined in Rust. One static binary, 5 modules, codegen pipeline for the long tail."

[features]
default = []
tests = ["dep:exopack", "dep:colored"]

[[bin]]
name = "r8r"
path = "src/main.rs"

[[bin]]
name = "r8r-codegen"
path = "src/bin/r8r-codegen.rs"

[[bin]]
name = "r8r-test"
path = "src/bin/r8r-test.rs"
required-features = ["tests"]

[[bin]]
name = "r8r-stress"
path = "src/bin/r8r-stress.rs"
required-features = ["tests"]

[dependencies]
# Pin serde to a version that swc_common 0.37 (transitive) is happy with.
serde = { version = "=1.0.219", features = ["derive"] }
serde_json = "1"
toml = "0.8"
tokio = { version = "1", features = ["full"] }
async-trait = "0.1"
inventory = "0.3"
petgraph = "0.6"
clap = { version = "4", features = ["derive"] }
reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false }
chrono = { version = "0.4", features = ["serde"] }
anyhow = "1"
thiserror = "2"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
axum = "0.7"
tokio-cron-scheduler = "0.13"
sha2 = "0.10"
sha1 = "0.10"
md-5 = "0.10"
hmac = "0.12"
hex = "0.4"
base64 = "0.22"
tokio-postgres = { version = "0.7", features = ["with-serde_json-1"] }
tokio-rusqlite = { version = "0.6", features = ["bundled"] }
rusqlite = { version = "0.32", features = ["bundled"] }
russh = "0.45"
russh-keys = "0.45"
redis = { version = "0.27", features = ["tokio-comp", "aio"] }
rumqttc = "0.24"
mongodb = "3"
rskafka = "0.5"
lapin = "2"
futures-util = "0.3"
urlencoding = "2"
quick-xml = { version = "0.36", features = ["serialize"] }
pulldown-cmark = "0.12"
flate2 = "1"
scraper = "0.21"
lettre = { version = "0.11", default-features = false, features = ["smtp-transport", "tokio1-rustls-tls", "builder"] }
uuid = { version = "1", features = ["v4"] }
swc_ecma_parser = "0.149"
swc_ecma_ast = "0.118"
walkdir = "2"
regex-lite = "0.1"
include_dir = "0.7"
mime_guess = "2"

# Test-only plumbing
exopack = { version = "0.2", path = "../exopack", optional = true, default-features = false, features = ["triple_sims", "mock", "devtools"] }
colored = { version = "2", optional = true }

[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = true
panic = "abort"

[profile.release.package."*"]
opt-level = 3

# canvas/ is excluded from this package — it compiles to WASM via trunk.
# Build with: trunk build --release --public-url /canvas/ in canvas/
