[package] name = "bifrost" version = "0.1.0" edition.workspace = true authors.workspace = true rust-version.workspace = true description.workspace = true readme.workspace = true repository.workspace = true license.workspace = true categories.workspace = true keywords.workspace = true [workspace.package] edition = "2024" authors = ["Christian Iversen "] rust-version = "1.85" description = "A Philips Hue bridge emulator backed by zigbee2mqtt" readme = "README.md" repository = "https://github.com/chrivers/bifrost" license = "GPL-3.0-only" categories = ["api-bindings", "simulation", "network-programming"] keywords = [ "home-automation", "hue-lights", "hue-bridge", "home-assistant", "hue", "zigbee", "hue-api", "zigbee2mqtt", "phillips-hue", ] [workspace] members = [ "crates/bifrost-api", "crates/hue", "crates/svc", "crates/z2m", "crates/zcl", ] [workspace.lints.rust] # NOTE: to use llvm-cov, comment out the "unstable_features" restriction: unstable_features = "forbid" unused_lifetimes = "warn" unused_qualifications = "warn" # Needed for llvm-cov unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage,coverage_nightly)'] } [workspace.lints.clippy] all = { level = "warn", priority = -1 } correctness = { level = "warn", priority = -1 } pedantic = { level = "warn", priority = -1 } cargo = { level = "warn", priority = -1 } nursery = { level = "warn", priority = -1 } perf = { level = "warn", priority = -1 } style = { level = "warn", priority = -1 } multiple_crate_versions = "allow" missing_errors_doc = "allow" missing_panics_doc = "allow" [lints] workspace = true [features] default = [ "server-banner", ] server-banner = ["dep:termcolor"] [profile.dev] debug = "limited" split-debuginfo = "unpacked" [dependencies] axum = { version = "0.8.1", features = ["json", "tokio", "macros", "multipart", "ws", "tracing"], default-features = false } axum-core = "0.5.0" axum-server = { version = "0.7.1", features = ["tls-openssl"], default-features = false } bytes = "1.10.0" chrono = { version = "0.4.39", features = ["clock", "serde"], default-features = false } clap = { version = "4.5.29", features = ["std", "color", "derive", "help", "usage"], default-features = false } config = { version = "0.15.8", default-features = false, features = ["yaml"] } futures = "0.3.31" hyper = "1.6.0" iana-time-zone = "0.1.61" log = "0.4.25" mac_address = { version = "1.1.8", features = ["serde"] } mdns-sd = "0.13.2" mime = "0.3.17" rand = "0.9.0" serde = { version = "1.0.217", features = ["derive"], default-features = false } serde_json = "1.0.138" serde_yml = "0" thiserror = "2.0.11" tokio = { version = "1.43.1", features = ["io-util", "process", "rt-multi-thread", "signal"], default-features = false } tokio-stream = { version = "0.1.17", features = ["sync"], default-features = false } tokio-tungstenite = { version = "0.26.1", features = ["native-tls"] } tower = "0.5.2" tower-http = { version = "0.6.2", features = ["cors", "normalize-path", "trace"], default-features = false } tracing = "0.1.41" uuid = { version = "1.13.1", features = ["serde", "v4", "v5"] } pretty_env_logger = "0.5.0" camino = { version = "1.1.9", features = ["serde1"] } x509-cert = { version = "0.2.5", features = ["builder", "hazmat", "pem"], default-features = false } rsa = "0.9.7" sha2 = { version = "0.10.8", features = ["oid"] } p256 = "0.13.2" ecdsa = { version = "0.16.9", features = ["der"] } der = { version = "0.7.9", features = ["oid"] } sha1 = "0.10.6" rustls-pemfile = "2.2.0" termcolor = { version = "1.4.1", optional = true } itertools = "0.14.0" reqwest = { version = "0.12.12", default-features = false, features = ["json", "native-tls"] } url = { version = "2.5.4", features = ["serde"] } hex = "0.4.3" async-trait = "0.1.86" hue = { version = "0.1.0", path = "crates/hue" } zcl = { path = "crates/zcl" } openssl = "0.10.72" tokio-util = { version = "0.7.13", features = ["net"] } tokio-openssl = "0.6.5" maplit = "1.0.2" svc = { version = "0.1.0", path = "crates/svc" } z2m = { version = "0.1.0", path = "crates/z2m" } quick-xml = { version = "0.37.2", features = ["serialize"] } tokio-ssdp = { git = "https://github.com/chrivers/tokio-ssdp.git", rev = "00fc29c3" } udp-stream = { git = "https://github.com/chrivers/udp-stream.git", rev = "da6c76bb" } native-tls = "0.2.13" tokio-native-tls = "0.3.1" tzfile = "0.1.3" bifrost-api = { version = "0.1.0", path = "crates/bifrost-api", features = ["mac"] } nix = { version = "0.30.0", default-features = false, features = ["socket"] } [dev-dependencies] clap-stdin = "0.6.0" json_diff_ng = { version = "0.6.0", default-features = false } packed_struct = "0.10.1"