hardhat 2.13.0-dev.1 → 2.13.0-dev.3

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 (367) hide show
  1. package/builtin-tasks/compile.js +17 -7
  2. package/builtin-tasks/compile.js.map +1 -1
  3. package/builtin-tasks/flatten.js +10 -4
  4. package/builtin-tasks/flatten.js.map +1 -1
  5. package/builtin-tasks/help.js +2 -4
  6. package/builtin-tasks/help.js.map +1 -1
  7. package/builtin-tasks/task-names.d.ts +1 -0
  8. package/builtin-tasks/task-names.d.ts.map +1 -1
  9. package/builtin-tasks/task-names.js +3 -2
  10. package/builtin-tasks/task-names.js.map +1 -1
  11. package/builtin-tasks/test.js +22 -1
  12. package/builtin-tasks/test.js.map +1 -1
  13. package/internal/artifacts.d.ts +5 -0
  14. package/internal/artifacts.d.ts.map +1 -1
  15. package/internal/artifacts.js +29 -10
  16. package/internal/artifacts.js.map +1 -1
  17. package/internal/cli/bootstrap.d.ts +1 -0
  18. package/internal/cli/bootstrap.js +12 -20
  19. package/internal/cli/bootstrap.js.map +1 -1
  20. package/internal/cli/cli.d.ts +0 -1
  21. package/internal/cli/cli.d.ts.map +1 -1
  22. package/internal/cli/cli.js +24 -24
  23. package/internal/cli/cli.js.map +1 -1
  24. package/internal/cli/project-creation.d.ts +1 -1
  25. package/internal/cli/project-creation.d.ts.map +1 -1
  26. package/internal/cli/project-creation.js +105 -25
  27. package/internal/cli/project-creation.js.map +1 -1
  28. package/internal/cli/prompt.d.ts +2 -2
  29. package/internal/cli/prompt.d.ts.map +1 -1
  30. package/internal/cli/prompt.js +1 -2
  31. package/internal/cli/prompt.js.map +1 -1
  32. package/internal/cli/types.d.ts +1 -0
  33. package/internal/cli/types.d.ts.map +1 -1
  34. package/internal/core/config/config-env.d.ts +5 -11
  35. package/internal/core/config/config-env.d.ts.map +1 -1
  36. package/internal/core/config/config-env.js +2 -13
  37. package/internal/core/config/config-env.js.map +1 -1
  38. package/internal/core/config/config-loading.d.ts +2 -1
  39. package/internal/core/config/config-loading.d.ts.map +1 -1
  40. package/internal/core/config/config-loading.js +25 -7
  41. package/internal/core/config/config-loading.js.map +1 -1
  42. package/internal/core/config/config-resolution.d.ts.map +1 -1
  43. package/internal/core/config/config-resolution.js +2 -1
  44. package/internal/core/config/config-resolution.js.map +1 -1
  45. package/internal/core/config/config-validation.d.ts +2 -0
  46. package/internal/core/config/config-validation.d.ts.map +1 -1
  47. package/internal/core/config/config-validation.js +18 -1
  48. package/internal/core/config/config-validation.js.map +1 -1
  49. package/internal/core/config/extenders.d.ts +4 -7
  50. package/internal/core/config/extenders.d.ts.map +1 -1
  51. package/internal/core/config/extenders.js +5 -12
  52. package/internal/core/config/extenders.js.map +1 -1
  53. package/internal/core/errors-list.d.ts +35 -7
  54. package/internal/core/errors-list.d.ts.map +1 -1
  55. package/internal/core/errors-list.js +117 -85
  56. package/internal/core/errors-list.js.map +1 -1
  57. package/internal/core/flamegraph.js +10 -10
  58. package/internal/core/jsonrpc/types/output/metadata.d.ts +13 -0
  59. package/internal/core/jsonrpc/types/output/metadata.d.ts.map +1 -0
  60. package/internal/core/jsonrpc/types/output/metadata.js +3 -0
  61. package/internal/core/jsonrpc/types/output/metadata.js.map +1 -0
  62. package/internal/core/project-structure.d.ts.map +1 -1
  63. package/internal/core/project-structure.js +6 -0
  64. package/internal/core/project-structure.js.map +1 -1
  65. package/internal/core/providers/accounts.d.ts.map +1 -1
  66. package/internal/core/providers/accounts.js +4 -1
  67. package/internal/core/providers/accounts.js.map +1 -1
  68. package/internal/core/providers/backwards-compatibility.d.ts.map +1 -1
  69. package/internal/core/providers/backwards-compatibility.js +3 -0
  70. package/internal/core/providers/backwards-compatibility.js.map +1 -1
  71. package/internal/core/providers/construction.d.ts.map +1 -1
  72. package/internal/core/providers/construction.js +25 -5
  73. package/internal/core/providers/construction.js.map +1 -1
  74. package/internal/core/providers/gas-providers.d.ts +1 -1
  75. package/internal/core/providers/gas-providers.d.ts.map +1 -1
  76. package/internal/core/providers/gas-providers.js +1 -1
  77. package/internal/core/providers/gas-providers.js.map +1 -1
  78. package/internal/core/providers/http.d.ts +2 -2
  79. package/internal/core/providers/http.d.ts.map +1 -1
  80. package/internal/core/providers/http.js +41 -19
  81. package/internal/core/providers/http.js.map +1 -1
  82. package/internal/core/runtime-environment.d.ts +4 -2
  83. package/internal/core/runtime-environment.d.ts.map +1 -1
  84. package/internal/core/runtime-environment.js +39 -47
  85. package/internal/core/runtime-environment.js.map +1 -1
  86. package/internal/core/tasks/dsl.d.ts +6 -6
  87. package/internal/core/tasks/dsl.d.ts.map +1 -1
  88. package/internal/core/tasks/dsl.js.map +1 -1
  89. package/internal/core/tasks/task-definitions.d.ts +2 -2
  90. package/internal/core/tasks/task-definitions.d.ts.map +1 -1
  91. package/internal/core/tasks/task-definitions.js.map +1 -1
  92. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
  93. package/internal/hardhat-network/jsonrpc/client.js +5 -3
  94. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  95. package/internal/hardhat-network/jsonrpc/handler.d.ts +1 -0
  96. package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -1
  97. package/internal/hardhat-network/jsonrpc/handler.js +13 -18
  98. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  99. package/internal/hardhat-network/provider/RethnetState.d.ts +26 -0
  100. package/internal/hardhat-network/provider/RethnetState.d.ts.map +1 -0
  101. package/internal/hardhat-network/provider/RethnetState.js +84 -0
  102. package/internal/hardhat-network/provider/RethnetState.js.map +1 -0
  103. package/internal/hardhat-network/provider/modules/eth.js +4 -4
  104. package/internal/hardhat-network/provider/modules/evm.d.ts +2 -1
  105. package/internal/hardhat-network/provider/modules/evm.d.ts.map +1 -1
  106. package/internal/hardhat-network/provider/modules/evm.js +10 -4
  107. package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
  108. package/internal/hardhat-network/provider/modules/hardhat.d.ts +2 -0
  109. package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
  110. package/internal/hardhat-network/provider/modules/hardhat.js +9 -0
  111. package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
  112. package/internal/hardhat-network/provider/modules/web3.d.ts +3 -0
  113. package/internal/hardhat-network/provider/modules/web3.d.ts.map +1 -1
  114. package/internal/hardhat-network/provider/modules/web3.js +4 -4
  115. package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
  116. package/internal/hardhat-network/provider/node-types.d.ts +1 -1
  117. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  118. package/internal/hardhat-network/provider/node.d.ts +6 -0
  119. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  120. package/internal/hardhat-network/provider/node.js +44 -5
  121. package/internal/hardhat-network/provider/node.js.map +1 -1
  122. package/internal/hardhat-network/provider/output.d.ts +1 -1
  123. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  124. package/internal/hardhat-network/provider/output.js +1 -1
  125. package/internal/hardhat-network/provider/output.js.map +1 -1
  126. package/internal/hardhat-network/provider/provider.d.ts +25 -21
  127. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  128. package/internal/hardhat-network/provider/provider.js +26 -43
  129. package/internal/hardhat-network/provider/provider.js.map +1 -1
  130. package/internal/hardhat-network/provider/return-data.js +2 -2
  131. package/internal/hardhat-network/provider/return-data.js.map +1 -1
  132. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
  133. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +4 -2
  134. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  135. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
  136. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +4 -2
  137. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  138. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
  139. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +4 -2
  140. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  141. package/internal/hardhat-network/provider/utils/bloom.d.ts +4 -0
  142. package/internal/hardhat-network/provider/utils/bloom.d.ts.map +1 -1
  143. package/internal/hardhat-network/provider/utils/bloom.js +6 -0
  144. package/internal/hardhat-network/provider/utils/bloom.js.map +1 -1
  145. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +8 -25
  146. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +1 -1
  147. package/internal/hardhat-network/provider/utils/convertToRethnet.js +122 -174
  148. package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +1 -1
  149. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +7 -0
  150. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -0
  151. package/internal/hardhat-network/provider/utils/makeFakeSignature.js +31 -0
  152. package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -0
  153. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +1 -0
  154. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
  155. package/internal/hardhat-network/provider/utils/makeForkClient.js +4 -1
  156. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  157. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +1 -1
  158. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
  159. package/internal/hardhat-network/provider/utils/putGenesisBlock.js +2 -2
  160. package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
  161. package/internal/hardhat-network/provider/vm/block-builder.d.ts +4 -3
  162. package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +1 -1
  163. package/internal/hardhat-network/provider/vm/block-builder.js +9 -5
  164. package/internal/hardhat-network/provider/vm/block-builder.js.map +1 -1
  165. package/internal/hardhat-network/provider/vm/creation.d.ts +10 -0
  166. package/internal/hardhat-network/provider/vm/creation.d.ts.map +1 -0
  167. package/internal/hardhat-network/provider/vm/creation.js +29 -0
  168. package/internal/hardhat-network/provider/vm/creation.js.map +1 -0
  169. package/internal/hardhat-network/provider/vm/dual.d.ts +14 -14
  170. package/internal/hardhat-network/provider/vm/dual.d.ts.map +1 -1
  171. package/internal/hardhat-network/provider/vm/dual.js +426 -58
  172. package/internal/hardhat-network/provider/vm/dual.js.map +1 -1
  173. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +23 -22
  174. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +1 -1
  175. package/internal/hardhat-network/provider/vm/ethereumjs.js +181 -37
  176. package/internal/hardhat-network/provider/vm/ethereumjs.js.map +1 -1
  177. package/internal/hardhat-network/provider/vm/exit.d.ts +23 -0
  178. package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
  179. package/internal/hardhat-network/provider/vm/exit.js +130 -0
  180. package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
  181. package/internal/hardhat-network/provider/vm/rethnet.d.ts +18 -30
  182. package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +1 -1
  183. package/internal/hardhat-network/provider/vm/rethnet.js +164 -51
  184. package/internal/hardhat-network/provider/vm/rethnet.js.map +1 -1
  185. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +29 -13
  186. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +1 -1
  187. package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts.map +1 -1
  188. package/internal/hardhat-network/stack-traces/compiler-to-model.js +37 -11
  189. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
  190. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  191. package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
  192. package/internal/hardhat-network/stack-traces/constants.js +1 -1
  193. package/internal/hardhat-network/stack-traces/debug.d.ts.map +1 -1
  194. package/internal/hardhat-network/stack-traces/debug.js +6 -2
  195. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  196. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts +1 -0
  197. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
  198. package/internal/hardhat-network/stack-traces/error-inferrer.js +87 -60
  199. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  200. package/internal/hardhat-network/stack-traces/model.d.ts +3 -1
  201. package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
  202. package/internal/hardhat-network/stack-traces/model.js +9 -1
  203. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  204. package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -1
  205. package/internal/hardhat-network/stack-traces/solidity-errors.js +4 -3
  206. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  207. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +2 -2
  208. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
  209. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  210. package/internal/hardhat-network/stack-traces/solidityTracer.js +1 -0
  211. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  212. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
  213. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +2 -1
  214. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  215. package/internal/lib/hardhat-lib.d.ts.map +1 -1
  216. package/internal/lib/hardhat-lib.js +1 -4
  217. package/internal/lib/hardhat-lib.js.map +1 -1
  218. package/internal/solidity/compiler/downloader.js +2 -2
  219. package/internal/solidity/compiler/downloader.js.map +1 -1
  220. package/internal/solidity/compiler/index.d.ts.map +1 -1
  221. package/internal/solidity/compiler/index.js +7 -1
  222. package/internal/solidity/compiler/index.js.map +1 -1
  223. package/internal/solidity/dependencyGraph.d.ts.map +1 -1
  224. package/internal/solidity/dependencyGraph.js +2 -0
  225. package/internal/solidity/dependencyGraph.js.map +1 -1
  226. package/internal/solidity/resolver.d.ts +4 -3
  227. package/internal/solidity/resolver.d.ts.map +1 -1
  228. package/internal/solidity/resolver.js +26 -7
  229. package/internal/solidity/resolver.js.map +1 -1
  230. package/internal/util/abi-helpers.d.ts +1 -0
  231. package/internal/util/abi-helpers.d.ts.map +1 -1
  232. package/internal/util/abi-helpers.js +9 -0
  233. package/internal/util/abi-helpers.js.map +1 -1
  234. package/internal/util/console.d.ts.map +1 -1
  235. package/internal/util/console.js +1 -1
  236. package/internal/util/console.js.map +1 -1
  237. package/internal/util/download.d.ts +3 -1
  238. package/internal/util/download.d.ts.map +1 -1
  239. package/internal/util/download.js +14 -12
  240. package/internal/util/download.js.map +1 -1
  241. package/internal/util/keys-derivation.d.ts.map +1 -1
  242. package/internal/util/keys-derivation.js +4 -1
  243. package/internal/util/keys-derivation.js.map +1 -1
  244. package/internal/util/packageInfo.d.ts +7 -1
  245. package/internal/util/packageInfo.d.ts.map +1 -1
  246. package/internal/util/packageInfo.js +23 -11
  247. package/internal/util/packageInfo.js.map +1 -1
  248. package/internal/util/proxy.d.ts +2 -0
  249. package/internal/util/proxy.d.ts.map +1 -0
  250. package/internal/util/proxy.js +19 -0
  251. package/internal/util/proxy.js.map +1 -0
  252. package/package.json +9 -10
  253. package/recommended-gitignore.txt +1 -1
  254. package/register.js +1 -4
  255. package/register.js.map +1 -1
  256. package/sample-projects/javascript/hardhat.config.js +1 -1
  257. package/sample-projects/javascript/scripts/deploy.js +2 -2
  258. package/sample-projects/javascript-esm/LICENSE.md +11 -0
  259. package/sample-projects/javascript-esm/README.md +13 -0
  260. package/sample-projects/javascript-esm/contracts/Lock.sol +34 -0
  261. package/sample-projects/javascript-esm/hardhat.config.cjs +6 -0
  262. package/sample-projects/javascript-esm/scripts/deploy.js +22 -0
  263. package/sample-projects/javascript-esm/test/Lock.js +123 -0
  264. package/sample-projects/typescript/hardhat.config.ts +1 -1
  265. package/sample-projects/typescript/scripts/deploy.ts +2 -2
  266. package/sample-projects/typescript/tsconfig.json +2 -1
  267. package/src/builtin-tasks/compile.ts +30 -11
  268. package/src/builtin-tasks/flatten.ts +18 -4
  269. package/src/builtin-tasks/help.ts +15 -16
  270. package/src/builtin-tasks/task-names.ts +2 -0
  271. package/src/builtin-tasks/test.ts +30 -2
  272. package/src/internal/artifacts.ts +947 -0
  273. package/src/internal/cli/bootstrap.ts +14 -36
  274. package/src/internal/cli/cli.ts +44 -35
  275. package/src/internal/cli/project-creation.ts +129 -32
  276. package/src/internal/cli/prompt.ts +2 -4
  277. package/src/internal/cli/types.ts +2 -0
  278. package/src/internal/core/config/config-env.ts +15 -27
  279. package/src/internal/core/config/config-loading.ts +35 -11
  280. package/src/internal/core/config/config-resolution.ts +4 -3
  281. package/src/internal/core/config/config-validation.ts +20 -0
  282. package/src/internal/core/config/extenders.ts +6 -15
  283. package/src/internal/core/errors-list.ts +121 -85
  284. package/src/internal/core/flamegraph.ts +10 -10
  285. package/src/internal/core/jsonrpc/types/output/metadata.ts +32 -0
  286. package/src/internal/core/project-structure.ts +8 -0
  287. package/src/internal/core/providers/accounts.ts +5 -2
  288. package/src/internal/core/providers/backwards-compatibility.ts +3 -0
  289. package/src/internal/core/providers/construction.ts +29 -24
  290. package/src/internal/core/providers/gas-providers.ts +1 -1
  291. package/src/internal/core/providers/http.ts +38 -26
  292. package/src/internal/core/runtime-environment.ts +65 -60
  293. package/src/internal/core/tasks/dsl.ts +17 -17
  294. package/src/internal/core/tasks/task-definitions.ts +6 -2
  295. package/src/internal/hardhat-network/jsonrpc/client.ts +7 -4
  296. package/src/internal/hardhat-network/jsonrpc/handler.ts +31 -28
  297. package/src/internal/hardhat-network/provider/modules/eth.ts +4 -4
  298. package/src/internal/hardhat-network/provider/modules/evm.ts +15 -3
  299. package/src/internal/hardhat-network/provider/modules/hardhat.ts +14 -0
  300. package/src/internal/hardhat-network/provider/modules/web3.ts +4 -4
  301. package/src/internal/hardhat-network/provider/node-types.ts +1 -1
  302. package/src/internal/hardhat-network/provider/node.ts +63 -1
  303. package/src/internal/hardhat-network/provider/output.ts +2 -2
  304. package/src/internal/hardhat-network/provider/provider.ts +61 -50
  305. package/src/internal/hardhat-network/provider/return-data.ts +2 -2
  306. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +5 -2
  307. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +5 -2
  308. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +5 -2
  309. package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +46 -0
  310. package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +10 -1
  311. package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +2 -2
  312. package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +73 -11
  313. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +1 -1
  314. package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
  315. package/src/internal/hardhat-network/stack-traces/debug.ts +9 -2
  316. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +179 -95
  317. package/src/internal/hardhat-network/stack-traces/model.ts +11 -1
  318. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +5 -3
  319. package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +2 -2
  320. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +3 -0
  321. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +4 -1
  322. package/src/internal/lib/hardhat-lib.ts +1 -6
  323. package/src/internal/solidity/compiler/downloader.ts +3 -3
  324. package/src/internal/solidity/compiler/index.ts +9 -1
  325. package/src/internal/solidity/dependencyGraph.ts +2 -0
  326. package/src/internal/solidity/resolver.ts +38 -11
  327. package/src/internal/util/abi-helpers.ts +9 -0
  328. package/src/internal/util/console.ts +4 -2
  329. package/src/internal/util/download.ts +16 -16
  330. package/src/internal/util/keys-derivation.ts +4 -1
  331. package/src/internal/util/packageInfo.ts +33 -10
  332. package/src/internal/util/proxy.ts +18 -0
  333. package/src/register.ts +1 -6
  334. package/src/types/artifacts.ts +19 -105
  335. package/src/types/config.ts +2 -0
  336. package/src/types/runtime.ts +16 -13
  337. package/src/utils/source-names.ts +15 -0
  338. package/types/artifacts.d.ts +14 -90
  339. package/types/artifacts.d.ts.map +1 -1
  340. package/types/config.d.ts +2 -0
  341. package/types/config.d.ts.map +1 -1
  342. package/types/runtime.d.ts +9 -10
  343. package/types/runtime.d.ts.map +1 -1
  344. package/utils/source-names.d.ts +5 -0
  345. package/utils/source-names.d.ts.map +1 -1
  346. package/utils/source-names.js +14 -1
  347. package/utils/source-names.js.map +1 -1
  348. package/internal/artifacts/caching.d.ts +0 -27
  349. package/internal/artifacts/caching.d.ts.map +0 -1
  350. package/internal/artifacts/caching.js +0 -167
  351. package/internal/artifacts/caching.js.map +0 -1
  352. package/internal/artifacts/index.d.ts +0 -44
  353. package/internal/artifacts/index.d.ts.map +0 -1
  354. package/internal/artifacts/index.js +0 -187
  355. package/internal/artifacts/index.js.map +0 -1
  356. package/internal/artifacts/mutable.d.ts +0 -29
  357. package/internal/artifacts/mutable.d.ts.map +0 -1
  358. package/internal/artifacts/mutable.js +0 -226
  359. package/internal/artifacts/mutable.js.map +0 -1
  360. package/internal/artifacts/readonly.d.ts +0 -88
  361. package/internal/artifacts/readonly.d.ts.map +0 -1
  362. package/internal/artifacts/readonly.js +0 -324
  363. package/internal/artifacts/readonly.js.map +0 -1
  364. package/src/internal/artifacts/caching.ts +0 -239
  365. package/src/internal/artifacts/index.ts +0 -296
  366. package/src/internal/artifacts/mutable.ts +0 -330
  367. package/src/internal/artifacts/readonly.ts +0 -438
