hardhat 2.23.0-dev.2 → 2.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/README.md +3 -1
  2. package/builtin-tasks/compile.js +8 -8
  3. package/builtin-tasks/compile.js.map +1 -1
  4. package/builtin-tasks/flatten.js +13 -6
  5. package/builtin-tasks/flatten.js.map +1 -1
  6. package/builtin-tasks/node.js +7 -7
  7. package/builtin-tasks/node.js.map +1 -1
  8. package/builtin-tasks/test.js +2 -2
  9. package/builtin-tasks/test.js.map +1 -1
  10. package/builtin-tasks/utils/watch.js +2 -2
  11. package/builtin-tasks/utils/watch.js.map +1 -1
  12. package/common/bigInt.d.ts +1 -1
  13. package/common/bigInt.d.ts.map +1 -1
  14. package/console.sol +1 -1
  15. package/internal/cli/autocomplete.js +1 -1
  16. package/internal/cli/autocomplete.js.map +1 -1
  17. package/internal/cli/banner-manager.d.ts +12 -0
  18. package/internal/cli/banner-manager.d.ts.map +1 -0
  19. package/internal/cli/banner-manager.js +126 -0
  20. package/internal/cli/banner-manager.js.map +1 -0
  21. package/internal/cli/bootstrap.js +4 -5
  22. package/internal/cli/bootstrap.js.map +1 -1
  23. package/internal/cli/cli.js +14 -9
  24. package/internal/cli/cli.js.map +1 -1
  25. package/internal/cli/constants.d.ts.map +1 -1
  26. package/internal/cli/constants.js +1 -1
  27. package/internal/cli/constants.js.map +1 -1
  28. package/internal/cli/is-node-version-to-warn-on.d.ts +13 -0
  29. package/internal/cli/is-node-version-to-warn-on.d.ts.map +1 -0
  30. package/internal/cli/is-node-version-to-warn-on.js +46 -0
  31. package/internal/cli/is-node-version-to-warn-on.js.map +1 -0
  32. package/internal/cli/project-creation.d.ts +1 -1
  33. package/internal/cli/project-creation.d.ts.map +1 -1
  34. package/internal/cli/project-creation.js +31 -21
  35. package/internal/cli/project-creation.js.map +1 -1
  36. package/internal/cli/vars.js +10 -10
  37. package/internal/cli/vars.js.map +1 -1
  38. package/internal/cli/version-notifier.js +2 -2
  39. package/internal/cli/version-notifier.js.map +1 -1
  40. package/internal/constants.d.ts.map +1 -1
  41. package/internal/constants.js +1 -0
  42. package/internal/constants.js.map +1 -1
  43. package/internal/context.d.ts +1 -2
  44. package/internal/context.d.ts.map +1 -1
  45. package/internal/context.js +0 -3
  46. package/internal/context.js.map +1 -1
  47. package/internal/core/config/config-env.d.ts +1 -2
  48. package/internal/core/config/config-env.d.ts.map +1 -1
  49. package/internal/core/config/config-env.js +1 -8
  50. package/internal/core/config/config-env.js.map +1 -1
  51. package/internal/core/config/config-loading.d.ts +1 -1
  52. package/internal/core/config/config-loading.d.ts.map +1 -1
  53. package/internal/core/config/config-loading.js +14 -8
  54. package/internal/core/config/config-loading.js.map +1 -1
  55. package/internal/core/config/config-validation.js +1 -1
  56. package/internal/core/config/config-validation.js.map +1 -1
  57. package/internal/core/config/default-config.d.ts.map +1 -1
  58. package/internal/core/config/default-config.js +57 -32
  59. package/internal/core/config/default-config.js.map +1 -1
  60. package/internal/core/errors-list.d.ts +21 -0
  61. package/internal/core/errors-list.d.ts.map +1 -1
  62. package/internal/core/errors-list.js +27 -1
  63. package/internal/core/errors-list.js.map +1 -1
  64. package/internal/core/jsonrpc/types/authorization-list.d.ts +21 -0
  65. package/internal/core/jsonrpc/types/authorization-list.d.ts.map +1 -0
  66. package/internal/{hardhat-network/provider/PoolState.js → core/jsonrpc/types/authorization-list.js} +12 -15
  67. package/internal/core/jsonrpc/types/authorization-list.js.map +1 -0
  68. package/internal/core/jsonrpc/types/base-types.d.ts +2 -0
  69. package/internal/core/jsonrpc/types/base-types.d.ts.map +1 -1
  70. package/internal/core/jsonrpc/types/base-types.js +12 -8
  71. package/internal/core/jsonrpc/types/base-types.js.map +1 -1
  72. package/internal/core/jsonrpc/types/input/logAddress.d.ts +1 -0
  73. package/internal/core/jsonrpc/types/input/logAddress.d.ts.map +1 -1
  74. package/internal/core/jsonrpc/types/input/logTopics.d.ts +1 -0
  75. package/internal/core/jsonrpc/types/input/logTopics.d.ts.map +1 -1
  76. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +23 -0
  77. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -1
  78. package/internal/core/jsonrpc/types/input/transactionRequest.js +2 -0
  79. package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -1
  80. package/internal/core/jsonrpc/types/output/block.d.ts +2 -2
  81. package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
  82. package/internal/core/jsonrpc/types/output/block.js +2 -1
  83. package/internal/core/jsonrpc/types/output/block.js.map +1 -1
  84. package/internal/core/project-structure.js +8 -8
  85. package/internal/core/project-structure.js.map +1 -1
  86. package/internal/core/providers/accounts.d.ts.map +1 -1
  87. package/internal/core/providers/accounts.js +76 -34
  88. package/internal/core/providers/accounts.js.map +1 -1
  89. package/internal/core/providers/construction.d.ts +2 -2
  90. package/internal/core/providers/construction.d.ts.map +1 -1
  91. package/internal/core/providers/construction.js +2 -2
  92. package/internal/core/providers/construction.js.map +1 -1
  93. package/internal/core/providers/http.d.ts.map +1 -1
  94. package/internal/core/providers/http.js +12 -0
  95. package/internal/core/providers/http.js.map +1 -1
  96. package/internal/core/providers/lazy-initialization.d.ts.map +1 -1
  97. package/internal/core/providers/lazy-initialization.js +10 -10
  98. package/internal/core/providers/lazy-initialization.js.map +1 -1
  99. package/internal/core/providers/util.d.ts +1 -0
  100. package/internal/core/providers/util.d.ts.map +1 -1
  101. package/internal/core/providers/util.js +1 -1
  102. package/internal/core/providers/util.js.map +1 -1
  103. package/internal/core/runtime-environment.d.ts +2 -2
  104. package/internal/core/runtime-environment.d.ts.map +1 -1
  105. package/internal/core/runtime-environment.js +2 -2
  106. package/internal/core/runtime-environment.js.map +1 -1
  107. package/internal/core/typescript-support.d.ts +1 -1
  108. package/internal/core/typescript-support.js +1 -1
  109. package/internal/hardhat-network/jsonrpc/client.d.ts +2 -1
  110. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
  111. package/internal/hardhat-network/jsonrpc/client.js +10 -10
  112. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  113. package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -1
  114. package/internal/hardhat-network/jsonrpc/handler.js +2 -1
  115. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  116. package/internal/hardhat-network/provider/node-types.d.ts +0 -52
  117. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  118. package/internal/hardhat-network/provider/output.d.ts +12 -1
  119. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  120. package/internal/hardhat-network/provider/provider.d.ts +5 -20
  121. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  122. package/internal/hardhat-network/provider/provider.js +47 -171
  123. package/internal/hardhat-network/provider/provider.js.map +1 -1
  124. package/internal/hardhat-network/provider/return-data.d.ts +2 -15
  125. package/internal/hardhat-network/provider/return-data.d.ts.map +1 -1
  126. package/internal/hardhat-network/provider/return-data.js +2 -50
  127. package/internal/hardhat-network/provider/return-data.js.map +1 -1
  128. package/internal/hardhat-network/provider/utils/convertToEdr.d.ts.map +1 -1
  129. package/internal/hardhat-network/provider/utils/convertToEdr.js +10 -7
  130. package/internal/hardhat-network/provider/utils/convertToEdr.js.map +1 -1
  131. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js +2 -2
  132. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js.map +1 -1
  133. package/internal/hardhat-network/provider/utils/makeAccount.d.ts +1 -1
  134. package/internal/hardhat-network/provider/utils/makeAccount.d.ts.map +1 -1
  135. package/internal/hardhat-network/provider/utils/makeAccount.js +4 -4
  136. package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
  137. package/internal/hardhat-network/provider/utils/makeForkClient.js +2 -2
  138. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  139. package/internal/hardhat-network/provider/utils/random.d.ts +4 -3
  140. package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -1
  141. package/internal/hardhat-network/provider/utils/random.js +3 -3
  142. package/internal/hardhat-network/provider/utils/random.js.map +1 -1
  143. package/internal/hardhat-network/provider/vm/exit.d.ts +2 -21
  144. package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -1
  145. package/internal/hardhat-network/provider/vm/exit.js +3 -93
  146. package/internal/hardhat-network/provider/vm/exit.js.map +1 -1
  147. package/internal/hardhat-network/provider/vm/minimal-vm.d.ts +3 -2
  148. package/internal/hardhat-network/provider/vm/minimal-vm.d.ts.map +1 -1
  149. package/internal/hardhat-network/provider/vm/minimal-vm.js +10 -4
  150. package/internal/hardhat-network/provider/vm/minimal-vm.js.map +1 -1
  151. package/internal/hardhat-network/provider/vm/types.d.ts +2 -1
  152. package/internal/hardhat-network/provider/vm/types.d.ts.map +1 -1
  153. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +17 -16
  154. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
  155. package/internal/hardhat-network/stack-traces/consoleLogger.js +68 -102
  156. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  157. package/internal/hardhat-network/stack-traces/constants.d.ts +1 -2
  158. package/internal/hardhat-network/stack-traces/constants.d.ts.map +1 -1
  159. package/internal/hardhat-network/stack-traces/constants.js +2 -3
  160. package/internal/hardhat-network/stack-traces/constants.js.map +1 -1
  161. package/internal/hardhat-network/stack-traces/library-utils.d.ts +2 -11
  162. package/internal/hardhat-network/stack-traces/library-utils.d.ts.map +1 -1
  163. package/internal/hardhat-network/stack-traces/library-utils.js +3 -61
  164. package/internal/hardhat-network/stack-traces/library-utils.js.map +1 -1
  165. package/internal/hardhat-network/stack-traces/logger.d.ts +2 -598
  166. package/internal/hardhat-network/stack-traces/logger.d.ts.map +1 -1
  167. package/internal/hardhat-network/stack-traces/logger.js +379 -601
  168. package/internal/hardhat-network/stack-traces/logger.js.map +1 -1
  169. package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -1
  170. package/internal/hardhat-network/stack-traces/solidity-errors.js +61 -56
  171. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  172. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +4 -155
  173. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
  174. package/internal/hardhat-network/stack-traces/solidity-stack-trace.js +12 -37
  175. package/internal/hardhat-network/stack-traces/solidity-stack-trace.js.map +1 -1
  176. package/internal/lib/hardhat-lib.d.ts.map +1 -1
  177. package/internal/lib/hardhat-lib.js +1 -1
  178. package/internal/lib/hardhat-lib.js.map +1 -1
  179. package/internal/sentry/anonymizer.d.ts +1 -1
  180. package/internal/sentry/anonymizer.d.ts.map +1 -1
  181. package/internal/sentry/anonymizer.js +1 -1
  182. package/internal/sentry/anonymizer.js.map +1 -1
  183. package/internal/solidity/compiler/downloader.js +1 -1
  184. package/internal/solidity/compiler/downloader.js.map +1 -1
  185. package/internal/solidity/compiler/solc-info.d.ts.map +1 -1
  186. package/internal/solidity/compiler/solc-info.js +4 -0
  187. package/internal/solidity/compiler/solc-info.js.map +1 -1
  188. package/internal/util/caller-package.js +1 -1
  189. package/internal/util/caller-package.js.map +1 -1
  190. package/internal/util/glob.d.ts +1 -1
  191. package/internal/util/glob.d.ts.map +1 -1
  192. package/internal/util/glob.js +2 -7
  193. package/internal/util/glob.js.map +1 -1
  194. package/internal/util/hardforks.d.ts +2 -1
  195. package/internal/util/hardforks.d.ts.map +1 -1
  196. package/internal/util/hardforks.js +2 -0
  197. package/internal/util/hardforks.js.map +1 -1
  198. package/internal/util/hash.d.ts +1 -0
  199. package/internal/util/hash.d.ts.map +1 -1
  200. package/internal/util/keys-derivation.d.ts +1 -0
  201. package/internal/util/keys-derivation.d.ts.map +1 -1
  202. package/internal/util/packageInfo.d.ts +1 -1
  203. package/internal/util/packageInfo.d.ts.map +1 -1
  204. package/internal/util/packageInfo.js +3 -3
  205. package/internal/util/packageInfo.js.map +1 -1
  206. package/internal/util/request.d.ts +2 -0
  207. package/internal/util/request.d.ts.map +1 -0
  208. package/internal/util/request.js +70 -0
  209. package/internal/util/request.js.map +1 -0
  210. package/package.json +10 -20
  211. package/register.js +1 -1
  212. package/register.js.map +1 -1
  213. package/sample-projects/javascript/contracts/Lock.sol +1 -1
  214. package/sample-projects/javascript/hardhat.config.js +1 -1
  215. package/sample-projects/javascript/ignition/modules/Lock.js +3 -0
  216. package/sample-projects/javascript-esm/contracts/Lock.sol +1 -1
  217. package/sample-projects/javascript-esm/hardhat.config.cjs +1 -1
  218. package/sample-projects/javascript-esm/ignition/modules/Lock.js +3 -0
  219. package/sample-projects/typescript/contracts/Lock.sol +1 -1
  220. package/sample-projects/typescript/hardhat.config.ts +1 -1
  221. package/sample-projects/typescript/ignition/modules/Lock.ts +3 -0
  222. package/sample-projects/typescript-viem/contracts/Lock.sol +1 -1
  223. package/sample-projects/typescript-viem/hardhat.config.ts +1 -1
  224. package/sample-projects/typescript-viem/ignition/modules/Lock.ts +3 -0
  225. package/src/builtin-tasks/compile.ts +12 -8
  226. package/src/builtin-tasks/flatten.ts +59 -41
  227. package/src/builtin-tasks/node.ts +8 -8
  228. package/src/builtin-tasks/test.ts +2 -2
  229. package/src/builtin-tasks/utils/watch.ts +2 -2
  230. package/src/common/bigInt.ts +1 -1
  231. package/src/internal/cli/autocomplete.ts +1 -1
  232. package/src/internal/cli/banner-manager.ts +182 -0
  233. package/src/internal/cli/bootstrap.ts +5 -5
  234. package/src/internal/cli/cli.ts +24 -15
  235. package/src/internal/cli/constants.ts +1 -1
  236. package/src/internal/cli/is-node-version-to-warn-on.ts +54 -0
  237. package/src/internal/cli/project-creation.ts +48 -22
  238. package/src/internal/cli/vars.ts +10 -10
  239. package/src/internal/cli/version-notifier.ts +3 -3
  240. package/src/internal/constants.ts +1 -0
  241. package/src/internal/context.ts +0 -5
  242. package/src/internal/core/config/config-env.ts +0 -10
  243. package/src/internal/core/config/config-loading.ts +15 -8
  244. package/src/internal/core/config/config-validation.ts +1 -1
  245. package/src/internal/core/config/default-config.ts +57 -32
  246. package/src/internal/core/errors-list.ts +30 -1
  247. package/src/internal/core/jsonrpc/types/authorization-list.ts +20 -0
  248. package/src/internal/core/jsonrpc/types/base-types.ts +13 -1
  249. package/src/internal/core/jsonrpc/types/input/transactionRequest.ts +10 -0
  250. package/src/internal/core/jsonrpc/types/output/block.ts +2 -1
  251. package/src/internal/core/project-structure.ts +8 -8
  252. package/src/internal/core/providers/accounts.ts +95 -50
  253. package/src/internal/core/providers/construction.ts +1 -3
  254. package/src/internal/core/providers/http.ts +17 -0
  255. package/src/internal/core/providers/lazy-initialization.ts +13 -13
  256. package/src/internal/core/providers/util.ts +1 -1
  257. package/src/internal/core/runtime-environment.ts +0 -8
  258. package/src/internal/core/typescript-support.ts +1 -1
  259. package/src/internal/hardhat-network/jsonrpc/client.ts +1 -4
  260. package/src/internal/hardhat-network/jsonrpc/handler.ts +2 -1
  261. package/src/internal/hardhat-network/provider/node-types.ts +0 -70
  262. package/src/internal/hardhat-network/provider/output.ts +16 -1
  263. package/src/internal/hardhat-network/provider/provider.ts +57 -236
  264. package/src/internal/hardhat-network/provider/return-data.ts +5 -73
  265. package/src/internal/hardhat-network/provider/utils/convertToEdr.ts +6 -3
  266. package/src/internal/hardhat-network/provider/utils/fork-recomendations-banner.ts +2 -2
  267. package/src/internal/hardhat-network/provider/utils/makeAccount.ts +1 -6
  268. package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +2 -2
  269. package/src/internal/hardhat-network/provider/utils/random.ts +4 -5
  270. package/src/internal/hardhat-network/provider/vm/exit.ts +4 -112
  271. package/src/internal/hardhat-network/provider/vm/minimal-vm.ts +8 -3
  272. package/src/internal/hardhat-network/provider/vm/types.ts +1 -1
  273. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +34 -95
  274. package/src/internal/hardhat-network/stack-traces/constants.ts +1 -2
  275. package/src/internal/hardhat-network/stack-traces/library-utils.ts +5 -90
  276. package/src/internal/hardhat-network/stack-traces/logger.ts +378 -600
  277. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +17 -16
  278. package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +83 -186
  279. package/src/internal/lib/hardhat-lib.ts +0 -1
  280. package/src/internal/sentry/anonymizer.ts +2 -2
  281. package/src/internal/solidity/compiler/downloader.ts +1 -1
  282. package/src/internal/solidity/compiler/solc-info.ts +4 -0
  283. package/src/internal/util/caller-package.ts +2 -2
  284. package/src/internal/util/glob.ts +6 -6
  285. package/src/internal/util/hardforks.ts +2 -0
  286. package/src/internal/util/packageInfo.ts +4 -4
  287. package/src/internal/util/request.ts +51 -0
  288. package/src/register.ts +0 -1
  289. package/src/types/config.ts +2 -0
  290. package/src/types/index.ts +0 -1
  291. package/types/config.d.ts +2 -0
  292. package/types/config.d.ts.map +1 -1
  293. package/types/index.d.ts +0 -1
  294. package/types/index.d.ts.map +1 -1
  295. package/types/index.js +0 -1
  296. package/types/index.js.map +1 -1
  297. package/internal/hardhat-network/provider/BlockchainBase.d.ts +0 -29
  298. package/internal/hardhat-network/provider/BlockchainBase.d.ts.map +0 -1
  299. package/internal/hardhat-network/provider/BlockchainBase.js +0 -144
  300. package/internal/hardhat-network/provider/BlockchainBase.js.map +0 -1
  301. package/internal/hardhat-network/provider/BlockchainData.d.ts +0 -58
  302. package/internal/hardhat-network/provider/BlockchainData.d.ts.map +0 -1
  303. package/internal/hardhat-network/provider/BlockchainData.js +0 -178
  304. package/internal/hardhat-network/provider/BlockchainData.js.map +0 -1
  305. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +0 -24
  306. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +0 -1
  307. package/internal/hardhat-network/provider/HardhatBlockchain.js +0 -73
  308. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +0 -1
  309. package/internal/hardhat-network/provider/MiningTimer.d.ts +0 -28
  310. package/internal/hardhat-network/provider/MiningTimer.d.ts.map +0 -1
  311. package/internal/hardhat-network/provider/MiningTimer.js +0 -96
  312. package/internal/hardhat-network/provider/MiningTimer.js.map +0 -1
  313. package/internal/hardhat-network/provider/PoolState.d.ts +0 -26
  314. package/internal/hardhat-network/provider/PoolState.d.ts.map +0 -1
  315. package/internal/hardhat-network/provider/PoolState.js.map +0 -1
  316. package/internal/hardhat-network/provider/TransactionQueue.d.ts +0 -32
  317. package/internal/hardhat-network/provider/TransactionQueue.d.ts.map +0 -1
  318. package/internal/hardhat-network/provider/TransactionQueue.js +0 -130
  319. package/internal/hardhat-network/provider/TransactionQueue.js.map +0 -1
  320. package/internal/hardhat-network/provider/TxPool.d.ts +0 -83
  321. package/internal/hardhat-network/provider/TxPool.d.ts.map +0 -1
  322. package/internal/hardhat-network/provider/TxPool.js +0 -470
  323. package/internal/hardhat-network/provider/TxPool.js.map +0 -1
  324. package/internal/hardhat-network/provider/ethereumjs-workarounds.d.ts +0 -2
  325. package/internal/hardhat-network/provider/ethereumjs-workarounds.d.ts.map +0 -1
  326. package/internal/hardhat-network/provider/ethereumjs-workarounds.js +0 -15
  327. package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +0 -1
  328. package/internal/hardhat-network/provider/filter.d.ts +0 -29
  329. package/internal/hardhat-network/provider/filter.d.ts.map +0 -1
  330. package/internal/hardhat-network/provider/filter.js +0 -97
  331. package/internal/hardhat-network/provider/filter.js.map +0 -1
  332. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +0 -33
  333. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +0 -1
  334. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +0 -272
  335. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +0 -1
  336. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +0 -51
  337. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +0 -1
  338. package/internal/hardhat-network/provider/fork/ForkStateManager.js +0 -300
  339. package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +0 -1
  340. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts +0 -4
  341. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +0 -1
  342. package/internal/hardhat-network/provider/fork/rpcToBlockData.js +0 -32
  343. package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +0 -1
  344. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +0 -10
  345. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +0 -1
  346. package/internal/hardhat-network/provider/fork/rpcToTxData.js +0 -29
  347. package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +0 -1
  348. package/internal/hardhat-network/provider/modules/base.d.ts +0 -17
  349. package/internal/hardhat-network/provider/modules/base.d.ts.map +0 -1
  350. package/internal/hardhat-network/provider/modules/base.js +0 -127
  351. package/internal/hardhat-network/provider/modules/base.js.map +0 -1
  352. package/internal/hardhat-network/provider/modules/debug.d.ts +0 -12
  353. package/internal/hardhat-network/provider/modules/debug.d.ts.map +0 -1
  354. package/internal/hardhat-network/provider/modules/debug.js +0 -52
  355. package/internal/hardhat-network/provider/modules/debug.js.map +0 -1
  356. package/internal/hardhat-network/provider/modules/eth.d.ts +0 -107
  357. package/internal/hardhat-network/provider/modules/eth.d.ts.map +0 -1
  358. package/internal/hardhat-network/provider/modules/eth.js +0 -1034
  359. package/internal/hardhat-network/provider/modules/eth.js.map +0 -1
  360. package/internal/hardhat-network/provider/modules/evm.d.ts +0 -32
  361. package/internal/hardhat-network/provider/modules/evm.d.ts.map +0 -1
  362. package/internal/hardhat-network/provider/modules/evm.js +0 -180
  363. package/internal/hardhat-network/provider/modules/evm.js.map +0 -1
  364. package/internal/hardhat-network/provider/modules/hardhat.d.ts +0 -54
  365. package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +0 -1
  366. package/internal/hardhat-network/provider/modules/hardhat.js +0 -309
  367. package/internal/hardhat-network/provider/modules/hardhat.js.map +0 -1
  368. package/internal/hardhat-network/provider/modules/net.d.ts +0 -13
  369. package/internal/hardhat-network/provider/modules/net.d.ts.map +0 -1
  370. package/internal/hardhat-network/provider/modules/net.js +0 -47
  371. package/internal/hardhat-network/provider/modules/net.js.map +0 -1
  372. package/internal/hardhat-network/provider/modules/personal.d.ts +0 -9
  373. package/internal/hardhat-network/provider/modules/personal.d.ts.map +0 -1
  374. package/internal/hardhat-network/provider/modules/personal.js +0 -31
  375. package/internal/hardhat-network/provider/modules/personal.js.map +0 -1
  376. package/internal/hardhat-network/provider/modules/web3.d.ts +0 -11
  377. package/internal/hardhat-network/provider/modules/web3.d.ts.map +0 -1
  378. package/internal/hardhat-network/provider/modules/web3.js +0 -38
  379. package/internal/hardhat-network/provider/modules/web3.js.map +0 -1
  380. package/internal/hardhat-network/provider/node.d.ts +0 -197
  381. package/internal/hardhat-network/provider/node.d.ts.map +0 -1
  382. package/internal/hardhat-network/provider/node.js +0 -1866
  383. package/internal/hardhat-network/provider/node.js.map +0 -1
  384. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +0 -29
  385. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +0 -1
  386. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +0 -137
  387. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +0 -1
  388. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +0 -27
  389. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +0 -1
  390. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +0 -137
  391. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +0 -1
  392. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +0 -33
  393. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +0 -1
  394. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +0 -141
  395. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +0 -1
  396. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +0 -30
  397. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +0 -1
  398. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +0 -97
  399. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +0 -1
  400. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +0 -30
  401. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +0 -1
  402. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +0 -98
  403. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +0 -1
  404. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +0 -40
  405. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +0 -1
  406. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +0 -91
  407. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +0 -1
  408. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts +0 -32
  409. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts.map +0 -1
  410. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +0 -87
  411. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +0 -1
  412. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +0 -17
  413. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +0 -1
  414. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.js +0 -3
  415. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.js.map +0 -1
  416. package/internal/hardhat-network/provider/utils/makeCommon.d.ts +0 -4
  417. package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +0 -1
  418. package/internal/hardhat-network/provider/utils/makeCommon.js +0 -17
  419. package/internal/hardhat-network/provider/utils/makeCommon.js.map +0 -1
  420. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +0 -7
  421. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +0 -1
  422. package/internal/hardhat-network/provider/utils/makeFakeSignature.js +0 -31
  423. package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +0 -1
  424. package/internal/hardhat-network/provider/utils/makeStateTrie.d.ts +0 -4
  425. package/internal/hardhat-network/provider/utils/makeStateTrie.d.ts.map +0 -1
  426. package/internal/hardhat-network/provider/utils/makeStateTrie.js +0 -20
  427. package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +0 -1
  428. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +0 -8
  429. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +0 -1
  430. package/internal/hardhat-network/provider/utils/putGenesisBlock.js +0 -37
  431. package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +0 -1
  432. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.d.ts +0 -12
  433. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.d.ts.map +0 -1
  434. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js +0 -62
  435. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js.map +0 -1
  436. package/internal/hardhat-network/provider/utils/txMapToArray.d.ts +0 -3
  437. package/internal/hardhat-network/provider/utils/txMapToArray.d.ts.map +0 -1
  438. package/internal/hardhat-network/provider/utils/txMapToArray.js +0 -12
  439. package/internal/hardhat-network/provider/utils/txMapToArray.js.map +0 -1
  440. package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts +0 -4
  441. package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts.map +0 -1
  442. package/internal/hardhat-network/stack-traces/compiler-to-model.js +0 -356
  443. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +0 -1
  444. package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts +0 -15
  445. package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts.map +0 -1
  446. package/internal/hardhat-network/stack-traces/contracts-identifier.js +0 -166
  447. package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +0 -1
  448. package/internal/hardhat-network/stack-traces/debug.d.ts +0 -8
  449. package/internal/hardhat-network/stack-traces/debug.d.ts.map +0 -1
  450. package/internal/hardhat-network/stack-traces/debug.js +0 -148
  451. package/internal/hardhat-network/stack-traces/debug.js.map +0 -1
  452. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts +0 -85
  453. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +0 -1
  454. package/internal/hardhat-network/stack-traces/error-inferrer.js +0 -1168
  455. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +0 -1
  456. package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.d.ts +0 -24
  457. package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.d.ts.map +0 -1
  458. package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js +0 -116
  459. package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js.map +0 -1
  460. package/internal/hardhat-network/stack-traces/message-trace.d.ts +0 -55
  461. package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +0 -1
  462. package/internal/hardhat-network/stack-traces/message-trace.js +0 -49
  463. package/internal/hardhat-network/stack-traces/message-trace.js.map +0 -1
  464. package/internal/hardhat-network/stack-traces/model.d.ts +0 -140
  465. package/internal/hardhat-network/stack-traces/model.d.ts.map +0 -1
  466. package/internal/hardhat-network/stack-traces/model.js +0 -328
  467. package/internal/hardhat-network/stack-traces/model.js.map +0 -1
  468. package/internal/hardhat-network/stack-traces/opcodes.d.ts +0 -266
  469. package/internal/hardhat-network/stack-traces/opcodes.d.ts.map +0 -1
  470. package/internal/hardhat-network/stack-traces/opcodes.js +0 -320
  471. package/internal/hardhat-network/stack-traces/opcodes.js.map +0 -1
  472. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts +0 -14
  473. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +0 -1
  474. package/internal/hardhat-network/stack-traces/solidityTracer.js +0 -167
  475. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +0 -1
  476. package/internal/hardhat-network/stack-traces/source-maps.d.ts +0 -13
  477. package/internal/hardhat-network/stack-traces/source-maps.d.ts.map +0 -1
  478. package/internal/hardhat-network/stack-traces/source-maps.js +0 -106
  479. package/internal/hardhat-network/stack-traces/source-maps.js.map +0 -1
  480. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts +0 -46
  481. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +0 -1
  482. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +0 -421
  483. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +0 -1
  484. package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts +0 -17
  485. package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts.map +0 -1
  486. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +0 -91
  487. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +0 -1
  488. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +0 -19
  489. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +0 -1
  490. package/internal/hardhat-network/stack-traces/vm-tracer.js +0 -170
  491. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +0 -1
  492. package/src/internal/hardhat-network/provider/MiningTimer.ts +0 -118
  493. package/src/internal/hardhat-network/provider/utils/makeCommon.ts +0 -20
  494. package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +0 -699
  495. package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +0 -235
  496. package/src/internal/hardhat-network/stack-traces/debug.ts +0 -220
  497. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +0 -1845
  498. package/src/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.ts +0 -163
  499. package/src/internal/hardhat-network/stack-traces/message-trace.ts +0 -131
  500. package/src/internal/hardhat-network/stack-traces/model.ts +0 -409
  501. package/src/internal/hardhat-network/stack-traces/opcodes.ts +0 -344
  502. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +0 -255
  503. package/src/internal/hardhat-network/stack-traces/source-maps.ts +0 -167
  504. package/src/internal/hardhat-network/stack-traces/vm-trace-decoder.ts +0 -135
  505. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +0 -221
  506. package/src/types/experimental.ts +0 -18
  507. package/types/experimental.d.ts +0 -5
  508. package/types/experimental.d.ts.map +0 -1
  509. package/types/experimental.js +0 -3
  510. package/types/experimental.js.map +0 -1
