hardhat 3.2.0 → 3.4.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 (432) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/dist/src/internal/builtin-global-options.d.ts.map +1 -1
  3. package/dist/src/internal/builtin-global-options.js +14 -1
  4. package/dist/src/internal/builtin-global-options.js.map +1 -1
  5. package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.d.ts.map +1 -1
  6. package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js +5 -13
  7. package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js.map +1 -1
  8. package/dist/src/internal/builtin-plugins/console/task-action.d.ts.map +1 -1
  9. package/dist/src/internal/builtin-plugins/console/task-action.js +2 -1
  10. package/dist/src/internal/builtin-plugins/console/task-action.js.map +1 -1
  11. package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts +1 -1
  12. package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts.map +1 -1
  13. package/dist/src/internal/builtin-plugins/gas-analytics/exports.js +1 -1
  14. package/dist/src/internal/builtin-plugins/gas-analytics/exports.js.map +1 -1
  15. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.d.ts.map +1 -1
  16. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js +1 -2
  17. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js.map +1 -1
  18. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts +7 -5
  19. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts.map +1 -1
  20. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js +60 -44
  21. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js.map +1 -1
  22. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts +6 -0
  23. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts.map +1 -0
  24. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js +14 -0
  25. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js.map +1 -0
  26. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts +4 -0
  27. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts.map +1 -0
  28. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js +27 -0
  29. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js.map +1 -0
  30. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts +36 -0
  31. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts.map +1 -0
  32. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js +86 -0
  33. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js.map +1 -0
  34. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js +1 -1
  35. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js.map +1 -1
  36. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js +1 -1
  37. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js.map +1 -1
  38. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.d.ts.map +1 -1
  39. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js +1 -2
  40. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js.map +1 -1
  41. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts +10 -2
  42. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts.map +1 -1
  43. package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.d.ts.map +1 -1
  44. package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js +12 -2
  45. package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js.map +1 -1
  46. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts +9 -3
  47. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts.map +1 -1
  48. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js +65 -42
  49. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
  50. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts +11 -0
  51. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts.map +1 -0
  52. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js +104 -0
  53. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js.map +1 -0
  54. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts +4 -4
  55. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts.map +1 -1
  56. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js +2 -2
  57. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js.map +1 -1
  58. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts +6 -3
  59. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts.map +1 -1
  60. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js +23 -5
  61. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js.map +1 -1
  62. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.d.ts.map +1 -1
  63. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js +2 -1
  64. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js.map +1 -1
  65. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts +6 -0
  66. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts.map +1 -0
  67. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js +152 -0
  68. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js.map +1 -0
  69. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts +19 -0
  70. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts.map +1 -0
  71. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js +104 -0
  72. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js.map +1 -0
  73. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.d.ts.map +1 -1
  74. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js +23 -1
  75. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js.map +1 -1
  76. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.d.ts.map +1 -1
  77. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js +25 -17
  78. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js.map +1 -1
  79. package/dist/src/internal/builtin-plugins/network-manager/http-provider.d.ts.map +1 -1
  80. package/dist/src/internal/builtin-plugins/network-manager/http-provider.js +1 -0
  81. package/dist/src/internal/builtin-plugins/network-manager/http-provider.js.map +1 -1
  82. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts +12 -2
  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 +149 -26
  85. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js.map +1 -1
  86. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.d.ts.map +1 -1
  87. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.js.map +1 -1
  88. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts +1 -0
  89. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts.map +1 -1
  90. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js +70 -33
  91. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js.map +1 -1
  92. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts +2 -0
  93. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts.map +1 -1
  94. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js +19 -12
  95. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js.map +1 -1
  96. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts +1 -0
  97. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts.map +1 -1
  98. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js +9 -3
  99. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js.map +1 -1
  100. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts +2 -0
  101. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts.map +1 -1
  102. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js +5 -1
  103. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js.map +1 -1
  104. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts +1 -0
  105. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts.map +1 -1
  106. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js +5 -1
  107. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js.map +1 -1
  108. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts +1 -0
  109. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts.map +1 -1
  110. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js +5 -1
  111. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js.map +1 -1
  112. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts +1 -0
  113. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts.map +1 -1
  114. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js +5 -1
  115. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js.map +1 -1
  116. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts +0 -3
  117. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts.map +1 -1
  118. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js +9 -12
  119. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js.map +1 -1
  120. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts +9 -0
  121. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts.map +1 -1
  122. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts +2 -0
  123. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts.map +1 -0
  124. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js +3 -0
  125. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js.map +1 -0
  126. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts +1 -1
  127. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts.map +1 -1
  128. package/dist/src/internal/builtin-plugins/network-manager/type-validation.d.ts.map +1 -1
  129. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js +2 -1
  130. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js.map +1 -1
  131. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.d.ts.map +1 -1
  132. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js +1 -1
  133. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js.map +1 -1
  134. package/dist/src/internal/builtin-plugins/node/helpers.d.ts.map +1 -1
  135. package/dist/src/internal/builtin-plugins/node/helpers.js +6 -2
  136. package/dist/src/internal/builtin-plugins/node/helpers.js.map +1 -1
  137. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.d.ts.map +1 -1
  138. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js +8 -2
  139. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js.map +1 -1
  140. package/dist/src/internal/builtin-plugins/node/task-action.js +2 -2
  141. package/dist/src/internal/builtin-plugins/node/task-action.js.map +1 -1
  142. package/dist/src/internal/builtin-plugins/run/task-action.d.ts.map +1 -1
  143. package/dist/src/internal/builtin-plugins/run/task-action.js +2 -1
  144. package/dist/src/internal/builtin-plugins/run/task-action.js.map +1 -1
  145. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.d.ts.map +1 -1
  146. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js +7 -0
  147. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js.map +1 -1
  148. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts +6 -2
  149. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
  150. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +198 -76
  151. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
  152. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts +3 -0
  153. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts.map +1 -1
  154. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.js.map +1 -1
  155. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts +5 -3
  156. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts.map +1 -1
  157. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js +35 -7
  158. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js.map +1 -1
  159. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts +16 -0
  160. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts.map +1 -1
  161. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js +1 -1
  162. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js.map +1 -1
  163. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.d.ts.map +1 -1
  164. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js +1 -1
  165. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js.map +1 -1
  166. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.d.ts.map +1 -1
  167. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js +5 -5
  168. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js.map +1 -1
  169. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts +2 -2
  170. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts.map +1 -1
  171. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.js.map +1 -1
  172. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.d.ts.map +1 -1
  173. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js +1 -0
  174. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js.map +1 -1
  175. package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js +2 -2
  176. package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js.map +1 -1
  177. package/dist/src/internal/builtin-plugins/solidity/config.d.ts +4 -2
  178. package/dist/src/internal/builtin-plugins/solidity/config.d.ts.map +1 -1
  179. package/dist/src/internal/builtin-plugins/solidity/config.js +266 -84
  180. package/dist/src/internal/builtin-plugins/solidity/config.js.map +1 -1
  181. package/dist/src/internal/builtin-plugins/solidity/constants.d.ts +3 -0
  182. package/dist/src/internal/builtin-plugins/solidity/constants.d.ts.map +1 -0
  183. package/dist/src/internal/builtin-plugins/solidity/constants.js +19 -0
  184. package/dist/src/internal/builtin-plugins/solidity/constants.js.map +1 -0
  185. package/dist/src/internal/builtin-plugins/solidity/exports.d.ts +3 -0
  186. package/dist/src/internal/builtin-plugins/solidity/exports.d.ts.map +1 -0
  187. package/dist/src/internal/builtin-plugins/solidity/exports.js +3 -0
  188. package/dist/src/internal/builtin-plugins/solidity/exports.js.map +1 -0
  189. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.d.ts.map +1 -1
  190. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js +2 -1
  191. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js.map +1 -1
  192. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts +4 -0
  193. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts.map +1 -0
  194. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js +7 -0
  195. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js.map +1 -0
  196. package/dist/src/internal/builtin-plugins/solidity/index.d.ts.map +1 -1
  197. package/dist/src/internal/builtin-plugins/solidity/index.js +1 -0
  198. package/dist/src/internal/builtin-plugins/solidity/index.js.map +1 -1
  199. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts +18 -0
  200. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts.map +1 -0
  201. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js +33 -0
  202. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js.map +1 -0
  203. package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts +1 -1
  204. package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts.map +1 -1
  205. package/dist/src/internal/builtin-plugins/solidity/tasks/build.js +225 -55
  206. package/dist/src/internal/builtin-plugins/solidity/tasks/build.js.map +1 -1
  207. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts +227 -28
  208. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts.map +1 -1
  209. package/dist/src/internal/builtin-plugins/solidity/type-extensions.js.map +1 -1
  210. package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts.map +1 -1
  211. package/dist/src/internal/builtin-plugins/solidity-test/config.js +5 -3
  212. package/dist/src/internal/builtin-plugins/solidity-test/config.js.map +1 -1
  213. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts +12 -6
  214. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts.map +1 -1
  215. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js +9 -7
  216. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js.map +1 -1
  217. package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts +1 -12
  218. package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts.map +1 -1
  219. package/dist/src/internal/builtin-plugins/solidity-test/formatters.js +0 -150
  220. package/dist/src/internal/builtin-plugins/solidity-test/formatters.js.map +1 -1
  221. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +4 -5
  222. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
  223. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +5 -12
  224. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
  225. package/dist/src/internal/builtin-plugins/solidity-test/index.d.ts.map +1 -1
  226. package/dist/src/internal/builtin-plugins/solidity-test/index.js +0 -7
  227. package/dist/src/internal/builtin-plugins/solidity-test/index.js.map +1 -1
  228. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts +7 -0
  229. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts.map +1 -0
  230. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js +20 -0
  231. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js.map +1 -0
  232. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts +24 -0
  233. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts.map +1 -0
  234. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js +68 -0
  235. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js.map +1 -0
  236. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts +13 -0
  237. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts.map +1 -0
  238. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js +136 -0
  239. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js.map +1 -0
  240. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts +19 -0
  241. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts.map +1 -0
  242. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js +133 -0
  243. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js.map +1 -0
  244. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts +10 -0
  245. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts.map +1 -0
  246. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js +2 -0
  247. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js.map +1 -0
  248. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts +12 -0
  249. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts.map +1 -0
  250. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js +81 -0
  251. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js.map +1 -0
  252. package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts +1 -1
  253. package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts.map +1 -1
  254. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js +5 -2
  255. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js.map +1 -1
  256. package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts +2 -8
  257. package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts.map +1 -1
  258. package/dist/src/internal/builtin-plugins/solidity-test/runner.js +47 -50
  259. package/dist/src/internal/builtin-plugins/solidity-test/runner.js.map +1 -1
  260. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.d.ts.map +1 -1
  261. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js +11 -2
  262. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js.map +1 -1
  263. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts +0 -1
  264. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts.map +1 -1
  265. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +122 -39
  266. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
  267. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts +1 -2
  268. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts.map +1 -1
  269. package/dist/src/internal/builtin-plugins/test/index.d.ts.map +1 -1
  270. package/dist/src/internal/builtin-plugins/test/index.js +0 -7
  271. package/dist/src/internal/builtin-plugins/test/index.js.map +1 -1
  272. package/dist/src/internal/builtin-plugins/test/task-action.d.ts +0 -1
  273. package/dist/src/internal/builtin-plugins/test/task-action.d.ts.map +1 -1
  274. package/dist/src/internal/builtin-plugins/test/task-action.js +4 -8
  275. package/dist/src/internal/builtin-plugins/test/task-action.js.map +1 -1
  276. package/dist/src/internal/cli/help/get-help-string.d.ts.map +1 -1
  277. package/dist/src/internal/cli/help/get-help-string.js +1 -1
  278. package/dist/src/internal/cli/help/get-help-string.js.map +1 -1
  279. package/dist/src/internal/cli/init/init.d.ts.map +1 -1
  280. package/dist/src/internal/cli/init/init.js +1 -1
  281. package/dist/src/internal/cli/init/init.js.map +1 -1
  282. package/dist/src/internal/cli/init/prompt.d.ts.map +1 -1
  283. package/dist/src/internal/cli/init/prompt.js +1 -7
  284. package/dist/src/internal/cli/init/prompt.js.map +1 -1
  285. package/dist/src/internal/cli/main.d.ts.map +1 -1
  286. package/dist/src/internal/cli/main.js +8 -0
  287. package/dist/src/internal/cli/main.js.map +1 -1
  288. package/dist/src/internal/core/hre.d.ts +2 -1
  289. package/dist/src/internal/core/hre.d.ts.map +1 -1
  290. package/dist/src/internal/core/hre.js +18 -0
  291. package/dist/src/internal/core/hre.js.map +1 -1
  292. package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.d.ts.map +1 -1
  293. package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js +6 -1
  294. package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js.map +1 -1
  295. package/dist/src/internal/core/user-interruptions.d.ts.map +1 -1
  296. package/dist/src/internal/core/user-interruptions.js +2 -5
  297. package/dist/src/internal/core/user-interruptions.js.map +1 -1
  298. package/dist/src/internal/utils/colorizer.d.ts +10 -0
  299. package/dist/src/internal/utils/colorizer.d.ts.map +1 -0
  300. package/dist/src/internal/utils/colorizer.js +2 -0
  301. package/dist/src/internal/utils/colorizer.js.map +1 -0
  302. package/dist/src/internal/utils/package.d.ts.map +1 -1
  303. package/dist/src/internal/utils/package.js +1 -1
  304. package/dist/src/internal/utils/package.js.map +1 -1
  305. package/dist/src/types/artifacts.d.ts +5 -4
  306. package/dist/src/types/artifacts.d.ts.map +1 -1
  307. package/dist/src/types/global-options.d.ts +1 -0
  308. package/dist/src/types/global-options.d.ts.map +1 -1
  309. package/dist/src/types/hooks.d.ts +32 -0
  310. package/dist/src/types/hooks.d.ts.map +1 -1
  311. package/dist/src/types/network.d.ts +39 -0
  312. package/dist/src/types/network.d.ts.map +1 -1
  313. package/dist/src/types/solidity/build-system.d.ts +66 -3
  314. package/dist/src/types/solidity/build-system.d.ts.map +1 -1
  315. package/dist/src/types/solidity/build-system.js.map +1 -1
  316. package/dist/src/types/solidity/compilation-job.d.ts +11 -5
  317. package/dist/src/types/solidity/compilation-job.d.ts.map +1 -1
  318. package/dist/src/types/solidity/solidity-artifacts.d.ts +29 -0
  319. package/dist/src/types/solidity/solidity-artifacts.d.ts.map +1 -1
  320. package/package.json +10 -9
  321. package/src/internal/builtin-global-options.ts +15 -1
  322. package/src/internal/builtin-plugins/artifacts/artifact-manager.ts +9 -15
  323. package/src/internal/builtin-plugins/console/task-action.ts +2 -1
  324. package/src/internal/builtin-plugins/gas-analytics/exports.ts +1 -1
  325. package/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.ts +1 -2
  326. package/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts +100 -61
  327. package/src/internal/builtin-plugins/gas-analytics/helpers/accessors.ts +31 -0
  328. package/src/internal/builtin-plugins/gas-analytics/helpers/compat.ts +37 -0
  329. package/src/internal/builtin-plugins/gas-analytics/helpers/utils.ts +112 -0
  330. package/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.ts +1 -1
  331. package/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.ts +1 -1
  332. package/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.ts +1 -2
  333. package/src/internal/builtin-plugins/gas-analytics/types.ts +11 -2
  334. package/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.ts +25 -3
  335. package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +107 -56
  336. package/src/internal/builtin-plugins/network-manager/edr/genesis-state.ts +179 -0
  337. package/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.ts +4 -0
  338. package/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.ts +28 -4
  339. package/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.ts +2 -1
  340. package/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.ts +197 -0
  341. package/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.ts +137 -0
  342. package/src/internal/builtin-plugins/network-manager/hook-handlers/hre.ts +30 -0
  343. package/src/internal/builtin-plugins/network-manager/hook-handlers/network.ts +27 -24
  344. package/src/internal/builtin-plugins/network-manager/http-provider.ts +1 -0
  345. package/src/internal/builtin-plugins/network-manager/network-manager.ts +213 -37
  346. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.ts +1 -0
  347. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.ts +115 -34
  348. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.ts +25 -17
  349. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.ts +13 -5
  350. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.ts +7 -1
  351. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.ts +7 -1
  352. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.ts +7 -1
  353. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.ts +7 -1
  354. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.ts +10 -30
  355. package/src/internal/builtin-plugins/network-manager/request-handlers/types.ts +10 -0
  356. package/src/internal/builtin-plugins/network-manager/revert-error-code.ts +2 -0
  357. package/src/internal/builtin-plugins/network-manager/type-extensions/config.ts +1 -1
  358. package/src/internal/builtin-plugins/network-manager/type-validation.ts +5 -1
  359. package/src/internal/builtin-plugins/node/artifacts/build-info-watcher.ts +1 -2
  360. package/src/internal/builtin-plugins/node/helpers.ts +9 -2
  361. package/src/internal/builtin-plugins/node/json-rpc/handler.ts +10 -2
  362. package/src/internal/builtin-plugins/node/task-action.ts +2 -2
  363. package/src/internal/builtin-plugins/run/task-action.ts +2 -1
  364. package/src/internal/builtin-plugins/solidity/build-system/artifacts.ts +10 -2
  365. package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +297 -99
  366. package/src/internal/builtin-plugins/solidity/build-system/cache.ts +3 -0
  367. package/src/internal/builtin-plugins/solidity/build-system/compilation-job.ts +49 -16
  368. package/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.ts +1 -1
  369. package/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.ts +1 -2
  370. package/src/internal/builtin-plugins/solidity/build-system/dependency-graph.ts +9 -7
  371. package/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.ts +4 -2
  372. package/src/internal/builtin-plugins/solidity/build-system/solc-info.ts +1 -0
  373. package/src/internal/builtin-plugins/solidity/build-system/warning-suppression.ts +2 -2
  374. package/src/internal/builtin-plugins/solidity/config.ts +359 -124
  375. package/src/internal/builtin-plugins/solidity/constants.ts +21 -0
  376. package/src/internal/builtin-plugins/solidity/exports.ts +2 -0
  377. package/src/internal/builtin-plugins/solidity/hook-handlers/config.ts +3 -0
  378. package/src/internal/builtin-plugins/solidity/hook-handlers/solidity.ts +9 -0
  379. package/src/internal/builtin-plugins/solidity/index.ts +1 -0
  380. package/src/internal/builtin-plugins/solidity/solidity-hooks.ts +53 -0
  381. package/src/internal/builtin-plugins/solidity/tasks/build.ts +359 -74
  382. package/src/internal/builtin-plugins/solidity/type-extensions.ts +289 -32
  383. package/src/internal/builtin-plugins/solidity-test/config.ts +11 -2
  384. package/src/internal/builtin-plugins/solidity-test/edr-artifacts.ts +22 -10
  385. package/src/internal/builtin-plugins/solidity-test/formatters.ts +1 -213
  386. package/src/internal/builtin-plugins/solidity-test/helpers.ts +8 -15
  387. package/src/internal/builtin-plugins/solidity-test/index.ts +0 -7
  388. package/src/internal/builtin-plugins/solidity-test/inline-config/constants.ts +21 -0
  389. package/src/internal/builtin-plugins/solidity-test/inline-config/helpers.ts +99 -0
  390. package/src/internal/builtin-plugins/solidity-test/inline-config/index.ts +272 -0
  391. package/src/internal/builtin-plugins/solidity-test/inline-config/parsing.ts +186 -0
  392. package/src/internal/builtin-plugins/solidity-test/inline-config/types.ts +9 -0
  393. package/src/internal/builtin-plugins/solidity-test/inline-config/validation.ts +122 -0
  394. package/src/internal/builtin-plugins/solidity-test/reporter.ts +6 -6
  395. package/src/internal/builtin-plugins/solidity-test/runner.ts +64 -83
  396. package/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.ts +15 -2
  397. package/src/internal/builtin-plugins/solidity-test/task-action.ts +192 -57
  398. package/src/internal/builtin-plugins/solidity-test/type-extensions.ts +1 -2
  399. package/src/internal/builtin-plugins/test/index.ts +0 -7
  400. package/src/internal/builtin-plugins/test/task-action.ts +4 -10
  401. package/src/internal/cli/help/get-help-string.ts +2 -2
  402. package/src/internal/cli/init/init.ts +1 -1
  403. package/src/internal/cli/init/prompt.ts +1 -14
  404. package/src/internal/cli/main.ts +14 -0
  405. package/src/internal/core/hre.ts +33 -0
  406. package/src/internal/core/plugins/detect-plugin-npm-dependency-problems.ts +8 -1
  407. package/src/internal/core/user-interruptions.ts +3 -5
  408. package/src/internal/utils/colorizer.ts +9 -0
  409. package/src/internal/utils/package.ts +1 -2
  410. package/src/types/artifacts.ts +5 -4
  411. package/src/types/global-options.ts +1 -0
  412. package/src/types/hooks.ts +37 -0
  413. package/src/types/network.ts +48 -0
  414. package/src/types/solidity/build-system.ts +66 -3
  415. package/src/types/solidity/compilation-job.ts +12 -5
  416. package/src/types/solidity/solidity-artifacts.ts +32 -0
  417. package/templates/hardhat-2/04-mocha-viem-ts/package.json +1 -1
  418. package/templates/hardhat-3/01-node-test-runner-viem/gitignore +11 -0
  419. package/templates/hardhat-3/01-node-test-runner-viem/package.json +12 -12
  420. package/templates/hardhat-3/01-node-test-runner-viem/scripts/send-op-tx.ts +1 -1
  421. package/templates/hardhat-3/01-node-test-runner-viem/test/Counter.ts +1 -1
  422. package/templates/hardhat-3/02-mocha-ethers/gitignore +11 -0
  423. package/templates/hardhat-3/02-mocha-ethers/package.json +14 -14
  424. package/templates/hardhat-3/02-mocha-ethers/scripts/send-op-tx.ts +1 -1
  425. package/templates/hardhat-3/02-mocha-ethers/test/Counter.ts +1 -1
  426. package/templates/hardhat-3/03-minimal/gitignore +11 -0
  427. package/templates/hardhat-3/03-minimal/package.json +1 -1
  428. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts +0 -19
  429. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts.map +0 -1
  430. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js +0 -46
  431. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.map +0 -1
  432. package/src/internal/builtin-plugins/gas-analytics/helpers.ts +0 -86
