hardhat 3.1.8 → 3.1.10

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 (146) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/src/config.d.ts +20 -0
  3. package/dist/src/config.d.ts.map +1 -1
  4. package/dist/src/config.js +31 -0
  5. package/dist/src/config.js.map +1 -1
  6. package/dist/src/internal/builtin-plugins/coverage/coverage-manager.d.ts.map +1 -1
  7. package/dist/src/internal/builtin-plugins/coverage/coverage-manager.js +33 -21
  8. package/dist/src/internal/builtin-plugins/coverage/coverage-manager.js.map +1 -1
  9. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.d.ts.map +1 -1
  10. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js +7 -8
  11. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js.map +1 -1
  12. package/dist/src/internal/builtin-plugins/coverage/instrumentation.d.ts +27 -0
  13. package/dist/src/internal/builtin-plugins/coverage/instrumentation.d.ts.map +1 -0
  14. package/dist/src/internal/builtin-plugins/coverage/instrumentation.js +27 -0
  15. package/dist/src/internal/builtin-plugins/coverage/instrumentation.js.map +1 -0
  16. package/dist/src/internal/builtin-plugins/flatten/task-action.d.ts.map +1 -1
  17. package/dist/src/internal/builtin-plugins/flatten/task-action.js +1 -1
  18. package/dist/src/internal/builtin-plugins/flatten/task-action.js.map +1 -1
  19. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts +0 -1
  20. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts.map +1 -1
  21. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js +4 -8
  22. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js.map +1 -1
  23. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/config.d.ts.map +1 -1
  24. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/config.js +58 -20
  25. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/config.js.map +1 -1
  26. package/dist/src/internal/builtin-plugins/network-manager/type-validation.d.ts.map +1 -1
  27. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js +8 -0
  28. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js.map +1 -1
  29. package/dist/src/internal/builtin-plugins/node/task-action.d.ts.map +1 -1
  30. package/dist/src/internal/builtin-plugins/node/task-action.js +1 -2
  31. package/dist/src/internal/builtin-plugins/node/task-action.js.map +1 -1
  32. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
  33. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +1 -1
  34. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
  35. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.d.ts +0 -3
  36. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.d.ts.map +1 -1
  37. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js +8 -10
  38. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js.map +1 -1
  39. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.d.ts +2 -1
  40. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.d.ts.map +1 -1
  41. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.js +4 -2
  42. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.js.map +1 -1
  43. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.d.ts +3 -1
  44. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.d.ts.map +1 -1
  45. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.js +8 -2
  46. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.js.map +1 -1
  47. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/error-messages.d.ts.map +1 -1
  48. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/error-messages.js +19 -5
  49. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/error-messages.js.map +1 -1
  50. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.d.ts +8 -1
  51. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.d.ts.map +1 -1
  52. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.js +54 -20
  53. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.js.map +1 -1
  54. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts +22 -0
  55. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts.map +1 -1
  56. package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts.map +1 -1
  57. package/dist/src/internal/builtin-plugins/solidity-test/config.js +1 -0
  58. package/dist/src/internal/builtin-plugins/solidity-test/config.js.map +1 -1
  59. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts +1 -0
  60. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts.map +1 -1
  61. package/dist/src/internal/cli/error-handler.d.ts.map +1 -1
  62. package/dist/src/internal/cli/error-handler.js +15 -0
  63. package/dist/src/internal/cli/error-handler.js.map +1 -1
  64. package/dist/src/internal/cli/telemetry/sentry/reporter.d.ts.map +1 -1
  65. package/dist/src/internal/cli/telemetry/sentry/reporter.js +4 -0
  66. package/dist/src/internal/cli/telemetry/sentry/reporter.js.map +1 -1
  67. package/dist/src/internal/cli/telemetry/sentry/transport.js +1 -0
  68. package/dist/src/internal/cli/telemetry/sentry/transport.js.map +1 -1
  69. package/dist/src/internal/core/config-validation.d.ts +3 -3
  70. package/dist/src/internal/core/config-validation.d.ts.map +1 -1
  71. package/dist/src/internal/core/config-validation.js +48 -18
  72. package/dist/src/internal/core/config-validation.js.map +1 -1
  73. package/dist/src/internal/core/tasks/builders.d.ts +26 -16
  74. package/dist/src/internal/core/tasks/builders.d.ts.map +1 -1
  75. package/dist/src/internal/core/tasks/builders.js +65 -6
  76. package/dist/src/internal/core/tasks/builders.js.map +1 -1
  77. package/dist/src/internal/core/tasks/resolved-task.d.ts +2 -2
  78. package/dist/src/internal/core/tasks/resolved-task.d.ts.map +1 -1
  79. package/dist/src/internal/core/tasks/resolved-task.js +23 -9
  80. package/dist/src/internal/core/tasks/resolved-task.js.map +1 -1
  81. package/dist/src/internal/core/tasks/task-manager.d.ts.map +1 -1
  82. package/dist/src/internal/core/tasks/task-manager.js +14 -6
  83. package/dist/src/internal/core/tasks/task-manager.js.map +1 -1
  84. package/dist/src/internal/core/tasks/validations.d.ts +2 -0
  85. package/dist/src/internal/core/tasks/validations.d.ts.map +1 -1
  86. package/dist/src/internal/core/tasks/validations.js +11 -0
  87. package/dist/src/internal/core/tasks/validations.js.map +1 -1
  88. package/dist/src/internal/deprecated-module-imported-from-hardhat2-plugin.d.ts +2 -0
  89. package/dist/src/internal/deprecated-module-imported-from-hardhat2-plugin.d.ts.map +1 -0
  90. package/dist/src/internal/deprecated-module-imported-from-hardhat2-plugin.js +12 -0
  91. package/dist/src/internal/deprecated-module-imported-from-hardhat2-plugin.js.map +1 -0
  92. package/dist/src/internal/using-hardhat2-plugin-errors.d.ts +35 -0
  93. package/dist/src/internal/using-hardhat2-plugin-errors.d.ts.map +1 -0
  94. package/dist/src/internal/using-hardhat2-plugin-errors.js +98 -0
  95. package/dist/src/internal/using-hardhat2-plugin-errors.js.map +1 -0
  96. package/dist/src/plugins.d.ts +8 -0
  97. package/dist/src/plugins.d.ts.map +1 -1
  98. package/dist/src/plugins.js +13 -0
  99. package/dist/src/plugins.js.map +1 -1
  100. package/dist/src/types/index.d.ts +15 -0
  101. package/dist/src/types/index.d.ts.map +1 -0
  102. package/dist/src/types/index.js +15 -0
  103. package/dist/src/types/index.js.map +1 -0
  104. package/dist/src/types/plugins.d.ts +2 -2
  105. package/dist/src/types/solidity/errors.d.ts +18 -0
  106. package/dist/src/types/solidity/errors.d.ts.map +1 -1
  107. package/dist/src/types/solidity/errors.js.map +1 -1
  108. package/dist/src/types/tasks.d.ts +95 -34
  109. package/dist/src/types/tasks.d.ts.map +1 -1
  110. package/package.json +10 -6
  111. package/src/config.ts +37 -0
  112. package/src/internal/builtin-plugins/coverage/coverage-manager.ts +57 -50
  113. package/src/internal/builtin-plugins/coverage/hook-handlers/solidity.ts +6 -17
  114. package/src/internal/builtin-plugins/coverage/instrumentation.ts +52 -0
  115. package/src/internal/builtin-plugins/flatten/task-action.ts +1 -0
  116. package/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts +6 -11
  117. package/src/internal/builtin-plugins/network-manager/hook-handlers/config.ts +65 -21
  118. package/src/internal/builtin-plugins/network-manager/type-validation.ts +9 -0
  119. package/src/internal/builtin-plugins/node/task-action.ts +2 -2
  120. package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +1 -0
  121. package/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.ts +14 -11
  122. package/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.ts +23 -1
  123. package/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.ts +16 -2
  124. package/src/internal/builtin-plugins/solidity/build-system/resolver/error-messages.ts +19 -5
  125. package/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.ts +103 -29
  126. package/src/internal/builtin-plugins/solidity/type-extensions.ts +28 -0
  127. package/src/internal/builtin-plugins/solidity-test/config.ts +1 -0
  128. package/src/internal/builtin-plugins/solidity-test/type-extensions.ts +1 -0
  129. package/src/internal/cli/error-handler.ts +18 -0
  130. package/src/internal/cli/telemetry/sentry/reporter.ts +5 -0
  131. package/src/internal/cli/telemetry/sentry/transport.ts +1 -0
  132. package/src/internal/core/config-validation.ts +67 -18
  133. package/src/internal/core/tasks/builders.ts +174 -30
  134. package/src/internal/core/tasks/resolved-task.ts +31 -13
  135. package/src/internal/core/tasks/task-manager.ts +23 -5
  136. package/src/internal/core/tasks/validations.ts +40 -0
  137. package/src/internal/deprecated-module-imported-from-hardhat2-plugin.ts +12 -0
  138. package/src/internal/using-hardhat2-plugin-errors.ts +108 -0
  139. package/src/plugins.ts +16 -0
  140. package/src/types/index.ts +14 -0
  141. package/src/types/plugins.ts +2 -2
  142. package/src/types/solidity/errors.ts +22 -0
  143. package/src/types/tasks.ts +133 -36
  144. package/templates/hardhat-3/01-node-test-runner-viem/package.json +10 -10
  145. package/templates/hardhat-3/02-mocha-ethers/package.json +16 -16
  146. package/templates/hardhat-3/03-minimal/package.json +1 -1
