hardhat 3.4.4 → 3.5.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.
Files changed (333) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/src/config.d.ts +0 -1
  3. package/dist/src/config.d.ts.map +1 -1
  4. package/dist/src/config.js +0 -3
  5. package/dist/src/config.js.map +1 -1
  6. package/dist/src/hre.d.ts +0 -1
  7. package/dist/src/hre.d.ts.map +1 -1
  8. package/dist/src/hre.js +0 -3
  9. package/dist/src/hre.js.map +1 -1
  10. package/dist/src/index.d.ts +0 -1
  11. package/dist/src/index.d.ts.map +1 -1
  12. package/dist/src/index.js +0 -3
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/internal/builtin-global-options.d.ts.map +1 -1
  15. package/dist/src/internal/builtin-global-options.js +1 -1
  16. package/dist/src/internal/builtin-global-options.js.map +1 -1
  17. package/dist/src/internal/builtin-plugins/artifacts/index.d.ts +1 -1
  18. package/dist/src/internal/builtin-plugins/artifacts/index.d.ts.map +1 -1
  19. package/dist/src/internal/builtin-plugins/artifacts/index.js +0 -1
  20. package/dist/src/internal/builtin-plugins/artifacts/index.js.map +1 -1
  21. package/dist/src/internal/builtin-plugins/clean/index.d.ts +1 -1
  22. package/dist/src/internal/builtin-plugins/clean/index.d.ts.map +1 -1
  23. package/dist/src/internal/builtin-plugins/clean/index.js +0 -1
  24. package/dist/src/internal/builtin-plugins/clean/index.js.map +1 -1
  25. package/dist/src/internal/builtin-plugins/clean/type-extensions.d.ts +1 -1
  26. package/dist/src/internal/builtin-plugins/clean/type-extensions.d.ts.map +1 -1
  27. package/dist/src/internal/builtin-plugins/clean/type-extensions.js +1 -1
  28. package/dist/src/internal/builtin-plugins/clean/type-extensions.js.map +1 -1
  29. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.d.ts.map +1 -1
  30. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js +7 -10
  31. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js.map +1 -1
  32. package/dist/src/internal/builtin-plugins/coverage/index.d.ts +1 -1
  33. package/dist/src/internal/builtin-plugins/coverage/index.d.ts.map +1 -1
  34. package/dist/src/internal/builtin-plugins/coverage/index.js +0 -1
  35. package/dist/src/internal/builtin-plugins/coverage/index.js.map +1 -1
  36. package/dist/src/internal/builtin-plugins/coverage/instrumentation.d.ts +1 -4
  37. package/dist/src/internal/builtin-plugins/coverage/instrumentation.d.ts.map +1 -1
  38. package/dist/src/internal/builtin-plugins/coverage/instrumentation.js +2 -4
  39. package/dist/src/internal/builtin-plugins/coverage/instrumentation.js.map +1 -1
  40. package/dist/src/internal/builtin-plugins/coverage/type-extensions.d.ts +1 -1
  41. package/dist/src/internal/builtin-plugins/coverage/type-extensions.d.ts.map +1 -1
  42. package/dist/src/internal/builtin-plugins/coverage/type-extensions.js +1 -1
  43. package/dist/src/internal/builtin-plugins/coverage/type-extensions.js.map +1 -1
  44. package/dist/src/internal/builtin-plugins/gas-analytics/index.d.ts +1 -1
  45. package/dist/src/internal/builtin-plugins/gas-analytics/index.d.ts.map +1 -1
  46. package/dist/src/internal/builtin-plugins/gas-analytics/index.js +0 -1
  47. package/dist/src/internal/builtin-plugins/gas-analytics/index.js.map +1 -1
  48. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.d.ts +21 -0
  49. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.d.ts.map +1 -1
  50. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js +49 -1
  51. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js.map +1 -1
  52. package/dist/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.d.ts +2 -1
  53. package/dist/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.d.ts.map +1 -1
  54. package/dist/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.js +12 -2
  55. package/dist/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.js.map +1 -1
  56. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.d.ts +1 -1
  57. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.d.ts.map +1 -1
  58. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.js +1 -1
  59. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.js.map +1 -1
  60. package/dist/src/internal/builtin-plugins/index.d.ts +8 -8
  61. package/dist/src/internal/builtin-plugins/index.d.ts.map +1 -1
  62. package/dist/src/internal/builtin-plugins/network-manager/config-resolution.d.ts.map +1 -1
  63. package/dist/src/internal/builtin-plugins/network-manager/config-resolution.js +9 -2
  64. package/dist/src/internal/builtin-plugins/network-manager/config-resolution.js.map +1 -1
  65. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-constants.d.ts +1 -0
  66. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-constants.d.ts.map +1 -1
  67. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-constants.js +1 -0
  68. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-constants.js.map +1 -1
  69. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts.map +1 -1
  70. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js +25 -5
  71. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
  72. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts.map +1 -1
  73. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js +7 -6
  74. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js.map +1 -1
  75. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.d.ts +16 -0
  76. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.d.ts.map +1 -1
  77. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js +28 -1
  78. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js.map +1 -1
  79. package/dist/src/internal/builtin-plugins/network-manager/index.d.ts +4 -4
  80. package/dist/src/internal/builtin-plugins/network-manager/index.d.ts.map +1 -1
  81. package/dist/src/internal/builtin-plugins/network-manager/index.js +0 -4
  82. package/dist/src/internal/builtin-plugins/network-manager/index.js.map +1 -1
  83. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts.map +1 -1
  84. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js +2 -6
  85. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js.map +1 -1
  86. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts +5 -4
  87. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts.map +1 -1
  88. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.js +1 -1
  89. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.js.map +1 -1
  90. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/global-options.d.ts +1 -1
  91. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/global-options.d.ts.map +1 -1
  92. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/global-options.js +1 -1
  93. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/global-options.js.map +1 -1
  94. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hooks.d.ts +0 -1
  95. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hooks.d.ts.map +1 -1
  96. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hooks.js +1 -1
  97. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hooks.js.map +1 -1
  98. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hre.d.ts +0 -1
  99. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hre.d.ts.map +1 -1
  100. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hre.js +1 -1
  101. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hre.js.map +1 -1
  102. package/dist/src/internal/builtin-plugins/network-manager/type-validation.d.ts.map +1 -1
  103. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js +3 -1
  104. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js.map +1 -1
  105. package/dist/src/internal/builtin-plugins/network-manager/utils/apply-coverage-network-overrides.d.ts +18 -0
  106. package/dist/src/internal/builtin-plugins/network-manager/utils/apply-coverage-network-overrides.d.ts.map +1 -0
  107. package/dist/src/internal/builtin-plugins/network-manager/utils/apply-coverage-network-overrides.js +27 -0
  108. package/dist/src/internal/builtin-plugins/network-manager/utils/apply-coverage-network-overrides.js.map +1 -0
  109. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js +6 -5
  110. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js.map +1 -1
  111. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
  112. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +22 -9
  113. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
  114. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.d.ts.map +1 -1
  115. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.js +7 -1
  116. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.js.map +1 -1
  117. package/dist/src/internal/builtin-plugins/solidity/constants.d.ts +10 -0
  118. package/dist/src/internal/builtin-plugins/solidity/constants.d.ts.map +1 -1
  119. package/dist/src/internal/builtin-plugins/solidity/constants.js +10 -0
  120. package/dist/src/internal/builtin-plugins/solidity/constants.js.map +1 -1
  121. package/dist/src/internal/builtin-plugins/solidity/index.d.ts +1 -1
  122. package/dist/src/internal/builtin-plugins/solidity/index.d.ts.map +1 -1
  123. package/dist/src/internal/builtin-plugins/solidity/index.js +1 -1
  124. package/dist/src/internal/builtin-plugins/solidity/index.js.map +1 -1
  125. package/dist/src/internal/builtin-plugins/solidity/tasks/compile.d.ts +9 -0
  126. package/dist/src/internal/builtin-plugins/solidity/tasks/compile.d.ts.map +1 -0
  127. package/dist/src/internal/builtin-plugins/solidity/tasks/compile.js +10 -0
  128. package/dist/src/internal/builtin-plugins/solidity/tasks/compile.js.map +1 -0
  129. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts +0 -4
  130. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts.map +1 -1
  131. package/dist/src/internal/builtin-plugins/solidity/type-extensions.js +1 -4
  132. package/dist/src/internal/builtin-plugins/solidity/type-extensions.js.map +1 -1
  133. package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts +4 -3
  134. package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts.map +1 -1
  135. package/dist/src/internal/builtin-plugins/solidity-test/config.js +55 -8
  136. package/dist/src/internal/builtin-plugins/solidity-test/config.js.map +1 -1
  137. package/dist/src/internal/builtin-plugins/solidity-test/eip712/ast-walker.d.ts +58 -0
  138. package/dist/src/internal/builtin-plugins/solidity-test/eip712/ast-walker.d.ts.map +1 -0
  139. package/dist/src/internal/builtin-plugins/solidity-test/eip712/ast-walker.js +226 -0
  140. package/dist/src/internal/builtin-plugins/solidity-test/eip712/ast-walker.js.map +1 -0
  141. package/dist/src/internal/builtin-plugins/solidity-test/eip712/canonicalize.d.ts +29 -0
  142. package/dist/src/internal/builtin-plugins/solidity-test/eip712/canonicalize.d.ts.map +1 -0
  143. package/dist/src/internal/builtin-plugins/solidity-test/eip712/canonicalize.js +244 -0
  144. package/dist/src/internal/builtin-plugins/solidity-test/eip712/canonicalize.js.map +1 -0
  145. package/dist/src/internal/builtin-plugins/solidity-test/eip712/glob.d.ts +7 -0
  146. package/dist/src/internal/builtin-plugins/solidity-test/eip712/glob.d.ts.map +1 -0
  147. package/dist/src/internal/builtin-plugins/solidity-test/eip712/glob.js +204 -0
  148. package/dist/src/internal/builtin-plugins/solidity-test/eip712/glob.js.map +1 -0
  149. package/dist/src/internal/builtin-plugins/solidity-test/eip712/index.d.ts +21 -0
  150. package/dist/src/internal/builtin-plugins/solidity-test/eip712/index.d.ts.map +1 -0
  151. package/dist/src/internal/builtin-plugins/solidity-test/eip712/index.js +77 -0
  152. package/dist/src/internal/builtin-plugins/solidity-test/eip712/index.js.map +1 -0
  153. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +4 -3
  154. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
  155. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +20 -3
  156. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
  157. package/dist/src/internal/builtin-plugins/solidity-test/index.d.ts +1 -1
  158. package/dist/src/internal/builtin-plugins/solidity-test/index.d.ts.map +1 -1
  159. package/dist/src/internal/builtin-plugins/solidity-test/index.js +0 -1
  160. package/dist/src/internal/builtin-plugins/solidity-test/index.js.map +1 -1
  161. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts +4 -2
  162. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts.map +1 -1
  163. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js +5 -1
  164. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js.map +1 -1
  165. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts.map +1 -1
  166. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js +15 -3
  167. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js.map +1 -1
  168. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts +3 -2
  169. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts.map +1 -1
  170. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js +18 -4
  171. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js.map +1 -1
  172. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts.map +1 -1
  173. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +5 -1
  174. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
  175. package/dist/src/internal/builtin-plugins/solidity-test/test-profiles.d.ts +2 -0
  176. package/dist/src/internal/builtin-plugins/solidity-test/test-profiles.d.ts.map +1 -0
  177. package/dist/src/internal/builtin-plugins/solidity-test/test-profiles.js +2 -0
  178. package/dist/src/internal/builtin-plugins/solidity-test/test-profiles.js.map +1 -0
  179. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts +91 -33
  180. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts.map +1 -1
  181. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.js +1 -1
  182. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.js.map +1 -1
  183. package/dist/src/internal/builtin-plugins/test/index.d.ts +1 -1
  184. package/dist/src/internal/builtin-plugins/test/index.d.ts.map +1 -1
  185. package/dist/src/internal/builtin-plugins/test/index.js +0 -1
  186. package/dist/src/internal/builtin-plugins/test/index.js.map +1 -1
  187. package/dist/src/internal/builtin-plugins/test/type-extensions.d.ts +0 -1
  188. package/dist/src/internal/builtin-plugins/test/type-extensions.d.ts.map +1 -1
  189. package/dist/src/internal/builtin-plugins/test/type-extensions.js +1 -1
  190. package/dist/src/internal/builtin-plugins/test/type-extensions.js.map +1 -1
  191. package/dist/src/internal/cli/init/init.d.ts +31 -6
  192. package/dist/src/internal/cli/init/init.d.ts.map +1 -1
  193. package/dist/src/internal/cli/init/init.js +121 -10
  194. package/dist/src/internal/cli/init/init.js.map +1 -1
  195. package/dist/src/internal/cli/main.d.ts.map +1 -1
  196. package/dist/src/internal/cli/main.js +41 -1
  197. package/dist/src/internal/cli/main.js.map +1 -1
  198. package/dist/src/types/arguments.d.ts +1 -0
  199. package/dist/src/types/arguments.d.ts.map +1 -1
  200. package/dist/src/types/arguments.js +1 -0
  201. package/dist/src/types/arguments.js.map +1 -1
  202. package/dist/src/types/artifacts.d.ts +1 -0
  203. package/dist/src/types/artifacts.d.ts.map +1 -1
  204. package/dist/src/types/artifacts.js +1 -1
  205. package/dist/src/types/artifacts.js.map +1 -1
  206. package/dist/src/types/builtin-plugin-type-extensions.d.ts +2 -0
  207. package/dist/src/types/builtin-plugin-type-extensions.d.ts.map +1 -0
  208. package/dist/src/types/builtin-plugin-type-extensions.js +2 -0
  209. package/dist/src/types/builtin-plugin-type-extensions.js.map +1 -0
  210. package/dist/src/types/config.d.ts +1 -1
  211. package/dist/src/types/config.d.ts.map +1 -1
  212. package/dist/src/types/config.js +1 -3
  213. package/dist/src/types/config.js.map +1 -1
  214. package/dist/src/types/global-options.d.ts +1 -0
  215. package/dist/src/types/global-options.d.ts.map +1 -1
  216. package/dist/src/types/global-options.js +1 -1
  217. package/dist/src/types/global-options.js.map +1 -1
  218. package/dist/src/types/hooks.d.ts +1 -0
  219. package/dist/src/types/hooks.d.ts.map +1 -1
  220. package/dist/src/types/hooks.js +1 -1
  221. package/dist/src/types/hooks.js.map +1 -1
  222. package/dist/src/types/hre.d.ts +1 -0
  223. package/dist/src/types/hre.d.ts.map +1 -1
  224. package/dist/src/types/hre.js +1 -1
  225. package/dist/src/types/hre.js.map +1 -1
  226. package/dist/src/types/index.d.ts +1 -0
  227. package/dist/src/types/index.d.ts.map +1 -1
  228. package/dist/src/types/index.js +1 -0
  229. package/dist/src/types/index.js.map +1 -1
  230. package/dist/src/types/network.d.ts +1 -0
  231. package/dist/src/types/network.d.ts.map +1 -1
  232. package/dist/src/types/network.js +1 -1
  233. package/dist/src/types/network.js.map +1 -1
  234. package/dist/src/types/plugins.d.ts +1 -1
  235. package/dist/src/types/plugins.d.ts.map +1 -1
  236. package/dist/src/types/plugins.js +1 -3
  237. package/dist/src/types/plugins.js.map +1 -1
  238. package/dist/src/types/providers.d.ts +1 -0
  239. package/dist/src/types/providers.d.ts.map +1 -1
  240. package/dist/src/types/providers.js +1 -1
  241. package/dist/src/types/providers.js.map +1 -1
  242. package/dist/src/types/solidity.d.ts +1 -0
  243. package/dist/src/types/solidity.d.ts.map +1 -1
  244. package/dist/src/types/solidity.js +1 -0
  245. package/dist/src/types/solidity.js.map +1 -1
  246. package/dist/src/types/tasks.d.ts +1 -0
  247. package/dist/src/types/tasks.d.ts.map +1 -1
  248. package/dist/src/types/tasks.js +1 -0
  249. package/dist/src/types/tasks.js.map +1 -1
  250. package/dist/src/types/test.d.ts +1 -0
  251. package/dist/src/types/test.d.ts.map +1 -1
  252. package/dist/src/types/test.js +1 -1
  253. package/dist/src/types/test.js.map +1 -1
  254. package/dist/src/types/user-interruptions.d.ts +1 -0
  255. package/dist/src/types/user-interruptions.d.ts.map +1 -1
  256. package/dist/src/types/user-interruptions.js +1 -1
  257. package/dist/src/types/user-interruptions.js.map +1 -1
  258. package/package.json +12 -12
  259. package/src/config.ts +0 -3
  260. package/src/hre.ts +0 -4
  261. package/src/index.ts +0 -4
  262. package/src/internal/builtin-global-options.ts +2 -1
  263. package/src/internal/builtin-plugins/artifacts/index.ts +1 -1
  264. package/src/internal/builtin-plugins/clean/index.ts +1 -1
  265. package/src/internal/builtin-plugins/clean/type-extensions.ts +0 -1
  266. package/src/internal/builtin-plugins/coverage/hook-handlers/solidity.ts +8 -13
  267. package/src/internal/builtin-plugins/coverage/index.ts +1 -1
  268. package/src/internal/builtin-plugins/coverage/instrumentation.ts +0 -5
  269. package/src/internal/builtin-plugins/coverage/type-extensions.ts +0 -1
  270. package/src/internal/builtin-plugins/gas-analytics/index.ts +1 -1
  271. package/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.ts +90 -1
  272. package/src/internal/builtin-plugins/gas-analytics/tasks/solidity-test/task-action.ts +24 -2
  273. package/src/internal/builtin-plugins/gas-analytics/type-extensions.ts +0 -1
  274. package/src/internal/builtin-plugins/index.ts +10 -10
  275. package/src/internal/builtin-plugins/network-manager/config-resolution.ts +11 -3
  276. package/src/internal/builtin-plugins/network-manager/edr/edr-constants.ts +2 -0
  277. package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +38 -8
  278. package/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.ts +10 -11
  279. package/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.ts +43 -1
  280. package/src/internal/builtin-plugins/network-manager/index.ts +4 -4
  281. package/src/internal/builtin-plugins/network-manager/network-manager.ts +5 -6
  282. package/src/internal/builtin-plugins/network-manager/type-extensions/config.ts +5 -4
  283. package/src/internal/builtin-plugins/network-manager/type-extensions/global-options.ts +0 -1
  284. package/src/internal/builtin-plugins/network-manager/type-extensions/hooks.ts +0 -1
  285. package/src/internal/builtin-plugins/network-manager/type-extensions/hre.ts +0 -1
  286. package/src/internal/builtin-plugins/network-manager/type-validation.ts +7 -1
  287. package/src/internal/builtin-plugins/network-manager/utils/apply-coverage-network-overrides.ts +32 -0
  288. package/src/internal/builtin-plugins/node/json-rpc/handler.ts +7 -5
  289. package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +32 -16
  290. package/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.ts +8 -2
  291. package/src/internal/builtin-plugins/solidity/constants.ts +11 -0
  292. package/src/internal/builtin-plugins/solidity/index.ts +2 -1
  293. package/src/internal/builtin-plugins/solidity/tasks/compile.ts +12 -0
  294. package/src/internal/builtin-plugins/solidity/type-extensions.ts +0 -4
  295. package/src/internal/builtin-plugins/solidity-test/config.ts +85 -12
  296. package/src/internal/builtin-plugins/solidity-test/eip712/ast-walker.ts +324 -0
  297. package/src/internal/builtin-plugins/solidity-test/eip712/canonicalize.ts +317 -0
  298. package/src/internal/builtin-plugins/solidity-test/eip712/glob.ts +225 -0
  299. package/src/internal/builtin-plugins/solidity-test/eip712/index.ts +120 -0
  300. package/src/internal/builtin-plugins/solidity-test/helpers.ts +28 -4
  301. package/src/internal/builtin-plugins/solidity-test/index.ts +1 -1
  302. package/src/internal/builtin-plugins/solidity-test/inline-config/constants.ts +6 -2
  303. package/src/internal/builtin-plugins/solidity-test/inline-config/helpers.ts +15 -4
  304. package/src/internal/builtin-plugins/solidity-test/inline-config/validation.ts +25 -4
  305. package/src/internal/builtin-plugins/solidity-test/task-action.ts +12 -1
  306. package/src/internal/builtin-plugins/solidity-test/test-profiles.ts +1 -0
  307. package/src/internal/builtin-plugins/solidity-test/type-extensions.ts +100 -34
  308. package/src/internal/builtin-plugins/test/index.ts +1 -1
  309. package/src/internal/builtin-plugins/test/type-extensions.ts +0 -1
  310. package/src/internal/cli/init/init.ts +198 -16
  311. package/src/internal/cli/main.ts +64 -1
  312. package/src/types/arguments.ts +2 -0
  313. package/src/types/artifacts.ts +2 -0
  314. package/src/types/builtin-plugin-type-extensions.ts +15 -0
  315. package/src/types/config.ts +1 -3
  316. package/src/types/global-options.ts +2 -0
  317. package/src/types/hooks.ts +2 -0
  318. package/src/types/hre.ts +2 -0
  319. package/src/types/index.ts +2 -0
  320. package/src/types/network.ts +2 -0
  321. package/src/types/plugins.ts +1 -3
  322. package/src/types/providers.ts +2 -0
  323. package/src/types/solidity.ts +2 -0
  324. package/src/types/tasks.ts +2 -0
  325. package/src/types/test.ts +2 -0
  326. package/src/types/user-interruptions.ts +2 -0
  327. package/templates/hardhat-3/01-node-test-runner-viem/package.json +12 -12
  328. package/templates/hardhat-3/01-node-test-runner-viem/tsconfig.json +4 -7
  329. package/templates/hardhat-3/02-mocha-ethers/package.json +15 -15
  330. package/templates/hardhat-3/02-mocha-ethers/tsconfig.json +4 -7
  331. package/templates/hardhat-3/03-minimal/package.json +2 -2
  332. package/templates/hardhat-3/03-minimal/tsconfig.json +4 -7
  333. package/coverage.sol +0 -38
