hardhat 3.3.0 → 3.4.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 (417) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.d.ts.map +1 -1
  3. package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js +6 -14
  4. package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js.map +1 -1
  5. package/dist/src/internal/builtin-plugins/artifacts/hook-handlers/hre.d.ts.map +1 -1
  6. package/dist/src/internal/builtin-plugins/artifacts/hook-handlers/hre.js +10 -10
  7. package/dist/src/internal/builtin-plugins/artifacts/hook-handlers/hre.js.map +1 -1
  8. package/dist/src/internal/builtin-plugins/clean/index.js +1 -1
  9. package/dist/src/internal/builtin-plugins/clean/index.js.map +1 -1
  10. package/dist/src/internal/builtin-plugins/console/index.js +1 -1
  11. package/dist/src/internal/builtin-plugins/console/index.js.map +1 -1
  12. package/dist/src/internal/builtin-plugins/console/task-action.d.ts.map +1 -1
  13. package/dist/src/internal/builtin-plugins/console/task-action.js +2 -1
  14. package/dist/src/internal/builtin-plugins/console/task-action.js.map +1 -1
  15. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js +2 -2
  16. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js.map +1 -1
  17. package/dist/src/internal/builtin-plugins/flatten/index.js +1 -1
  18. package/dist/src/internal/builtin-plugins/flatten/index.js.map +1 -1
  19. package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts +1 -1
  20. package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts.map +1 -1
  21. package/dist/src/internal/builtin-plugins/gas-analytics/exports.js +1 -1
  22. package/dist/src/internal/builtin-plugins/gas-analytics/exports.js.map +1 -1
  23. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.d.ts.map +1 -1
  24. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js +1 -2
  25. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js.map +1 -1
  26. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts +7 -5
  27. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts.map +1 -1
  28. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js +60 -44
  29. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js.map +1 -1
  30. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts +6 -0
  31. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts.map +1 -0
  32. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js +14 -0
  33. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js.map +1 -0
  34. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts +4 -0
  35. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts.map +1 -0
  36. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js +27 -0
  37. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js.map +1 -0
  38. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts +36 -0
  39. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts.map +1 -0
  40. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js +86 -0
  41. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js.map +1 -0
  42. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js +1 -1
  43. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js.map +1 -1
  44. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js +1 -1
  45. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js.map +1 -1
  46. package/dist/src/internal/builtin-plugins/gas-analytics/index.d.ts.map +1 -1
  47. package/dist/src/internal/builtin-plugins/gas-analytics/index.js +2 -2
  48. package/dist/src/internal/builtin-plugins/gas-analytics/index.js.map +1 -1
  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 +1 -2
  51. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js.map +1 -1
  52. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts +10 -2
  53. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts.map +1 -1
  54. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js +4 -4
  55. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
  56. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js +1 -1
  57. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js.map +1 -1
  58. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts +4 -4
  59. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts.map +1 -1
  60. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js +2 -2
  61. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js.map +1 -1
  62. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts +6 -3
  63. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts.map +1 -1
  64. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js +23 -5
  65. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js.map +1 -1
  66. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.d.ts.map +1 -1
  67. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js +3 -2
  68. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js.map +1 -1
  69. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.d.ts.map +1 -1
  70. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js +24 -2
  71. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js.map +1 -1
  72. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.d.ts.map +1 -1
  73. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js +19 -11
  74. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js.map +1 -1
  75. package/dist/src/internal/builtin-plugins/network-manager/http-provider.d.ts.map +1 -1
  76. package/dist/src/internal/builtin-plugins/network-manager/http-provider.js +2 -2
  77. package/dist/src/internal/builtin-plugins/network-manager/http-provider.js.map +1 -1
  78. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts +11 -1
  79. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts.map +1 -1
  80. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js +91 -24
  81. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js.map +1 -1
  82. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.d.ts.map +1 -1
  83. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.js.map +1 -1
  84. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts +1 -0
  85. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts.map +1 -1
  86. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js +22 -8
  87. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js.map +1 -1
  88. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts +2 -0
  89. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts.map +1 -1
  90. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js +19 -12
  91. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js.map +1 -1
  92. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts +1 -0
  93. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts.map +1 -1
  94. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js +9 -3
  95. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js.map +1 -1
  96. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts +2 -0
  97. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts.map +1 -1
  98. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js +5 -1
  99. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js.map +1 -1
  100. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts +1 -0
  101. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts.map +1 -1
  102. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js +5 -1
  103. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js.map +1 -1
  104. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts +1 -0
  105. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts.map +1 -1
  106. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js +5 -1
  107. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js.map +1 -1
  108. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts +1 -0
  109. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts.map +1 -1
  110. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js +5 -1
  111. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js.map +1 -1
  112. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts +9 -0
  113. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts.map +1 -1
  114. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts +2 -0
  115. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts.map +1 -0
  116. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js +3 -0
  117. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js.map +1 -0
  118. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts +1 -1
  119. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts.map +1 -1
  120. package/dist/src/internal/builtin-plugins/network-manager/type-validation.d.ts.map +1 -1
  121. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js +2 -1
  122. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js.map +1 -1
  123. package/dist/src/internal/builtin-plugins/node/helpers.js +1 -1
  124. package/dist/src/internal/builtin-plugins/node/helpers.js.map +1 -1
  125. package/dist/src/internal/builtin-plugins/node/index.js +1 -1
  126. package/dist/src/internal/builtin-plugins/node/index.js.map +1 -1
  127. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.d.ts.map +1 -1
  128. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js +8 -2
  129. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js.map +1 -1
  130. package/dist/src/internal/builtin-plugins/node/task-action.js +2 -2
  131. package/dist/src/internal/builtin-plugins/node/task-action.js.map +1 -1
  132. package/dist/src/internal/builtin-plugins/run/index.js +1 -1
  133. package/dist/src/internal/builtin-plugins/run/index.js.map +1 -1
  134. package/dist/src/internal/builtin-plugins/run/task-action.d.ts.map +1 -1
  135. package/dist/src/internal/builtin-plugins/run/task-action.js +2 -1
  136. package/dist/src/internal/builtin-plugins/run/task-action.js.map +1 -1
  137. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.d.ts.map +1 -1
  138. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js +3 -0
  139. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js.map +1 -1
  140. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts +1 -1
  141. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
  142. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +125 -39
  143. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
  144. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts +2 -0
  145. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts.map +1 -1
  146. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.js.map +1 -1
  147. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts +3 -1
  148. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts.map +1 -1
  149. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js +12 -4
  150. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js.map +1 -1
  151. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js +4 -4
  152. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js.map +1 -1
  153. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.js +2 -2
  154. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.js.map +1 -1
  155. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/solcjs-runner.js +1 -1
  156. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/solcjs-runner.js.map +1 -1
  157. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.js +1 -1
  158. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.js.map +1 -1
  159. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.d.ts.map +1 -1
  160. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js +5 -5
  161. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js.map +1 -1
  162. package/dist/src/internal/builtin-plugins/solidity/build-system/read-source-file.js +1 -1
  163. package/dist/src/internal/builtin-plugins/solidity/build-system/read-source-file.js.map +1 -1
  164. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.js +10 -10
  165. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.js.map +1 -1
  166. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.js +1 -1
  167. package/dist/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.js.map +1 -1
  168. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.d.ts.map +1 -1
  169. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js +1 -0
  170. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js.map +1 -1
  171. package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js +2 -2
  172. package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js.map +1 -1
  173. package/dist/src/internal/builtin-plugins/solidity/config.d.ts.map +1 -1
  174. package/dist/src/internal/builtin-plugins/solidity/config.js +19 -16
  175. package/dist/src/internal/builtin-plugins/solidity/config.js.map +1 -1
  176. package/dist/src/internal/builtin-plugins/solidity/constants.d.ts +3 -0
  177. package/dist/src/internal/builtin-plugins/solidity/constants.d.ts.map +1 -0
  178. package/dist/src/internal/builtin-plugins/solidity/constants.js +19 -0
  179. package/dist/src/internal/builtin-plugins/solidity/constants.js.map +1 -0
  180. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js +1 -1
  181. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js.map +1 -1
  182. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.d.ts.map +1 -1
  183. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.js +10 -10
  184. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.js.map +1 -1
  185. package/dist/src/internal/builtin-plugins/solidity/index.js +1 -1
  186. package/dist/src/internal/builtin-plugins/solidity/index.js.map +1 -1
  187. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js +1 -1
  188. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js.map +1 -1
  189. package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts +1 -1
  190. package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts.map +1 -1
  191. package/dist/src/internal/builtin-plugins/solidity/tasks/build.js +225 -55
  192. package/dist/src/internal/builtin-plugins/solidity/tasks/build.js.map +1 -1
  193. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts +30 -4
  194. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts.map +1 -1
  195. package/dist/src/internal/builtin-plugins/solidity/type-extensions.js.map +1 -1
  196. package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts.map +1 -1
  197. package/dist/src/internal/builtin-plugins/solidity-test/config.js +5 -3
  198. package/dist/src/internal/builtin-plugins/solidity-test/config.js.map +1 -1
  199. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js +2 -2
  200. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js.map +1 -1
  201. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +0 -2
  202. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
  203. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +0 -3
  204. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
  205. package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/config.js +1 -1
  206. package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/config.js.map +1 -1
  207. package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/test.js +1 -1
  208. package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/test.js.map +1 -1
  209. package/dist/src/internal/builtin-plugins/solidity-test/index.js +1 -1
  210. package/dist/src/internal/builtin-plugins/solidity-test/index.js.map +1 -1
  211. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js +1 -1
  212. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js.map +1 -1
  213. package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts +2 -8
  214. package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts.map +1 -1
  215. package/dist/src/internal/builtin-plugins/solidity-test/runner.js +47 -50
  216. package/dist/src/internal/builtin-plugins/solidity-test/runner.js.map +1 -1
  217. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.d.ts.map +1 -1
  218. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js +11 -2
  219. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js.map +1 -1
  220. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts.map +1 -1
  221. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +108 -32
  222. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
  223. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts +1 -2
  224. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts.map +1 -1
  225. package/dist/src/internal/builtin-plugins/telemetry/index.js +1 -1
  226. package/dist/src/internal/builtin-plugins/telemetry/index.js.map +1 -1
  227. package/dist/src/internal/builtin-plugins/test/hook-handlers/config.js +1 -1
  228. package/dist/src/internal/builtin-plugins/test/hook-handlers/config.js.map +1 -1
  229. package/dist/src/internal/builtin-plugins/test/index.js +1 -1
  230. package/dist/src/internal/builtin-plugins/test/index.js.map +1 -1
  231. package/dist/src/internal/builtin-plugins/test/task-action.d.ts.map +1 -1
  232. package/dist/src/internal/builtin-plugins/test/task-action.js +3 -4
  233. package/dist/src/internal/builtin-plugins/test/task-action.js.map +1 -1
  234. package/dist/src/internal/cli/init/init.js +1 -1
  235. package/dist/src/internal/cli/init/init.js.map +1 -1
  236. package/dist/src/internal/cli/main.d.ts.map +1 -1
  237. package/dist/src/internal/cli/main.js +12 -2
  238. package/dist/src/internal/cli/main.js.map +1 -1
  239. package/dist/src/internal/cli/node-version.d.ts.map +1 -1
  240. package/dist/src/internal/cli/node-version.js +3 -0
  241. package/dist/src/internal/cli/node-version.js.map +1 -1
  242. package/dist/src/internal/cli/telemetry/analytics/analytics.js +2 -2
  243. package/dist/src/internal/cli/telemetry/analytics/analytics.js.map +1 -1
  244. package/dist/src/internal/cli/telemetry/error-reporter/global-error-handlers.d.ts +6 -0
  245. package/dist/src/internal/cli/telemetry/error-reporter/global-error-handlers.d.ts.map +1 -0
  246. package/dist/src/internal/cli/telemetry/error-reporter/global-error-handlers.js +47 -0
  247. package/dist/src/internal/cli/telemetry/error-reporter/global-error-handlers.js.map +1 -0
  248. package/dist/src/internal/cli/telemetry/error-reporter/reporter.d.ts +27 -0
  249. package/dist/src/internal/cli/telemetry/error-reporter/reporter.d.ts.map +1 -0
  250. package/dist/src/internal/cli/telemetry/error-reporter/reporter.js +40 -0
  251. package/dist/src/internal/cli/telemetry/error-reporter/reporter.js.map +1 -0
  252. package/dist/src/internal/cli/telemetry/sentry/anonymizer.js +1 -1
  253. package/dist/src/internal/cli/telemetry/sentry/anonymizer.js.map +1 -1
  254. package/dist/src/internal/cli/telemetry/sentry/init.d.ts +0 -8
  255. package/dist/src/internal/cli/telemetry/sentry/init.d.ts.map +1 -1
  256. package/dist/src/internal/cli/telemetry/sentry/init.js +1 -37
  257. package/dist/src/internal/cli/telemetry/sentry/init.js.map +1 -1
  258. package/dist/src/internal/cli/telemetry/sentry/reporter.d.ts +8 -2
  259. package/dist/src/internal/cli/telemetry/sentry/reporter.d.ts.map +1 -1
  260. package/dist/src/internal/cli/telemetry/sentry/reporter.js +18 -12
  261. package/dist/src/internal/cli/telemetry/sentry/reporter.js.map +1 -1
  262. package/dist/src/internal/cli/telemetry/sentry/transport.js +1 -1
  263. package/dist/src/internal/cli/telemetry/sentry/transport.js.map +1 -1
  264. package/dist/src/internal/cli/telemetry/telemetry-permissions.js +1 -1
  265. package/dist/src/internal/cli/telemetry/telemetry-permissions.js.map +1 -1
  266. package/dist/src/internal/config-loading.js +3 -3
  267. package/dist/src/internal/config-loading.js.map +1 -1
  268. package/dist/src/internal/core/configuration-variables.d.ts.map +1 -1
  269. package/dist/src/internal/core/configuration-variables.js +1 -1
  270. package/dist/src/internal/core/configuration-variables.js.map +1 -1
  271. package/dist/src/internal/core/hook-manager.js +3 -3
  272. package/dist/src/internal/core/hook-manager.js.map +1 -1
  273. package/dist/src/internal/core/hre.d.ts.map +1 -1
  274. package/dist/src/internal/core/hre.js +3 -3
  275. package/dist/src/internal/core/hre.js.map +1 -1
  276. package/dist/src/internal/core/plugins/resolve-plugin-list.js +1 -1
  277. package/dist/src/internal/core/plugins/resolve-plugin-list.js.map +1 -1
  278. package/dist/src/internal/core/tasks/resolved-task.js +4 -4
  279. package/dist/src/internal/core/tasks/resolved-task.js.map +1 -1
  280. package/dist/src/internal/core/user-interruptions.js +9 -9
  281. package/dist/src/internal/core/user-interruptions.js.map +1 -1
  282. package/dist/src/internal/hre-initialization.js +1 -1
  283. package/dist/src/internal/hre-initialization.js.map +1 -1
  284. package/dist/src/types/artifacts.d.ts +5 -4
  285. package/dist/src/types/artifacts.d.ts.map +1 -1
  286. package/dist/src/types/network.d.ts +39 -0
  287. package/dist/src/types/network.d.ts.map +1 -1
  288. package/dist/src/types/solidity/build-system.d.ts +66 -3
  289. package/dist/src/types/solidity/build-system.d.ts.map +1 -1
  290. package/dist/src/types/solidity/build-system.js.map +1 -1
  291. package/dist/src/types/solidity/compilation-job.d.ts +6 -0
  292. package/dist/src/types/solidity/compilation-job.d.ts.map +1 -1
  293. package/dist/src/types/solidity/solidity-artifacts.d.ts +14 -0
  294. package/dist/src/types/solidity/solidity-artifacts.d.ts.map +1 -1
  295. package/package.json +9 -9
  296. package/src/internal/builtin-plugins/artifacts/artifact-manager.ts +10 -16
  297. package/src/internal/builtin-plugins/artifacts/hook-handlers/hre.ts +16 -10
  298. package/src/internal/builtin-plugins/clean/index.ts +1 -1
  299. package/src/internal/builtin-plugins/console/index.ts +1 -1
  300. package/src/internal/builtin-plugins/console/task-action.ts +2 -1
  301. package/src/internal/builtin-plugins/coverage/hook-handlers/solidity.ts +2 -2
  302. package/src/internal/builtin-plugins/flatten/index.ts +1 -1
  303. package/src/internal/builtin-plugins/gas-analytics/exports.ts +1 -1
  304. package/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.ts +1 -2
  305. package/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts +100 -61
  306. package/src/internal/builtin-plugins/gas-analytics/helpers/accessors.ts +31 -0
  307. package/src/internal/builtin-plugins/gas-analytics/helpers/compat.ts +37 -0
  308. package/src/internal/builtin-plugins/gas-analytics/helpers/utils.ts +112 -0
  309. package/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.ts +1 -1
  310. package/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.ts +1 -1
  311. package/src/internal/builtin-plugins/gas-analytics/index.ts +4 -2
  312. package/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.ts +1 -2
  313. package/src/internal/builtin-plugins/gas-analytics/types.ts +11 -2
  314. package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +4 -4
  315. package/src/internal/builtin-plugins/network-manager/edr/genesis-state.ts +1 -1
  316. package/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.ts +4 -0
  317. package/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.ts +28 -4
  318. package/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.ts +3 -2
  319. package/src/internal/builtin-plugins/network-manager/hook-handlers/hre.ts +31 -2
  320. package/src/internal/builtin-plugins/network-manager/hook-handlers/network.ts +22 -16
  321. package/src/internal/builtin-plugins/network-manager/http-provider.ts +6 -2
  322. package/src/internal/builtin-plugins/network-manager/network-manager.ts +139 -32
  323. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.ts +1 -0
  324. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.ts +30 -13
  325. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.ts +25 -17
  326. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.ts +13 -5
  327. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.ts +7 -1
  328. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.ts +7 -1
  329. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.ts +7 -1
  330. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.ts +7 -1
  331. package/src/internal/builtin-plugins/network-manager/request-handlers/types.ts +10 -0
  332. package/src/internal/builtin-plugins/network-manager/revert-error-code.ts +2 -0
  333. package/src/internal/builtin-plugins/network-manager/type-extensions/config.ts +1 -1
  334. package/src/internal/builtin-plugins/network-manager/type-validation.ts +5 -1
  335. package/src/internal/builtin-plugins/node/helpers.ts +1 -1
  336. package/src/internal/builtin-plugins/node/index.ts +1 -1
  337. package/src/internal/builtin-plugins/node/json-rpc/handler.ts +10 -2
  338. package/src/internal/builtin-plugins/node/task-action.ts +2 -2
  339. package/src/internal/builtin-plugins/run/index.ts +1 -1
  340. package/src/internal/builtin-plugins/run/task-action.ts +2 -1
  341. package/src/internal/builtin-plugins/solidity/build-system/artifacts.ts +3 -0
  342. package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +176 -45
  343. package/src/internal/builtin-plugins/solidity/build-system/cache.ts +2 -0
  344. package/src/internal/builtin-plugins/solidity/build-system/compilation-job.ts +16 -10
  345. package/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.ts +4 -4
  346. package/src/internal/builtin-plugins/solidity/build-system/compiler/index.ts +2 -2
  347. package/src/internal/builtin-plugins/solidity/build-system/compiler/solcjs-runner.ts +1 -1
  348. package/src/internal/builtin-plugins/solidity/build-system/dependency-graph-building.ts +1 -1
  349. package/src/internal/builtin-plugins/solidity/build-system/dependency-graph.ts +9 -7
  350. package/src/internal/builtin-plugins/solidity/build-system/read-source-file.ts +2 -2
  351. package/src/internal/builtin-plugins/solidity/build-system/resolver/dependency-resolver.ts +11 -11
  352. package/src/internal/builtin-plugins/solidity/build-system/resolver/remapped-npm-packages-graph.ts +1 -1
  353. package/src/internal/builtin-plugins/solidity/build-system/solc-info.ts +1 -0
  354. package/src/internal/builtin-plugins/solidity/build-system/warning-suppression.ts +2 -2
  355. package/src/internal/builtin-plugins/solidity/config.ts +23 -13
  356. package/src/internal/builtin-plugins/solidity/constants.ts +21 -0
  357. package/src/internal/builtin-plugins/solidity/hook-handlers/config.ts +1 -1
  358. package/src/internal/builtin-plugins/solidity/hook-handlers/hre.ts +14 -10
  359. package/src/internal/builtin-plugins/solidity/index.ts +1 -1
  360. package/src/internal/builtin-plugins/solidity/solidity-hooks.ts +1 -1
  361. package/src/internal/builtin-plugins/solidity/tasks/build.ts +359 -74
  362. package/src/internal/builtin-plugins/solidity/type-extensions.ts +38 -8
  363. package/src/internal/builtin-plugins/solidity-test/config.ts +11 -2
  364. package/src/internal/builtin-plugins/solidity-test/edr-artifacts.ts +2 -2
  365. package/src/internal/builtin-plugins/solidity-test/helpers.ts +0 -7
  366. package/src/internal/builtin-plugins/solidity-test/hook-handlers/config.ts +1 -1
  367. package/src/internal/builtin-plugins/solidity-test/hook-handlers/test.ts +1 -1
  368. package/src/internal/builtin-plugins/solidity-test/index.ts +1 -1
  369. package/src/internal/builtin-plugins/solidity-test/reporter.ts +1 -1
  370. package/src/internal/builtin-plugins/solidity-test/runner.ts +64 -83
  371. package/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.ts +15 -2
  372. package/src/internal/builtin-plugins/solidity-test/task-action.ts +161 -43
  373. package/src/internal/builtin-plugins/solidity-test/type-extensions.ts +1 -2
  374. package/src/internal/builtin-plugins/telemetry/index.ts +1 -1
  375. package/src/internal/builtin-plugins/test/hook-handlers/config.ts +1 -1
  376. package/src/internal/builtin-plugins/test/index.ts +1 -1
  377. package/src/internal/builtin-plugins/test/task-action.ts +3 -4
  378. package/src/internal/cli/init/init.ts +1 -1
  379. package/src/internal/cli/main.ts +19 -3
  380. package/src/internal/cli/node-version.ts +3 -0
  381. package/src/internal/cli/telemetry/analytics/analytics.ts +2 -2
  382. package/src/internal/cli/telemetry/error-reporter/global-error-handlers.ts +64 -0
  383. package/src/internal/cli/telemetry/error-reporter/reporter.ts +49 -0
  384. package/src/internal/cli/telemetry/sentry/anonymizer.ts +1 -1
  385. package/src/internal/cli/telemetry/sentry/init.ts +2 -62
  386. package/src/internal/cli/telemetry/sentry/reporter.ts +27 -15
  387. package/src/internal/cli/telemetry/sentry/transport.ts +1 -1
  388. package/src/internal/cli/telemetry/telemetry-permissions.ts +1 -1
  389. package/src/internal/config-loading.ts +3 -3
  390. package/src/internal/core/configuration-variables.ts +19 -18
  391. package/src/internal/core/hook-manager.ts +3 -3
  392. package/src/internal/core/hre.ts +5 -3
  393. package/src/internal/core/plugins/resolve-plugin-list.ts +1 -1
  394. package/src/internal/core/tasks/resolved-task.ts +4 -4
  395. package/src/internal/core/user-interruptions.ts +9 -9
  396. package/src/internal/hre-initialization.ts +1 -1
  397. package/src/types/artifacts.ts +5 -4
  398. package/src/types/network.ts +48 -0
  399. package/src/types/solidity/build-system.ts +66 -3
  400. package/src/types/solidity/compilation-job.ts +7 -0
  401. package/src/types/solidity/solidity-artifacts.ts +16 -0
  402. package/templates/hardhat-2/04-mocha-viem-ts/package.json +1 -1
  403. package/templates/hardhat-3/01-node-test-runner-viem/gitignore +11 -0
  404. package/templates/hardhat-3/01-node-test-runner-viem/package.json +12 -12
  405. package/templates/hardhat-3/01-node-test-runner-viem/scripts/send-op-tx.ts +1 -1
  406. package/templates/hardhat-3/01-node-test-runner-viem/test/Counter.ts +1 -1
  407. package/templates/hardhat-3/02-mocha-ethers/gitignore +11 -0
  408. package/templates/hardhat-3/02-mocha-ethers/package.json +14 -14
  409. package/templates/hardhat-3/02-mocha-ethers/scripts/send-op-tx.ts +1 -1
  410. package/templates/hardhat-3/02-mocha-ethers/test/Counter.ts +1 -1
  411. package/templates/hardhat-3/03-minimal/gitignore +11 -0
  412. package/templates/hardhat-3/03-minimal/package.json +1 -1
  413. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts +0 -14
  414. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts.map +0 -1
  415. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js +0 -55
  416. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.map +0 -1
  417. package/src/internal/builtin-plugins/gas-analytics/helpers.ts +0 -96