@@ -48,6 +48,20 @@ export declare enum TaskDefinitionType {
48
48
  NEW_TASK = "NEW_TASK",
49
49
  TASK_OVERRIDE = "TASK_OVERRIDE"
50
50
  }
51
+ export type TaskAction = {
52
+ action: LazyActionObject<NewTaskActionFunction>;
53
+ inlineAction?: never;
54
+ } | {
55
+ inlineAction: NewTaskActionFunction;
56
+ action?: never;
57
+ };
58
+ export type TaskOverrideAction = {
59
+ action: LazyActionObject<TaskOverrideActionFunction>;
60
+ inlineAction?: never;
61
+ } | {
62
+ inlineAction: TaskOverrideActionFunction;
63
+ action?: never;
64
+ };
51
65
  /**
52
66
  * Empty task definition. It is meant to be used as a placeholder task that only
53
67
  * prints information about its subtasks.
@@ -62,26 +76,32 @@ export interface EmptyTaskDefinition {
62
76
  description: string;
63
77
  }
64
78
  /**
65
- * The definition of a new task.
79
+ * The base definition of a new task.
66
80
  */
67
- export interface NewTaskDefinition {
81
+ export interface BaseTaskDefinition {
68
82
  type: TaskDefinitionType.NEW_TASK;
69
83
  id: string[];
70
84
  description: string;
71
- action: LazyActionObject<NewTaskActionFunction>;
72
85
  options: Record<string, OptionDefinition>;
73
86
  positionalArguments: PositionalArgumentDefinition[];
74
87
  }
75
88
  /**
76
- * An override of an existing task.
89
+ * The definition of a new task.
77
90
  */
78
- export interface TaskOverrideDefinition {
91
+ export type NewTaskDefinition = BaseTaskDefinition & TaskAction;
92
+ /**
93
+ * The base definition of an override of an existing task.
94
+ */
95
+ export interface BaseTaskOverrideDefinition {
79
96
  type: TaskDefinitionType.TASK_OVERRIDE;
80
97
  id: string[];
81
98
  description?: string;
82
- action: LazyActionObject<TaskOverrideActionFunction>;
83
99
  options: Record<string, OptionDefinition>;
84
100
  }
101
+ /**
102
+ * An override of an existing task.
103
+ */
104
+ export type TaskOverrideDefinition = BaseTaskOverrideDefinition & TaskOverrideAction;
85
105
  /**
86
106
  * The definition of a task, as used in the plugins and user config. They are
87
107
  * declarative descriptions of the task, which are later processed to create the
@@ -103,8 +123,11 @@ export interface EmptyTaskDefinitionBuilder {
103
123
  }
104
124
  /**
105
125
  * A builder for creating NewTaskDefinitions.
126
+ *
127
+ * @template TaskArgumentsT The arguments of the task.
128
+ * @template ActionTypeT Tracks if the action is "LAZY_ACTION" (Plugin Safe) or "INLINE_ACTION".
106
129
  */
107
- export interface NewTaskDefinitionBuilder<TaskArgumentsT extends TaskArguments = TaskArguments> {
130
+ export interface NewTaskDefinitionBuilder<TaskArgumentsT extends TaskArguments = TaskArguments, ActionTypeT extends "LAZY_ACTION" | "INLINE_ACTION" | "MISSING_ACTION" = "MISSING_ACTION"> {
108
131
  /**
109
132
  * Sets the description of the task.
110
133
  */
@@ -112,13 +135,33 @@ export interface NewTaskDefinitionBuilder<TaskArgumentsT extends TaskArguments =
112
135
  /**
113
136
  * Sets the action of the task.
114
137
  *
115
- * It can be provided as a function, or as a `file://` URL pointing to a file
116
- * that exports a default NewTaskActionFunction.
138
+ * It must be provided as a lazy import function that returns a module with
139
+ * a default export, like `() => import("./my-action.js")`.
117
140
  *
118
- * Note that plugins can only use the inline function form for development
119
- * purposes.
141
+ * Note that plugins cannot use inline actions (see {@link setInlineAction}).
142
+ * They must use this method with a lazy import.
143
+ *
144
+ * @remarks
145
+ * This method can only be called once per task definition. Calling it multiple
146
+ * times will result in a runtime error.
147
+ *
148
+ * This method cannot be used together with {@link setInlineAction} on the same
149
+ * task. Use one or the other.
150
+ */
151
+ setAction(action: LazyActionObject<NewTaskActionFunction<TaskArgumentsT>>): NewTaskDefinitionBuilder<TaskArgumentsT, "LAZY_ACTION">;
152
+ /**
153
+ * Sets the inline action of the task.
154
+ *
155
+ * It must be provided as a function.
156
+ *
157
+ * @remarks
158
+ * This method can only be called once per task definition. Calling it multiple
159
+ * times will result in a runtime error.
160
+ *
161
+ * This method cannot be used together with {@link setAction} on the same
162
+ * task. Use one or the other.
120
163
  */
121
- setAction(action: LazyActionObject<NewTaskActionFunction<TaskArgumentsT>>): this;
164
+ setInlineAction(inlineAction: NewTaskActionFunction<TaskArgumentsT>): NewTaskDefinitionBuilder<TaskArgumentsT, "INLINE_ACTION">;
122
165
  /**
123
166
  * Adds an option to the task.
124
167
  *
@@ -135,7 +178,7 @@ export interface NewTaskDefinitionBuilder<TaskArgumentsT extends TaskArguments =
135
178
  type?: TypeT;
136
179
  defaultValue: ArgumentTypeToValueType<TypeT>;
137
180
  hidden?: boolean;
138
- }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, TypeT, TaskArgumentsT>>;
181
+ }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, TypeT, TaskArgumentsT>, ActionTypeT>;
139
182
  /**
140
183
  * Adds an option of flag type and default value false.
141
184
  */
@@ -144,7 +187,7 @@ export interface NewTaskDefinitionBuilder<TaskArgumentsT extends TaskArguments =
144
187
  shortName?: string;
145
188
  description?: string;
146
189
  hidden?: boolean;
147
- }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, ArgumentType.FLAG, TaskArgumentsT>>;
190
+ }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, ArgumentType.FLAG, TaskArgumentsT>, ActionTypeT>;
148
191
  /**
149
192
  * Adds an option of level type and default value 0.
150
193
  */
@@ -153,7 +196,7 @@ export interface NewTaskDefinitionBuilder<TaskArgumentsT extends TaskArguments =
153
196
  shortName?: string;
154
197
  description?: string;
155
198
  defaultValue?: number;
156
- }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, ArgumentType.LEVEL, TaskArgumentsT>>;
199
+ }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, ArgumentType.LEVEL, TaskArgumentsT>, ActionTypeT>;
157
200
  /**
158
201
  * Adds a positional argument to the task.
159
202
  *
@@ -175,7 +218,7 @@ export interface NewTaskDefinitionBuilder<TaskArgumentsT extends TaskArguments =
175
218
  description?: string;
176
219
  type?: TypeT;
177
220
  defaultValue?: ArgumentTypeToValueType<TypeT>;
178
- }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, TypeT, TaskArgumentsT>>;
221
+ }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, TypeT, TaskArgumentsT>, ActionTypeT>;
179
222
  /**
180
223
  * Adds a variadic positional argument to the task.
181
224
  *
@@ -195,16 +238,23 @@ export interface NewTaskDefinitionBuilder<TaskArgumentsT extends TaskArguments =
195
238
  description?: string;
196
239
  type?: TypeT;
197
240
  defaultValue?: Array<ArgumentTypeToValueType<TypeT>>;
198
- }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, TypeT[], TaskArgumentsT>>;
241
+ }): NewTaskDefinitionBuilder<ExtendTaskArguments<NameT, TypeT[], TaskArgumentsT>, ActionTypeT>;
199
242
  /**
200
243
  * Builds the NewTaskDefinition.
201
244
  */
