[package]
name = "stream_server"
version = "0.2.0"
edition = "2021"
authors = ["Stream Server Team <team@streamserver.com>"]
description = "High-performance audio streaming server with advanced features"
license = "MIT"
repository = "https://github.com/your-org/veza-stream-server"
default-run = "stream_server"

[[bin]]
name = "stream_server"
path = "src/main.rs"

[[bin]]
name = "simple_stream_server"
path = "src/simple_stream_server.rs"

[dependencies]
# Core web framework
axum = { version = "0.7", features = ["macros", "multipart", "ws"] }
axum-tungstenite = "0.1"
# ALIGNED WITH ORIGIN: Tokio 1.35 (was 1.0)
tokio = { version = "1.35", features = ["full"] }
tokio-tungstenite = "0.21"
tower = { version = "0.4", features = ["full"] }
tower-http = { version = "0.5", features = ["fs", "cors", "compression-gzip", "compression-br", "trace", "timeout"] }
hyper = { version = "1.0", features = ["full"] }

# Production performance & concurrency
dashmap = "5.5"
parking_lot = "0.12"
rayon = "1.10"
crossbeam = "0.8"
flume = "0.11"

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.8"
bincode = "1.3"

# Async utilities
futures = "0.3"
futures-util = "0.3"
async-channel = "2.1"

# Logging and tracing
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "chrono"] }
tracing-appender = "0.2"

# Audio processing & codecs
symphonia = { version = "0.5", features = ["all"] }
hound = "3.5"
minimp3 = "0.5"
rubato = "0.15"
# opus = "0.3" # Requires cmake
# lame = "0.1" # May require native dependencies
# fdkaac = { version = "0.7", optional = true } # Not available on crates.io

# Streaming protocols (disabled temporarily for compilation)
# webrtc = "0.7" # Complex native dependencies
# webrtc-util = "0.7"
m3u8-rs = "5.0"

# FFT and signal processing
rustfft = "6.2"
apodize = "1.0"
dasp = "0.11"

# Compression
brotli = "3.4"
lz4_flex = "0.11"
zstd = "0.13"

# Database & Cache
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "postgres", "chrono", "uuid"] }
redis = { version = "0.25", features = ["tokio-comp", "connection-manager"] }
deadpool-redis = "0.15"

# Metadata extraction
id3 = "1.13"
metaflac = "0.2"

# Memory management and optimization
bytes = "1.5"
memmap2 = "0.9"

# HTTP client
reqwest = { version = "0.11", features = ["json", "stream"] }

# Utilities
veza-common = { path = "../veza-common" }
uuid = { version = "1.6", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
thiserror = "1.0"
anyhow = "1.0"

# Cryptography and security
sha2 = "0.10"
hmac = "0.12"
jsonwebtoken = "9.2"
bcrypt = "0.15"
ring = "0.17"

# Configuration
clap = { version = "4.4", features = ["derive"] }

# Metrics and monitoring
prometheus = "0.13"
metrics-exporter-prometheus = "0.13"
metrics = "0.22"

# File watching
notify = "6.1"

# Rate limiting
governor = "0.6"

# Environment variables
dotenv = "0.15"

# Regex
regex = "1.10"

# Random number generation
rand = "0.8"

# System information
sysinfo = "0.30"
num_cpus = "1.0"

# LRU Cache
lru = "0.12"

# Process management
daemonize = "0.5"

# Lazy static initialization
once_cell = "1.19"
lazy_static = "1.4"

# Validation et sécurité
subtle = "2.4"
mime_guess = "2.0"
tokio-util = { version = "0.7", features = ["codec"] }
headers = "0.4"
axum-extra = { version = "0.9", features = ["typed-header"] }
hex = "0.4"
url = "2.5"

# gRPC support
tonic = { version = "0.11", features = ["transport", "prost"] }
prost = "0.12"
prost-types = "0.12"
tokio-stream = { version = "0.1", features = ["sync"] }

# RabbitMQ client (ORIGIN Architecture - Event Bus)
lapin = "2.3"

[build-dependencies]
tonic-build = "0.11"

[dev-dependencies]
tokio-test = "0.4"
tempfile = "3.8"
criterion = "0.5"

[[bench]]
name = "http_range_bench"
harness = false

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"
strip = true

[profile.dev]
opt-level = 0
debug = true
overflow-checks = true

[features]
default = ["tracing"]
metrics = []
tracing = ["tracing-subscriber/json"]
redis = []
jaeger = []
