From 44728e7407900c8e8960645bfe87f25ed975f62e Mon Sep 17 00:00:00 2001 From: Wodann Date: Wed, 22 Nov 2023 06:56:12 +0000 Subject: [PATCH] refactor: remove default config values --- crates/edr_napi/index.d.ts | 8 +-- crates/edr_napi/src/provider/config.rs | 57 +++++-------------- .../hardhat-network/provider/provider.ts | 13 ++++- .../provider/utils/convertToEdr.ts | 17 +++++- 4 files changed, 46 insertions(+), 49 deletions(-) diff --git a/crates/edr_napi/index.d.ts b/crates/edr_napi/index.d.ts index a47adb8478..9be982a54d 100644 --- a/crates/edr_napi/index.d.ts +++ b/crates/edr_napi/index.d.ts @@ -243,9 +243,9 @@ export interface IntervalRange { } /** Configuration for the provider's miner. */ export interface MiningConfig { - autoMine?: boolean - interval?: number | IntervalRange - memPool?: MemPoolConfig + autoMine: boolean + interval: number | IntervalRange + memPool: MemPoolConfig } /** Configuration for a provider */ export interface ProviderConfig { @@ -278,7 +278,7 @@ export interface ProviderConfig { /** The initial date of the blockchain, in seconds since the Unix epoch */ initialDate?: bigint /** The configuration for the miner */ - mining?: MiningConfig + mining: MiningConfig /** The network ID of the blockchain */ networkId: bigint } diff --git a/crates/edr_napi/src/provider/config.rs b/crates/edr_napi/src/provider/config.rs index 7d350b7cbc..2c6f8e032a 100644 --- a/crates/edr_napi/src/provider/config.rs +++ b/crates/edr_napi/src/provider/config.rs @@ -39,9 +39,9 @@ pub struct IntervalRange { /// Configuration for the provider's miner. #[napi(object)] pub struct MiningConfig { - pub auto_mine: Option, - pub interval: Option>, - pub mem_pool: Option, + pub auto_mine: bool, + pub interval: Either, + pub mem_pool: MemPoolConfig, } /// Configuration for a provider @@ -72,7 +72,7 @@ pub struct ProviderConfig { /// The initial date of the blockchain, in seconds since the Unix epoch pub initial_date: Option, /// The configuration for the miner - pub mining: Option, + pub mining: MiningConfig, /// The network ID of the blockchain pub network_id: BigInt, } @@ -99,49 +99,22 @@ impl From for edr_provider::MemPoolConfig { } } -impl TryFrom for edr_provider::MiningConfig { - type Error = napi::Error; - - fn try_from(value: MiningConfig) -> Result { - let mem_pool = value - .mem_pool - .map_or(edr_provider::MemPoolConfig::default(), Into::into); +impl From for edr_provider::MiningConfig { + fn from(value: MiningConfig) -> Self { + let mem_pool = value.mem_pool.into(); - let interval = value.interval.map(|interval| match interval { + let interval = match value.interval { Either::A(interval) => edr_provider::IntervalConfig::Fixed(interval), Either::B(IntervalRange { min, max }) => { edr_provider::IntervalConfig::Range { min, max } } - }); - - let config = if let Some(auto_mine) = value.auto_mine { - if let Some(interval) = interval { - Self { - auto_mine, - interval, - mem_pool, - } - } else { - Self { - auto_mine, - interval: edr_provider::IntervalConfig::Fixed(0), - mem_pool, - } - } - } else if let Some(interval) = interval { - Self { - auto_mine: false, - interval, - mem_pool, - } - } else { - Self { - mem_pool, - ..edr_provider::MiningConfig::default() - } }; - Ok(config) + Self { + auto_mine: value.auto_mine, + interval, + mem_pool, + } } } @@ -179,9 +152,7 @@ impl TryFrom for edr_provider::ProviderConfig { napi::Result::Ok(SystemTime::UNIX_EPOCH + elapsed_since_epoch) }) .transpose()?, - mining: value - .mining - .map_or(Ok(edr_provider::MiningConfig::default()), TryInto::try_into)?, + mining: value.mining.into(), network_id: value.network_id.try_cast()?, }) } diff --git a/packages/hardhat-core/src/internal/hardhat-network/provider/provider.ts b/packages/hardhat-core/src/internal/hardhat-network/provider/provider.ts index 2898dd8af4..485d00ee3b 100644 --- a/packages/hardhat-core/src/internal/hardhat-network/provider/provider.ts +++ b/packages/hardhat-core/src/internal/hardhat-network/provider/provider.ts @@ -47,7 +47,11 @@ import { NodeConfig, TracingConfig, } from "./node-types"; -import { ethereumsjsHardforkToEdrSpecId } from "./utils/convertToEdr"; +import { + ethereumjsIntervalMiningConfigToEdr, + ethereumjsMempoolOrderToEdrMineOrdering, + ethereumsjsHardforkToEdrSpecId, +} from "./utils/convertToEdr"; const log = debug("hardhat:core:hardhat-network:provider"); @@ -426,6 +430,13 @@ class EdrProviderWrapper extends EventEmitter implements EIP1193Provider { initialBaseFeePerGas: BigInt( config.initialBaseFeePerGas ?? 1_000_000_000 ), + mining: { + autoMine: config.automine, + interval: ethereumjsIntervalMiningConfigToEdr(config.intervalMining), + memPool: { + order: ethereumjsMempoolOrderToEdrMineOrdering(config.mempoolOrder), + }, + }, }); return new EdrProviderWrapper(provider); diff --git a/packages/hardhat-core/src/internal/hardhat-network/provider/utils/convertToEdr.ts b/packages/hardhat-core/src/internal/hardhat-network/provider/utils/convertToEdr.ts index d4c3194bf0..be70cfd41d 100644 --- a/packages/hardhat-core/src/internal/hardhat-network/provider/utils/convertToEdr.ts +++ b/packages/hardhat-core/src/internal/hardhat-network/provider/utils/convertToEdr.ts @@ -43,7 +43,9 @@ import { MineOrdering, TracingMessage, SuccessReason, + IntervalRange, } from "@ignored/edr"; +import { isNumber } from "lodash"; import { fromBigIntLike, toHex } from "../../../util/bigint"; import { HardforkName, hardforkGte } from "../../../util/hardforks"; import { @@ -52,7 +54,7 @@ import { isRevertResult, isSuccessResult, } from "../../stack-traces/message-trace"; -import { MempoolOrder } from "../node-types"; +import { IntervalMiningConfig, MempoolOrder } from "../node-types"; import { RpcLogOutput, RpcReceiptOutput, @@ -258,6 +260,19 @@ export function ethereumjsHeaderDataToEdrBlockOptions( }; } +export function ethereumjsIntervalMiningConfigToEdr( + config: IntervalMiningConfig +): number | IntervalRange { + if (isNumber(config)) { + return config; + } else { + return { + min: config[0], + max: config[1], + }; + } +} + export function ethereumjsMempoolOrderToEdrMineOrdering( mempoolOrder: MempoolOrder ): MineOrdering {