202
- build(): NewTaskDefinition;
245
+ build(): ActionTypeT extends "LAZY_ACTION" ? Extract<NewTaskDefinition, {
246
+ action: LazyActionObject<NewTaskActionFunction>;
247
+ }> : ActionTypeT extends "INLINE_ACTION" ? Extract<NewTaskDefinition, {
248
+ inlineAction: NewTaskActionFunction;
249
+ }> : never;
203
250
  }
204
251
  /**
205
- * A builder for overriding existing tasks.
252
+ * A builder for overriding existing tasks
253
+ *
254
+ * @template TaskArgumentsT The arguments of the task.
255
+ * @template ActionTypeT Tracks if the action is "LAZY_ACTION" (Plugin Safe) or "INLINE_ACTION".
206
256
  */
207
- export interface TaskOverrideDefinitionBuilder<TaskArgumentsT extends TaskArguments = TaskArguments> {
257
+ export interface TaskOverrideDefinitionBuilder<TaskArgumentsT extends TaskArguments = TaskArguments, ActionTypeT extends "LAZY_ACTION" | "INLINE_ACTION" | "MISSING_ACTION" = "MISSING_ACTION"> {
208
258
  /**
209
259
  * Sets a new description for the task.
210
260
  */
@@ -214,7 +264,13 @@ export interface TaskOverrideDefinitionBuilder<TaskArgumentsT extends TaskArgume
214
264
  *
215
265
  * @see NewTaskDefinitionBuilder.setAction
216
266
  */
217
- setAction(action: LazyActionObject<TaskOverrideActionFunction<TaskArgumentsT>>): this;
267
+ setAction(action: LazyActionObject<TaskOverrideActionFunction<TaskArgumentsT>>): TaskOverrideDefinitionBuilder<TaskArgumentsT, "LAZY_ACTION">;
268
+ /**
269
+ * Sets a new inline action for the task.
270
+ *
271
+ * @see NewTaskDefinitionBuilder.setInlineAction
272
+ */
273
+ setInlineAction(inlineAction: TaskOverrideActionFunction<TaskArgumentsT>): TaskOverrideDefinitionBuilder<TaskArgumentsT, "INLINE_ACTION">;
218
274
  /**
219
275
  * Adds a new option to the task.
220
276
  *
@@ -227,7 +283,7 @@ export interface TaskOverrideDefinitionBuilder<TaskArgumentsT extends TaskArgume
227
283
  type?: TypeT;
228
284
  defaultValue: ArgumentTypeToValueType<TypeT>;
229
285
  hidden?: boolean;
230
- }): TaskOverrideDefinitionBuilder<ExtendTaskArguments<NameT, TypeT, TaskArgumentsT>>;
286
+ }): TaskOverrideDefinitionBuilder<ExtendTaskArguments<NameT, TypeT, TaskArgumentsT>, ActionTypeT>;
231
287
  /**
232
288
  * Adds an option of flag type and default value false.
233
289
  */
@@ -236,7 +292,7 @@ export interface TaskOverrideDefinitionBuilder<TaskArgumentsT extends TaskArgume
236
292
  shortName?: string;
237
293
  description?: string;
238
294
  hidden?: boolean;
239
- }): TaskOverrideDefinitionBuilder<ExtendTaskArguments<NameT, ArgumentType.FLAG, TaskArgumentsT>>;
295
+ }): TaskOverrideDefinitionBuilder<ExtendTaskArguments<NameT, ArgumentType.FLAG, TaskArgumentsT>, ActionTypeT>;
240
296
  /**
241
297
  * Adds an option of level type and default value 0.
242
298
  */
