Skip to content

Commit 5c94cf5

Browse files
committed
Fix WASM build errors
1 parent 6a6774c commit 5c94cf5

4 files changed

Lines changed: 59 additions & 15 deletions

File tree

iota_interaction/src/sdk_types/iota_types/base_types.rs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,18 @@ use std::str::FromStr;
1212
use std::string::String;
1313
use std::vec::Vec;
1414

15-
use anyhow::anyhow;
15+
use anyhow::{anyhow, bail};
1616
use fastcrypto::encoding::{decode_bytes_hex, Encoding, Hex};
1717
use fastcrypto::hash::HashFunction;
1818
use rand::Rng;
1919
use schemars::JsonSchema;
2020
use serde::ser::Error;
21-
use serde::{Deserialize, Deserializer, Serialize};
21+
use serde::{Deserialize, Deserializer, Serialize, Serializer};
2222
use serde_with::{DeserializeAs, SerializeAs, serde_as};
2323
use Result;
2424

25+
use iota_sdk_types::crypto::HashingIntentScope;
26+
2527
use crate::move_core_types::account_address::AccountAddress;
2628
use crate::move_core_types::identifier::IdentStr;
2729
use crate::move_core_types::language_storage::{ModuleId, StructTag, TypeTag};
@@ -35,7 +37,7 @@ use super::dynamic_field::DynamicFieldInfo;
3537
use super::error::{IotaError, IotaResult};
3638
use super::gas_coin::{GasCoin, GAS};
3739
use super::governance::{StakedIota, STAKED_IOTA_STRUCT_NAME, STAKING_POOL_MODULE_NAME};
38-
use super::iota_serde::{to_iota_struct_tag_string, HexAccountAddress, Readable};
40+
use super::iota_serde::{to_custom_deser_error, to_iota_struct_tag_string, Readable};
3941
use super::object::Owner;
4042
use super::stardust::output::Nft;
4143
use super::timelock::timelock::{self, TimeLock};
@@ -846,6 +848,33 @@ impl From<IotaAddress> for AccountAddress {
846848
}
847849
}
848850

851+
/// Hex serde for AccountAddress
852+
struct HexAccountAddress;
853+
854+
impl SerializeAs<AccountAddress> for HexAccountAddress {
855+
fn serialize_as<S>(value: &AccountAddress, serializer: S) -> Result<S::Ok, S::Error>
856+
where
857+
S: Serializer,
858+
{
859+
Hex::serialize_as(value, serializer)
860+
}
861+
}
862+
863+
impl<'de> DeserializeAs<'de, AccountAddress> for HexAccountAddress {
864+
fn deserialize_as<D>(deserializer: D) -> Result<AccountAddress, D::Error>
865+
where
866+
D: Deserializer<'de>,
867+
{
868+
let s = String::deserialize(deserializer)?;
869+
if s.starts_with("0x") {
870+
AccountAddress::from_hex_literal(&s)
871+
} else {
872+
AccountAddress::from_hex(&s)
873+
}
874+
.map_err(to_custom_deser_error::<'de, D, _>)
875+
}
876+
}
877+
849878
impl fmt::Display for MoveObjectType {
850879
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> std::fmt::Result {
851880
let s: StructTag = self.clone().into();

iota_interaction/src/sdk_types/iota_types/digests.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ impl fmt::UpperHex for CheckpointContentsDigest {
211211
}
212212
}
213213

214+
/// A transaction will have a (unique) digest.
214215
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, JsonSchema)]
215216
pub struct TransactionDigest(Digest);
216217

@@ -261,6 +262,30 @@ impl TransactionDigest {
261262
}
262263
}
263264

265+
impl AsRef<[u8]> for TransactionDigest {
266+
fn as_ref(&self) -> &[u8] {
267+
self.0.as_ref()
268+
}
269+
}
270+
271+
impl AsRef<[u8; 32]> for TransactionDigest {
272+
fn as_ref(&self) -> &[u8; 32] {
273+
self.0.as_ref()
274+
}
275+
}
276+
277+
impl From<TransactionDigest> for [u8; 32] {
278+
fn from(digest: TransactionDigest) -> Self {
279+
digest.into_inner()
280+
}
281+
}
282+
283+
impl From<[u8; 32]> for TransactionDigest {
284+
fn from(digest: [u8; 32]) -> Self {
285+
Self::new(digest)
286+
}
287+
}
288+
264289
impl fmt::Display for TransactionDigest {
265290
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
266291
fmt::Display::fmt(&self.0, f)

iota_interaction/src/sdk_types/iota_types/iota_serde.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use std::result::Result::Ok;
1313
use std::str::FromStr;
1414
use std::string::{String, ToString};
1515

16-
use fastcrypto::encoding::Hex;
1716
use schemars::JsonSchema;
1817
use serde::de::{Deserializer, Error};
1918
use serde::ser::{Error as SerError, Serializer};
@@ -99,15 +98,6 @@ pub(crate) fn to_custom_deser_error<'de, D, E>(e: E) -> D::Error
9998
Error::custom(format!("byte deserialization failed, cause by: {e:?}"))
10099
}
101100

102-
#[inline]
103-
pub(crate) fn to_custom_ser_error<S, E>(e: E) -> S::Error
104-
where
105-
E: Debug,
106-
S: Serializer,
107-
{
108-
S::Error::custom(format!("byte serialization failed, cause by: {e:?}"))
109-
}
110-
111101
/// Use with serde_as to control serde for human-readable serialization and
112102
/// deserialization `H` : serde_as SerializeAs/DeserializeAs delegation for
113103
/// human readable in/output `R` : serde_as SerializeAs/DeserializeAs delegation

iota_interaction/src/sdk_types/iota_types/transaction.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ use crate::move_core_types::language_storage::TypeTag;
1818
use super::base_types::{EpochId, IotaAddress, ObjectID, ObjectRef, SequenceNumber};
1919
use super::error::{UserInputError, UserInputResult};
2020
use super::{
21-
IOTA_AUTHENTICATOR_STATE_OBJECT_ID, IOTA_AUTHENTICATOR_STATE_OBJECT_SHARED_VERSION, IOTA_CLOCK_OBJECT_ID,
22-
IOTA_CLOCK_OBJECT_SHARED_VERSION, IOTA_SYSTEM_STATE_OBJECT_ID, IOTA_SYSTEM_STATE_OBJECT_SHARED_VERSION,
21+
IOTA_CLOCK_OBJECT_ID, IOTA_CLOCK_OBJECT_SHARED_VERSION, IOTA_SYSTEM_STATE_OBJECT_ID,
22+
IOTA_SYSTEM_STATE_OBJECT_SHARED_VERSION,
2323
};
2424

2525
pub const TEST_ONLY_GAS_UNIT_FOR_TRANSFER: u64 = 10_000;

0 commit comments

Comments
 (0)