hardhat-deploy 2.0.0-next.44 → 2.0.0-next.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -623
- package/dist/esm/generate-types.js +2 -2
- package/dist/esm/generate-types.js.map +1 -1
- package/dist/esm/helpers.d.ts +13 -6
- package/dist/esm/helpers.d.ts.map +1 -1
- package/dist/esm/helpers.js +76 -63
- package/dist/esm/helpers.js.map +1 -1
- package/dist/esm/tasks/deploy.d.ts.map +1 -1
- package/dist/esm/tasks/deploy.js +6 -5
- package/dist/esm/tasks/deploy.js.map +1 -1
- package/package.json +10 -10
- package/src/generate-types.ts +2 -2
- package/src/helpers.ts +87 -71
- package/src/tasks/deploy.ts +8 -5
package/src/helpers.ts
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
UnresolvedNetworkSpecificData,
|
|
15
15
|
loadEnvironment,
|
|
16
16
|
enhanceEnvIfNeeded,
|
|
17
|
+
chainByCanonicalName,
|
|
17
18
|
} from 'rocketh';
|
|
18
19
|
|
|
19
20
|
export function setupHardhatDeploy<
|
|
@@ -22,12 +23,12 @@ export function setupHardhatDeploy<
|
|
|
22
23
|
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData
|
|
23
24
|
>(extensions: Extensions) {
|
|
24
25
|
async function loadEnvironmentFromHardhatWithExtensions(
|
|
25
|
-
required: {hre: HardhatRuntimeEnvironment; connection?: NetworkConnection}
|
|
26
|
-
options?: {
|
|
27
|
-
|
|
28
|
-
}
|
|
26
|
+
required: {hre: HardhatRuntimeEnvironment; connection?: NetworkConnection}
|
|
27
|
+
// options?: {
|
|
28
|
+
// useChainIdOfForkedNetwork?: boolean;
|
|
29
|
+
// }
|
|
29
30
|
) {
|
|
30
|
-
const env = await loadEnvironmentFromHardhat<NamedAccounts, Data>(required
|
|
31
|
+
const env = await loadEnvironmentFromHardhat<NamedAccounts, Data>(required);
|
|
31
32
|
return enhanceEnvIfNeeded(env, extensions);
|
|
32
33
|
}
|
|
33
34
|
|
|
@@ -36,52 +37,55 @@ export function setupHardhatDeploy<
|
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
export async function
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
export async function generateForkConfig(
|
|
41
|
+
params: {hre: HardhatRuntimeEnvironment; connection?: NetworkConnection}
|
|
42
|
+
// options?: {
|
|
43
|
+
// useChainIdOfForkedNetwork?: boolean;
|
|
44
|
+
// }
|
|
45
|
+
): Promise<{provider: any; environment: string | {fork: string}; connection: NetworkConnection; isFork: boolean}> {
|
|
46
|
+
const fork = process.env.HARDHAT_FORK as string | undefined;
|
|
47
|
+
|
|
48
|
+
const connection =
|
|
49
|
+
params.connection || fork
|
|
50
|
+
? await params.hre.network.connect({network: 'fork'})
|
|
51
|
+
: await params.hre.network.connect();
|
|
52
|
+
|
|
49
53
|
let provider: any = connection.provider;
|
|
50
|
-
let
|
|
54
|
+
let environment: string | {fork: string} = connection.networkName;
|
|
51
55
|
let forkChainId: number | undefined;
|
|
52
|
-
|
|
56
|
+
|
|
53
57
|
if (fork) {
|
|
54
|
-
if (options?.useChainIdOfForkedNetwork) {
|
|
55
|
-
|
|
58
|
+
// if (options?.useChainIdOfForkedNetwork) {
|
|
59
|
+
// const forkNetworkConfig = params.hre.config.networks[fork];
|
|
56
60
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
61
|
+
// if (forkNetworkConfig.type === 'edr-simulated') {
|
|
62
|
+
// forkChainId = forkNetworkConfig.chainId;
|
|
63
|
+
// } else if (forkNetworkConfig.chainId) {
|
|
64
|
+
// forkChainId = forkNetworkConfig.chainId;
|
|
65
|
+
// } else {
|
|
66
|
+
// if ('url' in forkNetworkConfig) {
|
|
67
|
+
// const url = await forkNetworkConfig.url.getUrl();
|
|
68
|
+
// const response = await fetch(url, {
|
|
69
|
+
// method: 'POST',
|
|
70
|
+
// headers: {
|
|
71
|
+
// 'Content-Type': 'application/json',
|
|
72
|
+
// },
|
|
73
|
+
// body: JSON.stringify({
|
|
74
|
+
// jsonrpc: '2.0',
|
|
75
|
+
// id: 1,
|
|
76
|
+
// method: 'eth_chainId',
|
|
77
|
+
// params: [],
|
|
78
|
+
// }),
|
|
79
|
+
// });
|
|
80
|
+
// const json = (await response.json()) as {result: string};
|
|
81
|
+
// forkChainId = Number(json.result);
|
|
82
|
+
// } else {
|
|
83
|
+
// throw new Error(`cannot fetch chainId`);
|
|
84
|
+
// }
|
|
85
|
+
// }
|
|
86
|
+
// }
|
|
83
87
|
|
|
84
|
-
|
|
88
|
+
environment = {
|
|
85
89
|
fork,
|
|
86
90
|
};
|
|
87
91
|
}
|
|
@@ -107,13 +111,28 @@ export async function loadEnvironmentFromHardhat<
|
|
|
107
111
|
});
|
|
108
112
|
}
|
|
109
113
|
|
|
114
|
+
return {provider, environment, connection, isFork: !!fork};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export async function loadEnvironmentFromHardhat<
|
|
118
|
+
NamedAccounts extends UnresolvedUnknownNamedAccounts = UnresolvedUnknownNamedAccounts,
|
|
119
|
+
Data extends UnresolvedNetworkSpecificData = UnresolvedNetworkSpecificData
|
|
120
|
+
>(
|
|
121
|
+
params: {hre: HardhatRuntimeEnvironment; connection?: NetworkConnection}
|
|
122
|
+
// TODO ?
|
|
123
|
+
// options?: {
|
|
124
|
+
// useChainIdOfForkedNetwork?: boolean;
|
|
125
|
+
// }
|
|
126
|
+
): Promise<Environment<NamedAccounts, Data>> {
|
|
127
|
+
const {connection, environment, provider, isFork} = await generateForkConfig(params);
|
|
110
128
|
// console.log(`loading environments...`);
|
|
111
129
|
return loadEnvironment<NamedAccounts, Data>({
|
|
112
130
|
provider,
|
|
113
|
-
|
|
131
|
+
environment,
|
|
114
132
|
extra: {
|
|
115
133
|
connection,
|
|
116
134
|
},
|
|
135
|
+
saveDeployments: isFork ? false : undefined,
|
|
117
136
|
});
|
|
118
137
|
}
|
|
119
138
|
|
|
@@ -202,28 +221,27 @@ export function addNetworksFromEnv(networks?: Record<string, NetworkUserConfig>)
|
|
|
202
221
|
return newNetworks;
|
|
203
222
|
}
|
|
204
223
|
|
|
205
|
-
export function
|
|
206
|
-
networks
|
|
224
|
+
export function addNetworksFromKnownList(
|
|
225
|
+
networks?: Record<string, NetworkUserConfig>
|
|
207
226
|
): Record<string, NetworkUserConfig> {
|
|
208
|
-
const newNetworks: Record<string, NetworkUserConfig> = {};
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
const url = getRPC(networkName);
|
|
227
|
+
const newNetworks: Record<string, NetworkUserConfig> = networks ? {...networks} : {};
|
|
228
|
+
const canonicalNames = Object.keys(chainByCanonicalName);
|
|
229
|
+
|
|
230
|
+
for (const canonicalName of canonicalNames) {
|
|
231
|
+
const chain = chainByCanonicalName[canonicalName];
|
|
232
|
+
const url = chain.rpcUrls.default.http[0];
|
|
233
|
+
if (!newNetworks[canonicalName]) {
|
|
216
234
|
if (url) {
|
|
217
|
-
newNetworks[
|
|
218
|
-
|
|
235
|
+
newNetworks[canonicalName] = {
|
|
236
|
+
type: 'http',
|
|
219
237
|
url,
|
|
220
|
-
accounts: getAccounts(
|
|
238
|
+
accounts: getAccounts(canonicalName),
|
|
221
239
|
};
|
|
222
240
|
} else {
|
|
223
|
-
|
|
224
|
-
console.error(`no url for network ${networkName}`);
|
|
225
|
-
}
|
|
241
|
+
console.error(`no url for chain ${canonicalName}`);
|
|
226
242
|
}
|
|
243
|
+
} else {
|
|
244
|
+
// console.error(`duplicated chain ${canonicalName}`);
|
|
227
245
|
}
|
|
228
246
|
}
|
|
229
247
|
return newNetworks;
|
|
@@ -262,17 +280,15 @@ export function addForkConfiguration(networks: Record<string, NetworkUserConfig>
|
|
|
262
280
|
}
|
|
263
281
|
}
|
|
264
282
|
|
|
265
|
-
const
|
|
266
|
-
networks.
|
|
267
|
-
? networks.hardhat
|
|
268
|
-
: {type: 'edr-simulated', chainType: 'l1'};
|
|
283
|
+
const existingForkConfiguration: EdrNetworkUserConfig =
|
|
284
|
+
networks.fork && networks.fork.type === 'edr-simulated' ? networks.fork : {type: 'edr-simulated', chainType: 'l1'};
|
|
269
285
|
|
|
270
286
|
const newNetworks: Record<string, NetworkUserConfig> = {
|
|
271
|
-
...
|
|
272
|
-
|
|
273
|
-
...
|
|
287
|
+
...networks,
|
|
288
|
+
fork: {
|
|
289
|
+
...existingForkConfiguration,
|
|
274
290
|
...{
|
|
275
|
-
accounts: hardhatAccounts ||
|
|
291
|
+
accounts: hardhatAccounts || existingForkConfiguration?.accounts,
|
|
276
292
|
forking: forkURL
|
|
277
293
|
? {
|
|
278
294
|
url: forkURL,
|
package/src/tasks/deploy.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {NewTaskActionFunction} from 'hardhat/types/tasks';
|
|
2
2
|
import {loadAndExecuteDeployments} from 'rocketh';
|
|
3
|
+
import {generateForkConfig} from '../helpers.js';
|
|
3
4
|
|
|
4
5
|
interface RunActionArguments {
|
|
5
6
|
saveDeployments: string;
|
|
@@ -10,7 +11,9 @@ interface RunActionArguments {
|
|
|
10
11
|
const runScriptWithHardhat: NewTaskActionFunction<RunActionArguments> = async (args, hre) => {
|
|
11
12
|
let saveDeployments = true;
|
|
12
13
|
let skipPrompts = args.skipPrompts ? true : false;
|
|
13
|
-
|
|
14
|
+
|
|
15
|
+
const {connection, environment, isFork, provider} = await generateForkConfig({hre});
|
|
16
|
+
|
|
14
17
|
const isMemoryNetwork = connection.networkConfig.type == 'edr-simulated';
|
|
15
18
|
if (isMemoryNetwork) {
|
|
16
19
|
skipPrompts = true;
|
|
@@ -23,11 +26,11 @@ const runScriptWithHardhat: NewTaskActionFunction<RunActionArguments> = async (a
|
|
|
23
26
|
|
|
24
27
|
await loadAndExecuteDeployments({
|
|
25
28
|
logLevel: 1,
|
|
26
|
-
provider
|
|
27
|
-
|
|
28
|
-
saveDeployments,
|
|
29
|
+
provider,
|
|
30
|
+
environment: environment,
|
|
31
|
+
saveDeployments: isFork ? false : saveDeployments,
|
|
29
32
|
askBeforeProceeding: skipPrompts ? false : true,
|
|
30
|
-
tags,
|
|
33
|
+
tags: tags?.split(','),
|
|
31
34
|
// reportGasUse: args.skipGasReport ? false : true,
|
|
32
35
|
extra: {connection},
|
|
33
36
|
});
|