@@ -0,0 +1,32 @@
1
+ import type { EdrNetworkConfig } from "../../../../types/config.js";
2
+
3
+ /**
4
+ * Returns a copy of the resolved EDR network config with coverage-specific
5
+ * overrides applied. When coverage is enabled and the user has not set the
6
+ * field explicitly:
7
+ *
8
+ * - `allowUnlimitedContractSize` defaults to `true`, because coverage
9
+ * instrumentation can push the contract size over the limit.
10
+ * - `blockGasLimit` and `transactionGasCap` default to `false` (disabled),
11
+ * so the added gas of coverage instrumentation does not push tests over
12
+ * the per-block or EIP-7825 transaction caps.
13
+ *
14
+ * Explicit user values are preserved in all three cases.
15
+ *
16
+ * When coverage is disabled, the config is returned unchanged.
17
+ */
18
+ export function applyCoverageNetworkOverrides(
19
+ config: EdrNetworkConfig,
20
+ shouldEnableCoverage: boolean,
21
+ ): EdrNetworkConfig {
22
+ if (!shouldEnableCoverage) {
23
+ return config;
24
+ }
25
+
26
+ return {
27
+ ...config,
28
+ allowUnlimitedContractSize: config.allowUnlimitedContractSize ?? true,
29
+ blockGasLimit: config.blockGasLimit ?? false,
30
+ transactionGasCap: config.transactionGasCap ?? false,
31
+ };
32
+ }
@@ -269,6 +269,12 @@ const _handleError = (error: Error): JsonRpcResponse => {
269
269
  error = new InternalError(undefined, error);
270
270
  }
