hardhat 2.13.0-dev.2 → 2.13.0-dev.3
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/builtin-tasks/compile.js +16 -6
- package/builtin-tasks/compile.js.map +1 -1
- package/builtin-tasks/flatten.js +1 -1
- package/builtin-tasks/flatten.js.map +1 -1
- package/builtin-tasks/help.js +2 -4
- package/builtin-tasks/help.js.map +1 -1
- package/builtin-tasks/task-names.d.ts +1 -0
- package/builtin-tasks/task-names.d.ts.map +1 -1
- package/builtin-tasks/task-names.js +3 -2
- package/builtin-tasks/task-names.js.map +1 -1
- package/builtin-tasks/test.js +22 -1
- package/builtin-tasks/test.js.map +1 -1
- package/internal/cli/bootstrap.d.ts +1 -0
- package/internal/cli/bootstrap.js +12 -20
- package/internal/cli/bootstrap.js.map +1 -1
- package/internal/cli/cli.d.ts +0 -1
- package/internal/cli/cli.d.ts.map +1 -1
- package/internal/cli/cli.js +20 -29
- package/internal/cli/cli.js.map +1 -1
- package/internal/cli/project-creation.d.ts +1 -2
- package/internal/cli/project-creation.d.ts.map +1 -1
- package/internal/cli/project-creation.js +105 -36
- package/internal/cli/project-creation.js.map +1 -1
- package/internal/cli/prompt.d.ts +2 -2
- package/internal/cli/prompt.d.ts.map +1 -1
- package/internal/cli/prompt.js +1 -2
- package/internal/cli/prompt.js.map +1 -1
- package/internal/cli/types.d.ts +1 -0
- package/internal/cli/types.d.ts.map +1 -1
- package/internal/core/config/config-env.d.ts +5 -11
- package/internal/core/config/config-env.d.ts.map +1 -1
- package/internal/core/config/config-env.js +2 -13
- package/internal/core/config/config-env.js.map +1 -1
- package/internal/core/config/config-loading.d.ts +2 -1
- package/internal/core/config/config-loading.d.ts.map +1 -1
- package/internal/core/config/config-loading.js +25 -7
- package/internal/core/config/config-loading.js.map +1 -1
- package/internal/core/config/config-validation.d.ts +2 -0
- package/internal/core/config/config-validation.d.ts.map +1 -1
- package/internal/core/config/config-validation.js +18 -1
- package/internal/core/config/config-validation.js.map +1 -1
- package/internal/core/config/extenders.d.ts +4 -7
- package/internal/core/config/extenders.d.ts.map +1 -1
- package/internal/core/config/extenders.js +5 -12
- package/internal/core/config/extenders.js.map +1 -1
- package/internal/core/errors-list.d.ts +28 -7
- package/internal/core/errors-list.d.ts.map +1 -1
- package/internal/core/errors-list.js +33 -10
- package/internal/core/errors-list.js.map +1 -1
- package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -3
- package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
- package/internal/core/project-structure.d.ts.map +1 -1
- package/internal/core/project-structure.js +6 -0
- package/internal/core/project-structure.js.map +1 -1
- package/internal/core/providers/construction.d.ts.map +1 -1
- package/internal/core/providers/construction.js +25 -5
- package/internal/core/providers/construction.js.map +1 -1
- package/internal/core/providers/http.d.ts +2 -2
- package/internal/core/providers/http.d.ts.map +1 -1
- package/internal/core/providers/http.js +41 -19
- package/internal/core/providers/http.js.map +1 -1
- package/internal/core/runtime-environment.d.ts +4 -2
- package/internal/core/runtime-environment.d.ts.map +1 -1
- package/internal/core/runtime-environment.js +39 -47
- package/internal/core/runtime-environment.js.map +1 -1
- package/internal/core/tasks/dsl.d.ts +6 -6
- package/internal/core/tasks/dsl.d.ts.map +1 -1
- package/internal/core/tasks/dsl.js.map +1 -1
- package/internal/core/tasks/task-definitions.d.ts +2 -2
- package/internal/core/tasks/task-definitions.d.ts.map +1 -1
- package/internal/core/tasks/task-definitions.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.d.ts +1 -0
- package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.js +13 -18
- package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
- package/internal/hardhat-network/provider/RethnetState.d.ts +26 -0
- package/internal/hardhat-network/provider/RethnetState.d.ts.map +1 -0
- package/internal/hardhat-network/provider/RethnetState.js +84 -0
- package/internal/hardhat-network/provider/RethnetState.js.map +1 -0
- package/internal/hardhat-network/provider/modules/evm.d.ts +2 -1
- package/internal/hardhat-network/provider/modules/evm.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/evm.js +10 -4
- package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +1 -0
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +6 -4
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/provider.d.ts +25 -21
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js +25 -42
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/return-data.js +2 -2
- package/internal/hardhat-network/provider/return-data.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +4 -2
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +4 -2
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +4 -2
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/utils/bloom.d.ts +32 -0
- package/internal/hardhat-network/provider/utils/bloom.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/bloom.js +79 -0
- package/internal/hardhat-network/provider/utils/bloom.js.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +12 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.js +162 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +1 -0
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +7 -0
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js +31 -0
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -0
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js +2 -2
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
- package/internal/hardhat-network/provider/vm/block-builder.d.ts +31 -0
- package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder.js +151 -0
- package/internal/hardhat-network/provider/vm/block-builder.js.map +1 -0
- package/internal/hardhat-network/provider/vm/creation.d.ts +10 -0
- package/internal/hardhat-network/provider/vm/creation.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/creation.js +29 -0
- package/internal/hardhat-network/provider/vm/creation.js.map +1 -0
- package/internal/hardhat-network/provider/vm/dual.d.ts +43 -0
- package/internal/hardhat-network/provider/vm/dual.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/dual.js +488 -0
- package/internal/hardhat-network/provider/vm/dual.js.map +1 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +56 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.js +416 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.js.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts +23 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.js +130 -0
- package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
- package/internal/hardhat-network/provider/vm/rethnet.d.ts +99 -0
- package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/rethnet.js +284 -0
- package/internal/hardhat-network/provider/vm/rethnet.js.map +1 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +52 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.js +3 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.js.map +1 -0
- package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/compiler-to-model.js +37 -11
- package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
- package/internal/hardhat-network/stack-traces/constants.js +1 -1
- package/internal/hardhat-network/stack-traces/debug.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +6 -2
- package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.d.ts +1 -0
- package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +85 -55
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/model.d.ts +3 -1
- package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/model.js +9 -1
- package/internal/hardhat-network/stack-traces/model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -2
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +2 -2
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +1 -0
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/internal/lib/hardhat-lib.d.ts.map +1 -1
- package/internal/lib/hardhat-lib.js +1 -4
- package/internal/lib/hardhat-lib.js.map +1 -1
- package/internal/solidity/compiler/downloader.js +2 -2
- package/internal/solidity/compiler/downloader.js.map +1 -1
- package/internal/solidity/compiler/index.js +1 -1
- package/internal/solidity/compiler/index.js.map +1 -1
- package/internal/solidity/resolver.d.ts +4 -3
- package/internal/solidity/resolver.d.ts.map +1 -1
- package/internal/solidity/resolver.js +18 -7
- package/internal/solidity/resolver.js.map +1 -1
- package/internal/util/abi-helpers.d.ts +1 -0
- package/internal/util/abi-helpers.d.ts.map +1 -1
- package/internal/util/abi-helpers.js +9 -0
- package/internal/util/abi-helpers.js.map +1 -1
- package/internal/util/download.d.ts.map +1 -1
- package/internal/util/download.js +12 -11
- package/internal/util/download.js.map +1 -1
- package/internal/util/packageInfo.d.ts +6 -1
- package/internal/util/packageInfo.d.ts.map +1 -1
- package/internal/util/packageInfo.js +14 -11
- package/internal/util/packageInfo.js.map +1 -1
- package/internal/util/proxy.d.ts +2 -0
- package/internal/util/proxy.d.ts.map +1 -0
- package/internal/util/proxy.js +19 -0
- package/internal/util/proxy.js.map +1 -0
- package/package.json +9 -10
- package/register.js +1 -4
- package/register.js.map +1 -1
- package/sample-projects/javascript/hardhat.config.js +1 -1
- package/sample-projects/javascript/scripts/deploy.js +2 -2
- package/sample-projects/javascript-esm/LICENSE.md +11 -0
- package/sample-projects/javascript-esm/README.md +13 -0
- package/sample-projects/javascript-esm/contracts/Lock.sol +34 -0
- package/sample-projects/javascript-esm/hardhat.config.cjs +6 -0
- package/sample-projects/javascript-esm/scripts/deploy.js +22 -0
- package/sample-projects/javascript-esm/test/Lock.js +123 -0
- package/sample-projects/typescript/hardhat.config.ts +1 -1
- package/sample-projects/typescript/scripts/deploy.ts +2 -2
- package/sample-projects/typescript/tsconfig.json +2 -1
- package/src/builtin-tasks/compile.ts +28 -7
- package/src/builtin-tasks/flatten.ts +4 -1
- package/src/builtin-tasks/help.ts +15 -16
- package/src/builtin-tasks/task-names.ts +2 -0
- package/src/builtin-tasks/test.ts +30 -2
- package/src/internal/artifacts.ts +947 -0
- package/src/internal/cli/bootstrap.ts +14 -36
- package/src/internal/cli/cli.ts +38 -43
- package/src/internal/cli/project-creation.ts +128 -47
- package/src/internal/cli/prompt.ts +2 -4
- package/src/internal/cli/types.ts +2 -0
- package/src/internal/core/config/config-env.ts +15 -27
- package/src/internal/core/config/config-loading.ts +35 -11
- package/src/internal/core/config/config-validation.ts +20 -0
- package/src/internal/core/config/extenders.ts +6 -15
- package/src/internal/core/errors-list.ts +36 -10
- package/src/internal/core/project-structure.ts +8 -0
- package/src/internal/core/providers/construction.ts +29 -24
- package/src/internal/core/providers/http.ts +38 -26
- package/src/internal/core/runtime-environment.ts +65 -60
- package/src/internal/core/tasks/dsl.ts +17 -17
- package/src/internal/core/tasks/task-definitions.ts +6 -2
- package/src/internal/hardhat-network/jsonrpc/handler.ts +31 -28
- package/src/internal/hardhat-network/provider/modules/evm.ts +15 -3
- package/src/internal/hardhat-network/provider/node-types.ts +1 -1
- package/src/internal/hardhat-network/provider/node.ts +5 -1
- package/src/internal/hardhat-network/provider/provider.ts +60 -49
- package/src/internal/hardhat-network/provider/return-data.ts +2 -2
- package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +5 -2
- package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +5 -2
- package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +5 -2
- package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +46 -0
- package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +71 -9
- package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/debug.ts +9 -2
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +177 -89
- package/src/internal/hardhat-network/stack-traces/model.ts +11 -1
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +3 -0
- package/src/internal/lib/hardhat-lib.ts +1 -6
- package/src/internal/solidity/compiler/downloader.ts +2 -2
- package/src/internal/solidity/compiler/index.ts +1 -1
- package/src/internal/solidity/resolver.ts +28 -11
- package/src/internal/util/abi-helpers.ts +9 -0
- package/src/internal/util/download.ts +13 -15
- package/src/internal/util/packageInfo.ts +24 -10
- package/src/internal/util/proxy.ts +18 -0
- package/src/register.ts +1 -6
- package/src/types/artifacts.ts +14 -112
- package/src/types/config.ts +2 -0
- package/src/types/runtime.ts +16 -13
- package/types/artifacts.d.ts +10 -96
- package/types/artifacts.d.ts.map +1 -1
- package/types/config.d.ts +2 -0
- package/types/config.d.ts.map +1 -1
- package/types/runtime.d.ts +9 -10
- package/types/runtime.d.ts.map +1 -1
- package/internal/artifacts/caching.d.ts +0 -28
- package/internal/artifacts/caching.d.ts.map +0 -1
- package/internal/artifacts/caching.js +0 -178
- package/internal/artifacts/caching.js.map +0 -1
- package/internal/artifacts/index.d.ts +0 -45
- package/internal/artifacts/index.d.ts.map +0 -1
- package/internal/artifacts/index.js +0 -191
- package/internal/artifacts/index.js.map +0 -1
- package/internal/artifacts/mutable.d.ts +0 -29
- package/internal/artifacts/mutable.d.ts.map +0 -1
- package/internal/artifacts/mutable.js +0 -226
- package/internal/artifacts/mutable.js.map +0 -1
- package/internal/artifacts/readonly.d.ts +0 -94
- package/internal/artifacts/readonly.d.ts.map +0 -1
- package/internal/artifacts/readonly.js +0 -343
- package/internal/artifacts/readonly.js.map +0 -1
- package/src/internal/artifacts/caching.ts +0 -259
- package/src/internal/artifacts/index.ts +0 -302
- package/src/internal/artifacts/mutable.ts +0 -330
- package/src/internal/artifacts/readonly.ts +0 -470
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
HardhatArguments,
|
|
11
11
|
HardhatConfig,
|
|
12
12
|
HardhatUserConfig,
|
|
13
|
+
SolcConfig,
|
|
13
14
|
} from "../../../types";
|
|
14
15
|
import { HardhatContext } from "../../context";
|
|
15
16
|
import { findClosestPackageJson } from "../../util/packageInfo";
|
|
@@ -19,14 +20,27 @@ import { getUserConfigPath } from "../project-structure";
|
|
|
19
20
|
|
|
20
21
|
import { SUPPORTED_SOLIDITY_VERSION_RANGE } from "../../hardhat-network/stack-traces/constants";
|
|
21
22
|
import { resolveConfig } from "./config-resolution";
|
|
22
|
-
import { validateConfig } from "./config-validation";
|
|
23
|
+
import { validateConfig, validateResolvedConfig } from "./config-validation";
|
|
23
24
|
import { DEFAULT_SOLC_VERSION } from "./default-config";
|
|
24
25
|
|
|
25
26
|
const log = debug("hardhat:core:config");
|
|
26
27
|
|
|
27
28
|
function importCsjOrEsModule(filePath: string): any {
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
try {
|
|
30
|
+
const imported = require(filePath);
|
|
31
|
+
return imported.default !== undefined ? imported.default : imported;
|
|
32
|
+
} catch (e: any) {
|
|
33
|
+
if (e.code === "ERR_REQUIRE_ESM") {
|
|
34
|
+
throw new HardhatError(
|
|
35
|
+
ERRORS.GENERAL.ESM_PROJECT_WITHOUT_CJS_CONFIG,
|
|
36
|
+
{},
|
|
37
|
+
e
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
42
|
+
throw e;
|
|
43
|
+
}
|
|
30
44
|
}
|
|
31
45
|
|
|
32
46
|
export function resolveConfigPath(configPath: string | undefined) {
|
|
@@ -108,6 +122,8 @@ export function loadConfigAndTasks(
|
|
|
108
122
|
extender(resolved, frozenUserConfig);
|
|
109
123
|
}
|
|
110
124
|
|
|
125
|
+
validateResolvedConfig(resolved);
|
|
126
|
+
|
|
111
127
|
if (showSolidityConfigWarnings) {
|
|
112
128
|
checkUnsupportedSolidityConfig(resolved);
|
|
113
129
|
checkUnsupportedRemappings(resolved);
|
|
@@ -165,6 +181,8 @@ export function analyzeModuleNotFoundError(error: any, configPath: string) {
|
|
|
165
181
|
const throwingFile = stackTrace
|
|
166
182
|
.filter((x) => x.file !== null)
|
|
167
183
|
.map((x) => x.file!)
|
|
184
|
+
// ignore frames related to source map support
|
|
185
|
+
.filter((x) => !x.includes(path.join("@cspotcode", "source-map-support")))
|
|
168
186
|
.find((x) => path.isAbsolute(x));
|
|
169
187
|
|
|
170
188
|
if (throwingFile === null || throwingFile === undefined) {
|
|
@@ -269,17 +287,15 @@ Learn more about compiler configuration at https://hardhat.org/config
|
|
|
269
287
|
}
|
|
270
288
|
|
|
271
289
|
function checkUnsupportedSolidityConfig(resolvedConfig: HardhatConfig) {
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
);
|
|
275
|
-
const overrideVersions = Object.values(resolvedConfig.solidity.overrides).map(
|
|
276
|
-
(x) => x.version
|
|
277
|
-
);
|
|
278
|
-
const solcVersions = [...compilerVersions, ...overrideVersions];
|
|
290
|
+
const configuredCompilers = getConfiguredCompilers(resolvedConfig.solidity);
|
|
291
|
+
const solcVersions = configuredCompilers.map((x) => x.version);
|
|
279
292
|
|
|
280
293
|
const unsupportedVersions: string[] = [];
|
|
281
294
|
for (const solcVersion of solcVersions) {
|
|
282
|
-
if (
|
|
295
|
+
if (
|
|
296
|
+
!semver.satisfies(solcVersion, SUPPORTED_SOLIDITY_VERSION_RANGE) &&
|
|
297
|
+
!unsupportedVersions.includes(solcVersion)
|
|
298
|
+
) {
|
|
283
299
|
unsupportedVersions.push(solcVersion);
|
|
284
300
|
}
|
|
285
301
|
}
|
|
@@ -318,3 +334,11 @@ Learn more about compiler configuration at https://hardhat.org/config
|
|
|
318
334
|
);
|
|
319
335
|
}
|
|
320
336
|
}
|
|
337
|
+
|
|
338
|
+
export function getConfiguredCompilers(
|
|
339
|
+
solidityConfig: HardhatConfig["solidity"]
|
|
340
|
+
): SolcConfig[] {
|
|
341
|
+
const compilerVersions = solidityConfig.compilers;
|
|
342
|
+
const overrideVersions = Object.values(solidityConfig.overrides);
|
|
343
|
+
return [...compilerVersions, ...overrideVersions];
|
|
344
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { HardhatConfig as HardhatConfigT } from "../../../types";
|
|
2
|
+
|
|
1
3
|
import * as t from "io-ts";
|
|
2
4
|
import { Context, getFunctionName, ValidationError } from "io-ts/lib";
|
|
3
5
|
import { Reporter } from "io-ts/lib/Reporter";
|
|
@@ -573,3 +575,21 @@ export function getValidationErrors(config: any): string[] {
|
|
|
573
575
|
const ioTsErrors = DotPathReporter.report(result);
|
|
574
576
|
return [...errors, ...ioTsErrors];
|
|
575
577
|
}
|
|
578
|
+
|
|
579
|
+
export function validateResolvedConfig(resolvedConfig: HardhatConfigT) {
|
|
580
|
+
const solcConfigs = [
|
|
581
|
+
...resolvedConfig.solidity.compilers,
|
|
582
|
+
...Object.values(resolvedConfig.solidity.overrides),
|
|
583
|
+
];
|
|
584
|
+
const runs = solcConfigs
|
|
585
|
+
.filter(({ settings }) => settings?.optimizer?.runs !== undefined)
|
|
586
|
+
.map(({ settings }) => settings?.optimizer?.runs);
|
|
587
|
+
|
|
588
|
+
for (const run of runs) {
|
|
589
|
+
if (run >= 2 ** 32) {
|
|
590
|
+
throw new HardhatError(ERRORS.GENERAL.INVALID_CONFIG, {
|
|
591
|
+
errors: "The number of optimizer runs exceeds the maximum of 2**32 - 1",
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|
|
@@ -1,22 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EnvironmentExtender } from "../../../types";
|
|
2
2
|
|
|
3
3
|
export class ExtenderManager {
|
|
4
|
-
private readonly
|
|
5
|
-
private readonly _artifactsExtenders: ArtifactsExtender[] = [];
|
|
4
|
+
private readonly _extenders: EnvironmentExtender[] = [];
|
|
6
5
|
|
|
7
|
-
public
|
|
8
|
-
this.
|
|
6
|
+
public add(extender: EnvironmentExtender) {
|
|
7
|
+
this._extenders.push(extender);
|
|
9
8
|
}
|
|
10
9
|
|
|
11
|
-
public
|
|
12
|
-
this.
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
public getEnvironmentExtenders(): EnvironmentExtender[] {
|
|
16
|
-
return this._environmentExtenders;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
public getArtifactsExtenders(): ArtifactsExtender[] {
|
|
20
|
-
return this._artifactsExtenders;
|
|
10
|
+
public getExtenders(): EnvironmentExtender[] {
|
|
11
|
+
return this._extenders;
|
|
21
12
|
}
|
|
22
13
|
}
|
|
@@ -252,6 +252,23 @@ To avoid it, please delete both your node_modules and package-lock.json, and rei
|
|
|
252
252
|
Note that you don't need to do this every time you install a new dependency, but please make sure to delete your node_modules every time you delete your package-lock.json.`,
|
|
253
253
|
shouldBeReported: false,
|
|
254
254
|
},
|
|
255
|
+
ESM_PROJECT_WITHOUT_CJS_CONFIG: {
|
|
256
|
+
number: 19,
|
|
257
|
+
message: `Your project is an ESM project (you have "type": "module" set in your package.json) but your Hardhat config file uses the .js extension.
|
|
258
|
+
|
|
259
|
+
Rename the file to use the .cjs to fix this problem.`,
|
|
260
|
+
title: "Hardhat config with .js extension in an ESM project",
|
|
261
|
+
description:
|
|
262
|
+
"Your project is an ESM project but your Hardhat config uses the .js extension. Hardhat config files cannot be an ES module. To fix this, rename your Hardhat config to use the .cjs extension.",
|
|
263
|
+
shouldBeReported: false,
|
|
264
|
+
},
|
|
265
|
+
ESM_TYPESCRIPT_PROJECT_CREATION: {
|
|
266
|
+
number: 20,
|
|
267
|
+
message: `Your project is an ESM project (you have "type": "module" set in your package.json) and you are trying to initialize a TypeScript project. This is not supported yet.`,
|
|
268
|
+
title: "Initializing a TypeScript sample project in an ESM project",
|
|
269
|
+
description: `Your project is an ESM project (you have "type": "module" set in your package.json) and you are trying to initialize a TypeScript project. This is not supported yet.`,
|
|
270
|
+
shouldBeReported: false,
|
|
271
|
+
},
|
|
255
272
|
},
|
|
256
273
|
NETWORK: {
|
|
257
274
|
CONFIG_NOT_FOUND: {
|
|
@@ -819,6 +836,16 @@ Try installing the library using npm.`,
|
|
|
819
836
|
Use a relative import instead of referencing the package's name.`,
|
|
820
837
|
shouldBeReported: false,
|
|
821
838
|
},
|
|
839
|
+
IMPORTED_MAPPED_FILE_NOT_FOUND: {
|
|
840
|
+
number: 413,
|
|
841
|
+
message:
|
|
842
|
+
"File %importName% => %imported%, imported from %from%, not found.",
|
|
843
|
+
title: "Imported mapped file not found",
|
|
844
|
+
description: `One of your source files imported a nonexistent or not installed file.
|
|
845
|
+
|
|
846
|
+
Please double check your imports and installed libraries.`,
|
|
847
|
+
shouldBeReported: false,
|
|
848
|
+
},
|
|
822
849
|
},
|
|
823
850
|
SOLC: {
|
|
824
851
|
INVALID_VERSION: {
|
|
@@ -933,7 +960,7 @@ We recommend not using this kind of dependency.`,
|
|
|
933
960
|
number: 604,
|
|
934
961
|
message: "Error running JSON-RPC server: %error%",
|
|
935
962
|
title: "Error running JSON-RPC server",
|
|
936
|
-
description: `There was error while starting the JSON-RPC HTTP server.`,
|
|
963
|
+
description: `There was an error while starting the JSON-RPC HTTP server.`,
|
|
937
964
|
shouldBeReported: false,
|
|
938
965
|
},
|
|
939
966
|
JSONRPC_UNSUPPORTED_NETWORK: {
|
|
@@ -973,6 +1000,14 @@ The first supported version is %firstSupportedVersion%`,
|
|
|
973
1000
|
Please use a newer, supported version.`,
|
|
974
1001
|
shouldBeReported: true,
|
|
975
1002
|
},
|
|
1003
|
+
TEST_TASK_ESM_TESTS_RUN_TWICE: {
|
|
1004
|
+
number: 609,
|
|
1005
|
+
message: `Your project uses ESM and you've programmatically run your tests twice. This is not supported yet.`,
|
|
1006
|
+
title: "Running tests twice in an ESM project",
|
|
1007
|
+
description:
|
|
1008
|
+
'You have run your tests twice programmatically and your project is an ESM project (you have `"type": "module"` in your `package.json`, or some of your files have the `.mjs` extension). This is not supported by Mocha yet.',
|
|
1009
|
+
shouldBeReported: true,
|
|
1010
|
+
},
|
|
976
1011
|
},
|
|
977
1012
|
ARTIFACTS: {
|
|
978
1013
|
NOT_FOUND: {
|
|
@@ -1068,15 +1103,6 @@ Please [report it](https://github.com/nomiclabs/hardhat/issues/new) to help us i
|
|
|
1068
1103
|
title: "Inferred artifact path doesn't exist",
|
|
1069
1104
|
description: `The inferred artifact path doesn't exist.
|
|
1070
1105
|
|
|
1071
|
-
Please [report it](https://github.com/nomiclabs/hardhat/issues/new) to help us improve Hardhat.`,
|
|
1072
|
-
shouldBeReported: true,
|
|
1073
|
-
},
|
|
1074
|
-
NO_SUPPORTED_ARTIFACT_SOURCE: {
|
|
1075
|
-
number: 904,
|
|
1076
|
-
message: "No configured artifact source can handle method %method%",
|
|
1077
|
-
title: "No configured artifact source can handle the request",
|
|
1078
|
-
description: `No configured artifact source can handle the requested method.
|
|
1079
|
-
|
|
1080
1106
|
Please [report it](https://github.com/nomiclabs/hardhat/issues/new) to help us improve Hardhat.`,
|
|
1081
1107
|
shouldBeReported: true,
|
|
1082
1108
|
},
|
|
@@ -6,12 +6,15 @@ import { getPackageRoot } from "../util/packageInfo";
|
|
|
6
6
|
|
|
7
7
|
import { HardhatError } from "./errors";
|
|
8
8
|
import { ERRORS } from "./errors-list";
|
|
9
|
+
|
|
9
10
|
const JS_CONFIG_FILENAME = "hardhat.config.js";
|
|
11
|
+
const CJS_CONFIG_FILENAME = "hardhat.config.cjs";
|
|
10
12
|
const TS_CONFIG_FILENAME = "hardhat.config.ts";
|
|
11
13
|
|
|
12
14
|
export function isCwdInsideProject() {
|
|
13
15
|
return (
|
|
14
16
|
findUp.sync(TS_CONFIG_FILENAME) !== null ||
|
|
17
|
+
findUp.sync(CJS_CONFIG_FILENAME) !== null ||
|
|
15
18
|
findUp.sync(JS_CONFIG_FILENAME) !== null
|
|
16
19
|
);
|
|
17
20
|
}
|
|
@@ -22,6 +25,11 @@ export function getUserConfigPath() {
|
|
|
22
25
|
return tsConfigPath;
|
|
23
26
|
}
|
|
24
27
|
|
|
28
|
+
const cjsConfigPath = findUp.sync(CJS_CONFIG_FILENAME);
|
|
29
|
+
if (cjsConfigPath !== null) {
|
|
30
|
+
return cjsConfigPath;
|
|
31
|
+
}
|
|
32
|
+
|
|
25
33
|
const pathToConfigFile = findUp.sync(JS_CONFIG_FILENAME);
|
|
26
34
|
if (pathToConfigFile === null) {
|
|
27
35
|
throw new HardhatError(ERRORS.GENERAL.NOT_INSIDE_PROJECT);
|
|
@@ -86,31 +86,36 @@ export function createProvider(
|
|
|
86
86
|
require("../../hardhat-network/provider/utils/disk-cache") as typeof DiskCacheT;
|
|
87
87
|
|
|
88
88
|
eip1193Provider = new HardhatNetworkProvider(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
89
|
+
{
|
|
90
|
+
chainId: hardhatNetConfig.chainId,
|
|
91
|
+
networkId: hardhatNetConfig.chainId,
|
|
92
|
+
hardfork: hardhatNetConfig.hardfork,
|
|
93
|
+
blockGasLimit: hardhatNetConfig.blockGasLimit,
|
|
94
|
+
initialBaseFeePerGas: hardhatNetConfig.initialBaseFeePerGas,
|
|
95
|
+
minGasPrice: hardhatNetConfig.minGasPrice,
|
|
96
|
+
throwOnTransactionFailures: hardhatNetConfig.throwOnTransactionFailures,
|
|
97
|
+
throwOnCallFailures: hardhatNetConfig.throwOnCallFailures,
|
|
98
|
+
automine: hardhatNetConfig.mining.auto,
|
|
99
|
+
intervalMining: hardhatNetConfig.mining.interval,
|
|
100
|
+
// This cast is valid because of the config validation and resolution
|
|
101
|
+
mempoolOrder: hardhatNetConfig.mining.mempool.order as MempoolOrder,
|
|
102
|
+
chains: hardhatNetConfig.chains,
|
|
103
|
+
coinbase: hardhatNetConfig.coinbase,
|
|
104
|
+
genesisAccounts: accounts,
|
|
105
|
+
allowUnlimitedContractSize: hardhatNetConfig.allowUnlimitedContractSize,
|
|
106
|
+
allowBlocksWithSameTimestamp:
|
|
107
|
+
hardhatNetConfig.allowBlocksWithSameTimestamp ?? false,
|
|
108
|
+
initialDate:
|
|
109
|
+
hardhatNetConfig.initialDate !== undefined
|
|
110
|
+
? parseDateString(hardhatNetConfig.initialDate)
|
|
111
|
+
: undefined,
|
|
112
|
+
experimentalHardhatNetworkMessageTraceHooks,
|
|
113
|
+
forkConfig,
|
|
114
|
+
forkCachePath:
|
|
115
|
+
paths !== undefined ? getForkCacheDirPath(paths) : undefined,
|
|
116
|
+
},
|
|
103
117
|
new ModulesLogger(hardhatNetConfig.loggingEnabled),
|
|
104
|
-
|
|
105
|
-
artifacts,
|
|
106
|
-
hardhatNetConfig.allowUnlimitedContractSize,
|
|
107
|
-
hardhatNetConfig.initialDate !== undefined
|
|
108
|
-
? parseDateString(hardhatNetConfig.initialDate)
|
|
109
|
-
: undefined,
|
|
110
|
-
experimentalHardhatNetworkMessageTraceHooks,
|
|
111
|
-
forkConfig,
|
|
112
|
-
paths !== undefined ? getForkCacheDirPath(paths) : undefined,
|
|
113
|
-
hardhatNetConfig.coinbase
|
|
118
|
+
artifacts
|
|
114
119
|
);
|
|
115
120
|
} else {
|
|
116
121
|
const HttpProvider = importProvider<
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import type * as Undici from "undici";
|
|
2
2
|
|
|
3
3
|
import { EventEmitter } from "events";
|
|
4
4
|
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
import { getHardhatVersion } from "../../util/packageInfo";
|
|
18
18
|
import { HardhatError } from "../errors";
|
|
19
19
|
import { ERRORS } from "../errors-list";
|
|
20
|
+
import { shouldUseProxy } from "../../util/proxy";
|
|
20
21
|
|
|
21
22
|
import { ProviderError } from "./errors";
|
|
22
23
|
|
|
@@ -33,7 +34,7 @@ const hardhatVersion = getHardhatVersion();
|
|
|
33
34
|
|
|
34
35
|
export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
35
36
|
private _nextRequestId = 1;
|
|
36
|
-
private _dispatcher: Dispatcher;
|
|
37
|
+
private _dispatcher: Undici.Dispatcher;
|
|
37
38
|
private _path: string;
|
|
38
39
|
private _authHeader: string | undefined;
|
|
39
40
|
|
|
@@ -42,11 +43,11 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
42
43
|
private readonly _networkName: string,
|
|
43
44
|
private readonly _extraHeaders: { [name: string]: string } = {},
|
|
44
45
|
private readonly _timeout = 20000,
|
|
45
|
-
client: Dispatcher | undefined = undefined
|
|
46
|
+
client: Undici.Dispatcher | undefined = undefined
|
|
46
47
|
) {
|
|
47
48
|
super();
|
|
48
49
|
|
|
49
|
-
const { Pool } = require("undici") as
|
|
50
|
+
const { Pool, ProxyAgent } = require("undici") as typeof Undici;
|
|
50
51
|
|
|
51
52
|
const url = new URL(this._url);
|
|
52
53
|
this._path = url.pathname;
|
|
@@ -59,6 +60,10 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
59
60
|
).toString("base64")}`;
|
|
60
61
|
try {
|
|
61
62
|
this._dispatcher = client ?? new Pool(url.origin);
|
|
63
|
+
|
|
64
|
+
if (process.env.http_proxy !== undefined && shouldUseProxy(url.origin)) {
|
|
65
|
+
this._dispatcher = new ProxyAgent(process.env.http_proxy);
|
|
66
|
+
}
|
|
62
67
|
} catch (e) {
|
|
63
68
|
if (e instanceof TypeError && e.message === "Invalid URL") {
|
|
64
69
|
e.message += ` ${url.origin}`;
|
|
@@ -73,10 +78,6 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
73
78
|
}
|
|
74
79
|
|
|
75
80
|
public async request(args: RequestArguments): Promise<unknown> {
|
|
76
|
-
// We create the error here to capture the stack traces at this point,
|
|
77
|
-
// the async call that follows would probably loose of the stack trace
|
|
78
|
-
const error = new ProviderError("HttpProviderError", -1);
|
|
79
|
-
|
|
80
81
|
const jsonRpcRequest = this._getJsonRpcRequest(
|
|
81
82
|
args.method,
|
|
82
83
|
args.params as any[]
|
|
@@ -84,8 +85,10 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
84
85
|
const jsonRpcResponse = await this._fetchJsonRpcResponse(jsonRpcRequest);
|
|
85
86
|
|
|
86
87
|
if (isErrorResponse(jsonRpcResponse)) {
|
|
87
|
-
error
|
|
88
|
-
|
|
88
|
+
const error = new ProviderError(
|
|
89
|
+
jsonRpcResponse.error.message,
|
|
90
|
+
jsonRpcResponse.error.code
|
|
91
|
+
);
|
|
89
92
|
error.data = jsonRpcResponse.error.data;
|
|
90
93
|
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
91
94
|
throw error;
|
|
@@ -109,7 +112,7 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
109
112
|
): Promise<any[]> {
|
|
110
113
|
// We create the errors here to capture the stack traces at this point,
|
|
111
114
|
// the async call that follows would probably loose of the stack trace
|
|
112
|
-
const
|
|
115
|
+
const stackSavingError = new ProviderError("HttpProviderError", -1);
|
|
113
116
|
|
|
114
117
|
// we need this to sort the responses
|
|
115
118
|
const idToIndexMap: Record<string, number> = {};
|
|
@@ -124,8 +127,11 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
124
127
|
|
|
125
128
|
for (const response of jsonRpcResponses) {
|
|
126
129
|
if (isErrorResponse(response)) {
|
|
127
|
-
error
|
|
128
|
-
|
|
130
|
+
const error = new ProviderError(
|
|
131
|
+
response.error.message,
|
|
132
|
+
response.error.code,
|
|
133
|
+
stackSavingError
|
|
134
|
+
);
|
|
129
135
|
error.data = response.error.data;
|
|
130
136
|
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
131
137
|
throw error;
|
|
@@ -163,22 +169,30 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
163
169
|
request: JsonRpcRequest | JsonRpcRequest[],
|
|
164
170
|
retryNumber = 0
|
|
165
171
|
): Promise<JsonRpcResponse | JsonRpcResponse[]> {
|
|
172
|
+
const { request: sendRequest } = await import("undici");
|
|
173
|
+
const url = new URL(this._url);
|
|
174
|
+
|
|
175
|
+
const headers: { [name: string]: string } = {
|
|
176
|
+
"Content-Type": "application/json",
|
|
177
|
+
"User-Agent": `hardhat ${hardhatVersion}`,
|
|
178
|
+
...this._extraHeaders,
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
if (this._authHeader !== undefined) {
|
|
182
|
+
headers.Authorization = this._authHeader;
|
|
183
|
+
}
|
|
184
|
+
|
|
166
185
|
try {
|
|
167
|
-
const response = await
|
|
186
|
+
const response = await sendRequest(url, {
|
|
187
|
+
dispatcher: this._dispatcher,
|
|
168
188
|
method: "POST",
|
|
169
|
-
path: this._path,
|
|
170
189
|
body: JSON.stringify(request),
|
|
171
190
|
maxRedirections: 10,
|
|
172
191
|
headersTimeout:
|
|
173
192
|
process.env.DO_NOT_SET_THIS_ENV_VAR____IS_HARDHAT_CI !== undefined
|
|
174
193
|
? 0
|
|
175
194
|
: this._timeout,
|
|
176
|
-
headers
|
|
177
|
-
"Content-Type": "application/json",
|
|
178
|
-
"User-Agent": `hardhat ${hardhatVersion ?? "(unknown version)"}`,
|
|
179
|
-
Authorization: this._authHeader,
|
|
180
|
-
...this._extraHeaders,
|
|
181
|
-
},
|
|
195
|
+
headers,
|
|
182
196
|
});
|
|
183
197
|
|
|
184
198
|
if (this._isRateLimitResponse(response)) {
|
|
@@ -194,8 +208,6 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
194
208
|
return await this._retry(request, seconds, retryNumber);
|
|
195
209
|
}
|
|
196
210
|
|
|
197
|
-
const url = new URL(this._url);
|
|
198
|
-
|
|
199
211
|
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
200
212
|
throw new ProviderError(
|
|
201
213
|
`Too Many Requests error received from ${url.hostname}`,
|
|
@@ -255,16 +267,16 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
255
267
|
return true;
|
|
256
268
|
}
|
|
257
269
|
|
|
258
|
-
private _isRateLimitResponse(response: Dispatcher.ResponseData) {
|
|
270
|
+
private _isRateLimitResponse(response: Undici.Dispatcher.ResponseData) {
|
|
259
271
|
return response.statusCode === TOO_MANY_REQUEST_STATUS;
|
|
260
272
|
}
|
|
261
273
|
|
|
262
274
|
private _getRetryAfterSeconds(
|
|
263
|
-
response: Dispatcher.ResponseData
|
|
275
|
+
response: Undici.Dispatcher.ResponseData
|
|
264
276
|
): number | undefined {
|
|
265
277
|
const header = response.headers["retry-after"];
|
|
266
278
|
|
|
267
|
-
if (header === undefined || header === null) {
|
|
279
|
+
if (header === undefined || header === null || Array.isArray(header)) {
|
|
268
280
|
return undefined;
|
|
269
281
|
}
|
|
270
282
|
|