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
@@ -1,115 +1,7 @@
1
- import type { ExceptionalHalt, SuccessReason } from "@nomicfoundation/edr";
2
-
3
1
  import { requireNapiRsModule } from "../../../../common/napi-rs";
4
2
 
5
- export enum ExitCode {
6
- SUCCESS,
7
- REVERT,
8
- OUT_OF_GAS,
9
- INTERNAL_ERROR,
10
- INVALID_OPCODE,
11
- STACK_UNDERFLOW,
12
- CODESIZE_EXCEEDS_MAXIMUM,
13
- CREATE_COLLISION,
14
- STATIC_STATE_CHANGE,
15
- }
16
-
17
- export class Exit {
18
- public static fromEdrSuccessReason(reason: SuccessReason): Exit {
19
- const { SuccessReason } = requireNapiRsModule(
20
- "@nomicfoundation/edr"
21
- ) as typeof import("@nomicfoundation/edr");
22
-
23
- switch (reason) {
24
- case SuccessReason.Stop:
25
- case SuccessReason.Return:
26
- case SuccessReason.SelfDestruct:
27
- return new Exit(ExitCode.SUCCESS);
28
- }
29
-
30
- const _exhaustiveCheck: never = reason;
31
- }
32
-
33
- public static fromEdrExceptionalHalt(halt: ExceptionalHalt): Exit {
34
- const { ExceptionalHalt } = requireNapiRsModule(
35
- "@nomicfoundation/edr"
36
- ) as typeof import("@nomicfoundation/edr");
37
-
38
- switch (halt) {
39
- case ExceptionalHalt.OutOfGas:
40
- return new Exit(ExitCode.OUT_OF_GAS);
41
-
42
- case ExceptionalHalt.OpcodeNotFound:
43
- case ExceptionalHalt.InvalidFEOpcode:
44
- // Returned when an opcode is not implemented for the hardfork
45
- case ExceptionalHalt.NotActivated:
46
- return new Exit(ExitCode.INVALID_OPCODE);
47
-
48
- case ExceptionalHalt.StackUnderflow:
49
- return new Exit(ExitCode.STACK_UNDERFLOW);
50
-
51
- case ExceptionalHalt.CreateCollision:
52
- return new Exit(ExitCode.CREATE_COLLISION);
53
-
54
- case ExceptionalHalt.CreateContractSizeLimit:
55
- return new Exit(ExitCode.CODESIZE_EXCEEDS_MAXIMUM);
56
-
57
- default: {
58
- // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
59
- throw new Error(`Unmatched EDR exceptional halt: ${halt}`);
60
- }
61
- }
62
- }
63
-
64
- constructor(public kind: ExitCode) {}
65
-
66
- public isError(): boolean {
67
- return this.kind !== ExitCode.SUCCESS;
68
- }
69
-
70
- public getReason(): string {
71
- switch (this.kind) {
72
- case ExitCode.SUCCESS:
73
- return "Success";
74
- case ExitCode.REVERT:
75
- return "Reverted";
76
- case ExitCode.OUT_OF_GAS:
77
- return "Out of gas";
78
- case ExitCode.INTERNAL_ERROR:
79
- return "Internal error";
80
- case ExitCode.INVALID_OPCODE:
81
- return "Invalid opcode";
82
- case ExitCode.STACK_UNDERFLOW:
83
- return "Stack underflow";
84
- case ExitCode.CODESIZE_EXCEEDS_MAXIMUM:
85
- return "Codesize exceeds maximum";
86
- case ExitCode.CREATE_COLLISION:
87
- return "Create collision";
88
- case ExitCode.STATIC_STATE_CHANGE:
89
- return "Static state change";
90
- }
91
-
92
- const _exhaustiveCheck: never = this.kind;
93
- }
94
-
95
- public getEdrExceptionalHalt(): ExceptionalHalt {
96
- const { ExceptionalHalt } = requireNapiRsModule(
97
- "@nomicfoundation/edr"
98
- ) as typeof import("@nomicfoundation/edr");
99
-
100
- switch (this.kind) {
101
- case ExitCode.OUT_OF_GAS:
102
- return ExceptionalHalt.OutOfGas;
103
- case ExitCode.INVALID_OPCODE:
104
- return ExceptionalHalt.OpcodeNotFound;
105
- case ExitCode.CODESIZE_EXCEEDS_MAXIMUM:
106
- return ExceptionalHalt.CreateContractSizeLimit;
107
- case ExitCode.CREATE_COLLISION:
108
- return ExceptionalHalt.CreateCollision;
3
+ const { ExitCode } = requireNapiRsModule(
4
+ "@nomicfoundation/edr"
5
+ ) as typeof import("@nomicfoundation/edr");
109
6
 
110
- default:
111
- // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
112
- throw new Error(`Unmatched exit code: ${this.kind}`);
113
- }
114
- }
115
- }
7
+ export { ExitCode };
@@ -1,12 +1,12 @@
1
1
  import type { Provider as EdrProviderT } from "@nomicfoundation/edr";
