1
1
import type {
2
- EdrNetworkUserConfig ,
3
- HttpNetworkUserConfig ,
4
2
NetworkConfig ,
5
3
NetworkConfigOverride ,
6
- NetworkUserConfig ,
7
4
} from "../../../types/config.js" ;
8
5
import type { HookManager } from "../../../types/hooks.js" ;
9
6
import type {
@@ -22,6 +19,10 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors";
22
19
23
20
import { resolveConfigurationVariable } from "../../core/configuration-variables.js" ;
24
21
22
+ import {
23
+ mergeConfigOverride ,
24
+ normalizeNetworkConfigOverride ,
25
+ } from "./config-override.js" ;
25
26
import { resolveNetworkConfigOverride } from "./config-resolution.js" ;
26
27
import { EdrProvider } from "./edr/edr-provider.js" ;
27
28
import { isEdrSupportedChainType } from "./edr/utils/chain-type.js" ;
@@ -138,12 +139,10 @@ export class NetworkManagerImplementation implements NetworkManager {
138
139
) ;
139
140
}
140
141
141
- /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
142
- -- Cast to NetworkConfig as we know the types match, but TS can't infer it */
143
- const resolvedNetworkConfig = {
144
- ...this . #networkConfigs[ resolvedNetworkName ] ,
145
- ...resolvedNetworkConfigOverride ,
146
- } as NetworkConfig ;
142
+ const resolvedNetworkConfig = mergeConfigOverride (
143
+ this . #networkConfigs[ resolvedNetworkName ] ,
144
+ resolvedNetworkConfigOverride ,
145
+ ) ;
147
146
148
147
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
149
148
-- Cast to ChainTypeT because we know it's valid */
@@ -236,52 +235,3 @@ export class NetworkManagerImplementation implements NetworkManager {
236
235
) ;
237
236
}
238
237
}
239
-
240
- /**
241
- * Converts the NetworkConfigOverride into a valid NetworkUserConfig. This
242
- * function determines the network type based on the provided `networkConfig`
243
- * and sets default values for any required properties that are missing from
244
- * the `networkConfigOverride`.
245
- *
246
- * @warning
247
- * This function is not type-safe. It assumes that `networkConfigOverride` does
248
- * not contain mixed properties from different network types. Always validate
249
- * the resulting NetworkUserConfig before using it.
250
- *
251
- * @param networkConfigOverride The partial configuration override provided by
252
- * the user.
253
- * @param networkConfig The base network configuration used to infer defaults
254
- * and the network type.
255
- * @returns A fully resolved NetworkUserConfig with defaults applied.
256
- */
257
- async function normalizeNetworkConfigOverride (
258
- networkConfigOverride : NetworkConfigOverride ,
259
- networkConfig : NetworkConfig ,
260
- ) : Promise < NetworkUserConfig > {
261
- let networkConfigOverrideWithType : NetworkUserConfig ;
262
-
263
- if ( networkConfig . type === "http" ) {
264
- const networkConfigOverrideAsHttp =
265
- /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
266
- -- Assumes that networkConfigOverride is a HttpNetworkUserConfig. */
267
- networkConfigOverride as HttpNetworkUserConfig ;
268
-
269
- networkConfigOverrideWithType = {
270
- ...networkConfigOverrideAsHttp ,
271
- type : "http" ,
272
- url : networkConfigOverrideAsHttp . url ?? ( await networkConfig . url . get ( ) ) ,
273
- } ;
274
- } else {
275
- const networkConfigOverrideAsEdr =
276
- /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
277
- -- Assumes that networkConfigOverride is an EdrNetworkUserConfig. */
278
- networkConfigOverride as EdrNetworkUserConfig ;
279
-
280
- networkConfigOverrideWithType = {
281
- ...networkConfigOverrideAsEdr ,
282
- type : "edr" ,
283
- } ;
284
- }
285
-
286
- return networkConfigOverrideWithType ;
287
- }
0 commit comments