diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ac02bfcc..be0330295 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Next release +- fix(compilation): crate-level compilation - chore: Move crates under a madara subdir - chore(nix): resolve flake and direnv compatibility issues - fix: Gateway path fix diff --git a/Cargo.lock b/Cargo.lock index 55cd7ea83..17594e159 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6111,6 +6111,7 @@ version = "0.7.0" dependencies = [ "anyhow", "async-trait", + "mp-utils", "reqwest 0.12.8", "serde", ] diff --git a/crates/madara/client/db/src/lib.rs b/crates/madara/client/db/src/lib.rs index 763531649..099dda789 100644 --- a/crates/madara/client/db/src/lib.rs +++ b/crates/madara/client/db/src/lib.rs @@ -282,7 +282,7 @@ pub struct MadaraBackend { trie_log_config: TrieLogConfig, sender_block_info: tokio::sync::broadcast::Sender, write_opt_no_wal: WriteOptions, - #[cfg(feature = "testing")] + #[cfg(any(test, feature = "testing"))] _temp_dir: Option, } @@ -373,7 +373,7 @@ impl MadaraBackend { &self.chain_config } - #[cfg(feature = "testing")] + #[cfg(any(test, feature = "testing"))] pub fn open_for_testing(chain_config: Arc) -> Arc { let temp_dir = tempfile::TempDir::with_prefix("madara-test").unwrap(); let db = open_rocksdb(temp_dir.as_ref()).unwrap(); @@ -446,7 +446,7 @@ impl MadaraBackend { trie_log_config, sender_block_info: tokio::sync::broadcast::channel(100).0, write_opt_no_wal: make_write_opt_no_wal(), - #[cfg(feature = "testing")] + #[cfg(any(test, feature = "testing"))] _temp_dir: None, }); backend.check_configuration()?; diff --git a/crates/madara/client/db/src/tests/common/mod.rs b/crates/madara/client/db/src/tests/common/mod.rs index 26e76eef1..d81d38a15 100644 --- a/crates/madara/client/db/src/tests/common/mod.rs +++ b/crates/madara/client/db/src/tests/common/mod.rs @@ -13,7 +13,7 @@ use mp_transactions::{ use starknet_api::felt; use starknet_types_core::felt::Felt; -#[cfg(feature = "testing")] +#[cfg(any(test, feature = "testing"))] pub mod temp_db { use crate::DatabaseService; use mp_chain_config::ChainConfig; diff --git a/crates/madara/client/eth/Cargo.toml b/crates/madara/client/eth/Cargo.toml index c424a75f1..d46f3a436 100644 --- a/crates/madara/client/eth/Cargo.toml +++ b/crates/madara/client/eth/Cargo.toml @@ -84,3 +84,4 @@ tracing-test = "0.2.5" serial_test.workspace = true lazy_static.workspace = true mp-utils = { workspace = true, features = ["testing"] } +mc-mempool = { workspace = true, features = ["testing"] } diff --git a/crates/madara/primitives/oracle/Cargo.toml b/crates/madara/primitives/oracle/Cargo.toml index 898e3735e..ac17ca628 100644 --- a/crates/madara/primitives/oracle/Cargo.toml +++ b/crates/madara/primitives/oracle/Cargo.toml @@ -19,5 +19,6 @@ targets = ["x86_64-unknown-linux-gnu"] # Other anyhow.workspace = true async-trait.workspace = true +mp-utils.workspace = true reqwest.workspace = true serde = { workspace = true, features = ["derive"] } diff --git a/crates/madara/primitives/oracle/src/pragma.rs b/crates/madara/primitives/oracle/src/pragma.rs index 5a72b0c04..c93e7da9c 100644 --- a/crates/madara/primitives/oracle/src/pragma.rs +++ b/crates/madara/primitives/oracle/src/pragma.rs @@ -2,6 +2,7 @@ use std::fmt; use anyhow::{bail, Context}; use async_trait::async_trait; +use mp_utils::serde::{deserialize_url, serialize_url}; use reqwest::Url; use serde::{Deserialize, Serialize}; @@ -11,7 +12,11 @@ pub const DEFAULT_API_URL: &str = "https://api.dev.pragma.build/node/v1/data/"; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct PragmaOracle { - #[serde(default = "default_oracle_api_url")] + #[serde( + default = "default_oracle_api_url", + serialize_with = "serialize_url", + deserialize_with = "deserialize_url" + )] pub api_url: Url, #[serde(default)] pub api_key: String, diff --git a/crates/madara/primitives/utils/src/serde.rs b/crates/madara/primitives/utils/src/serde.rs index 54eb45863..df4339e81 100644 --- a/crates/madara/primitives/utils/src/serde.rs +++ b/crates/madara/primitives/utils/src/serde.rs @@ -2,8 +2,9 @@ use std::time::Duration; use serde::{Deserialize, Deserializer}; use starknet_types_core::felt::Felt; +use url::Url; -use crate::{crypto::ZeroingPrivateKey, parsers::parse_duration}; +use crate::{crypto::ZeroingPrivateKey, parsers::parse_duration, parsers::parse_url}; pub fn deserialize_duration<'de, D>(deserializer: D) -> Result where @@ -23,6 +24,14 @@ where parse_duration(&s).map_err(serde::de::Error::custom).map(Some) } +pub fn deserialize_url<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + let s = String::deserialize(deserializer)?; + parse_url(&s).map_err(serde::de::Error::custom) +} + pub fn serialize_optional_duration(duration: &Option, serializer: S) -> Result where S: serde::Serializer, @@ -45,6 +54,13 @@ where } } +pub fn serialize_url(url: &Url, serializer: S) -> Result +where + S: serde::Serializer, +{ + serializer.serialize_str(url.as_str()) +} + pub fn deserialize_private_key<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>,