|
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