A modern, network-enabled music player platform built on Rockbox technology.
rockboxd.tsiry-sandratraina.com
rust
deno
navidrome
airplay
libadwaita
zig
mpris
snapcast
mpd
rockbox
audio
subsonic
1[workspace]
2default-members = ["crates/*"]
3members = [
4 "cli",
5 "crates/*", "gtk",
6 "webui",
7]
8resolver = "2"
9exclude = ["rmpc", "crates/controls", "gpui"]
10
11[profile.release]
12panic = "abort"
13
14[workspace.package]
15authors = ["Tsiry Sandratraina <tsiry.sndr@rocksky.app"]
16edition = "2021"
17license = "LGPL-2.1"
18repository = "https://github.com/tsirysndr/rockboxd"
19
20[workspace.dependencies]
21async-trait = "0.1.73"
22base64 = "0.21.7"
23boxed_error = "0.2.3"
24bytes = "1.4.0"
25cache_control = "=0.2.0"
26capacity_builder = "0.1.3"
27color-print = "0.3.5"
28chrono = { version = "0.4", default-features = false, features = [
29 "std",
30 "serde",
31] }
32console_static_text = "=0.8.1"
33dashmap = "5.5.3"
34data-encoding = "2.3.3"
35deno_ast = { version = "=0.44.0", features = ["transpiling"] }
36deno_core = { version = "0.326.0" }
37deno_cache_dir = "=0.15.0"
38deno_config = { version = "=0.39.3", features = ["workspace", "sync"] }
39deno_error = "=0.5.2"
40deno_lockfile = "=0.23.2"
41deno_npm = "=0.26.0"
42deno_npm_cache = { version = "0.3.0", path = "./deno/resolvers/npm_cache" }
43deno_resolver = { version = "0.15.0", path = "./deno/resolvers/deno" }
44node_resolver = { version = "0.22.0", path = "./deno/resolvers/node" }
45deno_runtime = { version = "0.192.0", path = "./deno/runtime" }
46deno_permissions = { version = "0.43.0", path = "./deno/runtime/permissions" }
47deno_package_json = { version = "0.2.1", default-features = false }
48deno_path_util = "=0.2.2"
49deno_bench_util = { version = "0.178.0", path = "./deno/bench_util" }
50test_util = { package = "test_server", path = "./deno/tests/util/server" }
51dlopen2 = "0.6.1"
52deno_semver = "=0.6.1"
53deno_terminal = "0.2.0"
54faster-hex = "0.9"
55encoding_rs = "=0.8.33"
56flate2 = { version = "1.0.30", default-features = false }
57fs3 = "0.5.0"
58http = "1.0"
59http-body = "1.0"
60http-body-util = "0.1.2"
61http_v02 = { package = "http", version = "0.2.9" }
62httparse = "1.8.0"
63hyper = { version = "1.4.1", features = ["full"] }
64hyper-rustls = { version = "0.27.2", default-features = false, features = [
65 "http1",
66 "http2",
67 "tls12",
68 "ring",
69] }
70hyper-util = { version = "0.1.10", features = [
71 "tokio",
72 "client",
73 "client-legacy",
74 "server",
75 "server-auto",
76] }
77hyper_v014 = { package = "hyper", version = "0.14.26", features = [
78 "runtime",
79 "http1",
80] }
81indexmap = { version = "2", features = ["serde"] }
82jsonc-parser = { version = "=0.26.2", features = ["serde"] }
83lazy-regex = "3"
84libc = "0.2.168"
85libz-sys = { version = "1.1.20", default-features = false }
86log = { version = "0.4.20", features = ["kv"] }
87lsp-types = "=0.97.0" # used by tower-lsp and "proposed" feature is unstable in patch releases
88memmem = "0.1.1"
89monch = "=0.5.0"
90notify = "=6.1.1"
91num-bigint = { version = "0.4", features = ["rand"] }
92once_cell = "1.17.1"
93os_pipe = { version = "=1.1.5", features = ["io_safety"] }
94p224 = { version = "0.13.0", features = ["ecdh"] }
95p256 = { version = "0.13.2", features = ["ecdh", "jwk"] }
96p384 = { version = "0.13.0", features = ["ecdh", "jwk"] }
97parking_lot = "0.12.0"
98percent-encoding = "2.3.0"
99phf = { version = "0.11", features = ["macros"] }
100pin-project = "1.0.11" # don't pin because they yank crates from cargo
101pretty_assertions = "=1.4.0"
102prost = "0.13"
103prost-build = "0.13"
104rand = "=0.8.5"
105regex = "^1.7.0"
106reqwest = { version = "=0.12.5", default-features = false, features = [
107 # `rustls-tls-native-roots` enables ONLY `hyper-rustls/native-tokio`,
108 # not hyper-rustls's full default-features (which pulls aws-lc-rs and
109 # cmake-based aws-lc-sys that doesn't cross-compile to Android).
110 # Combined with the workspace-level `rustls = features = ["ring"]`
111 # config below, this gives us a ring-based TLS stack everywhere.
112 "rustls-tls-native-roots",
113 "stream",
114 "gzip",
115 "brotli",
116 "socks",
117 "json",
118 "http2",
119] } # pinned because of https://github.com/seanmonstar/reqwest/pull/1955
120ring = "^0.17.0"
121rusqlite = { version = "0.32.0", features = ["unlock_notify", "bundled"] }
122rustls = { version = "0.23.11", default-features = false, features = [
123 "logging",
124 "std",
125 "tls12",
126 "ring",
127] }
128rustls-pemfile = "2"
129rustls-tokio-stream = "=0.3.0"
130rustls-webpki = "0.102"
131rustyline = "=13.0.0"
132saffron = "=0.1.0"
133scopeguard = "1.2.0"
134sec1 = "0.7"
135serde = { version = ">=1.0.149, <1.0.225", features = ["derive"] }
136serde_bytes = "0.11"
137serde_json = "1.0.85"
138serde_repr = "=0.1.19"
139sha1 = { version = "0.10.6", features = ["oid"] }
140sha2 = { version = "0.10.8", features = ["oid"] }
141signature = "2.1"
142smallvec = "1.8"
143socket2 = { version = "0.5.3", features = ["all"] }
144spki = "0.7.2"
145tar = "=0.4.40"
146tempfile = "3.4.0"
147termcolor = "1.1.3"
148thiserror = "2.0.3"
149tokio = { version = "1.36.0", features = ["full"] }
150tokio-metrics = { version = "0.3.0", features = ["rt"] }
151tokio-rustls = { version = "0.26.0", default-features = false, features = [
152 "ring",
153 "tls12",
154] }
155tokio-socks = "0.5.1"
156tokio-util = "0.7.4"
157tower = { version = "0.5.2", default-features = false, features = [
158 "retry",
159 "util",
160] }
161tower-http = { version = "0.6.1", features = [
162 "decompression-br",
163 "decompression-gzip",
164] }
165tower-lsp = { package = "deno_tower_lsp", version = "0.1.0", features = [
166 "proposed",
167] }
168tower-service = "0.3.2"
169tracing = "0.1"
170tracing-subscriber = { version = "0.3", features = ["env-filter"] }
171twox-hash = "=1.6.3"
172url = { version = "2.5", features = ["serde", "expose_internals"] }
173uuid = { version = "1.3.0", features = ["v4"] }
174webpki-root-certs = "0.26.5"
175webpki-roots = "0.26"
176which = "4.2.5"
177yoke = { version = "0.7.4", features = ["derive"] }
178zeromq = { version = "=0.4.1", default-features = false, features = [
179 "tcp-transport",
180 "tokio-runtime",
181] }
182zstd = "=0.12.4"
183aes = "=0.8.3"
184cbc = { version = "=0.1.2", features = ["alloc"] }
185rsa = { version = "0.9.3", default-features = false, features = [
186 "std",
187 "pem",
188 "hazmat",
189] } # hazmat needed for PrehashSigner in ext/node
190bencher = "0.1"
191data-url = "=0.3.1"
192hickory-resolver = { version = "0.25.0-alpha.4", features = [
193 "tokio-runtime",
194 "serde",
195] }
196ipnet = "2.3"
197fast-socks5 = "0.9.6"
198filetime = "0.2.16"
199brotli = "6.0.0"
200
201# unix
202nix = "=0.27.1"
203
204# webgpu
205raw-window-handle = "0.6.0"
206wgpu-core = "0.21.1"
207wgpu-types = "0.20"
208
209
210# windows deps
211junction = "=0.2.0"
212winapi = "=0.3.9"
213winres = "=0.1.12"
214windows-sys = { version = "0.59.0", features = [
215 "Win32_Foundation",
216 "Win32_Media",
217 "Win32_Storage_FileSystem",
218 "Win32_System_IO",
219 "Win32_System_WindowsProgramming",
220 "Wdk",
221 "Wdk_System",
222 "Wdk_System_SystemInformation",
223 "Win32_Security",
224 "Win32_System_Pipes",
225 "Wdk_Storage_FileSystem",
226 "Win32_System_Registry",
227 "Win32_System_Kernel",
228 "Win32_System_Threading",
229 "Win32_UI",
230 "Win32_UI_Shell",
231] }
232
233anyhow = "1.0.57"
234deno_unsync = "0.4.2"
235futures = "0.3.21"
236base32 = "=0.5.1"
237deno_media_type = { version = "0.2.0", features = ["module_specifier"] }
238
239denokv_proto = "0.8.4"
240denokv_remote = "0.8.4"
241# denokv_sqlite brings in bundled sqlite if we don't disable the default features
242denokv_sqlite = { default-features = false, version = "0.8.4" }
243
244fastwebsockets = { version = "0.8", features = ["upgrade", "unstable-split"] }
245glob = "0.3.1"
246h2 = "0.4.4"
247ecb = "=0.1.2"
248hkdf = "0.12.3"
249elliptic-curve = { version = "0.13.4", features = [
250 "alloc",
251 "arithmetic",
252 "ecdh",
253 "std",
254 "pem",
255 "jwk",
256] }
257
258# macros
259quote = "1"
260syn = { version = "2", features = ["full", "extra-traits"] }
261
262# exts
263deno_broadcast_channel = { version = "0.178.0", path = "./deno/ext/broadcast_channel" }
264deno_cache = { version = "0.116.0", path = "./deno/ext/cache" }
265deno_canvas = { version = "0.53.0", path = "./deno/ext/canvas" }
266deno_console = { version = "0.184.0", path = "./deno/ext/console" }
267deno_cron = { version = "0.64.0", path = "./deno/ext/cron" }
268deno_crypto = { version = "0.198.0", path = "./deno/ext/crypto" }
269deno_fetch = { version = "0.208.0", path = "./deno/ext/fetch" }
270deno_ffi = { version = "0.171.0", path = "./deno/ext/ffi" }
271deno_fs = { version = "0.94.0", path = "./deno/ext/fs" }
272deno_http = { version = "0.182.0", path = "./deno/ext/http" }
273deno_io = { version = "0.94.0", path = "./deno/ext/io" }
274deno_kv = { version = "0.92.0", path = "./deno/ext/kv" }
275deno_napi = { version = "0.115.0", path = "./deno/ext/napi" }
276deno_net = { version = "0.176.0", path = "./deno/ext/net" }
277deno_node = { version = "0.122.0", path = "./deno/ext/node" }
278deno_rb = { version = "0.1.0", path = "./deno/ext/rb" }
279deno_telemetry = { version = "0.6.0", path = "./deno/ext/telemetry" }
280deno_tls = { version = "0.171.0", path = "./deno/ext/tls" }
281deno_url = { version = "0.184.0", path = "./deno/ext/url" }
282deno_web = { version = "0.215.0", path = "./deno/ext/web" }
283deno_webgpu = { version = "0.151.0", path = "./deno/ext/webgpu" }
284deno_webidl = { version = "0.184.0", path = "./deno/ext/webidl" }
285deno_websocket = { version = "0.189.0", path = "./deno/ext/websocket" }
286deno_webstorage = { version = "0.179.0", path = "./deno/ext/webstorage" }
287napi_sym = { version = "0.114.0", path = "./deno/ext/napi/sym" }
288
289opentelemetry = "0.27.0"
290opentelemetry-http = "0.27.0"
291opentelemetry-otlp = { version = "0.27.0", features = [
292 "logs",
293 "http-proto",
294 "http-json",
295] }
296opentelemetry-semantic-conventions = { version = "0.27.0", features = [
297 "semconv_experimental",
298] }
299opentelemetry_sdk = "0.27.0"
300
301# Vendored hyper-rustls 0.27.3 with one feature change: default uses `ring`
302# instead of `aws-lc-rs`. aws-lc-rs requires cmake-cross-compile of a C
303# library (aws-lc-sys) which doesn't survive cargo-ndk's flag injection on
304# Android NDK. ring has well-tested Android pre-builts. Desktop builds
305# behave identically (ring is also fine on macOS/Linux).
306[patch.crates-io]
307hyper-rustls = { path = "vendor/hyper-rustls" }
308
309# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html