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
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"
[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"]
}
}
+#[cfg(feature = "blocking")]
impl EsploraExt for esplora_client::BlockingClient {
fn scan<K: Ord + Clone>(
&self,
_ => ConfirmationTime::Unconfirmed,
}
}
+
+#[cfg(feature = "async")]
+impl EsploraExt for esplora_client::AsyncClient {
+ fn scan<K: Ord + Clone>(
+ &self,
+ _local_chain: &BTreeMap<u32, BlockHash>,
+ _keychain_spks: BTreeMap<K, impl IntoIterator<Item = (u32, Script)>>,
+ _txids: impl IntoIterator<Item = Txid>,
+ _outpoints: impl IntoIterator<Item = OutPoint>,
+ _stop_gap: usize,
+ _parallel_requests: usize,
+ ) -> Result<KeychainScan<K, ConfirmationTime>, Error> {
+ todo!()
+ }
+}