@@ -9,7 +9,7 @@ import type { TestResult } from "@nomicfoundation/edr";
9
9
  import { bytesToHexString } from "@nomicfoundation/hardhat-utils/hex";
10
10
  import chalk from "chalk";
11
11
 
12
- import { sendErrorTelemetry } from "../../cli/telemetry/sentry/reporter.js";
12
+ import { sendErrorTelemetry } from "../../cli/telemetry/error-reporter/reporter.js";
13
13
  import { SolidityTestStackTraceGenerationError } from "../network-manager/edr/stack-traces/stack-trace-generation-errors.js";
14
14
  import { encodeStackTraceEntry } from "../network-manager/edr/stack-traces/stack-trace-solidity-errors.js";
15
15
  import { formatTraces } from "../network-manager/edr/utils/trace-formatters.js";
@@ -17,13 +17,6 @@ import { getGlobalEdrContext } from "../../edr/context.js";
17
17
 
18
18
  import { formatArtifactId } from "./formatters.js";
19
19
 
20
- export interface RunOptions {
21
- /**
22
- * The maximum time in milliseconds to wait for all the test suites to finish.
23
- */
24
- timeout?: number;
25
- }
26
-
27
20
  /**
28
21
  * Run all the given solidity tests and returns the stream of results.
29
22
  *
@@ -38,7 +31,7 @@ export interface RunOptions {
38
31
  * Despite the changes, the signature of the function should still be considered
39
32
  * a draft that may change in the future.
40
33
  *
41
- * TODO: Once the signature is finalized, give feedback to the EDR team.
34
+ * Important TODO: Transform this into an AsyncGenerator<SuiteResult, SolidityTestResult, void>
42
35
  */
