[package]
name = "lightningbeam-core"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib", "rlib"]

[dependencies]
serde = { version = "1.0", features = ["derive"] }
wasm-bindgen = "0.2.45"
cpal = { version = "0.15", features = ["wasm-bindgen"] }
anyhow = "1.0"
wasm-logger = "0.2"
log = "0.4"
rubato = "0.14.0"
symphonia = { version = "0.5", features = ["all"] }
crossbeam-channel = "0.5.4"
atomic_refcell = "0.1.13"  # WASM-compatible atomic refcell
parking_lot = "0.12"

[dependencies.web-sys]
version = "0.3.22"
features = ["console", "AudioContext", "Window", "Performance", "PerformanceTiming"]

[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen-futures = "0.4"
js-sys = "0.3"
web-time = "0.2"  # WASM-compatible timing
gloo-timers = { version = "0.2", features = ["futures"] }

# The `console_error_panic_hook` crate provides better debugging of panics by
# logging them with `console.error`. This is great for development, but requires
# all the `std::fmt` and `std::panicking` infrastructure, so it's only enabled
# in debug mode.
[target."cfg(debug_assertions)".dependencies]
console_error_panic_hook = "0.1.5"

[features]
default = ["native"]
native = []
wasm = []
