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
@@ -5,14 +5,14 @@ async function main() {
5
5
  const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;
6
6
  const unlockTime = currentTimestampInSeconds + ONE_YEAR_IN_SECS;
7
7
 
8
- const lockedAmount = ethers.utils.parseEther("1");
8
+ const lockedAmount = ethers.utils.parseEther("0.01");
9
9
 
10
10
  const Lock = await ethers.getContractFactory("Lock");
11
11
  const lock = await Lock.deploy(unlockTime, { value: lockedAmount });
12
12
 
13
13
  await lock.deployed();
14
14
 
15
- console.log(`Lock with 1 ETH and unlock timestamp ${unlockTime} deployed to ${lock.address}`);
15
+ console.log(`Lock with 0.01 ETH and unlock timestamp ${unlockTime} deployed to ${lock.address}`);
16
16
  }
17
17
 
18
18
  // We recommend this pattern to be able to use async/await everywhere
@@ -5,6 +5,7 @@
5
5
  "esModuleInterop": true,
6
6
  "forceConsistentCasingInFileNames": true,
7
7
  "strict": true,
8
- "skipLibCheck": true
8
+ "skipLibCheck": true,
9
+ "resolveJsonModule": true
9
10
  }
10
11
  }
@@ -73,6 +73,7 @@ import {
73
73
  TASK_COMPILE_SOLIDITY_RUN_SOLC,
74
74
  TASK_COMPILE_SOLIDITY_RUN_SOLCJS,
75
75
  TASK_COMPILE_REMOVE_OBSOLETE_ARTIFACTS,
76
+ TASK_COMPILE_TRANSFORM_IMPORT_NAME,
76
77
  } from "./task-names";
77
78
  import {
78
79
  getSolidityFilesCachePath,
@@ -90,11 +91,13 @@ type ArtifactsEmittedPerJob = Array<{
90
91
  }>;
91
92
 
92
93
  function isConsoleLogError(error: any): boolean {
94
+ const message = error.message;
95
+
93
96
  return (
94
97
  error.type === "TypeError" &&
95
- typeof error.message === "string" &&
96
- error.message.includes("log") &&
97
- error.message.includes("type(library console)")
98
+ typeof message === "string" &&
99
+ message.includes("log") &&
100
+ message.includes("type(library console)")
98
101
  );
99
102
  }
100
103
 
@@ -157,6 +160,18 @@ subtask(TASK_COMPILE_SOLIDITY_READ_FILE)
157
160
  }
158
161
  );
159
162
 
