hardhat 3.4.1 → 3.4.2
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/CHANGELOG.md +21 -0
- package/dist/src/cli.js +5 -5
- package/dist/src/cli.js.map +1 -1
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js +10 -3
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/exports.d.ts +1 -1
- package/dist/src/internal/builtin-plugins/coverage/exports.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/exports.js +1 -1
- package/dist/src/internal/builtin-plugins/coverage/exports.js.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/helpers/accessors.d.ts +7 -0
- package/dist/src/internal/builtin-plugins/coverage/helpers/accessors.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/coverage/helpers/accessors.js +24 -0
- package/dist/src/internal/builtin-plugins/coverage/helpers/accessors.js.map +1 -0
- package/dist/src/internal/builtin-plugins/coverage/helpers/compat.d.ts +4 -0
- package/dist/src/internal/builtin-plugins/coverage/helpers/compat.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/coverage/helpers/compat.js +27 -0
- package/dist/src/internal/builtin-plugins/coverage/helpers/compat.js.map +1 -0
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/clean.js +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/clean.js.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/hre.js +18 -15
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/test.js +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/test.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js +10 -4
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js +18 -14
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js +2 -7
- package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/config-resolution.js +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/config-resolution.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-constants.d.ts +14 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-constants.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-constants.js +40 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-constants.js.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts +1 -12
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js +0 -39
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/types/hardfork.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/types/hardfork.js +2 -5
- package/dist/src/internal/builtin-plugins/network-manager/edr/types/hardfork.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/helpers.js +1 -1
- package/dist/src/internal/builtin-plugins/node/helpers.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +50 -20
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.js +6 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
- package/dist/src/internal/builtin-plugins/test/task-action.js +1 -1
- package/dist/src/internal/builtin-plugins/test/task-action.js.map +1 -1
- package/dist/src/internal/cli/init/init.d.ts.map +1 -1
- package/dist/src/internal/cli/init/init.js +17 -8
- package/dist/src/internal/cli/init/init.js.map +1 -1
- package/dist/src/internal/cli/init/template.d.ts.map +1 -1
- package/dist/src/internal/cli/init/template.js +5 -14
- package/dist/src/internal/cli/init/template.js.map +1 -1
- package/dist/src/internal/cli/node-version.d.ts +1 -1
- package/dist/src/internal/cli/node-version.d.ts.map +1 -1
- package/dist/src/internal/cli/node-version.js +16 -9
- package/dist/src/internal/cli/node-version.js.map +1 -1
- package/dist/src/internal/core/hook-manager.d.ts.map +1 -1
- package/dist/src/internal/core/hook-manager.js +194 -57
- package/dist/src/internal/core/hook-manager.js.map +1 -1
- package/dist/src/internal/core/hre.js +2 -2
- package/dist/src/internal/core/hre.js.map +1 -1
- package/dist/src/internal/core/lazy-user-interruptions.d.ts +11 -0
- package/dist/src/internal/core/lazy-user-interruptions.d.ts.map +1 -0
- package/dist/src/internal/core/lazy-user-interruptions.js +39 -0
- package/dist/src/internal/core/lazy-user-interruptions.js.map +1 -0
- package/package.json +2 -2
- package/src/cli.ts +5 -5
- package/src/internal/builtin-plugins/artifacts/artifact-manager.ts +12 -5
- package/src/internal/builtin-plugins/coverage/exports.ts +1 -1
- package/src/internal/builtin-plugins/coverage/helpers/accessors.ts +44 -0
- package/src/internal/builtin-plugins/coverage/helpers/compat.ts +37 -0
- package/src/internal/builtin-plugins/coverage/hook-handlers/clean.ts +1 -1
- package/src/internal/builtin-plugins/coverage/hook-handlers/hre.ts +26 -16
- package/src/internal/builtin-plugins/coverage/hook-handlers/solidity.ts +1 -1
- package/src/internal/builtin-plugins/coverage/hook-handlers/test.ts +1 -1
- package/src/internal/builtin-plugins/gas-analytics/helpers/accessors.ts +12 -5
- package/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.ts +29 -17
- package/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.ts +2 -6
- package/src/internal/builtin-plugins/network-manager/config-resolution.ts +1 -1
- package/src/internal/builtin-plugins/network-manager/edr/edr-constants.ts +61 -0
- package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +0 -59
- package/src/internal/builtin-plugins/network-manager/edr/types/hardfork.ts +3 -9
- package/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.ts +1 -1
- package/src/internal/builtin-plugins/node/helpers.ts +1 -1
- package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +69 -43
- package/src/internal/builtin-plugins/solidity/hook-handlers/hre.ts +13 -4
- package/src/internal/builtin-plugins/solidity-test/task-action.ts +1 -1
- package/src/internal/builtin-plugins/test/task-action.ts +1 -1
- package/src/internal/cli/init/init.ts +31 -13
- package/src/internal/cli/init/template.ts +22 -27
- package/src/internal/cli/node-version.ts +19 -11
- package/src/internal/core/hook-manager.ts +265 -101
- package/src/internal/core/hre.ts +2 -2
- package/src/internal/core/lazy-user-interruptions.ts +75 -0
- package/templates/hardhat-3/01-node-test-runner-viem/package.json +2 -2
- package/templates/hardhat-3/02-mocha-ethers/package.json +2 -2
- package/templates/hardhat-3/03-minimal/package.json +1 -1
- package/dist/src/internal/builtin-plugins/coverage/helpers.d.ts +0 -15
- package/dist/src/internal/builtin-plugins/coverage/helpers.d.ts.map +0 -1
- package/dist/src/internal/builtin-plugins/coverage/helpers.js +0 -35
- package/dist/src/internal/builtin-plugins/coverage/helpers.js.map +0 -1
- package/src/internal/builtin-plugins/coverage/helpers.ts +0 -63
|
@@ -1,26 +1,36 @@
|
|
|
1
1
|
import type { HardhatRuntimeEnvironmentHooks } from "../../../../types/hooks.js";
|
|
2
|
+
import type { CoverageManagerImplementation as CoverageManagerImplementationT } from "../coverage-manager.js";
|
|
2
3
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
4
|
+
import { getCoveragePath, setCoverageManager } from "../helpers/accessors.js";
|
|
5
|
+
|
|
6
|
+
let CoverageManagerImplementation:
|
|
7
|
+
| typeof CoverageManagerImplementationT
|
|
8
|
+
| undefined;
|
|
5
9
|
|
|
6
10
|
export default async (): Promise<Partial<HardhatRuntimeEnvironmentHooks>> => ({
|
|
7
11
|
created: async (context, hre) => {
|
|
8
|
-
if (context.globalOptions.coverage) {
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
if (!context.globalOptions.coverage) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
if (CoverageManagerImplementation === undefined) {
|
|
17
|
+
({ CoverageManagerImplementation } = await import(
|
|
18
|
+
"../coverage-manager.js"
|
|
19
|
+
));
|
|
20
|
+
}
|
|
13
21
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
// is enabled or not.
|
|
17
|
-
hre.hooks.registerHandlers("network", {
|
|
18
|
-
onCoverageData: async (_context, coverageData) => {
|
|
19
|
-
await coverageManager.addData(coverageData);
|
|
22
|
+
const coveragePath = getCoveragePath(hre.config.paths.root);
|
|
23
|
+
const coverageManager = new CoverageManagerImplementation(coveragePath);
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
setCoverageManager(hre, coverageManager);
|
|
26
|
+
|
|
27
|
+
// NOTE: We register this hook dynamically because we use the information about
|
|
28
|
+
// the existence of onCoverageData hook handlers to determine whether coverage
|
|
29
|
+
// is enabled or not.
|
|
30
|
+
hre.hooks.registerHandlers("network", {
|
|
31
|
+
onCoverageData: async (_context, coverageData) => {
|
|
32
|
+
await coverageManager.addData(coverageData);
|
|
33
|
+
},
|
|
34
|
+
});
|
|
25
35
|
},
|
|
26
36
|
});
|
|
@@ -9,7 +9,7 @@ import { readUtf8File } from "@nomicfoundation/hardhat-utils/fs";
|
|
|
9
9
|
import { findClosestPackageRoot } from "@nomicfoundation/hardhat-utils/package";
|
|
10
10
|
import debug from "debug";
|
|
11
11
|
|
|
12
|
-
import { getCoverageManager } from "../helpers.js";
|
|
12
|
+
import { getCoverageManager } from "../helpers/accessors.js";
|
|
13
13
|
import { instrumentSolidityFileForCompilationJob } from "../instrumentation.js";
|
|
14
14
|
|
|
15
15
|
const log = debug("hardhat:core:coverage:hook-handlers:solidity");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { HookContext, TestHooks } from "../../../../types/hooks.js";
|
|
2
2
|
|
|
3
|
-
import { getCoverageManager } from "../helpers.js";
|
|
3
|
+
import { getCoverageManager } from "../helpers/accessors.js";
|
|
4
4
|
|
|
5
5
|
export default async (): Promise<Partial<TestHooks>> => ({
|
|
6
6
|
onTestRunStart: async (context, id, next) => {
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
// NOTE: This file is imported from hot paths — the plugin's `created` hook
|
|
2
|
+
// handler and task-actions that may run on every `hardhat test` invocation
|
|
3
|
+
// regardless of whether the feature is enabled. It must stay lightweight:
|
|
4
|
+
// do not add top-level imports that pull in the gas-analytics-manager module
|
|
5
|
+
// graph (chalk, debug, node:crypto, file-system traversal, etc.), or the
|
|
6
|
+
// `--gas-stats` lazy-load is silently defeated for every caller.
|
|
7
|
+
// If a new helper needs a heavy dependency, put it in a sibling file
|
|
8
|
+
// (e.g. `helpers/utils.ts`) so the accessors file's import cost stays flat.
|
|
9
|
+
|
|
1
10
|
import type { HookContext } from "../../../../types/hooks.js";
|
|
2
11
|
import type { HardhatRuntimeEnvironment } from "../../../../types/hre.js";
|
|
3
12
|
import type { GasAnalyticsManager } from "../types.js";
|
|
@@ -5,16 +14,14 @@ import type { GasAnalyticsManager } from "../types.js";
|
|
|
5
14
|
import { assertHardhatInvariant } from "@nomicfoundation/hardhat-errors";
|
|
6
15
|
|
|
7
16
|
import { HardhatRuntimeEnvironmentImplementation } from "../../../core/hre.js";
|
|
8
|
-
import { GasAnalyticsManagerImplementation } from "../gas-analytics-manager.js";
|
|
9
17
|
|
|
10
18
|
export function getGasAnalyticsManager(
|
|
11
19
|
hookContextOrHre: HookContext | HardhatRuntimeEnvironment,
|
|
12
20
|
): GasAnalyticsManager {
|
|
13
21
|
assertHardhatInvariant(
|
|
14
|
-
|
|
15
|
-
hookContextOrHre._gasAnalytics
|
|
16
|
-
|
|
17
|
-
"Expected _gasAnalytics to be an instance of GasAnalyticsManagerImplementation",
|
|
22
|
+
hookContextOrHre instanceof HardhatRuntimeEnvironmentImplementation &&
|
|
23
|
+
hookContextOrHre._gasAnalytics !== undefined,
|
|
24
|
+
"Expected _gasAnalytics to be installed on the HRE",
|
|
18
25
|
);
|
|
19
26
|
return hookContextOrHre._gasAnalytics;
|
|
20
27
|
}
|
|
@@ -1,29 +1,41 @@
|
|
|
1
1
|
import type { HardhatRuntimeEnvironmentHooks } from "../../../../types/hooks.js";
|
|
2
|
+
import type { GasAnalyticsManagerImplementation as GasAnalyticsManagerImplementationT } from "../gas-analytics-manager.js";
|
|
2
3
|
|
|
3
|
-
import { GasAnalyticsManagerImplementation } from "../gas-analytics-manager.js";
|
|
4
4
|
import { setGasAnalyticsManager } from "../helpers/accessors.js";
|
|
5
5
|
|
|
6
|
+
let GasAnalyticsManagerImplementation:
|
|
7
|
+
| typeof GasAnalyticsManagerImplementationT
|
|
8
|
+
| undefined;
|
|
9
|
+
|
|
6
10
|
export default async (): Promise<Partial<HardhatRuntimeEnvironmentHooks>> => ({
|
|
7
11
|
created: async (context, hre) => {
|
|
8
12
|
if (
|
|
9
|
-
context.globalOptions.gasStats
|
|
10
|
-
context.globalOptions.gasStatsJson
|
|
13
|
+
!context.globalOptions.gasStats &&
|
|
14
|
+
context.globalOptions.gasStatsJson === undefined
|
|
11
15
|
) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
);
|
|
15
|
-
|
|
16
|
-
setGasAnalyticsManager(hre, gasAnalyticsManager);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
hre.hooks.registerHandlers("network", {
|
|
23
|
-
onGasMeasurement: (_context, gasMeasurement) => {
|
|
24
|
-
gasAnalyticsManager.addGasMeasurement(gasMeasurement);
|
|
25
|
-
},
|
|
26
|
-
});
|
|
19
|
+
if (GasAnalyticsManagerImplementation === undefined) {
|
|
20
|
+
({ GasAnalyticsManagerImplementation } = await import(
|
|
21
|
+
"../gas-analytics-manager.js"
|
|
22
|
+
));
|
|
27
23
|
}
|
|
24
|
+
|
|
25
|
+
const gasAnalyticsManager = new GasAnalyticsManagerImplementation(
|
|
26
|
+
hre.config.paths.cache,
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
setGasAnalyticsManager(hre, gasAnalyticsManager);
|
|
30
|
+
|
|
31
|
+
// NOTE: We register this hook dynamically to avoid a circular dependency
|
|
32
|
+
// between gas-analytics and network-manager plugins. The network-manager
|
|
33
|
+
// checks for the existence of onGasReported handlers to determine if gas
|
|
34
|
+
// analytics is enabled, rather than directly checking the global option.
|
|
35
|
+
hre.hooks.registerHandlers("network", {
|
|
36
|
+
onGasMeasurement: (_context, gasMeasurement) => {
|
|
37
|
+
gasAnalyticsManager.addGasMeasurement(gasMeasurement);
|
|
38
|
+
},
|
|
39
|
+
});
|
|
28
40
|
},
|
|
29
41
|
});
|
|
@@ -7,6 +7,7 @@ import { ensureError } from "@nomicfoundation/hardhat-utils/error";
|
|
|
7
7
|
import {
|
|
8
8
|
FileNotFoundError,
|
|
9
9
|
readdir,
|
|
10
|
+
readdirOrEmpty,
|
|
10
11
|
readJsonFile,
|
|
11
12
|
remove,
|
|
12
13
|
writeJsonFile,
|
|
@@ -116,9 +117,8 @@ async function deleteOrphanedSnapshotFiles(
|
|
|
116
117
|
snapshotsDir: string,
|
|
117
118
|
currentGroups: Set<string>,
|
|
118
119
|
): Promise<void> {
|
|
119
|
-
let dirEntries: string[];
|
|
120
120
|
try {
|
|
121
|
-
dirEntries = await
|
|
121
|
+
const dirEntries = await readdirOrEmpty(snapshotsDir);
|
|
122
122
|
|
|
123
123
|
for (const entry of dirEntries) {
|
|
124
124
|
if (entry.endsWith(".json")) {
|
|
@@ -131,10 +131,6 @@ async function deleteOrphanedSnapshotFiles(
|
|
|
131
131
|
}
|
|
132
132
|
} catch (error) {
|
|
133
133
|
ensureError(error);
|
|
134
|
-
// Directory doesn't exist yet, nothing to clean up
|
|
135
|
-
if (error instanceof FileNotFoundError) {
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
134
|
throw new HardhatError(
|
|
139
135
|
HardhatError.ERRORS.CORE.SOLIDITY_TESTS.SNAPSHOT_WRITE_ERROR,
|
|
140
136
|
{ snapshotsPath: snapshotsDir, error: error.message },
|
|
@@ -36,7 +36,7 @@ import { DEFAULT_CHAIN_DESCRIPTORS } from "./chain-descriptors.js";
|
|
|
36
36
|
import {
|
|
37
37
|
DEFAULT_EDR_NETWORK_HD_ACCOUNTS_CONFIG_PARAMS,
|
|
38
38
|
EDR_NETWORK_DEFAULT_COINBASE,
|
|
39
|
-
} from "./edr/edr-
|
|
39
|
+
} from "./edr/edr-constants.js";
|
|
40
40
|
import { getCurrentHardfork } from "./edr/types/hardfork.js";
|
|
41
41
|
import { isHttpNetworkHdAccountsUserConfig } from "./type-validation.js";
|
|
42
42
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { EdrNetworkHDAccountsConfig } from "../../../../types/config.js";
|
|
2
|
+
import type { DefaultHDAccountsConfigParams } from "../accounts/constants.js";
|
|
3
|
+
|
|
4
|
+
import { deepEqual } from "@nomicfoundation/hardhat-utils/lang";
|
|
5
|
+
|
|
6
|
+
import { DEFAULT_HD_ACCOUNTS_CONFIG_PARAMS } from "../accounts/constants.js";
|
|
7
|
+
|
|
8
|
+
export const EDR_NETWORK_DEFAULT_COINBASE =
|
|
9
|
+
"0xc014ba5ec014ba5ec014ba5ec014ba5ec014ba5e";
|
|
10
|
+
|
|
11
|
+
interface EdrNetworkDefaultHDAccountsConfigParams
|
|
12
|
+
extends DefaultHDAccountsConfigParams {
|
|
13
|
+
mnemonic: string;
|
|
14
|
+
accountsBalance: bigint;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const EDR_NETWORK_MNEMONIC =
|
|
18
|
+
"test test test test test test test test test test test junk";
|
|
19
|
+
export const DEFAULT_EDR_NETWORK_BALANCE = 10000000000000000000000n;
|
|
20
|
+
export const DEFAULT_EDR_NETWORK_HD_ACCOUNTS_CONFIG_PARAMS: EdrNetworkDefaultHDAccountsConfigParams =
|
|
21
|
+
{
|
|
22
|
+
...DEFAULT_HD_ACCOUNTS_CONFIG_PARAMS,
|
|
23
|
+
mnemonic: EDR_NETWORK_MNEMONIC,
|
|
24
|
+
accountsBalance: DEFAULT_EDR_NETWORK_BALANCE,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export async function isDefaultEdrNetworkHDAccountsConfig(
|
|
28
|
+
accounts: EdrNetworkHDAccountsConfig,
|
|
29
|
+
): Promise<boolean> {
|
|
30
|
+
return await deepEqual(
|
|
31
|
+
{
|
|
32
|
+
...accounts,
|
|
33
|
+
mnemonic: await accounts.mnemonic.get(),
|
|
34
|
+
passphrase: await accounts.passphrase.get(),
|
|
35
|
+
},
|
|
36
|
+
DEFAULT_EDR_NETWORK_HD_ACCOUNTS_CONFIG_PARAMS,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const EDR_NETWORK_DEFAULT_PRIVATE_KEYS: string[] = [
|
|
41
|
+
"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80",
|
|
42
|
+
"0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d",
|
|
43
|
+
"0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a",
|
|
44
|
+
"0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6",
|
|
45
|
+
"0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a",
|
|
46
|
+
"0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba",
|
|
47
|
+
"0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e",
|
|
48
|
+
"0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356",
|
|
49
|
+
"0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97",
|
|
50
|
+
"0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6",
|
|
51
|
+
"0xf214f2b2cd398c806f84e317254e0f0b801d0643303237d97a22a48e01628897",
|
|
52
|
+
"0x701b615bbdfb9de65240bc28bd21bbc0d996645a3dd57e7b12bc2bdf6f192c82",
|
|
53
|
+
"0xa267530f49f8280200edf313ee7af6b827f2a8bce2897751d06a843f644967b1",
|
|
54
|
+
"0x47c99abed3324a2707c28affff1267e45918ec8c3f20b8aa892e8b065d2942dd",
|
|
55
|
+
"0xc526ee95bf44d8fc405a158bb884d9d1238d99f0612e9f33d006bb0789009aaa",
|
|
56
|
+
"0x8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61",
|
|
57
|
+
"0xea6c44ac03bff858b476bba40716402b03e41b8e97e276d1baec7c37d42484a0",
|
|
58
|
+
"0x689af8efa8c651a91ad287602527f3af2fe9f6501a7ac4b061667b5a93e037fd",
|
|
59
|
+
"0xde9be858da4a475276426320d5e9262ecfc3ba460bfac56360bfa6c4c28b4ee0",
|
|
60
|
+
"0xdf57089febbacf7ba0bc227dafbffa9fc08a93fdc68e1e42411a14efcf23656e",
|
|
61
|
+
];
|
|
@@ -3,7 +3,6 @@ import type { LoggerConfig } from "./types/logger.js";
|
|
|
3
3
|
import type {
|
|
4
4
|
ChainDescriptorsConfig,
|
|
5
5
|
EdrNetworkConfig,
|
|
6
|
-
EdrNetworkHDAccountsConfig,
|
|
7
6
|
} from "../../../../types/config.js";
|
|
8
7
|
import type {
|
|
9
8
|
EthSubscription,
|
|
@@ -13,7 +12,6 @@ import type {
|
|
|
13
12
|
SuccessfulJsonRpcResponse,
|
|
14
13
|
} from "../../../../types/providers.js";
|
|
15
14
|
import type { RequireField } from "../../../../types/utils.js";
|
|
16
|
-
import type { DefaultHDAccountsConfigParams } from "../accounts/constants.js";
|
|
17
15
|
import type { JsonRpcRequestWrapperFunction } from "../network-manager.js";
|
|
18
16
|
import type { TraceOutputManager } from "./utils/trace-output.js";
|
|
19
17
|
import type {
|
|
@@ -33,14 +31,12 @@ import {
|
|
|
33
31
|
import { toSeconds } from "@nomicfoundation/hardhat-utils/date";
|
|
34
32
|
import { ensureError } from "@nomicfoundation/hardhat-utils/error";
|
|
35
33
|
import { numberToHexString } from "@nomicfoundation/hardhat-utils/hex";
|
|
36
|
-
import { deepEqual } from "@nomicfoundation/hardhat-utils/lang";
|
|
37
34
|
import debug from "debug";
|
|
38
35
|
|
|
39
36
|
import { sendErrorTelemetry } from "../../../cli/telemetry/error-reporter/reporter.js";
|
|
40
37
|
import { EDR_NETWORK_REVERT_SNAPSHOT_EVENT } from "../../../constants.js";
|
|
41
38
|
import { hardhatChainTypeToEdrChainType } from "../../../edr/chain-type.js";
|
|
42
39
|
import { getGlobalEdrContext } from "../../../edr/context.js";
|
|
43
|
-
import { DEFAULT_HD_ACCOUNTS_CONFIG_PARAMS } from "../accounts/constants.js";
|
|
44
40
|
import { BaseProvider } from "../base-provider.js";
|
|
45
41
|
import { getJsonRpcRequest, isFailedJsonRpcResponse } from "../json-rpc.js";
|
|
46
42
|
import {
|
|
@@ -65,61 +61,6 @@ import { printLine, replaceLastLine } from "./utils/logger.js";
|
|
|
65
61
|
|
|
66
62
|
const log = debug("hardhat:core:hardhat-network:provider");
|
|
67
63
|
|
|
68
|
-
export const EDR_NETWORK_DEFAULT_COINBASE =
|
|
69
|
-
"0xc014ba5ec014ba5ec014ba5ec014ba5ec014ba5e";
|
|
70
|
-
|
|
71
|
-
interface EdrNetworkDefaultHDAccountsConfigParams
|
|
72
|
-
extends DefaultHDAccountsConfigParams {
|
|
73
|
-
mnemonic: string;
|
|
74
|
-
accountsBalance: bigint;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export const EDR_NETWORK_MNEMONIC =
|
|
78
|
-
"test test test test test test test test test test test junk";
|
|
79
|
-
export const DEFAULT_EDR_NETWORK_BALANCE = 10000000000000000000000n;
|
|
80
|
-
export const DEFAULT_EDR_NETWORK_HD_ACCOUNTS_CONFIG_PARAMS: EdrNetworkDefaultHDAccountsConfigParams =
|
|
81
|
-
{
|
|
82
|
-
...DEFAULT_HD_ACCOUNTS_CONFIG_PARAMS,
|
|
83
|
-
mnemonic: EDR_NETWORK_MNEMONIC,
|
|
84
|
-
accountsBalance: DEFAULT_EDR_NETWORK_BALANCE,
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
export async function isDefaultEdrNetworkHDAccountsConfig(
|
|
88
|
-
accounts: EdrNetworkHDAccountsConfig,
|
|
89
|
-
): Promise<boolean> {
|
|
90
|
-
return await deepEqual(
|
|
91
|
-
{
|
|
92
|
-
...accounts,
|
|
93
|
-
mnemonic: await accounts.mnemonic.get(),
|
|
94
|
-
passphrase: await accounts.passphrase.get(),
|
|
95
|
-
},
|
|
96
|
-
DEFAULT_EDR_NETWORK_HD_ACCOUNTS_CONFIG_PARAMS,
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export const EDR_NETWORK_DEFAULT_PRIVATE_KEYS: string[] = [
|
|
101
|
-
"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80",
|
|
102
|
-
"0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d",
|
|
103
|
-
"0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a",
|
|
104
|
-
"0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6",
|
|
105
|
-
"0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a",
|
|
106
|
-
"0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba",
|
|
107
|
-
"0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e",
|
|
108
|
-
"0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356",
|
|
109
|
-
"0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97",
|
|
110
|
-
"0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6",
|
|
111
|
-
"0xf214f2b2cd398c806f84e317254e0f0b801d0643303237d97a22a48e01628897",
|
|
112
|
-
"0x701b615bbdfb9de65240bc28bd21bbc0d996645a3dd57e7b12bc2bdf6f192c82",
|
|
113
|
-
"0xa267530f49f8280200edf313ee7af6b827f2a8bce2897751d06a843f644967b1",
|
|
114
|
-
"0x47c99abed3324a2707c28affff1267e45918ec8c3f20b8aa892e8b065d2942dd",
|
|
115
|
-
"0xc526ee95bf44d8fc405a158bb884d9d1238d99f0612e9f33d006bb0789009aaa",
|
|
116
|
-
"0x8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61",
|
|
117
|
-
"0xea6c44ac03bff858b476bba40716402b03e41b8e97e276d1baec7c37d42484a0",
|
|
118
|
-
"0x689af8efa8c651a91ad287602527f3af2fe9f6501a7ac4b061667b5a93e037fd",
|
|
119
|
-
"0xde9be858da4a475276426320d5e9262ecfc3ba460bfac56360bfa6c4c28b4ee0",
|
|
120
|
-
"0xdf57089febbacf7ba0bc227dafbffa9fc08a93fdc68e1e42411a14efcf23656e",
|
|
121
|
-
];
|
|
122
|
-
|
|
123
64
|
interface EdrProviderConfig {
|
|
124
65
|
chainDescriptors: ChainDescriptorsConfig;
|
|
125
66
|
networkConfig: RequireField<EdrNetworkConfig, "chainType">;
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import type { ChainType } from "../../../../../types/network.js";
|
|
2
2
|
|
|
3
|
-
import { l1HardforkLatest, opLatestHardfork } from "@nomicfoundation/edr";
|
|
4
|
-
|
|
5
3
|
import { OPTIMISM_CHAIN_TYPE } from "../../../../constants.js";
|
|
6
|
-
import {
|
|
7
|
-
edrL1HardforkToHardhatL1HardforkName,
|
|
8
|
-
edrOpHardforkToHardhatOpHardforkName,
|
|
9
|
-
} from "../utils/convert-to-edr.js";
|
|
10
4
|
|
|
11
5
|
export enum L1HardforkName {
|
|
12
6
|
FRONTIER = "chainstart",
|
|
@@ -51,9 +45,9 @@ export function getHardforks(chainType: ChainType): string[] {
|
|
|
51
45
|
}
|
|
52
46
|
|
|
53
47
|
export function getCurrentHardfork(chainType: ChainType): string {
|
|
54
|
-
|
|
55
|
-
?
|
|
56
|
-
|
|
48
|
+
const order =
|
|
49
|
+
chainType === OPTIMISM_CHAIN_TYPE ? OP_HARDFORK_ORDER : L1_HARDFORK_ORDER;
|
|
50
|
+
return order[order.length - 1];
|
|
57
51
|
}
|
|
58
52
|
|
|
59
53
|
/**
|
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
DEFAULT_EDR_NETWORK_BALANCE,
|
|
62
62
|
EDR_NETWORK_DEFAULT_PRIVATE_KEYS,
|
|
63
63
|
isDefaultEdrNetworkHDAccountsConfig,
|
|
64
|
-
} from "../edr-
|
|
64
|
+
} from "../edr-constants.js";
|
|
65
65
|
import { L1HardforkName, OpHardforkName } from "../types/hardfork.js";
|
|
66
66
|
|
|
67
67
|
import { getL1HardforkName, getOpHardforkName } from "./hardfork.js";
|
|
@@ -17,7 +17,7 @@ import chalk from "chalk";
|
|
|
17
17
|
let microEthSigner: typeof MicroEthSignerT | undefined;
|
|
18
18
|
|
|
19
19
|
import { sendErrorTelemetry } from "../../cli/telemetry/error-reporter/reporter.js";
|
|
20
|
-
import { isDefaultEdrNetworkHDAccountsConfig } from "../network-manager/edr/edr-
|
|
20
|
+
import { isDefaultEdrNetworkHDAccountsConfig } from "../network-manager/edr/edr-constants.js";
|
|
21
21
|
import { normalizeEdrNetworkAccountsConfig } from "../network-manager/edr/utils/convert-to-edr.js";
|
|
22
22
|
|
|
23
23
|
export async function formatEdrNetworkConfigAccounts(
|
|
@@ -49,6 +49,7 @@ import {
|
|
|
49
49
|
writeJsonFile,
|
|
50
50
|
writeJsonFileAsStream,
|
|
51
51
|
writeUtf8File,
|
|
52
|
+
readdirOrEmpty,
|
|
52
53
|
} from "@nomicfoundation/hardhat-utils/fs";
|
|
53
54
|
import { shortenPath } from "@nomicfoundation/hardhat-utils/path";
|
|
54
55
|
import { createSpinner } from "@nomicfoundation/hardhat-utils/spinner";
|
|
@@ -176,23 +177,15 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
|
|
|
176
177
|
options: { scope?: BuildScope } = {},
|
|
177
178
|
): Promise<string[]> {
|
|
178
179
|
const scope = options.scope ?? "contracts";
|
|
179
|
-
const unified = !this.#options.solidityConfig.splitTestsCompilation;
|
|
180
180
|
|
|
181
181
|
this.#ensureSplitCompilationModeIfTestsScope(scope);
|
|
182
182
|
|
|
183
|
+
const unified = !this.#options.solidityConfig.splitTestsCompilation;
|
|
184
|
+
const { localContractFiles, sourceTestFiles } =
|
|
185
|
+
await this.#getSoliditySourcesRootFilePaths();
|
|
186
|
+
|
|
183
187
|
switch (scope) {
|
|
184
188
|
case "contracts": {
|
|
185
|
-
const localContractFiles = (
|
|
186
|
-
await Promise.all(
|
|
187
|
-
this.#options.soliditySourcesPaths.map((dir) =>
|
|
188
|
-
getAllFilesMatching(
|
|
189
|
-
dir,
|
|
190
|
-
(f) => f.endsWith(".sol") && !f.endsWith(".t.sol"),
|
|
191
|
-
),
|
|
192
|
-
),
|
|
193
|
-
)
|
|
194
|
-
).flat(1);
|
|
195
|
-
|
|
196
189
|
const npmFilesToBuild =
|
|
197
190
|
this.#options.solidityConfig.npmFilesToBuild.map(
|
|
198
191
|
npmModuleToNpmRootPath,
|
|
@@ -204,18 +197,12 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
|
|
|
204
197
|
|
|
205
198
|
// In unified mode, contracts scope returns all roots: contracts,
|
|
206
199
|
// tests, and npm files.
|
|
207
|
-
const testFiles =
|
|
208
|
-
await
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
return await getAllFilesMatching(dir, (f) =>
|
|
214
|
-
f.endsWith(".t.sol"),
|
|
215
|
-
);
|
|
216
|
-
}),
|
|
217
|
-
])
|
|
218
|
-
).flat(1);
|
|
200
|
+
const testFiles = [
|
|
201
|
+
...(await getAllFilesMatching(this.#options.solidityTestsPath, (f) =>
|
|
202
|
+
f.endsWith(".sol"),
|
|
203
|
+
)),
|
|
204
|
+
...sourceTestFiles,
|
|
205
|
+
];
|
|
219
206
|
|
|
220
207
|
// Remove duplicates in case there is an intersection between
|
|
221
208
|
// the tests.solidity paths and the sources paths
|
|
@@ -224,18 +211,12 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
|
|
|
224
211
|
);
|
|
225
212
|
}
|
|
226
213
|
case "tests": {
|
|
227
|
-
let rootFilePaths =
|
|
228
|
-
await
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
return await getAllFilesMatching(dir, (f) =>
|
|
234
|
-
f.endsWith(".t.sol"),
|
|
235
|
-
);
|
|
236
|
-
}),
|
|
237
|
-
])
|
|
238
|
-
).flat(1);
|
|
214
|
+
let rootFilePaths = [
|
|
215
|
+
...(await getAllFilesMatching(this.#options.solidityTestsPath, (f) =>
|
|
216
|
+
f.endsWith(".sol"),
|
|
217
|
+
)),
|
|
218
|
+
...sourceTestFiles,
|
|
219
|
+
];
|
|
239
220
|
|
|
240
221
|
// NOTE: We remove duplicates in case there is an intersection between
|
|
241
222
|
// the tests.solidity paths and the sources paths
|
|
@@ -245,6 +226,46 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
|
|
|
245
226
|
}
|
|
246
227
|
}
|
|
247
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Returns all the root files from the different solidity source dirs in the
|
|
231
|
+
* config, partitioned into contract files and test files according to their
|
|
232
|
+
* extensions.
|
|
233
|
+
*/
|
|
234
|
+
async #getSoliditySourcesRootFilePaths(): Promise<{
|
|
235
|
+
localContractFiles: string[];
|
|
236
|
+
sourceTestFiles: string[];
|
|
237
|
+
}> {
|
|
238
|
+
const sourceFileGroups = await Promise.all(
|
|
239
|
+
this.#options.soliditySourcesPaths.map(async (dir) => {
|
|
240
|
+
const localSolidityFiles = await getAllFilesMatching(dir, (f) =>
|
|
241
|
+
f.endsWith(".sol"),
|
|
242
|
+
);
|
|
243
|
+
|
|
244
|
+
const localContractFiles: string[] = [];
|
|
245
|
+
const sourceTestFiles: string[] = [];
|
|
246
|
+
|
|
247
|
+
for (const file of localSolidityFiles) {
|
|
248
|
+
if (file.endsWith(".t.sol")) {
|
|
249
|
+
sourceTestFiles.push(file);
|
|
250
|
+
} else {
|
|
251
|
+
localContractFiles.push(file);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return { localContractFiles, sourceTestFiles };
|
|
256
|
+
}),
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
return {
|
|
260
|
+
localContractFiles: sourceFileGroups.flatMap(
|
|
261
|
+
({ localContractFiles }) => localContractFiles,
|
|
262
|
+
),
|
|
263
|
+
sourceTestFiles: sourceFileGroups.flatMap(
|
|
264
|
+
({ sourceTestFiles }) => sourceTestFiles,
|
|
265
|
+
),
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
|
|
248
269
|
public isSuccessfulBuildResult(
|
|
249
270
|
buildResult: CompilationJobCreationError | Map<string, FileBuildResult>,
|
|
250
271
|
): buildResult is Map<string, FileBuildResult> {
|
|
@@ -1102,18 +1123,23 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
|
|
|
1102
1123
|
reachableBuildInfoIds.filter((id) => id !== undefined),
|
|
1103
1124
|
);
|
|
1104
1125
|
|
|
1105
|
-
//
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
);
|
|
1126
|
+
// The build-info directory is expected to be flat: every build-info file
|
|
1127
|
+
// lives directly under it, so a non-recursive `readdir` is enough.
|
|
1128
|
+
const buildInfoFiles = await readdirOrEmpty(buildInfosDir);
|
|
1109
1129
|
|
|
1110
1130
|
for (const buildInfoFile of buildInfoFiles) {
|
|
1111
|
-
|
|
1131
|
+
let id: string | undefined;
|
|
1112
1132
|
|
|
1113
|
-
|
|
1133
|
+
if (buildInfoFile.endsWith(".output.json")) {
|
|
1134
|
+
id = buildInfoFile.slice(0, -".output.json".length);
|
|
1135
|
+
} else if (buildInfoFile.endsWith(".json")) {
|
|
1136
|
+
id = buildInfoFile.slice(0, -".json".length);
|
|
1137
|
+
} else {
|
|
1138
|
+
continue;
|
|
1139
|
+
}
|
|
1114
1140
|
|
|
1115
1141
|
if (!reachableBuildInfoIdsSet.has(id)) {
|
|
1116
|
-
await remove(buildInfoFile);
|
|
1142
|
+
await remove(path.join(buildInfosDir, buildInfoFile));
|
|
1117
1143
|
}
|
|
1118
1144
|
}
|
|
1119
1145
|
|
|
@@ -21,7 +21,14 @@ import type {
|
|
|
21
21
|
CompilerOutputError,
|
|
22
22
|
} from "../../../../types/solidity/compiler-io.js";
|
|
23
23
|
import type { SolidityBuildInfo } from "../../../../types/solidity.js";
|
|
24
|
-
import type {
|
|
24
|
+
import type {
|
|
25
|
+
SolidityBuildSystemOptions,
|
|
26
|
+
SolidityBuildSystemImplementation as SolidityBuildSystemImplementationT,
|
|
27
|
+
} from "../build-system/build-system.js";
|
|
28
|
+
|
|
29
|
+
let SolidityBuildSystemImplementation:
|
|
30
|
+
| typeof SolidityBuildSystemImplementationT
|
|
31
|
+
| undefined;
|
|
25
32
|
|
|
26
33
|
class LazySolidityBuildSystem implements SolidityBuildSystem {
|
|
27
34
|
readonly #hooks: HookManager;
|
|
@@ -126,9 +133,11 @@ class LazySolidityBuildSystem implements SolidityBuildSystem {
|
|
|
126
133
|
}
|
|
127
134
|
|
|
128
135
|
async #getBuildSystem(): Promise<SolidityBuildSystem> {
|
|
129
|
-
|
|
130
|
-
"../build-system/build-system.js"
|
|
131
|
-
|
|
136
|
+
if (SolidityBuildSystemImplementation === undefined) {
|
|
137
|
+
const buildSystemModule = await import("../build-system/build-system.js");
|
|
138
|
+
SolidityBuildSystemImplementation =
|
|
139
|
+
buildSystemModule.SolidityBuildSystemImplementation;
|
|
140
|
+
}
|
|
132
141
|
|
|
133
142
|
if (this.#buildSystem === undefined) {
|
|
134
143
|
this.#buildSystem = new SolidityBuildSystemImplementation(
|
|
@@ -27,7 +27,7 @@ import { getFullyQualifiedName } from "../../../utils/contract-names.js";
|
|
|
27
27
|
import { errorResult, successfulResult } from "../../../utils/result.js";
|
|
28
28
|
import { isSupportedChainType } from "../../edr/chain-type.js";
|
|
29
29
|
import { ArtifactManagerImplementation } from "../artifacts/artifact-manager.js";
|
|
30
|
-
import { getCoverageManager } from "../coverage/helpers.js";
|
|
30
|
+
import { getCoverageManager } from "../coverage/helpers/accessors.js";
|
|
31
31
|
import { getGasAnalyticsManager } from "../gas-analytics/helpers/accessors.js";
|
|
32
32
|
import { edrGasReportToHardhatGasMeasurements } from "../network-manager/edr/utils/convert-to-edr.js";
|
|
33
33
|
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
isResult,
|
|
17
17
|
successfulResult,
|
|
18
18
|
} from "../../../utils/result.js";
|
|
19
|
-
import { getCoverageManager } from "../coverage/helpers.js";
|
|
19
|
+
import { getCoverageManager } from "../coverage/helpers/accessors.js";
|
|
20
20
|
import { getGasAnalyticsManager } from "../gas-analytics/helpers/accessors.js";
|
|
21
21
|
|
|
22
22
|
interface TestActionArguments {
|