@@ -0,0 +1,182 @@
1
+ import path from "node:path";
2
+ import fs from "node:fs/promises";
3
+ import debug from "debug";
4
+ import { getCacheDir } from "../util/global-dir";
5
+ import { requestJson } from "../util/request";
6
+
7
+ const log = debug("hardhat:util:banner-manager");
8
+
9
+ interface BannerConfig {
10
+ enabled: boolean;
11
+ formattedMessages: string[];
12
+ minSecondsBetweenDisplays: number;
13
+ minSecondsBetweenRequests: number;
14
+ }
15
+
16
+ const BANNER_CONFIG_URL =
17
+ "https://raw.githubusercontent.com/NomicFoundation/hardhat/refs/heads/main/banner-config.json";
18
+
19
+ const BANNER_CACHE_FILE_NAME = "banner-config.json";
20
+
21
+ export class BannerManager {
22
+ private static _instance: BannerManager | undefined;
23
+
24
+ private constructor(
25
+ private _bannerConfig: BannerConfig | undefined,
26
+ private _lastDisplayTime: number,
27
+ private _lastRequestTime: number
28
+ ) {}
29
+
30
+ public static async getInstance(): Promise<BannerManager> {
31
+ if (this._instance === undefined) {
32
+ log("Initializing BannerManager");
33
+ const { bannerConfig, lastDisplayTime, lastRequestTime } =
34
+ await readCache();
35
+ this._instance = new BannerManager(
36
+ bannerConfig,
37
+ lastDisplayTime,
38
+ lastRequestTime
39
+ );
40
+ }
41
+
42
+ return this._instance;
43
+ }
44
+
45
+ private async _requestBannerConfig(timeout?: number): Promise<void> {
46
+ if (this._bannerConfig !== undefined) {
47
+ const timeSinceLastRequest = Date.now() - this._lastRequestTime;
48
+ if (
49
+ timeSinceLastRequest <
50
+ this._bannerConfig.minSecondsBetweenRequests * 1000
51
+ ) {
52
+ log(
53
+ `Skipping banner config request. Time since last request: ${timeSinceLastRequest}ms`
54
+ );
55
+ return;
56
+ }
57
+ }
58
+
59
+ try {
60
+ const bannerConfig = await requestJson(BANNER_CONFIG_URL, timeout);
61
+
62
+ if (!this._isBannerConfig(bannerConfig)) {
63
+ log(`Invalid banner config received:`, bannerConfig);
64
+ return;
65
+ }
66
+
67
+ this._bannerConfig = bannerConfig;
68
+ this._lastRequestTime = Date.now();
69
+
70
+ await writeCache({
71
+ bannerConfig: this._bannerConfig,
72
+ lastDisplayTime: this._lastDisplayTime,
73
+ lastRequestTime: this._lastRequestTime,
74
+ });
75
+ } catch (error) {
76
+ log(
77
+ `Error requesting banner config: ${
78
+ error instanceof Error ? error.message : JSON.stringify(error)
79
+ }`
80
+ );
81
+ }
82
+ }
83
+
84
+ private _isBannerConfig(value: unknown): value is BannerConfig {
85
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
86
+ return false;
87
+ }
88
+
89
+ return (
90
+ Object.getOwnPropertyNames(value).length === 4 &&
91
+ "enabled" in value &&
92
+ typeof value.enabled === "boolean" &&
93
+ "formattedMessages" in value &&
94
+ Array.isArray(value.formattedMessages) &&
95
+ value.formattedMessages.every((message) => typeof message === "string") &&
96
+ "minSecondsBetweenDisplays" in value &&
97
+ typeof value.minSecondsBetweenDisplays === "number" &&
98
+ "minSecondsBetweenRequests" in value &&
99
+ typeof value.minSecondsBetweenRequests === "number"
100
+ );
101
+ }
102
+
103
+ public async showBanner(timeout?: number): Promise<void> {
104
+ await this._requestBannerConfig(timeout);
105
+
106
+ if (
107
+ this._bannerConfig === undefined ||
108
+ !this._bannerConfig.enabled ||
109
+ this._bannerConfig.formattedMessages.length === 0
110
+ ) {
111
+ log("Banner is disabled or no messages available.");
112
+ return;
113
+ }
114
+
115
+ const { formattedMessages, minSecondsBetweenDisplays } = this._bannerConfig;
116
+
117
+ const timeSinceLastDisplay = Date.now() - this._lastDisplayTime;
118
+ if (timeSinceLastDisplay < minSecondsBetweenDisplays * 1000) {
119
+ log(
120
+ `Skipping banner display. Time since last display: ${timeSinceLastDisplay}ms`
121
+ );
122
+ return;
123
+ }
124
+
125
+ // select a random message from the formattedMessages array
126
+ const randomIndex = Math.floor(Math.random() * formattedMessages.length);
127
+ const message = formattedMessages[randomIndex];
128
+
129
+ console.log(message);
130
+ this._lastDisplayTime = Date.now();
131
+ await writeCache({
132
+ bannerConfig: this._bannerConfig,
133
+ lastDisplayTime: this._lastDisplayTime,
134
+ lastRequestTime: this._lastRequestTime,
135
+ });
136
+ }
137
+ }
138
+
139
+ interface BannerCache {
140
+ bannerConfig: BannerConfig | undefined;
141
+ lastDisplayTime: number;
142
+ lastRequestTime: number;
143
+ }
144
+
145
+ async function readCache(): Promise<BannerCache> {
146
+ const cacheDir = await getCacheDir();
147
+ const bannerCacheFilePath = path.join(cacheDir, BANNER_CACHE_FILE_NAME);
148
+
149
+ let cache: BannerCache = {
150
+ bannerConfig: undefined,
151
+ lastDisplayTime: 0,
152
+ lastRequestTime: 0,
153
+ };
154
+ try {
155
+ const fileContents = await fs.readFile(bannerCacheFilePath, "utf-8");
156
+ cache = JSON.parse(fileContents);
157
+ } catch (error) {
158
+ log(
159
+ `Error reading cache file: ${
160
+ error instanceof Error ? error.message : JSON.stringify(error)
161
+ }`
162
+ );
163
+ }
164
+
165
+ return cache;
166
+ }
167
+
168
+ async function writeCache(cache: BannerCache) {
169
+ const cacheDir = await getCacheDir();
170
+ const bannerCacheFilePath = path.join(cacheDir, BANNER_CACHE_FILE_NAME);
171
+
172
+ try {
173
+ await fs.mkdir(cacheDir, { recursive: true });
174
+ await fs.writeFile(bannerCacheFilePath, JSON.stringify(cache, null, 2));
175
+ } catch (error) {
176
+ log(
177
+ `Error writing cache file: ${
178
+ error instanceof Error ? error.message : JSON.stringify(error)
179
+ }`
180
+ );
181
+ }
182
+ }
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
- import semver from "semver";
3
- import chalk from "chalk";
4
2
 
