[package] name = "buttplug" version = "9.0.4" authors = ["Nonpolynomial Labs, LLC "] description = "Buttplug Intimate Hardware Control Library" license = "BSD-3-Clause" homepage = "http://buttplug.io" repository = "https://github.com/buttplugio/buttplug.git" readme = "./README.md" keywords = ["usb", "serial", "hardware", "bluetooth", "teledildonics"] edition = "2021" exclude = ["examples/**"] [lib] name = "buttplug" path = "src/lib.rs" test = true doctest = true doc = true crate-type = ["cdylib", "rlib"] # Only build docs on one platform (linux) [package.metadata.docs.rs] targets = [] # Features to pass to Cargo (default: []) features = ["default", "unstable"] [features] # Basic features default=["tokio-runtime", "jsonschema/resolve-file", "client", "server", "serialize-json", "websockets", "btleplug-manager", "xinput-manager", "serial-manager", "hid-manager", "lovense-dongle-manager", "lovense-connect-service-manager", "websocket-server-manager"] client=[] server=[] serialize-json=[] # Connectors websockets=["serialize-json", "tokio-tungstenite", "rustls"] # Device Communication Managers xinput-manager=["server"] btleplug-manager=["server", "btleplug"] serial-manager=["server", "serialport"] hid-manager=["server", "hidapi"] lovense-dongle-manager=["server", "serialport", "hidapi"] lovense-connect-service-manager=["server","reqwest"] websocket-server-manager=["server", "websockets"] # Runtime managers tokio-runtime=[] wasm-bindgen-runtime=[] wasm = ["server", "wasm-bindgen-runtime", "serialize-json", "uuid/js"] dummy-runtime=[] # Compiler config unstable=[] allow-unstable-v4-connections=[] [dependencies] buttplug_derive = "0.8.1" # buttplug_derive = { path = "../buttplug_derive" } futures = "0.3.31" futures-util = "0.3.31" async-trait = "0.1.83" serde = { version = "1.0.210", features = ["derive"] } serde_json = "1.0.128" serde_repr = "0.1.19" uuid = { version = "1.10.0", features = ["serde"] } url = "2.5.2" btleplug = { version = "0.11.6", optional = true } # btleplug = { path = "../../btleplug", optional = true} # btleplug = { git = 'https://github.com/deviceplug/btleplug', branch = 'master', optional = true } strum_macros = "0.26.4" strum = "0.26.3" once_cell = "1.20.2" paste = "1.0.15" lazy_static = "1.5.0" byteorder = "1.5.0" thiserror = "1.0.64" cfg-if = "1.0.0" tracing = "0.1.40" tracing-futures = "0.2.5" tracing-subscriber = { version = "0.3.18", features = ["json"] } dashmap = { version = "6.1.0", features = ["serde"] } displaydoc = "0.2.5" tokio = { version = "1.40.0", features = ["sync", "macros", "io-util"] } async-stream = "0.3.6" prost = "0.13.3" tokio-util = "0.7.12" reqwest = { version = "0.12.8", default-features = false, optional = true, features = ["rustls-tls"] } serde-aux = "4.5.0" getset = "0.1.3" os_info = "3.8.2" ahash = "0.8.11" jsonschema = { version = "0.22.3", default-features = false } derivative = "2.2.0" tokio-stream = "0.1.16" instant = "0.1.13" regex = "1.11.0" tokio-tungstenite = { version = "0.24.0", features = ["rustls-tls-webpki-roots", "url"], optional = true } # This needs to follow whatever tokio-tungstenite and reqwest expects. Right now that's 0.22, not # 0.23. Remember to check in the future. rustls = { version = "0.23.14", optional = true, default-features = false, features = ["ring"]} aes = { version = "0.8.4" } ecb = { version = "0.1.2", features = ["std"] } rand = { version = "0.8.5" } sha2 = { version = "0.10.8", features = ["std"] } [dev-dependencies] serde_yaml = "0.9.34" test-case = "3.3.1" tokio = { version = "1.40.0", features = ["io-std", "rt"] } tracing-log = { version = "0.2.0" } tokio-test = "0.4.4" [build-dependencies] prost-build = "0.13.3" [target.'cfg(target_os = "windows")'.dependencies] rusty-xinput = "1.3.0" windows = { version = "0.57.0", features = ["Devices_Bluetooth", "Foundation"] } serialport = { version = "4.5.1", optional = true } # Linux hidraw is needed here in order to work with the lovense dongle. libusb breaks it on linux. # Other platforms are not affected by the feature changes. hidapi = { version = "2.6.3", default-features = false, features = ["linux-static-hidraw", "illumos-static-libusb"], optional = true } [target.'cfg(target_os = "linux")'.dependencies] serialport = { version = "4.5.1", optional = true } # Linux hidraw is needed here in order to work with the lovense dongle. libusb breaks it on linux. # Other platforms are not affected by the feature changes. hidapi = { version = "2.6.3", default-features = false, features = ["linux-static-hidraw", "illumos-static-libusb"], optional = true } [target.'cfg(target_os = "macos")'.dependencies] serialport = { version = "4.5.1", optional = true } # Linux hidraw is needed here in order to work with the lovense dongle. libusb breaks it on linux. # Other platforms are not affected by the feature changes. hidapi = { version = "2.6.3", default-features = false, features = ["linux-static-hidraw", "illumos-static-libusb"], optional = true } [target.wasm32-unknown-unknown.dependencies] wasm-bindgen = { version = "0.2.93", features = ["serde-serialize"] } wasm-bindgen-futures = { version = "0.4.43" } wasmtimer = { version = "0.2.0" } [dependencies.web-sys] version = "0.3.70" # path = "../../wasm-bindgen/crates/web-sys" #git = "https://github.com/rustwasm/wasm-bindgen" optional = true features = [ "Navigator", "Bluetooth", "BluetoothDevice", "BluetoothLeScanFilterInit", "BluetoothRemoteGattCharacteristic", "BluetoothRemoteGattServer", "BluetoothRemoteGattService", "BinaryType", "Blob", "console", "ErrorEvent", "Event", "FileReader", "MessageEvent", "ProgressEvent", "RequestDeviceOptions", "WebSocket", "Window" ]