[package]
name = "moq-relay"
description = "Media over QUIC"
authors = ["Luke Curley"]
repository = "https://github.com/moq-dev/moq"
license = "MIT OR Apache-2.0"

version = "0.11.4"
edition = "2024"
rust-version.workspace = true

keywords = ["quic", "http3", "webtransport", "media", "live"]
categories = ["multimedia", "network-programming", "web-programming"]

[lib]
doctest = false

[[bin]]
name = "moq-relay"
path = "src/main.rs"
doc = false

[features]
default = ["iroh", "quinn", "websocket"]
iroh = ["moq-native/iroh"]
jemalloc = ["moq-native/jemalloc"]
noq = ["moq-native/noq"]
quinn = ["moq-native/quinn"]
quiche = ["moq-native/quiche"]
websocket = ["moq-native/websocket", "dep:qmux", "axum/ws"]

[dependencies]
anyhow = { version = "1", features = ["backtrace"] }
axum = { version = "0.8", features = ["tokio"] }
axum-server = { version = "0.8", features = ["tls-rustls"] }
bytes = "1"
clap = { version = "4", features = ["derive"] }
futures = "0.3"
http-body = "1"
http-cache-reqwest = { version = "0.16", features = ["manager-moka"], default-features = false }
jsonwebtoken = "10"
moq-native = { workspace = true, default-features = false, features = ["aws-lc-rs"] }
moq-net = { workspace = true, features = ["serde"] }
moq-token = { workspace = true, features = ["tokio"] }
qmux = { workspace = true, features = ["ws"], optional = true }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
reqwest-middleware = "0.4"
rustls = { version = "0.23", features = [
    "aws-lc-rs",
], default-features = false }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_with = { version = "3", features = ["json", "base64"] }
thiserror = "2"
tokio = { workspace = true, features = ["full"] }
tokio-rustls = { version = "0.26", default-features = false }
toml = "0.9"
tower-http = { version = "0.6", features = ["cors"] }
tower-service = "0.3"
tracing = "0.1"
url = { version = "2", features = ["serde"] }

[target.'cfg(unix)'.dependencies]
sd-notify = "0.5"

[dev-dependencies]
rcgen = "0.13"
tempfile = "3"
wiremock = "0.6"
