[package]
name = "dataflow-rs"
version = "3.0.1"
edition = "2024"
rust-version = "1.85"
exclude = [".DS_Store", "/target", ".vscode"]
authors = ["Plasmatic Engineering <shankar@goplasmatic.io>"]
license = "Apache-2.0"
description = "A lightweight rules engine for building IFTTT-style automation and data processing pipelines in Rust. Define rules with JSONLogic conditions, execute actions, and chain workflows."
readme = "README.md"
homepage = "https://github.com/GoPlasmatic/dataflow-rs"
repository = "https://github.com/GoPlasmatic/dataflow-rs"
keywords = ["rules-engine", "ifttt", "automation", "jsonlogic", "workflow"]
categories = ["data-structures", "development-tools", "config"]
[features]
default = []
wasm-web = ["chrono/wasmbind", "getrandom/wasm_js", "uuid/js"]
[dependencies]
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
datalogic-rs = { version = "5.0", features = ["serde_json", "templating"] }
datavalue = { package = "datavalue-rs", version = "0.2.2", features = ["serde", "serde_json"] }
bumpalo = "3.20"
uuid = { version = "1.23", default-features = false, features = ["v7", "std"] }
chrono = { version = "0.4", default-features = false, features = ["clock", "std", "serde"] }
thiserror = "2.0"
log = "0.4"
tokio = { version = "1", features = ["rt", "macros"] }
async-trait = "0.1"
quick-xml = { version = "0.37", features = ["serialize"] }
getrandom = { version = "0.3", optional = true }
[dev-dependencies]
tokio = { version = "1", features = ["full", "test-util"] }
env_logger = "0.11"
axum = "0.8"
futures = "0.3"
num_cpus = "1.17"
[workspace]
members = [".", "wasm"]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tokio = { version = "1", features = ["rt-multi-thread"] }
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
[profile.release.package.dataflow-wasm]
opt-level = "s"