@@ -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";
@@ -1,13 +1,17 @@
1
- import type { RunOptions } from "./runner.js";
1
+ import type {
2
+ BuildInfoAndOutput,
3
+ EdrArtifactWithMetadata,
4
+ } from "./edr-artifacts.js";
2
5
  import type { TestEvent } from "./types.js";
6
+ import type {
7
+ BuildScope,
8
+ SolidityBuildSystem,
9
+ } from "../../../types/solidity.js";
3
10
  import type { NewTaskActionFunction } from "../../../types/tasks.js";
4
11
  import type { TestRunResult } from "../../../types/test.js";
5
12
  import type { Result } from "../../../types/utils.js";
6
13
  import type {
7
- Artifact as EdrArtifact,
8
- BuildInfoAndOutput,
9
14
  ObservabilityConfig,
10
- SolidityTestRunnerConfigArgs,
11
15
  TracingConfigWithBuffers,
12
16
  SuiteResult,
13
17
  } from "@nomicfoundation/edr";
@@ -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,16 +28,19 @@ 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
- import { getEdrArtifacts, getBuildInfos } from "./edr-artifacts.js";
34
+ import {
35
+ buildEdrArtifactsWithMetadata,
36
+ getBuildInfosAndOutputs,
37
+ } from "./edr-artifacts.js";
30
38
  import {
31
39
  isTestSuiteArtifact,
32
40
  warnDeprecatedTestFail,
33
- solidityTestConfigToRunOptions,
34
41
  solidityTestConfigToSolidityTestRunnerConfigArgs,
35
42
  } from "./helpers.js";
