|
1 | 1 | import fs from 'fs' |
2 | | -import path from 'path' |
3 | 2 |
|
4 | | -import { NetworkConfig, NetworksConfig } from 'hardhat/types/config' |
5 | 3 | import { HardhatRuntimeEnvironment } from 'hardhat/types/runtime' |
6 | | -import { HttpNetworkConfig } from 'hardhat/types/config' |
7 | 4 |
|
8 | 5 | import { GraphRuntimeEnvironmentOptions } from './type-extensions' |
9 | 6 | import { GREPluginError } from './helpers/error' |
10 | | -import GraphNetwork, { counterpartName } from './helpers/network' |
11 | | - |
12 | | -import { createProvider } from 'hardhat/internal/core/providers/construction' |
| 7 | +import GraphNetwork from './helpers/chain' |
13 | 8 | import { EthersProviderWrapper } from '@nomiclabs/hardhat-ethers/internal/ethers-provider-wrapper' |
14 | 9 |
|
15 | | -import { logDebug, logWarn } from './logger' |
16 | | -import { HARDHAT_NETWORK_NAME } from 'hardhat/plugins' |
| 10 | +import { logDebug } from './helpers/logger' |
| 11 | +import { normalizePath } from './helpers/utils' |
| 12 | +import { getNetworkConfig } from './helpers/network' |
| 13 | +import { getDefaultProvider } from './providers' |
17 | 14 |
|
18 | 15 | interface GREChains { |
19 | 16 | l1ChainId: number |
@@ -89,49 +86,28 @@ export function getChains(mainChainId: number | undefined): GREChains { |
89 | 86 | } |
90 | 87 | } |
91 | 88 |
|
92 | | -export function getProviders( |
| 89 | +export function getDefaultProviders( |
93 | 90 | hre: HardhatRuntimeEnvironment, |
94 | 91 | l1ChainId: number, |
95 | 92 | l2ChainId: number, |
96 | 93 | isHHL1: boolean, |
97 | 94 | ): GREProviders { |
98 | 95 | logDebug('== Getting providers') |
99 | 96 |
|
100 | | - const getProvider = ( |
101 | | - networks: NetworksConfig, |
102 | | - chainId: number, |
103 | | - mainNetworkName: string, |
104 | | - isMainProvider: boolean, |
105 | | - chainLabel: string, |
106 | | - ): EthersProviderWrapper | undefined => { |
107 | | - const network = getNetworkConfig(networks, chainId, mainNetworkName) as HttpNetworkConfig |
108 | | - const networkName = getNetworkName(networks, chainId, mainNetworkName) |
109 | | - |
110 | | - logDebug(`Provider url for ${chainLabel}(${networkName}): ${network?.url}`) |
111 | | - |
112 | | - // Ensure at least main provider is configured |
113 | | - // For Hardhat network we don't need url to create a provider |
114 | | - if ( |
115 | | - isMainProvider && |
116 | | - (network === undefined || network.url === undefined) && |
117 | | - networkName !== HARDHAT_NETWORK_NAME |
118 | | - ) { |
119 | | - throw new GREPluginError(`Must set a provider url for chain: ${chainId}!`) |
120 | | - } |
121 | | - |
122 | | - if (network === undefined || networkName === undefined) { |
123 | | - return undefined |
124 | | - } |
125 | | - |
126 | | - // Build provider as EthersProviderWrapper instead of JsonRpcProvider |
127 | | - // This allows us to use hardhat's account management methods for free |
128 | | - const ethereumProvider = createProvider(networkName, network) |
129 | | - const ethersProviderWrapper = new EthersProviderWrapper(ethereumProvider) |
130 | | - return ethersProviderWrapper |
131 | | - } |
132 | | - |
133 | | - const l1Provider = getProvider(hre.config.networks, l1ChainId, hre.network.name, isHHL1, 'L1') |
134 | | - const l2Provider = getProvider(hre.config.networks, l2ChainId, hre.network.name, !isHHL1, 'L2') |
| 97 | + const l1Provider = getDefaultProvider( |
| 98 | + hre.config.networks, |
| 99 | + l1ChainId, |
| 100 | + hre.network.name, |
| 101 | + isHHL1, |
| 102 | + 'L1', |
| 103 | + ) |
| 104 | + const l2Provider = getDefaultProvider( |
| 105 | + hre.config.networks, |
| 106 | + l2ChainId, |
| 107 | + hre.network.name, |
| 108 | + !isHHL1, |
| 109 | + 'L2', |
| 110 | + ) |
135 | 111 |
|
136 | 112 | return { |
137 | 113 | l1Provider, |
@@ -211,61 +187,3 @@ export function getGraphConfigPaths( |
211 | 187 | l2GraphConfigPath: l2GraphConfigPath, |
212 | 188 | } |
213 | 189 | } |
214 | | - |
215 | | -function getNetworkConfig( |
216 | | - networks: NetworksConfig, |
217 | | - chainId: number, |
218 | | - mainNetworkName: string, |
219 | | -): (NetworkConfig & { name: string }) | undefined { |
220 | | - const candidateNetworks = Object.keys(networks) |
221 | | - .map((n) => ({ ...networks[n], name: n })) |
222 | | - .filter((n) => n.chainId === chainId) |
223 | | - |
224 | | - if (candidateNetworks.length > 1) { |
225 | | - logWarn( |
226 | | - `Found multiple networks with chainId ${chainId}, trying to use main network name to desambiguate`, |
227 | | - ) |
228 | | - |
229 | | - const filteredByMainNetworkName = candidateNetworks.filter((n) => n.name === mainNetworkName) |
230 | | - |
231 | | - if (filteredByMainNetworkName.length === 1) { |
232 | | - logDebug(`Found network with chainId ${chainId} and name ${mainNetworkName}`) |
233 | | - return filteredByMainNetworkName[0] |
234 | | - } else { |
235 | | - logWarn(`Could not desambiguate with main network name, trying secondary network name`) |
236 | | - const secondaryNetworkName = counterpartName(mainNetworkName) |
237 | | - const filteredBySecondaryNetworkName = candidateNetworks.filter( |
238 | | - (n) => n.name === secondaryNetworkName, |
239 | | - ) |
240 | | - |
241 | | - if (filteredBySecondaryNetworkName.length === 1) { |
242 | | - logDebug(`Found network with chainId ${chainId} and name ${mainNetworkName}`) |
243 | | - return filteredBySecondaryNetworkName[0] |
244 | | - } else { |
245 | | - throw new GREPluginError( |
246 | | - `Could not desambiguate network with chainID ${chainId}. Use case not supported!`, |
247 | | - ) |
248 | | - } |
249 | | - } |
250 | | - } else if (candidateNetworks.length === 1) { |
251 | | - return candidateNetworks[0] |
252 | | - } else { |
253 | | - return undefined |
254 | | - } |
255 | | -} |
256 | | - |
257 | | -export function getNetworkName( |
258 | | - networks: NetworksConfig, |
259 | | - chainId: number, |
260 | | - mainNetworkName: string, |
261 | | -): string | undefined { |
262 | | - const network = getNetworkConfig(networks, chainId, mainNetworkName) |
263 | | - return network?.name |
264 | | -} |
265 | | - |
266 | | -function normalizePath(_path: string, graphPath: string) { |
267 | | - if (!path.isAbsolute(_path)) { |
268 | | - _path = path.join(graphPath, _path) |
269 | | - } |
270 | | - return _path |
271 | | -} |
0 commit comments