@@ -1,38 +1,16 @@
1
- import { fork } from "child_process";
2
-
3
- import { getEnvHardhatArguments } from "../core/params/env-variables";
4
- import { HARDHAT_PARAM_DEFINITIONS } from "../core/params/hardhat-params";
5
-
6
- import { ArgumentsParser } from "./ArgumentsParser";
7
-
8
- const nodeArgs = [...process.execArgv];
9
-
10
- if (process.env.DISABLE_HARDHAT_NETWORK_OPTIMIZATIONS === undefined) {
11
- nodeArgs.push("--max-semi-space-size=100");
12
- }
13
-
14
- const envVariableArguments = getEnvHardhatArguments(
15
- HARDHAT_PARAM_DEFINITIONS,
16
- process.env
17
- );
18
-
19
- const argumentsParser = new ArgumentsParser();
20
-
21
- const { hardhatArguments } = argumentsParser.parseHardhatArguments(
22
- HARDHAT_PARAM_DEFINITIONS,
23
- envVariableArguments,
24
- process.argv.slice(2)
25
- );
26
-
27
- if (hardhatArguments.maxMemory !== undefined) {
28
- nodeArgs.push(`--max-old-space-size=${hardhatArguments.maxMemory}`);
1
+ #!/usr/bin/env node
2
+ import semver from "semver";
3
+ import chalk from "chalk";
4
+
5
+ const SUPPORTED_NODE_VERSIONS = ["^14.0.0", "^16.0.0", "^18.0.0"];
6
+
7
+ if (!semver.satisfies(process.version, SUPPORTED_NODE_VERSIONS.join(" || "))) {
8
+ console.warn(
9
+ chalk.yellow.bold(`WARNING:`),
10
+ `You are using a version of Node.js that is not supported, and it may work incorrectly, or not work at all. See https://hardhat.org/nodejs-versions`
11
+ );
12
+ console.log();
13
+ console.log();
29
14
  }
30
15
 
31
- const childProcess = fork(`${__dirname}/cli`, process.argv.slice(2), {
32
- stdio: "inherit" as any, // There's an error in the TS definition of ForkOptions
33
- execArgv: nodeArgs,
34
- });
35
-
36
- childProcess.once("close", (status) => {
37
- process.exit(status as number);
38
- });
16
+ require("./cli");
@@ -1,7 +1,5 @@
1
- #!/usr/bin/env node
2
1
  import chalk from "chalk";
3
2
  import debug from "debug";
4
- import semver from "semver";
5
3
  import "source-map-support/register";
6
4
 
7
5
  import {
@@ -9,10 +7,13 @@ import {
9
7
  TASK_HELP,
10
8
  TASK_TEST,
11
9
  } from "../../builtin-tasks/task-names";
12
- import { TaskArguments } from "../../types";
10
+ import { HardhatConfig, TaskArguments } from "../../types";
13
11
  import { HARDHAT_NAME } from "../constants";
14
12
  import { HardhatContext } from "../context";
15
- import { loadConfigAndTasks } from "../core/config/config-loading";
13
+ import {
14
+ getConfiguredCompilers,
15
+ loadConfigAndTasks,
16
+ } from "../core/config/config-loading";
16
17
  import {
17
18
  assertHardhatInvariant,
18
19
  HardhatError,
@@ -33,7 +34,7 @@ import {
33
34
  writePromptedForHHVSCode,
34
35
  writeTelemetryConsent,
35
36
  } from "../util/global-dir";
36
- import { getPackageJson, PackageJson } from "../util/packageInfo";
37
+ import { getPackageJson } from "../util/packageInfo";
37
38
 
38
39
  import { saveFlamegraph } from "../core/flamegraph";
39
40
  import { Analytics } from "./analytics";
@@ -52,25 +53,11 @@ const log = debug("hardhat:core:cli");
52
53
  const ANALYTICS_SLOW_TASK_THRESHOLD = 300;
53
54
  const SHOULD_SHOW_STACK_TRACES_BY_DEFAULT = isRunningOnCiServer();
54
55
 
55
- async function printVersionMessage(packageJson: PackageJson) {
56
+ async function printVersionMessage() {
57
+ const packageJson = await getPackageJson();
56
58
  console.log(packageJson.version);
57
59
  }
58
60
 
59
- function printWarningAboutNodeJsVersionIfNecessary(packageJson: PackageJson) {
60
- const requirement = packageJson.engines.node;
61
- if (!semver.satisfies(process.version, requirement)) {
62
- console.warn(
63
- chalk.yellow(
64
- `You are using a version of Node.js that is not supported by Hardhat, and it may work incorrectly, or not work at all.
65
-
66
- Please, make sure you are using a supported version of Node.js.
67
-
68
- To learn more about which versions of Node.js are supported go to https://hardhat.org/nodejs-versions`
69
- )
70
- );
71
- }
72
- }
73
-
74
61
  async function suggestInstallingHardhatVscode() {
75
62
  const alreadyPrompted = hasPromptedForHHVSCode();
76
63
  if (alreadyPrompted) {
@@ -104,6 +91,24 @@ async function suggestInstallingHardhatVscode() {
104
91
  }
105
92
  }
106
93
 
94
+ function showViaIRWarning(resolvedConfig: HardhatConfig) {
95
+ const configuredCompilers = getConfiguredCompilers(resolvedConfig.solidity);
96
+ const viaIREnabled = configuredCompilers.some(
97
+ (compiler) => compiler.settings?.viaIR === true
98
+ );
99
+
100
+ if (viaIREnabled) {
101
+ console.warn();
102
+ console.warn(
103
+ chalk.yellow(
104
+ `Your solidity settings have viaIR enabled, which is not fully supported yet. You can still use Hardhat, but some features, like stack traces, might not work correctly.
105
+
106
+ Learn more at https://hardhat.org/solc-viair`
107
+ )
108
+ );
109
+ }
110
+ }
111
+
107
112
  async function main() {
108
113
  // We first accept this argument anywhere, so we know if the user wants
109
114
  // stack traces before really parsing the arguments.
@@ -112,10 +117,6 @@ async function main() {
112
117
  SHOULD_SHOW_STACK_TRACES_BY_DEFAULT;
113
118
 
114
119
  try {
115
- const packageJson = await getPackageJson();
116
-
117
- printWarningAboutNodeJsVersionIfNecessary(packageJson);
118
-
119
120
  const envVariableArguments = getEnvHardhatArguments(
120
121
  HARDHAT_PARAM_DEFINITIONS,
121
122
  process.env
@@ -146,7 +147,7 @@ async function main() {
146
147
 
147
148
  // --version is a special case
148
149
  if (hardhatArguments.version) {
149
- await printVersionMessage(packageJson);
150
+ await printVersionMessage();
150
151
  return;
151
152
  }
152
153
 
@@ -171,7 +172,11 @@ async function main() {
171
172
  }
172
173
  }
173
174
 
174
- if (!isHardhatInstalledLocallyOrLinked()) {
175
+ if (
176
+ process.env.HARDHAT_EXPERIMENTAL_ALLOW_NON_LOCAL_INSTALLATION !==
177
+ "true" &&
178
+ !isHardhatInstalledLocallyOrLinked()
179
+ ) {
175
180
  throw new HardhatError(ERRORS.GENERAL.NON_LOCAL_INSTALLATION);
176
181
  }
177
182
 
@@ -223,7 +228,7 @@ async function main() {
223
228
  Reporter.setEnabled(true);
224
229
  }
225
230
 
226
- const envExtenders = ctx.extendersManager.getEnvironmentExtenders();
231
+ const envExtenders = ctx.extendersManager.getExtenders();
227
232
  const taskDefinitions = ctx.tasksDSL.getTaskDefinitions();
228
233
 
229
234
  const [abortAnalytics, hitPromise] = await analytics.sendTaskHit(taskName);
@@ -255,16 +260,11 @@ async function main() {
255
260
  );
256
261
  }
257
262
 
258
- const artifactsExtensions = ctx.extendersManager
259
- .getArtifactsExtenders()
260
- .map((artifactsExtender) => artifactsExtender(resolvedConfig));
261
-
262
263
  const env = new Environment(
263
264
  resolvedConfig,
264
265
  hardhatArguments,
265
266
  taskDefinitions,
266
267
  envExtenders,
267
- artifactsExtensions,
268
268
  ctx.experimentalHardhatNetworkMessageTraceHooks,
269
269
  userConfig
270
270
  );
@@ -306,6 +306,11 @@ async function main() {
306
306
  process.stdout.isTTY === true
307
307
  ) {
308
308
  await suggestInstallingHardhatVscode();
309
+
310
+ // we show the viaIR warning only if the tests failed
311
+ if (process.exitCode !== 0) {
312
+ showViaIRWarning(resolvedConfig);
313
+ }
309
314
  }
310
315
 
311
316
  log(`Killing Hardhat after successfully running task ${taskName}`);
@@ -314,11 +319,15 @@ async function main() {
314
319
 
315
320
  if (HardhatError.isHardhatError(error)) {
316
321
  isHardhatError = true;
317
- console.error(chalk.red(`Error ${error.message}`));
322
+ console.error(
323
+ chalk.red.bold("Error"),
324
+ error.message.replace(/^\w+:/, (t) => chalk.red.bold(t))
325
+ );
318
326
  } else if (HardhatPluginError.isHardhatPluginError(error)) {
319
327
  isHardhatError = true;
320
328
  console.error(
321
- chalk.red(`Error in plugin ${error.pluginName}: ${error.message}`)
329
+ chalk.red.bold(`Error in plugin ${error.pluginName}:`),
330
+ error.message
322
331
  );
323
332
  } else if (error instanceof Error) {
324
333
  console.error(chalk.red("An unexpected error occurred:"));
@@ -4,15 +4,20 @@ import os from "os";
4
4
  import path from "path";
5
5
 
6
6
  import { HARDHAT_NAME } from "../constants";
7
- import { HardhatError } from "../core/errors";
7
+ import { assertHardhatInvariant, HardhatError } from "../core/errors";
8
8
  import { ERRORS } from "../core/errors-list";
9
9
  import { getRecommendedGitIgnore } from "../core/project-structure";
10
+ import { getAllFilesMatching } from "../util/fs-utils";
10
11
  import {
11
12
  hasConsentedTelemetry,
12
13
  writeTelemetryConsent,
13
14
  } from "../util/global-dir";
14
15
  import { fromEntries } from "../util/lang";
15
- import { getPackageJson, getPackageRoot } from "../util/packageInfo";
16
+ import {
17
+ getPackageJson,
18
+ getPackageRoot,
19
+ PackageJson,
20
+ } from "../util/packageInfo";
16
21
  import { pluralize } from "../util/strings";
17
22
  import {
18
23
  confirmRecommendedDepsInstallation,
@@ -20,7 +25,7 @@ import {
20
25
  confirmProjectCreation,
21
26
  } from "./prompt";
22
27
  import { emoji } from "./emoji";
23
- import { Dependencies } from "./types";
28
+ import { Dependencies, PackageManager } from "./types";
24
29
 
25
30
  enum Action {
26
31
  CREATE_JAVASCRIPT_PROJECT_ACTION = "Create a JavaScript project",
@@ -60,7 +65,7 @@ const TYPESCRIPT_DEPENDENCIES: Dependencies = {};
60
65
 
61
66
  const TYPESCRIPT_PEER_DEPENDENCIES: Dependencies = {
62
67
  "@types/chai": "^4.2.0",
63
- "@types/mocha": "^9.1.0",
68
+ "@types/mocha": ">=9.1.0",
64
69
  "@types/node": ">=12.0.0",
65
70
  "ts-node": ">=8.0.0",
66
71
  typescript: ">=4.5.0",
@@ -109,14 +114,28 @@ async function printWelcomeMessage() {
109
114
 
110
115
  async function copySampleProject(
111
116
  projectRoot: string,
112
- projectType: SampleProjectTypeCreationAction
117
+ projectType: SampleProjectTypeCreationAction,
118
+ isEsm: boolean
113
119
  ) {
114
120
  const packageRoot = getPackageRoot();
115
121
 
116
- const sampleProjectName =
117
- projectType === Action.CREATE_JAVASCRIPT_PROJECT_ACTION
118
- ? "javascript"
119
- : "typescript";
122
+ let sampleProjectName: string;
123
+ if (projectType === Action.CREATE_JAVASCRIPT_PROJECT_ACTION) {
124
+ if (isEsm) {
125
+ sampleProjectName = "javascript-esm";
126
+ } else {
127
+ sampleProjectName = "javascript";
128
+ }
129
+ } else {
130
+ if (isEsm) {
131
+ assertHardhatInvariant(
132
+ false,
133
+ "Shouldn't try to create a TypeScript project in an ESM based project"
134
+ );
135
+ } else {
136
+ sampleProjectName = "typescript";
137
+ }
138
+ }
120
139
 
121
140
  await fsExtra.ensureDir(projectRoot);
122
141
 
@@ -126,11 +145,23 @@ async function copySampleProject(
126
145
  sampleProjectName
127
146
  );
128
147
 
129
- const sampleProjectRootFiles = fsExtra.readdirSync(sampleProjectPath);
130
- const existingFiles = sampleProjectRootFiles
131
- .map((f) => path.join(projectRoot, f))
132
- .filter((f) => fsExtra.pathExistsSync(f))
133
- .map((f) => path.relative(process.cwd(), f));
148
+ // relative paths to all the sample project files
149
+ const sampleProjectFiles = (await getAllFilesMatching(sampleProjectPath)).map(
150
+ (file) => path.relative(sampleProjectPath, file)
151
+ );
152
+
153
+ // check if the target directory already has files that clash with the sample
154
+ // project files
155
+ const existingFiles: string[] = [];
156
+ for (const file of sampleProjectFiles) {
157
+ const targetProjectFile = path.resolve(projectRoot, file);
158
+
159
+ // if the project already has a README.md file, we'll skip it when
160
+ // we copy the files
161
+ if (file !== "README.md" && fsExtra.existsSync(targetProjectFile)) {
162
+ existingFiles.push(file);
163
+ }
164
+ }
134
165
 
135
166
  if (existingFiles.length > 0) {
136
167
  const errorMsg = `We couldn't initialize the sample project because ${pluralize(
@@ -138,18 +169,33 @@ async function copySampleProject(
138
169
  "this file already exists",
139
170
  "these files already exist"
140
171
  )}: ${existingFiles.join(", ")}
141
-
142
- Please delete or move them and try again.`;
172
+
173
+ Please delete or rename ${pluralize(
174
+ existingFiles.length,
175
+ "it",
176
+ "them"
177
+ )} and try again.`;
143
178
  console.log(chalk.red(errorMsg));
144
179
  process.exit(1);
145
180
  }
146
181
 
147
- await fsExtra.copy(
148
- path.join(packageRoot, "sample-projects", sampleProjectName),
149
- projectRoot
150
- );
182
+ // copy the files
183
+ for (const file of sampleProjectFiles) {
184
+ const sampleProjectFile = path.resolve(sampleProjectPath, file);
185
+ const targetProjectFile = path.resolve(projectRoot, file);
151
186
 
152
- await fsExtra.remove(path.join(projectRoot, "LICENSE.md"));
187
+ if (file === "README.md" && fsExtra.existsSync(targetProjectFile)) {
188
+ // we don't override the readme if it exists
189
+ continue;
190
+ }
191
+
192
+ if (file === "LICENSE.md") {
193
+ // we don't copy the license
194
+ continue;
195
+ }
196
+
197
+ fsExtra.copySync(sampleProjectFile, targetProjectFile);
198
+ }
153
199
  }
154
200
 
155
201
  async function addGitIgnore(projectRoot: string) {
@@ -183,15 +229,23 @@ async function printRecommendedDepsInstallationInstructions(
183
229
  // exported so we can test that it uses the latest supported version of solidity
184
230
  export const EMPTY_HARDHAT_CONFIG = `/** @type import('hardhat/config').HardhatUserConfig */
185
231
  module.exports = {
186
- solidity: "0.8.17",
232
+ solidity: "0.8.18",
187
233
  };
188
234
  `;
189
235
 
190
- async function writeEmptyHardhatConfig() {
191
- return fsExtra.writeFile("hardhat.config.js", EMPTY_HARDHAT_CONFIG, "utf-8");
236
+ async function writeEmptyHardhatConfig(isEsm: boolean) {
237
+ const hardhatConfigFilename = isEsm
238
+ ? "hardhat.config.cjs"
239
+ : "hardhat.config.js";
240
+
241
+ return fsExtra.writeFile(
242
+ hardhatConfigFilename,
243
+ EMPTY_HARDHAT_CONFIG,
244
+ "utf-8"
245
+ );
192
246
  }
193
247
 
194
- async function getAction(): Promise<Action> {
248
+ async function getAction(isEsm: boolean): Promise<Action> {
195
249
  if (
196
250
  process.env.HARDHAT_CREATE_JAVASCRIPT_PROJECT_WITH_DEFAULTS !== undefined
197
251
  ) {
@@ -211,7 +265,24 @@ async function getAction(): Promise<Action> {
211
265
  message: "What do you want to do?",
212
266
  initial: 0,
213
267
  choices: Object.values(Action).map((a: Action) => {
214
- return { name: a, message: a, value: a };
268
+ let message: string;
269
+ if (isEsm) {
270
+ if (a === Action.CREATE_EMPTY_HARDHAT_CONFIG_ACTION) {
271
+ message = a.replace(".js", ".cjs");
272
+ } else if (a === Action.CREATE_TYPESCRIPT_PROJECT_ACTION) {
273
+ message = `${a} (not available for ESM projects)`;
274
+ } else {
275
+ message = a;
276
+ }
277
+ } else {
278
+ message = a;
279
+ }
280
+
281
+ return {
282
+ name: a,
283
+ message,
284
+ value: a,
285
+ };
215
286
  }),
216
287
  },
217
288
  ]);
@@ -257,18 +328,28 @@ export async function createProject() {
257
328
 
258
329
  await printWelcomeMessage();
259
330
 
260
- const action = await getAction();
331
+ let packageJson: PackageJson | undefined;
332
+ if (await fsExtra.pathExists("package.json")) {
333
+ packageJson = await fsExtra.readJson("package.json");
334
+ }
335
+ const isEsm = packageJson?.type === "module";
336
+
337
+ const action = await getAction(isEsm);
261
338
 
262
339
  if (action === Action.QUIT_ACTION) {
263
340
  return;
264
341
  }
265
342
 
266
- if (!(await fsExtra.pathExists("package.json"))) {
343
+ if (isEsm && action === Action.CREATE_TYPESCRIPT_PROJECT_ACTION) {
344
+ throw new HardhatError(ERRORS.GENERAL.ESM_TYPESCRIPT_PROJECT_CREATION);
345
+ }
346
+
347
+ if (packageJson === undefined) {
267
348
  await createPackageJson();
268
349
  }
269
350
 
270
351
  if (action === Action.CREATE_EMPTY_HARDHAT_CONFIG_ACTION) {
271
- await writeEmptyHardhatConfig();
352
+ await writeEmptyHardhatConfig(isEsm);
272
353
  console.log(
273
354
  `${emoji("✨ ")}${chalk.cyan(`Config file created`)}${emoji(" ✨")}`
274
355
  );
@@ -332,7 +413,7 @@ export async function createProject() {
332
413
  }
333
414
  }
334
415
 
335
- await copySampleProject(projectRoot, action);
416
+ await copySampleProject(projectRoot, action, isEsm);
336
417
 
337
418
  let shouldShowInstallationInstructions = true;
338
419
 
@@ -357,7 +438,7 @@ export async function createProject() {
357
438
  useDefaultPromptResponses ||
358
439
  (await confirmRecommendedDepsInstallation(
359
440
  dependenciesToInstall,
360
- await isYarnProject()
441
+ await getProjectPackageManager()
361
442
  ));
362
443
  if (shouldInstall) {
363
444
  const installed = await installRecommendedDependencies(
@@ -414,6 +495,16 @@ async function isYarnProject() {
414
495
  return fsExtra.pathExists("yarn.lock");
415
496
  }
416
497
 
498
+ async function isPnpmProject() {
499
+ return fsExtra.pathExists("pnpm-lock.yaml");
500
+ }
501
+
502
+ async function getProjectPackageManager(): Promise<PackageManager> {
503
+ if (await isYarnProject()) return "yarn";
504
+ if (await isPnpmProject()) return "pnpm";
505
+ return "npm";
506
+ }
507
+
417
508
  async function doesNpmAutoInstallPeerDependencies() {
418
509
  const { execSync } = require("child_process");
419
510
  try {
@@ -480,6 +571,10 @@ async function getRecommendedDependenciesInstallationCommand(
480
571
  return ["yarn", "add", "--dev", ...deps];
481
572
  }
482
573
 
574
+ if (await isPnpmProject()) {
575
+ return ["pnpm", "add", "-D", ...deps];
576
+ }
577
+
483
578
  return ["npm", "install", "--save-dev", ...deps];
484
579
  }
485
580
 
@@ -487,7 +582,9 @@ async function getDependencies(
487
582
  projectType: SampleProjectTypeCreationAction
488
583
  ): Promise<Dependencies> {
489
584
  const shouldInstallPeerDependencies =
490
- (await isYarnProject()) || !(await doesNpmAutoInstallPeerDependencies());
585
+ (await isYarnProject()) ||
586
+ (await isPnpmProject()) ||
587
+ !(await doesNpmAutoInstallPeerDependencies());
491
588
 
492
589
  const shouldInstallTypescriptDependencies =
493
590
  projectType === Action.CREATE_TYPESCRIPT_PROJECT_ACTION;
@@ -1,4 +1,4 @@
1
- import { Dependencies } from "./types";
1
+ import { Dependencies, PackageManager } from "./types";
2
2
 
3
3
  function createConfirmationPrompt(name: string, message: string) {
4
4
  return {
@@ -36,7 +36,7 @@ function createConfirmationPrompt(name: string, message: string) {
36
36
 
37
37
  export async function confirmRecommendedDepsInstallation(
38
38
  depsToInstall: Dependencies,
39
- useYarn: boolean
39
+ packageManager: PackageManager
40
40
  ): Promise<boolean> {
41
41
  const { default: enquirer } = await import("enquirer");
42
42
 
@@ -44,8 +44,6 @@ export async function confirmRecommendedDepsInstallation(
44
44
  shouldInstallPlugin: boolean;
45
45
  };
46
46
 
47
- const packageManager = useYarn ? "yarn" : "npm";
48
-
49
47
  try {
50
48
  responses = await enquirer.prompt<typeof responses>([
51
49
  createConfirmationPrompt(
@@ -1,3 +1,5 @@
1
1
  export interface Dependencies {
2
2
  [name: string]: string;
3
3
  }
4
+
5
+ export type PackageManager = "npm" | "yarn" | "pnpm";
@@ -1,6 +1,5 @@
1
1
  import {
2
2
  ActionType,
3
- ArtifactsExtender,
4
3
  ConfigExtender,
5
4
  ConfigurableTaskDefinition,
6
5
  EnvironmentExtender,
@@ -20,10 +19,10 @@ import * as argumentTypes from "../params/argumentTypes";
20
19
  * @param action The task's action.
21
20
  * @returns A task definition.
22
21
  */
23
- export function task<ArgsT extends TaskArguments>(
22
+ export function task<TaskArgumentsT extends TaskArguments>(
24
23
  name: string,
25
24
  description?: string,
26
- action?: ActionType<ArgsT>
25
+ action?: ActionType<TaskArgumentsT>
27
26
  ): ConfigurableTaskDefinition;
28
27
 
29
28
  /**
@@ -37,15 +36,15 @@ export function task<ArgsT extends TaskArguments>(
37
36
  *
38
37
  * @returns A task definition.
39
38
  */
40
- export function task<ArgsT extends TaskArguments>(
39
+ export function task<TaskArgumentsT extends TaskArguments>(
41
40
  name: string,
42
- action: ActionType<ArgsT>
41
+ action: ActionType<TaskArgumentsT>
43
42
  ): ConfigurableTaskDefinition;
44
43
 
45
- export function task<ArgsT extends TaskArguments>(
44
+ export function task<TaskArgumentsT extends TaskArguments>(
46
45
  name: string,
47
- descriptionOrAction?: string | ActionType<ArgsT>,
48
- action?: ActionType<ArgsT>
46
+ descriptionOrAction?: string | ActionType<TaskArgumentsT>,
47
+ action?: ActionType<TaskArgumentsT>
49
48
  ): ConfigurableTaskDefinition {
50
49
  const ctx = HardhatContext.getHardhatContext();
51
50
  const dsl = ctx.tasksDSL;
@@ -72,10 +71,10 @@ export function task<ArgsT extends TaskArguments>(
72
71
  * @param action The task's action.
73
72
  * @returns A task definition.
74
73
  */
75
- export function subtask<ArgsT extends TaskArguments>(
74
+ export function subtask<TaskArgumentsT extends TaskArguments>(
76
75
  name: string,
77
76
  description?: string,
78
- action?: ActionType<ArgsT>
77
+ action?: ActionType<TaskArgumentsT>
79
78
  ): ConfigurableTaskDefinition;
80
79
 
81
80
  /**
@@ -89,15 +88,15 @@ export function subtask<ArgsT extends TaskArguments>(
89
88
  * @param action The task's action.
90
89
  * @returns A task definition.
91
90
  */
92
- export function subtask<ArgsT extends TaskArguments>(
91
+ export function subtask<TaskArgumentsT extends TaskArguments>(
93
92
  name: string,
94
- action: ActionType<ArgsT>
93
+ action: ActionType<TaskArgumentsT>
95
94
  ): ConfigurableTaskDefinition;
96
95
 
97
- export function subtask<ArgsT extends TaskArguments>(
96
+ export function subtask<TaskArgumentsT extends TaskArguments>(
98
97
  name: string,
99
- descriptionOrAction?: string | ActionType<ArgsT>,
100
- action?: ActionType<ArgsT>
98
+ descriptionOrAction?: string | ActionType<TaskArgumentsT>,
99
+ action?: ActionType<TaskArgumentsT>
101
100
  ): ConfigurableTaskDefinition {
102
101
  const ctx = HardhatContext.getHardhatContext();
103
102
  const dsl = ctx.tasksDSL;
@@ -128,7 +127,7 @@ export const types = argumentTypes;
128
127
  export function extendEnvironment(extender: EnvironmentExtender) {
129
128
  const ctx = HardhatContext.getHardhatContext();
130
129
  const extenderManager = ctx.extendersManager;
131
- extenderManager.addEnvironmentExtender(extender);
130
+ extenderManager.add(extender);
132
131
  }
133
132
 
134
133
  export function extendConfig(extender: ConfigExtender) {
@@ -136,17 +135,6 @@ export function extendConfig(extender: ConfigExtender) {
136
135
  ctx.configExtenders.push(extender);
137
136
  }
138
137
 
139
- /**
140
- * Accepts a function that receives the resolved configuration and returns an
141
- * extra source of artifacts. This source has to implement the ArtifactsSource
142
- * interface.
143
- */
144
- export function extendArtifacts(artifactsExtender: ArtifactsExtender) {
145
- const ctx = HardhatContext.getHardhatContext();
146
- const extenderManager = ctx.extendersManager;
147
- extenderManager.addArtifactsExtender(artifactsExtender);
148
- }
149
-
150
138
  // NOTE: This is experimental and will be removed. Please contact our team
151
139
  // if you are planning to use it.
152
140
  export function experimentalAddHardhatNetworkMessageTraceHook(