ソースを参照

improve: 'cashu-sdk-js' use gloo client

thesimplekid 1 年間 前
コミット
0cec20a2f9

+ 2 - 0
bindings/cashu-js/.cargo/config.toml

@@ -0,0 +1,2 @@
+[build]
+target = "wasm32-unknown-unknown"

+ 2 - 0
bindings/cashu-sdk-js/.cargo/config.toml

@@ -0,0 +1,2 @@
+[build]
+target = "wasm32-unknown-unknown"

+ 0 - 148
bindings/cashu-sdk-js/src/client.rs

@@ -1,148 +0,0 @@
-use std::ops::Deref;
-
-use cashu_js::nuts::nut00::JsBlindedMessages;
-use cashu_js::nuts::nut01::JsKeys;
-use cashu_js::nuts::nut02::JsKeySetsResponse;
-use cashu_js::nuts::nut03::JsRequestMintResponse;
-use cashu_js::nuts::nut04::JsPostMintResponse;
-use cashu_js::nuts::nut05::JsCheckFeesResponse;
-use cashu_js::nuts::nut06::{JsSplitRequest, JsSplitResponse};
-#[cfg(feature = "nut07")]
-use cashu_js::nuts::nut07::JsCheckSpendableResponse;
-use cashu_js::nuts::nut08::JsMeltResponse;
-#[cfg(feature = "nut09")]
-use cashu_js::nuts::nut09::JsMintInfo;
-use cashu_js::{JsAmount, JsBolt11Invoice};
-use cashu_sdk::client::Client;
-use wasm_bindgen::prelude::*;
-
-use crate::error::{into_err, Result};
-
-#[wasm_bindgen(js_name = Client)]
-pub struct JsClient {
-    inner: Client,
-}
-
-impl Deref for JsClient {
-    type Target = Client;
-    fn deref(&self) -> &Self::Target {
-        &self.inner
-    }
-}
-
-impl From<Client> for JsClient {
-    fn from(inner: Client) -> JsClient {
-        JsClient { inner }
-    }
-}
-
-#[wasm_bindgen(js_class = Client)]
-impl JsClient {
-    #[wasm_bindgen(constructor)]
-    pub fn new(mint_url: String) -> Result<JsClient> {
-        Ok(JsClient {
-            inner: Client::new(&mint_url).map_err(into_err)?,
-        })
-    }
-
-    /// Get Keys [NUT-01]
-    #[wasm_bindgen(js_name = getKeys)]
-    pub async fn get_keys(&self) -> Result<JsKeys> {
-        Ok(self.inner.get_keys().await.map_err(into_err)?.into())
-    }
-
-    /// Get Keys [NUT-01]
-    #[wasm_bindgen(js_name = getKeysets)]
-    pub async fn get_keysets(&self) -> Result<JsKeySetsResponse> {
-        Ok(self.inner.get_keysets().await.map_err(into_err)?.into())
-    }
-
-    /// Request Mint [NUT-03]
-    #[wasm_bindgen(js_name = requestMint)]
-    pub async fn request_mint(&self, amount: JsAmount) -> Result<JsRequestMintResponse> {
-        Ok(self
-            .inner
-            .request_mint(*amount.deref())
-            .await
-            .map_err(into_err)?
-            .into())
-    }
-
-    /// Mint [NUT-04]
-    #[wasm_bindgen(js_name = mint)]
-    pub async fn mint(
-        &self,
-        blinded_messages: JsBlindedMessages,
-        hash: String,
-    ) -> Result<JsPostMintResponse> {
-        Ok(self
-            .inner
-            .mint(blinded_messages.deref().clone(), &hash)
-            .await
-            .map_err(into_err)?
-            .into())
-    }
-
-    /// Check Max expected fee [NUT-05]
-    #[wasm_bindgen(js_name = check_fees)]
-    pub async fn check_fees(&self, invoice: JsBolt11Invoice) -> Result<JsCheckFeesResponse> {
-        Ok(self
-            .inner
-            .check_fees(invoice.deref().clone())
-            .await
-            .map_err(into_err)?
-            .into())
-    }
-
-    /// Melt [NUT-05]
-    #[wasm_bindgen(js_name = melt)]
-    pub async fn melt(
-        &self,
-        proofs: JsValue,
-        invoice: JsBolt11Invoice,
-        outputs: JsValue,
-    ) -> Result<JsMeltResponse> {
-        let proofs = serde_wasm_bindgen::from_value(proofs).map_err(into_err)?;
-        let outputs = if outputs.is_null() {
-            None
-        } else {
-            Some(serde_wasm_bindgen::from_value(outputs).map_err(into_err)?)
-        };
-        Ok(self
-            .inner
-            .melt(proofs, invoice.deref().clone(), outputs)
-            .await
-            .map_err(into_err)?
-            .into())
-    }
-
-    /// Split [NUT-06]
-    #[wasm_bindgen(js_name = split)]
-    pub async fn split(&self, split_request: JsSplitRequest) -> Result<JsSplitResponse> {
-        Ok(self
-            .inner
-            .split(split_request.deref().clone())
-            .await
-            .map_err(into_err)?
-            .into())
-    }
-
-    #[cfg(feature = "nut07")]
-    #[wasm_bindgen(js_name = checkSpendable)]
-    pub async fn check_spendable(&self, proofs: JsValue) -> Result<JsCheckSpendableResponse> {
-        let proofs = serde_wasm_bindgen::from_value(proofs).map_err(into_err)?;
-
-        Ok(self
-            .inner
-            .check_spendable(&proofs)
-            .await
-            .map_err(into_err)?
-            .into())
-    }
-
-    #[cfg(feature = "nut09")]
-    #[wasm_bindgen(js_name = getInfo)]
-    pub async fn get_info(&self) -> Result<JsMintInfo> {
-        Ok(self.inner.get_info().await.map_err(into_err)?.into())
-    }
-}

