hardhat 3.1.12 → 3.3.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 +57 -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/coverage/helpers.d.ts +5 -0
- package/dist/src/internal/builtin-plugins/coverage/helpers.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/helpers.js +12 -0
- package/dist/src/internal/builtin-plugins/coverage/helpers.js.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/hre.js +2 -5
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js +3 -5
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/test.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/test.js +4 -15
- package/dist/src/internal/builtin-plugins/coverage/hook-handlers/test.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts +11 -10
- 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 +80 -13
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts +5 -5
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js +25 -3
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js +4 -5
- 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.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js +13 -17
- 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 +8 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts +33 -0
- 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/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.js +1 -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 +8 -8
- 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 +2 -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 +78 -8
- 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/local-accounts.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js +56 -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-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/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.js +7 -2
- package/dist/src/internal/builtin-plugins/node/json-rpc/handler.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 +4 -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 +5 -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 +86 -47
- 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 +1 -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 -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 +24 -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/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 -2
- 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.d.ts +10 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.js +29 -6
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.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 +6 -0
- 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 +11 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.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 +249 -64
- package/dist/src/internal/builtin-plugins/solidity/config.js.map +1 -1
- 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/type-extensions.d.ts +201 -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/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 -3
- 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 -9
- 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/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 +30 -20
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.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 +27 -13
- 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/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/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 +1 -1
- package/dist/src/types/network.d.ts.map +1 -1
- package/dist/src/types/solidity/compilation-job.d.ts +5 -5
- package/dist/src/types/solidity/compilation-job.d.ts.map +1 -1
- package/dist/src/types/solidity/solidity-artifacts.d.ts +15 -0
- package/dist/src/types/solidity/solidity-artifacts.d.ts.map +1 -1
- package/package.json +7 -6
- package/src/internal/builtin-global-options.ts +15 -1
- package/src/internal/builtin-plugins/coverage/helpers.ts +31 -0
- package/src/internal/builtin-plugins/coverage/hook-handlers/hre.ts +2 -10
- package/src/internal/builtin-plugins/coverage/hook-handlers/solidity.ts +3 -12
- package/src/internal/builtin-plugins/coverage/hook-handlers/test.ts +4 -25
- package/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts +118 -18
- package/src/internal/builtin-plugins/gas-analytics/helpers.ts +44 -3
- package/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.ts +6 -10
- package/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.ts +18 -26
- package/src/internal/builtin-plugins/gas-analytics/index.ts +9 -1
- package/src/internal/builtin-plugins/gas-analytics/type-extensions.ts +1 -0
- package/src/internal/builtin-plugins/gas-analytics/types.ts +37 -0
- 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/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 +1 -0
- package/src/internal/builtin-plugins/network-manager/hook-handlers/network.ts +8 -11
- package/src/internal/builtin-plugins/network-manager/http-provider.ts +1 -0
- package/src/internal/builtin-plugins/network-manager/network-manager.ts +112 -12
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.ts +98 -34
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.ts +10 -30
- 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 +8 -2
- package/src/internal/builtin-plugins/solidity/build-system/artifacts.ts +7 -2
- package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +141 -65
- package/src/internal/builtin-plugins/solidity/build-system/cache.ts +1 -0
- package/src/internal/builtin-plugins/solidity/build-system/compilation-job.ts +34 -7
- 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 -7
- package/src/internal/builtin-plugins/solidity/build-system/compiler/index.ts +44 -9
- 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 +15 -0
- package/src/internal/builtin-plugins/solidity/config.ts +337 -105
- 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/type-extensions.ts +258 -31
- 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 -8
- 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/task-action.ts +52 -38
- package/src/internal/builtin-plugins/test/index.ts +0 -7
- package/src/internal/builtin-plugins/test/task-action.ts +39 -24
- 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/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/global-options.ts +1 -0
- package/src/types/hooks.ts +37 -0
- package/src/types/network.ts +2 -2
- package/src/types/solidity/compilation-job.ts +5 -5
- package/src/types/solidity/solidity-artifacts.ts +16 -0
- package/templates/hardhat-3/01-node-test-runner-viem/package.json +6 -6
- package/templates/hardhat-3/02-mocha-ethers/package.json +11 -11
- package/templates/hardhat-3/03-minimal/package.json +1 -1
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import type { HardhatUserConfig } from "../../../config.js";
|
|
2
2
|
import type {
|
|
3
|
+
SolidityCompilerConfig,
|
|
4
|
+
SolidityCompilerUserConfig,
|
|
3
5
|
HardhatConfig,
|
|
4
6
|
MultiVersionSolidityUserConfig,
|
|
5
7
|
SingleVersionSolidityUserConfig,
|
|
6
|
-
SolcConfig,
|
|
7
|
-
SolcUserConfig,
|
|
8
8
|
SolidityBuildProfileConfig,
|
|
9
9
|
SolidityConfig,
|
|
10
10
|
SolidityUserConfig,
|
|
11
|
+
CommonSolidityCompilerUserConfig,
|
|
12
|
+
SolcSolidityCompilerConfig,
|
|
13
|
+
SolcSolidityCompilerUserConfig,
|
|
11
14
|
} from "../../../types/config.js";
|
|
12
|
-
import type {
|
|
15
|
+
import type {
|
|
16
|
+
HardhatConfigValidationError,
|
|
17
|
+
HardhatUserConfigValidationError,
|
|
18
|
+
} from "../../../types/hooks.js";
|
|
13
19
|
|
|
14
20
|
import { deepMerge, isObject } from "@nomicfoundation/hardhat-utils/lang";
|
|
15
21
|
import { resolveFromRoot } from "@nomicfoundation/hardhat-utils/path";
|
|
@@ -22,107 +28,182 @@ import { z } from "zod";
|
|
|
22
28
|
|
|
23
29
|
import { DEFAULT_BUILD_PROFILES } from "./build-profiles.js";
|
|
24
30
|
import {
|
|
31
|
+
hasArm64MirrorBuild,
|
|
25
32
|
hasOfficialArm64Build,
|
|
26
33
|
missesSomeOfficialNativeBuilds,
|
|
27
34
|
} from "./build-system/solc-info.js";
|
|
28
35
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
/**
|
|
37
|
+
* The top-level type SolidityUserConfig is a union type too complex for
|
|
38
|
+
* TypeScript to handle properly. It accepts fields of different types of
|
|
39
|
+
* configurations. For example, it accepts `compilers` inside of a
|
|
40
|
+
* `SingleVersionSolidityUserConfig`.
|
|
41
|
+
*
|
|
42
|
+
* For this reason, we declare all the fields that shouldn't exist in the
|
|
43
|
+
* presence of another one as incompatible.
|
|
44
|
+
*
|
|
45
|
+
* This object has all the fields that are incompatible with `version`.
|
|
46
|
+
*/
|
|
47
|
+
const incompatibleVersionFields = {
|
|
48
|
+
compilers: incompatibleFieldType("This field is incompatible with `version`"),
|
|
49
|
+
overrides: incompatibleFieldType("This field is incompatible with `version`"),
|
|
50
|
+
profiles: incompatibleFieldType("This field is incompatible with `version`"),
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* This is the equivalent of `incompatibleVersionFields`, but for the
|
|
55
|
+
* `profiles` field.
|
|
56
|
+
*/
|
|
57
|
+
const incompatibleProfileFields = {
|
|
58
|
+
type: incompatibleFieldType("This field is incompatible with `profiles`"),
|
|
59
|
+
version: incompatibleFieldType("This field is incompatible with `profiles`"),
|
|
60
|
+
compilers: incompatibleFieldType(
|
|
61
|
+
"This field is incompatible with `profiles`",
|
|
62
|
+
),
|
|
63
|
+
overrides: incompatibleFieldType(
|
|
64
|
+
"This field is incompatible with `profiles`",
|
|
65
|
+
),
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* This is the equivalent of `incompatibleVersionFields`, but for the
|
|
70
|
+
* `compilers` field.
|
|
71
|
+
*/
|
|
72
|
+
const incompatibleCompilerFields = {
|
|
73
|
+
type: incompatibleFieldType("This field is incompatible with `compilers`"),
|
|
74
|
+
version: incompatibleFieldType("This field is incompatible with `compilers`"),
|
|
75
|
+
profiles: incompatibleFieldType(
|
|
76
|
+
"This field is incompatible with `compilers`",
|
|
77
|
+
),
|
|
78
|
+
};
|
|
36
79
|
|
|
37
|
-
const
|
|
80
|
+
const commonSolidityUserConfigFields = {
|
|
38
81
|
isolated: z.boolean().optional(),
|
|
39
|
-
|
|
82
|
+
npmFilesToBuild: z.array(z.string()).optional(),
|
|
83
|
+
};
|
|
40
84
|
|
|
41
|
-
const
|
|
85
|
+
const commonSolidityCompilerUserConfigFields = {
|
|
86
|
+
type: z.string().optional(),
|
|
42
87
|
version: z.string(),
|
|
43
88
|
settings: z.any().optional(),
|
|
44
89
|
path: z.string().optional(),
|
|
45
|
-
|
|
46
|
-
compilers: incompatibleFieldType("This field is incompatible with `version`"),
|
|
47
|
-
overrides: incompatibleFieldType("This field is incompatible with `version`"),
|
|
48
|
-
profiles: incompatibleFieldType("This field is incompatible with `version`"),
|
|
49
|
-
});
|
|
90
|
+
};
|
|
50
91
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
92
|
+
const solcSolidityCompilerUserConfigType = z.object({
|
|
93
|
+
...commonSolidityCompilerUserConfigFields,
|
|
94
|
+
type: z.literal("solc").optional(),
|
|
54
95
|
preferWasm: z.boolean().optional(),
|
|
55
96
|
});
|
|
56
97
|
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
isolated: z.boolean().optional(),
|
|
61
|
-
preferWasm: z.boolean().optional(),
|
|
62
|
-
version: incompatibleFieldType("This field is incompatible with `compilers`"),
|
|
63
|
-
settings: incompatibleFieldType(
|
|
64
|
-
"This field is incompatible with `compilers`",
|
|
65
|
-
),
|
|
66
|
-
});
|
|
98
|
+
const otherSolidityCompilerUserConfigType = z.object(
|
|
99
|
+
commonSolidityCompilerUserConfigFields,
|
|
100
|
+
);
|
|
67
101
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
102
|
+
// Per-compiler config: preferWasm is only allowed for solc (type undefined or "solc")
|
|
103
|
+
const solidityCompilerUserConfigType = conditionalUnionType(
|
|
104
|
+
[
|
|
105
|
+
[
|
|
106
|
+
(data) =>
|
|
107
|
+
isObject(data) &&
|
|
108
|
+
(!("type" in data) || data.type === undefined || data.type === "solc"),
|
|
109
|
+
solcSolidityCompilerUserConfigType,
|
|
110
|
+
],
|
|
111
|
+
[
|
|
112
|
+
(data) => isObject(data) && "type" in data && data.type !== "solc",
|
|
113
|
+
otherSolidityCompilerUserConfigType,
|
|
114
|
+
],
|
|
115
|
+
],
|
|
116
|
+
"Expected a valid compiler configuration",
|
|
117
|
+
);
|
|
71
118
|
|
|
72
|
-
const
|
|
73
|
-
.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"This field is incompatible with `version`",
|
|
77
|
-
),
|
|
78
|
-
overrides: incompatibleFieldType(
|
|
79
|
-
"This field is incompatible with `version`",
|
|
80
|
-
),
|
|
81
|
-
profiles: incompatibleFieldType(
|
|
82
|
-
"This field is incompatible with `version`",
|
|
83
|
-
),
|
|
119
|
+
const solcSingleVersionSolidityUserConfigType =
|
|
120
|
+
solcSolidityCompilerUserConfigType.extend({
|
|
121
|
+
...commonSolidityUserConfigFields,
|
|
122
|
+
...incompatibleVersionFields,
|
|
84
123
|
});
|
|
85
124
|
|
|
86
|
-
const
|
|
87
|
-
.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
"This field is incompatible with `compilers`",
|
|
91
|
-
),
|
|
92
|
-
profiles: incompatibleFieldType(
|
|
93
|
-
"This field is incompatible with `compilers`",
|
|
94
|
-
),
|
|
125
|
+
const otherSingleVersionSolidityUserConfigType =
|
|
126
|
+
otherSolidityCompilerUserConfigType.extend({
|
|
127
|
+
...commonSolidityUserConfigFields,
|
|
128
|
+
...incompatibleVersionFields,
|
|
95
129
|
});
|
|
96
130
|
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
131
|
+
const singleVersionSolidityUserConfigType = conditionalUnionType(
|
|
132
|
+
[
|
|
133
|
+
[
|
|
134
|
+
(data) =>
|
|
135
|
+
isObject(data) &&
|
|
136
|
+
(!("type" in data) || data.type === undefined || data.type === "solc"),
|
|
137
|
+
solcSingleVersionSolidityUserConfigType,
|
|
138
|
+
],
|
|
139
|
+
[
|
|
140
|
+
(data) => isObject(data) && "type" in data && data.type !== "solc",
|
|
141
|
+
otherSingleVersionSolidityUserConfigType,
|
|
142
|
+
],
|
|
143
|
+
],
|
|
144
|
+
"Expected a valid single-version Solidity configuration",
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
const multiVersionSolidityUserConfigType = z.object({
|
|
148
|
+
preferWasm: z.boolean().optional(),
|
|
149
|
+
compilers: z.array(solidityCompilerUserConfigType).nonempty(),
|
|
150
|
+
overrides: z.record(z.string(), solidityCompilerUserConfigType).optional(),
|
|
151
|
+
...commonSolidityUserConfigFields,
|
|
152
|
+
...incompatibleCompilerFields,
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
// This definition needs to be aligned with solidityCompilerUserConfigType.
|
|
156
|
+
// The reason to duplicate it is that we can't `.extend()` a conditional union
|
|
157
|
+
// type.
|
|
158
|
+
const singleVersionBuildProfileUserConfigType = conditionalUnionType(
|
|
159
|
+
[
|
|
160
|
+
[
|
|
161
|
+
(data) =>
|
|
162
|
+
isObject(data) &&
|
|
163
|
+
(!("type" in data) || data.type === undefined || data.type === "solc"),
|
|
164
|
+
solcSolidityCompilerUserConfigType.extend({
|
|
165
|
+
isolated: z.boolean().optional(),
|
|
166
|
+
...incompatibleVersionFields,
|
|
167
|
+
}),
|
|
168
|
+
],
|
|
169
|
+
[
|
|
170
|
+
(data) => isObject(data) && "type" in data && data.type !== "solc",
|
|
171
|
+
otherSolidityCompilerUserConfigType.extend({
|
|
172
|
+
isolated: z.boolean().optional(),
|
|
173
|
+
...incompatibleVersionFields,
|
|
174
|
+
}),
|
|
175
|
+
],
|
|
176
|
+
],
|
|
177
|
+
"Expected a valid compiler configuration",
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
const multiVersionBuildProfileUserConfigType = z.object({
|
|
181
|
+
preferWasm: z.boolean().optional(),
|
|
182
|
+
compilers: z.array(solidityCompilerUserConfigType).nonempty(),
|
|
183
|
+
overrides: z.record(z.string(), solidityCompilerUserConfigType).optional(),
|
|
184
|
+
isolated: z.boolean().optional(),
|
|
185
|
+
...incompatibleCompilerFields,
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
const buildProfilesSolidityUserConfigType = z.object({
|
|
189
|
+
profiles: z.record(
|
|
190
|
+
z.string(),
|
|
191
|
+
conditionalUnionType(
|
|
192
|
+
[
|
|
102
193
|
[
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
singleVersionSolcUserConfigType,
|
|
106
|
-
],
|
|
107
|
-
[
|
|
108
|
-
(data) => isObject(data) && "compilers" in data,
|
|
109
|
-
multiVersionSolcUserConfigType,
|
|
110
|
-
],
|
|
194
|
+
(data) => isObject(data) && "version" in data,
|
|
195
|
+
singleVersionBuildProfileUserConfigType,
|
|
111
196
|
],
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
compilers: incompatibleFieldType(
|
|
119
|
-
"This field is incompatible with `profiles`",
|
|
120
|
-
),
|
|
121
|
-
overrides: incompatibleFieldType(
|
|
122
|
-
"This field is incompatible with `profiles`",
|
|
197
|
+
[
|
|
198
|
+
(data) => isObject(data) && "compilers" in data,
|
|
199
|
+
multiVersionBuildProfileUserConfigType,
|
|
200
|
+
],
|
|
201
|
+
],
|
|
202
|
+
"Expected an object configuring one or more versions of Solidity",
|
|
123
203
|
),
|
|
124
|
-
|
|
125
|
-
|
|
204
|
+
),
|
|
205
|
+
...incompatibleProfileFields,
|
|
206
|
+
});
|
|
126
207
|
|
|
127
208
|
const solidityUserConfigType = conditionalUnionType(
|
|
128
209
|
[
|
|
@@ -144,6 +225,14 @@ const solidityUserConfigType = conditionalUnionType(
|
|
|
144
225
|
"Expected a version string, an array of version strings, or an object configuring one or more versions of Solidity or multiple build profiles",
|
|
145
226
|
);
|
|
146
227
|
|
|
228
|
+
const sourcePathsType = conditionalUnionType(
|
|
229
|
+
[
|
|
230
|
+
[(data) => typeof data === "string", z.string()],
|
|
231
|
+
[(data) => Array.isArray(data), z.array(z.string()).nonempty()],
|
|
232
|
+
],
|
|
233
|
+
"Expected a string or an array of strings",
|
|
234
|
+
);
|
|
235
|
+
|
|
147
236
|
const userConfigType = z.object({
|
|
148
237
|
paths: z
|
|
149
238
|
.object({
|
|
@@ -183,6 +272,109 @@ export function validateSolidityUserConfig(
|
|
|
183
272
|
return result;
|
|
184
273
|
}
|
|
185
274
|
|
|
275
|
+
export function validateSolidityConfig(
|
|
276
|
+
resolvedConfig: HardhatConfig,
|
|
277
|
+
): HardhatConfigValidationError[] {
|
|
278
|
+
const errors: HardhatConfigValidationError[] = [];
|
|
279
|
+
|
|
280
|
+
errors.push(...validateRegisteredCompilerTypes(resolvedConfig));
|
|
281
|
+
errors.push(...validatePreferWasmRequiresSolc(resolvedConfig));
|
|
282
|
+
|
|
283
|
+
return errors;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
function validateRegisteredCompilerTypes(
|
|
287
|
+
resolvedConfig: HardhatConfig,
|
|
288
|
+
): HardhatConfigValidationError[] {
|
|
289
|
+
const errors: HardhatConfigValidationError[] = [];
|
|
290
|
+
const registered = new Set(resolvedConfig.solidity.registeredCompilerTypes);
|
|
291
|
+
|
|
292
|
+
for (const [profileName, profile] of Object.entries(
|
|
293
|
+
resolvedConfig.solidity.profiles,
|
|
294
|
+
)) {
|
|
295
|
+
for (const [i, compiler] of profile.compilers.entries()) {
|
|
296
|
+
const type = compiler.type ?? "solc";
|
|
297
|
+
if (!registered.has(type)) {
|
|
298
|
+
errors.push({
|
|
299
|
+
path: ["solidity", "profiles", profileName, "compilers", i, "type"],
|
|
300
|
+
message: `Unknown compiler type "${type}". Registered types: ${[...registered].join(", ")}`,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
for (const [sourceName, override] of Object.entries(profile.overrides)) {
|
|
305
|
+
const type = override.type ?? "solc";
|
|
306
|
+
if (!registered.has(type)) {
|
|
307
|
+
errors.push({
|
|
308
|
+
path: [
|
|
309
|
+
"solidity",
|
|
310
|
+
"profiles",
|
|
311
|
+
profileName,
|
|
312
|
+
"overrides",
|
|
313
|
+
sourceName,
|
|
314
|
+
"type",
|
|
315
|
+
],
|
|
316
|
+
message: `Unknown compiler type "${type}". Registered types: ${[...registered].join(", ")}`,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
return errors;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
function validatePreferWasmRequiresSolc(
|
|
326
|
+
resolvedConfig: HardhatConfig,
|
|
327
|
+
): HardhatConfigValidationError[] {
|
|
328
|
+
const errors: HardhatConfigValidationError[] = [];
|
|
329
|
+
|
|
330
|
+
for (const [profileName, profile] of Object.entries(
|
|
331
|
+
resolvedConfig.solidity.profiles,
|
|
332
|
+
)) {
|
|
333
|
+
if (!profile.preferWasm) {
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
for (const [i, compiler] of profile.compilers.entries()) {
|
|
338
|
+
const type = compiler.type;
|
|
339
|
+
if (type !== undefined && type !== "solc") {
|
|
340
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
341
|
+
-- We need to cast because within Hardhat core the type of `type` is
|
|
342
|
+
`never`, as you can only get into this if with a plugin. */
|
|
343
|
+
const compilerType: string = (compiler as any).type;
|
|
344
|
+
|
|
345
|
+
errors.push({
|
|
346
|
+
path: ["solidity", "profiles", profileName, "compilers", i, "type"],
|
|
347
|
+
message: `Compiler type must be "solc" if \`preferWasm\` is \`true\` in the build profile, but found type "${compilerType}"`,
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
for (const [sourceName, override] of Object.entries(profile.overrides)) {
|
|
353
|
+
const type = override.type;
|
|
354
|
+
if (type !== undefined && type !== "solc") {
|
|
355
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
356
|
+
-- We need to cast because within Hardhat core the type of `type` is
|
|
357
|
+
`never`, as you can only get into this if with a plugin. */
|
|
358
|
+
const overrideType: string = (override as any).type;
|
|
359
|
+
|
|
360
|
+
errors.push({
|
|
361
|
+
path: [
|
|
362
|
+
"solidity",
|
|
363
|
+
"profiles",
|
|
364
|
+
profileName,
|
|
365
|
+
"overrides",
|
|
366
|
+
sourceName,
|
|
367
|
+
"type",
|
|
368
|
+
],
|
|
369
|
+
message: `Compiler type must be "solc" if \`preferWasm\` is \`true\` in the build profile, but found type "${overrideType}"`,
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
return errors;
|
|
376
|
+
}
|
|
377
|
+
|
|
186
378
|
export async function resolveSolidityUserConfig(
|
|
187
379
|
userConfig: HardhatUserConfig,
|
|
188
380
|
resolvedConfig: HardhatConfig,
|
|
@@ -237,6 +429,7 @@ function resolveSolidityConfig(
|
|
|
237
429
|
),
|
|
238
430
|
},
|
|
239
431
|
npmFilesToBuild: [],
|
|
432
|
+
registeredCompilerTypes: ["solc"],
|
|
240
433
|
};
|
|
241
434
|
}
|
|
242
435
|
|
|
@@ -251,6 +444,7 @@ function resolveSolidityConfig(
|
|
|
251
444
|
),
|
|
252
445
|
},
|
|
253
446
|
npmFilesToBuild: solidityConfig.npmFilesToBuild ?? [],
|
|
447
|
+
registeredCompilerTypes: ["solc"],
|
|
254
448
|
};
|
|
255
449
|
}
|
|
256
450
|
|
|
@@ -280,6 +474,7 @@ function resolveSolidityConfig(
|
|
|
280
474
|
return {
|
|
281
475
|
profiles,
|
|
282
476
|
npmFilesToBuild: solidityConfig.npmFilesToBuild ?? [],
|
|
477
|
+
registeredCompilerTypes: ["solc"],
|
|
283
478
|
};
|
|
284
479
|
}
|
|
285
480
|
|
|
@@ -291,7 +486,7 @@ function resolveBuildProfileConfig(
|
|
|
291
486
|
): SolidityBuildProfileConfig {
|
|
292
487
|
if ("version" in solidityConfig) {
|
|
293
488
|
return {
|
|
294
|
-
compilers: [
|
|
489
|
+
compilers: [resolveSolidityCompilerConfig(solidityConfig, production)],
|
|
295
490
|
overrides: {},
|
|
296
491
|
isolated: solidityConfig.isolated ?? production,
|
|
297
492
|
preferWasm: solidityConfig.preferWasm ?? false,
|
|
@@ -300,13 +495,13 @@ function resolveBuildProfileConfig(
|
|
|
300
495
|
|
|
301
496
|
return {
|
|
302
497
|
compilers: solidityConfig.compilers.map((compiler) =>
|
|
303
|
-
|
|
498
|
+
resolveSolidityCompilerConfig(compiler, production),
|
|
304
499
|
),
|
|
305
500
|
overrides: Object.fromEntries(
|
|
306
501
|
Object.entries(solidityConfig.overrides ?? {}).map(
|
|
307
502
|
([userSourceName, override]) => [
|
|
308
503
|
userSourceName,
|
|
309
|
-
|
|
504
|
+
resolveSolidityCompilerConfig(override, production),
|
|
310
505
|
],
|
|
311
506
|
),
|
|
312
507
|
),
|
|
@@ -315,11 +510,11 @@ function resolveBuildProfileConfig(
|
|
|
315
510
|
};
|
|
316
511
|
}
|
|
317
512
|
|
|
318
|
-
function
|
|
319
|
-
|
|
513
|
+
function resolveSolidityCompilerConfig(
|
|
514
|
+
compilerConfig: SolidityCompilerUserConfig,
|
|
320
515
|
production: boolean = false,
|
|
321
|
-
):
|
|
322
|
-
const
|
|
516
|
+
): SolidityCompilerConfig {
|
|
517
|
+
const defaultSettings: SolidityCompilerConfig["settings"] = {
|
|
323
518
|
outputSelection: {
|
|
324
519
|
"*": {
|
|
325
520
|
"": ["ast"],
|
|
@@ -334,33 +529,68 @@ function resolveSolcConfig(
|
|
|
334
529
|
},
|
|
335
530
|
};
|
|
336
531
|
|
|
337
|
-
if (production) {
|
|
338
|
-
|
|
532
|
+
if (production && isSolcSolidityCompilerUserConfig(compilerConfig)) {
|
|
533
|
+
defaultSettings.optimizer = {
|
|
339
534
|
enabled: true,
|
|
340
535
|
runs: 200,
|
|
341
536
|
};
|
|
342
537
|
}
|
|
343
538
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
539
|
+
const resolvedSettings = deepMerge(
|
|
540
|
+
defaultSettings,
|
|
541
|
+
compilerConfig.settings ?? {},
|
|
542
|
+
);
|
|
543
|
+
|
|
544
|
+
// Resolve solc-specific preferWasm if this is a SolcSolidityCompilerUserConfig
|
|
545
|
+
if (isSolcSolidityCompilerUserConfig(compilerConfig)) {
|
|
546
|
+
// Resolve per-compiler preferWasm:
|
|
547
|
+
// If explicitly set, use that value.
|
|
548
|
+
// Otherwise, for ARM64 Linux:
|
|
549
|
+
// - Versions below the mirror threshold (< 0.5.0) always use WASM,
|
|
550
|
+
// since no native ARM64 build exists anywhere.
|
|
551
|
+
// - In production, versions without official ARM64 builds
|
|
552
|
+
// also default to WASM.
|
|
553
|
+
let resolvedPreferWasm: boolean | undefined = compilerConfig.preferWasm;
|
|
554
|
+
if (resolvedPreferWasm === undefined && missesSomeOfficialNativeBuilds()) {
|
|
555
|
+
const version = compilerConfig.version;
|
|
556
|
+
|
|
557
|
+
if (!hasOfficialArm64Build(version) && !hasArm64MirrorBuild(version)) {
|
|
558
|
+
resolvedPreferWasm = true;
|
|
559
|
+
} else if (production && !hasOfficialArm64Build(version)) {
|
|
560
|
+
resolvedPreferWasm = true;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
const solcResolved: SolcSolidityCompilerConfig = {
|
|
564
|
+
type: compilerConfig.type,
|
|
565
|
+
version: compilerConfig.version,
|
|
566
|
+
settings: resolvedSettings,
|
|
567
|
+
path: compilerConfig.path,
|
|
568
|
+
preferWasm: resolvedPreferWasm,
|
|
569
|
+
};
|
|
570
|
+
return solcResolved;
|
|
354
571
|
}
|
|
355
572
|
|
|
573
|
+
const unknownCompilerConfig =
|
|
574
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions --
|
|
575
|
+
We need to cast here because compilerConfig has `never` type here, as this
|
|
576
|
+
case is only accessible when there are other types of compilers registered
|
|
577
|
+
through plugins. */
|
|
578
|
+
compilerConfig as unknown as CommonSolidityCompilerUserConfig;
|
|
579
|
+
|
|
356
580
|
return {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
581
|
+
type: unknownCompilerConfig.type,
|
|
582
|
+
version: unknownCompilerConfig.version,
|
|
583
|
+
settings: resolvedSettings,
|
|
584
|
+
path: unknownCompilerConfig.path,
|
|
361
585
|
};
|
|
362
586
|
}
|
|
363
587
|
|
|
588
|
+
export function isSolcSolidityCompilerUserConfig(
|
|
589
|
+
config: SolidityCompilerUserConfig,
|
|
590
|
+
): config is SolcSolidityCompilerUserConfig {
|
|
591
|
+
return config.type === undefined || config.type === "solc";
|
|
592
|
+
}
|
|
593
|
+
|
|
364
594
|
function copyFromDefault(
|
|
365
595
|
defaultSolidityConfig:
|
|
366
596
|
| SingleVersionSolidityUserConfig
|
|
@@ -369,18 +599,20 @@ function copyFromDefault(
|
|
|
369
599
|
if ("version" in defaultSolidityConfig) {
|
|
370
600
|
return {
|
|
371
601
|
version: defaultSolidityConfig.version,
|
|
602
|
+
type: defaultSolidityConfig.type,
|
|
372
603
|
};
|
|
373
604
|
}
|
|
374
605
|
|
|
375
606
|
return {
|
|
376
607
|
compilers: defaultSolidityConfig.compilers.map((c) => ({
|
|
377
608
|
version: c.version,
|
|
609
|
+
type: c.type,
|
|
378
610
|
})),
|
|
379
611
|
overrides: Object.fromEntries(
|
|
380
612
|
Object.entries(defaultSolidityConfig.overrides ?? {}).map(
|
|
381
613
|
([userSourceName, override]) => [
|
|
382
614
|
userSourceName,
|
|
383
|
-
{ version: override.version },
|
|
615
|
+
{ version: override.version, type: override.type },
|
|
384
616
|
],
|
|
385
617
|
),
|
|
386
618
|
),
|
|
@@ -2,6 +2,7 @@ import type { ConfigHooks } from "../../../../types/hooks.js";
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
resolveSolidityUserConfig,
|
|
5
|
+
validateSolidityConfig,
|
|
5
6
|
validateSolidityUserConfig,
|
|
6
7
|
} from "../config.js";
|
|
7
8
|
|
|
@@ -21,6 +22,8 @@ export default async (): Promise<Partial<ConfigHooks>> => {
|
|
|
21
22
|
|
|
22
23
|
return resolveSolidityUserConfig(userConfig, resolvedConfig);
|
|
23
24
|
},
|
|
25
|
+
validateResolvedConfig: async (resolvedConfig) =>
|
|
26
|
+
validateSolidityConfig(resolvedConfig),
|
|
24
27
|
};
|
|
25
28
|
|
|
26
29
|
return handlers;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SolidityHooks } from "../../../../types/hooks.js";
|
|
2
|
+
|
|
3
|
+
import { downloadSolcCompilersHandler } from "../solidity-hooks.js";
|
|
4
|
+
|
|
5
|
+
export default async (): Promise<Partial<SolidityHooks>> => ({
|
|
6
|
+
downloadCompilers: async (_context, compilerConfigs, quiet) => {
|
|
7
|
+
await downloadSolcCompilersHandler(compilerConfigs, quiet);
|
|
8
|
+
},
|
|
9
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { SolidityCompilerConfig } from "../../../types/config.js";
|
|
2
|
+
import type { Compiler } from "../../../types/solidity.js";
|
|
3
|
+
|
|
4
|
+
import { isSolcSolidityCompilerConfig } from "./build-system/build-system.js";
|
|
5
|
+
import {
|
|
6
|
+
downloadSolcCompilers,
|
|
7
|
+
getCompiler,
|
|
8
|
+
} from "./build-system/compiler/index.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Downloads solc compilers for the given configs, filtering out non-solc types.
|
|
12
|
+
* This is the default implementation of the `downloadCompilers` hook handler.
|
|
13
|
+
*/
|
|
14
|
+
export async function downloadSolcCompilersHandler(
|
|
15
|
+
compilerConfigs: SolidityCompilerConfig[],
|
|
16
|
+
quiet: boolean,
|
|
17
|
+
): Promise<void> {
|
|
18
|
+
const solcVersions = new Set(
|
|
19
|
+
compilerConfigs.filter(isSolcSolidityCompilerConfig).map((c) => c.version),
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
if (solcVersions.size > 0) {
|
|
23
|
+
await downloadSolcCompilers(solcVersions, quiet);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Resolves the preferWasm setting for a given compiler config, falling back
|
|
29
|
+
* to the build profile's preferWasm if not set on the compiler.
|
|
30
|
+
*/
|
|
31
|
+
export function resolvePreferWasm(
|
|
32
|
+
compilerConfig: SolidityCompilerConfig,
|
|
33
|
+
buildProfilePreferWasm: boolean,
|
|
34
|
+
): boolean {
|
|
35
|
+
if (isSolcSolidityCompilerConfig(compilerConfig)) {
|
|
36
|
+
return compilerConfig.preferWasm ?? buildProfilePreferWasm;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Creates a solc Compiler for the given config. This is the default
|
|
43
|
+
* implementation used as the fallback in the `getCompiler` hook chain.
|
|
44
|
+
*/
|
|
45
|
+
export async function getSolcCompilerForConfig(
|
|
46
|
+
compilerConfig: SolidityCompilerConfig,
|
|
47
|
+
buildProfilePreferWasm: boolean,
|
|
48
|
+
): Promise<Compiler> {
|
|
49
|
+
return getCompiler(compilerConfig.version, {
|
|
50
|
+
preferWasm: resolvePreferWasm(compilerConfig, buildProfilePreferWasm),
|
|
51
|
+
compilerPath: compilerConfig.path,
|
|
52
|
+
});
|
|
53
|
+
}
|