43
36
  export function run(
44
37
  chainType: ChainType,
@@ -47,88 +40,76 @@ export function run(
47
40
  testRunnerConfig: SolidityTestRunnerConfigArgs,
48
41
  tracingConfig: TracingConfigWithBuffers,
49
42
  sourceNameToUserSourceName: Map<string, string>,
50
- options?: RunOptions,
51
43
  ): TestsStream {
52
- const stream = new ReadableStream<TestEvent>({
53
- async start(controller) {
54
- if (testSuiteIds.length === 0) {
55
- controller.close();
56
- return;
57
- }
58
- let runCompleted = false;
44
+ const stream = new Readable({
45
+ objectMode: true,
46
+ read() {},
47
+ });
59
48
 
60
- const remainingSuites = new Set(
61
- testSuiteIds.map((id) =>
62
- formatArtifactId(id, sourceNameToUserSourceName),
63
- ),
64
- );
49
+ if (testSuiteIds.length === 0) {
50
+ stream.push(null);
51
+ return stream;
52
+ }
65
53
 
66
- let timeout: NodeJS.Timeout | undefined;
67
- if (options?.timeout !== undefined) {
68
- timeout = setTimeout(() => {
69
- controller.error(
70
- new HardhatError(
71
- HardhatError.ERRORS.CORE.SOLIDITY_TESTS.RUNNER_TIMEOUT,
72
- {
73
- duration: options.timeout,
74
- suites: Array.from(remainingSuites).join(", "),
75
- },
76
- ),
77
- );
78
- }, options.timeout);
79
- }
54
+ let runCompleted = false;
80
55
 
81
- // TODO: Add support for predeploys once EDR supports them.
82
- try {
83
- const edrContext = await getGlobalEdrContext();
84
- const solidityTestResult = await edrContext.runSolidityTests(
85
- hardhatChainTypeToEdrChainType(chainType),
86
- artifacts,
87
- testSuiteIds,
88
- testRunnerConfig,
89
- tracingConfig,
90
- (suiteResult) => {
91
- controller.enqueue({
92
- type: "suite:done",
93
- data: suiteResult,
94
- });
95
- remainingSuites.delete(
96
- formatArtifactId(suiteResult.id, sourceNameToUserSourceName),
97
- );
98
- if (remainingSuites.size === 0) {
99
- clearTimeout(timeout);
56
+ const remainingSuites = new Set(
57
+ testSuiteIds.map((id) => formatArtifactId(id, sourceNameToUserSourceName)),
58
+ );
100
59
 
101
- if (runCompleted) {
102
- controller.close();
103
- }
60
+ // Start the async work immediately. The read() callback is a no-op
61
+ // because we push data proactively from the EDR suite-completion
62
+ // callback. Using a native Readable (instead of a web ReadableStream
63
+ // wrapped with Readable.from) avoids a race where Node.js stream
64
+ // cleanup cancels the web reader while the async start callback still
65
+ // has pending work — push() on a destroyed Readable is a safe no-op.
66
+ // TODO: Add support for predeploys once EDR supports them.
67
+ void (async () => {
68
+ try {
69
+ const edrContext = await getGlobalEdrContext();
70
+ const solidityTestResult = await edrContext.runSolidityTests(
71
+ hardhatChainTypeToEdrChainType(chainType),
72
+ artifacts,
73
+ testSuiteIds,
74
+ testRunnerConfig,
75
+ tracingConfig,
76
+ (suiteResult) => {
77
+ stream.push({
78
+ type: "suite:done",
79
+ data: suiteResult,
80
+ } satisfies TestEvent);
81
+ remainingSuites.delete(
82
+ formatArtifactId(suiteResult.id, sourceNameToUserSourceName),
83
+ );
84
+ if (remainingSuites.size === 0) {
85
+ if (runCompleted) {
86
+ stream.push(null);
104
87
  }
105
- },
106
- );
107
- controller.enqueue({
108
- type: "run:done",
109
- data: solidityTestResult,
110
- });
111
- runCompleted = true;
112
-
113
- if (remainingSuites.size === 0) {
114
- controller.close();
115
- }
116
- } catch (error) {
117
- ensureError(error);
118
-
119
- clearTimeout(timeout);
88
+ }
89
+ },
90
+ );
91
+ stream.push({
92
+ type: "run:done",
93
+ data: solidityTestResult,
94
+ } satisfies TestEvent);
95
+ runCompleted = true;
120
96
 
121
- controller.error(
122
- new HardhatError(
123
- HardhatError.ERRORS.CORE.SOLIDITY_TESTS.UNHANDLED_EDR_ERROR_SOLIDITY_TESTS,
124
- {
125
- error: error.message,
126
- },
127
- ),
128
- );
97
+ if (remainingSuites.size === 0) {
98
+ stream.push(null);
129
99
  }
130
- },
131
- });
100
+ } catch (error) {
101
+ ensureError(error);
102
+
103
+ stream.destroy(
104
+ new HardhatError(
105
+ HardhatError.ERRORS.CORE.SOLIDITY_TESTS.UNHANDLED_EDR_ERROR_SOLIDITY_TESTS,
106
+ {
107
+ error: error.message,
108
+ },
109
+ ),
110
+ );
111
+ }
112
+ })();
132
113
 
133
- return Readable.from(stream);
114
+ return stream;
134
115
  }
@@ -2,7 +2,10 @@ import type { SolidityStackTraceEntry } from "../network-manager/edr/stack-trace
2
2
 
3
3
  import { panicErrorCodeToMessage } from "@nomicfoundation/hardhat-utils/panic-errors";
4
4
 
5
- import { StackTraceEntryType } from "../network-manager/edr/stack-traces/solidity-stack-trace.js";
5
+ import {
6
+ StackTraceEntryType,
7
+ CheatcodeErrorCode,
8
+ } from "../network-manager/edr/stack-traces/solidity-stack-trace.js";
6
9
 
7
10
  export function getMessageFromLastStackTraceEntry(
8
11
  stackTraceEntry: SolidityStackTraceEntry,
@@ -64,8 +67,18 @@ export function getMessageFromLastStackTraceEntry(
64
67
  case StackTraceEntryType.CUSTOM_ERROR:
65
68
  return stackTraceEntry.message;
66
69
 
67
- case StackTraceEntryType.CHEATCODE_ERROR:
70
+ case StackTraceEntryType.CHEATCODE_ERROR: {
71
+ if (stackTraceEntry.details !== undefined) {
72
+ switch (stackTraceEntry.details.code) {
73
+ case CheatcodeErrorCode.UnsupportedCheatcode:
74
+ return `Cheatcode '${stackTraceEntry.details.cheatcode}' is not supported by Hardhat.`;
75
+ case CheatcodeErrorCode.MissingCheatcode:
76
+ return `Cheatcode '${stackTraceEntry.details.cheatcode}' is not yet available in this version of Hardhat.`;
77
+ }
78
+ }
79
+
68
80
  return stackTraceEntry.message;
81
+ }
69
82
 
70
83
  case StackTraceEntryType.CONTRACT_TOO_LARGE_ERROR:
71
84
  return "Trying to deploy a contract whose code is too large";
@@ -3,6 +3,10 @@ import type {
3
3
  EdrArtifactWithMetadata,
4
4
  } from "./edr-artifacts.js";
5
5
  import type { TestEvent } from "./types.js";
6
+ import type {
7
+ BuildScope,
8
+ SolidityBuildSystem,
9
+ } from "../../../types/solidity.js";
6
10
  import type { NewTaskActionFunction } from "../../../types/tasks.js";
7
11
  import type { TestRunResult } from "../../../types/test.js";
8
12
  import type { Result } from "../../../types/utils.js";
@@ -15,6 +19,7 @@ import type {
15
19
  import { finished } from "node:stream/promises";
16
20
 
17
21
  import { HardhatError } from "@nomicfoundation/hardhat-errors";
22
+ import { exists } from "@nomicfoundation/hardhat-utils/fs";
18
23
  import { resolveFromRoot } from "@nomicfoundation/hardhat-utils/path";
19
24
  import { createNonClosingWriter } from "@nomicfoundation/hardhat-utils/stream";
20
25
 
@@ -23,7 +28,7 @@ import { errorResult, successfulResult } from "../../../utils/result.js";
23
28
  import { isSupportedChainType } from "../../edr/chain-type.js";
24
29
  import { ArtifactManagerImplementation } from "../artifacts/artifact-manager.js";
25
30
  import { getCoverageManager } from "../coverage/helpers.js";
26
- import { getGasAnalyticsManager } from "../gas-analytics/helpers.js";
31
+ import { getGasAnalyticsManager } from "../gas-analytics/helpers/accessors.js";
27
32
  import { edrGasReportToHardhatGasMeasurements } from "../network-manager/edr/utils/convert-to-edr.js";
28
33
 
29
34
  import {
@@ -33,7 +38,6 @@ import {
33
38
  import {
34
39
  isTestSuiteArtifact,
35
40
  warnDeprecatedTestFail,
36
- solidityTestConfigToRunOptions,
37
41
  solidityTestConfigToSolidityTestRunnerConfigArgs,
38
42
  } from "./helpers.js";
39
43
  import { getTestFunctionOverrides } from "./inline-config/index.js";
@@ -61,6 +65,18 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
61
65
 
62
66
  const verbosity = hre.globalOptions.verbosity;
63
67
 
68
+ // NOTE: The resolution from CWD mimics what `build` does. It's important for
69
+ // both tasks to be aligned.
70
+ const resolvedTestFilesArgument = testFiles.map((f) =>
71
+ resolveFromRoot(process.cwd(), f),
72
+ );
73
+
74
+ await validateThatProvidedFilesAreTests(
75
+ hre.solidity,
76
+ testFiles,
77
+ resolvedTestFilesArgument,
78
+ );
79
+
64
80
  // Sets the NODE_ENV environment variable to "test" so the code can detect that tests are running
65
81
  // This is done by other JS/TS test frameworks like vitest
66
82
  process.env.NODE_ENV ??= "test";
@@ -76,34 +92,79 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
76
92
  );
77
93
  }
78
94
 
79
- // Run the build task for contract files if needed
80
- if (noCompile !== true) {
81
- await hre.tasks.getTask("build").run({
82
- noTests: true,
83
- });
84
- }
95
+ let testRootPathsToRun: string[];
96
+ let edrArtifactsWithMetadata: EdrArtifactWithMetadata[];
97
+ let allBuildInfosAndOutputs: BuildInfoAndOutput[];
85
98
 
86
- // Run the build task for test files
87
- const { testRootPaths }: { testRootPaths: string[] } = await hre.tasks
88
- .getTask("build")
89
- .run({
90
- files: testFiles,
91
- noContracts: true,
92
- });
93
- console.log();
99
+ if (hre.config.solidity.splitTestsCompilation) {
100
+ if (noCompile !== true) {
101
+ await hre.tasks.getTask("build").run({
102
+ noTests: true,
103
+ });
104
+ }
94
105
 
95
- // EDR needs all artifacts (contracts + tests)
96
- const edrArtifactsWithMetadata: EdrArtifactWithMetadata[] = [];
97
- const allBuildInfosAndOutputs: BuildInfoAndOutput[] = [];
98
- for (const scope of ["contracts", "tests"] as const) {
99
- const artifactsDir = await hre.solidity.getArtifactsDirectory(scope);
100
- const artifactManager = new ArtifactManagerImplementation(artifactsDir);
101
- edrArtifactsWithMetadata.push(
102
- ...(await buildEdrArtifactsWithMetadata(artifactManager)),
103
- );
104
- allBuildInfosAndOutputs.push(
105
- ...(await getBuildInfosAndOutputs(artifactManager)),
106
- );
106
+ ({ testRootPaths: testRootPathsToRun } = await hre.tasks
107
+ .getTask("build")
108
+ .run({
109
+ files: testFiles,
110
+ noContracts: true,
111
+ }));
112
+ console.log();
113
+
114
+ ({ edrArtifactsWithMetadata, allBuildInfosAndOutputs } =
115
+ await loadArtifacts(hre.solidity, ["contracts", "tests"]));
116
+ } else {
117
+ if (noCompile !== true) {
118
+ ({ testRootPaths: testRootPathsToRun } = await hre.tasks
119
+ .getTask("build")
120
+ .run({
121
+ files: testFiles,
122
+ }));
123
+ } else {
124
+ if (resolvedTestFilesArgument.length > 0) {
125
+ testRootPathsToRun = resolvedTestFilesArgument;
126
+ } else {
127
+ testRootPathsToRun = [];
128
+ const allRoots = await hre.solidity.getRootFilePaths({
129
+ scope: "contracts",
130
+ });
131
+
132
+ for (const root of allRoots) {
133
+ if ((await hre.solidity.getScope(root)) === "tests") {
134
+ testRootPathsToRun.push(root);
135
+ }
136
+ }
137
+ }
138
+ }
139
+ console.log();
140
+
141
+ ({ edrArtifactsWithMetadata, allBuildInfosAndOutputs } =
142
+ await loadArtifacts(hre.solidity, ["contracts"]));
143
+
144
+ // When noCompile, validate selected test roots have compiled artifacts
145
+ if (noCompile === true) {
146
+ const compiledSources = new Set(
147
+ edrArtifactsWithMetadata.map(({ userSourceName }) =>
148
+ resolveFromRoot(hre.config.paths.root, userSourceName),
149
+ ),
150
+ );
151
+
152
+ const notCompiledFiles: string[] = [];
153
+ for (const root of testRootPathsToRun) {
154
+ if (!compiledSources.has(root)) {
155
+ notCompiledFiles.push(root);
156
+ }
157
+ }
158
+
159
+ if (notCompiledFiles.length > 0) {
160
+ throw new HardhatError(
161
+ HardhatError.ERRORS.CORE.SOLIDITY_TESTS.SELECTED_TEST_FILES_NOT_COMPILED,
162
+ {
163
+ files: notCompiledFiles.map((f) => `- ${f}`).join("\n"),
164
+ },
165
+ );
166
+ }
167
+ }
107
168
  }
108
169
 
109
170
  const sourceNameToUserSourceName = new Map(
@@ -113,25 +174,19 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
113
174
  ]),
114
175
  );
115
176
 
116
- edrArtifactsWithMetadata.forEach(({ userSourceName, edrArtifact }) => {
117
- if (
118
- testRootPaths.includes(
119
- resolveFromRoot(hre.config.paths.root, userSourceName),
120
- ) &&
121
- isTestSuiteArtifact(edrArtifact)
122
- ) {
123
- warnDeprecatedTestFail(edrArtifact, sourceNameToUserSourceName);
124
- }
125
- });
126
-
177
+ const testRootPathsSet = new Set(testRootPathsToRun);
127
178
  const testSuiteArtifacts = edrArtifactsWithMetadata
128
179
  .filter(({ userSourceName }) =>
129
- testRootPaths.includes(
180
+ testRootPathsSet.has(
130
181
  resolveFromRoot(hre.config.paths.root, userSourceName),
131
182
  ),
132
183
  )
133
184
  .filter(({ edrArtifact }) => isTestSuiteArtifact(edrArtifact));
134
185
 
186
+ for (const { edrArtifact } of testSuiteArtifacts) {
187
+ warnDeprecatedTestFail(edrArtifact, sourceNameToUserSourceName);
188
+ }
189
+
135
190
  const testSuiteIds = testSuiteArtifacts.map(
136
191
  ({ edrArtifact }) => edrArtifact.id,
137
192
  );
@@ -195,8 +250,6 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
195
250
  })),
196
251
  ignoreContracts: false,
197
252
  };
198
- const runOptions = solidityTestConfigToRunOptions(solidityTestConfig);
199
-
200
253
  await hre.hooks.runHandlerChain(
201
254
  "test",
202
255
  "onTestRunStart",
@@ -211,7 +264,6 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
211
264
  testRunnerConfig,
212
265
  tracingConfig,
213
266
  sourceNameToUserSourceName,
214
- runOptions,
215
267
  );
216
268
 
217
269
  let failed = 0;
@@ -314,4 +366,70 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
314
366
  : successfulResult(result);
315
367
  };
316
368
 
369
+ /**
370
+ * Validates that the test files provided by the user, resolved in this case,
371
+ * are actually test files.
372
+ *
373
+ * @param solidity The solidity build system
374
+ * @param testFiles The test files, as provided by the user
375
+ * @param resolvedTestFilesArgument The resolved testFiles
376
+ */
377
+ async function validateThatProvidedFilesAreTests(
378
+ solidity: SolidityBuildSystem,
379
+ testFiles: string[],
380
+ resolvedTestFilesArgument: string[],
381
+ ) {
382
+ const existsResults = await Promise.all(
383
+ resolvedTestFilesArgument.map((rootPath) => exists(rootPath)),
384
+ );
385
+
386
+ const missing: string[] = testFiles.filter((_, i) => !existsResults[i]);
387
+
388
+ if (missing.length > 0) {
389
+ throw new HardhatError(
390
+ HardhatError.ERRORS.CORE.SOLIDITY_TESTS.SELECTED_TEST_FILES_DO_NOT_EXIST,
391
+ {
392
+ files: missing.map((f) => `- ${f}`).join("\n"),
393
+ },
394
+ );
395
+ }
396
+
397
+ const scopes = await Promise.all(
398
+ resolvedTestFilesArgument.map((rootPath) => solidity.getScope(rootPath)),
399
+ );
400
+
401
+ const nonTests: string[] = testFiles.filter((_, i) => scopes[i] !== "tests");
402
+
403
+ if (nonTests.length > 0) {
404
+ throw new HardhatError(
405
+ HardhatError.ERRORS.CORE.SOLIDITY_TESTS.SELECTED_FILES_ARE_NOT_SOLIDITY_TESTS,
406
+ {
407
+ files: nonTests.map((f) => `- ${f}`).join("\n"),
408
+ },
409
+ );
410
+ }
411
+ }
412
+
413
+ async function loadArtifacts(
414
+ solidity: SolidityBuildSystem,
415
+ scopes: BuildScope[],
416
+ ): Promise<{
417
+ edrArtifactsWithMetadata: EdrArtifactWithMetadata[];
418
+ allBuildInfosAndOutputs: BuildInfoAndOutput[];
419
+ }> {
420
+ const edrArtifactsWithMetadata: EdrArtifactWithMetadata[] = [];
421
+ const allBuildInfosAndOutputs: BuildInfoAndOutput[] = [];
422
+ for (const scope of scopes) {
423
+ const artifactsDir = await solidity.getArtifactsDirectory(scope);
424
+ const artifactManager = new ArtifactManagerImplementation(artifactsDir);
425
+ edrArtifactsWithMetadata.push(
426
+ ...(await buildEdrArtifactsWithMetadata(artifactManager)),
427
+ );
428
+ allBuildInfosAndOutputs.push(
429
+ ...(await getBuildInfosAndOutputs(artifactManager)),
430
+ );
431
+ }
432
+ return { edrArtifactsWithMetadata, allBuildInfosAndOutputs };
433
+ }
434
+
317
435
  export default runSolidityTests;
@@ -31,7 +31,6 @@ declare module "../../../types/test.js" {
31
31
  }
32
32
 
33
33
  export interface SolidityTestConfigBase {
34
- timeout?: number;
35
34
  fsPermissions?: {
36
35
  readWriteFile?: string[];
37
36
  readFile?: string[];
@@ -69,7 +68,7 @@ declare module "../../../types/test.js" {
69
68
 
70
69
  export interface SolidityTestForkingUserConfig {
71
70
  url?: SensitiveString;
72
- blockNumber?: bigint;
71
+ blockNumber?: number | bigint;
73
72
  rpcEndpoints?: Record<string, SensitiveString>;
74
73
  }
75
74
 
@@ -14,7 +14,7 @@ const hardhatPlugin: HardhatPlugin = {
14
14
  name: "disable",
15
15
  description: "Disable telemetry",
16
16
  })
17
- .setAction(async () => import("./task-action.js"))
17
+ .setAction(async () => await import("./task-action.js"))
18
18
  .build(),
19
19
  ],
20
20
  npmPackage: "hardhat",
@@ -14,7 +14,7 @@ export default async (): Promise<Partial<ConfigHooks>> => {
14
14
  resolveConfigurationVariable,
15
15
  );
16
16
 
17
- return resolveTestUserConfig(userConfig, resolvedConfig);
17
+ return await resolveTestUserConfig(userConfig, resolvedConfig);
18
18
  },
19
19
  };
