hardhat 2.7.0 → 2.8.1
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/check.js +1 -1
- package/builtin-tasks/check.js.map +1 -1
- package/builtin-tasks/clean.js +3 -3
- package/builtin-tasks/clean.js.map +1 -1
- package/builtin-tasks/compile.js +48 -48
- package/builtin-tasks/compile.js.map +1 -1
- package/builtin-tasks/console.js +3 -3
- package/builtin-tasks/console.js.map +1 -1
- package/builtin-tasks/flatten.js +8 -6
- package/builtin-tasks/flatten.js.map +1 -1
- package/builtin-tasks/help.js +2 -2
- package/builtin-tasks/help.js.map +1 -1
- package/builtin-tasks/node.js +19 -13
- package/builtin-tasks/node.js.map +1 -1
- package/builtin-tasks/run.js +11 -7
- package/builtin-tasks/run.js.map +1 -1
- package/builtin-tasks/test.js +12 -11
- package/builtin-tasks/test.js.map +1 -1
- package/builtin-tasks/utils/solidity-files-cache.js +1 -1
- package/builtin-tasks/utils/solidity-files-cache.js.map +1 -1
- package/builtin-tasks/utils/watch.d.ts.map +1 -1
- package/builtin-tasks/utils/watch.js +4 -2
- package/builtin-tasks/utils/watch.js.map +1 -1
- package/internal/artifacts.js +17 -17
- package/internal/artifacts.js.map +1 -1
- package/internal/cli/analytics.js +10 -9
- package/internal/cli/analytics.js.map +1 -1
- package/internal/cli/autocomplete.js +7 -7
- package/internal/cli/autocomplete.js.map +1 -1
- package/internal/cli/bootstrap.js +2 -2
- package/internal/cli/bootstrap.js.map +1 -1
- package/internal/cli/cli.js +18 -16
- package/internal/cli/cli.js.map +1 -1
- package/internal/cli/project-creation.js +14 -14
- package/internal/cli/project-creation.js.map +1 -1
- package/internal/constants.d.ts.map +1 -1
- package/internal/constants.js +1 -0
- package/internal/constants.js.map +1 -1
- package/internal/context.d.ts +1 -2
- package/internal/context.d.ts.map +1 -1
- package/internal/context.js +3 -3
- package/internal/context.js.map +1 -1
- package/internal/core/config/config-loading.d.ts +3 -2
- package/internal/core/config/config-loading.d.ts.map +1 -1
- package/internal/core/config/config-loading.js +25 -8
- package/internal/core/config/config-loading.js.map +1 -1
- package/internal/core/config/config-resolution.d.ts.map +1 -1
- package/internal/core/config/config-resolution.js +29 -12
- package/internal/core/config/config-resolution.js.map +1 -1
- package/internal/core/config/config-validation.d.ts.map +1 -1
- package/internal/core/config/config-validation.js +68 -30
- package/internal/core/config/config-validation.js.map +1 -1
- package/internal/core/config/default-config.d.ts.map +1 -1
- package/internal/core/config/default-config.js +59 -1
- package/internal/core/config/default-config.js.map +1 -1
- package/internal/core/errors.js +3 -3
- package/internal/core/errors.js.map +1 -1
- package/internal/core/execution-mode.js +2 -2
- package/internal/core/execution-mode.js.map +1 -1
- package/internal/core/jsonrpc/types/access-list.d.ts +0 -1
- package/internal/core/jsonrpc/types/access-list.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/access-list.js +1 -1
- package/internal/core/jsonrpc/types/access-list.js.map +1 -1
- package/internal/core/jsonrpc/types/base-types.js +9 -9
- package/internal/core/jsonrpc/types/base-types.js.map +1 -1
- package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -4
- package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/blockTag.js +3 -3
- package/internal/core/jsonrpc/types/input/blockTag.js.map +1 -1
- package/internal/core/jsonrpc/types/input/callRequest.d.ts +0 -1
- package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/callRequest.js +9 -9
- package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/input/debugTraceTransaction.js +4 -4
- package/internal/core/jsonrpc/types/input/debugTraceTransaction.js.map +1 -1
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts +0 -1
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/filterRequest.js +2 -2
- package/internal/core/jsonrpc/types/input/filterRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/input/hardhat-network.js +4 -4
- package/internal/core/jsonrpc/types/input/hardhat-network.js.map +1 -1
- package/internal/core/jsonrpc/types/input/logAddress.js +1 -1
- package/internal/core/jsonrpc/types/input/logAddress.js.map +1 -1
- package/internal/core/jsonrpc/types/input/logTopics.js +1 -1
- package/internal/core/jsonrpc/types/input/logTopics.js.map +1 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +0 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.js +10 -10
- package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/output/block.d.ts +0 -1
- package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/block.js +5 -5
- package/internal/core/jsonrpc/types/output/block.js.map +1 -1
- package/internal/core/jsonrpc/types/output/log.d.ts +0 -1
- package/internal/core/jsonrpc/types/output/log.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/log.js +5 -5
- package/internal/core/jsonrpc/types/output/log.js.map +1 -1
- package/internal/core/jsonrpc/types/output/receipt.d.ts +0 -1
- package/internal/core/jsonrpc/types/output/receipt.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/receipt.js +6 -6
- package/internal/core/jsonrpc/types/output/receipt.js.map +1 -1
- package/internal/core/jsonrpc/types/output/transaction.d.ts +0 -1
- package/internal/core/jsonrpc/types/output/transaction.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/transaction.js +9 -9
- package/internal/core/jsonrpc/types/output/transaction.js.map +1 -1
- package/internal/core/params/argumentTypes.d.ts.map +1 -1
- package/internal/core/params/argumentTypes.js +25 -13
- package/internal/core/params/argumentTypes.js.map +1 -1
- package/internal/core/params/env-variables.d.ts.map +1 -1
- package/internal/core/params/env-variables.js +9 -5
- package/internal/core/params/env-variables.js.map +1 -1
- package/internal/core/project-structure.js +1 -1
- package/internal/core/project-structure.js.map +1 -1
- package/internal/core/providers/accounts.d.ts.map +1 -1
- package/internal/core/providers/accounts.js +9 -8
- package/internal/core/providers/accounts.js.map +1 -1
- package/internal/core/providers/backwards-compatibility.js.map +1 -1
- package/internal/core/providers/chainId.js +3 -3
- package/internal/core/providers/chainId.js.map +1 -1
- package/internal/core/providers/construction.d.ts.map +1 -1
- package/internal/core/providers/construction.js +4 -4
- package/internal/core/providers/construction.js.map +1 -1
- package/internal/core/providers/gas-providers.d.ts.map +1 -1
- package/internal/core/providers/gas-providers.js +19 -17
- package/internal/core/providers/gas-providers.js.map +1 -1
- package/internal/core/providers/http.js +1 -1
- package/internal/core/providers/http.js.map +1 -1
- package/internal/core/providers/util.js +1 -1
- package/internal/core/providers/util.js.map +1 -1
- package/internal/core/providers/wrapper.d.ts.map +1 -1
- package/internal/core/runtime-environment.d.ts.map +1 -1
- package/internal/core/runtime-environment.js +7 -5
- package/internal/core/runtime-environment.js.map +1 -1
- package/internal/core/typescript-support.js +4 -4
- package/internal/core/typescript-support.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.js +23 -23
- package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.d.ts +1 -1
- package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.js +18 -9
- package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/server.js +3 -3
- package/internal/hardhat-network/jsonrpc/server.js.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.d.ts +1 -1
- package/internal/hardhat-network/provider/BlockchainData.js +12 -12
- package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.js +2 -2
- package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/PoolState.js +6 -6
- package/internal/hardhat-network/provider/PoolState.js.map +1 -1
- package/internal/hardhat-network/provider/TxPool.js +19 -19
- package/internal/hardhat-network/provider/TxPool.js.map +1 -1
- package/internal/hardhat-network/provider/filter.js +3 -3
- package/internal/hardhat-network/provider/filter.js.map +1 -1
- package/internal/hardhat-network/provider/fork/AccountState.js +4 -4
- package/internal/hardhat-network/provider/fork/AccountState.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js +7 -7
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.js +34 -34
- package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
- package/internal/hardhat-network/provider/fork/random.d.ts +0 -1
- package/internal/hardhat-network/provider/fork/random.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/random.js +13 -8
- package/internal/hardhat-network/provider/fork/random.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js +1 -0
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
- package/internal/hardhat-network/provider/modules/debug.js +1 -1
- package/internal/hardhat-network/provider/modules/debug.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +86 -84
- package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
- package/internal/hardhat-network/provider/modules/evm.js +9 -9
- package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.js +16 -16
- package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.js +30 -25
- package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
- package/internal/hardhat-network/provider/modules/net.js +2 -2
- package/internal/hardhat-network/provider/modules/net.js.map +1 -1
- package/internal/hardhat-network/provider/modules/personal.js +2 -2
- package/internal/hardhat-network/provider/modules/personal.js.map +1 -1
- package/internal/hardhat-network/provider/modules/web3.js +4 -4
- package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts +2 -1
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +7 -1
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +141 -76
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/output.js +87 -87
- package/internal/hardhat-network/provider/output.js.map +1 -1
- package/internal/hardhat-network/provider/provider.d.ts +3 -2
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js +5 -3
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/return-data.js +4 -4
- package/internal/hardhat-network/provider/return-data.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/utils/bnToHex.js +1 -1
- package/internal/hardhat-network/provider/utils/bnToHex.js.map +1 -1
- package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeAccount.js +4 -4
- package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts +1 -2
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.js +4 -4
- package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js +4 -4
- package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.js +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
- package/internal/hardhat-network/provider/utils/txMapToArray.js +1 -1
- package/internal/hardhat-network/provider/utils/txMapToArray.js.map +1 -1
- package/internal/hardhat-network/stack-traces/compiler-to-model.js +4 -4
- package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js +44 -44
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/contracts-identifier.js +6 -6
- package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +17 -17
- package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +28 -28
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js +3 -3
- package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js.map +1 -1
- package/internal/hardhat-network/stack-traces/model.js +5 -5
- package/internal/hardhat-network/stack-traces/model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +3 -3
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +10 -10
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/source-maps.js +7 -7
- package/internal/hardhat-network/stack-traces/source-maps.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +5 -5
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +2 -2
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.js +3 -3
- package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
- package/internal/lib/hardhat-lib.js +3 -3
- package/internal/lib/hardhat-lib.js.map +1 -1
- package/internal/reset.js +1 -1
- package/internal/reset.js.map +1 -1
- package/internal/sentry/anonymizer.js.map +1 -1
- package/internal/sentry/reporter.js +5 -5
- package/internal/sentry/reporter.js.map +1 -1
- package/internal/sentry/subprocess.js +2 -2
- package/internal/sentry/subprocess.js.map +1 -1
- package/internal/sentry/transport.js +1 -1
- package/internal/sentry/transport.js.map +1 -1
- package/internal/solidity/compilation-job.js +4 -4
- package/internal/solidity/compilation-job.js.map +1 -1
- package/internal/solidity/compiler/downloader.d.ts +1 -1
- package/internal/solidity/compiler/downloader.d.ts.map +1 -1
- package/internal/solidity/compiler/downloader.js +21 -7
- 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/dependencyGraph.js +2 -1
- package/internal/solidity/dependencyGraph.js.map +1 -1
- package/internal/solidity/parse.js +3 -2
- package/internal/solidity/parse.js.map +1 -1
- package/internal/solidity/resolver.js +10 -10
- package/internal/solidity/resolver.js.map +1 -1
- package/internal/util/abi-helpers.js +1 -1
- package/internal/util/abi-helpers.js.map +1 -1
- package/internal/util/download.d.ts.map +1 -1
- package/internal/util/download.js +12 -1
- package/internal/util/download.js.map +1 -1
- package/internal/util/global-dir.js +1 -1
- package/internal/util/global-dir.js.map +1 -1
- package/internal/util/hardforks.d.ts +2 -1
- package/internal/util/hardforks.d.ts.map +1 -1
- package/internal/util/hardforks.js +3 -1
- package/internal/util/hardforks.js.map +1 -1
- package/internal/util/jsonrpc.js +1 -1
- package/internal/util/jsonrpc.js.map +1 -1
- package/internal/util/packageInfo.js +1 -1
- package/internal/util/packageInfo.js.map +1 -1
- package/internal/util/scripts-runner.js +3 -3
- package/internal/util/scripts-runner.js.map +1 -1
- package/package.json +14 -14
- package/register.js +7 -7
- package/register.js.map +1 -1
- package/src/builtin-tasks/flatten.ts +4 -2
- package/src/builtin-tasks/node.ts +15 -8
- package/src/builtin-tasks/run.ts +13 -8
- package/src/builtin-tasks/test.ts +2 -0
- package/src/builtin-tasks/utils/watch.ts +3 -1
- package/src/internal/artifacts.ts +3 -3
- package/src/internal/cli/autocomplete.ts +3 -3
- package/src/internal/cli/bootstrap.ts +1 -1
- package/src/internal/cli/cli.ts +4 -1
- package/src/internal/cli/project-creation.ts +3 -3
- package/src/internal/constants.ts +1 -0
- package/src/internal/context.ts +1 -1
- package/src/internal/core/config/config-loading.ts +33 -3
- package/src/internal/core/config/config-resolution.ts +33 -3
- package/src/internal/core/config/config-validation.ts +70 -0
- package/src/internal/core/config/default-config.ts +59 -1
- package/src/internal/core/execution-mode.ts +1 -1
- package/src/internal/core/params/argumentTypes.ts +40 -25
- package/src/internal/core/params/env-variables.ts +13 -8
- package/src/internal/core/providers/accounts.ts +4 -3
- package/src/internal/core/providers/backwards-compatibility.ts +1 -1
- package/src/internal/core/providers/chainId.ts +1 -1
- package/src/internal/core/providers/construction.ts +1 -0
- package/src/internal/core/providers/gas-providers.ts +6 -4
- package/src/internal/core/providers/http.ts +1 -1
- package/src/internal/core/providers/wrapper.ts +1 -1
- package/src/internal/core/runtime-environment.ts +3 -1
- package/src/internal/core/typescript-support.ts +2 -2
- package/src/internal/hardhat-network/jsonrpc/client.ts +2 -2
- package/src/internal/hardhat-network/jsonrpc/handler.ts +13 -3
- package/src/internal/hardhat-network/jsonrpc/server.ts +3 -3
- package/src/internal/hardhat-network/provider/TxPool.ts +1 -1
- package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/eth.ts +23 -21
- package/src/internal/hardhat-network/provider/modules/hardhat.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/logger.ts +13 -9
- package/src/internal/hardhat-network/provider/node-types.ts +2 -1
- package/src/internal/hardhat-network/provider/node.ts +149 -31
- package/src/internal/hardhat-network/provider/provider.ts +4 -1
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +1 -1
- package/src/internal/hardhat-network/provider/utils/makeCommon.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +3 -3
- package/src/internal/reset.ts +1 -1
- package/src/internal/sentry/subprocess.ts +2 -2
- package/src/internal/solidity/compiler/downloader.ts +27 -12
- package/src/internal/solidity/resolver.ts +1 -1
- package/src/internal/util/abi-helpers.ts +1 -1
- package/src/internal/util/download.ts +17 -1
- package/src/internal/util/hardforks.ts +2 -0
- package/src/internal/util/jsonrpc.ts +1 -1
- package/src/internal/util/packageInfo.ts +1 -1
- package/src/internal/util/scripts-runner.ts +1 -1
- package/src/types/config.ts +28 -0
- package/src/utils/source-names.ts +13 -11
- package/types/config.d.ts +16 -0
- package/types/config.d.ts.map +1 -1
- package/utils/source-names.js +7 -5
- package/utils/source-names.js.map +1 -1
- package/CHANGELOG.md +0 -71
- package/internal/hardhat-network/provider/HardhatStateManager.d.ts +0 -50
- package/internal/hardhat-network/provider/HardhatStateManager.d.ts.map +0 -1
- package/internal/hardhat-network/provider/HardhatStateManager.js +0 -249
- package/internal/hardhat-network/provider/HardhatStateManager.js.map +0 -1
- package/src/internal/hardhat-network/provider/HardhatStateManager.ts +0 -349
|
@@ -185,7 +185,7 @@ async function getCompletionData(): Promise<CompletionData | undefined> {
|
|
|
185
185
|
process.env.TS_NODE_TRANSPILE_ONLY = "1";
|
|
186
186
|
require("../../register");
|
|
187
187
|
hre = (global as any).hre;
|
|
188
|
-
} catch
|
|
188
|
+
} catch {
|
|
189
189
|
return undefined;
|
|
190
190
|
}
|
|
191
191
|
const filesAfterRequire = Object.keys(require.cache);
|
|
@@ -233,7 +233,7 @@ function arePreviousMtimesCorrect(mtimes: Mtimes): boolean {
|
|
|
233
233
|
return Object.entries(mtimes).every(
|
|
234
234
|
([file, mtime]) => fs.statSync(file).mtime.valueOf() === mtime
|
|
235
235
|
);
|
|
236
|
-
} catch
|
|
236
|
+
} catch {
|
|
237
237
|
return false;
|
|
238
238
|
}
|
|
239
239
|
}
|
|
@@ -264,7 +264,7 @@ async function getCachedCompletionData(
|
|
|
264
264
|
try {
|
|
265
265
|
const cachedCompletionData = fs.readJsonSync(cachedCompletionDataPath);
|
|
266
266
|
return cachedCompletionData;
|
|
267
|
-
} catch
|
|
267
|
+
} catch {
|
|
268
268
|
// remove the file if it seems invalid
|
|
269
269
|
fs.unlinkSync(cachedCompletionDataPath);
|
|
270
270
|
return undefined;
|
package/src/internal/cli/cli.ts
CHANGED
|
@@ -126,10 +126,13 @@ async function main() {
|
|
|
126
126
|
|
|
127
127
|
let taskName = parsedTaskName ?? TASK_HELP;
|
|
128
128
|
|
|
129
|
+
const showEmptyConfigWarning = true;
|
|
129
130
|
const showSolidityConfigWarnings = taskName === TASK_COMPILE;
|
|
130
131
|
|
|
131
132
|
const ctx = HardhatContext.createHardhatContext();
|
|
133
|
+
|
|
132
134
|
const config = loadConfigAndTasks(hardhatArguments, {
|
|
135
|
+
showEmptyConfigWarning,
|
|
133
136
|
showSolidityConfigWarnings,
|
|
134
137
|
});
|
|
135
138
|
|
|
@@ -234,7 +237,7 @@ async function main() {
|
|
|
234
237
|
console.log("");
|
|
235
238
|
|
|
236
239
|
try {
|
|
237
|
-
Reporter.reportError(error);
|
|
240
|
+
Reporter.reportError(error as Error);
|
|
238
241
|
} catch (e) {
|
|
239
242
|
log("Couldn't report error to sentry: %O", e);
|
|
240
243
|
}
|
|
@@ -69,11 +69,11 @@ const ADVANCED_TYPESCRIPT_SAMPLE_PROJECT_DEPENDENCIES: Dependencies = {
|
|
|
69
69
|
"@typescript-eslint/eslint-plugin": "^4.29.1",
|
|
70
70
|
"@typescript-eslint/parser": "^4.29.1",
|
|
71
71
|
"@types/chai": "^4.2.21",
|
|
72
|
-
"@types/node": "^
|
|
72
|
+
"@types/node": "^12.0.0",
|
|
73
73
|
"@types/mocha": "^9.0.0",
|
|
74
74
|
"ts-node": "^10.1.0",
|
|
75
75
|
typechain: "^5.1.2", // a workaround. see https://github.com/nomiclabs/hardhat/issues/1672#issuecomment-894497156
|
|
76
|
-
typescript: "^4.
|
|
76
|
+
typescript: "^4.5.2",
|
|
77
77
|
};
|
|
78
78
|
|
|
79
79
|
const SAMPLE_PROJECT_DEPENDENCIES: {
|
|
@@ -447,7 +447,7 @@ export async function createProject() {
|
|
|
447
447
|
`\n${emoji("✨ ")}${chalk.cyan("Project created")}${emoji(" ✨")}`
|
|
448
448
|
);
|
|
449
449
|
|
|
450
|
-
console.log("See the README.
|
|
450
|
+
console.log("See the README.md file for some example tasks you can run.");
|
|
451
451
|
}
|
|
452
452
|
|
|
453
453
|
function createConfirmationPrompt(name: string, message: string) {
|
package/src/internal/context.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { ERRORS } from "./core/errors-list";
|
|
|
10
10
|
import { TasksDSL } from "./core/tasks/dsl";
|
|
11
11
|
import { getRequireCachedFiles } from "./util/platform";
|
|
12
12
|
|
|
13
|
-
export type GlobalWithHardhatContext =
|
|
13
|
+
export type GlobalWithHardhatContext = typeof global & {
|
|
14
14
|
__hardhatContext: HardhatContext;
|
|
15
15
|
};
|
|
16
16
|
|
|
@@ -38,7 +38,16 @@ export function resolveConfigPath(configPath: string | undefined) {
|
|
|
38
38
|
|
|
39
39
|
export function loadConfigAndTasks(
|
|
40
40
|
hardhatArguments?: Partial<HardhatArguments>,
|
|
41
|
-
{
|
|
41
|
+
{
|
|
42
|
+
showEmptyConfigWarning = false,
|
|
43
|
+
showSolidityConfigWarnings = false,
|
|
44
|
+
}: {
|
|
45
|
+
showEmptyConfigWarning?: boolean;
|
|
46
|
+
showSolidityConfigWarnings?: boolean;
|
|
47
|
+
} = {
|
|
48
|
+
showEmptyConfigWarning: false,
|
|
49
|
+
showSolidityConfigWarnings: false,
|
|
50
|
+
}
|
|
42
51
|
): HardhatConfig {
|
|
43
52
|
let configPath =
|
|
44
53
|
hardhatArguments !== undefined ? hardhatArguments.config : undefined;
|
|
@@ -73,6 +82,10 @@ export function loadConfigAndTasks(
|
|
|
73
82
|
ctx.setConfigLoadingAsFinished();
|
|
74
83
|
}
|
|
75
84
|
|
|
85
|
+
if (showEmptyConfigWarning) {
|
|
86
|
+
checkEmptyConfig(userConfig, { showSolidityConfigWarnings });
|
|
87
|
+
}
|
|
88
|
+
|
|
76
89
|
validateConfig(userConfig);
|
|
77
90
|
|
|
78
91
|
if (showSolidityConfigWarnings) {
|
|
@@ -215,18 +228,35 @@ function readPackageJson(packageName: string): PackageJson | undefined {
|
|
|
215
228
|
);
|
|
216
229
|
|
|
217
230
|
return require(packageJsonPath);
|
|
218
|
-
} catch
|
|
231
|
+
} catch {
|
|
219
232
|
return undefined;
|
|
220
233
|
}
|
|
221
234
|
}
|
|
222
235
|
|
|
236
|
+
function checkEmptyConfig(
|
|
237
|
+
userConfig: any,
|
|
238
|
+
{ showSolidityConfigWarnings }: { showSolidityConfigWarnings: boolean }
|
|
239
|
+
) {
|
|
240
|
+
if (userConfig === undefined || Object.keys(userConfig).length === 0) {
|
|
241
|
+
let warning = `Hardhat config is returning an empty config object, check the export from the config file if this is unexpected.\n`;
|
|
242
|
+
|
|
243
|
+
// This 'learn more' section is also printed by the solidity config warning,
|
|
244
|
+
// so we need to check to avoid printing it twice
|
|
245
|
+
if (!showSolidityConfigWarnings) {
|
|
246
|
+
warning += `\nLearn more about configuring Hardhat at https://hardhat.org/config\n`;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
console.warn(chalk.yellow(warning));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
223
253
|
function checkMissingSolidityConfig(userConfig: any) {
|
|
224
254
|
if (userConfig.solidity === undefined) {
|
|
225
255
|
console.warn(
|
|
226
256
|
chalk.yellow(
|
|
227
257
|
`Solidity compiler is not configured. Version ${DEFAULT_SOLC_VERSION} will be used by default. Add a 'solidity' entry to your configuration to suppress this warning.
|
|
228
258
|
|
|
229
|
-
Learn more about compiler configuration at https://hardhat.org/config
|
|
259
|
+
Learn more about compiler configuration at https://hardhat.org/config
|
|
230
260
|
`
|
|
231
261
|
)
|
|
232
262
|
);
|
|
@@ -6,6 +6,8 @@ import path from "path";
|
|
|
6
6
|
import {
|
|
7
7
|
HardhatConfig,
|
|
8
8
|
HardhatNetworkAccountsConfig,
|
|
9
|
+
HardhatNetworkChainConfig,
|
|
10
|
+
HardhatNetworkChainsConfig,
|
|
9
11
|
HardhatNetworkConfig,
|
|
10
12
|
HardhatNetworkForkingConfig,
|
|
11
13
|
HardhatNetworkMiningConfig,
|
|
@@ -31,6 +33,7 @@ import {
|
|
|
31
33
|
SolidityUserConfig,
|
|
32
34
|
} from "../../../types";
|
|
33
35
|
import { HARDHAT_NETWORK_NAME } from "../../constants";
|
|
36
|
+
import { HardforkName } from "../../util/hardforks";
|
|
34
37
|
import { fromEntries } from "../../util/lang";
|
|
35
38
|
import { assertHardhatInvariant } from "../errors";
|
|
36
39
|
|
|
@@ -150,9 +153,11 @@ function resolveHardhatNetworkConfig(
|
|
|
150
153
|
}
|
|
151
154
|
: undefined;
|
|
152
155
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
+
if (forking !== undefined) {
|
|
157
|
+
const blockNumber = hardhatNetworkConfig?.forking?.blockNumber;
|
|
158
|
+
if (blockNumber !== undefined) {
|
|
159
|
+
forking.blockNumber = hardhatNetworkConfig?.forking?.blockNumber;
|
|
160
|
+
}
|
|
156
161
|
}
|
|
157
162
|
|
|
158
163
|
const mining = resolveMiningConfig(hardhatNetworkConfig.mining);
|
|
@@ -171,6 +176,30 @@ function resolveHardhatNetworkConfig(
|
|
|
171
176
|
const initialDate =
|
|
172
177
|
hardhatNetworkConfig.initialDate ?? new Date().toISOString();
|
|
173
178
|
|
|
179
|
+
const chains: HardhatNetworkChainsConfig = new Map(
|
|
180
|
+
defaultHardhatNetworkParams.chains
|
|
181
|
+
);
|
|
182
|
+
if (hardhatNetworkConfig.chains !== undefined) {
|
|
183
|
+
for (const [chainId, userChainConfig] of Object.entries(
|
|
184
|
+
hardhatNetworkConfig.chains
|
|
185
|
+
)) {
|
|
186
|
+
const chainConfig: HardhatNetworkChainConfig = {
|
|
187
|
+
hardforkHistory: new Map(),
|
|
188
|
+
};
|
|
189
|
+
if (userChainConfig.hardforkHistory !== undefined) {
|
|
190
|
+
for (const [name, block] of Object.entries(
|
|
191
|
+
userChainConfig.hardforkHistory
|
|
192
|
+
)) {
|
|
193
|
+
chainConfig.hardforkHistory.set(
|
|
194
|
+
name as HardforkName,
|
|
195
|
+
block as number
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
chains.set(parseInt(chainId, 10), chainConfig);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
174
203
|
const config = {
|
|
175
204
|
...clonedDefaultHardhatNetworkParams,
|
|
176
205
|
...hardhatNetworkConfig,
|
|
@@ -181,6 +210,7 @@ function resolveHardhatNetworkConfig(
|
|
|
181
210
|
gas,
|
|
182
211
|
initialDate,
|
|
183
212
|
minGasPrice,
|
|
213
|
+
chains,
|
|
184
214
|
};
|
|
185
215
|
|
|
186
216
|
// We do it this way because ts gets lost otherwise
|
|
@@ -12,6 +12,7 @@ import { fromEntries } from "../../util/lang";
|
|
|
12
12
|
import { HardhatError } from "../errors";
|
|
13
13
|
import { ERRORS } from "../errors-list";
|
|
14
14
|
import { hardforkGte, HardforkName } from "../../util/hardforks";
|
|
15
|
+
import { HardhatNetworkChainUserConfig } from "../../../types/config";
|
|
15
16
|
import { defaultHardhatNetworkParams } from "./default-config";
|
|
16
17
|
|
|
17
18
|
function stringify(v: any): string {
|
|
@@ -192,6 +193,21 @@ const HardhatNetworkHDAccountsConfig = t.type({
|
|
|
192
193
|
...commonHDAccountsFields,
|
|
193
194
|
});
|
|
194
195
|
|
|
196
|
+
const Integer = new t.Type<number>(
|
|
197
|
+
"Integer",
|
|
198
|
+
(num: unknown): num is number => typeof num === "number",
|
|
199
|
+
(u, c) => {
|
|
200
|
+
try {
|
|
201
|
+
return typeof u === "string"
|
|
202
|
+
? t.success(parseInt(u, 10))
|
|
203
|
+
: t.failure(u, c);
|
|
204
|
+
} catch {
|
|
205
|
+
return t.failure(u, c);
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
t.identity
|
|
209
|
+
);
|
|
210
|
+
|
|
195
211
|
const HardhatNetworkForkingConfig = t.type({
|
|
196
212
|
enabled: optional(t.boolean),
|
|
197
213
|
url: t.string,
|
|
@@ -214,6 +230,36 @@ const HardhatNetworkMiningConfig = t.type({
|
|
|
214
230
|
mempool: optional(HardhatNetworkMempoolConfig),
|
|
215
231
|
});
|
|
216
232
|
|
|
233
|
+
function isValidHardforkName(name: string) {
|
|
234
|
+
return Object.values(HardforkName).includes(name as HardforkName);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
const HardforkNameType = new t.Type<HardforkName>(
|
|
238
|
+
Object.values(HardforkName)
|
|
239
|
+
.map((v) => `"${v}"`)
|
|
240
|
+
.join(" | "),
|
|
241
|
+
(name: unknown): name is HardforkName =>
|
|
242
|
+
typeof name === "string" && isValidHardforkName(name),
|
|
243
|
+
(u, c) => {
|
|
244
|
+
return typeof u === "string" && isValidHardforkName(u)
|
|
245
|
+
? t.success(u as HardforkName)
|
|
246
|
+
: t.failure(u, c);
|
|
247
|
+
},
|
|
248
|
+
t.identity
|
|
249
|
+
);
|
|
250
|
+
|
|
251
|
+
const HardhatNetworkHardforkHistory = t.record(
|
|
252
|
+
HardforkNameType,
|
|
253
|
+
t.number,
|
|
254
|
+
"HardhatNetworkHardforkHistory"
|
|
255
|
+
);
|
|
256
|
+
|
|
257
|
+
const HardhatNetworkChainConfig = t.type({
|
|
258
|
+
hardforkHistory: HardhatNetworkHardforkHistory,
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
const HardhatNetworkChainsConfig = t.record(Integer, HardhatNetworkChainConfig);
|
|
262
|
+
|
|
217
263
|
const commonNetworkConfigFields = {
|
|
218
264
|
chainId: optional(t.number),
|
|
219
265
|
from: optional(t.string),
|
|
@@ -242,6 +288,7 @@ const HardhatNetworkConfig = t.type({
|
|
|
242
288
|
forking: optional(HardhatNetworkForkingConfig),
|
|
243
289
|
mining: optional(HardhatNetworkMiningConfig),
|
|
244
290
|
coinbase: optional(address),
|
|
291
|
+
chains: optional(HardhatNetworkChainsConfig),
|
|
245
292
|
});
|
|
246
293
|
|
|
247
294
|
const HDAccountsConfig = t.type({
|
|
@@ -417,6 +464,29 @@ export function getValidationErrors(config: any): string[] {
|
|
|
417
464
|
);
|
|
418
465
|
}
|
|
419
466
|
}
|
|
467
|
+
|
|
468
|
+
if (hardhatNetwork.chains !== undefined) {
|
|
469
|
+
Object.entries(hardhatNetwork.chains).forEach((chainEntry) => {
|
|
470
|
+
const [chainId, chainConfig] = chainEntry as [
|
|
471
|
+
string,
|
|
472
|
+
HardhatNetworkChainUserConfig
|
|
473
|
+
];
|
|
474
|
+
const { hardforkHistory } = chainConfig;
|
|
475
|
+
if (hardforkHistory !== undefined) {
|
|
476
|
+
Object.keys(hardforkHistory).forEach((hardforkName) => {
|
|
477
|
+
if (!HARDHAT_NETWORK_SUPPORTED_HARDFORKS.includes(hardforkName)) {
|
|
478
|
+
errors.push(
|
|
479
|
+
getErrorMessage(
|
|
480
|
+
`HardhatConfig.networks.${HARDHAT_NETWORK_NAME}.chains[${chainId}].hardforkHistory`,
|
|
481
|
+
hardforkName,
|
|
482
|
+
`"${HARDHAT_NETWORK_SUPPORTED_HARDFORKS.join('" | "')}"`
|
|
483
|
+
)
|
|
484
|
+
);
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
});
|
|
489
|
+
}
|
|
420
490
|
}
|
|
421
491
|
|
|
422
492
|
for (const [networkName, netConfig] of Object.entries<any>(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BN } from "ethereumjs-util";
|
|
2
2
|
|
|
3
3
|
import { HardhatNetworkConfig } from "../../../types";
|
|
4
|
+
import { HardforkName } from "../../util/hardforks";
|
|
4
5
|
import { HARDHAT_NETWORK_NAME } from "../../constants";
|
|
5
6
|
|
|
6
7
|
export const DEFAULT_SOLC_VERSION = "0.7.3";
|
|
@@ -35,7 +36,7 @@ export const defaultHardhatNetworkParams: Omit<
|
|
|
35
36
|
HardhatNetworkConfig,
|
|
36
37
|
"gas" | "initialDate"
|
|
37
38
|
> = {
|
|
38
|
-
hardfork: "
|
|
39
|
+
hardfork: "arrowGlacier",
|
|
39
40
|
blockGasLimit: 30_000_000,
|
|
40
41
|
gasPrice: HARDHAT_NETWORK_DEFAULT_GAS_PRICE,
|
|
41
42
|
chainId: 31337,
|
|
@@ -53,6 +54,63 @@ export const defaultHardhatNetworkParams: Omit<
|
|
|
53
54
|
loggingEnabled: false,
|
|
54
55
|
gasMultiplier: DEFAULT_GAS_MULTIPLIER,
|
|
55
56
|
minGasPrice: new BN(0),
|
|
57
|
+
chains: new Map([
|
|
58
|
+
[
|
|
59
|
+
// block numbers below were taken from https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/common/src/chains
|
|
60
|
+
1, // mainnet
|
|
61
|
+
{
|
|
62
|
+
hardforkHistory: new Map([
|
|
63
|
+
[HardforkName.BYZANTIUM, 4370000],
|
|
64
|
+
[HardforkName.CONSTANTINOPLE, 7280000],
|
|
65
|
+
[HardforkName.PETERSBURG, 7280000],
|
|
66
|
+
[HardforkName.ISTANBUL, 9069000],
|
|
67
|
+
[HardforkName.MUIR_GLACIER, 9200000],
|
|
68
|
+
[HardforkName.BERLIN, 12244000],
|
|
69
|
+
[HardforkName.LONDON, 12965000],
|
|
70
|
+
]),
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
[
|
|
74
|
+
3, // ropsten
|
|
75
|
+
{
|
|
76
|
+
hardforkHistory: new Map([
|
|
77
|
+
[HardforkName.BYZANTIUM, 1700000],
|
|
78
|
+
[HardforkName.CONSTANTINOPLE, 4230000],
|
|
79
|
+
[HardforkName.PETERSBURG, 4939394],
|
|
80
|
+
[HardforkName.ISTANBUL, 6485846],
|
|
81
|
+
[HardforkName.MUIR_GLACIER, 7117117],
|
|
82
|
+
[HardforkName.BERLIN, 9812189],
|
|
83
|
+
[HardforkName.LONDON, 10499401],
|
|
84
|
+
]),
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
[
|
|
88
|
+
4, // rinkeby
|
|
89
|
+
{
|
|
90
|
+
hardforkHistory: new Map([
|
|
91
|
+
[HardforkName.BYZANTIUM, 1035301],
|
|
92
|
+
[HardforkName.CONSTANTINOPLE, 3660663],
|
|
93
|
+
[HardforkName.PETERSBURG, 4321234],
|
|
94
|
+
[HardforkName.ISTANBUL, 5435345],
|
|
95
|
+
[HardforkName.BERLIN, 8290928],
|
|
96
|
+
[HardforkName.LONDON, 8897988],
|
|
97
|
+
]),
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
[
|
|
101
|
+
42, // kovan
|
|
102
|
+
{
|
|
103
|
+
hardforkHistory: new Map([
|
|
104
|
+
[HardforkName.BYZANTIUM, 5067000],
|
|
105
|
+
[HardforkName.CONSTANTINOPLE, 9200000],
|
|
106
|
+
[HardforkName.PETERSBURG, 10255201],
|
|
107
|
+
[HardforkName.ISTANBUL, 14111141],
|
|
108
|
+
[HardforkName.BERLIN, 24770900],
|
|
109
|
+
[HardforkName.LONDON, 26741100],
|
|
110
|
+
]),
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
]),
|
|
56
114
|
};
|
|
57
115
|
|
|
58
116
|
export const defaultHttpNetworkParams = {
|
|
@@ -185,14 +185,19 @@ export const inputFile: CLIArgumentType<string> = {
|
|
|
185
185
|
throw new Error(`${strValue} is a directory, not a file`);
|
|
186
186
|
}
|
|
187
187
|
} catch (error) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
188
|
+
if (error instanceof Error) {
|
|
189
|
+
throw new HardhatError(
|
|
190
|
+
ERRORS.ARGUMENTS.INVALID_INPUT_FILE,
|
|
191
|
+
{
|
|
192
|
+
name: argName,
|
|
193
|
+
value: strValue,
|
|
194
|
+
},
|
|
195
|
+
error
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
200
|
+
throw error;
|
|
196
201
|
}
|
|
197
202
|
|
|
198
203
|
return strValue;
|
|
@@ -212,15 +217,20 @@ export const inputFile: CLIArgumentType<string> = {
|
|
|
212
217
|
inputFile.parse(argName, value);
|
|
213
218
|
} catch (error) {
|
|
214
219
|
// the input value is considered invalid, throw error.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
220
|
+
if (error instanceof Error) {
|
|
221
|
+
throw new HardhatError(
|
|
222
|
+
ERRORS.ARGUMENTS.INVALID_VALUE_FOR_TYPE,
|
|
223
|
+
{
|
|
224
|
+
value,
|
|
225
|
+
name: argName,
|
|
226
|
+
type: inputFile.name,
|
|
227
|
+
},
|
|
228
|
+
error
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
233
|
+
throw error;
|
|
224
234
|
}
|
|
225
235
|
},
|
|
226
236
|
};
|
|
@@ -231,14 +241,19 @@ export const json: CLIArgumentType<any> = {
|
|
|
231
241
|
try {
|
|
232
242
|
return JSON.parse(strValue);
|
|
233
243
|
} catch (error) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
244
|
+
if (error instanceof Error) {
|
|
245
|
+
throw new HardhatError(
|
|
246
|
+
ERRORS.ARGUMENTS.INVALID_JSON_ARGUMENT,
|
|
247
|
+
{
|
|
248
|
+
param: argName,
|
|
249
|
+
error: error.message,
|
|
250
|
+
},
|
|
251
|
+
error
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
256
|
+
throw error;
|
|
242
257
|
}
|
|
243
258
|
},
|
|
244
259
|
|
|
@@ -48,14 +48,19 @@ export function getEnvHardhatArguments(
|
|
|
48
48
|
try {
|
|
49
49
|
envArgs[paramName] = definition.type.parse(paramName, rawValue);
|
|
50
50
|
} catch (error) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
if (error instanceof Error) {
|
|
52
|
+
throw new HardhatError(
|
|
53
|
+
ERRORS.ARGUMENTS.INVALID_ENV_VAR_VALUE,
|
|
54
|
+
{
|
|
55
|
+
varName: envVarName,
|
|
56
|
+
value: rawValue,
|
|
57
|
+
},
|
|
58
|
+
error
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
63
|
+
throw error;
|
|
59
64
|
}
|
|
60
65
|
} else {
|
|
61
66
|
envArgs[paramName] = definition.defaultValue;
|
|
@@ -104,7 +104,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
104
104
|
if (typeof data === "string") {
|
|
105
105
|
try {
|
|
106
106
|
typedMessage = JSON.parse(data);
|
|
107
|
-
} catch
|
|
107
|
+
} catch {
|
|
108
108
|
throw new HardhatError(
|
|
109
109
|
ERRORS.NETWORK.ETHSIGN_TYPED_DATA_V4_INVALID_DATA_PARAM
|
|
110
110
|
);
|
|
@@ -219,7 +219,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
219
219
|
private _getPrivateKeyForAddressOrNull(address: Buffer): Buffer | null {
|
|
220
220
|
try {
|
|
221
221
|
return this._getPrivateKeyForAddress(address);
|
|
222
|
-
} catch
|
|
222
|
+
} catch {
|
|
223
223
|
return null;
|
|
224
224
|
}
|
|
225
225
|
}
|
|
@@ -253,6 +253,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
253
253
|
gasLimit: transactionRequest.gas,
|
|
254
254
|
};
|
|
255
255
|
|
|
256
|
+
// TODO: consider changing instances of "london" below to ["latest hardfork"]
|
|
256
257
|
const common =
|
|
257
258
|
chains.names[chainId] !== undefined
|
|
258
259
|
? new Common({ chain: chainId, hardfork: "london" })
|
|
@@ -347,7 +348,7 @@ abstract class SenderProvider extends ProviderWrapper {
|
|
|
347
348
|
return this._wrappedProvider.request(args);
|
|
348
349
|
}
|
|
349
350
|
|
|
350
|
-
protected abstract
|
|
351
|
+
protected abstract _getSender(): Promise<string | undefined>;
|
|
351
352
|
}
|
|
352
353
|
|
|
353
354
|
export class AutomaticSenderProvider extends SenderProvider {
|
|
@@ -56,7 +56,7 @@ export class BackwardsCompatibilityProviderAdapter
|
|
|
56
56
|
method: request.method,
|
|
57
57
|
params: request.params,
|
|
58
58
|
});
|
|
59
|
-
} catch (error) {
|
|
59
|
+
} catch (error: any) {
|
|
60
60
|
if (error.code === undefined) {
|
|
61
61
|
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
62
62
|
throw error;
|
|
@@ -12,7 +12,7 @@ export abstract class ProviderWrapperWithChainId extends ProviderWrapper {
|
|
|
12
12
|
if (this._chainId === undefined) {
|
|
13
13
|
try {
|
|
14
14
|
this._chainId = await this._getChainIdFromEthChainId();
|
|
15
|
-
} catch
|
|
15
|
+
} catch {
|
|
16
16
|
// If eth_chainId fails we default to net_version
|
|
17
17
|
this._chainId = await this._getChainIdFromEthNetVersion();
|
|
18
18
|
}
|
|
@@ -93,6 +93,7 @@ export function createProvider(
|
|
|
93
93
|
hardhatNetConfig.mining.interval,
|
|
94
94
|
// This cast is valid because of the config validation and resolution
|
|
95
95
|
hardhatNetConfig.mining.mempool.order as MempoolOrder,
|
|
96
|
+
hardhatNetConfig.chains,
|
|
96
97
|
new ModulesLogger(hardhatNetConfig.loggingEnabled),
|
|
97
98
|
accounts,
|
|
98
99
|
artifacts,
|
|
@@ -86,9 +86,11 @@ abstract class MultipliedGasEstimationProvider extends ProviderWrapper {
|
|
|
86
86
|
|
|
87
87
|
return numberToRpcQuantity(gas);
|
|
88
88
|
} catch (error) {
|
|
89
|
-
if (error
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
if (error instanceof Error) {
|
|
90
|
+
if (error.message.toLowerCase().includes("execution error")) {
|
|
91
|
+
const blockGasLimit = await this._getBlockGasLimit();
|
|
92
|
+
return numberToRpcQuantity(blockGasLimit);
|
|
93
|
+
}
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
@@ -277,7 +279,7 @@ export class AutomaticGasPriceProvider extends ProviderWrapper {
|
|
|
277
279
|
|
|
278
280
|
maxPriorityFeePerGas: rpcQuantityToBN(response.reward[0][0]),
|
|
279
281
|
};
|
|
280
|
-
} catch
|
|
282
|
+
} catch {
|
|
281
283
|
this._nodeHasFeeHistory = false;
|
|
282
284
|
|
|
283
285
|
return undefined;
|
|
@@ -171,7 +171,7 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
return parseJsonResponse(await response.text());
|
|
174
|
-
} catch (error) {
|
|
174
|
+
} catch (error: any) {
|
|
175
175
|
if (error.code === "ECONNREFUSED") {
|
|
176
176
|
throw new HardhatError(
|
|
177
177
|
ERRORS.NETWORK.NODE_IS_NOT_RUNNING,
|
|
@@ -11,7 +11,7 @@ export abstract class ProviderWrapper
|
|
|
11
11
|
super(_wrappedProvider);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
public abstract
|
|
14
|
+
public abstract request(args: RequestArguments): Promise<unknown>;
|
|
15
15
|
|
|
16
16
|
protected _getParams<ParamsT extends any[] = any[]>(
|
|
17
17
|
args: RequestArguments
|
|
@@ -266,7 +266,9 @@ export class Environment implements HardhatRuntimeEnvironment {
|
|
|
266
266
|
values[paramName] = resolvedArgumentValue;
|
|
267
267
|
}
|
|
268
268
|
} catch (error) {
|
|
269
|
-
|
|
269
|
+
if (HardhatError.isHardhatError(error)) {
|
|
270
|
+
errors.push(error);
|
|
271
|
+
}
|
|
270
272
|
}
|
|
271
273
|
return { errors, values };
|
|
272
274
|
},
|