[package] name = "solitaire_engine" version.workspace = true license.workspace = true edition.workspace = true [dependencies] bevy = { workspace = true } image = { workspace = true } solitaire_core = { workspace = true } solitaire_data = { workspace = true } solitaire_sync = { workspace = true } chrono = { workspace = true } uuid = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } thiserror = { workspace = true } usvg = { workspace = true } resvg = { workspace = true } tiny-skia = { workspace = true } ron = { workspace = true } # These deps are not available / not needed on wasm32: # reqwest — uses mio/hyper native networking (sync plugin is gated out) # kira — uses cpal OS audio (audio plugin is gated out) # tokio — multi-threaded runtime (TokioRuntimeResource is gated out) # dirs — platform data directories (storage uses WasmStorage instead) # zip — theme ZIP importer (importer is gated out on wasm32) # arboard — clipboard (no wasm backend; stats copy-link uses localStorage) [target.'cfg(not(target_arch = "wasm32"))'.dependencies] reqwest = { workspace = true } kira = { workspace = true } tokio = { workspace = true } dirs = { workspace = true } zip = { workspace = true } # `arboard` has no Android backend and no wasm32 backend. Gate it out for # both; the copy-share-link button surfaces an informational toast instead. [target.'cfg(all(not(target_os = "android"), not(target_arch = "wasm32")))'.dependencies] arboard = { workspace = true } [target.'cfg(target_os = "android")'.dependencies] jni = { workspace = true } [target.'cfg(target_arch = "wasm32")'.dependencies] base64 = "0.22" getrandom = { version = "0.3", features = ["wasm_js"] } wasm-bindgen = "0.2" web-sys = { version = "0.3", features = ["Storage", "Window"] } [dev-dependencies] async-trait = { workspace = true } tempfile = { workspace = true } solitaire_core = { workspace = true, features = ["test-support"] }