271
271
 
272
+ // Revert errors (code 3): return raw hex to match the geth/anvil convention
273
+ // that viem/ethers/web3.js rely on. Other errors keep the wrapper for diagnostics.
274
+ const data: unknown = isRevertError
275
+ ? returnData
276
+ : { message: error.message, txHash, data: returnData };
277
+
272
278
  const response: FailedJsonRpcResponse = {
273
279
  jsonrpc: "2.0",
274
280
  id: null,
@@ -278,11 +284,7 @@ const _handleError = (error: Error): JsonRpcResponse => {
278
284
  ? error.code
279
285
  : InternalError.CODE,
280
286
  message: error.message,
281
- data: {
282
- message: error.message,
283
- txHash,
284
- data: returnData,
285
- },
287
+ data,
286
288
  },
287
289
  };
288
290
 
@@ -43,7 +43,6 @@ import { createDebug } from "@nomicfoundation/hardhat-utils/debug";
43
43
  import {
44
44
  exists,
45
45
  ensureDir,
46
- getAllDirectoriesMatching,
47
46
  getAllFilesMatching,
48
47
  move,
49
48
  readJsonFile,
@@ -1098,29 +1097,46 @@ export class SolidityBuildSystemImplementation implements SolidityBuildSystem {
1098
1097
 
1099
1098
  const userSourceNamesSet = new Set(userSourceNames);
1100
1099
 
1101
- for (const file of await getAllDirectoriesMatching(
1100
+ const buildInfosDir = path.join(artifactsDirectory, `build-info`);
1101
+
1102
+ // We accept both `.json` files and per-file `artifacts.d.ts` files:
1103
+ // source files that compile but produce no contracts emit only the
1104
+ // declaration file, but their parent dir still belongs in the cleanup
1105
+ // candidate set.
1106
+ // TODO: This logic is originated with the artifacts manager, but now uses both json files and `artifacts.d.ts` as the test
1107
+ const allArtifactFiles = await getAllFilesMatching(
1102
1108
  artifactsDirectory,
1103
- (d) => d.endsWith(".sol"),
1104
- )) {
1109
+ (p) => {
1110
+ // Ignore top level files (e.g. the project-wide artifacts.d.ts)
1111
+ if (
1112
+ p.indexOf(path.sep, artifactsDirectory.length + path.sep.length) ===
1113
+ -1
1114
+ ) {
1115
+ return false;
1116
+ }
1117
+ return p.endsWith(".json") || path.basename(p) === "artifacts.d.ts";
1118
+ },
1119
+ (dir) => dir !== buildInfosDir,
1120
+ );
1121
+
1122
+ const artifactDirs = new Set(
1123
+ allArtifactFiles.map((file) => path.dirname(file)),
1124
+ );
1125
+ const removedDirs = new Set<string>();
1126
+
1127
+ for (const dir of artifactDirs) {
1105
1128
  const relativePath = toForwardSlash(
1106
- path.relative(artifactsDirectory, file),
1129
+ path.relative(artifactsDirectory, dir),
1107
1130
  );
1108
1131
 
1109
1132
  if (!userSourceNamesSet.has(relativePath)) {
1110
- await remove(file);
1133
+ await remove(dir);
1134
+ removedDirs.add(dir);
1111
1135
  }
1112
1136
  }
1113
1137
 
1114
- const buildInfosDir = path.join(artifactsDirectory, `build-info`);
1115
-
1116
- // TODO: This logic is duplicated with respect to the artifacts manager
1117
- const artifactPaths = await getAllFilesMatching(
1118
- artifactsDirectory,
1119
- (p) =>
1120
- p.endsWith(".json") && // Only consider json files
1121
- // Ignore top level json files
1122
- p.indexOf(path.sep, artifactsDirectory.length + path.sep.length) !== -1,
1123
- (dir) => dir !== buildInfosDir,
1138
+ const artifactPaths = allArtifactFiles.filter(
1139
+ (p) => p.endsWith(".json") && !removedDirs.has(path.dirname(p)),
1124
1140
  );
1125
1141
 
1126
1142
  const reachableBuildInfoIds = await Promise.all(
@@ -29,14 +29,13 @@ import {
29
29
  } from "@nomicfoundation/hardhat-utils/package";
30
30
 
31
31
  import { UserRemappingErrorType } from "../../../../../types/solidity.js";
32
+ import { HARDHAT_PROJECT_INPUT_SOURCE_NAME_ROOT } from "../../constants.js";
32
33
 
33
34
  import { getNpmPackageName } from "./npm-module-parsing.js";
34
35
  import { parseRemappingString, selectBestRemapping } from "./remappings.js";
35
36
  import { sourceNamePathJoin } from "./source-name-utils.js";
36
37
  import { UserRemappingType } from "./types.js";
37
38
 
38
- const HARDHAT_PROJECT_INPUT_SOURCE_NAME_ROOT = "project";
39
-
40
39
  /**
41
40
  * Returns a normalized version of the path if it refers to a node_modules in
42
41
  * the root directory (i.e. node_modules/...), or a `node_modules` directory
@@ -478,6 +477,13 @@ export class RemappedNpmPackagesGraphImplementation
478
477
  (f) => !f.endsWith("node_modules"),
479
478
  );
480
479
 
480
+ // Sort by path so the first-wins dedup downstream is deterministic across
481
+ // filesystems. We sort here (and not after hook composition) so that hooks
482
+ // can rely on the contract that remappings they append after next() come
483
+ // last — e.g. hardhat-foundry appends forge's remappings after the
484
+ // package's own remappings.txt files, expecting remappings.txt to win.
485
+ remappingsTxtFiles.sort();
486
+
481
487
  const results: Array<{ remappings: string[]; source: string }> = [];
482
488
  for (const file of remappingsTxtFiles) {
483
489
  const contents = await readUtf8File(file);
@@ -1,5 +1,16 @@
1
1
  import type { CompilerInput } from "../../../types/solidity.js";
2
2
 
3
+ /**
4
+ * The input source name prefix used for files belonging to the Hardhat
5
+ * project (as opposed to npm packages, which use `npm/<pkg>@<version>`).
6
+ *
7
+ * For example, a project file at `<root>/contracts/Foo.sol` has input
8
+ * source name `project/contracts/Foo.sol`. Part of the build-info format
9
+ * contract: changing this value would require a new build-info format
10
+ * version.
11
+ */
12
+ export const HARDHAT_PROJECT_INPUT_SOURCE_NAME_ROOT = "project";
13
+
3
14
  export const DEFAULT_OUTPUT_SELECTION: CompilerInput["settings"]["outputSelection"] =
4
15
  {
5
16
  "*": {
@@ -3,7 +3,7 @@ import type { HardhatPlugin } from "../../../types/plugins.js";
3
3
  import { ArgumentType } from "../../../types/arguments.js";
4
4
  import { globalOption, task } from "../../core/config.js";
5
5
 
6
- import "./type-extensions.js";
6
+ export type * from "./type-extensions.js";
7
7
 
8
8
  const buildTask = task("build", "Build project")
9
9
  .addFlag({
@@ -53,6 +53,7 @@ const hardhatPlugin: HardhatPlugin = {
53
53
  ...buildTask,
54
54
  id: ["compile"],
55
55
  description: "Build project (alias for build)",
56
+ action: async () => await import("./tasks/compile.js"),
56
57
  },
57
58
  ],
58
59
  globalOptions: [
@@ -0,0 +1,12 @@
1
+ import type { NewTaskActionFunction } from "../../../../types/tasks.js";
2
+
3
+ /**
4
+ * Compile task action is an alias of the build task action, it invokes
5
+ * the build task to ensure any build overrides are properly executed when
6
+ * compile is run.
7
+ */
8
+ const compileAction: NewTaskActionFunction = async (args, hre) => {
9
+ return await hre.tasks.getTask("build").run(args);
10
+ };
11
+
12
+ export default compileAction;
@@ -11,7 +11,6 @@ import type {
11
11
  CompilerOutput,
12
12
  } from "../../../types/solidity.js";
13
13
 
14
- import "../../../types/config.js";
15
14
  declare module "../../../types/config.js" {
16
15
  /**
17
16
  * An interface with a key per compiler type.
@@ -318,21 +317,18 @@ declare module "../../../types/config.js" {
318
317
  }
319
318
  }
320
319
 
321
- import "../../../types/hre.js";
322
320
  declare module "../../../types/hre.js" {
323
321
  export interface HardhatRuntimeEnvironment {
324
322
  solidity: SolidityBuildSystem;
325
323
  }
326
324
  }
327
325
 
328
- import "../../../types/global-options.js";
329
326
  declare module "../../../types/global-options.js" {
330
327
  export interface GlobalOptions {
331
328
  buildProfile: string;
332
329
  }
333
330
  }
334
331
 
335
- import "../../../types/hooks.js";
336
332
  declare module "../../../types/hooks.js" {
337
333
  export interface HardhatHooks {
338
334
  solidity: SolidityHooks;
@@ -6,17 +6,19 @@ import type {
6
6
  } from "../../../types/config.js";
7
7
  import type { HardhatUserConfigValidationError } from "../../../types/hooks.js";
8
8
  import type {
9
- SolidityTestConfig,
10
9
  SolidityTestForkingConfig,
11
- SolidityTestUserConfig,
10
+ SolidityTestProfileConfig,
11
+ SolidityTestProfileUserConfig,
12
12
  } from "../../../types/test.js";
13
13
 
14
14
  import path from "node:path";
15
15
 
16
+ import { assertHardhatInvariant } from "@nomicfoundation/hardhat-errors";
16
17
  import { isObject } from "@nomicfoundation/hardhat-utils/lang";
17
18
  import { resolveFromRoot } from "@nomicfoundation/hardhat-utils/path";
18
19
  import {
19
20
  conditionalUnionType,
21
+ incompatibleFieldType,
20
22
  sensitiveStringSchema,
21
23
  sensitiveUrlSchema,
22
24
  unionType,
@@ -24,11 +26,13 @@ import {
24
26
  } from "@nomicfoundation/hardhat-zod-utils";
25
27
  import { z } from "zod";
26
28
 
29
+ import { DEFAULT_TEST_PROFILE } from "./test-profiles.js";
30
+
27
31
  // the keccak256 of "built for ethereum"
28
32
  export const DEFAULT_FUZZ_SEED =
29
33
  "0x7727ea51af0441c20da14dcd68a15dac8c9ebd589c5be8fa8c87c1d3720450bc";
30
34
 
31
- const solidityTestUserConfigType = z.object({
35
+ const solidityTestProfileUserConfigType = z.object({
32
36
  fsPermissions: z
33
37
  .object({
34
38
  readWriteFile: z.array(z.string()).optional(),
@@ -50,7 +54,11 @@ const solidityTestUserConfigType = z.object({
50
54
  blockTimestamp: z.bigint().optional(),
51
55
  prevRandao: z.bigint().optional(),
52
56
  gasLimit: z.bigint().optional(),
53
- blockGasLimit: z.bigint().or(z.literal(false)).optional(),
57
+ blockGasLimit: z.number().or(z.bigint()).or(z.literal(false)).optional(),
58
+ // TODO: widen back to .number().or(z.bigint()).or(z.literal(false))
59
+ // once Solidity test runner no longer breaks setUp() when
60
+ // disableTransactionGasCap is false. See PR #8301.
61
+ transactionGasCap: z.literal(false).optional(),
54
62
  fuzz: z
55
63
  .object({
56
64
  failurePersistDir: z.string().optional(),
@@ -89,8 +97,49 @@ const solidityTestUserConfigType = z.object({
89
97
  shrinkRunLimit: z.number().optional(),
90
98
  })
91
99
  .optional(),
100
+ eip712Types: z
101
+ .object({
102
+ include: z.array(z.string()).optional(),
103
+ exclude: z.array(z.string()).optional(),
104
+ })
105
+ .optional(),
92
106
  });
93
107
 
108
+ const solidityTestFlatUserConfigType = solidityTestProfileUserConfigType.extend(
109
+ {
110
+ profiles: incompatibleFieldType(
111
+ "This field is incompatible with the flat solidity test config",
112
+ ),
113
+ },
114
+ );
115
+
116
+ const solidityTestProfilesUserConfigType = z.object({
117
+ profiles: z
118
+ .record(z.string(), solidityTestProfileUserConfigType)
119
+ .refine(
120
+ (profiles) => DEFAULT_TEST_PROFILE in profiles,
121
+ "A `default` profile is required when using `profiles`",
122
+ )
123
+ .refine(
124
+ (profiles) =>
125
+ !(DEFAULT_TEST_PROFILE in profiles) ||
126
+ Object.keys(profiles).every((name) => name === DEFAULT_TEST_PROFILE),
127
+ "Only the `default` profile is supported. Other profile names will be supported in a future release.",
128
+ ),
129
+ });
130
+
131
+ const solidityTestUserConfigType = conditionalUnionType(
132
+ [
133
+ [
134
+ (data) =>
135
+ isObject(data) && "profiles" in data && Object.keys(data).length === 1,
136
+ solidityTestProfilesUserConfigType,
137
+ ],
138
+ [isObject, solidityTestFlatUserConfigType],
139
+ ],
140
+ "Expected a Solidity test config or a `{ profiles: { ... } }` wrapper",
141
+ );
142
+
94
143
  const userConfigType = z.object({
95
144
  paths: z
96
145
  .object({
@@ -111,7 +160,7 @@ const userConfigType = z.object({
111
160
  });
112
161
 
113
162
  export function resolveSolidityTestForkingConfig(
114
- forkingUserConfig: SolidityTestUserConfig["forking"],
163
+ forkingUserConfig: SolidityTestProfileUserConfig["forking"],
115
164
  resolveConfigurationVariable: ConfigurationVariableResolver,
116
165
  ): SolidityTestForkingConfig | undefined {
117
166
  if (forkingUserConfig === undefined) {
@@ -159,16 +208,29 @@ export async function resolveSolidityTestUserConfig(
159
208
 
160
209
  const defaultRpcCachePath = path.join(resolvedConfig.paths.cache, "edr");
161
210
 
211
+ const solidityUserConfig = userConfig.test?.solidity;
212
+ let profileUserConfig: SolidityTestProfileUserConfig | undefined;
213
+ if (solidityUserConfig !== undefined && "profiles" in solidityUserConfig) {
214
+ profileUserConfig = solidityUserConfig.profiles[DEFAULT_TEST_PROFILE];
215
+ assertHardhatInvariant(
216
+ profileUserConfig !== undefined,
217
+ "default profile must be present when the profiles wrapper user config is supplied",
218
+ );
219
+ } else {
220
+ profileUserConfig = solidityUserConfig;
221
+ }
222
+
162
223
  const resolvedForking = resolveSolidityTestForkingConfig(
163
- userConfig.test?.solidity?.forking,
224
+ profileUserConfig?.forking,
164
225
  resolveConfigurationVariable,
165
226
  );
166
227
 
167
- const solidityTest = {
228
+ const resolvedDefaultProfile = {
168
229
  rpcCachePath: defaultRpcCachePath,
169
- ...userConfig.test?.solidity,
170
- fuzz: resolveFuzzConfig(userConfig.test?.solidity?.fuzz),
230
+ ...profileUserConfig,
231
+ fuzz: resolveFuzzConfig(profileUserConfig?.fuzz),
171
232
  forking: resolvedForking,
233
+ eip712Types: resolveEip712TypesConfig(profileUserConfig?.eip712Types),
172
234
  };
173
235
 
174
236
  return {
@@ -182,16 +244,27 @@ export async function resolveSolidityTestUserConfig(
182
244
  },
183
245
  test: {
184
246
  ...resolvedConfig.test,
185
- solidity: solidityTest,
247
+ solidity: {
248
+ profiles: { [DEFAULT_TEST_PROFILE]: resolvedDefaultProfile },
249
+ },
186
250
  },
187
251
  };
188
252
  }
189
253
 
190
254
  export function resolveFuzzConfig(
191
- fuzzUserConfig: SolidityTestUserConfig["fuzz"] = {},
192
- ): SolidityTestConfig["fuzz"] {
255
+ fuzzUserConfig: SolidityTestProfileUserConfig["fuzz"] = {},
256
+ ): SolidityTestProfileConfig["fuzz"] {
193
257
  return {
194
258
  ...fuzzUserConfig,
195
259
  seed: fuzzUserConfig.seed ?? DEFAULT_FUZZ_SEED,
196
260
  };
197
261
  }
262
+
263
+ export function resolveEip712TypesConfig(
264
+ eip712TypesUserConfig: SolidityTestProfileUserConfig["eip712Types"] = {},
265
+ ): SolidityTestProfileConfig["eip712Types"] {
266
+ return {
267
+ include: eip712TypesUserConfig.include ?? [],
268
+ exclude: eip712TypesUserConfig.exclude ?? [],
269
+ };
270
+ }