hardhat 3.2.0 → 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 +34 -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/gas-analytics/helpers.d.ts +0 -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 +12 -3
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.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 +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.js +63 -7
- 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/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 -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/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/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 +247 -68
- 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 +21 -14
- 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 +1 -4
- 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/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 +6 -5
- package/src/internal/builtin-global-options.ts +15 -1
- package/src/internal/builtin-plugins/gas-analytics/helpers.ts +13 -3
- 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 +83 -10
- 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/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 -2
- package/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.ts +4 -2
- package/src/internal/builtin-plugins/solidity/config.ts +335 -110
- 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 +42 -25
- package/src/internal/builtin-plugins/test/index.ts +0 -7
- package/src/internal/builtin-plugins/test/task-action.ts +1 -6
- 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/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 +5 -5
- package/templates/hardhat-3/02-mocha-ethers/package.json +11 -11
- package/templates/hardhat-3/03-minimal/package.json +1 -1
package/src/internal/core/hre.ts
CHANGED
|
@@ -13,6 +13,7 @@ import type {
|
|
|
13
13
|
GlobalOptionDefinitions,
|
|
14
14
|
} from "../../types/global-options.js";
|
|
15
15
|
import type {
|
|
16
|
+
HardhatConfigValidationError,
|
|
16
17
|
HardhatUserConfigValidationError,
|
|
17
18
|
HookContext,
|
|
18
19
|
HookManager,
|
|
@@ -96,6 +97,20 @@ export class HardhatRuntimeEnvironmentImplementation
|
|
|
96
97
|
);
|
|
97
98
|
|
|
98
99
|
if (!configResolutionResult.success) {
|
|
100
|
+
if (configResolutionResult.configValidationErrors !== undefined) {
|
|
101
|
+
throw new HardhatError(
|
|
102
|
+
HardhatError.ERRORS.CORE.GENERAL.INVALID_RESOLVED_CONFIG,
|
|
103
|
+
{
|
|
104
|
+
errors: `\t${configResolutionResult.configValidationErrors
|
|
105
|
+
.map(
|
|
106
|
+
(error) =>
|
|
107
|
+
`* Resolved config error in config.${error.path.join(".")}: ${error.message}`,
|
|
108
|
+
)
|
|
109
|
+
.join("\n\t")}`,
|
|
110
|
+
},
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
99
114
|
throw new HardhatError(HardhatError.ERRORS.CORE.GENERAL.INVALID_CONFIG, {
|
|
100
115
|
errors: `\t${configResolutionResult.userConfigValidationErrors
|
|
101
116
|
.map(
|
|
@@ -211,6 +226,7 @@ export async function resolveUserConfigToHardhatConfig(
|
|
|
211
226
|
| {
|
|
212
227
|
success: false;
|
|
213
228
|
userConfigValidationErrors: HardhatUserConfigValidationError[];
|
|
229
|
+
configValidationErrors?: HardhatConfigValidationError[];
|
|
214
230
|
}
|
|
215
231
|
> {
|
|
216
232
|
// extend user config:
|
|
@@ -225,6 +241,7 @@ export async function resolveUserConfigToHardhatConfig(
|
|
|
225
241
|
extendedUserConfig,
|
|
226
242
|
);
|
|
227
243
|
|
|
244
|
+
// If user config is structurally invalid, we can't resolve — return early.
|
|
228
245
|
if (userConfigValidationErrors.length > 0) {
|
|
229
246
|
return {
|
|
230
247
|
success: false,
|
|
@@ -252,6 +269,22 @@ export async function resolveUserConfigToHardhatConfig(
|
|
|
252
269
|
plugins: resolvedPlugins,
|
|
253
270
|
};
|
|
254
271
|
|
|
272
|
+
// Validate the resolved config (post-resolution checks).
|
|
273
|
+
const resolvedConfigValidationResults = await hooks.runSequentialHandlers(
|
|
274
|
+
"config",
|
|
275
|
+
"validateResolvedConfig",
|
|
276
|
+
[config],
|
|
277
|
+
);
|
|
278
|
+
const resolvedConfigValidationErrors = resolvedConfigValidationResults.flat();
|
|
279
|
+
|
|
280
|
+
if (resolvedConfigValidationErrors.length > 0) {
|
|
281
|
+
return {
|
|
282
|
+
success: false,
|
|
283
|
+
userConfigValidationErrors: [],
|
|
284
|
+
configValidationErrors: resolvedConfigValidationErrors,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
|
|
255
288
|
return { success: true, config, extendedUserConfig };
|
|
256
289
|
}
|
|
257
290
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { HardhatPlugin } from "../../../types/plugins.js";
|
|
2
|
+
import type { satisfies as SatisfiesT } from "semver";
|
|
2
3
|
|
|
3
4
|
import path from "node:path";
|
|
4
5
|
|
|
@@ -9,6 +10,10 @@ import {
|
|
|
9
10
|
type PackageJson,
|
|
10
11
|
} from "@nomicfoundation/hardhat-utils/package";
|
|
11
12
|
|
|
13
|
+
// semver is slow to load, and this file is loaded by HookManager, so we lazy
|
|
14
|
+
// load it.
|
|
15
|
+
let satisfies: typeof SatisfiesT | undefined;
|
|
16
|
+
|
|
12
17
|
/**
|
|
13
18
|
* Validate that a plugin is installed and that its peer dependencies are
|
|
14
19
|
* installed and satisfy the version constraints.
|
|
@@ -84,7 +89,9 @@ export async function detectPluginNpmDependencyProblems(
|
|
|
84
89
|
|
|
85
90
|
const installedVersion = dependencyPackageJson.version;
|
|
86
91
|
|
|
87
|
-
|
|
92
|
+
if (satisfies === undefined) {
|
|
93
|
+
({ satisfies } = await import("semver"));
|
|
94
|
+
}
|
|
88
95
|
|
|
89
96
|
if (!satisfies(installedVersion, versionSpec.replace("workspace:", ""))) {
|
|
90
97
|
throw new HardhatError(
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { HookContext, HookManager } from "../../types/hooks.js";
|
|
2
2
|
import type { UserInterruptionManager } from "../../types/user-interruptions.js";
|
|
3
3
|
|
|
4
|
+
import { createInterface } from "node:readline";
|
|
5
|
+
|
|
4
6
|
import { assertHardhatInvariant } from "@nomicfoundation/hardhat-errors";
|
|
5
7
|
import { AsyncMutex } from "@nomicfoundation/hardhat-utils/synchronization";
|
|
8
|
+
import chalk from "chalk";
|
|
6
9
|
|
|
7
10
|
export class UserInterruptionManagerImplementation
|
|
8
11
|
implements UserInterruptionManager
|
|
@@ -68,7 +71,6 @@ async function defaultDisplayMessage(
|
|
|
68
71
|
interruptor: string,
|
|
69
72
|
message: string,
|
|
70
73
|
) {
|
|
71
|
-
const chalk = (await import("chalk")).default;
|
|
72
74
|
console.log(chalk.blue(`[${interruptor}]`) + ` ${message}`);
|
|
73
75
|
}
|
|
74
76
|
|
|
@@ -77,8 +79,6 @@ async function defaultRequestInput(
|
|
|
77
79
|
interruptor: string,
|
|
78
80
|
inputDescription: string,
|
|
79
81
|
): Promise<string> {
|
|
80
|
-
const { createInterface } = await import("node:readline");
|
|
81
|
-
const chalk = (await import("chalk")).default;
|
|
82
82
|
const rl = createInterface({
|
|
83
83
|
input: process.stdin,
|
|
84
84
|
output: process.stdout,
|
|
@@ -100,8 +100,6 @@ async function defaultRequestSecretInput(
|
|
|
100
100
|
interruptor: string,
|
|
101
101
|
inputDescription: string,
|
|
102
102
|
): Promise<string> {
|
|
103
|
-
const { createInterface } = await import("node:readline");
|
|
104
|
-
const chalk = (await import("chalk")).default;
|
|
105
103
|
const rl = createInterface({
|
|
106
104
|
input: process.stdin,
|
|
107
105
|
output: process.stdout,
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface Colorizer {
|
|
2
|
+
blue: (text: string) => string;
|
|
3
|
+
green: (text: string) => string;
|
|
4
|
+
red: (text: string) => string;
|
|
5
|
+
cyan: (text: string) => string;
|
|
6
|
+
yellow: (text: string) => string;
|
|
7
|
+
grey: (text: string) => string;
|
|
8
|
+
dim: (text: string) => string;
|
|
9
|
+
}
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
findDependencyPackageJson,
|
|
8
8
|
readClosestPackageJson,
|
|
9
9
|
} from "@nomicfoundation/hardhat-utils/package";
|
|
10
|
+
import { getRequest } from "@nomicfoundation/hardhat-utils/request";
|
|
10
11
|
|
|
11
12
|
let cachedHardhatVersion: string | undefined;
|
|
12
13
|
let cachedLatestHardhatVersion: string | undefined;
|
|
@@ -50,8 +51,6 @@ export async function getEdrVersion(): Promise<string> {
|
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
export async function getLatestHardhatVersion(): Promise<string> {
|
|
53
|
-
const { getRequest } = await import("@nomicfoundation/hardhat-utils/request");
|
|
54
|
-
|
|
55
54
|
if (cachedLatestHardhatVersion !== undefined) {
|
|
56
55
|
return cachedLatestHardhatVersion;
|
|
57
56
|
}
|
package/src/types/hooks.ts
CHANGED
|
@@ -93,6 +93,20 @@ export interface ConfigHooks {
|
|
|
93
93
|
nextResolveConfigurationVariable: ConfigurationVariableResolver,
|
|
94
94
|
) => Promise<HardhatConfig>,
|
|
95
95
|
) => Promise<HardhatConfig>;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Provide a handler for this hook to validate the resolved config.
|
|
99
|
+
*
|
|
100
|
+
* This hook runs after all plugins have resolved their config. Use it to
|
|
101
|
+
* validate cross-cutting concerns that require the fully resolved config
|
|
102
|
+
* (e.g., checking that all compiler types are registered).
|
|
103
|
+
*
|
|
104
|
+
* @param resolvedConfig The fully resolved config.
|
|
105
|
+
* @returns An array of validation errors.
|
|
106
|
+
*/
|
|
107
|
+
validateResolvedConfig: (
|
|
108
|
+
resolvedConfig: HardhatConfig,
|
|
109
|
+
) => Promise<HardhatConfigValidationError[]>;
|
|
96
110
|
}
|
|
97
111
|
|
|
98
112
|
/**
|
|
@@ -114,6 +128,29 @@ export interface HardhatUserConfigValidationError {
|
|
|
114
128
|
message: string;
|
|
115
129
|
}
|
|
116
130
|
|
|
131
|
+
/**
|
|
132
|
+
* A `HardhatConfig` validation error.
|
|
133
|
+
*
|
|
134
|
+
* This is the equivalent of `HardhatUserConfigValidationError` but for the
|
|
135
|
+
* resolved config.
|
|
136
|
+
*/
|
|
137
|
+
export interface HardhatConfigValidationError {
|
|
138
|
+
/**
|
|
139
|
+
* The path from the resolved config object to the value that originated this
|
|
140
|
+
* validation error.
|
|
141
|
+
*
|
|
142
|
+
* For example, if `config.solidity.profiles.foo.compilers[0].type` is
|
|
143
|
+
* invalid, this array would be
|
|
144
|
+
* `["solidity", "profiles", "foo", "compilers", 0, "type"]`.
|
|
145
|
+
*/
|
|
146
|
+
path: Array<string | number>;
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The error message.
|
|
150
|
+
*/
|
|
151
|
+
message: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
117
154
|
/**
|
|
118
155
|
* ConfigurationVariable-related hooks.
|
|
119
156
|
*/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { CompilerInput } from "./compiler-io.js";
|
|
2
2
|
import type { DependencyGraph } from "./dependency-graph.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { SolidityCompilerConfig } from "../config.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* A compilation job to be run
|
|
6
|
+
* A compilation job to be run.
|
|
7
7
|
*/
|
|
8
8
|
export interface CompilationJob {
|
|
9
9
|
/**
|
|
@@ -13,12 +13,12 @@ export interface CompilationJob {
|
|
|
13
13
|
dependencyGraph: DependencyGraph;
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* The
|
|
16
|
+
* The compiler config to use.
|
|
17
17
|
*/
|
|
18
|
-
solcConfig:
|
|
18
|
+
solcConfig: SolidityCompilerConfig;
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* The long version of the
|
|
21
|
+
* The long version of the compiler to be used.
|
|
22
22
|
*/
|
|
23
23
|
solcLongVersion: string;
|
|
24
24
|
|
|
@@ -14,6 +14,12 @@ export interface SolidityBuildInfo {
|
|
|
14
14
|
/**
|
|
15
15
|
* The id of the build, which is derived from the rest of the data,
|
|
16
16
|
* guaranteeing that it's unique and deterministic.
|
|
17
|
+
*
|
|
18
|
+
* When `compilerType` is present and is not "solc", the format is:
|
|
19
|
+
* `solc-<major>_<minor>_<patch>-<compiler-type>-<job-hash>`
|
|
20
|
+
*
|
|
21
|
+
* Otherwise (i.e. solc or undefined), the format is:
|
|
22
|
+
* `solc-<major>_<minor>_<patch>-<job-hash>`
|
|
17
23
|
*/
|
|
18
24
|
readonly id: string;
|
|
19
25
|
|
|
@@ -27,6 +33,16 @@ export interface SolidityBuildInfo {
|
|
|
27
33
|
*/
|
|
28
34
|
readonly solcLongVersion: string;
|
|
29
35
|
|
|
36
|
+
/**
|
|
37
|
+
* The compiler type used for this build. If absent or undefined, it means
|
|
38
|
+
* "solc" was used.
|
|
39
|
+
*
|
|
40
|
+
* Note: This is typed as `string` rather than `SolidityCompilerType` because
|
|
41
|
+
* the build info may come from a different Hardhat setup where the compiler
|
|
42
|
+
* type may not be registered in the current type definitions.
|
|
43
|
+
*/
|
|
44
|
+
readonly compilerType?: string;
|
|
45
|
+
|
|
30
46
|
/**
|
|
31
47
|
* A mapping from user source names to input source names, for the root
|
|
32
48
|
* files of the build (i.e. the files whose artifacts where being compiled).
|
|
@@ -5,22 +5,22 @@
|
|
|
5
5
|
"description": "A TypeScript Hardhat project using Node Test Runner and Viem",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"devDependencies": {
|
|
8
|
-
"hardhat": "workspace:^3.
|
|
8
|
+
"hardhat": "workspace:^3.3.0",
|
|
9
9
|
"@nomicfoundation/hardhat-toolbox-viem": "workspace:^5.0.3",
|
|
10
|
-
"@nomicfoundation/hardhat-ignition": "workspace:^3.1.
|
|
10
|
+
"@nomicfoundation/hardhat-ignition": "workspace:^3.1.1",
|
|
11
11
|
"@types/node": "^22.8.5",
|
|
12
12
|
"forge-std": "foundry-rs/forge-std#v1.9.4",
|
|
13
13
|
"typescript": "~5.8.0",
|
|
14
14
|
"viem": "^2.43.0"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
|
-
"@nomicfoundation/hardhat-ignition-viem": "workspace:^3.1.
|
|
17
|
+
"@nomicfoundation/hardhat-ignition-viem": "workspace:^3.1.1",
|
|
18
18
|
"@nomicfoundation/hardhat-keystore": "workspace:^3.0.5",
|
|
19
19
|
"@nomicfoundation/hardhat-network-helpers": "workspace:^3.0.4",
|
|
20
20
|
"@nomicfoundation/hardhat-node-test-runner": "workspace:^3.0.12",
|
|
21
21
|
"@nomicfoundation/hardhat-viem": "workspace:^3.0.4",
|
|
22
22
|
"@nomicfoundation/hardhat-viem-assertions": "workspace:^3.0.7",
|
|
23
|
-
"@nomicfoundation/hardhat-verify": "workspace:^3.0.
|
|
24
|
-
"@nomicfoundation/ignition-core": "workspace:^3.1.
|
|
23
|
+
"@nomicfoundation/hardhat-verify": "workspace:^3.0.13",
|
|
24
|
+
"@nomicfoundation/ignition-core": "workspace:^3.1.1"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
"description": "A TypeScript Hardhat project using Mocha and Ethers.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"devDependencies": {
|
|
8
|
-
"hardhat": "workspace:^3.
|
|
8
|
+
"hardhat": "workspace:^3.3.0",
|
|
9
9
|
"@nomicfoundation/hardhat-toolbox-mocha-ethers": "workspace:^3.0.3",
|
|
10
|
-
"@nomicfoundation/hardhat-ethers": "workspace:^4.0.
|
|
11
|
-
"@nomicfoundation/hardhat-ignition": "workspace:^3.1.
|
|
10
|
+
"@nomicfoundation/hardhat-ethers": "workspace:^4.0.7",
|
|
11
|
+
"@nomicfoundation/hardhat-ignition": "workspace:^3.1.1",
|
|
12
12
|
"@types/chai": "^5.2.3",
|
|
13
13
|
"@types/chai-as-promised": "^8.0.1",
|
|
14
14
|
"@types/mocha": ">=10.0.10",
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
"typescript": "~5.8.0"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@nomicfoundation/hardhat-ethers": "workspace:^4.0.
|
|
24
|
-
"@nomicfoundation/hardhat-ethers-chai-matchers": "workspace:^3.0.
|
|
25
|
-
"@nomicfoundation/hardhat-ignition": "workspace:^3.1.
|
|
26
|
-
"@nomicfoundation/hardhat-ignition-ethers": "workspace:^3.1.
|
|
23
|
+
"@nomicfoundation/hardhat-ethers": "workspace:^4.0.7",
|
|
24
|
+
"@nomicfoundation/hardhat-ethers-chai-matchers": "workspace:^3.0.4",
|
|
25
|
+
"@nomicfoundation/hardhat-ignition": "workspace:^3.1.1",
|
|
26
|
+
"@nomicfoundation/hardhat-ignition-ethers": "workspace:^3.1.1",
|
|
27
27
|
"@nomicfoundation/hardhat-keystore": "workspace:^3.0.5",
|
|
28
|
-
"@nomicfoundation/hardhat-mocha": "workspace:^3.0.
|
|
28
|
+
"@nomicfoundation/hardhat-mocha": "workspace:^3.0.15",
|
|
29
29
|
"@nomicfoundation/hardhat-network-helpers": "workspace:^3.0.4",
|
|
30
|
-
"@nomicfoundation/hardhat-typechain": "workspace:^3.0.
|
|
31
|
-
"@nomicfoundation/hardhat-verify": "workspace:^3.0.
|
|
32
|
-
"@nomicfoundation/ignition-core": "workspace:^3.1.
|
|
30
|
+
"@nomicfoundation/hardhat-typechain": "workspace:^3.0.5",
|
|
31
|
+
"@nomicfoundation/hardhat-verify": "workspace:^3.0.13",
|
|
32
|
+
"@nomicfoundation/ignition-core": "workspace:^3.1.1"
|
|
33
33
|
}
|
|
34
34
|
}
|