[package]
authors = ["Kyle Simpson <kyleandrew.simpson@gmail.com>"]
description = "An async Rust library for the Discord voice API."
documentation = "https://docs.rs/songbird"
edition = "2018"
homepage = "https://github.com/serenity-rs/songbird"
include = ["src/**/*.rs", "Cargo.toml", "build.rs"]
keywords = ["discord", "api", "rtp", "audio"]
license = "ISC"
name = "songbird"
readme = "README.md"
repository = "https://github.com/serenity-rs/songbird.git"
version = "0.2.2"

[dependencies]
derivative = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tracing = { version = "0.1", features = ["log"] }
tracing-futures = "0.2"
symphonia-core = "0.5"

[dependencies.async-trait]
optional = true
version = "0.1"

[dependencies.async-tungstenite]
default-features = false
features = ["tokio-runtime"]
optional = true
version = "0.17"

[dependencies.audiopus]
optional = true
version = "0.3.0-rc.0"

[dependencies.byteorder]
optional = true
version = "1"

[dependencies.dashmap]
optional = true
version = "5"

[dependencies.discortp]
features = ["discord-full"]
optional = true
version = "0.4"

# Temporary hack to pin MSRV.
[dependencies.flume]
optional = true
version = "<0.10.12"

[dependencies.futures]
version = "0.3"

[dependencies.parking_lot]
optional = true
version = "0.12"

[dependencies.pin-project]
optional = true
version = "1"

[dependencies.rand]
optional = true
version = "0.8"

[dependencies.serenity]
optional = true
version = "0.11"
default-features = false
features = ["voice", "gateway"]

[dependencies.serenity-voice-model]
optional = true
version = "0.1"

[dependencies.streamcatcher]
optional = true
version = "1"

[dependencies.tokio]
optional = true
version = "1.0"
default-features = false

[dependencies.twilight-gateway]
optional = true
version = "0.11.0"
default-features = false

[dependencies.twilight-model]
optional = true
version = "0.11.0"
default-features = false

[dependencies.typemap_rev]
optional = true
version = "0.1"

[dependencies.url]
optional = true
version = "2"

[dependencies.uuid]
optional = true
version = "0.8"
features = ["v4"]

[dependencies.xsalsa20poly1305]
optional = true
version = "0.8"
features = ["std"]

[dev-dependencies]
criterion = "0.3"
utils = { path = "utils" }

[features]
# Core features
default = [
    "serenity-rustls",
    "driver",
    "gateway",
]
gateway = [
    "gateway-core",
    "tokio/sync",
    "tokio/time",
]
gateway-core = [
    "dashmap",
    "flume",
    "parking_lot",
    "pin-project",
]
driver = [
    "async-tungstenite",
    "driver-core",
    "tokio/fs",
    "tokio/io-util",
    "tokio/macros",
    "tokio/net",
    "tokio/process",
    "tokio/rt",
    "tokio/sync",
    "tokio/time",
]
driver-core = [
    "async-trait",
    "audiopus",
    "byteorder",
    "discortp",
    "flume",
    "parking_lot",
    "rand",
    "serenity-voice-model",
    "streamcatcher",
    "typemap_rev",
    "url",
    "uuid",
    "xsalsa20poly1305",
]
rustls = ["async-tungstenite/tokio-rustls-webpki-roots", "rustls-marker"]
native = ["async-tungstenite/tokio-native-tls", "native-marker"]
serenity-rustls = ["serenity/rustls_backend", "rustls", "gateway", "serenity-deps"]
serenity-native = ["serenity/native_tls_backend", "native", "gateway", "serenity-deps"]
twilight-rustls = ["twilight", "twilight-gateway/rustls-native-roots", "rustls", "gateway"]
twilight-native = ["twilight", "twilight-gateway/native", "native", "gateway"]
twilight = ["twilight-model"]
zlib-simd = ["twilight-gateway/zlib-simd"]
zlib-stock = ["twilight-gateway/zlib-stock"]
serenity-deps = ["async-trait"]

rustls-marker = []
native-marker = []

# Behaviour altering features.
youtube-dlc = []
yt-dlp = []
builtin-queue = []

# Used for docgen/testing/benchmarking.
full-doc = ["default", "twilight-rustls", "builtin-queue", "zlib-stock"]
internals = []

[[bench]]
name = "base-mixing"
path = "benches/base-mixing.rs"
harness = false

[[bench]]
name = "mixing-task"
path = "benches/mixing-task.rs"
required-features = ["internals"]
harness = false

[package.metadata.docs.rs]
features = ["full-doc"]