@@ -245,33 +301,38 @@ export interface TaskOverrideDefinitionBuilder<TaskArgumentsT extends TaskArgume
245
301
  shortName?: string;
246
302
  description?: string;
247
303
  defaultValue?: number;
248
- }): TaskOverrideDefinitionBuilder<ExtendTaskArguments<NameT, ArgumentType.LEVEL, TaskArgumentsT>>;
304
+ }): TaskOverrideDefinitionBuilder<ExtendTaskArguments<NameT, ArgumentType.LEVEL, TaskArgumentsT>, ActionTypeT>;
249
305
  /**
250
306
  * Builds the TaskOverrideDefinition.
251
307
  */
252
- build(): TaskOverrideDefinition;
308
+ build(): ActionTypeT extends "LAZY_ACTION" ? Extract<TaskOverrideDefinition, {
309
+ action: LazyActionObject<TaskOverrideActionFunction>;
310
+ }> : ActionTypeT extends "INLINE_ACTION" ? Extract<TaskOverrideDefinition, {
311
+ inlineAction: TaskOverrideActionFunction;
312
+ }> : never;
253
313
  }
254
314
  /**
255
315
  * The actions associated to the task, in order.
256
316
  *
257
317
  * Each of them has the pluginId of the plugin that defined it, if any, and the
258
- * action itself.
318
+ * action itself. The action is stored either in `action` or `inlineAction`.
319
+ * Note that `inlineAction` is reserved for user tasks and is not allowed for plugins.
259
320
  *
260
- * Note that the first action is a `NewTaskActionFunction`, `string`, or
261
- * `undefined`. `undefined` is only used for empty tasks.
321
+ * Note that the first action is a `NewTaskActionFunction` or undefined.
322
+ * `undefined` is only used for empty tasks.
262
323
  *
263
- * The rest of the actions always have a `TaskOverrideActionFunction` or a
264
- * `string`.
324
+ * The rest of the actions always have a `TaskOverrideActionFunction`.
265
325
  */