43
+ import { getTestFunctionOverrides } from "./inline-config/index.js";
36
44
  import { testReporter } from "./reporter.js";
37
45
  import { run } from "./runner.js";
38
46
 
@@ -41,7 +49,6 @@ interface TestActionArguments {
41
49
  chainType: string;
42
50
  grep?: string;
43
51
  noCompile: boolean;
44
- verbosity: number;
45
52
  testSummaryIndex: number;
46
53
  }
47
54
 
@@ -50,12 +57,26 @@ export interface SolidityTestRunResult extends TestRunResult {
50
57
  }
51
58
 
52
59
  const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
53
- { testFiles, chainType, grep, noCompile, verbosity, testSummaryIndex },
60
+ { testFiles, chainType, grep, noCompile, testSummaryIndex },
54
61
  hre,
55
62
  ): Promise<Result<SolidityTestRunResult, SolidityTestRunResult>> => {
56
63
  // Set an environment variable that plugins can use to detect when a process is running tests
57
64
  process.env.HH_TEST = "true";
58
65
 
66
+ const verbosity = hre.globalOptions.verbosity;
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
+
59
80
  // Sets the NODE_ENV environment variable to "test" so the code can detect that tests are running
60
81
  // This is done by other JS/TS test frameworks like vitest
61
82
  process.env.NODE_ENV ??= "test";
@@ -71,61 +92,104 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
71
92
  );
