hardhat 3.2.0 → 3.4.0
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 +88 -0
- package/dist/src/internal/builtin-global-options.d.ts.map +1 -1
- package/dist/src/internal/builtin-global-options.js +14 -1
- package/dist/src/internal/builtin-global-options.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 +5 -13
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js.map +1 -1
- package/dist/src/internal/builtin-plugins/console/task-action.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/console/task-action.js +2 -1
- package/dist/src/internal/builtin-plugins/console/task-action.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/exports.js +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/exports.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js +1 -2
- package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts +7 -5
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js +60 -44
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts +6 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js +14 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts +4 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js +27 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts +36 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js +86 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.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 +1 -2
- package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts +10 -2
- package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js +12 -2
- package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts +9 -3
- 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 +65 -42
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts +11 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js +104 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts +4 -4
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js +2 -2
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts +6 -3
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js +23 -5
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js +2 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts +6 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js +152 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts +19 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js +104 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js +23 -1
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js +25 -17
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/http-provider.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/http-provider.js +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/http-provider.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts +12 -2
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.js +149 -26
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js +70 -33
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts +2 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js +19 -12
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js +9 -3
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts +2 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js +5 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js +5 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js +5 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js +5 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts +0 -3
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js +9 -12
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts +9 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts +2 -0
- package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js +3 -0
- package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/type-validation.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/type-validation.js +2 -1
- package/dist/src/internal/builtin-plugins/network-manager/type-validation.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js +1 -1
- package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/helpers.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/node/helpers.js +6 -2
- package/dist/src/internal/builtin-plugins/node/helpers.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/json-rpc/handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js +8 -2
- package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/task-action.js +2 -2
- package/dist/src/internal/builtin-plugins/node/task-action.js.map +1 -1
- package/dist/src/internal/builtin-plugins/run/task-action.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/run/task-action.js +2 -1
- package/dist/src/internal/builtin-plugins/run/task-action.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js +7 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts +6 -2
- 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 +198 -76
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts +3 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/cache.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts +5 -3
- package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js +35 -7
- package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts +16 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js +5 -5
- package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts +2 -2
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js +1 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js +2 -2
- package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/config.d.ts +4 -2
- package/dist/src/internal/builtin-plugins/solidity/config.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/config.js +266 -84
- package/dist/src/internal/builtin-plugins/solidity/config.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/constants.d.ts +3 -0
- package/dist/src/internal/builtin-plugins/solidity/constants.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/constants.js +19 -0
- package/dist/src/internal/builtin-plugins/solidity/constants.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/exports.d.ts +3 -0
- package/dist/src/internal/builtin-plugins/solidity/exports.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/exports.js +3 -0
- package/dist/src/internal/builtin-plugins/solidity/exports.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js +2 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts +4 -0
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js +7 -0
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/index.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/index.js +1 -0
- package/dist/src/internal/builtin-plugins/solidity/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts +18 -0
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js +33 -0
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts +1 -1
- package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/tasks/build.js +225 -55
- package/dist/src/internal/builtin-plugins/solidity/tasks/build.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts +227 -28
- package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/type-extensions.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/config.js +5 -3
- package/dist/src/internal/builtin-plugins/solidity-test/config.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts +12 -6
- package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js +9 -7
- package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts +1 -12
- package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/formatters.js +0 -150
- package/dist/src/internal/builtin-plugins/solidity-test/formatters.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +4 -5
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +5 -12
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/index.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/index.js +0 -7
- package/dist/src/internal/builtin-plugins/solidity-test/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts +7 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js +20 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts +24 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js +68 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts +13 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js +136 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts +19 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js +133 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts +10 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js +2 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts +12 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js +81 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/reporter.js +5 -2
- package/dist/src/internal/builtin-plugins/solidity-test/reporter.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts +2 -8
- package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/runner.js +47 -50
- package/dist/src/internal/builtin-plugins/solidity-test/runner.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js +11 -2
- package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts +0 -1
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +122 -39
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts +1 -2
- package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/test/index.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/test/index.js +0 -7
- package/dist/src/internal/builtin-plugins/test/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/test/task-action.d.ts +0 -1
- package/dist/src/internal/builtin-plugins/test/task-action.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/test/task-action.js +4 -8
- package/dist/src/internal/builtin-plugins/test/task-action.js.map +1 -1
- package/dist/src/internal/cli/help/get-help-string.d.ts.map +1 -1
- package/dist/src/internal/cli/help/get-help-string.js +1 -1
- package/dist/src/internal/cli/help/get-help-string.js.map +1 -1
- package/dist/src/internal/cli/init/init.d.ts.map +1 -1
- package/dist/src/internal/cli/init/init.js +1 -1
- package/dist/src/internal/cli/init/init.js.map +1 -1
- package/dist/src/internal/cli/init/prompt.d.ts.map +1 -1
- package/dist/src/internal/cli/init/prompt.js +1 -7
- package/dist/src/internal/cli/init/prompt.js.map +1 -1
- package/dist/src/internal/cli/main.d.ts.map +1 -1
- package/dist/src/internal/cli/main.js +8 -0
- package/dist/src/internal/cli/main.js.map +1 -1
- package/dist/src/internal/core/hre.d.ts +2 -1
- package/dist/src/internal/core/hre.d.ts.map +1 -1
- package/dist/src/internal/core/hre.js +18 -0
- package/dist/src/internal/core/hre.js.map +1 -1
- package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.d.ts.map +1 -1
- package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js +6 -1
- package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js.map +1 -1
- package/dist/src/internal/core/user-interruptions.d.ts.map +1 -1
- package/dist/src/internal/core/user-interruptions.js +2 -5
- package/dist/src/internal/core/user-interruptions.js.map +1 -1
- package/dist/src/internal/utils/colorizer.d.ts +10 -0
- package/dist/src/internal/utils/colorizer.d.ts.map +1 -0
- package/dist/src/internal/utils/colorizer.js +2 -0
- package/dist/src/internal/utils/colorizer.js.map +1 -0
- package/dist/src/internal/utils/package.d.ts.map +1 -1
- package/dist/src/internal/utils/package.js +1 -1
- package/dist/src/internal/utils/package.js.map +1 -1
- package/dist/src/types/artifacts.d.ts +5 -4
- package/dist/src/types/artifacts.d.ts.map +1 -1
- package/dist/src/types/global-options.d.ts +1 -0
- package/dist/src/types/global-options.d.ts.map +1 -1
- package/dist/src/types/hooks.d.ts +32 -0
- package/dist/src/types/hooks.d.ts.map +1 -1
- package/dist/src/types/network.d.ts +39 -0
- package/dist/src/types/network.d.ts.map +1 -1
- package/dist/src/types/solidity/build-system.d.ts +66 -3
- package/dist/src/types/solidity/build-system.d.ts.map +1 -1
- package/dist/src/types/solidity/build-system.js.map +1 -1
- package/dist/src/types/solidity/compilation-job.d.ts +11 -5
- package/dist/src/types/solidity/compilation-job.d.ts.map +1 -1
- package/dist/src/types/solidity/solidity-artifacts.d.ts +29 -0
- package/dist/src/types/solidity/solidity-artifacts.d.ts.map +1 -1
- package/package.json +10 -9
- package/src/internal/builtin-global-options.ts +15 -1
- package/src/internal/builtin-plugins/artifacts/artifact-manager.ts +9 -15
- package/src/internal/builtin-plugins/console/task-action.ts +2 -1
- package/src/internal/builtin-plugins/gas-analytics/exports.ts +1 -1
- package/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.ts +1 -2
- package/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts +100 -61
- package/src/internal/builtin-plugins/gas-analytics/helpers/accessors.ts +31 -0
- package/src/internal/builtin-plugins/gas-analytics/helpers/compat.ts +37 -0
- package/src/internal/builtin-plugins/gas-analytics/helpers/utils.ts +112 -0
- package/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.ts +1 -1
- package/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.ts +1 -1
- package/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.ts +1 -2
- package/src/internal/builtin-plugins/gas-analytics/types.ts +11 -2
- package/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.ts +25 -3
- package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +107 -56
- package/src/internal/builtin-plugins/network-manager/edr/genesis-state.ts +179 -0
- package/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.ts +4 -0
- package/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.ts +28 -4
- package/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.ts +2 -1
- package/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.ts +197 -0
- package/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.ts +137 -0
- package/src/internal/builtin-plugins/network-manager/hook-handlers/hre.ts +30 -0
- package/src/internal/builtin-plugins/network-manager/hook-handlers/network.ts +27 -24
- package/src/internal/builtin-plugins/network-manager/http-provider.ts +1 -0
- package/src/internal/builtin-plugins/network-manager/network-manager.ts +213 -37
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.ts +1 -0
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.ts +115 -34
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.ts +25 -17
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.ts +13 -5
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.ts +7 -1
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.ts +7 -1
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.ts +7 -1
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.ts +7 -1
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.ts +10 -30
- package/src/internal/builtin-plugins/network-manager/request-handlers/types.ts +10 -0
- package/src/internal/builtin-plugins/network-manager/revert-error-code.ts +2 -0
- package/src/internal/builtin-plugins/network-manager/type-extensions/config.ts +1 -1
- package/src/internal/builtin-plugins/network-manager/type-validation.ts +5 -1
- package/src/internal/builtin-plugins/node/artifacts/build-info-watcher.ts +1 -2
- package/src/internal/builtin-plugins/node/helpers.ts +9 -2
- package/src/internal/builtin-plugins/node/json-rpc/handler.ts +10 -2
- package/src/internal/builtin-plugins/node/task-action.ts +2 -2
- package/src/internal/builtin-plugins/run/task-action.ts +2 -1
- package/src/internal/builtin-plugins/solidity/build-system/artifacts.ts +10 -2
- package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +297 -99
- package/src/internal/builtin-plugins/solidity/build-system/cache.ts +3 -0
- package/src/internal/builtin-plugins/solidity/build-system/compilation-job.ts +49 -16
- package/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.ts +1 -1
- package/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.ts +1 -2
- package/src/internal/builtin-plugins/solidity/build-system/dependency-graph.ts +9 -7
- package/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.ts +4 -2
- package/src/internal/builtin-plugins/solidity/build-system/solc-info.ts +1 -0
- package/src/internal/builtin-plugins/solidity/build-system/warning-suppression.ts +2 -2
- package/src/internal/builtin-plugins/solidity/config.ts +359 -124
- package/src/internal/builtin-plugins/solidity/constants.ts +21 -0
- package/src/internal/builtin-plugins/solidity/exports.ts +2 -0
- package/src/internal/builtin-plugins/solidity/hook-handlers/config.ts +3 -0
- package/src/internal/builtin-plugins/solidity/hook-handlers/solidity.ts +9 -0
- package/src/internal/builtin-plugins/solidity/index.ts +1 -0
- package/src/internal/builtin-plugins/solidity/solidity-hooks.ts +53 -0
- package/src/internal/builtin-plugins/solidity/tasks/build.ts +359 -74
- package/src/internal/builtin-plugins/solidity/type-extensions.ts +289 -32
- package/src/internal/builtin-plugins/solidity-test/config.ts +11 -2
- package/src/internal/builtin-plugins/solidity-test/edr-artifacts.ts +22 -10
- package/src/internal/builtin-plugins/solidity-test/formatters.ts +1 -213
- package/src/internal/builtin-plugins/solidity-test/helpers.ts +8 -15
- package/src/internal/builtin-plugins/solidity-test/index.ts +0 -7
- package/src/internal/builtin-plugins/solidity-test/inline-config/constants.ts +21 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/helpers.ts +99 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/index.ts +272 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/parsing.ts +186 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/types.ts +9 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/validation.ts +122 -0
- package/src/internal/builtin-plugins/solidity-test/reporter.ts +6 -6
- package/src/internal/builtin-plugins/solidity-test/runner.ts +64 -83
- package/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.ts +15 -2
- package/src/internal/builtin-plugins/solidity-test/task-action.ts +192 -57
- package/src/internal/builtin-plugins/solidity-test/type-extensions.ts +1 -2
- package/src/internal/builtin-plugins/test/index.ts +0 -7
- package/src/internal/builtin-plugins/test/task-action.ts +4 -10
- package/src/internal/cli/help/get-help-string.ts +2 -2
- package/src/internal/cli/init/init.ts +1 -1
- package/src/internal/cli/init/prompt.ts +1 -14
- package/src/internal/cli/main.ts +14 -0
- package/src/internal/core/hre.ts +33 -0
- package/src/internal/core/plugins/detect-plugin-npm-dependency-problems.ts +8 -1
- package/src/internal/core/user-interruptions.ts +3 -5
- package/src/internal/utils/colorizer.ts +9 -0
- package/src/internal/utils/package.ts +1 -2
- package/src/types/artifacts.ts +5 -4
- package/src/types/global-options.ts +1 -0
- package/src/types/hooks.ts +37 -0
- package/src/types/network.ts +48 -0
- package/src/types/solidity/build-system.ts +66 -3
- package/src/types/solidity/compilation-job.ts +12 -5
- package/src/types/solidity/solidity-artifacts.ts +32 -0
- package/templates/hardhat-2/04-mocha-viem-ts/package.json +1 -1
- package/templates/hardhat-3/01-node-test-runner-viem/gitignore +11 -0
- package/templates/hardhat-3/01-node-test-runner-viem/package.json +12 -12
- package/templates/hardhat-3/01-node-test-runner-viem/scripts/send-op-tx.ts +1 -1
- package/templates/hardhat-3/01-node-test-runner-viem/test/Counter.ts +1 -1
- package/templates/hardhat-3/02-mocha-ethers/gitignore +11 -0
- package/templates/hardhat-3/02-mocha-ethers/package.json +14 -14
- package/templates/hardhat-3/02-mocha-ethers/scripts/send-op-tx.ts +1 -1
- package/templates/hardhat-3/02-mocha-ethers/test/Counter.ts +1 -1
- package/templates/hardhat-3/03-minimal/gitignore +11 -0
- package/templates/hardhat-3/03-minimal/package.json +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts +0 -19
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts.map +0 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js +0 -46
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.map +0 -1
- package/src/internal/builtin-plugins/gas-analytics/helpers.ts +0 -86
|
@@ -9,10 +9,10 @@ import type {
|
|
|
9
9
|
} from "../../../../types/providers.js";
|
|
10
10
|
import type { RequestHandler } from "../request-handlers/types.js";
|
|
11
11
|
|
|
12
|
-
import { deepClone } from "@nomicfoundation/hardhat-utils/lang";
|
|
13
12
|
import { AsyncMutex } from "@nomicfoundation/hardhat-utils/synchronization";
|
|
14
13
|
|
|
15
14
|
import { isJsonRpcResponse } from "../json-rpc.js";
|
|
15
|
+
import { createHandlersArray } from "../request-handlers/handlers-array.js";
|
|
16
16
|
|
|
17
17
|
export default async (): Promise<Partial<NetworkHooks>> => {
|
|
18
18
|
// This map is essential for managing multiple network connections in Hardhat V3.
|
|
@@ -38,44 +38,47 @@ export default async (): Promise<Partial<NetworkHooks>> => {
|
|
|
38
38
|
nextJsonRpcRequest: JsonRpcRequest,
|
|
39
39
|
) => Promise<JsonRpcResponse>,
|
|
40
40
|
) {
|
|
41
|
-
|
|
42
|
-
"../request-handlers/handlers-array.js"
|
|
43
|
-
);
|
|
41
|
+
let requestHandlers = requestHandlersPerConnection.get(networkConnection);
|
|
44
42
|
|
|
45
|
-
|
|
46
|
-
async () => {
|
|
47
|
-
|
|
43
|
+
if (requestHandlers === undefined) {
|
|
44
|
+
requestHandlers = await initializationMutex.exclusiveRun(async () => {
|
|
45
|
+
// We check again in case another execution of this function
|
|
46
|
+
// initialized the handlers while we were waiting for the mutex.
|
|
47
|
+
const handlersPerConnectionAfterWaiting =
|
|
48
48
|
requestHandlersPerConnection.get(networkConnection);
|
|
49
49
|
|
|
50
|
-
if (
|
|
51
|
-
|
|
52
|
-
await createHandlersArray(networkConnection);
|
|
53
|
-
|
|
54
|
-
requestHandlersPerConnection.set(
|
|
55
|
-
networkConnection,
|
|
56
|
-
handlersPerConnection,
|
|
57
|
-
);
|
|
50
|
+
if (handlersPerConnectionAfterWaiting !== undefined) {
|
|
51
|
+
return handlersPerConnectionAfterWaiting;
|
|
58
52
|
}
|
|
59
53
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
54
|
+
const result = await createHandlersArray(networkConnection);
|
|
55
|
+
|
|
56
|
+
requestHandlersPerConnection.set(networkConnection, result);
|
|
57
|
+
|
|
58
|
+
return result;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
63
61
|
|
|
64
|
-
// We
|
|
65
|
-
//
|
|
66
|
-
|
|
62
|
+
// We previously cloned here, but the performance impact is significant.
|
|
63
|
+
// TODO: ensure the passed in request is not mutated by adapting the
|
|
64
|
+
// handlers being applied here. See https://github.com/NomicFoundation/hardhat/issues/8090
|
|
65
|
+
let updatedRequest = jsonRpcRequest;
|
|
67
66
|
|
|
68
67
|
for (const handler of requestHandlers) {
|
|
69
|
-
|
|
68
|
+
if (!handler.isSupportedMethod(updatedRequest)) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const newRequestOrResponse = await handler.handle(updatedRequest);
|
|
70
73
|
|
|
71
74
|
if (isJsonRpcResponse(newRequestOrResponse)) {
|
|
72
75
|
return newRequestOrResponse;
|
|
73
76
|
}
|
|
74
77
|
|
|
75
|
-
|
|
78
|
+
updatedRequest = newRequestOrResponse;
|
|
76
79
|
}
|
|
77
80
|
|
|
78
|
-
return next(context, networkConnection,
|
|
81
|
+
return next(context, networkConnection, updatedRequest);
|
|
79
82
|
},
|
|
80
83
|
|
|
81
84
|
async closeConnection<ChainTypeT extends ChainType | string>(
|
|
@@ -161,6 +161,7 @@ export class HttpProvider extends BaseProvider {
|
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
public async close(): Promise<void> {
|
|
164
|
+
this.removeAllListeners();
|
|
164
165
|
if (this.#dispatcher !== undefined) {
|
|
165
166
|
// See https://github.com/nodejs/undici/discussions/3522#discussioncomment-10498734
|
|
166
167
|
await this.#dispatcher.close();
|
|
@@ -12,6 +12,7 @@ import type {
|
|
|
12
12
|
DefaultChainType,
|
|
13
13
|
JsonRpcServer,
|
|
14
14
|
NetworkConnection,
|
|
15
|
+
CachedNetworkConnectionParams,
|
|
15
16
|
NetworkConnectionParams,
|
|
16
17
|
NetworkManager,
|
|
17
18
|
} from "../../../types/network.js";
|
|
@@ -21,7 +22,7 @@ import type {
|
|
|
21
22
|
JsonRpcRequest,
|
|
22
23
|
JsonRpcResponse,
|
|
23
24
|
} from "../../../types/providers.js";
|
|
24
|
-
import type { GasReportConfig } from "@nomicfoundation/edr";
|
|
25
|
+
import type { ContractDecoder, GasReportConfig } from "@nomicfoundation/edr";
|
|
25
26
|
|
|
26
27
|
import {
|
|
27
28
|
HardhatError,
|
|
@@ -29,6 +30,7 @@ import {
|
|
|
29
30
|
} from "@nomicfoundation/hardhat-errors";
|
|
30
31
|
import { exists, readBinaryFile } from "@nomicfoundation/hardhat-utils/fs";
|
|
31
32
|
import { deepMerge } from "@nomicfoundation/hardhat-utils/lang";
|
|
33
|
+
import { AsyncMutex } from "@nomicfoundation/hardhat-utils/synchronization";
|
|
32
34
|
|
|
33
35
|
import { resolveUserConfigToHardhatConfig } from "../../core/hre.js";
|
|
34
36
|
import { isSupportedChainType } from "../../edr/chain-type.js";
|
|
@@ -37,6 +39,7 @@ import { JsonRpcServerImplementation } from "../node/json-rpc/server.js";
|
|
|
37
39
|
import { EdrProvider } from "./edr/edr-provider.js";
|
|
38
40
|
import { getHardforks } from "./edr/types/hardfork.js";
|
|
39
41
|
import { edrGasReportToHardhatGasMeasurements } from "./edr/utils/convert-to-edr.js";
|
|
42
|
+
import { verbosityToIncludeTraces } from "./edr/utils/trace-formatters.js";
|
|
40
43
|
import { HttpProvider } from "./http-provider.js";
|
|
41
44
|
import { NetworkConnectionImplementation } from "./network-connection.js";
|
|
42
45
|
|
|
@@ -55,8 +58,19 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
55
58
|
readonly #chainDescriptors: Readonly<ChainDescriptorsConfig>;
|
|
56
59
|
readonly #userProvidedConfigPath: Readonly<string | undefined>;
|
|
57
60
|
readonly #projectRoot: string;
|
|
61
|
+
readonly #verbosity: number;
|
|
62
|
+
|
|
63
|
+
#connectCalled = false;
|
|
58
64
|
|
|
59
65
|
#nextConnectionId = 0;
|
|
66
|
+
readonly #contractDecoderMutex = new AsyncMutex();
|
|
67
|
+
#contractDecoder: ContractDecoder | undefined;
|
|
68
|
+
|
|
69
|
+
readonly #getOrCreateMutex = new AsyncMutex();
|
|
70
|
+
readonly #getOrCreateCache = new Map<
|
|
71
|
+
string,
|
|
72
|
+
Map<string, NetworkConnection<ChainType | string>>
|
|
73
|
+
>();
|
|
60
74
|
|
|
61
75
|
constructor(
|
|
62
76
|
defaultNetwork: string,
|
|
@@ -68,6 +82,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
68
82
|
chainDescriptors: ChainDescriptorsConfig,
|
|
69
83
|
userProvidedConfigPath: string | undefined,
|
|
70
84
|
projectRoot: string,
|
|
85
|
+
verbosity: number,
|
|
71
86
|
) {
|
|
72
87
|
this.#defaultNetwork = defaultNetwork;
|
|
73
88
|
this.#defaultChainType = defaultChainType;
|
|
@@ -78,11 +93,10 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
78
93
|
this.#chainDescriptors = chainDescriptors;
|
|
79
94
|
this.#userProvidedConfigPath = userProvidedConfigPath;
|
|
80
95
|
this.#projectRoot = projectRoot;
|
|
96
|
+
this.#verbosity = verbosity;
|
|
81
97
|
}
|
|
82
98
|
|
|
83
|
-
public async
|
|
84
|
-
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
85
|
-
>(
|
|
99
|
+
public async create<ChainTypeT extends ChainType | string = DefaultChainType>(
|
|
86
100
|
networkOrParams?: NetworkConnectionParams<ChainTypeT> | string,
|
|
87
101
|
): Promise<NetworkConnection<ChainTypeT>> {
|
|
88
102
|
let networkName: string | undefined;
|
|
@@ -110,6 +124,80 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
110
124
|
return networkConnection as NetworkConnection<ChainTypeT>;
|
|
111
125
|
}
|
|
112
126
|
|
|
127
|
+
public async connect<
|
|
128
|
+
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
129
|
+
>(
|
|
130
|
+
networkOrParams?: NetworkConnectionParams<ChainTypeT> | string,
|
|
131
|
+
): Promise<NetworkConnection<ChainTypeT>> {
|
|
132
|
+
this.#connectCalled = true;
|
|
133
|
+
|
|
134
|
+
return this.create(networkOrParams);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
public async getOrCreate<
|
|
138
|
+
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
139
|
+
>(
|
|
140
|
+
networkOrParams?: CachedNetworkConnectionParams<ChainTypeT> | string,
|
|
141
|
+
): Promise<NetworkConnection<ChainTypeT>> {
|
|
142
|
+
let network: string | undefined;
|
|
143
|
+
let chainType: ChainTypeT | undefined;
|
|
144
|
+
|
|
145
|
+
if (typeof networkOrParams === "string") {
|
|
146
|
+
network = networkOrParams;
|
|
147
|
+
} else if (networkOrParams !== undefined) {
|
|
148
|
+
network = networkOrParams.network;
|
|
149
|
+
chainType = networkOrParams.chainType;
|
|
150
|
+
|
|
151
|
+
if ("override" in networkOrParams) {
|
|
152
|
+
throw new HardhatError(
|
|
153
|
+
HardhatError.ERRORS.CORE.NETWORK.INVALID_CONFIG_OVERRIDE,
|
|
154
|
+
{
|
|
155
|
+
errors: "\t* Config overrides are not supported by getOrCreate.",
|
|
156
|
+
},
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const { resolvedNetworkName, resolvedChainType } =
|
|
162
|
+
this.#resolveNetworkAndChainType(network, chainType);
|
|
163
|
+
|
|
164
|
+
const cached = this.#getOrCreateCache
|
|
165
|
+
.get(resolvedNetworkName)
|
|
166
|
+
?.get(resolvedChainType);
|
|
167
|
+
if (cached !== undefined) {
|
|
168
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
169
|
+
-- Cast is safe: the cache keys guarantee the chain type matches */
|
|
170
|
+
return cached as NetworkConnection<ChainTypeT>;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return this.#getOrCreateMutex.exclusiveRun(async () => {
|
|
174
|
+
// Double-check after acquiring the mutex — another call may have
|
|
175
|
+
// populated the cache while we were waiting.
|
|
176
|
+
const cachedAfterWaiting = this.#getOrCreateCache
|
|
177
|
+
.get(resolvedNetworkName)
|
|
178
|
+
?.get(resolvedChainType);
|
|
179
|
+
if (cachedAfterWaiting !== undefined) {
|
|
180
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
181
|
+
-- Cast is safe: the cache keys guarantee the chain type matches */
|
|
182
|
+
return cachedAfterWaiting as NetworkConnection<ChainTypeT>;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const connection = await this.create({
|
|
186
|
+
network: resolvedNetworkName,
|
|
187
|
+
chainType: resolvedChainType,
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
let networkCache = this.#getOrCreateCache.get(resolvedNetworkName);
|
|
191
|
+
if (networkCache === undefined) {
|
|
192
|
+
networkCache = new Map();
|
|
193
|
+
this.#getOrCreateCache.set(resolvedNetworkName, networkCache);
|
|
194
|
+
}
|
|
195
|
+
networkCache.set(resolvedChainType, connection);
|
|
196
|
+
|
|
197
|
+
return connection;
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
113
201
|
public async createServer<
|
|
114
202
|
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
115
203
|
>(
|
|
@@ -122,7 +210,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
122
210
|
const insideDocker = await exists("/.dockerenv");
|
|
123
211
|
const hostname = _hostname ?? (insideDocker ? "0.0.0.0" : "127.0.0.1");
|
|
124
212
|
|
|
125
|
-
const { provider } = await this.
|
|
213
|
+
const { provider } = await this.create(networkOrParams);
|
|
126
214
|
|
|
127
215
|
return new JsonRpcServerImplementation({
|
|
128
216
|
hostname,
|
|
@@ -131,30 +219,24 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
131
219
|
});
|
|
132
220
|
}
|
|
133
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Returns whether the deprecated `connect` method has been called on this
|
|
224
|
+
* instance. It is not on the public NetworkManager interface as it is only
|
|
225
|
+
* used by the CLI to print a deprecation warning at exit.
|
|
226
|
+
*
|
|
227
|
+
* @returns whether the deprecated `connect` method has ever been called
|
|
228
|
+
*/
|
|
229
|
+
public wasConnectCalled(): boolean {
|
|
230
|
+
return this.#connectCalled;
|
|
231
|
+
}
|
|
232
|
+
|
|
134
233
|
async #initializeNetworkConnection<ChainTypeT extends ChainType | string>(
|
|
135
234
|
networkName?: string,
|
|
136
235
|
chainType?: ChainTypeT,
|
|
137
236
|
networkConfigOverride?: NetworkConfigOverride,
|
|
138
237
|
): Promise<NetworkConnection<ChainTypeT>> {
|
|
139
|
-
const resolvedNetworkName
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (existingNetworkConfig === undefined) {
|
|
143
|
-
throw new HardhatError(
|
|
144
|
-
HardhatError.ERRORS.CORE.NETWORK.NETWORK_NOT_FOUND,
|
|
145
|
-
{
|
|
146
|
-
networkName: resolvedNetworkName,
|
|
147
|
-
},
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions --
|
|
152
|
-
* Type assertion is safe: defaultChainType ensures non-undefined, and the
|
|
153
|
-
* resolved value will be ChainTypeT (if provided) or a fallback that
|
|
154
|
-
* satisfies the ChainType | string constraint */
|
|
155
|
-
const resolvedChainType = (chainType ??
|
|
156
|
-
existingNetworkConfig.chainType ??
|
|
157
|
-
this.#defaultChainType) as ChainTypeT;
|
|
238
|
+
const { resolvedNetworkName, resolvedChainType } =
|
|
239
|
+
this.#resolveNetworkAndChainType(networkName, chainType);
|
|
158
240
|
|
|
159
241
|
const resolvedNetworkConfig = await this.#resolveNetworkConfig(
|
|
160
242
|
resolvedNetworkName,
|
|
@@ -233,6 +315,42 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
233
315
|
};
|
|
234
316
|
}
|
|
235
317
|
|
|
318
|
+
// We load the build infos and their outputs to create a contract
|
|
319
|
+
// decoder when the first provider is created. Successive providers will
|
|
320
|
+
// reuse the same decoder as a performance optimization.
|
|
321
|
+
//
|
|
322
|
+
// The trade-off here is that if you create an EDR provider, then
|
|
323
|
+
// compile new contracts, and create a new provider, the new contracts
|
|
324
|
+
// won't be loaded.
|
|
325
|
+
//
|
|
326
|
+
// Even without this optimization, we already had the problem of new
|
|
327
|
+
// contracts not being visible to existing providers.
|
|
328
|
+
//
|
|
329
|
+
// In practice, most workflows compile everything before creating
|
|
330
|
+
// any network connection.
|
|
331
|
+
if (this.#contractDecoder === undefined) {
|
|
332
|
+
// We want to ensure that only one contract decoder is created so we
|
|
333
|
+
// protect the initialization with a mutex.
|
|
334
|
+
await this.#contractDecoderMutex.exclusiveRun(async () => {
|
|
335
|
+
// We check again if the decoder is undefined because another async
|
|
336
|
+
// execution context could have already initialized it while we were
|
|
337
|
+
// waiting for the mutex.
|
|
338
|
+
if (this.#contractDecoder === undefined) {
|
|
339
|
+
this.#contractDecoder = await EdrProvider.createContractDecoder({
|
|
340
|
+
buildInfos: await this.#getBuildInfosAndOutputsAsBuffers(),
|
|
341
|
+
ignoreContracts: false,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
assertHardhatInvariant(
|
|
348
|
+
this.#contractDecoder !== undefined,
|
|
349
|
+
"Contract decoder should have been initialized before creating the provider",
|
|
350
|
+
);
|
|
351
|
+
|
|
352
|
+
const includeCallTraces = verbosityToIncludeTraces(this.#verbosity);
|
|
353
|
+
|
|
236
354
|
return EdrProvider.create({
|
|
237
355
|
chainDescriptors: this.#chainDescriptors,
|
|
238
356
|
// The resolvedNetworkConfig can have its chainType set to `undefined`
|
|
@@ -244,17 +362,16 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
244
362
|
allowUnlimitedContractSize: shouldEnableCoverage
|
|
245
363
|
? true
|
|
246
364
|
: resolvedNetworkConfig.allowUnlimitedContractSize,
|
|
247
|
-
|
|
248
|
-
This case is safe because we have a check above */
|
|
249
|
-
chainType: resolvedChainType as ChainType,
|
|
365
|
+
chainType: resolvedChainType,
|
|
250
366
|
},
|
|
251
367
|
jsonRpcRequestWrapper,
|
|
252
|
-
|
|
253
|
-
buildInfos: await this.#getBuildInfosAndOutputsAsBuffers(),
|
|
254
|
-
ignoreContracts: false,
|
|
255
|
-
},
|
|
368
|
+
contractDecoder: this.#contractDecoder,
|
|
256
369
|
coverageConfig,
|
|
257
370
|
gasReportConfig,
|
|
371
|
+
includeCallTraces,
|
|
372
|
+
connectionId: networkConnection.id,
|
|
373
|
+
networkName: networkConnection.networkName,
|
|
374
|
+
verbosity: this.#verbosity,
|
|
258
375
|
});
|
|
259
376
|
}
|
|
260
377
|
|
|
@@ -298,17 +415,32 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
298
415
|
*/
|
|
299
416
|
async #resolveNetworkConfig<ChainTypeT extends ChainType | string>(
|
|
300
417
|
resolvedNetworkName: string,
|
|
301
|
-
networkConfigOverride: NetworkConfigOverride
|
|
418
|
+
networkConfigOverride: NetworkConfigOverride = {},
|
|
302
419
|
resolvedChainType: ChainTypeT,
|
|
303
420
|
): Promise<NetworkConfig> {
|
|
304
421
|
const existingNetworkConfig = this.#networkConfigs[resolvedNetworkName];
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
422
|
+
|
|
423
|
+
const hasNoOverrides = Object.keys(networkConfigOverride).length === 0;
|
|
424
|
+
const isChainTypeUnchanged =
|
|
425
|
+
resolvedChainType === existingNetworkConfig.chainType;
|
|
426
|
+
const isChainTypeDefault =
|
|
427
|
+
existingNetworkConfig.chainType === undefined &&
|
|
428
|
+
resolvedChainType === this.#defaultChainType;
|
|
429
|
+
|
|
430
|
+
if (hasNoOverrides && isChainTypeUnchanged) {
|
|
309
431
|
return existingNetworkConfig;
|
|
310
432
|
}
|
|
311
433
|
|
|
434
|
+
if (hasNoOverrides && isChainTypeDefault) {
|
|
435
|
+
return {
|
|
436
|
+
...existingNetworkConfig,
|
|
437
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions --
|
|
438
|
+
TypeScript can't follow this case, but we are just providing the
|
|
439
|
+
default */
|
|
440
|
+
chainType: resolvedChainType as ChainType,
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
|
|
312
444
|
if (
|
|
313
445
|
"type" in networkConfigOverride &&
|
|
314
446
|
networkConfigOverride.type !== existingNetworkConfig.type
|
|
@@ -328,7 +460,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
328
460
|
throw new HardhatError(
|
|
329
461
|
HardhatError.ERRORS.CORE.NETWORK.INVALID_CONFIG_OVERRIDE,
|
|
330
462
|
{
|
|
331
|
-
errors: `\t* The chainType cannot be specified in config overrides. Pass it at the top level instead: hre.network.
|
|
463
|
+
errors: `\t* The chainType cannot be specified in config overrides. Pass it at the top level instead: hre.network.create({ chainType: 'op' })`,
|
|
332
464
|
},
|
|
333
465
|
);
|
|
334
466
|
}
|
|
@@ -357,6 +489,20 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
357
489
|
);
|
|
358
490
|
|
|
359
491
|
if (!configResolutionResult.success) {
|
|
492
|
+
if (configResolutionResult.configValidationErrors !== undefined) {
|
|
493
|
+
throw new HardhatError(
|
|
494
|
+
HardhatError.ERRORS.CORE.NETWORK.INVALID_CONFIG_OVERRIDE,
|
|
495
|
+
{
|
|
496
|
+
errors: `\t${configResolutionResult.configValidationErrors
|
|
497
|
+
.map(
|
|
498
|
+
(error) =>
|
|
499
|
+
`* Error in resolved config ${error.path.join(".")}: ${error.message}`,
|
|
500
|
+
)
|
|
501
|
+
.join("\n\t")}`,
|
|
502
|
+
},
|
|
503
|
+
);
|
|
504
|
+
}
|
|
505
|
+
|
|
360
506
|
throw new HardhatError(
|
|
361
507
|
HardhatError.ERRORS.CORE.NETWORK.INVALID_CONFIG_OVERRIDE,
|
|
362
508
|
{
|
|
@@ -401,6 +547,36 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
401
547
|
return resolvedNetworkConfigOverride;
|
|
402
548
|
}
|
|
403
549
|
|
|
550
|
+
#resolveNetworkAndChainType<
|
|
551
|
+
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
552
|
+
>(
|
|
553
|
+
network: string | undefined,
|
|
554
|
+
chainType: ChainTypeT | undefined,
|
|
555
|
+
): { resolvedNetworkName: string; resolvedChainType: ChainTypeT } {
|
|
556
|
+
const resolvedNetworkName = network ?? this.#defaultNetwork;
|
|
557
|
+
const existingNetworkConfig = this.#networkConfigs[resolvedNetworkName];
|
|
558
|
+
|
|
559
|
+
if (existingNetworkConfig === undefined) {
|
|
560
|
+
throw new HardhatError(
|
|
561
|
+
HardhatError.ERRORS.CORE.NETWORK.NETWORK_NOT_FOUND,
|
|
562
|
+
{
|
|
563
|
+
networkName: resolvedNetworkName,
|
|
564
|
+
},
|
|
565
|
+
);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
const resolvedChainType =
|
|
569
|
+
chainType ?? existingNetworkConfig.chainType ?? this.#defaultChainType;
|
|
570
|
+
|
|
571
|
+
return {
|
|
572
|
+
resolvedNetworkName,
|
|
573
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
574
|
+
-- The cast is safe because the fallback values are valid chain
|
|
575
|
+
types that match the caller's expected type at runtime. */
|
|
576
|
+
resolvedChainType: resolvedChainType as ChainTypeT,
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
|
|
404
580
|
async #getBuildInfosAndOutputsAsBuffers(): Promise<
|
|
405
581
|
Array<{ buildInfo: Uint8Array; output: Uint8Array }>
|
|
406
582
|
> {
|