livekit 0.9.3

Rust Client SDK for LiveKit
Documentation
[package]
name = "livekit"
version = "0.9.3"
edition.workspace = true
license.workspace = true
description = "Rust Client SDK for LiveKit"
repository.workspace = true
readme = "README.md"

[features]
# By default ws TLS is not enabled
default = ["native"]

native = ["livekit-signaling/native"]

# Back-compat alias from when this also selected a runtime.
tokio = ["native"]

# On Wayland, libwebrtc uses GDBus to communicate with the XDG Desktop Portal.
# GDBus requires a GLib event loop to be running. Enable this feature if you
# wish to use screensharing, and you do not already have a GLib event loop
# running in your application.
glib-main-loop = [ "libwebrtc/glib-main-loop" ]

# Note that the following features only change the behavior of tokio-tungstenite.
# It doesn't change the behavior of libwebrtc/webrtc-sys
native-tls = ["livekit-signaling/native-tls"]
native-tls-vendored = ["livekit-signaling/native-tls-vendored"]
rustls-tls-native-roots = ["livekit-signaling/rustls-tls-native-roots"]
rustls-tls-webpki-roots = ["livekit-signaling/rustls-tls-webpki-roots"]
__rustls-tls = ["livekit-signaling/__rustls-tls"]
__lk-internal = [] # internal features (used by livekit-ffi)
__lk-e2e-test = ["livekit-data-stream/test-utils"] # end-to-end testing with a LiveKit server

# How CI checks this crate's features, read by
# `.github/workflows/feature-combinations-curated.yml` via `cargo metadata`.
#
# Each entry is a complete feature set, run as
# `cargo check --no-default-features --features <entry joined by commas>`.
[package.metadata.feature-combinations]
mode = "curated"
check = [
    ["default"],                                        # a plain `cargo check`
    [],                                                 # --no-default-features
    ["native"],
    ["native", "native-tls"],
    ["native", "native-tls-vendored"],
    ["native", "rustls-tls-native-roots"],
    ["native", "rustls-tls-webpki-roots"],
    ["native", "rustls-tls-webpki-roots", "glib-main-loop"],
    ["native", "__lk-internal"],
]

[dependencies]
livekit-signaling = { workspace = true }
libwebrtc = { workspace = true }
livekit-protocol = { workspace = true }
livekit-common = { workspace = true }
livekit-data-stream = { workspace = true }
livekit-datatrack = { workspace = true }
livekit-rpc = { workspace = true }
prost = { workspace = true }
serde = { version = "1", features = ["derive"] }
serde_json = "1.0"
tokio = { version = "1", default-features = false, features = ["sync", "macros", "fs", "time", "rt-multi-thread"] }
tokio-stream = { workspace = true, features = ["sync"] }
parking_lot = { version = "0.12" }
futures-util = { version = "0.3", default-features = false, features = ["sink"] }
thiserror = "1.0"
lazy_static = "1.4"
log = "0.4"
chrono = { workspace = true }
libloading = { version = "0.8.6" }
bytes = "1.10.1"
bmrng = "0.5.2"

[dev-dependencies]
livekit-token = { workspace = true }
# Room service client, so an e2e test can delete the room it joined.
livekit-api = { workspace = true, default-features = false, features = ["services"] }
# Enable data-stream test constructors (e.g. TextStreamReader::new_for_test) for our test suites.
livekit-data-stream = { workspace = true, features = ["test-utils"] }
# Async test runtime + timers, needed by the peer_transport deadlock reproducer.
# (rt/time are already built elsewhere in the workspace, so no new crates enter the lockfile.)
tokio = { version = "1", features = ["rt", "macros", "time"] }
anyhow = "1.0.99"
test-log = "0.2.18"
test-case = "3.3"
serial_test = "3.0"
http = "1.1"
rand = { workspace = true }