+ 0 - 2
bindings/cashu-sdk-js/src/lib.rs

@@ -1,9 +1,7 @@
-mod client;
 mod error;
 mod mint;
 mod types;
 mod wallet;
 
-pub use client::JsClient;
 pub use mint::JsMint;
 pub use wallet::JsWallet;

+ 8 - 7
bindings/cashu-sdk-js/src/wallet.rs

@@ -6,27 +6,27 @@ use cashu_js::nuts::nut03::JsRequestMintResponse;
 #[cfg(feature = "nut07")]
 use cashu_js::JsProofsStatus;
 use cashu_js::{JsAmount, JsBolt11Invoice};
+use cashu_sdk::client::gloo_client::HttpClient;
 use cashu_sdk::wallet::Wallet;
 use wasm_bindgen::prelude::*;
 
 use crate::error::{into_err, Result};
 use crate::types::{JsMelted, JsSendProofs};
-use crate::JsClient;
 
 #[wasm_bindgen(js_name = Wallet)]
 pub struct JsWallet {
-    inner: Wallet,
+    inner: Wallet<HttpClient>,
 }
 
 impl Deref for JsWallet {
-    type Target = Wallet;
+    type Target = Wallet<HttpClient>;
     fn deref(&self) -> &Self::Target {
         &self.inner
     }
 }
 
-impl From<Wallet> for JsWallet {
-    fn from(inner: Wallet) -> JsWallet {
+impl From<Wallet<HttpClient>> for JsWallet {
+    fn from(inner: Wallet<HttpClient>) -> JsWallet {
         JsWallet { inner }
     }
 }
@@ -34,9 +34,10 @@ impl From<Wallet> for JsWallet {
 #[wasm_bindgen(js_class = Wallet)]
 impl JsWallet {
     #[wasm_bindgen(constructor)]
-    pub fn new(client: JsClient, mint_keys: JsKeys) -> JsWallet {
+    pub fn new(mint_url: String, mint_keys: JsKeys) -> JsWallet {
+        let client = HttpClient {};
         JsWallet {
-            inner: Wallet::new(client.deref().clone(), mint_keys.deref().clone()),
+            inner: Wallet::new(client, mint_url.into(), mint_keys.deref().clone()),
         }
     }