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
text/typescript
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;
}