diff --git a/.github/workflows/cont_integration.yml b/.github/workflows/cont_integration.yml index 8ce57465..f401eb9f 100644 --- a/.github/workflows/cont_integration.yml +++ b/.github/workflows/cont_integration.yml @@ -77,8 +77,12 @@ jobs: run: rustup target add wasm32-unknown-unknown - name: Update toolchain run: rustup update - - name: Check - run: cargo check --target wasm32-unknown-unknown --features async-interface,use-esplora-async,dev-getrandom-wasm --no-default-features + - name: Check bdk + working-directory: ./crates/bdk + run: cargo check --target wasm32-unknown-unknown --features dev-getrandom-wasm + - name: Check esplora + working-directory: ./crates/esplora + run: cargo check --target wasm32-unknown-unknown --features async --no-default-features fmt: name: Rust fmt diff --git a/crates/bdk/Cargo.toml b/crates/bdk/Cargo.toml index 332197da..bc00b6a7 100644 --- a/crates/bdk/Cargo.toml +++ b/crates/bdk/Cargo.toml @@ -39,6 +39,12 @@ keys-bip39 = ["bip39"] hardware-signer = ["hwi"] test-hardware-signer = ["hardware-signer"] + +# This feature is used to run `cargo check` in our CI targeting wasm. It's not recommended +# for libraries to explicitly include the "getrandom/js" feature, so we only do it when +# necessary for running our CI. See: https://docs.rs/getrandom/0.2.8/getrandom/#webassembly-support +dev-getrandom-wasm = ["getrandom/js"] + [dev-dependencies] lazy_static = "1.4" env_logger = "0.7" diff --git a/crates/esplora/Cargo.toml b/crates/esplora/Cargo.toml index 2ab251ea..1cd0d1c0 100644 --- a/crates/esplora/Cargo.toml +++ b/crates/esplora/Cargo.toml @@ -13,4 +13,9 @@ readme = "README.md" [dependencies] bdk_chain = { path = "../chain", version = "0.3.1", features = ["serde", "miniscript"] } -esplora-client = { version = "0.3" } +esplora-client = { version = "0.3", default-features = false } + +[features] +default = ["async", "blocking"] +async = ["esplora-client/async"] +blocking = ["esplora-client/blocking"] diff --git a/crates/esplora/src/lib.rs b/crates/esplora/src/lib.rs index 18e568a0..18ab22b6 100644 --- a/crates/esplora/src/lib.rs +++ b/crates/esplora/src/lib.rs @@ -77,6 +77,7 @@ pub trait EsploraExt { } } +#[cfg(feature = "blocking")] impl EsploraExt for esplora_client::BlockingClient { fn scan( &self, @@ -302,3 +303,18 @@ fn map_confirmation_time(tx_status: &TxStatus, height_at_start: u32) -> Confirma _ => ConfirmationTime::Unconfirmed, } } + +#[cfg(feature = "async")] +impl EsploraExt for esplora_client::AsyncClient { + fn scan( + &self, + _local_chain: &BTreeMap, + _keychain_spks: BTreeMap>, + _txids: impl IntoIterator, + _outpoints: impl IntoIterator, + _stop_gap: usize, + _parallel_requests: usize, + ) -> Result, Error> { + todo!() + } +}