[workspace] members = ["crates/core", "crates/network", "crates/providers", "crates/extensions", "crates/mobile", "crates/bindgen"] exclude = ["vendor/rustix-1.1.4"] resolver = "3" [patch.crates-io] # Android < 30 may kill processes that probe statx directly (SIGSYS). # Keep all direct and transitive users on the same compatibility fix. rustix = { path = "vendor/rustix-1.1.4" } [workspace.package] version = "0.1.0" edition = "2024" rust-version = "1.98.1" license = "MIT" publish = false [workspace.dependencies] image = { version = "=0.25.10", default-features = false, features = ["jpeg", "png", "gif", "webp"] } spotiflac-core = { path = "crates/core" } spotiflac-extensions = { path = "crates/extensions" } spotiflac-network = { path = "crates/network" } spotiflac-providers = { path = "crates/providers" } rquickjs = { version = "=0.14.0", features = ["bindgen"] } base64 = "0.23" sha2 = "0.11" sha1 = "0.11" md-5 = "0.11" hmac = "0.13" aes-gcm = "=0.11.1" aes = { version = "=0.9.3", features = ["zeroize"] } blowfish = { version = "=0.10.0", features = ["zeroize"] } zeroize = "1.8" getrandom = "0.4" tempfile = "3.27" zip = { version = "=8.6.0", default-features = false, features = ["deflate-flate2-zlib-rs"] } serde = { version = "1.0", features = ["derive"] } serde_json = { version = "1.0", features = ["float_roundtrip", "raw_value"] } thiserror = "2.0" uniffi = { version = "=0.32.2", default-features = false } tokio = { version = "=1.53.1", features = ["rt-multi-thread", "net", "time", "sync", "io-util", "macros"] } hyper = { version = "=1.11.1", features = ["client", "http1", "http2"] } hyper-util = { version = "=0.1.21", features = ["client-legacy", "http1", "http2", "tokio"] } hyper-rustls = { version = "=0.27.10", default-features = false, features = ["http1", "http2", "ring", "tls12"] } rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] } rustls-native-certs = "=0.8.4" rustls-platform-verifier = "=0.7.1" rustls-pemfile = "2.2" http = "1.4" http-body-util = "0.1" bytes = "1.11" futures-util = "0.3" tokio-util = { version = "0.7", features = ["io"] } async-compression = { version = "0.4", features = ["tokio", "gzip"] } tower-service = "0.3" hickory-proto = { version = "=0.26.3", default-features = false, features = ["std"] } cookie = "0.18" url = "2.5" regex = "=1.13.1" scraper = { version = "=0.27.0", default-features = false } # Keep the parser compatible with scraper's HtmlTreeSink implementation. html5ever = "=0.39.0" # Match the Unicode 15 tables used by the Go backend's title/artist matching. unicode-normalization = "=0.1.22" unicode-general-category = "=0.6.0" time = { version = "=0.3.55", features = ["parsing"] } # Pure-Rust FLAC decoder for the Hi-Res authenticity check. claxon = "=0.4.3" chrono = { version = "=0.4.45", default-features = false, features = ["clock"] } tz-rs = "=0.7.3" httpdate = "=1.0.3" cap-std = "=4.0.3" rustix = { version = "=1.1.4", features = ["fs"] } [workspace.lints.rust] unsafe_code = "deny" [profile.release] lto = "thin" codegen-units = 1