266
326
  export type TaskActions = [
267
327
  {
268
328
  pluginId?: string;
269
- action?: LazyActionObject<NewTaskActionFunction>;
270
- },
329
+ } & (TaskAction | {
330
+ action?: undefined;
331
+ inlineAction?: undefined;
332
+ }),
271
333
  ...Array<{
272
334
  pluginId?: string;
273
- action: LazyActionObject<TaskOverrideActionFunction>;
274
- }>
335
+ } & TaskOverrideAction>
275
336
  ];
276
337
  /**
277
338
  * A task.
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/types/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/types/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAK1D,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAiB,yBAAyB;QACxC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;KAC7B;CACF;AAKD,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAiB,iBAAiB;QAChC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;KAC1B;IAED,UAAiB,aAAa;QAC5B,KAAK,EAAE,cAAc,EAAE,CAAC;KACzB;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,CAC/B,cAAc,SAAS,aAAa,GAAG,aAAa,IAClD,CAAC,aAAa,EAAE,cAAc,EAAE,GAAG,EAAE,yBAAyB,KAAK,GAAG,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,MAAM,0BAA0B,CACpC,cAAc,SAAS,aAAa,GAAG,aAAa,IAClD,CACF,aAAa,EAAE,cAAc,GAAG,aAAa,EAC7C,GAAG,EAAE,yBAAyB,EAC9B,QAAQ,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,KACrD,GAAG,CAAC;AAET;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,aAAa,kBAAkB;CAChC;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,GACzE;IAAE,YAAY,EAAE,qBAAqB,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAC1B;IACE,MAAM,EAAE,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;IACrD,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB,GACD;IAAE,YAAY,EAAE,0BAA0B,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,kBAAkB,CAAC,UAAU,CAAC;IACpC,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC;IAElC,EAAE,EAAE,MAAM,EAAE,CAAC;IAEb,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE1C,mBAAmB,EAAE,4BAA4B,EAAE,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,UAAU,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,kBAAkB,CAAC,aAAa,CAAC;IAEvC,EAAE,EAAE,MAAM,EAAE,CAAC;IAEb,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAC7D,kBAAkB,CAAC;AAErB;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,iBAAiB,GACjB,sBAAsB,CAAC;AAE3B;;IAEI;AACJ,MAAM,MAAM,mBAAmB,CAC7B,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,YAAY,GAAG,YAAY,EAAE,EAC3C,cAAc,SAAS,aAAa,IAClC,MAAM,CACR,KAAK,EACL,KAAK,SAAS,YAAY,EAAE,GACxB,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAC7C,KAAK,SAAS,YAAY,GACxB,uBAAuB,CAAC,KAAK,CAAC,GAC9B,KAAK,CACZ,GACC,cAAc,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,KAAK,IAAI,mBAAmB,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB,CACvC,cAAc,SAAS,aAAa,GAAG,aAAa,EACpD,WAAW,SACP,aAAa,GACb,eAAe,GACf,gBAAgB,GAAG,gBAAgB;IAEvC;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1C;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CACP,MAAM,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,GAC9D,wBAAwB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAE3D;;;;;;;;;;;OAWG;IACH,eAAe,CACb,YAAY,EAAE,qBAAqB,CAAC,cAAc,CAAC,GAClD,wBAAwB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAE7D;;;;;;;;OAQG;IACH,SAAS,CACP,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,YAAY,GAAG,YAAY,CAAC,MAAM,EAChD,YAAY,EAAE;QACd,IAAI,EAAE,KAAK,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,YAAY,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,wBAAwB,CAC1B,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EACjD,WAAW,CACZ,CAAC;IAEF;;OAEG;IACH,OAAO,CAAC,KAAK,SAAS,MAAM,EAAE,UAAU,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,wBAAwB,CAC1B,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,EAC7D,WAAW,CACZ,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,KAAK,SAAS,MAAM,EAAE,UAAU,EAAE;QACzC,IAAI,EAAE,KAAK,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,wBAAwB,CAC1B,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,EAC9D,WAAW,CACZ,CAAC;IAEF;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,CACnB,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,YAAY,GAAG,YAAY,CAAC,MAAM,EAChD,SAAS,EAAE;QACX,IAAI,EAAE,KAAK,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,YAAY,CAAC,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;KAC/C,GAAG,wBAAwB,CAC1B,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EACjD,WAAW,CACZ,CAAC;IAEF;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CACjB,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,YAAY,GAAG,YAAY,CAAC,MAAM,EAChD,SAAS,EAAE;QACX,IAAI,EAAE,KAAK,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,YAAY,CAAC,EAAE,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;KACtD,GAAG,wBAAwB,CAC1B,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC,EACnD,WAAW,CACZ,CAAC;IAEF;;OAEG;IACH,KAAK,IAAI,WAAW,SAAS,aAAa,GACtC,OAAO,CACL,iBAAiB,EACjB;QAAE,MAAM,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAA;KAAE,CACpD,GACD,WAAW,SAAS,eAAe,GACjC,OAAO,CAAC,iBAAiB,EAAE;QAAE,YAAY,EAAE,qBAAqB,CAAA;KAAE,CAAC,GACnE,KAAK,CAAC;CACb;AAED;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B,CAC5C,cAAc,SAAS,aAAa,GAAG,aAAa,EACpD,WAAW,SACP,aAAa,GACb,eAAe,GACf,gBAAgB,GAAG,gBAAgB;IAEvC;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1C;;;;OAIG;IACH,SAAS,CACP,MAAM,EAAE,gBAAgB,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,GACnE,6BAA6B,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAEhE;;;;OAIG;IACH,eAAe,CACb,YAAY,EAAE,0BAA0B,CAAC,cAAc,CAAC,GACvD,6BAA6B,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAElE;;;;OAIG;IACH,SAAS,CACP,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,YAAY,GAAG,YAAY,CAAC,MAAM,EAChD,YAAY,EAAE;QACd,IAAI,EAAE,KAAK,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,YAAY,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,6BAA6B,CAC/B,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EACjD,WAAW,CACZ,CAAC;IAEF;;OAEG;IACH,OAAO,CAAC,KAAK,SAAS,MAAM,EAAE,UAAU,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,6BAA6B,CAC/B,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,EAC7D,WAAW,CACZ,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,KAAK,SAAS,MAAM,EAAE,UAAU,EAAE;QACzC,IAAI,EAAE,KAAK,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,6BAA6B,CAC/B,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,EAC9D,WAAW,CACZ,CAAC;IAEF;;OAEG;IACH,KAAK,IAAI,WAAW,SAAS,aAAa,GACtC,OAAO,CACL,sBAAsB,EACtB;QAAE,MAAM,EAAE,gBAAgB,CAAC,0BAA0B,CAAC,CAAA;KAAE,CACzD,GACD,WAAW,SAAS,eAAe,GACjC,OAAO,CACL,sBAAsB,EACtB;QAAE,YAAY,EAAE,0BAA0B,CAAA;KAAE,CAC7C,GACD,KAAK,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GAAG;IAExB;QACE,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,CACA,UAAU,GACV;QACE,MAAM,CAAC,EAAE,SAAS,CAAC;QACnB,YAAY,CAAC,EAAE,SAAS,CAAC;KAC1B,CACJ;IAED,GAAG,KAAK,CACN;QACE,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,kBAAkB,CACvB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,EAAE,EAAE,MAAM,EAAE,CAAC;IAEb;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAEvC;;OAEG;IACH,mBAAmB,EAAE,4BAA4B,EAAE,CAAC;IAEpD;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,GAAG,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC;CACZ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hardhat",
3
- "version": "3.1.8",
3
+ "version": "3.1.10",
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://github.com/nomicfoundation/hardhat/tree/v-next/v-next/hardhat",
6
6
  "repository": {
@@ -21,6 +21,7 @@
21
21
  "./hre": "./dist/src/hre.js",
22
22
  "./plugins": "./dist/src/plugins.js",
23
23
  "./internal/lsp-helpers": "./dist/src/lsp-helpers.js",
24
+ "./types": "./dist/src/types/index.js",
24
25
  "./types/arguments": "./dist/src/types/arguments.js",
25
26
  "./types/artifacts": "./dist/src/types/artifacts.js",
26
27
  "./types/config": "./dist/src/types/config.js",
@@ -38,7 +39,10 @@
38
39
  "./console.sol": "./console.sol",
39
40
  "./internal/coverage": "./dist/src/internal/builtin-plugins/coverage/exports.js",
40
41
  "./internal/gas-analytics": "./dist/src/internal/builtin-plugins/gas-analytics/exports.js",
41
- "./utils/contract-names": "./dist/src/utils/contract-names.js"
42
+ "./utils/contract-names": "./dist/src/utils/contract-names.js",
43
+ "./types/runtime": "./dist/src/internal/deprecated-module-imported-from-hardhat2-plugin.js",
44
+ "./builtin-tasks/task-names": "./dist/src/internal/deprecated-module-imported-from-hardhat2-plugin.js",
45
+ "./internal/artifacts": "./dist/src/internal/deprecated-module-imported-from-hardhat2-plugin.js"
42
46
  },
43
47
  "keywords": [
44
48
  "ethereum",
@@ -68,14 +72,14 @@
68
72
  "prettier": "3.2.5",
69
73
  "rimraf": "^5.0.5",
70
74
  "typescript": "~5.8.0",
71
- "@nomicfoundation/hardhat-test-utils": "^2.0.1"
75
+ "@nomicfoundation/hardhat-test-utils": "^2.0.2"
72
76
  },
73
77
  "dependencies": {
74
78
  "@nomicfoundation/edr": "0.12.0-next.24",
75
- "@nomicfoundation/hardhat-errors": "^3.0.6",
76
- "@nomicfoundation/hardhat-utils": "^3.0.6",
79
+ "@nomicfoundation/hardhat-errors": "^3.0.7",
80
+ "@nomicfoundation/hardhat-utils": "^4.0.0",
77
81
  "@nomicfoundation/hardhat-vendored": "^3.0.1",
78
- "@nomicfoundation/hardhat-zod-utils": "^3.0.1",
82
+ "@nomicfoundation/hardhat-zod-utils": "^3.0.2",
79
83
  "@nomicfoundation/solidity-analyzer": "^0.1.1",
80
84
  "@sentry/core": "^9.4.0",
81
85
  "adm-zip": "^0.4.16",
package/src/config.ts CHANGED
@@ -8,6 +8,8 @@ export type { HardhatUserConfig } from "./types/config.js";
8
8
  import "./internal/builtin-plugins/index.js";
9
9
  import type { HardhatUserConfig } from "./types/config.js";
10
10
 
11
+ import { throwUsingHardhat2PluginError } from "./internal/using-hardhat2-plugin-errors.js";
12
+
11
13
  /**
12
14
  * Defines a Hardhat user config.
13
15
  *
@@ -38,3 +40,38 @@ export function defineConfig(config: HardhatUserConfig): HardhatUserConfig {
38
40
  // use it and have a better user experience.
39
41
  return config;
40
42
  }
43
+
44
+ /**
45
+ * @deprecated This function is part of the Hardhat 2 plugin API.
46
+ */
47
+ export function extendConfig(..._args: any): any {
48
+ throwUsingHardhat2PluginError();
49
+ }
50
+
51
+ /**
52
+ * @deprecated This function is part of the Hardhat 2 plugin API.
53
+ */
54
+ export function extendEnvironment(..._args: any): any {
55
+ throwUsingHardhat2PluginError();
56
+ }
57
+
58
+ /**
59
+ * @deprecated This function is part of the Hardhat 2 plugin API.
60
+ */
61
+ export function extendProvider(..._args: any): any {
62
+ throwUsingHardhat2PluginError();
63
+ }
64
+
65
+ /**
66
+ * @deprecated This function is part of the Hardhat 2 plugin API.
67
+ */
68
+ export function scope(..._args: any): any {
69
+ throwUsingHardhat2PluginError();
70
+ }
71
+
72
+ /**
73
+ * @deprecated This function is part of the Hardhat 2 plugin API.
74
+ */
75
+ export function subtask(..._args: any): any {
76
+ throwUsingHardhat2PluginError();
77
+ }
@@ -8,7 +8,7 @@ import type { TableItem } from "@nomicfoundation/hardhat-utils/format";
8
8
 
