[package]
name = "mm1"

version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description.workspace = true
exclude.workspace = true
publish.workspace = true


[features]
default = ["ask", "runtime", "sup", "timer", "multinode"]

ask = ["dep:mm1-ask", "dep:mm1-proto-ask"]
multinode = ["mm1-node/multinode", "dep:mm1-multinode", "dep:mm1-proto-network-management", "dep:mm1-proto-well-known"]
runtime = ["dep:mm1-node"]
sup = ["dep:mm1-sup", "dep:mm1-proto-sup"]
test-util = ["dep:mm1-test-rt"]
timer = ["dep:mm1-timer"]

[dependencies]
mm1-address = { workspace = true}
mm1-ask = { workspace = true, optional = true }
mm1-common = {workspace = true, features = ["futures"]}
mm1-core = { workspace = true }
mm1-multinode = { workspace = true, optional = true }
mm1-node = { workspace = true, optional = true }
mm1-proto = { workspace = true }
mm1-proto-ask = { workspace = true, optional = true }
mm1-proto-network-management = {workspace = true, optional = true}
mm1-proto-system = { workspace = true }
mm1-proto-sup = { workspace = true, optional = true }
mm1-proto-well-known = {workspace = true, optional = true}
mm1-runnable = { workspace = true }
mm1-sup = { workspace = true, optional = true }
mm1-test-rt = { workspace = true, optional = true }
mm1-timer = {workspace = true, optional = true }

[dev-dependencies]
mm1-logger = { workspace = true }

tokio = {workspace = true, features = ["rt", "macros"]}
thiserror.workspace = true



[workspace]
resolver = "3"
members = [ 
    ".",
    "components/*",
    "core/*",
    "libs/*",
    "protocols/*",
    "tests/*",
]

[workspace.package]
version = "0.7.4"
edition = "2024"

license = "MIT"
authors = ["That Roma <mm1@thatroma.me>"]
repository = "https://github.com/agner-rs/mm1"
description = "M/M/1! Queueing, do you speak it?!"
publish = true

exclude = ["**/*.snap"]

[workspace.dependencies]
mm1 = {path = ".", version = "=0.7.4", default-features = false}
mm1-core = {path = "core/mm1-core", version = "=0.7.4" }
mm1-node = {path = "core/mm1-node", version = "=0.7.4" }
mm1-runnable = {path = "core/mm1-runnable", version = "=0.7.4" }
mm1-test-rt = {path = "core/mm1-test-rt", version = "=0.7.4" }

mm1-multinode = {path = "components/mm1-multinode", version = "=0.7.4", features = [] }
mm1-name-service = {path = "components/mm1-name-service", version = "=0.7.4" }
mm1-sup = {path = "components/mm1-sup", version = "=0.7.4" }
mm1-timer = {path = "components/mm1-timer", version = "=0.7.4" }

mm1-address = {path = "libs/mm1-address", version = "=0.7.4" }
mm1-ask = {path = "libs/mm1-ask", version = "=0.7.4" }
mm1-common = {path = "libs/mm1-common", version = "=0.7.4" }
mm1-logger = {path = "libs/mm1-logger", version = "=0.7.4" }
mm1-proc-macros = {path = "libs/mm1-proc-macros", version = "=0.7.4" }

mm1-proto = {path = "protocols/mm1-proto", version = "=0.7.4" }
mm1-proto-ask = {path = "protocols/mm1-proto-ask", version = "=0.7.4" }
mm1-proto-named = {path = "protocols/mm1-proto-named", version = "=0.7.4"}
mm1-proto-network-management = {path = "protocols/mm1-proto-network-management", version = "=0.7.4" }
mm1-proto-sup = {path = "protocols/mm1-proto-sup", version = "=0.7.4" }
mm1-proto-system = {path = "protocols/mm1-proto-system", version = "=0.7.4" }
mm1-proto-well-known = {path = "protocols/mm1-proto-well-known", version = "=0.7.4" }

bimap = "^0.6"
bincode = "^2"
bytes = "^1.2"
derive_more = "^2.0"
either = "^1.15.0"
erased-serde = "^0.4.9"
eyre = "^0.6"
futures = "^0.3"
ghost = "^0.1"
humantime = "^2.3"
insta = {version = "^1.43", features = ["yaml"]}
masked = "^0.1"
parking_lot = "^0.12"
pin-project = "^1.1.10"
pretty_env_logger = "^0.5"
rand = "^0.9"
rmp-serde = "^1.3"
serde = "^1.0"
serde_json = "^1.0"
serde-value = "^0.7"
serde_yaml = "^0.9"
sha3 = "^0.10"
slotmap = "^1.0"
smallvec = "^1.15"
static_assertions = "^1.1.0"
structopt = "^0.3"
tempfile = "^3.23"
test-case = "^3.3.1"
thiserror = "^2.0"
tokio = "^1.48.0"
tokio-util = "^0.7.15"
tracing = "^0.1"
trait-set = "^0.3"
url = "^2.5"
zerocopy = "^0.8"