72
93
  }
73
94
 
74
- // Run the build task for contract files if needed
75
- if (noCompile !== true) {
76
- await hre.tasks.getTask("build").run({
77
- noTests: true,
78
- });
79
- }
95
+ let testRootPathsToRun: string[];
96
+ let edrArtifactsWithMetadata: EdrArtifactWithMetadata[];
97
+ let allBuildInfosAndOutputs: BuildInfoAndOutput[];
80
98
 
81
- // Run the build task for test files
82
- const { testRootPaths }: { testRootPaths: string[] } = await hre.tasks
83
- .getTask("build")
84
- .run({
85
- files: testFiles,
86
- noContracts: true,
87
- });
88
- console.log();
99
+ if (hre.config.solidity.splitTestsCompilation) {
100
+ if (noCompile !== true) {
101
+ await hre.tasks.getTask("build").run({
102
+ noTests: true,
103
+ });
104
+ }
89
105
 
90
- // EDR needs all artifacts (contracts + tests)
91
- const edrArtifacts: Array<{
92
- edrArtifact: EdrArtifact;
93
- userSourceName: string;
94
- }> = [];
95
- const buildInfos: BuildInfoAndOutput[] = [];
96
- for (const scope of ["contracts", "tests"] as const) {
97
- const artifactsDir = await hre.solidity.getArtifactsDirectory(scope);
98
- const artifactManager = new ArtifactManagerImplementation(artifactsDir);
99
- edrArtifacts.push(...(await getEdrArtifacts(artifactManager)));
100
- buildInfos.push(...(await getBuildInfos(artifactManager)));
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
+ }
101
168
  }