5
- import { SUPPORTED_NODE_VERSIONS } from "./constants";
3
+ import picocolors from "picocolors";
6
4
 
7
- if (!semver.satisfies(process.version, SUPPORTED_NODE_VERSIONS.join(" || "))) {
5
+ import { isNodeVersionToWarnOn } from "./is-node-version-to-warn-on";
6
+
7
+ if (isNodeVersionToWarnOn(process.version)) {
8
8
  console.warn(
9
- chalk.yellow.bold(`WARNING:`),
9
+ picocolors.yellow(picocolors.bold(`WARNING:`)),
10
10
  `You are currently using Node.js ${process.version}, which is not supported by Hardhat. This can lead to unexpected behavior. See https://hardhat.org/nodejs-versions`
11
11
  );
12
12
  console.log();
@@ -1,4 +1,4 @@
1
- import chalk from "chalk";
1
+ import picocolors from "picocolors";
2
2
  import debug from "debug";
3
3
  import "source-map-support/register";
4
4
 
@@ -49,6 +49,7 @@ import {
49
49
  isHardhatVSCodeInstalled,
50
50
  } from "./hardhat-vscode-installation";
51
51
  import { handleVars } from "./vars";
52
+ import { BannerManager } from "./banner-manager";
52
53
 
53
54
  const log = debug("hardhat:core:cli");
54
55
 
@@ -102,7 +103,7 @@ function showViaIRWarning(resolvedConfig: HardhatConfig) {
102
103
  if (viaIREnabled) {
103
104
  console.warn();
104
105
  console.warn(
105
- chalk.yellow(
106
+ picocolors.yellow(
106
107
  `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.
107
108
 
108
109
  Learn more at https://hardhat.org/solc-viair`
@@ -170,14 +171,16 @@ async function main() {
170
171
 
171
172
  // Warning for Hardhat V3 deprecation
172
173
  console.warn(
173
- chalk.yellow.bold("\n\nDEPRECATION WARNING\n\n"),
174
- chalk.yellow(
175
- `Initializing a project with ${chalk.white.italic(
176
- "npx hardhat"
174
+ picocolors.yellow(picocolors.bold("\n\nDEPRECATION WARNING\n\n")),
175
+ picocolors.yellow(
176
+ `Initializing a project with ${picocolors.white(
177
+ picocolors.italic("npx hardhat")
177
178
  )} is deprecated and will be removed in the future.\n`
178
179
  ),
179
- chalk.yellow(
180
- `Please use ${chalk.white.italic("npx hardhat init")} instead.\n\n`
180
+ picocolors.yellow(
181
+ `Please use ${picocolors.white(
182
+ picocolors.italic("npx hardhat init")
183
+ )} instead.\n\n`
181
184
  )
182
185
  );
183
186
 
@@ -234,7 +237,6 @@ async function main() {
234
237
  taskDefinitions,
235
238
  scopesDefinitions,
236
239
  envExtenders,
237
- ctx.experimentalHardhatNetworkMessageTraceHooks,
238
240
  userConfig,
239
241
  providerExtenders
240
242
  );
@@ -276,7 +278,7 @@ async function main() {
276
278
 
277
279
  let taskArguments: TaskArguments;
278
280
 
279
- // --help is a also special case
281
+ // --help is an also special case
280
282
  if (hardhatArguments.help && taskName !== TASK_HELP) {
281
283
  // we "move" the task and scope names to the task arguments,
282
284
  // and run the help task
@@ -381,6 +383,11 @@ async function main() {
381
383
  }
382
384
  }
383
385
 
386
+ if (!isRunningOnCiServer() && process.stdout.isTTY === true) {
387
+ const hardhat3BannerManager = await BannerManager.getInstance();
388
+ await hardhat3BannerManager.showBanner(200);
389
+ }
390
+
384
391
  log(`Killing Hardhat after successfully running task ${taskName}`);
385
392
  } catch (error) {
386
393
  let isHardhatError = false;
@@ -388,20 +395,22 @@ async function main() {
388
395
  if (HardhatError.isHardhatError(error)) {
389
396
  isHardhatError = true;
390
397
  console.error(
391
- chalk.red.bold("Error"),
392
- error.message.replace(/^\w+:/, (t) => chalk.red.bold(t))
398
+ picocolors.red(picocolors.bold("Error")),
399
+ error.message.replace(/^\w+:/, (t) =>
400
+ picocolors.red(picocolors.bold(t))
401
+ )
393
402
  );
394
403
  } else if (HardhatPluginError.isHardhatPluginError(error)) {
395
404
  isHardhatError = true;
396
405
  console.error(
397
- chalk.red.bold(`Error in plugin ${error.pluginName}:`),
406
+ picocolors.red(picocolors.bold(`Error in plugin ${error.pluginName}:`)),
398
407
  error.message
399
408
  );
400
409
  } else if (error instanceof Error) {
401
- console.error(chalk.red("An unexpected error occurred:"));
410
+ console.error(picocolors.red("An unexpected error occurred:"));
402
411
  showStackTraces = true;
403
412
  } else {
404
- console.error(chalk.red("An unexpected error occurred."));
413
+ console.error(picocolors.red("An unexpected error occurred."));
405
414
  showStackTraces = true;
406
415
  }
407
416
 
@@ -1 +1 @@
1
- export const SUPPORTED_NODE_VERSIONS = ["^18.0.0", "^20.0.0"];
1
+ export const SUPPORTED_NODE_VERSIONS = ["^18.0.0", "^20.0.0", "^22.0.0"];
@@ -0,0 +1,54 @@
1
+ import semver from "semver";
2
+
3
+ import { assertHardhatInvariant } from "../core/errors";
4
+ import { SUPPORTED_NODE_VERSIONS } from "./constants";
5
+
6
+ /**
7
+ * Determine if the node version should trigger an unsupported
8
+ * warning.
9
+ *
10
+ * The current rule is that an unsupported warning will be shown if
11
+ *
12
+ * 1. An odd numbered version of Node.js is used - as this will never go to LTS
13
+ * 2. The version is less than the minimum supported version
14
+ *
15
+ * We intentionally do not warn on newer **even** versions of Node.js.
16
+ */
17
+ export function isNodeVersionToWarnOn(nodeVersion: string): boolean {
18
+ const supportedVersions = SUPPORTED_NODE_VERSIONS.join(" || ");
19
+
20
+ // If the version is supported, no need to warn and short circuit
21
+ if (semver.satisfies(nodeVersion, supportedVersions)) {
22
+ return false;
23
+ }
24
+
25
+ if (_onOddNumberedVersion(nodeVersion)) {
26
+ return true;
27
+ }
28
+
29
+ if (_lessThanMinimumSupportedVersion(nodeVersion, supportedVersions)) {
30
+ return true;
31
+ }
32
+
33
+ // A newer version of Node.js that will go to LTS
34
+ // we have opted not to warn.
35
+ return false;
36
+ }
37
+
38
+ function _onOddNumberedVersion(nodeVersion: string) {
39
+ return semver.major(nodeVersion) % 2 === 1;
40
+ }
41
+
42
+ function _lessThanMinimumSupportedVersion(
43
+ nodeVersion: string,
44
+ supportedVersions: string
45
+ ) {
46
+ const minSupportedVersion = semver.minVersion(supportedVersions);
47
+
48
+ assertHardhatInvariant(
49
+ minSupportedVersion !== null,
50
+ "Unexpectedly failed to parse the minimum supported version of Node.js"
51
+ );
52
+
53
+ return semver.lt(nodeVersion, minSupportedVersion);
54
+ }
@@ -1,4 +1,4 @@
1
- import chalk from "chalk";
1
+ import picocolors from "picocolors";
2
2
  import fsExtra from "fs-extra";
3
3
  import path from "path";
4
4
 
@@ -23,6 +23,7 @@ import {
23
23
  import { emoji } from "./emoji";
24
24
  import { Dependencies, PackageManager } from "./types";
25
25
  import { requestTelemetryConsent } from "./analytics";
26
+ import { BannerManager } from "./banner-manager";
26
27
 
27
28
  enum Action {
28
29
  CREATE_JAVASCRIPT_PROJECT_ACTION = "Create a JavaScript project",
@@ -97,28 +98,34 @@ const TYPESCRIPT_VIEM_PEER_DEPENDENCIES: Dependencies = {
97
98
  // generated with the "colossal" font
98
99
  function printAsciiLogo() {
99
100
  console.log(
100
- chalk.blue("888 888 888 888 888")
101
+ picocolors.blue("888 888 888 888 888")
101
102
  );
102
103
  console.log(
103
- chalk.blue("888 888 888 888 888")
104
+ picocolors.blue("888 888 888 888 888")
104
105
  );
105
106
  console.log(
106
- chalk.blue("888 888 888 888 888")
107
+ picocolors.blue("888 888 888 888 888")
107
108
  );
108
109
  console.log(
109
- chalk.blue("8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888")
110
+ picocolors.blue(
111
+ "8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888"
112
+ )
110
113
  );
111
114
  console.log(
112
- chalk.blue('888 888 "88b 888P" d88" 888 888 "88b "88b 888')
115
+ picocolors.blue('888 888 "88b 888P" d88" 888 888 "88b "88b 888')
113
116
  );
114
117
  console.log(
115
- chalk.blue("888 888 .d888888 888 888 888 888 888 .d888888 888")
118
+ picocolors.blue("888 888 .d888888 888 888 888 888 888 .d888888 888")
116
119
  );
117
120
  console.log(
118
- chalk.blue("888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.")
121
+ picocolors.blue(
122
+ "888 888 888 888 888 Y88b 888 888 888 888 888 Y88b."
123
+ )
119
124
  );
120
125
  console.log(
121
- chalk.blue('888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888')
126
+ picocolors.blue(
127
+ '888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888'
128
+ )
122
129
  );
123
130
  console.log("");
124
131
  }
@@ -127,7 +134,7 @@ async function printWelcomeMessage() {
127
134
  const packageJson = await getPackageJson();
128
135
 
129
136
  console.log(
130
- chalk.cyan(
137
+ picocolors.cyan(
131
138
  `${emoji("👷 ")}Welcome to ${HARDHAT_NAME} v${packageJson.version}${emoji(
132
139
  " 👷‍"
133
140
  )}\n`
@@ -200,7 +207,7 @@ Please delete or rename ${pluralize(
200
207
  "it",
201
208
  "them"
202
209
  )} and try again.`;
203
- console.log(chalk.red(errorMsg));
210
+ console.log(picocolors.red(errorMsg));
204
211
  process.exit(1);
205
212
  }
206
213
 
@@ -254,7 +261,7 @@ async function printRecommendedDepsInstallationInstructions(
254
261
  // exported so we can test that it uses the latest supported version of solidity
255
262
  export const EMPTY_HARDHAT_CONFIG = `/** @type import('hardhat/config').HardhatUserConfig */
256
263
  module.exports = {
257
- solidity: "0.8.24",
264
+ solidity: "0.8.28",
258
265
  };
259
266
  `;
260
267
 
@@ -356,23 +363,25 @@ async function createPackageJson() {
356
363
 
357
364
  function showStarOnGitHubMessage() {
358
365
  console.log(
359
- chalk.cyan("Give Hardhat a star on Github if you're enjoying it!") +
366
+ picocolors.cyan("Give Hardhat a star on Github if you're enjoying it!") +
360
367
  emoji(" ⭐️✨")
361
368
  );
362
369
  console.log();
363
- console.log(chalk.cyan(" https://github.com/NomicFoundation/hardhat"));
370
+ console.log(
371
+ picocolors.cyan(" https://github.com/NomicFoundation/hardhat")
372
+ );
364
373
  }
365
374
 
366
375
  export function showSoliditySurveyMessage() {
367
- if (new Date() > new Date("2024-01-07 23:39")) {
376
+ if (new Date() > new Date("2025-01-31 23:39")) {
368
377
  // the survey has finished
369
378
  return;
370
379
  }
371
380
 
372
381
  console.log();
373
382
  console.log(
374
- chalk.cyan(
375
- "Please take a moment to complete the 2023 Solidity Survey: https://hardhat.org/solidity-survey-2023"
383
+ picocolors.cyan(
384
+ "Please take a moment to complete the 2024 Solidity Survey: https://hardhat.org/solidity-survey-2024"
376
385
  )
377
386
  );
378
387
  }
@@ -405,7 +414,7 @@ export async function createProject() {
405
414
  if (action === Action.CREATE_EMPTY_HARDHAT_CONFIG_ACTION) {
406
415
  await writeEmptyHardhatConfig(isEsm);
407
416
  console.log(
408
- `${emoji("✨ ")}${chalk.cyan(`Config file created`)}${emoji(" ✨")}`
417
+ `${emoji("✨ ")}${picocolors.cyan(`Config file created`)}${emoji(" ✨")}`
409
418
  );
410
419
 
411
420
  if (!isInstalled(HARDHAT_PACKAGE_NAME)) {
@@ -504,7 +513,9 @@ export async function createProject() {
504
513
 
505
514
  if (!installed) {
506
515
  console.warn(
507
- chalk.red("Failed to install the sample project's dependencies")
516
+ picocolors.red(
517
+ "Failed to install the sample project's dependencies"
518
+ )
508
519
  );
509
520
  }
510
521
 
@@ -519,13 +530,16 @@ export async function createProject() {
519
530
  }
520
531
 
521
532
  console.log(
522
- `\n${emoji("✨ ")}${chalk.cyan("Project created")}${emoji(" ✨")}`
533
+ `\n${emoji("✨ ")}${picocolors.cyan("Project created")}${emoji(" ✨")}`
523
534
  );
524
535
  console.log();
525
536
  console.log("See the README.md file for some example tasks you can run");
526
537
  console.log();
527
538
  showStarOnGitHubMessage();
528
539
  showSoliditySurveyMessage();
540
+
541
+ const hardhat3BannerManager = await BannerManager.getInstance();
542
+ await hardhat3BannerManager.showBanner();
529
543
  }
530
544
 
531
545
  async function canInstallRecommendedDeps() {
@@ -544,12 +558,24 @@ function isInstalled(dep: string) {
544
558
  return dep in allDependencies;
545
559
  }
546
560
 
561
+ function getProjectTypeFromUserAgent() {
562
+ const userAgent = process.env.npm_config_user_agent;
563
+ // Get first part of user agent string
564
+ const [projectType] = userAgent?.split("/") ?? [];
565
+ return projectType;
566
+ }
567
+
547
568
  async function isYarnProject() {
548
- return fsExtra.pathExists("yarn.lock");
569
+ return (
570
+ getProjectTypeFromUserAgent() === "yarn" || fsExtra.pathExists("yarn.lock")
571
+ );
549
572
  }
550
573
 
551
574
  async function isPnpmProject() {
552
- return fsExtra.pathExists("pnpm-lock.yaml");
575
+ return (
576
+ getProjectTypeFromUserAgent() === "pnpm" ||
577
+ fsExtra.pathExists("pnpm-lock.yaml")
578
+ );
553
579
  }
554
580
 
555
581
  async function getProjectPackageManager(): Promise<PackageManager> {
@@ -1,4 +1,4 @@
1
- import chalk from "chalk";
1
+ import picocolors from "picocolors";
2
2
  import debug from "debug";
3
3
  import { HardhatError, assertHardhatInvariant } from "../core/errors";
4
4
  import { ERRORS } from "../core/errors-list";
@@ -35,7 +35,7 @@ export async function handleVars(
35
35
  case "setup":
36
36
  return setup(configPath);
37
37
  default:
38
- console.error(chalk.red(`Invalid task '${taskDefinition.name}'`));
38
+ console.error(picocolors.red(`Invalid task '${taskDefinition.name}'`));
39
39
  return 1; // Error code
40
40
  }
41
41
  }
@@ -65,7 +65,7 @@ function get(key: string): number {
65
65
  }
66
66
 
67
67
  console.warn(
68
- chalk.yellow(
68
+ picocolors.yellow(
69
69
  `The configuration variable '${key}' is not set in ${HardhatContext.getHardhatContext().varsManager.getStoragePath()}`
70
70
  )
71
71
  );
@@ -88,7 +88,7 @@ function list(): number {
88
88
  } else {
89
89
  if (process.stdout.isTTY) {
90
90
  console.warn(
91
- chalk.yellow(
91
+ picocolors.yellow(
92
92
  `There are no configuration variables stored in ${varsStoragePath}`
93
93
  )
94
94
  );
@@ -112,7 +112,7 @@ function del(key: string): number {
112
112
  }
113
113
 
114
114
  console.warn(
115
- chalk.yellow(
115
+ picocolors.yellow(
116
116
  `There is no configuration variable '${key}' to delete from ${varsStoragePath}`
117
117
  )
118
118
  );
@@ -137,7 +137,7 @@ function setup(configPath: string | undefined) {
137
137
  loadConfigFile(configPath);
138
138
  } catch (err: any) {
139
139
  console.error(
140
- chalk.red(
140
+ picocolors.red(
141
141
  "There is an error in your Hardhat configuration file. Please double check it.\n"
142
142
  )
143
143
  );
@@ -187,7 +187,7 @@ function listVarsToSetup(varsManagerSetup: VarsManagerSetup) {
187
187
 
188
188
  if (requiredKeysToSet.length === 0 && optionalKeysToSet.length === 0) {
189
189
  console.log(
190
- chalk.green(
190
+ picocolors.green(
191
191
  "There are no configuration variables that need to be set for this project"
192
192
  )
193
193
  );
@@ -198,7 +198,7 @@ function listVarsToSetup(varsManagerSetup: VarsManagerSetup) {
198
198
 
199
199
  if (requiredKeysToSet.length > 0) {
200
200
  console.log(
201
- chalk.bold(
201
+ picocolors.bold(
202
202
  `${emoji("❗ ")}The following configuration variables need to be set:\n`
203
203
  )
204
204
  );
@@ -210,7 +210,7 @@ function listVarsToSetup(varsManagerSetup: VarsManagerSetup) {
210
210
 
211
211
  if (optionalKeysToSet.length > 0) {
212
212
  console.log(
213
- chalk.bold(
213
+ picocolors.bold(
214
214
  `${emoji("💡 ")}The following configuration variables are optional:\n`
215
215
  )
216
216
  );
@@ -237,7 +237,7 @@ function printAlreadySetKeys(varsManagerSetup: VarsManagerSetup) {
237
237
  }
238
238
 
239
239
  console.log(
240
- `${chalk.bold(`${emoji("✔️ ")}Configuration variables already set:`)}`
240
+ `${picocolors.bold(`${emoji("✔️ ")}Configuration variables already set:`)}`
241
241
  );
242
242
  console.log();
243
243
 
@@ -1,5 +1,5 @@
1
1
  import boxen from "boxen";
2
- import chalk from "chalk";
2
+ import picocolors from "picocolors";
3
3
  import fsExtra from "fs-extra";
4
4
  import { join } from "node:path";
5
5
  import { mkdir, readFile, writeFile } from "node:fs/promises";
@@ -111,9 +111,9 @@ export async function showNewVersionNotification() {
111
111
 
112
112
  console.log(
113
113
  boxen(
114
- `New Hardhat release available! ${chalk.red(
114
+ `New Hardhat release available! ${picocolors.red(
115
115
  hardhatVersion
116
- )} -> ${chalk.green(latestV2Version)}.
116
+ )} -> ${picocolors.green(latestV2Version)}.
117
117
 
118
118
  Changelog: https://hardhat.org/release/${latestV2Version}
119
119
 
@@ -23,6 +23,7 @@ export const HARDHAT_NETWORK_SUPPORTED_HARDFORKS = [
23
23
  "merge",
24
24
  "shanghai",
25
25
  "cancun",
26
+ "prague",
26
27
  ];
27
28
 
28
29
  export const HARDHAT_MEMPOOL_SUPPORTED_ORDERS = ["fifo", "priority"] as const;
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  ConfigExtender,
3
3
  EnvironmentExtender,
4
- ExperimentalHardhatNetworkMessageTraceHook,
5
4
  HardhatRuntimeEnvironment,
6
5
  ProviderExtender,
7
6
  } from "../types";
@@ -60,10 +59,6 @@ export class HardhatContext {
60
59
 
61
60
  public readonly configExtenders: ConfigExtender[] = [];
62
61
 
63
- // NOTE: This is experimental and will be removed. Please contact our team if
64
- // you are planning to use it.
65
- public readonly experimentalHardhatNetworkMessageTraceHooks: ExperimentalHardhatNetworkMessageTraceHook[] =
66
- [];
67
62
  private _filesLoadedBeforeConfig?: string[];
68
63
  private _filesLoadedAfterConfig?: string[];
69
64