From 2c5aa7205ac0940bf9719675757166b6dd54771d Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Mon, 25 Sep 2023 21:21:37 +0100 Subject: [PATCH] `bindings/cashu-js` clippy --- bindings/cashu-js/src/nuts/mod.rs | 1 + .../src/nuts/nut00/blinded_message.rs | 2 +- .../src/nuts/nut00/blinded_signature.rs | 4 +- bindings/cashu-js/src/nuts/nut00/proof.rs | 2 +- bindings/cashu-js/src/nuts/nut00/token.rs | 2 +- bindings/cashu-js/src/nuts/nut01/keys.rs | 2 +- bindings/cashu-js/src/nuts/nut02/keyset.rs | 2 +- bindings/cashu-js/src/nuts/nut04.rs | 4 +- bindings/cashu-js/src/nuts/nut05.rs | 2 +- bindings/cashu-js/src/nuts/nut06.rs | 6 +- bindings/cashu-js/src/nuts/nut07.rs | 2 +- bindings/cashu-js/src/nuts/nut08.rs | 8 +- bindings/cashu-js/src/nuts/nut09.rs | 143 ++++++++++++++++++ bindings/cashu-js/src/types/bolt11_invoice.rs | 4 +- bindings/cashu-js/src/types/secret.rs | 6 + 15 files changed, 169 insertions(+), 21 deletions(-) create mode 100644 bindings/cashu-js/src/nuts/nut09.rs diff --git a/bindings/cashu-js/src/nuts/mod.rs b/bindings/cashu-js/src/nuts/mod.rs index 0bea4856..802e1042 100644 --- a/bindings/cashu-js/src/nuts/mod.rs +++ b/bindings/cashu-js/src/nuts/mod.rs @@ -7,3 +7,4 @@ mod nut05; mod nut06; mod nut07; mod nut08; +mod nut09; diff --git a/bindings/cashu-js/src/nuts/nut00/blinded_message.rs b/bindings/cashu-js/src/nuts/nut00/blinded_message.rs index d9f50c58..c4a16f94 100644 --- a/bindings/cashu-js/src/nuts/nut00/blinded_message.rs +++ b/bindings/cashu-js/src/nuts/nut00/blinded_message.rs @@ -31,7 +31,7 @@ impl JsBlindedMessage { pub fn new(amount: JsAmount, b: JsPublicKey) -> Self { Self { inner: BlindedMessage { - amount: amount.deref().clone(), + amount: *amount.deref(), b: b.deref().clone(), }, } diff --git a/bindings/cashu-js/src/nuts/nut00/blinded_signature.rs b/bindings/cashu-js/src/nuts/nut00/blinded_signature.rs index 9ca2c9b4..a6e22f0e 100644 --- a/bindings/cashu-js/src/nuts/nut00/blinded_signature.rs +++ b/bindings/cashu-js/src/nuts/nut00/blinded_signature.rs @@ -24,8 +24,8 @@ impl JsBlindedSignature { pub fn new(id: JsId, amount: JsAmount, c: JsPublicKey) -> Self { Self { inner: BlindedSignature { - id: id.deref().clone(), - amount: amount.deref().clone(), + id: *id.deref(), + amount: *amount.deref(), c: c.deref().clone(), }, } diff --git a/bindings/cashu-js/src/nuts/nut00/proof.rs b/bindings/cashu-js/src/nuts/nut00/proof.rs index 85a5a9d2..0d747d3e 100644 --- a/bindings/cashu-js/src/nuts/nut00/proof.rs +++ b/bindings/cashu-js/src/nuts/nut00/proof.rs @@ -29,7 +29,7 @@ impl JsProof { pub fn new(amount: JsAmount, secret: JsSecret, c: JsPublicKey, id: Option) -> JsProof { Self { inner: Proof { - amount: amount.deref().clone(), + amount: *amount.deref(), secret: secret.deref().clone(), c: c.deref().clone(), id: id.map(|i| *i.deref()), diff --git a/bindings/cashu-js/src/nuts/nut00/token.rs b/bindings/cashu-js/src/nuts/nut00/token.rs index 52b851ca..728ef913 100644 --- a/bindings/cashu-js/src/nuts/nut00/token.rs +++ b/bindings/cashu-js/src/nuts/nut00/token.rs @@ -52,7 +52,7 @@ impl JsToken { /// As String #[wasm_bindgen(js_name = asString)] pub fn as_string(&self) -> Result { - Ok(self.inner.convert_to_string().map_err(into_err)?) + self.inner.convert_to_string().map_err(into_err) } // TODO: Getter mint proofs diff --git a/bindings/cashu-js/src/nuts/nut01/keys.rs b/bindings/cashu-js/src/nuts/nut01/keys.rs index 97e1026f..978c8295 100644 --- a/bindings/cashu-js/src/nuts/nut01/keys.rs +++ b/bindings/cashu-js/src/nuts/nut01/keys.rs @@ -43,7 +43,7 @@ impl JsKeys { /// Keys #[wasm_bindgen(js_name = keys)] pub fn keys(&self) -> Result { - Ok(serde_json::to_string(&self.inner.keys()).map_err(into_err)?) + serde_json::to_string(&self.inner.keys()).map_err(into_err) } /// Amount Key diff --git a/bindings/cashu-js/src/nuts/nut02/keyset.rs b/bindings/cashu-js/src/nuts/nut02/keyset.rs index 8eed9a39..ffaac1d1 100644 --- a/bindings/cashu-js/src/nuts/nut02/keyset.rs +++ b/bindings/cashu-js/src/nuts/nut02/keyset.rs @@ -77,7 +77,7 @@ impl JsKeySet { #[wasm_bindgen(getter)] pub fn id(&self) -> JsId { - self.inner.id.clone().into() + self.inner.id.into() } #[wasm_bindgen(getter)] diff --git a/bindings/cashu-js/src/nuts/nut04.rs b/bindings/cashu-js/src/nuts/nut04.rs index ddfcbccd..8ea20a91 100644 --- a/bindings/cashu-js/src/nuts/nut04.rs +++ b/bindings/cashu-js/src/nuts/nut04.rs @@ -39,7 +39,7 @@ impl JsMintRequest { #[wasm_bindgen(getter)] pub fn outputs(&self) -> Result { - Ok(serde_json::to_string(&self.inner.outputs).map_err(into_err)?) + serde_json::to_string(&self.inner.outputs).map_err(into_err) } #[wasm_bindgen(js_name = totalAmount)] @@ -79,6 +79,6 @@ impl JsPostMintResponse { #[wasm_bindgen(getter)] pub fn promises(&self) -> Result { - Ok(serde_json::to_string(&self.inner.promises).map_err(into_err)?) + serde_json::to_string(&self.inner.promises).map_err(into_err) } } diff --git a/bindings/cashu-js/src/nuts/nut05.rs b/bindings/cashu-js/src/nuts/nut05.rs index fb5a7fe3..cd63b9c8 100644 --- a/bindings/cashu-js/src/nuts/nut05.rs +++ b/bindings/cashu-js/src/nuts/nut05.rs @@ -32,7 +32,7 @@ impl JsCheckFeesRequest { pub fn new(invoice: JsBolt11Invoice) -> Result { Ok(JsCheckFeesRequest { inner: CheckFeesRequest { - pr: invoice.clone().into(), + pr: invoice.clone(), }, }) } diff --git a/bindings/cashu-js/src/nuts/nut06.rs b/bindings/cashu-js/src/nuts/nut06.rs index 1790e076..e9749450 100644 --- a/bindings/cashu-js/src/nuts/nut06.rs +++ b/bindings/cashu-js/src/nuts/nut06.rs @@ -45,13 +45,13 @@ impl JsSplitRequest { /// Get Proofs #[wasm_bindgen(getter)] pub fn proofs(&self) -> Result { - Ok(serde_json::to_string(&self.inner.proofs).map_err(into_err)?) + serde_json::to_string(&self.inner.proofs).map_err(into_err) } /// Get Outputs #[wasm_bindgen(getter)] pub fn outputs(&self) -> Result { - Ok(serde_json::to_string(&self.inner.outputs).map_err(into_err)?) + serde_json::to_string(&self.inner.outputs).map_err(into_err) } /// Proofs Amount @@ -103,7 +103,7 @@ impl JsSplitResponse { /// Get Promises #[wasm_bindgen(getter)] pub fn promises(&self) -> Result { - Ok(serde_json::to_string(&self.inner.promises).map_err(into_err)?) + serde_json::to_string(&self.inner.promises).map_err(into_err) } /// Promises Amount diff --git a/bindings/cashu-js/src/nuts/nut07.rs b/bindings/cashu-js/src/nuts/nut07.rs index 1e91bc19..2ba4516e 100644 --- a/bindings/cashu-js/src/nuts/nut07.rs +++ b/bindings/cashu-js/src/nuts/nut07.rs @@ -39,7 +39,7 @@ impl JsCheckSpendableRequest { #[wasm_bindgen(getter)] // REVIEW: INTO Serde pub fn proofs(&self) -> Result { - Ok(serde_json::to_string(&self.inner.proofs).map_err(into_err)?) + serde_json::to_string(&self.inner.proofs).map_err(into_err) } } diff --git a/bindings/cashu-js/src/nuts/nut08.rs b/bindings/cashu-js/src/nuts/nut08.rs index c2cd2e81..56205938 100644 --- a/bindings/cashu-js/src/nuts/nut08.rs +++ b/bindings/cashu-js/src/nuts/nut08.rs @@ -56,7 +56,7 @@ impl JsMeltRequest { /// Get Proofs #[wasm_bindgen(getter)] pub fn proofs(&self) -> Result { - Ok(serde_wasm_bindgen::to_value(&self.inner.proofs).map_err(into_err)?) + serde_wasm_bindgen::to_value(&self.inner.proofs).map_err(into_err) } /// Get Invoice @@ -68,7 +68,7 @@ impl JsMeltRequest { /// Get outputs #[wasm_bindgen(getter)] pub fn outputs(&self) -> Result { - Ok(serde_wasm_bindgen::to_value(&self.inner.outputs).map_err(into_err)?) + serde_wasm_bindgen::to_value(&self.inner.outputs).map_err(into_err) } } @@ -124,11 +124,11 @@ impl JsMeltResponse { /// Get Change #[wasm_bindgen(getter)] pub fn change(&self) -> Result { - Ok(serde_wasm_bindgen::to_value(&self.inner.change).map_err(into_err)?) + serde_wasm_bindgen::to_value(&self.inner.change).map_err(into_err) } /// Change Amount - #[wasm_bindgen(js_name = "cahngeAmount")] + #[wasm_bindgen(js_name = "changeAmount")] pub fn change_amount(&self) -> JsAmount { self.inner.change_amount().into() } diff --git a/bindings/cashu-js/src/nuts/nut09.rs b/bindings/cashu-js/src/nuts/nut09.rs new file mode 100644 index 00000000..77dabab6 --- /dev/null +++ b/bindings/cashu-js/src/nuts/nut09.rs @@ -0,0 +1,143 @@ +use std::ops::Deref; + +use cashu::nuts::nut09::{MintInfo, MintVersion}; +use wasm_bindgen::prelude::*; + +use crate::error::{into_err, Result}; + +use super::nut01::JsPublicKey; + +#[wasm_bindgen(js_name = MintVersion)] +pub struct JsMintVersion { + inner: MintVersion, +} + +impl Deref for JsMintVersion { + type Target = MintVersion; + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl From for JsMintVersion { + fn from(inner: MintVersion) -> JsMintVersion { + JsMintVersion { inner } + } +} + +#[wasm_bindgen(js_class = MintVersion)] +impl JsMintVersion { + #[wasm_bindgen(constructor)] + pub fn new(name: String, version: String) -> Result { + Ok(JsMintVersion { + inner: MintVersion { name, version }, + }) + } + + /// Get Name + #[wasm_bindgen(getter)] + pub fn name(&self) -> String { + self.inner.name.clone() + } + + /// Get Name + #[wasm_bindgen(getter)] + pub fn version(&self) -> String { + self.inner.version.clone() + } +} + +#[wasm_bindgen(js_name = MintVersion)] +pub struct JsMintInfo { + inner: MintInfo, +} + +impl Deref for JsMintInfo { + type Target = MintInfo; + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl From for JsMintInfo { + fn from(inner: MintInfo) -> JsMintInfo { + JsMintInfo { inner } + } +} + +#[wasm_bindgen(js_class = MintVersion)] +impl JsMintInfo { + #[wasm_bindgen(constructor)] + #[allow(clippy::too_many_arguments)] + pub fn new( + name: Option, + pubkey: Option, + version: Option, + description: Option, + description_long: Option, + contact: JsValue, + nuts: JsValue, + motd: Option, + ) -> Result { + Ok(JsMintInfo { + inner: MintInfo { + name, + pubkey: pubkey.map(|p| p.deref().clone()), + version: version.map(|v| v.deref().clone()), + description, + description_long, + contact: serde_wasm_bindgen::from_value(contact).map_err(into_err)?, + nuts: serde_wasm_bindgen::from_value(nuts).map_err(into_err)?, + motd, + }, + }) + } + + /// Get Name + #[wasm_bindgen(getter)] + pub fn name(&self) -> Option { + self.inner.name.clone() + } + + /// Get Pubkey + #[wasm_bindgen(getter)] + pub fn pubkey(&self) -> Option { + self.inner.pubkey.clone().map(|p| p.into()) + } + + /// Get Name + #[wasm_bindgen(getter)] + pub fn version(&self) -> Option { + self.inner.version.clone().map(|v| v.into()) + } + + /// Get description + #[wasm_bindgen(getter)] + pub fn description(&self) -> Option { + self.inner.description.clone() + } + + /// Get description long + #[wasm_bindgen(getter)] + pub fn description_long(&self) -> Option { + self.inner.description_long.clone() + } + + /// Get contact + #[wasm_bindgen(getter)] + pub fn contact(&self) -> Result { + serde_wasm_bindgen::to_value(&self.inner.contact).map_err(into_err) + } + + /// Get supported nuts + #[wasm_bindgen(getter)] + pub fn nuts(&self) -> Result { + serde_wasm_bindgen::to_value(&self.inner.nuts).map_err(into_err) + } + + /// Get motd + #[wasm_bindgen(getter)] + pub fn motd(&self) -> Option { + self.inner.motd.clone() + } +} diff --git a/bindings/cashu-js/src/types/bolt11_invoice.rs b/bindings/cashu-js/src/types/bolt11_invoice.rs index d587e27b..17156cb6 100644 --- a/bindings/cashu-js/src/types/bolt11_invoice.rs +++ b/bindings/cashu-js/src/types/bolt11_invoice.rs @@ -36,9 +36,7 @@ impl JsBolt11Invoice { /// Amount #[wasm_bindgen(getter)] pub fn amount(&self) -> Option { - self.inner - .amount_milli_satoshis() - .map(|a| JsAmount::from_msat(a)) + self.inner.amount_milli_satoshis().map(JsAmount::from_msat) } /// Invoice as string diff --git a/bindings/cashu-js/src/types/secret.rs b/bindings/cashu-js/src/types/secret.rs index 33ebacb2..78081636 100644 --- a/bindings/cashu-js/src/types/secret.rs +++ b/bindings/cashu-js/src/types/secret.rs @@ -8,6 +8,12 @@ pub struct JsSecret { inner: Secret, } +impl Default for JsSecret { + fn default() -> Self { + Self::new() + } +} + impl Deref for JsSecret { type Target = Secret; fn deref(&self) -> &Self::Target {