hardhat 3.9.0 → 3.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/src/config.d.ts.map +1 -1
  3. package/dist/src/config.js +6 -5
  4. package/dist/src/config.js.map +1 -1
  5. package/dist/src/hhu.d.ts +3 -0
  6. package/dist/src/hhu.d.ts.map +1 -0
  7. package/dist/src/hhu.js +14 -0
  8. package/dist/src/hhu.js.map +1 -0
  9. package/dist/src/internal/builtin-plugins/artifacts/hook-handlers/hre.d.ts.map +1 -1
  10. package/dist/src/internal/builtin-plugins/artifacts/hook-handlers/hre.js +4 -1
  11. package/dist/src/internal/builtin-plugins/artifacts/hook-handlers/hre.js.map +1 -1
  12. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.d.ts +2 -2
  13. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.d.ts.map +1 -1
  14. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js +21 -23
  15. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js.map +1 -1
  16. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.d.ts +2 -2
  17. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.d.ts.map +1 -1
  18. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js +21 -27
  19. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js.map +1 -1
  20. package/dist/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.d.ts +3 -1
  21. package/dist/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.d.ts.map +1 -1
  22. package/dist/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.js +18 -10
  23. package/dist/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.js.map +1 -1
  24. package/dist/src/internal/builtin-plugins/hhu/index.d.ts +4 -0
  25. package/dist/src/internal/builtin-plugins/hhu/index.d.ts.map +1 -0
  26. package/dist/src/internal/builtin-plugins/hhu/index.js +9 -0
  27. package/dist/src/internal/builtin-plugins/hhu/index.js.map +1 -0
  28. package/dist/src/internal/builtin-plugins/hhu/tasks/constants/index.d.ts +3 -0
  29. package/dist/src/internal/builtin-plugins/hhu/tasks/constants/index.d.ts.map +1 -0
  30. package/dist/src/internal/builtin-plugins/hhu/tasks/constants/index.js +8 -0
  31. package/dist/src/internal/builtin-plugins/hhu/tasks/constants/index.js.map +1 -0
  32. package/dist/src/internal/builtin-plugins/hhu/tasks/constants/zero-address.d.ts +4 -0
  33. package/dist/src/internal/builtin-plugins/hhu/tasks/constants/zero-address.d.ts.map +1 -0
  34. package/dist/src/internal/builtin-plugins/hhu/tasks/constants/zero-address.js +6 -0
  35. package/dist/src/internal/builtin-plugins/hhu/tasks/constants/zero-address.js.map +1 -0
  36. package/dist/src/internal/builtin-plugins/hhu/tasks/convert/index.d.ts +3 -0
  37. package/dist/src/internal/builtin-plugins/hhu/tasks/convert/index.d.ts.map +1 -0
  38. package/dist/src/internal/builtin-plugins/hhu/tasks/convert/index.js +27 -0
  39. package/dist/src/internal/builtin-plugins/hhu/tasks/convert/index.js.map +1 -0
  40. package/dist/src/internal/builtin-plugins/hhu/tasks/convert/pad.d.ts +10 -0
  41. package/dist/src/internal/builtin-plugins/hhu/tasks/convert/pad.d.ts.map +1 -0
  42. package/dist/src/internal/builtin-plugins/hhu/tasks/convert/pad.js +31 -0
  43. package/dist/src/internal/builtin-plugins/hhu/tasks/convert/pad.js.map +1 -0
  44. package/dist/src/internal/builtin-plugins/hhu/tasks/fetch/block-number.d.ts +4 -0
  45. package/dist/src/internal/builtin-plugins/hhu/tasks/fetch/block-number.d.ts.map +1 -0
  46. package/dist/src/internal/builtin-plugins/hhu/tasks/fetch/block-number.js +17 -0
  47. package/dist/src/internal/builtin-plugins/hhu/tasks/fetch/block-number.js.map +1 -0
  48. package/dist/src/internal/builtin-plugins/hhu/tasks/fetch/index.d.ts +3 -0
  49. package/dist/src/internal/builtin-plugins/hhu/tasks/fetch/index.d.ts.map +1 -0
  50. package/dist/src/internal/builtin-plugins/hhu/tasks/fetch/index.js +8 -0
  51. package/dist/src/internal/builtin-plugins/hhu/tasks/fetch/index.js.map +1 -0
  52. package/dist/src/internal/builtin-plugins/hhu/tasks/index.d.ts +11 -0
  53. package/dist/src/internal/builtin-plugins/hhu/tasks/index.d.ts.map +1 -0
  54. package/dist/src/internal/builtin-plugins/hhu/tasks/index.js +20 -0
  55. package/dist/src/internal/builtin-plugins/hhu/tasks/index.js.map +1 -0
  56. package/dist/src/internal/builtin-plugins/hhu/tasks/utils-task.d.ts +13 -0
  57. package/dist/src/internal/builtin-plugins/hhu/tasks/utils-task.d.ts.map +1 -0
  58. package/dist/src/internal/builtin-plugins/hhu/tasks/utils-task.js +17 -0
  59. package/dist/src/internal/builtin-plugins/hhu/tasks/utils-task.js.map +1 -0
  60. package/dist/src/internal/builtin-plugins/hhu/types.d.ts +45 -0
  61. package/dist/src/internal/builtin-plugins/hhu/types.d.ts.map +1 -0
  62. package/dist/src/internal/builtin-plugins/hhu/types.js +2 -0
  63. package/dist/src/internal/builtin-plugins/hhu/types.js.map +1 -0
  64. package/dist/src/internal/builtin-plugins/index.d.ts.map +1 -1
  65. package/dist/src/internal/builtin-plugins/index.js +5 -0
  66. package/dist/src/internal/builtin-plugins/index.js.map +1 -1
  67. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts +1 -0
  68. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts.map +1 -1
  69. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js +17 -0
  70. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js.map +1 -1
  71. package/dist/src/internal/builtin-plugins/network-manager/index.d.ts.map +1 -1
  72. package/dist/src/internal/builtin-plugins/network-manager/index.js +2 -10
  73. package/dist/src/internal/builtin-plugins/network-manager/index.js.map +1 -1
  74. package/dist/src/internal/builtin-plugins/network-manager/network-option.d.ts +9 -0
  75. package/dist/src/internal/builtin-plugins/network-manager/network-option.d.ts.map +1 -0
  76. package/dist/src/internal/builtin-plugins/network-manager/network-option.js +15 -0
  77. package/dist/src/internal/builtin-plugins/network-manager/network-option.js.map +1 -0
  78. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/automatic-sender-handler.d.ts +4 -2
  79. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/automatic-sender-handler.d.ts.map +1 -1
  80. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/automatic-sender-handler.js +28 -6
  81. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/automatic-sender-handler.js.map +1 -1
  82. package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts.map +1 -1
  83. package/dist/src/internal/builtin-plugins/solidity-test/config.js +1 -4
  84. package/dist/src/internal/builtin-plugins/solidity-test/config.js.map +1 -1
  85. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.d.ts.map +1 -1
  86. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js +3 -1
  87. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js.map +1 -1
  88. package/dist/src/internal/cli/help/get-global-help-string.d.ts +3 -1
  89. package/dist/src/internal/cli/help/get-global-help-string.d.ts.map +1 -1
  90. package/dist/src/internal/cli/help/get-global-help-string.js +3 -3
  91. package/dist/src/internal/cli/help/get-global-help-string.js.map +1 -1
  92. package/dist/src/internal/cli/help/get-help-string.d.ts +3 -1
  93. package/dist/src/internal/cli/help/get-help-string.d.ts.map +1 -1
  94. package/dist/src/internal/cli/help/get-help-string.js +4 -4
  95. package/dist/src/internal/cli/help/get-help-string.js.map +1 -1
  96. package/dist/src/internal/cli/help/utils.d.ts +3 -1
  97. package/dist/src/internal/cli/help/utils.d.ts.map +1 -1
  98. package/dist/src/internal/cli/help/utils.js +2 -2
  99. package/dist/src/internal/cli/help/utils.js.map +1 -1
  100. package/dist/src/internal/cli/hhu.d.ts +14 -0
  101. package/dist/src/internal/cli/hhu.d.ts.map +1 -0
  102. package/dist/src/internal/cli/hhu.js +184 -0
  103. package/dist/src/internal/cli/hhu.js.map +1 -0
  104. package/dist/src/internal/cli/main.d.ts +0 -25
  105. package/dist/src/internal/cli/main.d.ts.map +1 -1
  106. package/dist/src/internal/cli/main.js +23 -303
  107. package/dist/src/internal/cli/main.js.map +1 -1
  108. package/dist/src/internal/cli/parser.d.ts +25 -0
  109. package/dist/src/internal/cli/parser.d.ts.map +1 -0
  110. package/dist/src/internal/cli/parser.js +282 -0
  111. package/dist/src/internal/cli/parser.js.map +1 -0
  112. package/dist/src/internal/cli/telemetry/analytics/analytics.d.ts +1 -1
  113. package/dist/src/internal/cli/telemetry/analytics/analytics.d.ts.map +1 -1
  114. package/dist/src/internal/cli/telemetry/analytics/analytics.js +2 -1
  115. package/dist/src/internal/cli/telemetry/analytics/analytics.js.map +1 -1
  116. package/dist/src/internal/cli/telemetry/analytics/types.d.ts +1 -0
  117. package/dist/src/internal/cli/telemetry/analytics/types.d.ts.map +1 -1
  118. package/dist/src/internal/using-hardhat2-plugin-errors.d.ts +2 -2
  119. package/dist/src/internal/using-hardhat2-plugin-errors.d.ts.map +1 -1
  120. package/dist/src/internal/using-hardhat2-plugin-errors.js +7 -3
  121. package/dist/src/internal/using-hardhat2-plugin-errors.js.map +1 -1
  122. package/dist/src/plugins.d.ts.map +1 -1
  123. package/dist/src/plugins.js +3 -2
  124. package/dist/src/plugins.js.map +1 -1
  125. package/package.json +4 -4
  126. package/src/config.ts +17 -5
  127. package/src/hhu.ts +18 -0
  128. package/src/internal/builtin-plugins/artifacts/hook-handlers/hre.ts +11 -3
  129. package/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.ts +32 -32
  130. package/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.ts +32 -36
  131. package/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.ts +22 -9
  132. package/src/internal/builtin-plugins/hhu/index.ts +13 -0
  133. package/src/internal/builtin-plugins/hhu/tasks/constants/index.ts +18 -0
  134. package/src/internal/builtin-plugins/hhu/tasks/constants/zero-address.ts +9 -0
  135. package/src/internal/builtin-plugins/hhu/tasks/convert/index.ts +40 -0
  136. package/src/internal/builtin-plugins/hhu/tasks/convert/pad.ts +61 -0
  137. package/src/internal/builtin-plugins/hhu/tasks/fetch/block-number.ts +28 -0
  138. package/src/internal/builtin-plugins/hhu/tasks/fetch/index.ts +18 -0
  139. package/src/internal/builtin-plugins/hhu/tasks/index.ts +36 -0
  140. package/src/internal/builtin-plugins/hhu/tasks/utils-task.ts +29 -0
  141. package/src/internal/builtin-plugins/hhu/types.ts +57 -0
  142. package/src/internal/builtin-plugins/index.ts +6 -0
  143. package/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.ts +33 -0
  144. package/src/internal/builtin-plugins/network-manager/index.ts +3 -10
  145. package/src/internal/builtin-plugins/network-manager/network-option.ts +17 -0
  146. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/automatic-sender-handler.ts +39 -9
  147. package/src/internal/builtin-plugins/solidity-test/config.ts +1 -4
  148. package/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.ts +6 -1
  149. package/src/internal/cli/help/get-global-help-string.ts +3 -2
  150. package/src/internal/cli/help/get-help-string.ts +4 -3
  151. package/src/internal/cli/help/utils.ts +2 -1
  152. package/src/internal/cli/hhu.ts +298 -0
  153. package/src/internal/cli/main.ts +41 -495
  154. package/src/internal/cli/parser.ts +472 -0
  155. package/src/internal/cli/telemetry/analytics/analytics.ts +5 -1
  156. package/src/internal/cli/telemetry/analytics/types.ts +3 -0
  157. package/src/internal/using-hardhat2-plugin-errors.ts +12 -3
  158. package/src/plugins.ts +5 -2
  159. package/templates/hardhat-3/01-node-test-runner-viem/package.json +6 -6
  160. package/templates/hardhat-3/02-mocha-ethers/package.json +9 -9
  161. package/templates/hardhat-3/03-minimal/package.json +1 -1