2
- import type { Address } from "@nomicfoundation/ethereumjs-util";
2
+ import type { Address } from "@ethereumjs/util";
3
3
  import type {
4
4
  MinimalEVMResult,
5
5
  MinimalInterpreterStep,
6
6
  MinimalMessage,
7
7
  } from "./types";
8
8
 
9
- import { AsyncEventEmitter } from "@nomicfoundation/ethereumjs-util";
9
+ import { AsyncEventEmitter } from "@ethereumjs/util";
10
10
 
11
11
  /**
12
12
  * Used by the provider to keep the `_vm` variable used by some plugins. This
@@ -82,7 +82,12 @@ export function getMinimalEthereumJsVm(
82
82
  })
83
83
  );
84
84
 
85
- const response = JSON.parse(responseObject.json);
85
+ let response;
86
+ if (typeof responseObject.data === "string") {
87
+ response = JSON.parse(responseObject.data);
88
+ } else {
89
+ response = responseObject.data;
90
+ }
86
91
 
87
92
  return Buffer.from(response.result.slice(2), "hex");
88
93
  },
@@ -1,5 +1,5 @@
1
1
  import type { ExceptionalHalt, SuccessReason } from "@nomicfoundation/edr";
2
- import type { Address } from "@nomicfoundation/ethereumjs-util";
2
+ import type { Address } from "@ethereumjs/util";
3
3
 
4
4
  /**
5
5
  * These types are minimal versions of the values returned by ethereumjs
@@ -3,7 +3,7 @@ import {
3
3
  bytesToHex as bufferToHex,
4
4
  bytesToInt,
5
5
  fromSigned,
6
- } from "@nomicfoundation/ethereumjs-util";
6
+ } from "@ethereumjs/util";
7
7
  import util from "util";
8
8
 
9
9
  import {
@@ -42,113 +42,62 @@ import {
42
42
  Bytes8Ty,
43
43
  Bytes9Ty,
44
44
  BytesTy,
45
- ConsoleLogs,
46
45
  Int256Ty,
47
46
  StringTy,
48
47
  Uint256Ty,
48
+ CONSOLE_LOG_SIGNATURES,
49
49
  } from "./logger";
50
- import {
51
- EvmMessageTrace,
52
- isCallTrace,
53
- isEvmStep,
54
- isPrecompileTrace,
55
- MessageTrace,
56
- } from "./message-trace";
57
50
 
58
- const CONSOLE_ADDRESS = "0x000000000000000000636F6e736F6c652e6c6f67"; // toHex("console.log")
59
51
  const REGISTER_SIZE = 32;
60
52
 
61
- // eslint-disable-next-line @typescript-eslint/no-empty-interface
62
- interface ConsoleLogArray extends Array<ConsoleLogEntry> {}
63
-
64
- export type ConsoleLogEntry = string | ConsoleLogArray;
65
-
66
- // eslint-disable-next-line @typescript-eslint/no-redeclare
67
- export type ConsoleLogs = ConsoleLogEntry[];
53
+ /** The decoded string representation of the arguments supplied to console.log */
54
+ export type ConsoleLogArgs = string[];
55
+ export type ConsoleLogs = ConsoleLogArgs[];
68
56
 