20
20
 
@@ -32,7 +32,7 @@ const hardhatPlugin: HardhatPlugin = {
32
32
  name: "noCompile",
33
33
  description: "Do not compile the project before running the tests",
34
34
  })
35
- .setAction(async () => import("./task-action.js"))
35
+ .setAction(async () => await import("./task-action.js"))
36
36
  .build(),
37
37
  ],
38
38
  dependencies: () => [import("../solidity/index.js")],
@@ -17,7 +17,7 @@ import {
17
17
  successfulResult,
18
18
  } from "../../../utils/result.js";
19
19
  import { getCoverageManager } from "../coverage/helpers.js";
20
- import { getGasAnalyticsManager } from "../gas-analytics/helpers.js";
20
+ import { getGasAnalyticsManager } from "../gas-analytics/helpers/accessors.js";
21
21
 
22
22
  interface TestActionArguments {
23
23
  testFiles: string[];
@@ -64,9 +64,8 @@ const runAllTests: NewTaskActionFunction<TestActionArguments> = async (
64
64
  const thisTask = hre.tasks.getTask("test");
65
65
 
66
66
  if (!noCompile) {
67
- await hre.tasks.getTask("build").run({
68
- noTests: true,
69
- });
67
+ const noTests = hre.config.solidity.splitTestsCompilation;
68
+ await hre.tasks.getTask("build").run({ noTests });
70
69
  }
71
70
 
72
71
  if (hre.globalOptions.coverage === true) {
@@ -31,7 +31,7 @@ import {
31
31
  } from "../../utils/package.js";
32
32
  import { BannerManager } from "../banner-manager.js";
33
33
  import { sendProjectTypeAnalytics } from "../telemetry/analytics/analytics.js";
34
- import { sendErrorTelemetry } from "../telemetry/sentry/reporter.js";
34
+ import { sendErrorTelemetry } from "../telemetry/error-reporter/reporter.js";
35
35
 
36
36
  import {
37
37
  getDevDependenciesInstallationCommand,
@@ -46,11 +46,11 @@ import { printErrorMessages } from "./error-handler.js";
46
46
  import { getGlobalHelpString } from "./help/get-global-help-string.js";
47
47
  import { getHelpString } from "./help/get-help-string.js";
48
48
  import { sendTaskAnalytics } from "./telemetry/analytics/analytics.js";
49
+ import { setupGlobalUnhandledErrorHandlers } from "./telemetry/error-reporter/global-error-handlers.js";
49
50
  import {
50
51
  sendErrorTelemetry,
51
52
  setCliHardhatConfigPath,
52
- setupErrorTelemetryIfEnabled,
53
- } from "./telemetry/sentry/reporter.js";
53
+ } from "./telemetry/error-reporter/reporter.js";
54
54
  import { printVersionMessage } from "./version.js";
55
55
 
56
56
  export interface MainOptions {
@@ -64,7 +64,9 @@ export async function main(
64
64
  rawArguments: string[],
65
65
  options: MainOptions = {},
66
66
  ): Promise<void> {
67
- await setupErrorTelemetryIfEnabled();
67
+ // We set up the global unhandled errors before running any functionality
68
+ setupGlobalUnhandledErrorHandlers();
69
+
68
70
  const print = options.print ?? console.log;
69
71
 
70
72
  const log = debug("hardhat:core:cli:main");
@@ -236,6 +238,20 @@ export async function main(
236
238
  log("Error showing banner", bannerError);
237
239
  }
238
240
  }
241
+
242
+ const deprecatedConnectWasCalled = Boolean(
243
+ "wasConnectCalled" in hre.network &&
244
+ hre.network.wasConnectCalled !== undefined &&
245
+ typeof hre.network.wasConnectCalled === "function" &&
246
+ hre.network.wasConnectCalled(),
247
+ );
248
+
249
+ if (deprecatedConnectWasCalled) {
250
+ console.warn(
251
+ "WARNING: hre.network.connect() is deprecated and will be removed in a future version. " +
252
+ "Use hre.network.create() or hre.network.getOrCreate() instead.",
253
+ );
254
+ }
239
255
  } catch (error) {
240
256
  ensureError(error);
241
257
  printErrorMessages(error, builtinGlobalOptions?.showStackTraces);
@@ -1,5 +1,8 @@
1
1
  // NOTE: We don't use the `semver` package because it's slow to load, and this
2
2
  // is always run during the initialization of the CLI.
3
+ //
4
+ // NOTE: This file shouldn't import any non-builtin dependency, as it's imported
5
+ // before enabling source maps support. TODO: Change chalk to util.styleText
3
6
 
4
7
  import chalk from "chalk";
5
8
 
@@ -60,7 +60,7 @@ export async function sendTaskAnalytics(taskId: string[]): Promise<boolean> {
60
60
  },
61
61
  };
62
62
 
63
- return sendAnalytics(taskAnalyticsEvent);
63
+ return await sendAnalytics(taskAnalyticsEvent);
64
64
  }
65
65
 
66
66
  export async function sendProjectTypeAnalytics(
@@ -75,7 +75,7 @@ export async function sendProjectTypeAnalytics(
75
75
  },
76
76
  };
77
77
 
78
- return sendAnalytics(initAnalyticsEvent);
78
+ return await sendAnalytics(initAnalyticsEvent);
79
79
  }
80
80
 
81
81
  // Return a boolean for testing purposes to confirm whether analytics were sent based on the consent value and not in CI environments