102
169
 
103
170
  const sourceNameToUserSourceName = new Map(
104
- edrArtifacts.map(({ userSourceName, edrArtifact }) => [
171
+ edrArtifactsWithMetadata.map(({ userSourceName, edrArtifact }) => [
105
172
  edrArtifact.id.source,
106
173
  userSourceName,
107
174
  ]),
108
175
  );
109
176
 
110
- edrArtifacts.forEach(({ userSourceName, edrArtifact }) => {
111
- if (
112
- testRootPaths.includes(
113
- resolveFromRoot(hre.config.paths.root, userSourceName),
114
- ) &&
115
- isTestSuiteArtifact(edrArtifact)
116
- ) {
117
- warnDeprecatedTestFail(edrArtifact, sourceNameToUserSourceName);
118
- }
119
- });
120
-
121
- const testSuiteIds = edrArtifacts
177
+ const testRootPathsSet = new Set(testRootPathsToRun);
178
+ const testSuiteArtifacts = edrArtifactsWithMetadata
122
179
  .filter(({ userSourceName }) =>
123
- testRootPaths.includes(
180
+ testRootPathsSet.has(
124
181
  resolveFromRoot(hre.config.paths.root, userSourceName),
125
182
  ),
126
183
  )
127
- .filter(({ edrArtifact }) => isTestSuiteArtifact(edrArtifact))
128
- .map(({ edrArtifact }) => edrArtifact.id);
184
+ .filter(({ edrArtifact }) => isTestSuiteArtifact(edrArtifact));
185
+
186
+ for (const { edrArtifact } of testSuiteArtifacts) {
187
+ warnDeprecatedTestFail(edrArtifact, sourceNameToUserSourceName);
188
+ }
189
+
190
+ const testSuiteIds = testSuiteArtifacts.map(
191
+ ({ edrArtifact }) => edrArtifact.id,
192
+ );
129
193
 
130
194
  console.log("Running Solidity tests");
131
195
  console.log();
@@ -160,7 +224,12 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
160
224
  }
161
225
  }
162
226
 
163
- const testRunnerConfig: SolidityTestRunnerConfigArgs =
227
+ const testFunctionOverrides = getTestFunctionOverrides(
228
+ testSuiteArtifacts,
229
+ allBuildInfosAndOutputs,
230
+ );
231
+
232
+ const testRunnerConfig =
164
233
  await solidityTestConfigToSolidityTestRunnerConfigArgs({
165
234
  chainType,
166
235
  projectRoot: hre.config.paths.root,
@@ -172,14 +241,15 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
172
241
  generateGasReport:
173
242
  hre.globalOptions.gasStats ||
174
243
  hre.globalOptions.gasStatsJson !== undefined,
244
+ testFunctionOverrides,
175
245
  });
176
246
  const tracingConfig: TracingConfigWithBuffers = {
177
- buildInfos,
247
+ buildInfos: allBuildInfosAndOutputs.map(({ buildInfo, output }) => ({
248
+ buildInfo,
249
+ output,
250
+ })),
178
251
  ignoreContracts: false,
179
252
  };
180
- const options: RunOptions =
181
- solidityTestConfigToRunOptions(solidityTestConfig);
182
-
183
253
  await hre.hooks.runHandlerChain(
184
254
  "test",
185
255
  "onTestRunStart",
@@ -189,12 +259,11 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
189
259
 
190
260
  const runStream = run(
191
261
  chainType,
192
- edrArtifacts.map(({ edrArtifact }) => edrArtifact),
262
+ edrArtifactsWithMetadata.map(({ edrArtifact }) => edrArtifact),
193
263
  testSuiteIds,
194
264
  testRunnerConfig,
195
265
  tracingConfig,
196
266
  sourceNameToUserSourceName,
197
- options,
198
267
  );
199
268
 
200
269
  let failed = 0;
@@ -297,4 +366,70 @@ const runSolidityTests: NewTaskActionFunction<TestActionArguments> = async (
297
366
  : successfulResult(result);
298
367
  };
299
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
+
300
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
 
@@ -1,7 +1,6 @@
1
1
  import type { HardhatPlugin } from "../../../types/plugins.js";
2
2
 
3
3
  import { ArgumentType } from "../../../types/arguments.js";
4
- import { DEFAULT_VERBOSITY } from "../../constants.js";
5
4
  import { task } from "../../core/config.js";
6
5
 
7
6
  import "./type-extensions.js";
@@ -33,12 +32,6 @@ const hardhatPlugin: HardhatPlugin = {
33
32
  name: "noCompile",
34
33
  description: "Do not compile the project before running the tests",
35
34
  })
36
- .addLevel({
37
- name: "verbosity",
38
- shortName: "v",
39
- description: "Verbosity level of the test output",
40
- defaultValue: DEFAULT_VERBOSITY,
41
- })
42
35
  .setAction(async () => import("./task-action.js"))
43
36
  .build(),
44
37
  ],
