hardhat 3.3.0 → 3.4.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/CHANGELOG.md +69 -0
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js +6 -14
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js.map +1 -1
- package/dist/src/internal/builtin-plugins/artifacts/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/artifacts/hook-handlers/hre.js +10 -10
- package/dist/src/internal/builtin-plugins/artifacts/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/clean/index.js +1 -1
- package/dist/src/internal/builtin-plugins/clean/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/console/index.js +1 -1
- package/dist/src/internal/builtin-plugins/console/index.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/coverage/hook-handlers/solidity.js +2 -2
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js.map +1 -1
- package/dist/src/internal/builtin-plugins/flatten/index.js +1 -1
- package/dist/src/internal/builtin-plugins/flatten/index.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/index.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/index.js +2 -2
- package/dist/src/internal/builtin-plugins/gas-analytics/index.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/edr/edr-provider.js +4 -4
- 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.js +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js.map +1 -1
- 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 +3 -2
- 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/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js +24 -2
- 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 +19 -11
- 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 +2 -2
- 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 +11 -1
- 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 +91 -24
- 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 +22 -8
- 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/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/helpers.js +1 -1
- package/dist/src/internal/builtin-plugins/node/helpers.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/index.js +1 -1
- package/dist/src/internal/builtin-plugins/node/index.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/index.js +1 -1
- package/dist/src/internal/builtin-plugins/run/index.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 +3 -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 +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +125 -39
- 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 +2 -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 +3 -1
- 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 +12 -4
- 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/downloader.js +4 -4
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.js +2 -2
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/solcjs-runner.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/solcjs-runner.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.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/read-source-file.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/read-source-file.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.js +10 -10
- package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.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.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/config.js +19 -16
- 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/hook-handlers/config.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.js +10 -10
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/index.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js.map +1 -1
- 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 +30 -4
- 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.js +2 -2
- package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +0 -2
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +0 -3
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/config.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/config.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/test.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/test.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/index.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/reporter.js +1 -1
- 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.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +108 -32
- 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/telemetry/index.js +1 -1
- package/dist/src/internal/builtin-plugins/telemetry/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/test/hook-handlers/config.js +1 -1
- package/dist/src/internal/builtin-plugins/test/hook-handlers/config.js.map +1 -1
- package/dist/src/internal/builtin-plugins/test/index.js +1 -1
- package/dist/src/internal/builtin-plugins/test/index.js.map +1 -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 +3 -4
- package/dist/src/internal/builtin-plugins/test/task-action.js.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/main.d.ts.map +1 -1
- package/dist/src/internal/cli/main.js +12 -2
- package/dist/src/internal/cli/main.js.map +1 -1
- package/dist/src/internal/cli/node-version.d.ts.map +1 -1
- package/dist/src/internal/cli/node-version.js +3 -0
- package/dist/src/internal/cli/node-version.js.map +1 -1
- package/dist/src/internal/cli/telemetry/analytics/analytics.js +2 -2
- package/dist/src/internal/cli/telemetry/analytics/analytics.js.map +1 -1
- package/dist/src/internal/cli/telemetry/error-reporter/global-error-handlers.d.ts +6 -0
- package/dist/src/internal/cli/telemetry/error-reporter/global-error-handlers.d.ts.map +1 -0
- package/dist/src/internal/cli/telemetry/error-reporter/global-error-handlers.js +47 -0
- package/dist/src/internal/cli/telemetry/error-reporter/global-error-handlers.js.map +1 -0
- package/dist/src/internal/cli/telemetry/error-reporter/reporter.d.ts +27 -0
- package/dist/src/internal/cli/telemetry/error-reporter/reporter.d.ts.map +1 -0
- package/dist/src/internal/cli/telemetry/error-reporter/reporter.js +40 -0
- package/dist/src/internal/cli/telemetry/error-reporter/reporter.js.map +1 -0
- package/dist/src/internal/cli/telemetry/sentry/anonymizer.js +1 -1
- package/dist/src/internal/cli/telemetry/sentry/anonymizer.js.map +1 -1
- package/dist/src/internal/cli/telemetry/sentry/init.d.ts +0 -8
- package/dist/src/internal/cli/telemetry/sentry/init.d.ts.map +1 -1
- package/dist/src/internal/cli/telemetry/sentry/init.js +1 -37
- package/dist/src/internal/cli/telemetry/sentry/init.js.map +1 -1
- package/dist/src/internal/cli/telemetry/sentry/reporter.d.ts +8 -2
- package/dist/src/internal/cli/telemetry/sentry/reporter.d.ts.map +1 -1
- package/dist/src/internal/cli/telemetry/sentry/reporter.js +18 -12
- package/dist/src/internal/cli/telemetry/sentry/reporter.js.map +1 -1
- package/dist/src/internal/cli/telemetry/sentry/transport.js +1 -1
- package/dist/src/internal/cli/telemetry/sentry/transport.js.map +1 -1
- package/dist/src/internal/cli/telemetry/telemetry-permissions.js +1 -1
- package/dist/src/internal/cli/telemetry/telemetry-permissions.js.map +1 -1
- package/dist/src/internal/config-loading.js +3 -3
- package/dist/src/internal/config-loading.js.map +1 -1
- package/dist/src/internal/core/configuration-variables.d.ts.map +1 -1
- package/dist/src/internal/core/configuration-variables.js +1 -1
- package/dist/src/internal/core/configuration-variables.js.map +1 -1
- package/dist/src/internal/core/hook-manager.js +3 -3
- package/dist/src/internal/core/hook-manager.js.map +1 -1
- package/dist/src/internal/core/hre.d.ts.map +1 -1
- package/dist/src/internal/core/hre.js +3 -3
- package/dist/src/internal/core/hre.js.map +1 -1
- package/dist/src/internal/core/plugins/resolve-plugin-list.js +1 -1
- package/dist/src/internal/core/plugins/resolve-plugin-list.js.map +1 -1
- package/dist/src/internal/core/tasks/resolved-task.js +4 -4
- package/dist/src/internal/core/tasks/resolved-task.js.map +1 -1
- package/dist/src/internal/core/user-interruptions.js +9 -9
- package/dist/src/internal/core/user-interruptions.js.map +1 -1
- package/dist/src/internal/hre-initialization.js +1 -1
- package/dist/src/internal/hre-initialization.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/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 +6 -0
- package/dist/src/types/solidity/compilation-job.d.ts.map +1 -1
- package/dist/src/types/solidity/solidity-artifacts.d.ts +14 -0
- package/dist/src/types/solidity/solidity-artifacts.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/internal/builtin-plugins/artifacts/artifact-manager.ts +10 -16
- package/src/internal/builtin-plugins/artifacts/hook-handlers/hre.ts +16 -10
- package/src/internal/builtin-plugins/clean/index.ts +1 -1
- package/src/internal/builtin-plugins/console/index.ts +1 -1
- package/src/internal/builtin-plugins/console/task-action.ts +2 -1
- package/src/internal/builtin-plugins/coverage/hook-handlers/solidity.ts +2 -2
- package/src/internal/builtin-plugins/flatten/index.ts +1 -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/index.ts +4 -2
- 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/edr/edr-provider.ts +4 -4
- package/src/internal/builtin-plugins/network-manager/edr/genesis-state.ts +1 -1
- 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 +3 -2
- package/src/internal/builtin-plugins/network-manager/hook-handlers/hre.ts +31 -2
- package/src/internal/builtin-plugins/network-manager/hook-handlers/network.ts +22 -16
- package/src/internal/builtin-plugins/network-manager/http-provider.ts +6 -2
- package/src/internal/builtin-plugins/network-manager/network-manager.ts +139 -32
- 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 +30 -13
- 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/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/helpers.ts +1 -1
- package/src/internal/builtin-plugins/node/index.ts +1 -1
- 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/index.ts +1 -1
- package/src/internal/builtin-plugins/run/task-action.ts +2 -1
- package/src/internal/builtin-plugins/solidity/build-system/artifacts.ts +3 -0
- package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +176 -45
- package/src/internal/builtin-plugins/solidity/build-system/cache.ts +2 -0
- package/src/internal/builtin-plugins/solidity/build-system/compilation-job.ts +16 -10
- package/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.ts +4 -4
- package/src/internal/builtin-plugins/solidity/build-system/compiler/index.ts +2 -2
- package/src/internal/builtin-plugins/solidity/build-system/compiler/solcjs-runner.ts +1 -1
- package/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.ts +1 -1
- package/src/internal/builtin-plugins/solidity/build-system/dependency-graph.ts +9 -7
- package/src/internal/builtin-plugins/solidity/build-system/read-source-file.ts +2 -2
- package/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.ts +11 -11
- package/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.ts +1 -1
- 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 +23 -13
- package/src/internal/builtin-plugins/solidity/constants.ts +21 -0
- package/src/internal/builtin-plugins/solidity/hook-handlers/config.ts +1 -1
- package/src/internal/builtin-plugins/solidity/hook-handlers/hre.ts +14 -10
- package/src/internal/builtin-plugins/solidity/index.ts +1 -1
- package/src/internal/builtin-plugins/solidity/solidity-hooks.ts +1 -1
- package/src/internal/builtin-plugins/solidity/tasks/build.ts +359 -74
- package/src/internal/builtin-plugins/solidity/type-extensions.ts +38 -8
- package/src/internal/builtin-plugins/solidity-test/config.ts +11 -2
- package/src/internal/builtin-plugins/solidity-test/edr-artifacts.ts +2 -2
- package/src/internal/builtin-plugins/solidity-test/helpers.ts +0 -7
- package/src/internal/builtin-plugins/solidity-test/hook-handlers/config.ts +1 -1
- package/src/internal/builtin-plugins/solidity-test/hook-handlers/test.ts +1 -1
- package/src/internal/builtin-plugins/solidity-test/index.ts +1 -1
- package/src/internal/builtin-plugins/solidity-test/reporter.ts +1 -1
- 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 +161 -43
- package/src/internal/builtin-plugins/solidity-test/type-extensions.ts +1 -2
- package/src/internal/builtin-plugins/telemetry/index.ts +1 -1
- package/src/internal/builtin-plugins/test/hook-handlers/config.ts +1 -1
- package/src/internal/builtin-plugins/test/index.ts +1 -1
- package/src/internal/builtin-plugins/test/task-action.ts +3 -4
- package/src/internal/cli/init/init.ts +1 -1
- package/src/internal/cli/main.ts +19 -3
- package/src/internal/cli/node-version.ts +3 -0
- package/src/internal/cli/telemetry/analytics/analytics.ts +2 -2
- package/src/internal/cli/telemetry/error-reporter/global-error-handlers.ts +64 -0
- package/src/internal/cli/telemetry/error-reporter/reporter.ts +49 -0
- package/src/internal/cli/telemetry/sentry/anonymizer.ts +1 -1
- package/src/internal/cli/telemetry/sentry/init.ts +2 -62
- package/src/internal/cli/telemetry/sentry/reporter.ts +27 -15
- package/src/internal/cli/telemetry/sentry/transport.ts +1 -1
- package/src/internal/cli/telemetry/telemetry-permissions.ts +1 -1
- package/src/internal/config-loading.ts +3 -3
- package/src/internal/core/configuration-variables.ts +19 -18
- package/src/internal/core/hook-manager.ts +3 -3
- package/src/internal/core/hre.ts +5 -3
- package/src/internal/core/plugins/resolve-plugin-list.ts +1 -1
- package/src/internal/core/tasks/resolved-task.ts +4 -4
- package/src/internal/core/user-interruptions.ts +9 -9
- package/src/internal/hre-initialization.ts +1 -1
- package/src/types/artifacts.ts +5 -4
- package/src/types/network.ts +48 -0
- package/src/types/solidity/build-system.ts +66 -3
- package/src/types/solidity/compilation-job.ts +7 -0
- package/src/types/solidity/solidity-artifacts.ts +16 -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 -14
- 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 -55
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.map +0 -1
- package/src/internal/builtin-plugins/gas-analytics/helpers.ts +0 -96
|
@@ -281,7 +281,7 @@ export async function hardhatAccountsToEdrOwnedAccounts(
|
|
|
281
281
|
balance: account.balance,
|
|
282
282
|
}));
|
|
283
283
|
|
|
284
|
-
return Promise.all(accountPromises);
|
|
284
|
+
return await Promise.all(accountPromises);
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
export async function normalizeEdrNetworkAccountsConfig(
|
|
@@ -404,7 +404,7 @@ export function edrGasReportToHardhatGasMeasurements(
|
|
|
404
404
|
contractFqn,
|
|
405
405
|
type: "deployment",
|
|
406
406
|
gas: Number(deployment.gas),
|
|
407
|
-
|
|
407
|
+
runtimeSize: Number(deployment.runtimeSize),
|
|
408
408
|
});
|
|
409
409
|
}
|
|
410
410
|
}
|
|
@@ -418,6 +418,7 @@ export function edrGasReportToHardhatGasMeasurements(
|
|
|
418
418
|
type: "function",
|
|
419
419
|
functionSig,
|
|
420
420
|
gas: Number(call.gas),
|
|
421
|
+
proxyChain: call.proxyChain,
|
|
421
422
|
});
|
|
422
423
|
}
|
|
423
424
|
}
|
|
@@ -12,21 +12,50 @@ export default async (): Promise<Partial<HardhatRuntimeEnvironmentHooks>> => ({
|
|
|
12
12
|
let networkManager: NetworkManager | undefined;
|
|
13
13
|
|
|
14
14
|
hre.network = {
|
|
15
|
+
async create(networkConnectionParams) {
|
|
16
|
+
if (networkManager === undefined) {
|
|
17
|
+
networkManager = await createNetworkManager(hre, context);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return await networkManager.create(networkConnectionParams);
|
|
21
|
+
},
|
|
22
|
+
|
|
15
23
|
async connect(networkConnectionParams) {
|
|
16
24
|
if (networkManager === undefined) {
|
|
17
25
|
networkManager = await createNetworkManager(hre, context);
|
|
18
26
|
}
|
|
19
27
|
|
|
20
|
-
return networkManager.connect(networkConnectionParams);
|
|
28
|
+
return await networkManager.connect(networkConnectionParams);
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
async getOrCreate(networkOrParams) {
|
|
32
|
+
if (networkManager === undefined) {
|
|
33
|
+
networkManager = await createNetworkManager(hre, context);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return await networkManager.getOrCreate(networkOrParams);
|
|
21
37
|
},
|
|
38
|
+
|
|
22
39
|
async createServer(...params) {
|
|
23
40
|
if (networkManager === undefined) {
|
|
24
41
|
networkManager = await createNetworkManager(hre, context);
|
|
25
42
|
}
|
|
26
43
|
|
|
27
|
-
return networkManager.createServer(...params);
|
|
44
|
+
return await networkManager.createServer(...params);
|
|
28
45
|
},
|
|
29
46
|
};
|
|
47
|
+
|
|
48
|
+
// To avoid adding `wasConnectCalled` to the public interface of
|
|
49
|
+
// `NetworkManager`, we add this pass through method that is only
|
|
50
|
+
// called from the `main` function.
|
|
51
|
+
Object.defineProperty(hre.network, "wasConnectCalled", {
|
|
52
|
+
value: () =>
|
|
53
|
+
networkManager !== undefined &&
|
|
54
|
+
"wasConnectCalled" in networkManager &&
|
|
55
|
+
typeof networkManager.wasConnectCalled === "function" &&
|
|
56
|
+
networkManager.wasConnectCalled(),
|
|
57
|
+
enumerable: false,
|
|
58
|
+
});
|
|
30
59
|
},
|
|
31
60
|
});
|
|
32
61
|
|
|
@@ -38,24 +38,26 @@ export default async (): Promise<Partial<NetworkHooks>> => {
|
|
|
38
38
|
nextJsonRpcRequest: JsonRpcRequest,
|
|
39
39
|
) => Promise<JsonRpcResponse>,
|
|
40
40
|
) {
|
|
41
|
-
|
|
42
|
-
async () => {
|
|
43
|
-
let handlersPerConnection =
|
|
44
|
-
requestHandlersPerConnection.get(networkConnection);
|
|
41
|
+
let requestHandlers = requestHandlersPerConnection.get(networkConnection);
|
|
45
42
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
+
requestHandlersPerConnection.get(networkConnection);
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
handlersPerConnection,
|
|
53
|
-
);
|
|
50
|
+
if (handlersPerConnectionAfterWaiting !== undefined) {
|
|
51
|
+
return handlersPerConnectionAfterWaiting;
|
|
54
52
|
}
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
const result = await createHandlersArray(networkConnection);
|
|
55
|
+
|
|
56
|
+
requestHandlersPerConnection.set(networkConnection, result);
|
|
57
|
+
|
|
58
|
+
return result;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
59
61
|
|
|
60
62
|
// We previously cloned here, but the performance impact is significant.
|
|
61
63
|
// TODO: ensure the passed in request is not mutated by adapting the
|
|
@@ -63,6 +65,10 @@ export default async (): Promise<Partial<NetworkHooks>> => {
|
|
|
63
65
|
let updatedRequest = jsonRpcRequest;
|
|
64
66
|
|
|
65
67
|
for (const handler of requestHandlers) {
|
|
68
|
+
if (!handler.isSupportedMethod(updatedRequest)) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
|
|
66
72
|
const newRequestOrResponse = await handler.handle(updatedRequest);
|
|
67
73
|
|
|
68
74
|
if (isJsonRpcResponse(newRequestOrResponse)) {
|
|
@@ -72,7 +78,7 @@ export default async (): Promise<Partial<NetworkHooks>> => {
|
|
|
72
78
|
updatedRequest = newRequestOrResponse;
|
|
73
79
|
}
|
|
74
80
|
|
|
75
|
-
return next(context, networkConnection, updatedRequest);
|
|
81
|
+
return await next(context, networkConnection, updatedRequest);
|
|
76
82
|
},
|
|
77
83
|
|
|
78
84
|
async closeConnection<ChainTypeT extends ChainType | string>(
|
|
@@ -87,7 +93,7 @@ export default async (): Promise<Partial<NetworkHooks>> => {
|
|
|
87
93
|
requestHandlersPerConnection.delete(networkConnection);
|
|
88
94
|
}
|
|
89
95
|
|
|
90
|
-
return next(context, networkConnection);
|
|
96
|
+
return await next(context, networkConnection);
|
|
91
97
|
},
|
|
92
98
|
};
|
|
93
99
|
|
|
@@ -224,7 +224,11 @@ export class HttpProvider extends BaseProvider {
|
|
|
224
224
|
retryCount,
|
|
225
225
|
);
|
|
226
226
|
if (this.#shouldRetryRequest(retryAfterSeconds, retryCount)) {
|
|
227
|
-
return this.#retry(
|
|
227
|
+
return await this.#retry(
|
|
228
|
+
jsonRpcRequest,
|
|
229
|
+
retryAfterSeconds,
|
|
230
|
+
retryCount,
|
|
231
|
+
);
|
|
228
232
|
}
|
|
229
233
|
|
|
230
234
|
// eslint-disable-next-line no-restricted-syntax -- allow throwing ProviderError
|
|
@@ -269,7 +273,7 @@ export class HttpProvider extends BaseProvider {
|
|
|
269
273
|
retryCount: number,
|
|
270
274
|
) {
|
|
271
275
|
await sleep(retryAfterSeconds);
|
|
272
|
-
return this.#fetchJsonRpcResponse(request, retryCount + 1);
|
|
276
|
+
return await this.#fetchJsonRpcResponse(request, retryCount + 1);
|
|
273
277
|
}
|
|
274
278
|
}
|
|
275
279
|
|
|
@@ -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";
|
|
@@ -59,10 +60,18 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
59
60
|
readonly #projectRoot: string;
|
|
60
61
|
readonly #verbosity: number;
|
|
61
62
|
|
|
63
|
+
#connectCalled = false;
|
|
64
|
+
|
|
62
65
|
#nextConnectionId = 0;
|
|
63
66
|
readonly #contractDecoderMutex = new AsyncMutex();
|
|
64
67
|
#contractDecoder: ContractDecoder | undefined;
|
|
65
68
|
|
|
69
|
+
readonly #getOrCreateMutex = new AsyncMutex();
|
|
70
|
+
readonly #getOrCreateCache = new Map<
|
|
71
|
+
string,
|
|
72
|
+
Map<string, NetworkConnection<ChainType | string>>
|
|
73
|
+
>();
|
|
74
|
+
|
|
66
75
|
constructor(
|
|
67
76
|
defaultNetwork: string,
|
|
68
77
|
defaultChainType: DefaultChainType,
|
|
@@ -87,9 +96,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
87
96
|
this.#verbosity = verbosity;
|
|
88
97
|
}
|
|
89
98
|
|
|
90
|
-
public async
|
|
91
|
-
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
92
|
-
>(
|
|
99
|
+
public async create<ChainTypeT extends ChainType | string = DefaultChainType>(
|
|
93
100
|
networkOrParams?: NetworkConnectionParams<ChainTypeT> | string,
|
|
94
101
|
): Promise<NetworkConnection<ChainTypeT>> {
|
|
95
102
|
let networkName: string | undefined;
|
|
@@ -109,7 +116,11 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
109
116
|
"newConnection",
|
|
110
117
|
[],
|
|
111
118
|
async (_context) =>
|
|
112
|
-
this.#initializeNetworkConnection(
|
|
119
|
+
await this.#initializeNetworkConnection(
|
|
120
|
+
networkName,
|
|
121
|
+
chainType,
|
|
122
|
+
override,
|
|
123
|
+
),
|
|
113
124
|
);
|
|
114
125
|
|
|
115
126
|
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
@@ -117,6 +128,80 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
117
128
|
return networkConnection as NetworkConnection<ChainTypeT>;
|
|
118
129
|
}
|
|
119
130
|
|
|
131
|
+
public async connect<
|
|
132
|
+
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
133
|
+
>(
|
|
134
|
+
networkOrParams?: NetworkConnectionParams<ChainTypeT> | string,
|
|
135
|
+
): Promise<NetworkConnection<ChainTypeT>> {
|
|
136
|
+
this.#connectCalled = true;
|
|
137
|
+
|
|
138
|
+
return await this.create(networkOrParams);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
public async getOrCreate<
|
|
142
|
+
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
143
|
+
>(
|
|
144
|
+
networkOrParams?: CachedNetworkConnectionParams<ChainTypeT> | string,
|
|
145
|
+
): Promise<NetworkConnection<ChainTypeT>> {
|
|
146
|
+
let network: string | undefined;
|
|
147
|
+
let chainType: ChainTypeT | undefined;
|
|
148
|
+
|
|
149
|
+
if (typeof networkOrParams === "string") {
|
|
150
|
+
network = networkOrParams;
|
|
151
|
+
} else if (networkOrParams !== undefined) {
|
|
152
|
+
network = networkOrParams.network;
|
|
153
|
+
chainType = networkOrParams.chainType;
|
|
154
|
+
|
|
155
|
+
if ("override" in networkOrParams) {
|
|
156
|
+
throw new HardhatError(
|
|
157
|
+
HardhatError.ERRORS.CORE.NETWORK.INVALID_CONFIG_OVERRIDE,
|
|
158
|
+
{
|
|
159
|
+
errors: "\t* Config overrides are not supported by getOrCreate.",
|
|
160
|
+
},
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const { resolvedNetworkName, resolvedChainType } =
|
|
166
|
+
this.#resolveNetworkAndChainType(network, chainType);
|
|
167
|
+
|
|
168
|
+
const cached = this.#getOrCreateCache
|
|
169
|
+
.get(resolvedNetworkName)
|
|
170
|
+
?.get(resolvedChainType);
|
|
171
|
+
if (cached !== undefined) {
|
|
172
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
173
|
+
-- Cast is safe: the cache keys guarantee the chain type matches */
|
|
174
|
+
return cached as NetworkConnection<ChainTypeT>;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return await this.#getOrCreateMutex.exclusiveRun(async () => {
|
|
178
|
+
// Double-check after acquiring the mutex — another call may have
|
|
179
|
+
// populated the cache while we were waiting.
|
|
180
|
+
const cachedAfterWaiting = this.#getOrCreateCache
|
|
181
|
+
.get(resolvedNetworkName)
|
|
182
|
+
?.get(resolvedChainType);
|
|
183
|
+
if (cachedAfterWaiting !== undefined) {
|
|
184
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
185
|
+
-- Cast is safe: the cache keys guarantee the chain type matches */
|
|
186
|
+
return cachedAfterWaiting as NetworkConnection<ChainTypeT>;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const connection = await this.create({
|
|
190
|
+
network: resolvedNetworkName,
|
|
191
|
+
chainType: resolvedChainType,
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
let networkCache = this.#getOrCreateCache.get(resolvedNetworkName);
|
|
195
|
+
if (networkCache === undefined) {
|
|
196
|
+
networkCache = new Map();
|
|
197
|
+
this.#getOrCreateCache.set(resolvedNetworkName, networkCache);
|
|
198
|
+
}
|
|
199
|
+
networkCache.set(resolvedChainType, connection);
|
|
200
|
+
|
|
201
|
+
return connection;
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
|
|
120
205
|
public async createServer<
|
|
121
206
|
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
122
207
|
>(
|
|
@@ -129,7 +214,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
129
214
|
const insideDocker = await exists("/.dockerenv");
|
|
130
215
|
const hostname = _hostname ?? (insideDocker ? "0.0.0.0" : "127.0.0.1");
|
|
131
216
|
|
|
132
|
-
const { provider } = await this.
|
|
217
|
+
const { provider } = await this.create(networkOrParams);
|
|
133
218
|
|
|
134
219
|
return new JsonRpcServerImplementation({
|
|
135
220
|
hostname,
|
|
@@ -138,30 +223,24 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
138
223
|
});
|
|
139
224
|
}
|
|
140
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Returns whether the deprecated `connect` method has been called on this
|
|
228
|
+
* instance. It is not on the public NetworkManager interface as it is only
|
|
229
|
+
* used by the CLI to print a deprecation warning at exit.
|
|
230
|
+
*
|
|
231
|
+
* @returns whether the deprecated `connect` method has ever been called
|
|
232
|
+
*/
|
|
233
|
+
public wasConnectCalled(): boolean {
|
|
234
|
+
return this.#connectCalled;
|
|
235
|
+
}
|
|
236
|
+
|
|
141
237
|
async #initializeNetworkConnection<ChainTypeT extends ChainType | string>(
|
|
142
238
|
networkName?: string,
|
|
143
239
|
chainType?: ChainTypeT,
|
|
144
240
|
networkConfigOverride?: NetworkConfigOverride,
|
|
145
241
|
): Promise<NetworkConnection<ChainTypeT>> {
|
|
146
|
-
const resolvedNetworkName
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
if (existingNetworkConfig === undefined) {
|
|
150
|
-
throw new HardhatError(
|
|
151
|
-
HardhatError.ERRORS.CORE.NETWORK.NETWORK_NOT_FOUND,
|
|
152
|
-
{
|
|
153
|
-
networkName: resolvedNetworkName,
|
|
154
|
-
},
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions --
|
|
159
|
-
* Type assertion is safe: defaultChainType ensures non-undefined, and the
|
|
160
|
-
* resolved value will be ChainTypeT (if provided) or a fallback that
|
|
161
|
-
* satisfies the ChainType | string constraint */
|
|
162
|
-
const resolvedChainType = (chainType ??
|
|
163
|
-
existingNetworkConfig.chainType ??
|
|
164
|
-
this.#defaultChainType) as ChainTypeT;
|
|
242
|
+
const { resolvedNetworkName, resolvedChainType } =
|
|
243
|
+
this.#resolveNetworkAndChainType(networkName, chainType);
|
|
165
244
|
|
|
166
245
|
const resolvedNetworkConfig = await this.#resolveNetworkConfig(
|
|
167
246
|
resolvedNetworkName,
|
|
@@ -185,7 +264,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
185
264
|
"network",
|
|
186
265
|
"onRequest",
|
|
187
266
|
[networkConnection, request],
|
|
188
|
-
async (_context, _connection, req) => defaultBehavior(req),
|
|
267
|
+
async (_context, _connection, req) => await defaultBehavior(req),
|
|
189
268
|
);
|
|
190
269
|
|
|
191
270
|
if (resolvedNetworkConfig.type === "edr-simulated") {
|
|
@@ -276,7 +355,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
276
355
|
|
|
277
356
|
const includeCallTraces = verbosityToIncludeTraces(this.#verbosity);
|
|
278
357
|
|
|
279
|
-
return EdrProvider.create({
|
|
358
|
+
return await EdrProvider.create({
|
|
280
359
|
chainDescriptors: this.#chainDescriptors,
|
|
281
360
|
// The resolvedNetworkConfig can have its chainType set to `undefined`
|
|
282
361
|
// so we default to the default chain type here.
|
|
@@ -287,9 +366,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
287
366
|
allowUnlimitedContractSize: shouldEnableCoverage
|
|
288
367
|
? true
|
|
289
368
|
: resolvedNetworkConfig.allowUnlimitedContractSize,
|
|
290
|
-
|
|
291
|
-
This case is safe because we have a check above */
|
|
292
|
-
chainType: resolvedChainType as ChainType,
|
|
369
|
+
chainType: resolvedChainType,
|
|
293
370
|
},
|
|
294
371
|
jsonRpcRequestWrapper,
|
|
295
372
|
contractDecoder: this.#contractDecoder,
|
|
@@ -302,7 +379,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
302
379
|
});
|
|
303
380
|
}
|
|
304
381
|
|
|
305
|
-
return HttpProvider.create({
|
|
382
|
+
return await HttpProvider.create({
|
|
306
383
|
url: await resolvedNetworkConfig.url.getUrl(),
|
|
307
384
|
networkName: resolvedNetworkName,
|
|
308
385
|
extraHeaders: resolvedNetworkConfig.httpHeaders,
|
|
@@ -311,7 +388,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
311
388
|
});
|
|
312
389
|
};
|
|
313
390
|
|
|
314
|
-
return NetworkConnectionImplementation.create(
|
|
391
|
+
return await NetworkConnectionImplementation.create(
|
|
315
392
|
this.#nextConnectionId++,
|
|
316
393
|
resolvedNetworkName,
|
|
317
394
|
resolvedChainType,
|
|
@@ -387,7 +464,7 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
387
464
|
throw new HardhatError(
|
|
388
465
|
HardhatError.ERRORS.CORE.NETWORK.INVALID_CONFIG_OVERRIDE,
|
|
389
466
|
{
|
|
390
|
-
errors: `\t* The chainType cannot be specified in config overrides. Pass it at the top level instead: hre.network.
|
|
467
|
+
errors: `\t* The chainType cannot be specified in config overrides. Pass it at the top level instead: hre.network.create({ chainType: 'op' })`,
|
|
391
468
|
},
|
|
392
469
|
);
|
|
393
470
|
}
|
|
@@ -474,6 +551,36 @@ export class NetworkManagerImplementation implements NetworkManager {
|
|
|
474
551
|
return resolvedNetworkConfigOverride;
|
|
475
552
|
}
|
|
476
553
|
|
|
554
|
+
#resolveNetworkAndChainType<
|
|
555
|
+
ChainTypeT extends ChainType | string = DefaultChainType,
|
|
556
|
+
>(
|
|
557
|
+
network: string | undefined,
|
|
558
|
+
chainType: ChainTypeT | undefined,
|
|
559
|
+
): { resolvedNetworkName: string; resolvedChainType: ChainTypeT } {
|
|
560
|
+
const resolvedNetworkName = network ?? this.#defaultNetwork;
|
|
561
|
+
const existingNetworkConfig = this.#networkConfigs[resolvedNetworkName];
|
|
562
|
+
|
|
563
|
+
if (existingNetworkConfig === undefined) {
|
|
564
|
+
throw new HardhatError(
|
|
565
|
+
HardhatError.ERRORS.CORE.NETWORK.NETWORK_NOT_FOUND,
|
|
566
|
+
{
|
|
567
|
+
networkName: resolvedNetworkName,
|
|
568
|
+
},
|
|
569
|
+
);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
const resolvedChainType =
|
|
573
|
+
chainType ?? existingNetworkConfig.chainType ?? this.#defaultChainType;
|
|
574
|
+
|
|
575
|
+
return {
|
|
576
|
+
resolvedNetworkName,
|
|
577
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
578
|
+
-- The cast is safe because the fallback values are valid chain
|
|
579
|
+
types that match the caller's expected type at runtime. */
|
|
580
|
+
resolvedChainType: resolvedChainType as ChainTypeT,
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
|
|
477
584
|
async #getBuildInfosAndOutputsAsBuffers(): Promise<
|
|
478
585
|
Array<{ buildInfo: Uint8Array; output: Uint8Array }>
|
|
479
586
|
> {
|
|
@@ -39,6 +39,15 @@ import { ChainId } from "../chain-id/chain-id.js";
|
|
|
39
39
|
|
|
40
40
|
const EXTRA_ENTROPY = false;
|
|
41
41
|
export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
42
|
+
readonly #methods: ReadonlySet<string> = new Set([
|
|
43
|
+
"eth_accounts",
|
|
44
|
+
"eth_requestAccounts",
|
|
45
|
+
"eth_sign",
|
|
46
|
+
"personal_sign",
|
|
47
|
+
"eth_signTypedData_v4",
|
|
48
|
+
"eth_sendTransaction",
|
|
49
|
+
]);
|
|
50
|
+
|
|
42
51
|
readonly #localAccountsHexPrivateKeys: string[];
|
|
43
52
|
|
|
44
53
|
#addressToPrivateKey: Map<string, Uint8Array> | undefined;
|
|
@@ -53,6 +62,27 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
53
62
|
this.#localAccountsHexPrivateKeys = localAccountsHexPrivateKeys;
|
|
54
63
|
}
|
|
55
64
|
|
|
65
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
66
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public async handle(
|
|
70
|
+
jsonRpcRequest: JsonRpcRequest,
|
|
71
|
+
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
72
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
73
|
+
return jsonRpcRequest;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const response = await this.#resolveRequest(jsonRpcRequest);
|
|
77
|
+
if (response !== null) {
|
|
78
|
+
return response;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
await this.#modifyRequest(jsonRpcRequest);
|
|
82
|
+
|
|
83
|
+
return jsonRpcRequest;
|
|
84
|
+
}
|
|
85
|
+
|
|
56
86
|
async #getAddressesAndPrivateKeysMap(): Promise<{
|
|
57
87
|
addresses: string[];
|
|
58
88
|
addressToPrivateKey: Map<string, Uint8Array>;
|
|
@@ -75,19 +105,6 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
75
105
|
};
|
|
76
106
|
}
|
|
77
107
|
|
|
78
|
-
public async handle(
|
|
79
|
-
jsonRpcRequest: JsonRpcRequest,
|
|
80
|
-
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
81
|
-
const response = await this.#resolveRequest(jsonRpcRequest);
|
|
82
|
-
if (response !== null) {
|
|
83
|
-
return response;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
await this.#modifyRequest(jsonRpcRequest);
|
|
87
|
-
|
|
88
|
-
return jsonRpcRequest;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
108
|
async #resolveRequest(
|
|
92
109
|
jsonRpcRequest: JsonRpcRequest,
|
|
93
110
|
): Promise<JsonRpcResponse | null> {
|
package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.ts
CHANGED
|
@@ -17,35 +17,43 @@ import { getRequestParams } from "../../../json-rpc.js";
|
|
|
17
17
|
* The class also provides a mechanism to retrieve the sender account, which must be implemented by subclasses.
|
|
18
18
|
*/
|
|
19
19
|
export abstract class SenderHandler implements RequestHandler {
|
|
20
|
+
readonly #methods: ReadonlySet<string> = new Set([
|
|
21
|
+
"eth_sendTransaction",
|
|
22
|
+
"eth_call",
|
|
23
|
+
"eth_estimateGas",
|
|
24
|
+
]);
|
|
25
|
+
|
|
20
26
|
protected readonly provider: EthereumProvider;
|
|
21
27
|
|
|
22
28
|
constructor(provider: EthereumProvider) {
|
|
23
29
|
this.provider = provider;
|
|
24
30
|
}
|
|
25
31
|
|
|
32
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
33
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
34
|
+
}
|
|
35
|
+
|
|
26
36
|
public async handle(
|
|
27
37
|
jsonRpcRequest: JsonRpcRequest,
|
|
28
38
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
39
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
40
|
+
return jsonRpcRequest;
|
|
41
|
+
}
|
|
42
|
+
|
|
29
43
|
const method = jsonRpcRequest.method;
|
|
30
44
|
const params = getRequestParams(jsonRpcRequest);
|
|
31
45
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
tx.from = senderAccount;
|
|
44
|
-
} else if (method === "eth_sendTransaction") {
|
|
45
|
-
throw new HardhatError(
|
|
46
|
-
HardhatError.ERRORS.CORE.NETWORK.NO_REMOTE_ACCOUNT_AVAILABLE,
|
|
47
|
-
);
|
|
48
|
-
}
|
|
46
|
+
const [tx] = params;
|
|
47
|
+
|
|
48
|
+
if (isObject(tx) && tx.from === undefined) {
|
|
49
|
+
const senderAccount = await this.getSender();
|
|
50
|
+
|
|
51
|
+
if (senderAccount !== undefined) {
|
|
52
|
+
tx.from = senderAccount;
|
|
53
|
+
} else if (method === "eth_sendTransaction") {
|
|
54
|
+
throw new HardhatError(
|
|
55
|
+
HardhatError.ERRORS.CORE.NETWORK.NO_REMOTE_ACCOUNT_AVAILABLE,
|
|
56
|
+
);
|
|
49
57
|
}
|
|
50
58
|
}
|
|
51
59
|
|
|
@@ -25,17 +25,25 @@ export class ChainIdValidatorHandler extends ChainId implements RequestHandler {
|
|
|
25
25
|
this.#expectedChainId = expectedChainId;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
public
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
29
|
+
if (this.#alreadyValidated) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
|
|
31
33
|
if (
|
|
32
34
|
jsonRpcRequest.method === "eth_chainId" ||
|
|
33
35
|
jsonRpcRequest.method === "net_version"
|
|
34
36
|
) {
|
|
35
|
-
return
|
|
37
|
+
return false;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public async handle(
|
|
44
|
+
jsonRpcRequest: JsonRpcRequest,
|
|
45
|
+
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
46
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
39
47
|
return jsonRpcRequest;
|
|
40
48
|
}
|
|
41
49
|
|
|
@@ -25,6 +25,8 @@ export class AutomaticGasHandler
|
|
|
25
25
|
extends MultipliedGasEstimation
|
|
26
26
|
implements RequestHandler
|
|
27
27
|
{
|
|
28
|
+
readonly #methods: ReadonlySet<string> = new Set(["eth_sendTransaction"]);
|
|
29
|
+
|
|
28
30
|
constructor(
|
|
29
31
|
provider: EthereumProvider,
|
|
30
32
|
gasMultiplier: number = DEFAULT_GAS_MULTIPLIER,
|
|
@@ -32,10 +34,14 @@ export class AutomaticGasHandler
|
|
|
32
34
|
super(provider, gasMultiplier);
|
|
33
35
|
}
|
|
34
36
|
|
|
37
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
38
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
39
|
+
}
|
|
40
|
+
|
|
35
41
|
public async handle(
|
|
36
42
|
jsonRpcRequest: JsonRpcRequest,
|
|
37
43
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
38
|
-
if (jsonRpcRequest
|
|
44
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
39
45
|
return jsonRpcRequest;
|
|
40
46
|
}
|
|
41
47
|
|
|
@@ -19,6 +19,8 @@ import { getRequestParams } from "../../../json-rpc.js";
|
|
|
19
19
|
* It ensures that gas prices are set correctly.
|
|
20
20
|
*/
|
|
21
21
|
export class AutomaticGasPriceHandler implements RequestHandler {
|
|
22
|
+
readonly #methods: ReadonlySet<string> = new Set(["eth_sendTransaction"]);
|
|
23
|
+
|
|
22
24
|
readonly #provider: EthereumProvider;
|
|
23
25
|
|
|
24
26
|
// We pay the max base fee that can be required if the next
|
|
@@ -36,10 +38,14 @@ export class AutomaticGasPriceHandler implements RequestHandler {
|
|
|
36
38
|
#nodeHasFeeHistory?: boolean;
|
|
37
39
|
#nodeSupportsEIP1559?: boolean;
|
|
38
40
|
|
|
41
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
42
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
43
|
+
}
|
|
44
|
+
|
|
39
45
|
public async handle(
|
|
40
46
|
jsonRpcRequest: JsonRpcRequest,
|
|
41
47
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
42
|
-
if (jsonRpcRequest
|
|
48
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
43
49
|
return jsonRpcRequest;
|
|
44
50
|
}
|
|
45
51
|
|
|
@@ -14,16 +14,22 @@ import { getRequestParams } from "../../../json-rpc.js";
|
|
|
14
14
|
* For `eth_sendTransaction` requests, it sets the gas field with the value provided via the class constructor, if it hasn't been specified already.
|
|
15
15
|
*/
|
|
16
16
|
export class FixedGasHandler implements RequestHandler {
|
|
17
|
+
readonly #methods: ReadonlySet<string> = new Set(["eth_sendTransaction"]);
|
|
18
|
+
|
|
17
19
|
readonly #gas: PrefixedHexString;
|
|
18
20
|
|
|
19
21
|
constructor(gas: PrefixedHexString) {
|
|
20
22
|
this.#gas = gas;
|
|
21
23
|
}
|
|
22
24
|
|
|
25
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
26
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
public async handle(
|
|
24
30
|
jsonRpcRequest: JsonRpcRequest,
|
|
25
31
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
26
|
-
if (jsonRpcRequest
|
|
32
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
27
33
|
return jsonRpcRequest;
|
|
28
34
|
}
|
|
29
35
|
|