69
57
  export class ConsoleLogger {
70
- private readonly _consoleLogs: {
71
- [key: number]: string[];
72
- } = {};
73
-
74
- constructor() {
75
- this._consoleLogs = ConsoleLogs;
76
- }
77
-
78
- public getLogMessages(maybeDecodedMessageTrace: MessageTrace): string[] {
79
- return this.getExecutionLogs(maybeDecodedMessageTrace).map(
80
- consoleLogToString
81
- );
82
- }
83
-
84
- public getExecutionLogs(
85
- maybeDecodedMessageTrace: MessageTrace
86
- ): ConsoleLogs[] {
87
- if (isPrecompileTrace(maybeDecodedMessageTrace)) {
88
- return [];
89
- }
90
-
91
- const logs: ConsoleLogs[] = [];
92
- this._collectExecutionLogs(maybeDecodedMessageTrace, logs);
93
- return logs;
94
- }
95
-
96
- private _collectExecutionLogs(trace: EvmMessageTrace, logs: ConsoleLogs) {
97
- for (const messageTrace of trace.steps) {
98
- if (isEvmStep(messageTrace) || isPrecompileTrace(messageTrace)) {
99
- continue;
100
- }
101
-
102
- if (
103
- isCallTrace(messageTrace) &&
104
- bufferToHex(messageTrace.address) === CONSOLE_ADDRESS.toLowerCase()
105
- ) {
106
- const log = this._maybeConsoleLog(Buffer.from(messageTrace.calldata));
107
- if (log !== undefined) {
108
- logs.push(log);
109
- }
110
-
111
- continue;
112
- }
113
-
114
- this._collectExecutionLogs(messageTrace, logs);
115
- }
116
- }
117
-
118
58
  /**
119
59
  * Temporary code to print console.sol messages that come from EDR
120
60
  */
121
- public getDecodedLogs(messages: Buffer[]): string[] {
61
+ public static getDecodedLogs(messages: Buffer[]): string[] {
122
62
  const logs: string[] = [];
123
63
 
124
64
  for (const message of messages) {
125
- const log = this._maybeConsoleLog(message);
65
+ const log = ConsoleLogger._maybeConsoleLog(message);
126
66
  if (log !== undefined) {
127
- logs.push(consoleLogToString(log));
67
+ logs.push(ConsoleLogger.format(log));
128
68
  }
129
69
  }
130
70
 
131
71
  return logs;
132
72
  }
133
73
 
134
- private _maybeConsoleLog(calldata: Buffer): ConsoleLogs | undefined {
135
- const sig = bytesToInt(calldata.slice(0, 4));
74
+ /**
75
+ * Returns a formatted string using the first argument as a `printf`-like
76
+ * format string which can contain zero or more format specifiers.
77
+ *
78
+ * If there are more arguments passed than the number of specifiers, the
79
+ * extra arguments are concatenated to the returned string, separated by spaces.
80
+ */
81
+ public static format(args: ConsoleLogArgs = []): string {
82
+ return util.format(...args);
83
+ }
84
+
85
+ /** Decodes a calldata buffer into string arguments for a console log. */
86
+ private static _maybeConsoleLog(
87
+ calldata: Buffer
88
+ ): ConsoleLogArgs | undefined {
89
+ const selector = bytesToInt(calldata.slice(0, 4));
136
90
  const parameters = calldata.slice(4);
137
91
 
138
- const types = this._consoleLogs[sig];
139
- if (types === undefined) {
92
+ const argTypes = CONSOLE_LOG_SIGNATURES[selector];
93
+ if (argTypes === undefined) {
140
94
  return;
141
95
  }
142
96
 
143
- const consoleLogs = this._decode(parameters, types);
97
+ const decodedArgs = ConsoleLogger._decode(parameters, argTypes);
144
98
 
145
- this._replaceNumberFormatSpecifiers(consoleLogs);
146
-
147
- return consoleLogs;
148
- }
149
-
150
- private _replaceNumberFormatSpecifiers(consoleLogs: ConsoleLogs) {
151
99
  /**
100
+ * The first argument is interpreted as the format string, which may need adjusting.
152
101
  * Replace the occurrences of %d and %i with %s. This is necessary because if the arguments passed are numbers,
153
102
  * they could be too large to be formatted as a Number or an Integer, so it is safer to use a String.
154
103
  * %d and %i are replaced only if there is an odd number of % before the d or i.
@@ -160,15 +109,18 @@ export class ConsoleLogger {
160
109
  * (?<!%) negative look-behind to make this work.
161
110
  * The (?:) is just to avoid capturing that inner group.
162
111
  */
163
- if (consoleLogs.length > 0 && typeof consoleLogs[0] === "string") {
164
- consoleLogs[0] = consoleLogs[0].replace(
112
+ if (decodedArgs.length > 0) {
113
+ decodedArgs[0] = decodedArgs[0].replace(
165
114
  /((?<!%)(?:%%)*)(%[di])/g,
166
115
  "$1%s"
167
116
  );
168
117
  }
118
+
119
+ return decodedArgs;
169
120
  }
170
121
 
171
- private _decode(data: Buffer, types: string[]): ConsoleLogs {
122
+ /** Decodes calldata parameters from `data` according to `types` into their string representation. */
123
+ private static _decode(data: Buffer, types: string[]): string[] {
172
124
  return types.map((type, i) => {
173
125
  const position: number = i * 32;
174
126
  switch (types[i]) {
@@ -282,16 +234,3 @@ export class ConsoleLogger {
282
234
  });
283
235
  }
284
236
  }
285
-
286
- export function consoleLogToString(log: ConsoleLogs): string {
287
- if (log === undefined) {
288
- return "";
289
- }
290
-
291
- // special case for console.log()
292
- if (log.length === 0) {
293
- return "";
294
- }
295
-
296
- return util.format(log[0], ...log.slice(1));
297
- }
@@ -1,2 +1 @@
1
- export const SUPPORTED_SOLIDITY_VERSION_RANGE = "<=0.8.24";
2
- export const FIRST_SOLC_VERSION_SUPPORTED = "0.5.1";
1
+ export const SUPPORTED_SOLIDITY_VERSION_RANGE = "<=0.8.28";
@@ -1,92 +1,7 @@
1
- import { CompilerOutputBytecode } from "../../../types";
1
+ import { requireNapiRsModule } from "../../../common/napi-rs";
2
2
 
3
- import { Opcode } from "./opcodes";
3
+ const { linkHexStringBytecode } = requireNapiRsModule(
4
+ "@nomicfoundation/edr"
5
+ ) as typeof import("@nomicfoundation/edr");
4
6
 
5
- export function getLibraryAddressPositions(
6
- bytecodeOutput: CompilerOutputBytecode
7
- ): number[] {
8
- const positions = [];
9
- for (const libs of Object.values(bytecodeOutput.linkReferences)) {
10
- for (const references of Object.values(libs)) {
11
- for (const ref of references) {
12
- positions.push(ref.start);
13
- }
14
- }
15
- }
16
-
17
- return positions;
18
- }
19
-
20
- export function normalizeCompilerOutputBytecode(
21
- compilerOutputBytecodeObject: string,
22
- addressesPositions: number[]
23
- ): Buffer {
24
- const ZERO_ADDRESS = "0000000000000000000000000000000000000000";
25
- for (const position of addressesPositions) {
26
- compilerOutputBytecodeObject = linkHexStringBytecode(
27
- compilerOutputBytecodeObject,
28
- ZERO_ADDRESS,
29
- position
30
- );
31
- }
32
-
33
- return Buffer.from(compilerOutputBytecodeObject, "hex");
34
- }
35
-
36
- export function linkHexStringBytecode(
37
- code: string,
38
- address: string,
39
- position: number
40
- ) {
41
- if (address.startsWith("0x")) {
42
- address = address.substring(2);
43
- }
44
-
45
- return (
46
- code.substring(0, position * 2) +
47
- address +
48
- code.slice(position * 2 + address.length)
49
- );
50
- }
51
-
52
- export function zeroOutAddresses(
53
- code: Uint8Array,
54
- addressesPositions: number[]
55
- ): Uint8Array {
56
- const addressesSlices = addressesPositions.map((start) => ({
57
- start,
58
- length: 20,
59
- }));
60
-
61
- return zeroOutSlices(code, addressesSlices);
62
- }
63
-
64
- export function zeroOutSlices(
65
- code: Uint8Array,
66
- slices: Array<{ start: number; length: number }>
67
- ): Uint8Array {
68
- for (const { start, length } of slices) {
69
- code = Buffer.concat([
70
- code.slice(0, start),
71
- Buffer.alloc(length, 0),
72
- code.slice(start + length),
73
- ]);
74
- }
75
-
76
- return code;
77
- }
78
-
79
- export function normalizeLibraryRuntimeBytecodeIfNecessary(
80
- code: Uint8Array
81
- ): Uint8Array {
82
- // Libraries' protection normalization:
83
- // Solidity 0.4.20 introduced a protection to prevent libraries from being called directly.
84
- // This is done by modifying the code on deployment, and hard-coding the contract address.
85
- // The first instruction is a PUSH20 of the address, which we zero-out as a way of normalizing
86
- // it. Note that it's also zeroed-out in the compiler output.
87
- if (code[0] === Opcode.PUSH20) {
88
- return zeroOutAddresses(code, [1]);
89
- }
90
-
91
- return code;
92
- }
7
+ export { linkHexStringBytecode };