@@ -17,14 +17,13 @@ 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[];
24
24
  chainType: string;
25
25
  grep: string | undefined;
26
26
  noCompile: boolean;
27
- verbosity: number;
28
27
  }
29
28
 
30
29
  // Old plugins may only return { failed, passed } without skipped/todo,
@@ -51,7 +50,7 @@ function isTestRunResult(
51
50
  }
52
51
 
53
52
  const runAllTests: NewTaskActionFunction<TestActionArguments> = async (
54
- { testFiles, chainType, grep, noCompile, verbosity, ...otherArgs },
53
+ { testFiles, chainType, grep, noCompile, ...otherArgs },
55
54
  hre,
56
55
  ): Promise<Result<void, void>> => {
57
56
  // If this code is executed, it means the user has not specified a test runner.
@@ -65,9 +64,8 @@ const runAllTests: NewTaskActionFunction<TestActionArguments> = async (
65
64
  const thisTask = hre.tasks.getTask("test");
66
65
 
67
66
  if (!noCompile) {
68
- await hre.tasks.getTask("build").run({
69
- noTests: true,
70
- });
67
+ const noTests = hre.config.solidity.splitTestsCompilation;
68
+ await hre.tasks.getTask("build").run({ noTests });
71
69
  }
72
70
 
73
71
  if (hre.globalOptions.coverage === true) {
@@ -107,10 +105,6 @@ const runAllTests: NewTaskActionFunction<TestActionArguments> = async (
107
105
  args.chainType = chainType;
108
106
  }
109
107
 
110
- if (subtask.options.has("verbosity")) {
111
- args.verbosity = verbosity;
112
- }
113
-
114
108
  for (const [key, value] of Object.entries(otherArgs)) {
115
109
  if (subtask.options.has(key)) {
116
110
  args[key] = value;
@@ -1,6 +1,8 @@
1
1
  import type { GlobalOptionDefinitions } from "../../../types/global-options.js";
2
2
  import type { Task } from "../../../types/tasks.js";
3
3
 
4
+ import chalk from "chalk";
5
+
4
6
  import {
5
7
  GLOBAL_NAME_PADDING,
6
8
  parseOptions,
@@ -15,8 +17,6 @@ export async function getHelpString(
15
17
  task: Task,
16
18
  globalOptionDefinitions: GlobalOptionDefinitions,
17
19
  ): Promise<string> {
18
- const { default: chalk } = await import("chalk");
19
-
20
20
  const { options, positionalArguments } = parseOptions(task);
21
21
 
22
22
  const subtasks = parseSubtasks(task);
@@ -29,6 +29,7 @@ import {
29
29
  getHardhatVersion,
30
30
  getLatestHardhatVersion,
31
31
  } from "../../utils/package.js";
32
+ import { BannerManager } from "../banner-manager.js";
32
33
  import { sendProjectTypeAnalytics } from "../telemetry/analytics/analytics.js";
33
34
  import { sendErrorTelemetry } from "../telemetry/sentry/reporter.js";
34
35
 
@@ -133,7 +134,6 @@ export async function initHardhat(options?: InitHardhatOptions): Promise<void> {
133
134
  showStarOnGitHubMessage();
134
135
 
135
136
  try {
136
- const { BannerManager } = await import("../banner-manager.js");
137
137
  const bannerManager = await BannerManager.getInstance();
138
138
  await bannerManager.showBanner();
139
139
  } catch (bannerError) {