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,7 +9,9 @@ import chalk from "chalk";
|
|
|
9
9
|
import debug from "debug";
|
|
10
10
|
import pMap from "p-map";
|
|
11
11
|
import { FileBuildResultType } from "../../../../types/solidity/build-system.js";
|
|
12
|
+
import { getHardhatVersion } from "../../../utils/package.js";
|
|
12
13
|
import { DEFAULT_BUILD_PROFILE } from "../build-profiles.js";
|
|
14
|
+
import { getSolcCompilerForConfig } from "../solidity-hooks.js";
|
|
13
15
|
import { getArtifactsDeclarationFile, getBuildInfo, getBuildInfoOutput, getContractArtifact, getDuplicatedContractNamesDeclarationFile, } from "./artifacts.js";
|
|
14
16
|
import { loadCache, saveCache } from "./cache.js";
|
|
15
17
|
import { CompilationJobImplementation } from "./compilation-job.js";
|
|
@@ -21,11 +23,10 @@ import { SolcConfigSelector } from "./solc-config-selection.js";
|
|
|
21
23
|
import { shouldSuppressWarning } from "./warning-suppression.js";
|
|
22
24
|
const log = debug("hardhat:core:solidity:build-system");
|
|
23
25
|
/**
|
|
24
|
-
*
|
|
25
|
-
* to the build profile's preferWasm if not set on the compiler.
|
|
26
|
+
* Returns true if the given compiler config is a SolcSolidityCompilerConfig.
|
|
26
27
|
*/
|
|
27
|
-
function
|
|
28
|
-
return
|
|
28
|
+
export function isSolcSolidityCompilerConfig(config) {
|
|
29
|
+
return config.type === undefined || config.type === "solc";
|
|
29
30
|
}
|
|
30
31
|
// Compiler warnings to suppress from build output.
|
|
31
32
|
// Each rule specifies a warning message and the source file it applies to.
|
|
@@ -60,25 +61,43 @@ export class SolidityBuildSystemImplementation {
|
|
|
60
61
|
this.#options = options;
|
|
61
62
|
}
|
|
62
63
|
async getScope(fsPath) {
|
|
63
|
-
if (fsPath.startsWith(this.#options.solidityTestsPath) &&
|
|
64
|
+
if (fsPath.startsWith(this.#options.solidityTestsPath + path.sep) &&
|
|
64
65
|
fsPath.endsWith(".sol")) {
|
|
65
66
|
return "tests";
|
|
66
67
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
if (fsPath.endsWith(".t.sol")) {
|
|
69
|
+
for (const sourcesPath of this.#options.soliditySourcesPaths) {
|
|
70
|
+
if (fsPath.startsWith(sourcesPath + path.sep)) {
|
|
71
|
+
return "tests";
|
|
72
|
+
}
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
75
|
return "contracts";
|
|
73
76
|
}
|
|
74
77
|
async getRootFilePaths(options = {}) {
|
|
75
78
|
const scope = options.scope ?? "contracts";
|
|
79
|
+
const unified = !this.#options.solidityConfig.splitTestsCompilation;
|
|
80
|
+
this.#ensureSplitCompilationModeIfTestsScope(scope);
|
|
76
81
|
switch (scope) {
|
|
77
|
-
case "contracts":
|
|
78
|
-
const
|
|
82
|
+
case "contracts": {
|
|
83
|
+
const localContractFiles = (await Promise.all(this.#options.soliditySourcesPaths.map((dir) => getAllFilesMatching(dir, (f) => f.endsWith(".sol") && !f.endsWith(".t.sol"))))).flat(1);
|
|
79
84
|
const npmFilesToBuild = this.#options.solidityConfig.npmFilesToBuild.map(npmModuleToNpmRootPath);
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
if (!unified) {
|
|
86
|
+
return [...localContractFiles, ...npmFilesToBuild];
|
|
87
|
+
}
|
|
88
|
+
// In unified mode, contracts scope returns all roots: contracts,
|
|
89
|
+
// tests, and npm files.
|
|
90
|
+
const testFiles = (await Promise.all([
|
|
91
|
+
getAllFilesMatching(this.#options.solidityTestsPath, (f) => f.endsWith(".sol")),
|
|
92
|
+
...this.#options.soliditySourcesPaths.map(async (dir) => {
|
|
93
|
+
return getAllFilesMatching(dir, (f) => f.endsWith(".t.sol"));
|
|
94
|
+
}),
|
|
95
|
+
])).flat(1);
|
|
96
|
+
// Remove duplicates in case there is an intersection between
|
|
97
|
+
// the tests.solidity paths and the sources paths
|
|
98
|
+
return Array.from(new Set([...localContractFiles, ...npmFilesToBuild, ...testFiles]));
|
|
99
|
+
}
|
|
100
|
+
case "tests": {
|
|
82
101
|
let rootFilePaths = (await Promise.all([
|
|
83
102
|
getAllFilesMatching(this.#options.solidityTestsPath, (f) => f.endsWith(".sol")),
|
|
84
103
|
...this.#options.soliditySourcesPaths.map(async (dir) => {
|
|
@@ -89,32 +108,34 @@ export class SolidityBuildSystemImplementation {
|
|
|
89
108
|
// the tests.solidity paths and the sources paths
|
|
90
109
|
rootFilePaths = Array.from(new Set(rootFilePaths));
|
|
91
110
|
return rootFilePaths;
|
|
111
|
+
}
|
|
92
112
|
}
|
|
93
113
|
}
|
|
94
114
|
isSuccessfulBuildResult(buildResult) {
|
|
95
115
|
return buildResult instanceof Map;
|
|
96
116
|
}
|
|
97
|
-
async build(rootFilePaths,
|
|
98
|
-
|
|
117
|
+
async build(rootFilePaths, options) {
|
|
118
|
+
this.#ensureSplitCompilationModeIfTestsScope(options?.scope);
|
|
119
|
+
return this.#hooks.runHandlerChain("solidity", "build", [rootFilePaths, options], async (_context, nextRootFilePaths, nextOptions) => this.#build(nextRootFilePaths, nextOptions));
|
|
99
120
|
}
|
|
100
|
-
async #build(rootFilePaths,
|
|
101
|
-
const
|
|
121
|
+
async #build(rootFilePaths, options) {
|
|
122
|
+
const resolvedOptions = {
|
|
102
123
|
buildProfile: DEFAULT_BUILD_PROFILE,
|
|
103
124
|
concurrency: Math.max(os.cpus().length - 1, 1),
|
|
104
125
|
force: false,
|
|
105
126
|
isolated: false,
|
|
106
127
|
quiet: false,
|
|
107
128
|
scope: "contracts",
|
|
108
|
-
...
|
|
129
|
+
...options,
|
|
109
130
|
};
|
|
110
|
-
await this.#downloadConfiguredCompilers(
|
|
111
|
-
const { buildProfile } = this.#getBuildProfile(
|
|
112
|
-
const compilationJobsResult = await this.getCompilationJobs(rootFilePaths,
|
|
131
|
+
await this.#downloadConfiguredCompilers(resolvedOptions.quiet);
|
|
132
|
+
const { buildProfile } = this.#getBuildProfile(resolvedOptions.buildProfile);
|
|
133
|
+
const compilationJobsResult = await this.getCompilationJobs(rootFilePaths, resolvedOptions);
|
|
113
134
|
if (!compilationJobsResult.success) {
|
|
114
135
|
return compilationJobsResult;
|
|
115
136
|
}
|
|
116
137
|
const spinner = createSpinner({
|
|
117
|
-
text: `Compiling your Solidity ${
|
|
138
|
+
text: `Compiling your Solidity ${resolvedOptions.scope}...`,
|
|
118
139
|
enabled: true,
|
|
119
140
|
});
|
|
120
141
|
spinner.start();
|
|
@@ -127,14 +148,14 @@ export class SolidityBuildSystemImplementation {
|
|
|
127
148
|
// internally in each compilation job
|
|
128
149
|
await Promise.all(runnableCompilationJobs.map(async (runnableCompilationJob) => runnableCompilationJob.getBuildId()));
|
|
129
150
|
const results = await pMap(runnableCompilationJobs, async (runnableCompilationJob) => {
|
|
130
|
-
const { output, compiler } = await this.runCompilationJob(runnableCompilationJob,
|
|
151
|
+
const { output, compiler } = await this.runCompilationJob(runnableCompilationJob, resolvedOptions);
|
|
131
152
|
return {
|
|
132
153
|
compilationJob: runnableCompilationJob,
|
|
133
154
|
compilerOutput: output,
|
|
134
155
|
compiler,
|
|
135
156
|
};
|
|
136
157
|
}, {
|
|
137
|
-
concurrency:
|
|
158
|
+
concurrency: resolvedOptions.concurrency,
|
|
138
159
|
// An error when running the compiler is not a compilation failure, but
|
|
139
160
|
// a fatal failure trying to run it, so we just throw on the first error
|
|
140
161
|
stopOnError: true,
|
|
@@ -145,11 +166,11 @@ export class SolidityBuildSystemImplementation {
|
|
|
145
166
|
if (isSuccessfulBuild) {
|
|
146
167
|
log("Emitting artifacts of successful build");
|
|
147
168
|
await Promise.all(results.map(async (compilationResult) => {
|
|
148
|
-
const emitArtifactsResult = await this.emitArtifacts(compilationResult.compilationJob, compilationResult.compilerOutput,
|
|
169
|
+
const emitArtifactsResult = await this.emitArtifacts(compilationResult.compilationJob, compilationResult.compilerOutput, resolvedOptions);
|
|
149
170
|
const { artifactsPerFile } = emitArtifactsResult;
|
|
150
171
|
contractArtifactsGeneratedByCompilationJob.set(compilationResult.compilationJob, artifactsPerFile);
|
|
151
172
|
// Cache the results
|
|
152
|
-
await this.#cacheCompilationResult(indexedIndividualJobs, compilationResult, emitArtifactsResult, buildProfile.isolated,
|
|
173
|
+
await this.#cacheCompilationResult(indexedIndividualJobs, compilationResult, emitArtifactsResult, buildProfile.isolated, resolvedOptions.scope);
|
|
153
174
|
}));
|
|
154
175
|
await saveCache(this.#options.cachePath, this.#compileCache);
|
|
155
176
|
}
|
|
@@ -188,10 +209,10 @@ export class SolidityBuildSystemImplementation {
|
|
|
188
209
|
contractArtifactsGenerated: cacheHitInfo.artifactPaths,
|
|
189
210
|
});
|
|
190
211
|
}
|
|
191
|
-
if (!
|
|
212
|
+
if (!resolvedOptions.quiet) {
|
|
192
213
|
if (isSuccessfulBuild) {
|
|
193
214
|
await this.#printCompilationResult(runnableCompilationJobs, {
|
|
194
|
-
scope:
|
|
215
|
+
scope: resolvedOptions.scope,
|
|
195
216
|
});
|
|
196
217
|
}
|
|
197
218
|
}
|
|
@@ -202,11 +223,16 @@ export class SolidityBuildSystemImplementation {
|
|
|
202
223
|
}
|
|
203
224
|
}
|
|
204
225
|
async getCompilationJobs(rootFilePaths, options) {
|
|
226
|
+
this.#ensureSplitCompilationModeIfTestsScope(options?.scope);
|
|
205
227
|
await this.#downloadConfiguredCompilers(options?.quiet);
|
|
206
228
|
const dependencyGraph = await buildDependencyGraph(rootFilePaths.toSorted(), // We sort them to have a deterministic order
|
|
207
229
|
this.#options.projectRoot, readSourceFileFactory(this.#hooks), this.#hooks);
|
|
208
230
|
const { buildProfileName, buildProfile } = this.#getBuildProfile(options?.buildProfile);
|
|
209
231
|
log(`Using build profile ${buildProfileName}`);
|
|
232
|
+
let toolVersions;
|
|
233
|
+
if (buildProfile.toolVersionsInBuildInfo === true) {
|
|
234
|
+
toolVersions = { hardhat: await getHardhatVersion() };
|
|
235
|
+
}
|
|
210
236
|
const solcConfigSelector = new SolcConfigSelector(buildProfileName, buildProfile);
|
|
211
237
|
let subgraphsWithConfig = [];
|
|
212
238
|
for (const [rootFile, resolvedFile] of dependencyGraph.getRoots()) {
|
|
@@ -219,27 +245,40 @@ export class SolidityBuildSystemImplementation {
|
|
|
219
245
|
subgraphsWithConfig.push([configOrError.config, subgraph]);
|
|
220
246
|
}
|
|
221
247
|
// get longVersion and isWasm from the compiler for each version
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
248
|
+
// These maps are keyed by compiler type first, then version, to avoid
|
|
249
|
+
// collisions between different compiler types using the same version string.
|
|
250
|
+
const solidityVersionToLongVersionPerCompilerType = new Map();
|
|
251
|
+
const versionIsWasmPerCompilerType = new Map();
|
|
252
|
+
for (const [compilerConfig] of subgraphsWithConfig) {
|
|
253
|
+
const compilerType = compilerConfig.type ?? "solc";
|
|
254
|
+
let longVersionMap = solidityVersionToLongVersionPerCompilerType.get(compilerType);
|
|
255
|
+
if (longVersionMap === undefined) {
|
|
256
|
+
longVersionMap = new Map();
|
|
257
|
+
solidityVersionToLongVersionPerCompilerType.set(compilerType, longVersionMap);
|
|
258
|
+
}
|
|
259
|
+
let isWasmMap = versionIsWasmPerCompilerType.get(compilerType);
|
|
260
|
+
if (isWasmMap === undefined) {
|
|
261
|
+
isWasmMap = new Map();
|
|
262
|
+
versionIsWasmPerCompilerType.set(compilerType, isWasmMap);
|
|
263
|
+
}
|
|
264
|
+
let longVersion = longVersionMap.get(compilerConfig.version);
|
|
265
|
+
if (longVersion === undefined) {
|
|
266
|
+
const compiler = await this.#hooks.runHandlerChain("solidity", "getCompiler", [compilerConfig], async (_context, cfg) => getSolcCompilerForConfig(cfg, buildProfile.preferWasm));
|
|
267
|
+
longVersion = compiler.longVersion;
|
|
268
|
+
longVersionMap.set(compilerConfig.version, longVersion);
|
|
269
|
+
isWasmMap.set(compilerConfig.version, compiler.isSolcJs);
|
|
234
270
|
}
|
|
235
271
|
}
|
|
236
272
|
// build job for each root file. At this point subgraphsWithConfig are 1 root file each
|
|
237
273
|
const indexedIndividualJobs = new Map();
|
|
238
274
|
const sharedContentHashes = new Map();
|
|
239
275
|
await Promise.all(subgraphsWithConfig.map(async ([config, subgraph]) => {
|
|
240
|
-
const
|
|
241
|
-
|
|
242
|
-
|
|
276
|
+
const compilerType = config.type ?? "solc";
|
|
277
|
+
const longVersionMap = solidityVersionToLongVersionPerCompilerType.get(compilerType);
|
|
278
|
+
assertHardhatInvariant(longVersionMap !== undefined, `No long version map for compiler type ${compilerType}`);
|
|
279
|
+
const longVersion = longVersionMap.get(config.version);
|
|
280
|
+
assertHardhatInvariant(longVersion !== undefined, "longVersion should not be undefined");
|
|
281
|
+
const individualJob = new CompilationJobImplementation(subgraph, config, longVersion, this.#hooks, sharedContentHashes, toolVersions);
|
|
243
282
|
await individualJob.getBuildId(); // precompute
|
|
244
283
|
indexedIndividualJobs.set(getSingleRootFilePath(subgraph), individualJob);
|
|
245
284
|
}));
|
|
@@ -252,17 +291,34 @@ export class SolidityBuildSystemImplementation {
|
|
|
252
291
|
for (const [rootFile, compilationJob] of indexedIndividualJobs.entries()) {
|
|
253
292
|
const jobHash = await compilationJob.getBuildId();
|
|
254
293
|
const cacheResult = this.#compileCache[rootFile];
|
|
255
|
-
const
|
|
294
|
+
const compilerType = compilationJob.solcConfig.type ?? "solc";
|
|
295
|
+
const isWasmMap = versionIsWasmPerCompilerType.get(compilerType);
|
|
296
|
+
assertHardhatInvariant(isWasmMap !== undefined, `No isWasm map for compiler type ${compilerType}`);
|
|
297
|
+
const isWasm = isWasmMap.get(compilationJob.solcConfig.version);
|
|
256
298
|
assertHardhatInvariant(isWasm !== undefined, `Version ${compilationJob.solcConfig.version} not present in isWasm map`);
|
|
257
299
|
// If there's no cache for the root file, or the compilation job changed, or using force flag, or isolated mode changed, compile it
|
|
258
300
|
if (options?.force === true ||
|
|
259
301
|
cacheResult === undefined ||
|
|
260
302
|
cacheResult.jobHash !== jobHash ||
|
|
261
303
|
cacheResult.isolated !== isolated ||
|
|
304
|
+
cacheResult.compilerType !== compilerType ||
|
|
262
305
|
cacheResult.wasm !== isWasm) {
|
|
263
306
|
rootFilesToCompile.add(rootFile);
|
|
264
307
|
continue;
|
|
265
308
|
}
|
|
309
|
+
// Validate output layout: if the cached layout doesn't match the
|
|
310
|
+
// expected layout for the current config, treat it as a miss.
|
|
311
|
+
// Pre-existing cache entries without these fields are also treated
|
|
312
|
+
// as misses.
|
|
313
|
+
const expectedLayout = await this.#getExpectedOutputLayout(rootFile, options?.scope ?? "contracts");
|
|
314
|
+
if (cacheResult.artifactsDirectory === undefined ||
|
|
315
|
+
cacheResult.emitsTypeDeclarations === undefined ||
|
|
316
|
+
cacheResult.artifactsDirectory !== expectedLayout.artifactsDirectory ||
|
|
317
|
+
cacheResult.emitsTypeDeclarations !==
|
|
318
|
+
expectedLayout.emitsTypeDeclarations) {
|
|
319
|
+
rootFilesToCompile.add(rootFile);
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
266
322
|
// If any of the emitted files are not present anymore, compile it
|
|
267
323
|
const { artifactPaths, buildInfoPath, buildInfoOutputPath, typeFilePath, } = cacheResult;
|
|
268
324
|
for (const outputFilePath of [
|
|
@@ -294,9 +350,11 @@ export class SolidityBuildSystemImplementation {
|
|
|
294
350
|
// non-isolated mode
|
|
295
351
|
log(`Merging compilation jobs`);
|
|
296
352
|
const mergedSubgraphsByConfig = new Map();
|
|
297
|
-
// Note: This groups the subgraphs by
|
|
298
|
-
// based on reference, and not by deep equality.
|
|
299
|
-
//
|
|
353
|
+
// Note: This groups the subgraphs by compiler config. It compares the
|
|
354
|
+
// configs based on reference, and not by deep equality. This is
|
|
355
|
+
// inherently type-aware: two configs with different types will always be
|
|
356
|
+
// different references. It misses some merging opportunities, but this is
|
|
357
|
+
// Hardhat v2's behavior and works well enough.
|
|
300
358
|
for (const [config, subgraph] of subgraphsWithConfig) {
|
|
301
359
|
const rootFile = getSingleRootFilePath(subgraph);
|
|
302
360
|
// Skip root files with cache hit (should not recompile)
|
|
@@ -321,10 +379,13 @@ export class SolidityBuildSystemImplementation {
|
|
|
321
379
|
});
|
|
322
380
|
}
|
|
323
381
|
const compilationJobsPerFile = new Map();
|
|
324
|
-
for (const [
|
|
325
|
-
const
|
|
326
|
-
|
|
327
|
-
|
|
382
|
+
for (const [compilerConfig, subgraph] of subgraphsWithConfig) {
|
|
383
|
+
const compilerType = compilerConfig.type ?? "solc";
|
|
384
|
+
const longVersionMap = solidityVersionToLongVersionPerCompilerType.get(compilerType);
|
|
385
|
+
assertHardhatInvariant(longVersionMap !== undefined, `No long version map for compiler type ${compilerType}`);
|
|
386
|
+
const longVersion = longVersionMap.get(compilerConfig.version);
|
|
387
|
+
assertHardhatInvariant(longVersion !== undefined, "longVersion should not be undefined");
|
|
388
|
+
const runnableCompilationJob = new CompilationJobImplementation(subgraph, compilerConfig, longVersion, this.#hooks, sharedContentHashes, toolVersions);
|
|
328
389
|
for (const [userSourceName, root] of subgraph.getRoots().entries()) {
|
|
329
390
|
compilationJobsPerFile.set(formatRootPath(userSourceName, root), runnableCompilationJob);
|
|
330
391
|
}
|
|
@@ -353,11 +414,8 @@ export class SolidityBuildSystemImplementation {
|
|
|
353
414
|
}
|
|
354
415
|
const numberOfRootFiles = runnableCompilationJob.dependencyGraph.getRoots().size;
|
|
355
416
|
const { buildProfile } = this.#getBuildProfile(options?.buildProfile);
|
|
356
|
-
const compiler = await getCompiler
|
|
357
|
-
|
|
358
|
-
compilerPath: runnableCompilationJob.solcConfig.path,
|
|
359
|
-
});
|
|
360
|
-
log(`Compiling ${numberOfRootFiles} root files and ${numberOfFiles - numberOfRootFiles} dependency files with solc ${runnableCompilationJob.solcConfig.version} using ${compiler.compilerPath}`);
|
|
417
|
+
const compiler = await this.#hooks.runHandlerChain("solidity", "getCompiler", [runnableCompilationJob.solcConfig], async (_context, cfg) => getSolcCompilerForConfig(cfg, buildProfile.preferWasm));
|
|
418
|
+
log(`Compiling ${numberOfRootFiles} root files and ${numberOfFiles - numberOfRootFiles} dependency files with ${runnableCompilationJob.solcConfig.type ?? "solc"} ${runnableCompilationJob.solcConfig.version} using ${compiler.compilerPath}`);
|
|
361
419
|
assertHardhatInvariant(runnableCompilationJob.solcLongVersion === compiler.longVersion, "The long version of the compiler should match the long version of the compilation job");
|
|
362
420
|
const input = await runnableCompilationJob.getSolcInput();
|
|
363
421
|
const output = await this.#hooks.runHandlerChain("solidity", "invokeSolc", [compiler, input, runnableCompilationJob.solcConfig], async (_context, nextCompiler, nextSolcInput) => {
|
|
@@ -386,6 +444,8 @@ export class SolidityBuildSystemImplementation {
|
|
|
386
444
|
}
|
|
387
445
|
async emitArtifacts(runnableCompilationJob, compilerOutput, options = {}) {
|
|
388
446
|
const scope = options.scope ?? "contracts";
|
|
447
|
+
this.#ensureSplitCompilationModeIfTestsScope(scope);
|
|
448
|
+
const unified = !this.#options.solidityConfig.splitTestsCompilation;
|
|
389
449
|
const artifactsPerFile = new Map();
|
|
390
450
|
const typeFilePaths = new Map();
|
|
391
451
|
const buildId = await runnableCompilationJob.getBuildId();
|
|
@@ -414,8 +474,14 @@ export class SolidityBuildSystemImplementation {
|
|
|
414
474
|
}
|
|
415
475
|
}
|
|
416
476
|
artifactsPerFile.set(formatRootPath(userSourceName, root), paths);
|
|
417
|
-
//
|
|
418
|
-
|
|
477
|
+
// In split mode, test roots are never part of a "contracts"-scoped pass,
|
|
478
|
+
// so the scope guard below is sufficient. In unified mode, both contract
|
|
479
|
+
// and test roots share the same pass, so we check individually.
|
|
480
|
+
const isTestRoot = unified
|
|
481
|
+
? (await this.getScope(root.fsPath)) === "tests"
|
|
482
|
+
: false;
|
|
483
|
+
// Write the type declaration file for contract roots only.
|
|
484
|
+
if (scope === "contracts" && !isTestRoot) {
|
|
419
485
|
const artifactsDeclarationFilePath = path.join(fileFolder, "artifacts.d.ts");
|
|
420
486
|
typeFilePaths.set(formatRootPath(userSourceName, root), artifactsDeclarationFilePath);
|
|
421
487
|
const artifactsDeclarationFile = getArtifactsDeclarationFile(artifacts);
|
|
@@ -469,13 +535,19 @@ export class SolidityBuildSystemImplementation {
|
|
|
469
535
|
};
|
|
470
536
|
}
|
|
471
537
|
async getArtifactsDirectory(scope) {
|
|
538
|
+
// In unified mode, both scopes point to the main artifacts directory
|
|
539
|
+
// because contract and test artifacts live together.
|
|
540
|
+
if (!this.#options.solidityConfig.splitTestsCompilation) {
|
|
541
|
+
return this.#options.artifactsPath;
|
|
542
|
+
}
|
|
472
543
|
return scope === "contracts"
|
|
473
544
|
? this.#options.artifactsPath
|
|
474
545
|
: path.join(this.#options.cachePath, "test-artifacts");
|
|
475
546
|
}
|
|
476
547
|
async cleanupArtifacts(rootFilePaths, options = {}) {
|
|
477
|
-
log(`Cleaning up artifacts`);
|
|
478
548
|
const scope = options.scope ?? "contracts";
|
|
549
|
+
this.#ensureSplitCompilationModeIfTestsScope(scope);
|
|
550
|
+
log(`Cleaning up artifacts`);
|
|
479
551
|
const artifactsDirectory = await this.getArtifactsDirectory(scope);
|
|
480
552
|
const userSourceNames = rootFilePaths.map((rootFilePath) => {
|
|
481
553
|
const parsed = parseRootPath(rootFilePath);
|
|
@@ -501,7 +573,7 @@ export class SolidityBuildSystemImplementation {
|
|
|
501
573
|
}));
|
|
502
574
|
const reachableBuildInfoIdsSet = new Set(reachableBuildInfoIds.filter((id) => id !== undefined));
|
|
503
575
|
// Get all the reachable build info files
|
|
504
|
-
const buildInfoFiles = await getAllFilesMatching(buildInfosDir, (f) => f.startsWith(buildInfosDir));
|
|
576
|
+
const buildInfoFiles = await getAllFilesMatching(buildInfosDir, (f) => f.startsWith(buildInfosDir + path.sep));
|
|
505
577
|
for (const buildInfoFile of buildInfoFiles) {
|
|
506
578
|
const basename = path.basename(buildInfoFile);
|
|
507
579
|
const id = basename.substring(0, basename.indexOf("."));
|
|
@@ -530,8 +602,10 @@ export class SolidityBuildSystemImplementation {
|
|
|
530
602
|
}
|
|
531
603
|
async compileBuildInfo(buildInfo, options) {
|
|
532
604
|
const quiet = options?.quiet ?? false;
|
|
533
|
-
//
|
|
534
|
-
//
|
|
605
|
+
// Build info recompilation is always solc-only: build info files are
|
|
606
|
+
// produced by solc and must be recompiled with the same solc version.
|
|
607
|
+
// We bypass both downloadCompilers and getCompiler hooks — this is a
|
|
608
|
+
// self-contained solc replay path, not plugin-configurable compilation.
|
|
535
609
|
await downloadSolcCompilers(new Set([buildInfo.solcVersion]), quiet);
|
|
536
610
|
const compiler = await getCompiler(buildInfo.solcVersion, {
|
|
537
611
|
preferWasm: false,
|
|
@@ -544,16 +618,15 @@ export class SolidityBuildSystemImplementation {
|
|
|
544
618
|
if (this.#configuredCompilersDownloaded) {
|
|
545
619
|
return;
|
|
546
620
|
}
|
|
547
|
-
|
|
621
|
+
const allSolidityCompilerConfigs = this.#getAllSolidityCompilerConfigs();
|
|
622
|
+
await this.#hooks.runParallelHandlers("solidity", "downloadCompilers", [
|
|
623
|
+
allSolidityCompilerConfigs,
|
|
624
|
+
quiet,
|
|
625
|
+
]);
|
|
548
626
|
this.#configuredCompilersDownloaded = true;
|
|
549
627
|
}
|
|
550
|
-
#
|
|
551
|
-
return
|
|
552
|
-
.map((profile) => [
|
|
553
|
-
...profile.compilers.map((compiler) => compiler.version),
|
|
554
|
-
...Object.values(profile.overrides).map((override) => override.version),
|
|
555
|
-
])
|
|
556
|
-
.flat(1));
|
|
628
|
+
#getAllSolidityCompilerConfigs() {
|
|
629
|
+
return Object.values(this.#options.solidityConfig.profiles).flatMap((profile) => [...profile.compilers, ...Object.values(profile.overrides)]);
|
|
557
630
|
}
|
|
558
631
|
#isConsoleLogError(error) {
|
|
559
632
|
const message = error.message;
|
|
@@ -580,6 +653,29 @@ export class SolidityBuildSystemImplementation {
|
|
|
580
653
|
// and then trim just in case a blank space was left
|
|
581
654
|
return `${error.type}: ${error.message}`.replace(/[:\s]*$/g, "").trim();
|
|
582
655
|
}
|
|
656
|
+
async #getExpectedOutputLayout(rootFilePath, scope) {
|
|
657
|
+
const artifactsDirectory = await this.getArtifactsDirectory(scope);
|
|
658
|
+
const unified = !this.#options.solidityConfig.splitTestsCompilation;
|
|
659
|
+
// In unified mode, test roots under contracts scope don't emit type
|
|
660
|
+
// declarations. In split mode, the scope alone determines this.
|
|
661
|
+
let emitsTypeDeclarations;
|
|
662
|
+
if (scope === "contracts") {
|
|
663
|
+
if (unified) {
|
|
664
|
+
const parsed = parseRootPath(rootFilePath);
|
|
665
|
+
const isTestRoot = isNpmParsedRootPath(parsed)
|
|
666
|
+
? false
|
|
667
|
+
: (await this.getScope(parsed.fsPath)) === "tests";
|
|
668
|
+
emitsTypeDeclarations = !isTestRoot;
|
|
669
|
+
}
|
|
670
|
+
else {
|
|
671
|
+
emitsTypeDeclarations = true;
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
else {
|
|
675
|
+
emitsTypeDeclarations = false;
|
|
676
|
+
}
|
|
677
|
+
return { artifactsDirectory, emitsTypeDeclarations };
|
|
678
|
+
}
|
|
583
679
|
async #cacheCompilationResult(indexedIndividualJobs, result, emitArtifactsResult, isolated, scope) {
|
|
584
680
|
for (const [userSourceName, root] of result.compilationJob.dependencyGraph
|
|
585
681
|
.getRoots()
|
|
@@ -590,17 +686,19 @@ export class SolidityBuildSystemImplementation {
|
|
|
590
686
|
const artifactPaths = emitArtifactsResult.artifactsPerFile.get(rootFilePath);
|
|
591
687
|
assertHardhatInvariant(artifactPaths !== undefined, `No artifacts found on map for ${rootFilePath}`);
|
|
592
688
|
const typeFilePath = emitArtifactsResult.typeFilePaths.get(rootFilePath);
|
|
593
|
-
// Type declaration file is not generated for solidity tests
|
|
594
|
-
assertHardhatInvariant(scope === "tests" || typeFilePath !== undefined, `No type file found on map for contract ${rootFilePath}`);
|
|
595
689
|
const jobHash = await individualJob.getBuildId();
|
|
690
|
+
const expectedLayout = await this.#getExpectedOutputLayout(rootFilePath, scope);
|
|
596
691
|
this.#compileCache[rootFilePath] = {
|
|
597
692
|
jobHash,
|
|
598
693
|
isolated,
|
|
694
|
+
compilerType: individualJob.solcConfig.type ?? "solc",
|
|
599
695
|
artifactPaths,
|
|
600
696
|
buildInfoPath: emitArtifactsResult.buildInfoPath,
|
|
601
697
|
buildInfoOutputPath: emitArtifactsResult.buildInfoOutputPath,
|
|
602
698
|
typeFilePath,
|
|
603
699
|
wasm: result.compiler.isSolcJs,
|
|
700
|
+
artifactsDirectory: expectedLayout.artifactsDirectory,
|
|
701
|
+
emitsTypeDeclarations: expectedLayout.emitsTypeDeclarations,
|
|
604
702
|
};
|
|
605
703
|
}
|
|
606
704
|
}
|
|
@@ -647,14 +745,18 @@ export class SolidityBuildSystemImplementation {
|
|
|
647
745
|
return;
|
|
648
746
|
}
|
|
649
747
|
for (const job of runnableCompilationJobs) {
|
|
748
|
+
const compilerType = job.solcConfig.type ?? "solc";
|
|
650
749
|
const solcVersion = job.solcConfig.version;
|
|
651
750
|
const solcInput = await job.getSolcInput();
|
|
652
751
|
const evmVersion = solcInput.settings.evmVersion ??
|
|
653
752
|
`Check solc ${solcVersion}'s doc for its default evm version`;
|
|
654
|
-
|
|
753
|
+
// Group by compiler type + Solidity version to produce separate log
|
|
754
|
+
// lines for e.g. "solc 0.8.33" vs "solx 0.1.3 (Solidity 0.8.33)".
|
|
755
|
+
const groupKey = `${compilerType}#${solcVersion}`;
|
|
756
|
+
let jobsPerVersion = jobsPerVersionAndEvmVersion.get(groupKey);
|
|
655
757
|
if (jobsPerVersion === undefined) {
|
|
656
758
|
jobsPerVersion = new Map();
|
|
657
|
-
jobsPerVersionAndEvmVersion.set(
|
|
759
|
+
jobsPerVersionAndEvmVersion.set(groupKey, jobsPerVersion);
|
|
658
760
|
}
|
|
659
761
|
let jobsPerEvmVersion = jobsPerVersion.get(evmVersion);
|
|
660
762
|
if (jobsPerEvmVersion === undefined) {
|
|
@@ -663,19 +765,39 @@ export class SolidityBuildSystemImplementation {
|
|
|
663
765
|
}
|
|
664
766
|
jobsPerEvmVersion.push(job);
|
|
665
767
|
}
|
|
666
|
-
for (const
|
|
768
|
+
for (const groupKey of [...jobsPerVersionAndEvmVersion.keys()].sort()) {
|
|
667
769
|
/* eslint-disable-next-line @typescript-eslint/no-non-null-assertion --
|
|
668
770
|
This is a valid key, just sorted */
|
|
669
|
-
const jobsPerEvmVersion = jobsPerVersionAndEvmVersion.get(
|
|
771
|
+
const jobsPerEvmVersion = jobsPerVersionAndEvmVersion.get(groupKey);
|
|
772
|
+
const [compilerType, solidityVersion] = groupKey.split("#");
|
|
670
773
|
for (const evmVersion of [...jobsPerEvmVersion.keys()].sort()) {
|
|
671
774
|
/* eslint-disable-next-line @typescript-eslint/no-non-null-assertion --
|
|
672
775
|
This is a valid key, just sorted */
|
|
673
776
|
const jobs = jobsPerEvmVersion.get(evmVersion);
|
|
674
777
|
const rootFiles = jobs.reduce((count, job) => count + job.dependencyGraph.getRoots().size, 0);
|
|
675
|
-
|
|
778
|
+
// For solc, the compiler version is the Solidity version.
|
|
779
|
+
// For other compilers, extract the compiler's own version from the
|
|
780
|
+
// longVersion stored on the compilation job, and show the Solidity
|
|
781
|
+
// version separately.
|
|
782
|
+
let compilerLabel;
|
|
783
|
+
if (compilerType === "solc") {
|
|
784
|
+
compilerLabel = `solc ${solidityVersion}`;
|
|
785
|
+
}
|
|
786
|
+
else {
|
|
787
|
+
const longVersion = jobs[0].solcLongVersion;
|
|
788
|
+
const compilerVersion = longVersion.split("+")[0];
|
|
789
|
+
compilerLabel = `${compilerType} ${compilerVersion} (Solidity ${solidityVersion})`;
|
|
790
|
+
}
|
|
791
|
+
console.log(chalk.bold(`Compiled ${rootFiles} Solidity ${pluralize(options.scope === "contracts" ? "file" : "test file", rootFiles)} with ${compilerLabel}`), `(evm target: ${evmVersion})`);
|
|
676
792
|
}
|
|
677
793
|
}
|
|
678
794
|
}
|
|
795
|
+
#ensureSplitCompilationModeIfTestsScope(scope = "contracts") {
|
|
796
|
+
if (scope === "tests" &&
|
|
797
|
+
!this.#options.solidityConfig.splitTestsCompilation) {
|
|
798
|
+
throw new HardhatError(HardhatError.ERRORS.CORE.SOLIDITY.SPLIT_TESTS_COMPILATION_DISABLED);
|
|
799
|
+
}
|
|
800
|
+
}
|
|
679
801
|
}
|
|
680
802
|
function toForwardSlash(str) {
|
|
681
803
|
return str.split(/[\\\/]/).join(path.posix.sep);
|