diff --git a/crates/bindings/src/js_api.rs b/crates/bindings/src/js_api.rs index 736977438..c9f9eafa2 100644 --- a/crates/bindings/src/js_api.rs +++ b/crates/bindings/src/js_api.rs @@ -373,7 +373,7 @@ impl From for TakeOrdersConfigV3 { } mod impls { - use super::super::{impl_all_wasm_traits, wasm_traits::prelude::*}; + use crate::impl_all_wasm_traits; impl_all_wasm_traits!(super::IO); impl_all_wasm_traits!(super::Quote); diff --git a/crates/bindings/src/wasm_traits.rs b/crates/bindings/src/wasm_traits.rs index ee38239e1..0fd13bd4a 100644 --- a/crates/bindings/src/wasm_traits.rs +++ b/crates/bindings/src/wasm_traits.rs @@ -9,11 +9,11 @@ pub mod prelude { }; } -pub use prelude::*; - #[macro_export] macro_rules! impl_main_wasm_traits { - ($struct_name:path) => { + ($struct_name:path) => {{ + use $crate::wasm_traits::prelude::*; + impl WasmDescribe for $struct_name { #[inline] fn describe() { @@ -55,12 +55,14 @@ macro_rules! impl_main_wasm_traits { <::JsType as OptionFromWasmAbi>::is_none(js) } } - }; + }}; } #[macro_export] macro_rules! impl_complementary_wasm_traits { - ($struct_name:path) => { + ($struct_name:path) => {{ + use $crate::wasm_traits::prelude::*; + impl RefFromWasmAbi for $struct_name { type Abi = ::Abi; type Anchor = Box<$struct_name>; @@ -107,98 +109,13 @@ macro_rules! impl_complementary_wasm_traits { from_value(value) } } - }; + }}; } #[macro_export] macro_rules! impl_all_wasm_traits { ($struct_name:path) => { - impl WasmDescribe for $struct_name { - #[inline] - fn describe() { - ::JsType::describe() - } - } - impl IntoWasmAbi for $struct_name { - type Abi = <::JsType as IntoWasmAbi>::Abi; - - #[inline] - fn into_abi(self) -> Self::Abi { - let mut err = "".to_string(); - self.into_js() - .inspect_err(|e| err.push_str(&e.to_string())) - .expect_throw(&err) - .into_abi() - } - } - impl OptionIntoWasmAbi for $struct_name { - #[inline] - fn none() -> Self::Abi { - <::JsType as OptionIntoWasmAbi>::none() - } - } - impl FromWasmAbi for $struct_name { - type Abi = <::JsType as FromWasmAbi>::Abi; - - #[inline] - unsafe fn from_abi(js: Self::Abi) -> Self { - let mut err = "".to_string(); - Self::from_js(::JsType::from_abi(js)) - .inspect_err(|e| err.push_str(&e.to_string())) - .expect_throw(&err) - } - } - impl OptionFromWasmAbi for $struct_name { - #[inline] - fn is_none(js: &Self::Abi) -> bool { - <::JsType as OptionFromWasmAbi>::is_none(js) - } - } - impl RefFromWasmAbi for $struct_name { - type Abi = ::Abi; - type Anchor = Box<$struct_name>; - unsafe fn ref_from_abi(js: Self::Abi) -> Self::Anchor { - Box::new(<$struct_name>::from_abi(js)) - } - } - impl LongRefFromWasmAbi for $struct_name { - type Abi = ::Abi; - type Anchor = Box<$struct_name>; - unsafe fn long_ref_from_abi(js: Self::Abi) -> Self::Anchor { - Box::new(<$struct_name>::from_abi(js)) - } - } - impl VectorIntoWasmAbi for $struct_name { - type Abi = as IntoWasmAbi>::Abi; - fn vector_into_abi(vector: Box<[Self]>) -> Self::Abi { - js_value_vector_into_abi(vector) - } - } - impl VectorFromWasmAbi for $struct_name { - type Abi = as IntoWasmAbi>::Abi; - unsafe fn vector_from_abi(js: Self::Abi) -> Box<[Self]> { - js_value_vector_from_abi(js) - } - } - impl WasmDescribeVector for $struct_name { - fn describe_vector() { - inform(VECTOR); - <$struct_name>::describe(); - } - } - impl From<$struct_name> for JsValue { - fn from(value: $struct_name) -> Self { - let mut err = "".to_string(); - to_value(&value) - .inspect_err(|e| err.push_str(&e.to_string())) - .expect_throw(&err) - } - } - impl TryFromJsValue for $struct_name { - type Error = serde_wasm_bindgen::Error; - fn try_from_js_value(value: JsValue) -> Result { - from_value(value) - } - } + $crate::impl_main_wasm_traits!($struct_name); + $crate::impl_complementary_wasm_traits!($struct_name); }; } diff --git a/crates/js_api/src/gui/mod.rs b/crates/js_api/src/gui/mod.rs index 6a77a5bdf..b26d351e0 100644 --- a/crates/js_api/src/gui/mod.rs +++ b/crates/js_api/src/gui/mod.rs @@ -2,7 +2,7 @@ use alloy::primitives::Address; use rain_orderbook_app_settings::gui::{ Gui, GuiDeployment, GuiFieldDefinition, ParseGuiConfigSourceError, }; -use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; +use rain_orderbook_bindings::impl_all_wasm_traits; use rain_orderbook_common::dotrain_order::{DotrainOrder, DotrainOrderError}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; diff --git a/crates/quote/src/js_api/impls.rs b/crates/quote/src/js_api/impls.rs index d8de07415..1c89a4afb 100644 --- a/crates/quote/src/js_api/impls.rs +++ b/crates/quote/src/js_api/impls.rs @@ -6,11 +6,11 @@ use alloy::primitives::{ hex::{encode_prefixed, FromHex}, Address, U256, }; +use rain_orderbook_bindings::impl_all_wasm_traits; use rain_orderbook_bindings::js_api::Quote; use rain_orderbook_bindings::IOrderBookV4::{ Quote as MainQuote, SignedContextV1 as MainSignedContextV1, }; -use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; use std::str::FromStr; impl From for MainOrderQuoteValue { diff --git a/crates/settings/src/deployer.rs b/crates/settings/src/deployer.rs index fb8b578ee..f6d008d7f 100644 --- a/crates/settings/src/deployer.rs +++ b/crates/settings/src/deployer.rs @@ -6,7 +6,7 @@ use thiserror::Error; use typeshare::typeshare; #[cfg(target_family = "wasm")] -use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; +use rain_orderbook_bindings::impl_all_wasm_traits; #[cfg(target_family = "wasm")] use tsify::Tsify; diff --git a/crates/settings/src/deployment.rs b/crates/settings/src/deployment.rs index 6537f93b5..cc7008e06 100644 --- a/crates/settings/src/deployment.rs +++ b/crates/settings/src/deployment.rs @@ -5,7 +5,7 @@ use thiserror::Error; use typeshare::typeshare; #[cfg(target_family = "wasm")] -use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; +use rain_orderbook_bindings::impl_all_wasm_traits; #[cfg(target_family = "wasm")] use tsify::Tsify; diff --git a/crates/settings/src/gui.rs b/crates/settings/src/gui.rs index f0d8ace87..93dbfb7f1 100644 --- a/crates/settings/src/gui.rs +++ b/crates/settings/src/gui.rs @@ -6,7 +6,7 @@ use thiserror::Error; use typeshare::typeshare; #[cfg(target_family = "wasm")] -use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; +use rain_orderbook_bindings::impl_all_wasm_traits; #[cfg(target_family = "wasm")] use tsify::Tsify; diff --git a/crates/settings/src/network.rs b/crates/settings/src/network.rs index d30ce18b3..ac1f3e0eb 100644 --- a/crates/settings/src/network.rs +++ b/crates/settings/src/network.rs @@ -6,7 +6,7 @@ use typeshare::typeshare; use url::{ParseError, Url}; #[cfg(target_family = "wasm")] -use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; +use rain_orderbook_bindings::impl_all_wasm_traits; #[cfg(target_family = "wasm")] use tsify::Tsify; diff --git a/crates/settings/src/order.rs b/crates/settings/src/order.rs index 9c0a1cd09..b0051d9e9 100644 --- a/crates/settings/src/order.rs +++ b/crates/settings/src/order.rs @@ -6,7 +6,7 @@ use thiserror::Error; use typeshare::typeshare; #[cfg(target_family = "wasm")] -use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; +use rain_orderbook_bindings::impl_all_wasm_traits; #[cfg(target_family = "wasm")] use tsify::Tsify; diff --git a/crates/settings/src/scenario.rs b/crates/settings/src/scenario.rs index 25945411c..a3b37a1c9 100644 --- a/crates/settings/src/scenario.rs +++ b/crates/settings/src/scenario.rs @@ -6,7 +6,7 @@ use thiserror::Error; use typeshare::typeshare; #[cfg(target_family = "wasm")] -use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; +use rain_orderbook_bindings::impl_all_wasm_traits; #[cfg(target_family = "wasm")] use tsify::Tsify; diff --git a/crates/settings/src/token.rs b/crates/settings/src/token.rs index 134c1b27b..ab19dc474 100644 --- a/crates/settings/src/token.rs +++ b/crates/settings/src/token.rs @@ -6,7 +6,7 @@ use thiserror::Error; use typeshare::typeshare; #[cfg(target_family = "wasm")] -use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; +use rain_orderbook_bindings::impl_all_wasm_traits; #[cfg(target_family = "wasm")] use tsify::Tsify; diff --git a/crates/subgraph/src/multi_orderbook_client.rs b/crates/subgraph/src/multi_orderbook_client.rs index f846cce6b..15209dbcc 100644 --- a/crates/subgraph/src/multi_orderbook_client.rs +++ b/crates/subgraph/src/multi_orderbook_client.rs @@ -21,9 +21,9 @@ pub struct MultiSubgraphArgs { #[cfg(target_family = "wasm")] mod wasm_impls { use super::*; - use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; + use rain_orderbook_bindings::d; - impl_all_wasm_traits!(MultiSubgraphArgs); + d!(MultiSubgraphArgs); } pub struct MultiOrderbookSubgraphClient { diff --git a/crates/subgraph/src/pagination.rs b/crates/subgraph/src/pagination.rs index 123489d6b..7680b28ba 100644 --- a/crates/subgraph/src/pagination.rs +++ b/crates/subgraph/src/pagination.rs @@ -18,7 +18,7 @@ pub struct PaginationArgs { #[cfg(target_family = "wasm")] mod wasm_impls { use super::*; - use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; + use rain_orderbook_bindings::impl_all_wasm_traits; impl_all_wasm_traits!(PaginationArgs); } diff --git a/crates/subgraph/src/types/common.rs b/crates/subgraph/src/types/common.rs index 28bc2d72a..50e80c60d 100644 --- a/crates/subgraph/src/types/common.rs +++ b/crates/subgraph/src/types/common.rs @@ -566,7 +566,7 @@ pub enum VaultOrderBy { #[cfg(target_family = "wasm")] mod impls { use super::*; - use rain_orderbook_bindings::{impl_all_wasm_traits, wasm_traits::prelude::*}; + use rain_orderbook_bindings::impl_all_wasm_traits; impl_all_wasm_traits!(Order); impl_all_wasm_traits!(Vault);