163
+ /**
164
+ * This task transform the string literal in an import directive.
165
+ * By default it does nothing, but it can be overriden by plugins.
166
+ */
167
+ subtask(TASK_COMPILE_TRANSFORM_IMPORT_NAME)
168
+ .addParam("importName", undefined, undefined, types.string)
169
+ .setAction(
170
+ async ({ importName }: { importName: string }): Promise<string> => {
171
+ return importName;
172
+ }
173
+ );
174
+
160
175
  /**
161
176
  * Receives a list of source names and returns a dependency graph. This task
162
177
  * is responsible for both resolving dependencies (like getting files from
@@ -178,7 +193,9 @@ subtask(TASK_COMPILE_SOLIDITY_GET_DEPENDENCY_GRAPH)
178
193
  config.paths.root,
179
194
  parser,
180
195
  (absolutePath: string) =>
181
- run(TASK_COMPILE_SOLIDITY_READ_FILE, { absolutePath })
196
+ run(TASK_COMPILE_SOLIDITY_READ_FILE, { absolutePath }),
197
+ (importName: string) =>
198
+ run(TASK_COMPILE_TRANSFORM_IMPORT_NAME, { importName })
182
199
  );
183
200
 
184
201
  const resolvedFiles = await Promise.all(
@@ -738,17 +755,21 @@ subtask(TASK_COMPILE_SOLIDITY_LOG_COMPILATION_ERRORS)
738
755
 
739
756
  for (const error of output.errors) {
740
757
  if (error.severity === "error") {
741
- const errorMessage =
758
+ const errorMessage: string =
742
759
  getFormattedInternalCompilerErrorMessage(error) ??
743
760
  error.formattedMessage;
744
761
 
745
- console.error(chalk.red(errorMessage));
762
+ console.error(errorMessage.replace(/^\w+:/, (t) => chalk.red.bold(t)));
746
763
  } else {
747
- console.warn(chalk.yellow(error.formattedMessage));
764
+ console.warn(
765
+ (error.formattedMessage as string).replace(/^\w+:/, (t) =>
766
+ chalk.yellow.bold(t)
767
+ )
768
+ );
748
769
  }
749
770
  }
750
771
 
751
- const hasConsoleErrors = output.errors.some(isConsoleLogError);
772
+ const hasConsoleErrors: boolean = output.errors.some(isConsoleLogError);
752
773
  if (hasConsoleErrors) {
753
774
  console.error(
754
775
  chalk.red(
@@ -1478,9 +1499,7 @@ function needsCompilation(
1478
1499
  }
1479
1500
 
1480
1501
  function hasCompilationErrors(output: any): boolean {
1481
- return (
1482
- output.errors && output.errors.some((x: any) => x.severity === "error")
1483
- );
1502
+ return output.errors?.some((x: any) => x.severity === "error");
1484
1503
  }
1485
1504
 
1486
1505
  /**
@@ -19,12 +19,23 @@ function getSortedFiles(dependenciesGraph: DependencyGraph) {
19
19
  const tsort = require("tsort");
20
20
  const graph = tsort();
21
21
 
22
+ // sort the graph entries to make the results deterministic
23
+ const dependencies = dependenciesGraph
24
+ .entries()
25
+ .sort(([a], [b]) => a.sourceName.localeCompare(b.sourceName));
26
+
22
27
  const filesMap: ResolvedFilesMap = {};
23
- const resolvedFiles = dependenciesGraph.getResolvedFiles();
28
+ const resolvedFiles = dependencies.map(([file, _deps]) => file);
29
+
24
30
  resolvedFiles.forEach((f) => (filesMap[f.sourceName] = f));
25
31
 
26
- for (const [from, deps] of dependenciesGraph.entries()) {
27
- for (const to of deps) {
32
+ for (const [from, deps] of dependencies) {
33
+ // sort the dependencies to make the results deterministic
34
+ const sortedDeps = [...deps].sort((a, b) =>
35
+ a.sourceName.localeCompare(b.sourceName)
36
+ );
37
+
38
+ for (const to of sortedDeps) {
28
39
  graph.add(to.sourceName, from.sourceName);
29
40
  }
30
41
  }
@@ -113,7 +124,10 @@ subtask(TASK_FLATTEN_GET_DEPENDENCY_GRAPH)
113
124
  return dependencyGraph;
114
125
  });
115
126
 
116
- task(TASK_FLATTEN, "Flattens and prints contracts and their dependencies")
127
+ task(
128
+ TASK_FLATTEN,
129
+ "Flattens and prints contracts and their dependencies. If no file is passed, all the contracts in the project will be flattened."
130
+ )
117
131
  .addOptionalVariadicPositionalParam(
118
132
  "files",
119
133
  "The files to flatten",
@@ -2,7 +2,6 @@ import { HelpPrinter } from "../internal/cli/HelpPrinter";
2
2
  import { HARDHAT_EXECUTABLE_NAME, HARDHAT_NAME } from "../internal/constants";
3
3
  import { task } from "../internal/core/config/config-env";
4
4
  import { HARDHAT_PARAM_DEFINITIONS } from "../internal/core/params/hardhat-params";
5
- import { getPackageJson } from "../internal/util/packageInfo";
6
5
 
7
6
  import { TASK_HELP } from "./task-names";
8
7
 
@@ -11,21 +10,21 @@ task(TASK_HELP, "Prints this message")
11
10
  "task",
12
11
  "An optional task to print more info about"
13
12
  )
14
- .setAction(async ({ task: taskName }: { task?: string }, { tasks }) => {
15
- const packageJson = await getPackageJson();
13
+ .setAction(
14
+ async ({ task: taskName }: { task?: string }, { tasks, version }) => {
15
+ const helpPrinter = new HelpPrinter(
16
+ HARDHAT_NAME,
17
+ HARDHAT_EXECUTABLE_NAME,
18
+ version,
19
+ HARDHAT_PARAM_DEFINITIONS,
20
+ tasks
21
+ );
16
22
 
17
- const helpPrinter = new HelpPrinter(
18
- HARDHAT_NAME,
19
- HARDHAT_EXECUTABLE_NAME,
20
- packageJson.version,
21
- HARDHAT_PARAM_DEFINITIONS,
22
- tasks
23
- );
23
+ if (taskName !== undefined) {
24
+ helpPrinter.printTaskHelp(taskName);
25
+ return;
26
+ }
24
27
 
25
- if (taskName !== undefined) {
26
- helpPrinter.printTaskHelp(taskName);
27
- return;
28
+ helpPrinter.printGlobalHelp();
28
29
  }
29
-
30
- helpPrinter.printGlobalHelp();
31
- });
30
+ );
@@ -12,6 +12,8 @@ export const TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS =
12
12
  export const TASK_COMPILE_SOLIDITY_GET_SOURCE_NAMES =
13
13
  "compile:solidity:get-source-names";
14
14
  export const TASK_COMPILE_SOLIDITY_READ_FILE = "compile:solidity:read-file";
15
+ export const TASK_COMPILE_TRANSFORM_IMPORT_NAME =
16
+ "compile:solidity:transform-import-name";
15
17
  export const TASK_COMPILE_SOLIDITY_GET_DEPENDENCY_GRAPH =
16
18
  "compile:solidity:get-dependency-graph";
17
19
  export const TASK_COMPILE_SOLIDITY_GET_COMPILATION_JOBS =
@@ -5,11 +5,14 @@ import path from "path";
5
5
 
6
6
  import { HARDHAT_NETWORK_NAME } from "../internal/constants";
7
7
  import { subtask, task } from "../internal/core/config/config-env";
8
+ import { HardhatError } from "../internal/core/errors";
9
+ import { ERRORS } from "../internal/core/errors-list";
8
10
  import { isRunningWithTypescript } from "../internal/core/typescript-support";
9
11
  import { getForkCacheDirPath } from "../internal/hardhat-network/provider/utils/disk-cache";
10
12
  import { showForkRecommendationsBannerIfNecessary } from "../internal/hardhat-network/provider/utils/fork-recomendations-banner";
11
13
  import { pluralize } from "../internal/util/strings";
12
14
  import { getAllFilesMatching } from "../internal/util/fs-utils";
15
+ import { getProjectPackageJson } from "../internal/util/packageInfo";
13
16
 
14
17
  import {
15
18
  TASK_COMPILE,
@@ -35,8 +38,9 @@ subtask(TASK_TEST_GET_TEST_FILES)
35
38
  return testFilesAbsolutePaths;
36
39
  }
37
40
 
38
- const jsFiles = await getAllFilesMatching(config.paths.tests, (f) =>
39
- f.endsWith(".js")
41
+ const jsFiles = await getAllFilesMatching(
42
+ config.paths.tests,
43
+ (f) => f.endsWith(".js") || f.endsWith(".cjs") || f.endsWith(".mjs")
40
44
  );
41
45
 
42
46
  if (!isRunningWithTypescript(config)) {
@@ -52,6 +56,7 @@ subtask(TASK_TEST_GET_TEST_FILES)
52
56
 
53
57
  subtask(TASK_TEST_SETUP_TEST_ENVIRONMENT, async () => {});
54
58
 
59
+ let testsAlreadyRun = false;
55
60
  subtask(TASK_TEST_RUN_MOCHA_TESTS)
56
61
  .addFlag("parallel", "Run tests in parallel")
57
62
  .addFlag("bail", "Stop running tests after the first test failure")
@@ -99,6 +104,29 @@ subtask(TASK_TEST_RUN_MOCHA_TESTS)
99
104
  const mocha = new Mocha(mochaConfig);
100
105
  taskArgs.testFiles.forEach((file) => mocha.addFile(file));
101
106
 
107
+ // if the project is of type "module" or if there's some ESM test file,
108
+ // we call loadFilesAsync to enable Mocha's ESM support
109
+ const projectPackageJson = await getProjectPackageJson();
110
+ const isTypeModule = projectPackageJson.type === "module";
111
+ const hasEsmTest = taskArgs.testFiles.some((file) =>
112
+ file.endsWith(".mjs")
113
+ );
114
+ if (isTypeModule || hasEsmTest) {
115
+ // Because of the way the ESM cache works, loadFilesAsync doesn't work
116
+ // correctly if used twice within the same process, so we throw an error
117
+ // in that case
118
+ if (testsAlreadyRun) {
119
+ throw new HardhatError(
120
+ ERRORS.BUILTIN_TASKS.TEST_TASK_ESM_TESTS_RUN_TWICE
121
+ );
122
+ }
123
+ testsAlreadyRun = true;
124
+
125
+ // This instructs Mocha to use the more verbose file loading infrastructure
126
+ // which supports both ESM and CJS
127
+ await mocha.loadFilesAsync();
128
+ }
129
+
102
130
  const testFailures = await new Promise<number>((resolve) => {
103
131
  mocha.run(resolve);
104
132
  });