[package]
name = "lib-dispatch"
version = "0.1.0"
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
crate-type = ["cdylib", "rlib"]

[dependencies]
pin-project = "1.0"
futures-core = { version = "0.3", default-features = false }
futures-channel = "0.3.26"
futures.workspace = true
futures-util = "0.3.26"
bytes = { version = "1.4", features = ["serde"] }
nanoid = "0.4.0"

dyn-clone = "1.0"
derivative = "2.2.0"
serde_json = { workspace = true, optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
serde_repr = { workspace = true, optional = true }
validator = { workspace = true, features = ["derive"] }
tracing.workspace = true
bincode = { version = "1.3", optional = true }
protobuf = { workspace = true, optional = true }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
thread-id = "3.3.0"
tokio = { workspace = true, features = ["full", "rt-multi-thread"] }

[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.2", features = ["js"] }
wasm-bindgen = { version = "0.2.89" }
wasm-bindgen-futures = "0.4"
tokio = { workspace = true, features = ["rt", "sync"] }

[dev-dependencies]
tokio = { workspace = true, features = ["rt"] }
futures-util = "0.3.26"

[features]
default = ["local_set", "use_protobuf"]
use_serde = ["bincode", "serde_json", "serde", "serde_repr"]
use_protobuf = ["protobuf"]
local_set = []
