spice-client 0.2.0

A pure Rust SPICE client library with native and WebAssembly support
[badges.maintenance]
status = "actively-developed"

[[bin]]
name = "debug-spice-address"
path = "src/bin/debug_spice_address.rs"

[[bin]]
name = "rusty-spice-gtk"
path = "src/bin/rusty-spice-gtk.rs"
required-features = ["backend-gtk4"]

[[bin]]
name = "spice-e2e-test"
path = "src/bin/spice-e2e-test.rs"

[[bin]]
name = "spice-test-client"
path = "src/bin/spice-test-client.rs"

[dependencies.async-trait]
version = "0.1"

[dependencies.base64]
version = "0.22"

[dependencies.binrw]
version = "0.15"

[dependencies.bytes]
version = "1.10"

[dependencies.chrono]
version = "0.4"

[dependencies.flate2]
version = "1.1"

[dependencies.futures]
version = "0.3"

[dependencies.getrandom]
features = ["wasm_js"]
version = "0.3"

[dependencies.image]
default-features = false
features = ["png", "jpeg", "bmp"]
version = "0.25"

[dependencies.instant]
features = ["wasm-bindgen"]
version = "0.1"

[dependencies.jpeg-decoder]
version = "0.3"

[dependencies.png]
version = "0.17"

[dependencies.rand]
version = "0.8"

[dependencies.rsa]
features = ["sha1"]
version = "0.9"

[dependencies.serde]
features = ["derive"]
version = "1.0"

[dependencies.sha1]
version = "0.10"

[dependencies.thiserror]
version = "2.0"

[dependencies.tracing]
version = "0.1"

[dev-dependencies.async-trait]
version = "0.1"

[dev-dependencies.base64]
version = "0.22"

[dev-dependencies.bincode]
version = "2.0"

[dev-dependencies.criterion]
version = "0.6"

[dev-dependencies.proptest]
version = "1.7"

[dev-dependencies.tokio-test]
version = "0.4"

[dev-dependencies.tracing-subscriber]
features = ["env-filter"]
version = "0.3"

[dev-dependencies.wasm-bindgen-test]
version = "0.3"

[[example]]
name = "basic_client"
path = "examples/basic_client.rs"

[features]
backend-gtk4 = ["dep:gtk4", "dep:gdk4", "dep:gdk-pixbuf", "dep:gstreamer", "dep:gstreamer-audio", "dep:gstreamer-video", "dep:gstreamer-app"]
backend-wasm = []
default = []
test-utils = []

[lib]
crate-type = ["cdylib", "rlib"]
name = "spice_client"
path = "src/lib.rs"

[lints.clippy]
clone_on_copy = "allow"
get_first = "allow"
manual_range_contains = "allow"
missing_docs_in_private_items = "allow"
needless_borrows_for_generic_args = "allow"
redundant_closure = "allow"
redundant_pattern_matching = "allow"
single_match = "allow"
too_many_arguments = "allow"
type_complexity = "allow"
uninlined_format_args = "allow"
useless_vec = "allow"

[lints.rust]
async_fn_in_trait = "allow"
dead_code = "allow"
unused_imports = "allow"
unused_variables = "allow"

[package]
authors = ["Your Name <your.email@example.com>"]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = false
categories = ["network-programming", "wasm", "virtualization"]
description = "A pure Rust SPICE client library with native and WebAssembly support"
documentation = "https://docs.rs/spice-client"
edition = "2021"
exclude = [".github/*", "docker/*", "tests/*", "benches/*", "capture_*.sh", "debug_*.py", "*.zip", "spice-master/*", "PROTOCOL_*.md", "VALIDATION_*.md", "repomix-output.xml"]
homepage = "https://github.com/arsfeld/quickemu-manager"
keywords = ["spice", "remote-desktop", "virtualization", "wasm", "client"]
license = "GPL-3.0"
name = "spice-client"
readme = "README.md"
repository = "https://github.com/arsfeld/quickemu-manager"
version = "0.2.0"

[package.metadata.docs.rs]
all-features = true
targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"]

[package.metadata.wasm-pack]
wasm-opt = false

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.clap]
features = ["derive"]
version = "4.5"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gdk-pixbuf]
optional = true
version = "0.20"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gdk4]
optional = true
version = "0.9"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gstreamer]
optional = true
version = "0.23"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gstreamer-app]
optional = true
version = "0.23"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gstreamer-audio]
optional = true
version = "0.23"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gstreamer-video]
optional = true
version = "0.23"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gtk4]
optional = true
version = "0.9"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.lz4]
version = "1.28"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
features = ["full"]
version = "1.46"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tracing-subscriber]
features = ["env-filter"]
version = "0.3"

[target.'cfg(target_arch = "wasm32")'.dependencies.console_error_panic_hook]
version = "0.1"

[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom]
features = ["js"]
version = "0.2"

[target.'cfg(target_arch = "wasm32")'.dependencies.gloo-timers]
features = ["futures"]
version = "0.3"

[target.'cfg(target_arch = "wasm32")'.dependencies.js-sys]
version = "0.3"

[target.'cfg(target_arch = "wasm32")'.dependencies.tokio]
default-features = false
features = ["sync", "macros", "time", "io-util"]
version = "1.46"

[target.'cfg(target_arch = "wasm32")'.dependencies.tracing-wasm]
version = "0.2"

[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen]
version = "0.2"

[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen-futures]
version = "0.4"

[target.'cfg(target_arch = "wasm32")'.dependencies.web-sys]
features = ["console", "WebSocket", "MessageEvent", "ErrorEvent", "CloseEvent", "BinaryType", "Window", "Document", "Element", "HtmlCanvasElement", "CanvasRenderingContext2d", "ImageData", "HtmlVideoElement", "MediaSource", "SourceBuffer", "Url", "Performance", "CssStyleDeclaration"]
version = "0.3"