diff --git a/Cargo.toml b/Cargo.toml index 6632834..9cbb291 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,25 +6,26 @@ edition = "2021" [lib] crate-type = ["cdylib", "rlib"] +[features] +default = ["sp_client/blindbit-native"] +wasm = ["dep:js-sys", "dep:serde-wasm-bindgen", "sp_client/blindbit-wasm"] + [dependencies] aes-gcm = "0.10.3" anyhow = "1.0" -js-sys = "0.3.69" env_logger = "0.9" log = "0.4.6" rand = "0.8.5" serde = { version = "1.0.193", features = ["derive"] } serde_json = { version = "1.0.108" } -serde-wasm-bindgen = "0.6.5" -# sp_client = { path = "../sp-client", features = ["blindbit-backend"] } -sp_client = { git = "https://github.com/cygnet3/sp-client.git", branch = "wasm_compatibility" ,features = ["blindbit-backend"]} -tsify = { git = "https://github.com/Sosthene00/tsify", branch = "next" } -wasm-bindgen = "0.2.91" rs_merkle = "1.4.2" zstd = "0.13.3" - -[target.'cfg(target_arch = "wasm32")'.dependencies] getrandom = { version = "0.2", features = ["js"] } +tsify = { git = "https://github.com/Sosthene00/tsify", branch = "next" } +wasm-bindgen = "0.2.91" -[target.'cfg(not(target_arch = "wasm32"))'.dependencies] -getrandom = { version = "0.2" } +# WASM-specific dependencies (optional) +js-sys = { version = "0.3.69", optional = true } +serde-wasm-bindgen = { version = "0.6.5", optional = true } + +sp_client = { path = "../sp-client", default-features = false } diff --git a/src/device.rs b/src/device.rs index 713daa7..12ab26d 100644 --- a/src/device.rs +++ b/src/device.rs @@ -15,8 +15,9 @@ use sp_client::{ use crate::{pcd::Member, silentpayments::SpWallet}; -#[derive(Debug, Serialize, Deserialize, Clone, Default, Tsify)] -#[tsify(into_wasm_abi, from_wasm_abi)] +#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "wasm", derive(Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct Device { sp_wallet: SpWallet, pairing_process_commitment: Option, diff --git a/src/lib.rs b/src/lib.rs index 5660264..e503ed7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,17 +4,21 @@ use std::sync::{Mutex, MutexGuard}; pub use aes_gcm; pub use env_logger; -pub use js_sys; pub use log; pub use rand; pub use serde; pub use serde_json; -pub use serde_wasm_bindgen; pub use sp_client; pub use tsify; pub use wasm_bindgen; pub use zstd; +// WASM-specific re-exports only when wasm feature is enabled +#[cfg(feature = "wasm")] +pub use js_sys; +#[cfg(feature = "wasm")] +pub use serde_wasm_bindgen; + pub mod crypto; pub mod device; pub mod error; diff --git a/src/pcd.rs b/src/pcd.rs index 374d5c6..e717cb8 100644 --- a/src/pcd.rs +++ b/src/pcd.rs @@ -222,8 +222,9 @@ impl Member { } } -#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Tsify)] -#[tsify(into_wasm_abi, from_wasm_abi)] +#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)] +#[cfg_attr(feature = "wasm", derive(Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct Pcd(BTreeMap>); impl IntoIterator for Pcd { diff --git a/src/serialization.rs b/src/serialization.rs index 2997daf..bd3fe9b 100644 --- a/src/serialization.rs +++ b/src/serialization.rs @@ -1,6 +1,6 @@ use crate::{pcd::Member, process::Process}; use serde::de::Error; -use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; use sp_client::bitcoin::hex::{DisplayHex, FromHex}; use sp_client::bitcoin::OutPoint; use std::collections::{BTreeMap, HashMap};