@@ -0,0 +1,282 @@
1
+ import { HardhatError, assertHardhatInvariant, } from "@nomicfoundation/hardhat-errors";
2
+ import { isCi } from "@nomicfoundation/hardhat-utils/ci";
3
+ import { kebabToCamelCase } from "@nomicfoundation/hardhat-utils/string";
4
+ import { ArgumentType, } from "../../types/arguments.js";
5
+ import { parseArgumentValue } from "../core/arguments.js";
6
+ import { isArgumentRequired } from "../core/tasks/utils.js";
7
+ export async function parseBuiltinGlobalOptions(cliArguments, usedCliArguments) {
8
+ let configPath;
9
+ let showStackTraces = isCi();
10
+ let help = false;
11
+ let version = false;
12
+ let init = false;
13
+ // TODO: Use parseGlobalOptions(BUILTIN_GLOBAL_OPTIONS_DEFINITIONS, ...) instead
14
+ for (let i = 0; i < cliArguments.length; i++) {
15
+ const arg = cliArguments[i];
16
+ if (arg === "--init") {
17
+ usedCliArguments[i] = true;
18
+ init = true;
19
+ continue;
20
+ }
21
+ if (arg === "--config") {
22
+ usedCliArguments[i] = true;
23
+ if (configPath !== undefined) {
24
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.DUPLICATED_NAME, {
25
+ name: "--config",
26
+ });
27
+ }
28
+ if (usedCliArguments[i + 1] === undefined ||
29
+ usedCliArguments[i + 1] === true) {
30
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.MISSING_CONFIG_FILE);
31
+ }
32
+ configPath = cliArguments[i + 1];
33
+ i++;
34
+ usedCliArguments[i] = true;
35
+ continue;
36
+ }
37
+ if (arg === "--show-stack-traces") {
38
+ usedCliArguments[i] = true;
39
+ showStackTraces = true;
40
+ continue;
41
+ }
42
+ if (arg === "--help" || arg === "-h") {
43
+ usedCliArguments[i] = true;
44
+ help = true;
45
+ continue;
46
+ }
47
+ if (arg === "--version") {
48
+ usedCliArguments[i] = true;
49
+ version = true;
50
+ continue;
51
+ }
52
+ }
53
+ if (init && configPath !== undefined) {
54
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.CANNOT_COMBINE_INIT_AND_CONFIG_PATH);
55
+ }
56
+ return { init, configPath, showStackTraces, help, version };
57
+ }
58
+ export async function parseGlobalOptions(globalOptionDefinitions, cliArguments, usedCliArguments) {
59
+ const globalOptions = {};
60
+ const optionDefinitions = new Map([...globalOptionDefinitions].map(([key, value]) => [key, value.option]));
61
+ parseOptions(cliArguments, usedCliArguments, optionDefinitions, globalOptions, true);
62
+ return globalOptions;
63
+ }
64
+ /**
65
+ * Parses the task from the cli args.
66
+ *
67
+ * @returns The task, or an array with the unrecognized task id.
68
+ * If no task id is provided, an empty array is returned.
69
+ */
70
+ export function parseTask(cliArguments, usedCliArguments, tasksMap) {
71
+ const taskOrId = getTaskFromCliArguments(cliArguments, usedCliArguments, tasksMap);
72
+ return taskOrId;
73
+ }
74
+ function getTaskFromCliArguments(cliArguments, usedCliArguments, tasksMap) {
75
+ const taskId = [];
76
+ let task;
77
+ for (let i = 0; i < cliArguments.length; i++) {
78
+ if (usedCliArguments[i]) {
79
+ continue;
80
+ }
81
+ const arg = cliArguments[i];
82
+ if (arg.startsWith("-")) {
83
+ /* A standalone '--' is ok because it is used to separate CLI tool arguments
84
+ * from task arguments, ensuring the tool passes subsequent options directly
85
+ * to the task. Everything after "--" should be considered as a positional
86
+ * argument. */
87
+ if (arg === "--" || task !== undefined) {
88
+ break;
89
+ }
90
+ /* At this point in the code, the global options have already been parsed, so
91
+ * the remaining options starting with '--' are task options. Hence, if no task
92
+ * is defined, it means that the option is not assigned to any task, and it's
93
+ * an error. */
94
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.UNRECOGNIZED_OPTION, {
95
+ option: arg,
96
+ });
97
+ }
98
+ if (task === undefined) {
99
+ task = tasksMap.get(arg);
100
+ if (task === undefined) {
101
+ return [arg]; // No task found
102
+ }
103
+ }
104
+ else {
105
+ const subtask = task.subtasks.get(arg);
106
+ if (subtask === undefined) {
107
+ break;
108
+ }
109
+ task = subtask;
110
+ }
111
+ usedCliArguments[i] = true;
112
+ taskId.push(arg);
113
+ }
114
+ if (task === undefined) {
115
+ return taskId;
116
+ }
117
+ return task;
118
+ }
119
+ export function parseTaskArguments(cliArguments, usedCliArguments, task) {
120
+ const taskArguments = {};
121
+ // Parse options
122
+ parseOptions(cliArguments, usedCliArguments, task.options, taskArguments);
123
+ parsePositionalAndVariadicArguments(cliArguments, usedCliArguments, task, taskArguments);
124
+ const unusedIndex = usedCliArguments.indexOf(false);
125
+ if (unusedIndex !== -1) {
126
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.UNUSED_ARGUMENT, {
127
+ value: cliArguments[unusedIndex],
128
+ });
129
+ }
130
+ return taskArguments;
131
+ }
132
+ /**
133
+ * Parses the raw arguments from the command line, returning an array of
134
+ * arguments. If an argument starts with "--" and contains "=" (i.e. "--option=123")
135
+ * it is split into two separate arguments: the option name and the option value.
136
+ */
137
+ export function parseRawArguments(rawArguments) {
138
+ return rawArguments.flatMap((arg) => {
139
+ if (arg.startsWith("--") && arg.includes("=")) {
140
+ const index = arg.indexOf("=");
141
+ const optionName = arg.substring(0, index);
142
+ const optionValue = arg.substring(index + 1);
143
+ return [optionName, optionValue];
144
+ }
145
+ return arg;
146
+ });
147
+ }
148
+ function parseOptions(cliArguments, usedCliArguments, optionDefinitions, providedArguments, ignoreUnknownOption = false) {
149
+ const optionDefinitionsByShortName = new Map();
150
+ for (const optionDefinition of optionDefinitions.values()) {
151
+ if (optionDefinition.shortName !== undefined) {
152
+ optionDefinitionsByShortName.set(optionDefinition.shortName, optionDefinition);
153
+ }
154
+ }
155
+ for (let i = 0; i < cliArguments.length; i++) {
156
+ if (usedCliArguments[i]) {
157
+ continue;
158
+ }
159
+ if (cliArguments[i] === "--") {
160
+ /* A standalone '--' is ok because it is used to separate CLI tool arguments
161
+ * from task arguments, ensuring the tool passes subsequent options directly
162
+ * to the task. Everything after "--" should be considered as a positional
163
+ * argument. */
164
+ break;
165
+ }
166
+ const arg = cliArguments[i];
167
+ let optionDefinition;
168
+ const providedByName = arg.startsWith("--");
169
+ const providedByShortName = !providedByName && arg.startsWith("-");
170
+ if (providedByName) {
171
+ const name = kebabToCamelCase(arg.substring(2));
172
+ optionDefinition = optionDefinitions.get(name);
173
+ }
174
+ else if (providedByShortName) {
175
+ const shortName = arg[1];
176
+ // Check if the short name is valid
177
+ if (Array.from(arg.substring(1)).some((c) => c !== shortName)) {
178
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.CANNOT_GROUP_OPTIONS, {
179
+ option: arg,
180
+ });
181
+ }
182
+ optionDefinition = optionDefinitionsByShortName.get(shortName);
183
+ }
184
+ else {
185
+ continue;
186
+ }
187
+ if (optionDefinition === undefined) {
188
+ if (ignoreUnknownOption === true) {
189
+ continue;
190
+ }
191
+ // Only throw an error when the argument is not a global option, because
192
+ // it might be a option related to a task
193
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.UNRECOGNIZED_OPTION, {
194
+ option: arg,
195
+ });
196
+ }
197
+ if (optionDefinition.hidden === true) {
198
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.NO_HIDDEN_OPTION_CLI, {
199
+ option: arg,
200
+ });
201
+ }
202
+ const optionName = optionDefinition.name;
203
+ // Check if the short name is valid again now that we know its type
204
+ // E.g. --flag --flag
205
+ const optionAlreadyProvided = providedArguments[optionName] !== undefined;
206
+ // E.g. -ff
207
+ const shortOptionGroupedAndRepeated = providedByShortName && arg.length > 2;
208
+ const isLevelOption = optionDefinition.type === ArgumentType.LEVEL;
209
+ if (optionAlreadyProvided ||
210
+ (shortOptionGroupedAndRepeated && !isLevelOption)) {
211
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.CANNOT_REPEAT_OPTIONS, {
212
+ option: arg,
213
+ type: optionDefinition.type,
214
+ });
215
+ }
216
+ usedCliArguments[i] = true;
217
+ if (optionDefinition.type === ArgumentType.FLAG) {
218
+ providedArguments[optionName] = true;
219
+ continue;
220
+ }
221
+ else if (optionDefinition.type === ArgumentType.LEVEL &&
222
+ providedByShortName) {
223
+ providedArguments[optionName] = arg.length - 1;
224
+ continue;
225
+ }
226
+ else if (usedCliArguments[i + 1] !== undefined &&
227
+ usedCliArguments[i + 1] === false) {
228
+ i++;
229
+ providedArguments[optionName] = parseArgumentValue(cliArguments[i], optionDefinition.type, optionName);
230
+ usedCliArguments[i] = true;
231
+ continue;
232
+ }
233
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.MISSING_VALUE_FOR_ARGUMENT, {
234
+ argument: arg,
235
+ });
236
+ }
237
+ }
238
+ function parsePositionalAndVariadicArguments(cliArguments, usedCliArguments, task, providedArguments) {
239
+ let argIndex = 0;
240
+ for (let i = 0; i < cliArguments.length; i++) {
241
+ if (usedCliArguments[i] === true) {
242
+ continue;
243
+ }
244
+ if (cliArguments[i] === "--") {
245
+ /* A standalone '--' is ok because it is used to separate CLI tool arguments
246
+ * from task arguments, ensuring the tool passes subsequent options directly
247
+ * to the task. Everything after "--" should be considered as a positional
248
+ * argument. */
249
+ usedCliArguments[i] = true;
250
+ continue;
251
+ }
252
+ const argumentDefinition = task.positionalArguments[argIndex];
253
+ if (argumentDefinition === undefined) {
254
+ break;
255
+ }
256
+ usedCliArguments[i] = true;
257
+ const formattedValue = parseArgumentValue(cliArguments[i], argumentDefinition.type, argumentDefinition.name);
258
+ if (argumentDefinition.isVariadic === false) {
259
+ providedArguments[argumentDefinition.name] = formattedValue;
260
+ argIndex++;
261
+ continue;
262
+ }
263
+ // Handle variadic arguments. No longer increment "argIndex" because there can
264
+ // only be one variadic argument, and it will consume all remaining arguments.
265
+ providedArguments[argumentDefinition.name] =
266
+ providedArguments[argumentDefinition.name] ?? [];
267
+ const variadicTaskArg = providedArguments[argumentDefinition.name];
268
+ assertHardhatInvariant(Array.isArray(variadicTaskArg), "Variadic argument values should be an array");
269
+ variadicTaskArg.push(formattedValue);
270
+ }
271
+ // Check if all the required arguments have been used
272
+ validateRequiredArguments(task.positionalArguments, providedArguments);
273
+ }
274
+ function validateRequiredArguments(argumentDefinitions, taskArguments) {
275
+ const missingRequiredArgument = argumentDefinitions.find(({ defaultValue, name, type }) => isArgumentRequired(type, defaultValue) &&
276
+ taskArguments[name] === undefined);
277
+ if (missingRequiredArgument === undefined) {
278
+ return;
279
+ }
280
+ throw new HardhatError(HardhatError.ERRORS.CORE.ARGUMENTS.MISSING_VALUE_FOR_ARGUMENT, { argument: missingRequiredArgument.name });
281
+ }
282
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/internal/cli/parser.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export declare function sendTelemetryConfigAnalytics(enabled: boolean): Promise<boolean>;
2
- export declare function sendTaskAnalytics(taskId: string[]): Promise<boolean>;
2
+ export declare function sendTaskAnalytics(taskId: string[], command: "hardhat" | "hhu"): Promise<boolean>;
3
3
  export declare function sendProjectTypeAnalytics(hardhatVersion: "hardhat-2" | "hardhat-3", template: string): Promise<boolean>;
