[package]
# --- Bumpversion match - do not reorder
name = "veilid-server"
version = "0.4.3"
# ---
description = "Veilid Headless Node"
resolver = "2"
repository.workspace = true
authors.workspace = true
license.workspace = true
edition.workspace = true
rust-version.workspace = true

[[bin]]
name = "veilid-server"
path = "src/main.rs"

[features]
default = ["rt-tokio", "veilid-core/default", "otlp-tonic"]
default-async-std = ["rt-async-std", "veilid-core/default-async-std"]

virtual-network = [
    "veilid-core/virtual-network",
    "veilid-core/virtual-network-server",
]

crypto-test = ["rt-tokio", "veilid-core/crypto-test"]
crypto-test-none = ["rt-tokio", "veilid-core/crypto-test-none"]

otlp-tonic = ["opentelemetry-otlp/grpc-tonic", "opentelemetry-otlp/trace"]
# otlp-grpc = ["opentelemetry-otlp/grpc-sys", "opentelemetry-otlp/trace"]

rt-async-std = [
    "veilid-core/rt-async-std",
    "async-std",
    "opentelemetry_sdk/rt-async-std",
]
rt-tokio = [
    "veilid-core/rt-tokio",
    "tokio",
    "tokio-stream",
    "tokio-util",
    "opentelemetry_sdk/rt-tokio",
    "console-subscriber",
]
tracking = ["veilid-core/tracking"]
debug-json-api = []
debug-locks = ["veilid-core/debug-locks"]
perfetto = ["tracing-perfetto"]
flame = ["tracing-flame"]

geolocation = ["veilid-core/geolocation"]

[dependencies]
veilid-core = { path = "../veilid-core", default-features = false }
tracing = { version = "^0.1.40", features = ["log", "attributes"] }
tracing-subscriber = { version = "^0.3.18", features = ["env-filter", "time"] }
tracing-appender = "^0.2.3"
tracing-opentelemetry = "^0.24.0"
# Buggy: tracing-error = "^0"
opentelemetry = { version = "^0.23" }
opentelemetry-otlp = { version = "^0.16.0", default-features = false, optional = true }
opentelemetry_sdk = "0.23.0"
opentelemetry-semantic-conventions = "^0.16.0"
async-std = { version = "^1.12.0", features = ["unstable"], optional = true }
tokio = { version = "^1.38.1", features = ["full", "tracing"], optional = true }
tokio-stream = { version = "^0.1.15", features = ["net"], optional = true }
tokio-util = { version = "^0.7.11", features = ["compat"], optional = true }
console-subscriber = { version = "^0.3.0", optional = true }
async-tungstenite = { version = "^0.27.0", features = ["async-tls"] }
color-eyre = { version = "^0.6.3", default-features = false }
backtrace = "^0.3.71"
clap = { version = "^4.5.9", features = ["derive", "string", "wrap_help"] }
directories = "^5.0.1"
parking_lot = "^0.12.3"
config = { version = "^0.14.0", default-features = false, features = ["yaml"] }
cfg-if = "^1.0.0"
serde = "^1.0.204"
serde_derive = "^1.0.204"
serde_yaml = { package = "serde_yaml_ng", version = "^0.10.0" }
json = "^0"
futures-util = { version = "^0", default-features = false, features = [
    "alloc",
] }
url = "^2"
ctrlc = "^3"
lazy_static = "^1"
bugsalot = { package = "veilid-bugsalot", version = "0.2.0" }
flume = { version = "^0", features = ["async"] }
rpassword = "^7"
hostname = "^0"
stop-token = { version = "^0", default-features = false }
sysinfo = { version = "^0.30.13", default-features = false }
wg = { version = "^0.9.1", features = ["future"] }
tracing-flame = { version = "0.2.0", optional = true }
time = { version = "0.3.36", features = ["local-offset"] }
chrono = "0.4.38"

[target.'cfg(windows)'.dependencies]
windows-service = "^0"
ansi_term = "^0"

[target.'cfg(unix)'.dependencies]
daemonize = "^0.5.0"
signal-hook = "^0.3.17"
signal-hook-async-std = "^0.2.2"
nix = "^0.29.0"
tracing-perfetto = { version = "0.1.5", optional = true }

[target.'cfg(target_os = "linux")'.dependencies]
tracing-journald = "^0.3.0"

[dev-dependencies]
serial_test = "^3.1.1"

[lints]
workspace = true