9
9
  import path from "node:path";
10
10
 
11
- import { divider, formatTable } from "@nomicfoundation/hardhat-utils/format";
11
+ import { formatTable } from "@nomicfoundation/hardhat-utils/format";
12
12
  import {
13
13
  ensureDir,
14
14
  getAllFilesMatching,
@@ -433,55 +433,60 @@ export class CoverageManagerImplementation implements CoverageManager {
433
433
 
434
434
  const rows: TableItem[] = [];
435
435
 
436
- rows.push([chalk.bold("Coverage Report")]);
437
- rows.push(divider);
436
+ rows.push({
437
+ type: "title",
438
+ text: chalk.bold("Coverage Report"),
439
+ });
438
440
 
439
- rows.push(
440
- ["File Path", "Line %", "Statement %", "Uncovered Lines"].map((s) =>
441
- chalk.yellow(s),
441
+ rows.push({
442
+ type: "section-header",
443
+ text: chalk.bold("File Coverage"),
444
+ });
445
+
446
+ rows.push({
447
+ type: "header",
448
+ cells: ["File Path", "Line %", "Statement %", "Uncovered Lines"].map(
449
+ (s) => chalk.yellow(s),
442
450
  ),
443
- );
451
+ });
444
452
 
445
- const bodyRows = Object.entries(report).map(
446
- ([
447
- relativePath,
448
- {
449
- executedStatementsCount,
450
- unexecutedStatementsCount,
451
- lineExecutionCounts,
452
- executedLinesCount,
453
- unexecutedLines,
454
- },
455
- ]) => {
456
- const lineCoverage =
457
- lineExecutionCounts.size === 0
458
- ? 0
459
- : (executedLinesCount * 100.0) / lineExecutionCounts.size;
460
- const statementCoverage =
461
- executedStatementsCount === 0
462
- ? 0
463
- : (executedStatementsCount * 100.0) /
464
- (executedStatementsCount + unexecutedStatementsCount);
465
-
466
- totalExecutedLines += executedLinesCount;
467
- totalExecutableLines += lineExecutionCounts.size;
468
-
469
- totalExecutedStatements += executedStatementsCount;
470
- totalExecutableStatements +=
471
- executedStatementsCount + unexecutedStatementsCount;
472
-
473
- const row: string[] = [
453
+ for (const [
454
+ relativePath,
455
+ {
456
+ executedStatementsCount,
457
+ unexecutedStatementsCount,
458
+ lineExecutionCounts,
459
+ executedLinesCount,
460
+ unexecutedLines,
461
+ },
462
+ ] of Object.entries(report)) {
463
+ const lineCoverage =
464
+ lineExecutionCounts.size === 0
465
+ ? 0
466
+ : (executedLinesCount * 100.0) / lineExecutionCounts.size;
467
+ const statementCoverage =
468
+ executedStatementsCount === 0
469
+ ? 0
470
+ : (executedStatementsCount * 100.0) /
471
+ (executedStatementsCount + unexecutedStatementsCount);
472
+
473
+ totalExecutedLines += executedLinesCount;
474
+ totalExecutableLines += lineExecutionCounts.size;
475
+
476
+ totalExecutedStatements += executedStatementsCount;
477
+ totalExecutableStatements +=
478
+ executedStatementsCount + unexecutedStatementsCount;
479
+
480
+ rows.push({
481
+ type: "row",
482
+ cells: [
474
483
  this.formatRelativePath(relativePath),
475
484
  this.formatCoverage(lineCoverage),
476
485
  this.formatCoverage(statementCoverage),
477
486
  this.formatLines(unexecutedLines),
478
- ];
479
-
480
- return row;
481
- },
482
- );
483
-
484
- rows.push(...bodyRows);
487
+ ],
488
+ });
489
+ }
485
490
 
486
491
  const totalLineCoverage =
487
492
  totalExecutableLines === 0
@@ -492,13 +497,15 @@ export class CoverageManagerImplementation implements CoverageManager {
492
497
  ? 0
493
498
  : (totalExecutedStatements * 100.0) / totalExecutableStatements;
494
499
 
495
- rows.push(divider);
496
- rows.push([
497
- chalk.yellow("Total"),
498
- this.formatCoverage(totalLineCoverage),
499
- this.formatCoverage(totalStatementCoverage),
500
- "",
501
- ]);
500
+ rows.push({
501
+ type: "header",
502
+ cells: [
503
+ chalk.yellow("Total"),
504
+ this.formatCoverage(totalLineCoverage),
505
+ this.formatCoverage(totalStatementCoverage),
506
+ "",
507
+ ],
508
+ });
502
509
 
503
510
  return formatTable(rows);
504
511
  }
@@ -3,10 +3,6 @@ import type { CoverageMetadata } from "../types.js";
3
3
 
4
4
  import path from "node:path";
5
5
 
6
- import {
7
- addStatementCoverageInstrumentation,
8
- latestSupportedSolidityVersion,
9
- } from "@nomicfoundation/edr";
10
6
  import {
11
7
  assertHardhatInvariant,
12
8
  HardhatError,
@@ -15,9 +11,9 @@ import { ensureError } from "@nomicfoundation/hardhat-utils/error";
15
11
  import { readUtf8File } from "@nomicfoundation/hardhat-utils/fs";
16
12
  import { findClosestPackageRoot } from "@nomicfoundation/hardhat-utils/package";
17
13
  import debug from "debug";
18
- import { satisfies } from "semver";
19
14
 
20
15
  import { CoverageManagerImplementation } from "../coverage-manager.js";
16
+ import { instrumentSolidityFileForCompilationJob } from "../instrumentation.js";
21
17
 
22
18
  const log = debug("hardhat:core:coverage:hook-handlers:solidity");
23
19
 
@@ -40,19 +36,12 @@ export default async (): Promise<Partial<SolidityHooks>> => ({
40
36
 
41
37
  if (context.globalOptions.coverage && !isTestSource) {
42
38
  try {
43
- const latestSupportedVersion = latestSupportedSolidityVersion();
44
- if (!satisfies(solcVersion, `<=${latestSupportedVersion}`)) {
45
- console.log(
46
- `Solidity version ${solcVersion} is not yet supported for coverage instrumentation. Hardhat will try the latest supported version ${latestSupportedVersion} instead.`,
47
- );
48
- solcVersion = latestSupportedVersion;
49
- }
50
- const { source, metadata } = addStatementCoverageInstrumentation(
51
- fileContent,
39
+ const { source, metadata } = instrumentSolidityFileForCompilationJob({
40
+ compilationJobSolcVersion: solcVersion,
52
41
  sourceName,
53
- solcVersion,
54
- COVERAGE_LIBRARY_PATH,
55
- );
42
+ fileContent,
43
+ coverageLibraryPath: COVERAGE_LIBRARY_PATH,
44
+ });
56
45
 
57
46
  // TODO: Remove this once EDR starts returning line information as part
58
47
  // of the metadata.
@@ -0,0 +1,52 @@
1
+ import type { InstrumentationMetadata } from "@nomicfoundation/edr";
2
+
3
+ import {
4
+ addStatementCoverageInstrumentation,
5
+ latestSupportedSolidityVersion,
6
+ } from "@nomicfoundation/edr";
7
+ import { satisfies } from "semver";
8
+
9
+ /**
10
+ * Instruments a solidity source file as part of a compilation job. i.e. the
11
+ * file is about to be compile as either a root file or a transitive dependency
12
+ * of one of the root files.
13
+ *
14
+ * @param compilationJobSolcVersion The solc version that the compilation job
15
+ * will use.
16
+ * @param sourceName The source name of the file, as present in the compilation
17
+ * job.
18
+ * @param fileContent The contents of the file.
19
+ * @param coverageLibraryPath The path to the coverage library. i.e. where to
20
+ * import it from.
21
+ * @returns An object with the instrumented source and its metadata, and the
22
+ * solidity version used to instrument the sources.
23
+ */
24
+ export function instrumentSolidityFileForCompilationJob({
25
+ compilationJobSolcVersion,
26
+ sourceName,
27
+ fileContent,
28
+ coverageLibraryPath,
29
+ }: {
30
+ compilationJobSolcVersion: string;
31
+ sourceName: string;
32
+ fileContent: string;
33
+ coverageLibraryPath: string;
34
+ }): {
35
+ source: string;
36
+ metadata: InstrumentationMetadata[];
37
+ instrumentationVersion: string;
38
+ } {
39
+ const latestSupportedVersion = latestSupportedSolidityVersion();
40
+ let instrumentationVersion = compilationJobSolcVersion;
41
+ if (!satisfies(instrumentationVersion, `<=${latestSupportedVersion}`)) {
42
+ instrumentationVersion = latestSupportedVersion;
43
+ }
44
+ const { source, metadata } = addStatementCoverageInstrumentation(
45
+ fileContent,
46
+ sourceName,
47
+ instrumentationVersion,
48
+ coverageLibraryPath,
49
+ );
50
+
51
+ return { source, metadata, instrumentationVersion };
52
+ }
@@ -64,6 +64,7 @@ const flattenAction: NewTaskActionFunction<FlattenActionArguments> = async (
64
64
  rootPaths.toSorted(), // We sort them to have a deterministic order
65
65
  config.paths.root,
66
66
  readSourceFileFactory(hooks),
67
+ hooks,
67
68
  );
68
69
 
69
70
  let flattened = "";