4
4
  //# sourceMappingURL=analytics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/cli/telemetry/analytics/analytics.ts"],"names":[],"mappings":"AAyBA,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAyBlB;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAS1E;AAED,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,WAAW,GAAG,WAAW,EACzC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAUlB"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/cli/telemetry/analytics/analytics.ts"],"names":[],"mappings":"AAyBA,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAyBlB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,SAAS,GAAG,KAAK,GACzB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,WAAW,GAAG,WAAW,EACzC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAUlB"}
@@ -30,11 +30,12 @@ export async function sendTelemetryConfigAnalytics(enabled) {
30
30
  await createSubprocessToSendAnalytics(payload);
31
31
  return true;
32
32
  }
33
- export async function sendTaskAnalytics(taskId) {
33
+ export async function sendTaskAnalytics(taskId, command) {
34
34
  const taskAnalyticsEvent = {
35
35
  name: "task",
36
36
  params: {
37
37
  task: taskId.join(", "),
38
+ command,
38
39
  },
39
40
  };
40
41
  return await sendAnalytics(taskAnalyticsEvent);
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../../../../src/internal/cli/telemetry/analytics/analytics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../../../../src/internal/cli/telemetry/analytics/analytics.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ export type AnalyticsEvent = {
28
28
  name: "task";
29
29
  params: {
30
30
  task: string;
31
+ command: "hardhat" | "hhu";
31
32
  };
32
33
  } | {
33
34
  name: "init";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/cli/telemetry/analytics/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAGD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE;YAKN,oBAAoB,CAAC,EAAE,MAAM,CAAC;YAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,iBAAiB,CAAC;QACxB,MAAM,EAAE;YACN,OAAO,EAAE,OAAO,CAAC;YACjB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC,CAAC;CACJ;AAED,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC;QAC1C,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEN,MAAM,WAAW,OAAQ,SAAQ,WAAW;IAC1C,eAAe,EAAE;QACf,SAAS,EAAE;YACT,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,cAAc,EAAE;YACd,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,eAAe,EAAE;YACf,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,WAAW,EAAE;YACX,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IACF,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,EAAE;YACN,oBAAoB,EAAE,MAAM,CAAC;YAC7B,UAAU,EAAE,MAAM,CAAC;SACpB,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;KAC9B,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/cli/telemetry/analytics/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAGD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE;YAKN,oBAAoB,CAAC,EAAE,MAAM,CAAC;YAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,iBAAiB,CAAC;QACxB,MAAM,EAAE;YACN,OAAO,EAAE,OAAO,CAAC;YACjB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC,CAAC;CACJ;AAED,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QAGb,OAAO,EAAE,SAAS,GAAG,KAAK,CAAC;KAC5B,CAAC;CACH,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC;QAC1C,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEN,MAAM,WAAW,OAAQ,SAAQ,WAAW;IAC1C,eAAe,EAAE;QACf,SAAS,EAAE;YACT,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,cAAc,EAAE;YACd,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,eAAe,EAAE;YACf,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,WAAW,EAAE;YACX,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IACF,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,EAAE;YACN,oBAAoB,EAAE,MAAM,CAAC;YAC7B,UAAU,EAAE,MAAM,CAAC;SACpB,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;KAC9B,CAAC,CAAC;CACJ"}
@@ -1,7 +1,7 @@
1
1
  import { CustomError } from "@nomicfoundation/hardhat-utils/error";
2
2
  export declare class UsingHardhat2PluginError extends CustomError {
3
3
  readonly callerRelativePath: string | undefined;
4
- constructor();
4
+ constructor(apiName: string, migrationHint?: string);
5
5
  }
6
6
  /**
7
7
  * Returns the relative path of the file that called a deprecated Hardhat
@@ -31,5 +31,5 @@ export declare class UsingHardhat2PluginError extends CustomError {
31
31
  * Calling getCallerRelativePath() returns 'plugins/example-plugin/index.js'
32
32
  */
33
33
  export declare function getCallerRelativePath(depth?: number): string | undefined;
34
- export declare function throwUsingHardhat2PluginError(): never;
34
+ export declare function throwUsingHardhat2PluginError(apiName: string, migrationHint?: string): never;
35
35
  //# sourceMappingURL=using-hardhat2-plugin-errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"using-hardhat2-plugin-errors.d.ts","sourceRoot":"","sources":["../../../src/internal/using-hardhat2-plugin-errors.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE,qBAAa,wBAAyB,SAAQ,WAAW;IACvD,SAAgB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;;CAqBxD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,MAAU,GAAG,MAAM,GAAG,SAAS,CAyC3E;AAED,wBAAgB,6BAA6B,IAAI,KAAK,CAIrD"}
1
+ {"version":3,"file":"using-hardhat2-plugin-errors.d.ts","sourceRoot":"","sources":["../../../src/internal/using-hardhat2-plugin-errors.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE,qBAAa,wBAAyB,SAAQ,WAAW;IACvD,SAAgB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;gBAC3C,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;CA0BpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,MAAU,GAAG,MAAM,GAAG,SAAS,CAyC3E;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,KAAK,CAIP"}
@@ -4,7 +4,7 @@ import { CustomError } from "@nomicfoundation/hardhat-utils/error";
4
4
  import { shortenPath } from "@nomicfoundation/hardhat-utils/path";
5
5
  export class UsingHardhat2PluginError extends CustomError {
6
6
  callerRelativePath;
7
- constructor() {
7
+ constructor(apiName, migrationHint) {
8
8
  const callerPath = getCallerRelativePath();
9
9
  let message;
10
10
  if (callerPath !== undefined) {
@@ -15,6 +15,10 @@ This file is part of a Hardhat 2 plugin calling an API that was removed in Hardh
15
15
  else {
16
16
  message = `You are trying to use a Hardhat 2 plugin in a Hardhat 3 project.`;
17
17
  }
18
+ message += `\n\nThe removed API is: ${styleText("bold", apiName)}.`;
19
+ if (migrationHint !== undefined) {
20
+ message += `\n\n${migrationHint}`;
21
+ }
18
22
  super(message);
19
23
  // Use a non-enumerable property so that `console.error(error)` does not
20
24
  // print `{ callerRelativePath: '…' }` after the stack trace.
@@ -87,9 +91,9 @@ export function getCallerRelativePath(depth = 5) {
87
91
  return undefined;
88
92
  }
89
93
  }
90
- export function throwUsingHardhat2PluginError() {
94
+ export function throwUsingHardhat2PluginError(apiName, migrationHint) {
91
95
  /* eslint-disable-next-line no-restricted-syntax -- Intentionally throwing a
92
96
  custom error here so that we always print the stack trace */
93
- throw new UsingHardhat2PluginError();
97
+ throw new UsingHardhat2PluginError(apiName, migrationHint);
94
98
  }
95
99
  //# sourceMappingURL=using-hardhat2-plugin-errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"using-hardhat2-plugin-errors.js","sourceRoot":"","sources":["../../../src/internal/using-hardhat2-plugin-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACvC,kBAAkB,CAAqB;IACvD;QACE,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAE3C,IAAI,OAAe,CAAC;QACpB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,GAAG;;wFAEwE,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QACpH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,kEAAkE,CAAC;QAC/E,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,wEAAwE;QACxE,6DAA6D;QAC7D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE;YAChD,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED;;;;;;;;WAQG;QACH,MAAM,sBAAsB,GAC1B,iDAAiD,CAAC;QAEpD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAExB,4CAA4C;QAC5C,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C;kEAC8D;IAC9D,MAAM,IAAI,wBAAwB,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"using-hardhat2-plugin-errors.js","sourceRoot":"","sources":["../../../src/internal/using-hardhat2-plugin-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACvC,kBAAkB,CAAqB;IACvD,YAAY,OAAe,EAAE,aAAsB;QACjD,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAE3C,IAAI,OAAe,CAAC;QACpB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,GAAG;;wFAEwE,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QACpH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,kEAAkE,CAAC;QAC/E,CAAC;QAED,OAAO,IAAI,2BAA2B,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC;QAEpE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,IAAI,OAAO,aAAa,EAAE,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,wEAAwE;QACxE,6DAA6D;QAC7D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE;YAChD,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED;;;;;;;;WAQG;QACH,MAAM,sBAAsB,GAC1B,iDAAiD,CAAC;QAEpD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAExB,4CAA4C;QAC5C,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAe,EACf,aAAsB;IAEtB;kEAC8D;IAC9D,MAAM,IAAI,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAGjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,CAE7C"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAGjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,CAE7C"}
@@ -1,6 +1,7 @@
1
1
  export { HardhatPluginError } from "@nomicfoundation/hardhat-errors";
2
2
  import { registerLoadedPlugin } from "./internal/core/plugins/loaded-plugins-registry.js";
3
3
  import { throwUsingHardhat2PluginError } from "./internal/using-hardhat2-plugin-errors.js";
4
+ const LAZY_LOADING_MIGRATION_HINT = "To migrate a plugin to Hardhat 3, export a plugin object with definePlugin from hardhat/plugins and register lazy-loaded logic through dependencies, hook handlers, and task actions.";
4
5
  /**
5
6
  * Defines a Hardhat plugin.
6
7
  *
@@ -20,12 +21,12 @@ export function definePlugin(plugin) {
20
21
  * @deprecated This function is part of the Hardhat 2 plugin API.
21
22
  */
22
23
  export function lazyFunction(..._args) {
23
- throwUsingHardhat2PluginError();
24
+ throwUsingHardhat2PluginError("lazyFunction", LAZY_LOADING_MIGRATION_HINT);
24
25
  }
25
26
  /**
26
27
  * @deprecated This function is part of the Hardhat 2 plugin API.
27
28
  */
28
29
  export function lazyObject(..._args) {
29
- throwUsingHardhat2PluginError();
30
+ throwUsingHardhat2PluginError("lazyObject", LAZY_LOADING_MIGRATION_HINT);
30
31
  }
31
32
  //# sourceMappingURL=plugins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAIrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC1F,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAE3F;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAG,KAAU;IACxC,6BAA6B,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAG,KAAU;IACtC,6BAA6B,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAIrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC1F,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAE3F,MAAM,2BAA2B,GAC/B,uLAAuL,CAAC;AAE1L;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAG,KAAU;IACxC,6BAA6B,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAG,KAAU;IACtC,6BAA6B,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;AAC3E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hardhat",
3
- "version": "3.9.0",
3
+ "version": "3.9.1",
4
4
  "description": "Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.",
5
5
  "homepage": "https://hardhat.org",
6
6
  "repository": {
@@ -77,9 +77,9 @@
77
77
  "@nomicfoundation/hardhat-test-utils": "^2.0.3"
78
78
  },
79
79
  "dependencies": {
80
- "@nomicfoundation/edr": "0.12.0",
81
- "@nomicfoundation/hardhat-errors": "^3.0.15",
82
- "@nomicfoundation/hardhat-utils": "^4.1.3",
80
+ "@nomicfoundation/edr": "0.12.1",
81
+ "@nomicfoundation/hardhat-errors": "^3.0.16",
82
+ "@nomicfoundation/hardhat-utils": "^4.1.4",
83
83
  "@nomicfoundation/hardhat-vendored": "^3.0.4",
84
84
  "@nomicfoundation/hardhat-zod-utils": "^3.0.5",
85
85
  "@nomicfoundation/solidity-analyzer": "^0.1.1",
package/src/config.ts CHANGED
@@ -7,6 +7,9 @@ import type { HardhatUserConfig } from "./types/config.js";
7
7
 
8
8
  import { throwUsingHardhat2PluginError } from "./internal/using-hardhat2-plugin-errors.js";
9
9
 
10
+ const DEFINE_PLUGIN_MIGRATION_HINT =
11
+ "To migrate a plugin to Hardhat 3, export a plugin object with definePlugin from hardhat/plugins and register hook handlers in its hookHandlers field.";
12
+
10
13
  /**
11
14
  * Defines a Hardhat user config.
12
15
  *
@@ -42,33 +45,42 @@ export function defineConfig(config: HardhatUserConfig): HardhatUserConfig {
42
45
  * @deprecated This function is part of the Hardhat 2 plugin API.
43
46
  */
44
47
  export function extendConfig(..._args: any): any {
45
- throwUsingHardhat2PluginError();
48
+ throwUsingHardhat2PluginError("extendConfig", DEFINE_PLUGIN_MIGRATION_HINT);
46
49
  }
47
50
 
48
51
  /**
49
52
  * @deprecated This function is part of the Hardhat 2 plugin API.
50
53
  */
51
54
  export function extendEnvironment(..._args: any): any {
52
- throwUsingHardhat2PluginError();
55
+ throwUsingHardhat2PluginError(
56
+ "extendEnvironment",
57
+ DEFINE_PLUGIN_MIGRATION_HINT,
58
+ );
53
59
  }
54
60
 
55
61
  /**
56
62
  * @deprecated This function is part of the Hardhat 2 plugin API.
57
63
  */
58
64
  export function extendProvider(..._args: any): any {
59
- throwUsingHardhat2PluginError();
65
+ throwUsingHardhat2PluginError("extendProvider", DEFINE_PLUGIN_MIGRATION_HINT);
60
66
  }
61
67
 
62
68
  /**
63
69
  * @deprecated This function is part of the Hardhat 2 plugin API.
64
70
  */
65
71
  export function scope(..._args: any): any {
66
- throwUsingHardhat2PluginError();
72
+ throwUsingHardhat2PluginError(
73
+ "scope",
74
+ "To migrate tasks to Hardhat 3, define them with task or emptyTask from hardhat/config and include them in a plugin exported with definePlugin from hardhat/plugins.",
75
+ );
67
76
  }
68
77
 
69
78
  /**
70
79
  * @deprecated This function is part of the Hardhat 2 plugin API.
71
80
  */
72
81
  export function subtask(..._args: any): any {
73
- throwUsingHardhat2PluginError();
82
+ throwUsingHardhat2PluginError(
83
+ "subtask",
84
+ "To migrate subtasks to Hardhat 3, define them as nested tasks with task or emptyTask from hardhat/config and include them in a plugin exported with definePlugin from hardhat/plugins.",
85
+ );
74
86
  }
package/src/hhu.ts ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { exitIfNodeVersionNotSupported } from "./internal/cli/node-version.js";
4
+
5
+ // We enable the sourcemaps before loading main, so that everything except this
6
+ // small file is loaded with sourcemaps enabled.
7
+ process.setSourceMapsEnabled(true);
8
+
9
+ // We check the Node.js version before loading main, so that if there is some
10
+ // unsupported js syntax or Node API elsewhere, we get to exit with a clear
11
+ // error before crashing.
12
+ exitIfNodeVersionNotSupported();
13
+
14
+ // eslint-disable-next-line no-restricted-syntax -- Allow top-level await here
15
+ const { main } = await import("./internal/cli/hhu.js");
16
+
17
+ // eslint-disable-next-line no-restricted-syntax -- We do want TLA here
18
+ await main(process.argv.slice(2));
@@ -4,6 +4,11 @@ import type {
4
4
  StringWithArtifactContractNamesAutocompletion,
5
5
  } from "../../../../types/artifacts.js";
6
6
  import type { HardhatRuntimeEnvironmentHooks } from "../../../../types/hooks.js";
7
+ import type { ArtifactManagerImplementation as ArtifactManagerImplementationT } from "../artifact-manager.js";
8
+
9
+ let ArtifactManagerImplementation:
10
+ | typeof ArtifactManagerImplementationT
11
+ | undefined;
7
12
 
8
13
  class LazyArtifactManager implements ArtifactManager {
9
14
  readonly #artifactsPath: string;
@@ -85,10 +90,13 @@ class LazyArtifactManager implements ArtifactManager {
85
90
  }
86
91
 
87
92
  async #getArtifactManager(): Promise<ArtifactManager> {
88
- if (this.#artifactManager === undefined) {
89
- const { ArtifactManagerImplementation } = await import(
93
+ if (ArtifactManagerImplementation === undefined) {
94
+ ({ ArtifactManagerImplementation } = await import(
90
95
  "../artifact-manager.js"
91
- );
96
+ ));
97
+ }
98
+
99
+ if (this.#artifactManager === undefined) {
92
100
  this.#artifactManager = new ArtifactManagerImplementation(
93
101
  this.#artifactsPath,
94
102
  );