UNPKG

hardhat

Version:

Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.

57 lines (51 loc) 2.04 kB
import type { EdrNetworkUserConfig, HttpNetworkUserConfig, NetworkConfig, NetworkConfigOverride, NetworkUserConfig, } from "../../../types/config.js"; /** * Converts the NetworkConfigOverride into a valid NetworkUserConfig. This * function determines the network type based on the provided `networkConfig` * and sets default values for any required properties that are missing from * the `networkConfigOverride`. * * @warning * This function is not type-safe. It assumes that `networkConfigOverride` does * not contain mixed properties from different network types. Always validate * the resulting NetworkUserConfig before using it. * * @param networkConfigOverride The partial configuration override provided by * the user. * @param networkConfig The base network configuration used to infer defaults * and the network type. * @returns A fully resolved NetworkUserConfig with defaults applied. */ export async function normalizeNetworkConfigOverride( networkConfigOverride: NetworkConfigOverride, networkConfig: NetworkConfig, ): Promise<NetworkUserConfig> { let networkConfigOverrideWithType: NetworkUserConfig; if (networkConfig.type === "http") { const networkConfigOverrideAsHttp = /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Assumes that networkConfigOverride is a HttpNetworkUserConfig. */ networkConfigOverride as HttpNetworkUserConfig; networkConfigOverrideWithType = { ...networkConfigOverrideAsHttp, type: "http", url: networkConfigOverrideAsHttp.url ?? (await networkConfig.url.get()), }; } else { const networkConfigOverrideAsEdr = /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Assumes that networkConfigOverride is an EdrNetworkUserConfig. */ networkConfigOverride as EdrNetworkUserConfig; networkConfigOverrideWithType = { ...networkConfigOverrideAsEdr, type: "edr-simulated", }; } return networkConfigOverrideWithType; }