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
@@ -0,0 +1,64 @@
1
+ import { isObject } from "@nomicfoundation/hardhat-utils/lang";
2
+ import debug from "debug";
3
+
4
+ import { sendErrorTelemetry } from "./reporter.js";
5
+
6
+ const log = debug("hardhat:core:telemetry:global-error-handlers");
7
+
8
+ function createUnhandledErrorListener(isPromiseRejection: boolean) {
9
+ const description = isPromiseRejection
10
+ ? "Unhandled promise rejection"
11
+ : "Uncaught exception";
12
+
13
+ const mechanismType = isPromiseRejection
14
+ ? "onunhandledrejection"
15
+ : "onuncaughtexception";
16
+
17
+ async function listener(error: Error | unknown) {
18
+ log(description, error);
19
+
20
+ const telemetryError =
21
+ error instanceof Error
22
+ ? error
23
+ : new Error(
24
+ isObject(error) &&
25
+ "message" in error &&
26
+ typeof error.message === "string"
27
+ ? error.message
28
+ : "Unknown error",
29
+ { cause: error },
30
+ );
31
+
32
+ try {
33
+ await sendErrorTelemetry(telemetryError, {
34
+ unhandled: true,
35
+ mechanismType,
36
+ });
37
+ } catch (telemetryErrorReportingError) {
38
+ log(
39
+ "Failed to send telemetry for unhandled error",
40
+ telemetryErrorReportingError,
41
+ );
42
+ }
43
+
44
+ console.error();
45
+ console.error(`${description}:`);
46
+ console.error();
47
+ console.error(error);
48
+
49
+ process.exit(1);
50
+ }
51
+
52
+ return listener;
53
+ }
54
+
55
+ /**
56
+ * Sets up global error handlers that report unhandled errors and promise
57
+ * rejections if authorized by the user.
58
+ */
59
+ export function setupGlobalUnhandledErrorHandlers(): void {
60
+ log("Setting up global unhandled error handlers");
61
+
62
+ process.on("uncaughtException", createUnhandledErrorListener(false));
63
+ process.on("unhandledRejection", createUnhandledErrorListener(true));
64
+ }
@@ -0,0 +1,49 @@
1
+ import type * as SentryReporterT from "../sentry/reporter.js";
2
+
3
+ // Sentry's reporter loads a large number of modules, so we only load it if
4
+ // needed.
5
+ let sentryReporterModule: typeof SentryReporterT | undefined;
6
+
7
+ // We cache the `setCliHardhatConfigPath` to avoid loading the reporter just
8
+ // for this setting. We load it and set the config path if needed.
9
+ let cliHardhatConfigPath: string | undefined;
10
+
11
+ /**
12
+ * Reports an error if telemetry is authorized by the user.
13
+ *
14
+ * While this function is async, it's expected to always complete quickly,
15
+ * delegating the actual reporting to a subprocess.
16
+ *
17
+ * @param error - The error to report.
18
+ * @param hint - Optional metadata describing how the error was captured, used
19
+ * to tag the event in Sentry so unhandled crashes can be distinguished from
20
+ * errors caught and reported by the CLI.
21
+ * @param hint.unhandled - Whether the error reached a global handler without
22
+ * being caught (e.g. an uncaught exception or unhandled promise rejection).
23
+ * Defaults to `false` (i.e. the error was handled).
24
+ * @param hint.mechanismType - The Sentry mechanism type, used as a tag on the
25
+ * event. Common values are `"onuncaughtexception"`, `"onunhandledrejection"`,
26
+ * `"instrument"`, and `"generic"`. Defaults to `"generic"`.
27
+ */
28
+ export async function sendErrorTelemetry(
29
+ error: Error,
30
+ hint?: { unhandled?: boolean; mechanismType?: string },
31
+ ): Promise<void> {
32
+ if (sentryReporterModule === undefined) {
33
+ sentryReporterModule = await import("../sentry/reporter.js");
34
+ }
35
+
36
+ if (cliHardhatConfigPath !== undefined) {
37
+ sentryReporterModule.setCliHardhatConfigPath(cliHardhatConfigPath);
38
+ }
39
+
40
+ await sentryReporterModule.sendErrorTelemetry(error, hint);
41
+ }
42
+
43
+ /**
44
+ * Sets the config path used in the Hardhat CLI. This is used for better
45
+ * anonymization of errors.
46
+ */
47
+ export function setCliHardhatConfigPath(configPath: string): void {
48
+ cliHardhatConfigPath = configPath;
49
+ }
@@ -359,7 +359,7 @@ export class Anonymizer {
359
359
  async #anonymizeFrames(frames: StackFrame[]): Promise<StackFrame[]> {
360
360
  const anonymizedFrames = await Promise.all(
361
361
  frames.map(async (frame) => {
362
- return this.#anonymizeFrame(frame);
362
+ return await this.#anonymizeFrame(frame);
363
363
  }),
364
364
  );
365
365
  return anonymizedFrames;
@@ -1,10 +1,6 @@
1
1
  /* This file is inspired by https://github.com/getsentry/sentry-javascript/blob/9.4.0/packages/node/src/sdk/index.ts */
2
2
 
3
- import type {
4
- Client,
5
- ServerRuntimeClientOptions,
6
- Transport,
7
- } from "@sentry/core";
3
+ import type { ServerRuntimeClientOptions, Transport } from "@sentry/core";
8
4
 
9
5
  import os from "node:os";
10
6
  import path from "node:path";
@@ -18,15 +14,12 @@ import {
18
14
  ServerRuntimeClient,
19
15
  stackParserFromStackParserOptions,
20
16
  } from "@sentry/core";
21
- import debug from "debug";
22
17
 
23
18
  import { GENERIC_SERVER_NAME } from "./constants.js";
24
19
  import { nodeContextIntegration } from "./vendor/integrations/context.js";
25
20
  import { contextLinesIntegration } from "./vendor/integrations/contextlines.js";
26
21
  import { createGetModuleFromFilename } from "./vendor/utils/module.js";
27
22
 
28
- const log = debug("hardhat:core:sentry:init");
29
-
30
23
  interface GlobalCustomSentryReporterOptions {
31
24
  /**
32
25
  * Sentry's DSN
@@ -49,12 +42,6 @@ interface GlobalCustomSentryReporterOptions {
49
42
  * See the transport module for the different options.
50
43
  */
51
44
  transport: Transport;
52
-
53
- /**
54
- * If `true`, the global unhandled rejection and uncaught exception handlers
55
- * will be installed.
56
- */
57
- installGlobalHandlers?: boolean;
58
45
  }
59
46
 
60
47
  /**
@@ -72,12 +59,9 @@ interface GlobalCustomSentryReporterOptions {
72
59
  * The reason that this uses the global instance of sentry (by calling
73
60
  * initAndBind), is that using the client directly doesn't work with the linked
74
61
  * errors integration.
75
- *
76
- * Calling `init` also has an option to set global unhandled rejection and
77
- * uncaught exception handlers.
78
62
  */
79
63
  export function init(options: GlobalCustomSentryReporterOptions): void {
80
- const client = initAndBind<ServerRuntimeClient, ServerRuntimeClientOptions>(
64
+ initAndBind<ServerRuntimeClient, ServerRuntimeClientOptions>(
81
65
  ServerRuntimeClient,
82
66
  {
83
67
  dsn: options.dsn,
@@ -113,48 +97,4 @@ export function init(options: GlobalCustomSentryReporterOptions): void {
113
97
  ),
114
98
  },
115
99
  );
116
-
117
- setupGlobalUnhandledErrorHandlers(client);
118
- }
119
-
120
- function createUnhandledErrorListener(
121
- client: Client,
122
- isPromiseRejection: boolean,
123
- ) {
124
- const description = isPromiseRejection
125
- ? "Unhandled promise rejection"
126
- : "Uncaught exception";
127
-
128
- async function listener(error: Error | unknown) {
129
- log(description, error);
130
-
131
- client.captureException(error, {
132
- captureContext: {
133
- level: "fatal",
134
- },
135
- mechanism: {
136
- handled: false,
137
- type: "onuncaughtexception",
138
- },
139
- });
140
-
141
- await client.flush(100);
142
- await client.close(100);
143
-
144
- console.error();
145
- console.error(`${description}:`);
146
- console.error();
147
- console.error(error);
148
-
149
- process.exit(1);
150
- }
151
-
152
- return listener;
153
- }
154
-
155
- function setupGlobalUnhandledErrorHandlers(client: Client) {
156
- log("Setting up global unhandled error handlers");
157
-
158
- process.on("uncaughtException", createUnhandledErrorListener(client, false));
159
- process.on("unhandledRejection", createUnhandledErrorListener(client, true));
160
100
  }
@@ -19,15 +19,16 @@ const log = debug("hardhat:cli:telemetry:sentry:reporter");
19
19
  export const SENTRY_DSN =
20
20
  "https://572b03708e298427cc72fc26dac1e8b2@o385026.ingest.us.sentry.io/4508780138856448"; // PROD
21
21
 
22
- // TODO: This could be done in a more elegant way, but for now, we just
23
- // initialize the entire reporter so that it sets the global error handlers.
24
- export async function setupErrorTelemetryIfEnabled(): Promise<void> {
25
- await Reporter.getInstance(true);
26
- }
27
-
28
- export async function sendErrorTelemetry(error: Error): Promise<boolean> {
22
+ /**
23
+ * @deprecated Use packages/hardhat/src/internal/cli/telemetry/error-reporter/reporter.ts
24
+ * instead.
25
+ */
26
+ export async function sendErrorTelemetry(
27
+ error: Error,
28
+ hint?: { unhandled?: boolean; mechanismType?: string },
29
+ ): Promise<boolean> {
29
30
  const instance = await Reporter.getInstance();
30
- return instance.reportErrorViaSubprocess(error);
31
+ return await instance.reportErrorViaSubprocess(error, hint);
31
32
  }
32
33
 
33
34
  export function setCliHardhatConfigPath(configPath: string): void {
@@ -57,9 +58,7 @@ class Reporter {
57
58
  this.#hardhatConfigPath = configPath;
58
59
  }
59
60
 
60
- public static async getInstance(
61
- shouldSetupErrorHandlers = false,
62
- ): Promise<Reporter> {
61
+ public static async getInstance(): Promise<Reporter> {
63
62
  if (this.#instance !== undefined) {
64
63
  return this.#instance;
65
64
  }
@@ -94,7 +93,6 @@ class Reporter {
94
93
  ),
95
94
  release,
96
95
  environment,
97
- installGlobalHandlers: shouldSetupErrorHandlers,
98
96
  });
99
97
 
100
98
  setExtra("nodeVersion", process.version);
@@ -108,17 +106,31 @@ class Reporter {
108
106
  this.#instance = undefined;
109
107
  }
110
108
 
111
- public async reportErrorViaSubprocess(error: Error): Promise<boolean> {
109
+ public async reportErrorViaSubprocess(
110
+ error: Error,
111
+ hint?: { unhandled?: boolean; mechanismType?: string },
112
+ ): Promise<boolean> {
112
113
  if (!(await this.#shouldBeReported(error))) {
113
114
  log("Error not send: this type of error should not be reported");
114
115
  return false;
115
116
  }
116
117
 
117
- const { captureException } = await import("@sentry/core");
118
+ const { captureException, flush } = await import("@sentry/core");
118
119
 
119
120
  log("Capturing exception");
120
121
 
121
- captureException(error);
122
+ captureException(
123
+ error,
124
+ hint !== undefined
125
+ ? {
126
+ mechanism: {
127
+ type: hint.mechanismType ?? "generic",
128
+ handled: hint.unhandled !== true,
129
+ },
130
+ }
131
+ : undefined,
132
+ );
133
+ await flush();
122
134
 
123
135
  return true;
124
136
  }
@@ -139,7 +139,7 @@ export async function sendEnvelopeToSentryBackend(
139
139
  dsn: string,
140
140
  envelope: Envelope,
141
141
  ): Promise<TransportMakeRequestResponse> {
142
- return sendSerializedEnvelopeToSentryBackend(
142
+ return await sendSerializedEnvelopeToSentryBackend(
143
143
  dsn,
144
144
  serializeEnvelope(envelope),
145
145
  );
@@ -35,7 +35,7 @@ export async function isTelemetryAllowed(
35
35
  return process.env.HARDHAT_TEST_TELEMETRY_ENABLED === "true" ? true : false;
36
36
  }
37
37
 
38
- return isTelemetryEnabled(telemetryConfigFilePath);
38
+ return await isTelemetryEnabled(telemetryConfigFilePath);
39
39
  }
40
40
 
41
41
  /**
@@ -34,15 +34,15 @@ export async function resolveHardhatConfigPath(
34
34
  userProvidedPath?: string,
35
35
  ): Promise<string> {
36
36
  if (userProvidedPath !== undefined) {
37
- return normalizeConfigPath(userProvidedPath);
37
+ return await normalizeConfigPath(userProvidedPath);
38
38
  }
39
39
 
40
40
  if (process.env.HARDHAT_CONFIG !== undefined) {
41
41
  log("Using config file path from the HARDHAT_CONFIG env var");
42
- return normalizeConfigPath(process.env.HARDHAT_CONFIG);
42
+ return await normalizeConfigPath(process.env.HARDHAT_CONFIG);
43
43
  }
44
44
 
45
- return findClosestHardhatConfig();
45
+ return await findClosestHardhatConfig();
46
46
  }
47
47
 
48
48
  /**
@@ -118,24 +118,25 @@ export class LazyResolvedConfigurationVariable extends BaseResolvedConfiguration
118
118
  const mutex = LazyResolvedConfigurationVariable.#mutexes.get(this.#hooks);
119
119
  assertHardhatInvariant(mutex !== undefined, "Mutex must be defined");
120
120
 
121
- return mutex.exclusiveRun(async () =>
122
- this.#hooks.runHandlerChain(
123
- "configurationVariables",
124
- "fetchValue",
125
- [this.#variable],
126
- async (_context, v) => {
127
- const value = process.env[v.name];
128
-
129
- if (typeof value !== "string") {
130
- throw new HardhatError(
131
- HardhatError.ERRORS.CORE.GENERAL.ENV_VAR_NOT_FOUND,
132
- { name: v.name },
133
- );
134
- }
135
-
136
- return value;
137
- },
138
- ),
121
+ return await mutex.exclusiveRun(
122
+ async () =>
123
+ await this.#hooks.runHandlerChain(
124
+ "configurationVariables",
125
+ "fetchValue",
126
+ [this.#variable],
127
+ async (_context, v) => {
128
+ const value = process.env[v.name];
129
+
130
+ if (typeof value !== "string") {
131
+ throw new HardhatError(
132
+ HardhatError.ERRORS.CORE.GENERAL.ENV_VAR_NOT_FOUND,
133
+ { name: v.name },
134
+ );
135
+ }
136
+
137
+ return value;
138
+ },
139
+ ),
139
140
  );
140
141
  }
141
142
  }
@@ -124,7 +124,7 @@ export class HookManagerImplementation implements HookManager {
124
124
  return result;
125
125
  };
126
126
 
127
- return next(...handlerParams);
127
+ return await next(...handlerParams);
128
128
  }
129
129
 
130
130
  public async runSequentialHandlers<
@@ -192,7 +192,7 @@ export class HookManagerImplementation implements HookManager {
192
192
  handlerParams = params;
193
193
  }
194
194
 
195
- return Promise.all(
195
+ return await Promise.all(
196
196
  handlers.map((handler) => (handler as any)(...handlerParams)),
197
197
  );
198
198
  }
@@ -277,7 +277,7 @@ export class HookManagerImplementation implements HookManager {
277
277
  const categories: Array<
278
278
  Partial<HardhatHooks[HookCategoryNameT]> | undefined
279
279
  > = await this.#mutex.exclusiveRun(async () => {
280
- return Promise.all(
280
+ return await Promise.all(
281
281
  this.#pluginsInReverseOrder.map(async (plugin) => {
282
282
  const existingCategory = this.#staticHookHandlerCategories
283
283
  .get(plugin.id)
@@ -193,7 +193,9 @@ export class HardhatRuntimeEnvironmentImplementation
193
193
  export async function resolveProjectRoot(
194
194
  absolutePathWithinProject: string | undefined,
195
195
  ): Promise<string> {
196
- return findClosestPackageRoot(absolutePathWithinProject ?? process.cwd());
196
+ return await findClosestPackageRoot(
197
+ absolutePathWithinProject ?? process.cwd(),
198
+ );
197
199
  }
198
200
 
199
201
  /**
@@ -292,7 +294,7 @@ async function runUserConfigExtensions(
292
294
  hooks: HookManager,
293
295
  config: HardhatUserConfig,
294
296
  ): Promise<HardhatUserConfig> {
295
- return hooks.runHandlerChain(
297
+ return await hooks.runHandlerChain(
296
298
  "config",
297
299
  "extendUserConfig",
298
300
  [config],
@@ -320,7 +322,7 @@ async function resolveUserConfig(
320
322
  paths: resolvePaths(projectRoot, configPath, config.paths),
321
323
  } as HardhatConfig;
322
324
 
323
- return hooks.runHandlerChain(
325
+ return await hooks.runHandlerChain(
324
326
  "config",
325
327
  "resolveUserConfig",
326
328
  [config, (variable) => resolveConfigurationVariable(hooks, variable)],
@@ -12,7 +12,7 @@ export async function resolvePluginList(
12
12
  projectRoot: string,
13
13
  userConfigPluginList: HardhatPlugin[] = [],
14
14
  ): Promise<HardhatPlugin[]> {
15
- return reverseTopologicalSort(projectRoot, userConfigPluginList);
15
+ return await reverseTopologicalSort(projectRoot, userConfigPluginList);
16
16
  }
17
17
 
18
18
  /**
@@ -175,22 +175,22 @@ export class ResolvedTask implements Task {
175
175
  if (currentIndex === 0) {
176
176
  /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions --
177
177
  We know that the first action in the array is a NewTaskActionFunction */
178
- return (actionFn as NewTaskActionFunction)(
178
+ return await (actionFn as NewTaskActionFunction)(
179
179
  nextTaskArguments,
180
180
  this.#hre,
181
181
  );
182
182
  }
183
183
 
184
- return actionFn(
184
+ return await actionFn(
185
185
  nextTaskArguments,
186
186
  this.#hre,
187
187
  async (newTaskArguments: TaskArguments) => {
188
- return next(newTaskArguments, currentIndex - 1);
188
+ return await next(newTaskArguments, currentIndex - 1);
189
189
  },
190
190
  );
191
191
  };
192
192
 
193
- return next(validatedTaskArguments);
193
+ return await next(validatedTaskArguments);
194
194
  }
195
195
 
196
196
  /**
@@ -21,8 +21,8 @@ export class UserInterruptionManagerImplementation
21
21
  interruptor: string,
22
22
  message: string,
23
23
  ): Promise<void> {
24
- return this.#mutex.exclusiveRun(async () => {
25
- return this.#hooks.runHandlerChain(
24
+ return await this.#mutex.exclusiveRun(async () => {
25
+ return await this.#hooks.runHandlerChain(
26
26
  "userInterruptions",
27
27
  "displayMessage",
28
28
  [interruptor, message],
@@ -35,8 +35,8 @@ export class UserInterruptionManagerImplementation
35
35
  interruptor: string,
36
36
  inputDescription: string,
37
37
  ): Promise<string> {
38
- return this.#mutex.exclusiveRun(async () => {
39
- return this.#hooks.runHandlerChain(
38
+ return await this.#mutex.exclusiveRun(async () => {
39
+ return await this.#hooks.runHandlerChain(
40
40
  "userInterruptions",
41
41
  "requestInput",
42
42
  [interruptor, inputDescription],
@@ -49,8 +49,8 @@ export class UserInterruptionManagerImplementation
49
49
  interruptor: string,
50
50
  inputDescription: string,
51
51
  ): Promise<string> {
52
- return this.#mutex.exclusiveRun(async () => {
53
- return this.#hooks.runHandlerChain(
52
+ return await this.#mutex.exclusiveRun(async () => {
53
+ return await this.#hooks.runHandlerChain(
54
54
  "userInterruptions",
55
55
  "requestSecretInput",
56
56
  [interruptor, inputDescription],
@@ -62,7 +62,7 @@ export class UserInterruptionManagerImplementation
62
62
  public async uninterrupted<ReturnT>(
63
63
  f: () => ReturnT,
64
64
  ): Promise<Awaited<ReturnT>> {
65
- return this.#mutex.exclusiveRun(f);
65
+ return await this.#mutex.exclusiveRun(f);
66
66
  }
67
67
  }
68
68
 
@@ -84,7 +84,7 @@ async function defaultRequestInput(
84
84
  output: process.stdout,
85
85
  });
86
86
 
87
- return new Promise<string>((resolve) => {
87
+ return await new Promise<string>((resolve) => {
88
88
  rl.question(
89
89
  chalk.blue(`[${interruptor}]`) + ` ${inputDescription}: `,
90
90
  (answer) => {
@@ -138,7 +138,7 @@ async function defaultRequestSecretInput(
138
138
  }
139
139
  };
140
140
 
141
- return new Promise<string>((resolve) => {
141
+ return await new Promise<string>((resolve) => {
142
142
  rl.question(
143
143
  chalk.blue(`[${interruptor}]`) + ` ${inputDescription}: `,
144
144
  (answer) => {
@@ -65,7 +65,7 @@ export async function createHardhatRuntimeEnvironment(
65
65
  unsafeOptions.globalOptionDefinitions = globalOptionDefinitions;
66
66
  }
67
67
 
68
- return HardhatRuntimeEnvironmentImplementation.create(
68
+ return await HardhatRuntimeEnvironmentImplementation.create(
69
69
  config,
70
70
  userProvidedGlobalOptions,
71
71
  resolvedProjectRoot,
@@ -89,11 +89,11 @@ export interface ArtifactManager {
89
89
  /**
90
90
  * Returns true if an artifact exists.
91
91
  *
92
- * This function doesn't throw if the name is not unique.
92
+ * This function doesn't throw if the name is not unique, this means that
93
+ * this method may return `true`, and a successive call to `readArtifact` can
94
+ * throw because of a duplicated name.
93
95
  *
94
96
  * @param contractNameOrFullyQualifiedName Contract or fully qualified name.
95
- * @throws Throws an error if a non-unique contract name is used,
96
- * indicating which fully qualified names can be used instead.
97
97
  */
98
98
  artifactExists(contractNameOrFullyQualifiedName: string): Promise<boolean>;
99
99
 
@@ -120,7 +120,8 @@ export interface ArtifactManager {
120
120
  * If it does return an id, it's not guaranteed that the build info is
121
121
  * present.
122
122
  *
123
- * @param contractNameOrFullyQualifiedName Contract or fully qualified name, whose artifact must exist.
123
+ * @param contractNameOrFullyQualifiedName Contract or fully qualified name,
124
+ * whose artifact must exist.
124
125
  * @throws Throws an error if a non-unique contract name is used,
125
126
  * indicating which fully qualified names can be used instead.
126
127
  * @throws Throws an error if the artifact doesn't exist.
@@ -48,11 +48,59 @@ export interface NetworkConnectionParams<
48
48
  override?: NetworkConfigOverride;
49
49
  }
50
50
 
51
+ export interface CachedNetworkConnectionParams<
52
+ ChainTypeT extends ChainType | string = DefaultChainType,
53
+ > extends NetworkConnectionParams<ChainTypeT> {
54
+ override?: never;
55
+ }
56
+
51
57
  export interface NetworkManager {
58
+ /**
59
+ * Creates a new network connection based on the provided parameters.
60
+ *
61
+ * @param networkOrParams The network name or connection parameters. When
62
+ * omitted, the default network is used.
63
+ *
64
+ * @returns A new {@link NetworkConnection} for the specified network.
65
+ */
66
+ create<ChainTypeT extends ChainType | string = DefaultChainType>(
67
+ networkOrParams?: NetworkConnectionParams<ChainTypeT> | string,
68
+ ): Promise<NetworkConnection<ChainTypeT>>;
69
+
70
+ /**
71
+ * Creates a new network connection based on the provided parameters.
72
+ *
73
+ * @deprecated Use {@link NetworkManager.create} or
74
+ * {@link NetworkManager.getOrCreate} instead.
75
+ *
76
+ * - {@link NetworkManager.create} always creates a new network instance.
77
+ * - {@link NetworkManager.getOrCreate} returns an existing instance if one exists.
78
+ *
79
+ * `connect` will be removed in a future version of Hardhat.
80
+ *
81
+ * @param networkOrParams The network name or connection parameters. When
82
+ * omitted, the default network is used.
83
+ *
84
+ * @returns A new {@link NetworkConnection} for the specified network.
85
+ */
52
86
  connect<ChainTypeT extends ChainType | string = DefaultChainType>(
53
87
  networkOrParams?: NetworkConnectionParams<ChainTypeT> | string,
54
88
  ): Promise<NetworkConnection<ChainTypeT>>;
55
89
 
90
+ /**
91
+ * Returns an existing network connection if one was previously created
92
+ * with the same network name and chain type. Creates a new one otherwise.
93
+ *
94
+ * @param networkOrParams The network name or connection parameters. When
95
+ * omitted, the default network is used. Overrides are not supported.
96
+ *
97
+ * @returns A {@link NetworkConnection} for the specified network, cached
98
+ * by network name and chain type.
99
+ */
100
+ getOrCreate<ChainTypeT extends ChainType | string = DefaultChainType>(
101
+ networkOrParams?: CachedNetworkConnectionParams<ChainTypeT> | string,
102
+ ): Promise<NetworkConnection<ChainTypeT>>;
103
+
56
104
  /**
57
105
  * Spawns an Ethereum JSON-RPC server listening on HTTP and Websocket.
58
106
  *