hardhat 2.11.0-dev.0 → 2.11.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 (406) hide show
  1. package/builtin-tasks/clean.js +2 -1
  2. package/builtin-tasks/clean.js.map +1 -1
  3. package/builtin-tasks/compile.js +52 -95
  4. package/builtin-tasks/compile.js.map +1 -1
  5. package/builtin-tasks/flatten.js +2 -21
  6. package/builtin-tasks/flatten.js.map +1 -1
  7. package/builtin-tasks/node.js +1 -1
  8. package/builtin-tasks/node.js.map +1 -1
  9. package/builtin-tasks/test.js +3 -3
  10. package/builtin-tasks/test.js.map +1 -1
  11. package/builtin-tasks/utils/solidity-files-cache.d.ts.map +1 -1
  12. package/builtin-tasks/utils/solidity-files-cache.js +5 -6
  13. package/builtin-tasks/utils/solidity-files-cache.js.map +1 -1
  14. package/internal/artifacts.d.ts +3 -11
  15. package/internal/artifacts.d.ts.map +1 -1
  16. package/internal/artifacts.js +266 -133
  17. package/internal/artifacts.js.map +1 -1
  18. package/internal/cli/cli.js +26 -12
  19. package/internal/cli/cli.js.map +1 -1
  20. package/internal/core/config/config-loading.js +2 -2
  21. package/internal/core/config/config-loading.js.map +1 -1
  22. package/internal/core/config/config-resolution.d.ts.map +1 -1
  23. package/internal/core/config/config-resolution.js +11 -31
  24. package/internal/core/config/config-resolution.js.map +1 -1
  25. package/internal/core/config/default-config.js +1 -1
  26. package/internal/core/config/default-config.js.map +1 -1
  27. package/internal/core/errors-list.d.ts +7 -0
  28. package/internal/core/errors-list.d.ts.map +1 -1
  29. package/internal/core/errors-list.js +28 -11
  30. package/internal/core/errors-list.js.map +1 -1
  31. package/internal/core/errors.d.ts +2 -1
  32. package/internal/core/errors.d.ts.map +1 -1
  33. package/internal/core/errors.js +5 -1
  34. package/internal/core/errors.js.map +1 -1
  35. package/internal/core/execution-mode.d.ts.map +1 -1
  36. package/internal/core/execution-mode.js +2 -21
  37. package/internal/core/execution-mode.js.map +1 -1
  38. package/internal/core/flamegraph.d.ts +4 -0
  39. package/internal/core/flamegraph.d.ts.map +1 -1
  40. package/internal/core/flamegraph.js +13 -3
  41. package/internal/core/flamegraph.js.map +1 -1
  42. package/internal/core/jsonrpc/types/base-types.d.ts.map +1 -1
  43. package/internal/core/jsonrpc/types/base-types.js +12 -12
  44. package/internal/core/jsonrpc/types/base-types.js.map +1 -1
  45. package/internal/core/params/hardhat-params.d.ts.map +1 -1
  46. package/internal/core/params/hardhat-params.js +18 -0
  47. package/internal/core/params/hardhat-params.js.map +1 -1
  48. package/internal/core/providers/accounts.js +9 -9
  49. package/internal/core/providers/accounts.js.map +1 -1
  50. package/internal/core/providers/construction.d.ts.map +1 -1
  51. package/internal/core/providers/construction.js +5 -6
  52. package/internal/core/providers/construction.js.map +1 -1
  53. package/internal/core/providers/gas-providers.d.ts +2 -2
  54. package/internal/core/providers/util.js +1 -1
  55. package/internal/core/providers/util.js.map +1 -1
  56. package/internal/core/runtime-environment.d.ts +6 -0
  57. package/internal/core/runtime-environment.d.ts.map +1 -1
  58. package/internal/core/runtime-environment.js +72 -6
  59. package/internal/core/runtime-environment.js.map +1 -1
  60. package/internal/core/typescript-support.d.ts +1 -1
  61. package/internal/core/typescript-support.d.ts.map +1 -1
  62. package/internal/core/typescript-support.js +6 -2
  63. package/internal/core/typescript-support.js.map +1 -1
  64. package/internal/hardhat-network/jsonrpc/client.d.ts +1 -1
  65. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
  66. package/internal/hardhat-network/jsonrpc/client.js +10 -10
  67. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  68. package/internal/hardhat-network/provider/BlockchainBase.d.ts +4 -4
  69. package/internal/hardhat-network/provider/BlockchainBase.d.ts.map +1 -1
  70. package/internal/hardhat-network/provider/BlockchainBase.js +31 -12
  71. package/internal/hardhat-network/provider/BlockchainBase.js.map +1 -1
  72. package/internal/hardhat-network/provider/BlockchainData.d.ts +3 -3
  73. package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
  74. package/internal/hardhat-network/provider/BlockchainData.js +15 -15
  75. package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
  76. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +3 -3
  77. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
  78. package/internal/hardhat-network/provider/HardhatBlockchain.js +2 -2
  79. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
  80. package/internal/hardhat-network/provider/PoolState.d.ts +1 -1
  81. package/internal/hardhat-network/provider/PoolState.d.ts.map +1 -1
  82. package/internal/hardhat-network/provider/PoolState.js +21 -2
  83. package/internal/hardhat-network/provider/PoolState.js.map +1 -1
  84. package/internal/hardhat-network/provider/TransactionQueue.d.ts +1 -1
  85. package/internal/hardhat-network/provider/TransactionQueue.d.ts.map +1 -1
  86. package/internal/hardhat-network/provider/TransactionQueue.js +22 -3
  87. package/internal/hardhat-network/provider/TransactionQueue.js.map +1 -1
  88. package/internal/hardhat-network/provider/TxPool.d.ts +4 -4
  89. package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
  90. package/internal/hardhat-network/provider/TxPool.js +35 -16
  91. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  92. package/internal/hardhat-network/provider/ethereumjs-workarounds.js +4 -4
  93. package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +1 -1
  94. package/internal/hardhat-network/provider/filter.d.ts +1 -1
  95. package/internal/hardhat-network/provider/filter.d.ts.map +1 -1
  96. package/internal/hardhat-network/provider/filter.js +3 -3
  97. package/internal/hardhat-network/provider/filter.js.map +1 -1
  98. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +3 -3
  99. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
  100. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +13 -12
  101. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  102. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +3 -5
  103. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +1 -1
  104. package/internal/hardhat-network/provider/fork/ForkStateManager.js +36 -40
  105. package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
  106. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts +1 -1
  107. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
  108. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +2 -2
  109. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +1 -1
  110. package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
  111. package/internal/hardhat-network/provider/modules/eth.d.ts +1 -1
  112. package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
  113. package/internal/hardhat-network/provider/modules/eth.js +22 -22
  114. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  115. package/internal/hardhat-network/provider/modules/hardhat.d.ts +2 -0
  116. package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
  117. package/internal/hardhat-network/provider/modules/hardhat.js +20 -6
  118. package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
  119. package/internal/hardhat-network/provider/modules/logger.d.ts +2 -2
  120. package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
  121. package/internal/hardhat-network/provider/modules/logger.js +14 -14
  122. package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
  123. package/internal/hardhat-network/provider/modules/net.d.ts +1 -1
  124. package/internal/hardhat-network/provider/modules/net.d.ts.map +1 -1
  125. package/internal/hardhat-network/provider/modules/personal.js +3 -3
  126. package/internal/hardhat-network/provider/modules/personal.js.map +1 -1
  127. package/internal/hardhat-network/provider/modules/web3.d.ts.map +1 -1
  128. package/internal/hardhat-network/provider/modules/web3.js +4 -5
  129. package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
  130. package/internal/hardhat-network/provider/node-types.d.ts +4 -4
  131. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  132. package/internal/hardhat-network/provider/node.d.ts +5 -4
  133. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  134. package/internal/hardhat-network/provider/node.js +71 -49
  135. package/internal/hardhat-network/provider/node.js.map +1 -1
  136. package/internal/hardhat-network/provider/output.d.ts +4 -4
  137. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  138. package/internal/hardhat-network/provider/output.js +24 -5
  139. package/internal/hardhat-network/provider/output.js.map +1 -1
  140. package/internal/hardhat-network/provider/provider.d.ts +2 -2
  141. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  142. package/internal/hardhat-network/provider/provider.js +3 -3
  143. package/internal/hardhat-network/provider/provider.js.map +1 -1
  144. package/internal/hardhat-network/provider/return-data.d.ts +1 -1
  145. package/internal/hardhat-network/provider/return-data.d.ts.map +1 -1
  146. package/internal/hardhat-network/provider/return-data.js +5 -4
  147. package/internal/hardhat-network/provider/return-data.js.map +1 -1
  148. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +4 -4
  149. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
  150. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +8 -8
  151. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  152. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +3 -3
  153. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
  154. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +8 -8
  155. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  156. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +3 -3
  157. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
  158. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +5 -5
  159. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  160. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +4 -4
  161. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
  162. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +25 -6
  163. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
  164. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +3 -3
  165. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
  166. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +25 -6
  167. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
  168. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +3 -3
  169. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +1 -1
  170. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +2 -2
  171. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
  172. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +2 -2
  173. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
  174. package/internal/hardhat-network/provider/utils/makeAccount.d.ts +1 -1
  175. package/internal/hardhat-network/provider/utils/makeAccount.d.ts.map +1 -1
  176. package/internal/hardhat-network/provider/utils/makeAccount.js +4 -4
  177. package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
  178. package/internal/hardhat-network/provider/utils/makeCommon.d.ts +1 -1
  179. package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
  180. package/internal/hardhat-network/provider/utils/makeCommon.js +2 -2
  181. package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
  182. package/internal/hardhat-network/provider/utils/makeStateTrie.d.ts +1 -1
  183. package/internal/hardhat-network/provider/utils/makeStateTrie.d.ts.map +1 -1
  184. package/internal/hardhat-network/provider/utils/makeStateTrie.js +4 -4
  185. package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
  186. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +3 -3
  187. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
  188. package/internal/hardhat-network/provider/utils/putGenesisBlock.js +4 -4
  189. package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
  190. package/internal/hardhat-network/provider/utils/random.d.ts +2 -1
  191. package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -1
  192. package/internal/hardhat-network/provider/utils/random.js +10 -9
  193. package/internal/hardhat-network/provider/utils/random.js.map +1 -1
  194. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js +21 -2
  195. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js.map +1 -1
  196. package/internal/hardhat-network/provider/utils/txMapToArray.d.ts +1 -1
  197. package/internal/hardhat-network/provider/utils/txMapToArray.d.ts.map +1 -1
  198. package/internal/hardhat-network/stack-traces/consoleLogger.js +45 -45
  199. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  200. package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
  201. package/internal/hardhat-network/stack-traces/constants.d.ts.map +1 -1
  202. package/internal/hardhat-network/stack-traces/constants.js +1 -1
  203. package/internal/hardhat-network/stack-traces/constants.js.map +1 -1
  204. package/internal/hardhat-network/stack-traces/contracts-identifier.js +2 -2
  205. package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
  206. package/internal/hardhat-network/stack-traces/debug.js +13 -13
  207. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  208. package/internal/hardhat-network/stack-traces/error-inferrer.js +2 -2
  209. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  210. package/internal/hardhat-network/stack-traces/message-trace.d.ts +1 -1
  211. package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -1
  212. package/internal/hardhat-network/stack-traces/model.js +6 -6
  213. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  214. package/internal/hardhat-network/stack-traces/panic-errors.d.ts +1 -1
  215. package/internal/hardhat-network/stack-traces/panic-errors.js +9 -9
  216. package/internal/hardhat-network/stack-traces/panic-errors.js.map +1 -1
  217. package/internal/hardhat-network/stack-traces/solidity-errors.js +3 -3
  218. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  219. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +1 -1
  220. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts +0 -2
  221. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  222. package/internal/hardhat-network/stack-traces/solidityTracer.js +2 -4
  223. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  224. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts +1 -1
  225. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
  226. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +27 -25
  227. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  228. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +2 -2
  229. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -1
  230. package/internal/hardhat-network/stack-traces/vm-tracer.js +15 -12
  231. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
  232. package/internal/lib/hardhat-lib.d.ts.map +1 -1
  233. package/internal/lib/hardhat-lib.js +0 -2
  234. package/internal/lib/hardhat-lib.js.map +1 -1
  235. package/internal/solidity/compilation-job.d.ts.map +1 -1
  236. package/internal/solidity/compilation-job.js +6 -7
  237. package/internal/solidity/compilation-job.js.map +1 -1
  238. package/internal/solidity/compiler/downloader.d.ts +66 -40
  239. package/internal/solidity/compiler/downloader.d.ts.map +1 -1
  240. package/internal/solidity/compiler/downloader.js +180 -154
  241. package/internal/solidity/compiler/downloader.js.map +1 -1
  242. package/internal/solidity/compiler/index.d.ts +8 -4
  243. package/internal/solidity/compiler/index.d.ts.map +1 -1
  244. package/internal/solidity/compiler/index.js +1 -1
  245. package/internal/solidity/compiler/index.js.map +1 -1
  246. package/internal/solidity/dependencyGraph.d.ts.map +1 -1
  247. package/internal/solidity/dependencyGraph.js +3 -5
  248. package/internal/solidity/dependencyGraph.js.map +1 -1
  249. package/internal/solidity/parse.d.ts.map +1 -1
  250. package/internal/solidity/parse.js +2 -58
  251. package/internal/solidity/parse.js.map +1 -1
  252. package/internal/solidity/resolver.d.ts +1 -0
  253. package/internal/solidity/resolver.d.ts.map +1 -1
  254. package/internal/solidity/resolver.js +33 -8
  255. package/internal/solidity/resolver.js.map +1 -1
  256. package/internal/util/bigint.d.ts +13 -24
  257. package/internal/util/bigint.d.ts.map +1 -1
  258. package/internal/util/bigint.js +22 -29
  259. package/internal/util/bigint.js.map +1 -1
  260. package/internal/util/download.d.ts.map +1 -1
  261. package/internal/util/download.js +1 -1
  262. package/internal/util/download.js.map +1 -1
  263. package/internal/util/fs-utils.d.ts +26 -9
  264. package/internal/util/fs-utils.d.ts.map +1 -1
  265. package/internal/util/fs-utils.js +111 -68
  266. package/internal/util/fs-utils.js.map +1 -1
  267. package/internal/util/glob.d.ts +13 -0
  268. package/internal/util/glob.d.ts.map +1 -1
  269. package/internal/util/glob.js +13 -0
  270. package/internal/util/glob.js.map +1 -1
  271. package/internal/util/keccak.d.ts +3 -0
  272. package/internal/util/keccak.d.ts.map +1 -0
  273. package/internal/util/keccak.js +12 -0
  274. package/internal/util/keccak.js.map +1 -0
  275. package/internal/util/scripts-runner.d.ts.map +1 -1
  276. package/internal/util/scripts-runner.js +7 -4
  277. package/internal/util/scripts-runner.js.map +1 -1
  278. package/package.json +15 -15
  279. package/register.js +1 -3
  280. package/register.js.map +1 -1
  281. package/sample-projects/javascript/contracts/Lock.sol +3 -3
  282. package/sample-projects/typescript/contracts/Lock.sol +3 -3
  283. package/src/builtin-tasks/clean.ts +9 -6
  284. package/src/builtin-tasks/compile.ts +96 -128
  285. package/src/builtin-tasks/flatten.ts +2 -3
  286. package/src/builtin-tasks/node.ts +2 -2
  287. package/src/builtin-tasks/test.ts +7 -3
  288. package/src/builtin-tasks/utils/solidity-files-cache.ts +9 -8
  289. package/src/internal/artifacts.ts +392 -182
  290. package/src/internal/cli/cli.ts +43 -17
  291. package/src/internal/core/config/config-loading.ts +1 -1
  292. package/src/internal/core/config/config-resolution.ts +12 -24
  293. package/src/internal/core/config/default-config.ts +1 -1
  294. package/src/internal/core/errors-list.ts +29 -13
  295. package/src/internal/core/errors.ts +10 -2
  296. package/src/internal/core/execution-mode.ts +2 -3
  297. package/src/internal/core/flamegraph.ts +270 -0
  298. package/src/internal/core/jsonrpc/types/base-types.ts +7 -3
  299. package/src/internal/core/params/hardhat-params.ts +18 -0
  300. package/src/internal/core/providers/accounts.ts +8 -8
  301. package/src/internal/core/providers/construction.ts +10 -8
  302. package/src/internal/core/providers/gas-providers.ts +2 -2
  303. package/src/internal/core/providers/util.ts +1 -1
  304. package/src/internal/core/runtime-environment.ts +103 -10
  305. package/src/internal/core/task-profiling.ts +56 -0
  306. package/src/internal/core/typescript-support.ts +11 -2
  307. package/src/internal/hardhat-network/jsonrpc/client.ts +1 -1
  308. package/src/internal/hardhat-network/provider/BlockchainBase.ts +6 -6
  309. package/src/internal/hardhat-network/provider/BlockchainData.ts +5 -5
  310. package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +4 -4
  311. package/src/internal/hardhat-network/provider/PoolState.ts +2 -2
  312. package/src/internal/hardhat-network/provider/TransactionQueue.ts +2 -2
  313. package/src/internal/hardhat-network/provider/TxPool.ts +12 -5
  314. package/src/internal/hardhat-network/provider/ethereumjs-workarounds.ts +3 -3
  315. package/src/internal/hardhat-network/provider/filter.ts +2 -2
  316. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +10 -10
  317. package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +12 -18
  318. package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +1 -1
  319. package/src/internal/hardhat-network/provider/fork/rpcToTxData.ts +5 -2
  320. package/src/internal/hardhat-network/provider/modules/eth.ts +10 -6
  321. package/src/internal/hardhat-network/provider/modules/hardhat.ts +25 -1
  322. package/src/internal/hardhat-network/provider/modules/logger.ts +3 -3
  323. package/src/internal/hardhat-network/provider/modules/net.ts +1 -1
  324. package/src/internal/hardhat-network/provider/modules/personal.ts +1 -1
  325. package/src/internal/hardhat-network/provider/modules/web3.ts +4 -6
  326. package/src/internal/hardhat-network/provider/node-types.ts +6 -6
  327. package/src/internal/hardhat-network/provider/node.ts +25 -12
  328. package/src/internal/hardhat-network/provider/output.ts +6 -6
  329. package/src/internal/hardhat-network/provider/provider.ts +7 -6
  330. package/src/internal/hardhat-network/provider/return-data.ts +9 -5
  331. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +9 -5
  332. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +8 -4
  333. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +4 -4
  334. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +8 -5
  335. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +4 -4
  336. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +3 -3
  337. package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +2 -2
  338. package/src/internal/hardhat-network/provider/utils/makeAccount.ts +6 -1
  339. package/src/internal/hardhat-network/provider/utils/makeCommon.ts +1 -1
  340. package/src/internal/hardhat-network/provider/utils/makeStateTrie.ts +7 -3
  341. package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +6 -6
  342. package/src/internal/hardhat-network/provider/utils/random.ts +17 -14
  343. package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +1 -1
  344. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +1 -1
  345. package/src/internal/hardhat-network/stack-traces/constants.ts +2 -0
  346. package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +1 -1
  347. package/src/internal/hardhat-network/stack-traces/debug.ts +1 -1
  348. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +3 -3
  349. package/src/internal/hardhat-network/stack-traces/message-trace.ts +1 -1
  350. package/src/internal/hardhat-network/stack-traces/model.ts +1 -1
  351. package/src/internal/hardhat-network/stack-traces/panic-errors.ts +11 -11
  352. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +1 -1
  353. package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +1 -1
  354. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +1 -4
  355. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +31 -17
  356. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +29 -14
  357. package/src/internal/lib/hardhat-lib.ts +0 -3
  358. package/src/internal/solidity/compilation-job.ts +11 -11
  359. package/src/internal/solidity/compiler/downloader.ts +271 -243
  360. package/src/internal/solidity/compiler/index.ts +13 -7
  361. package/src/internal/solidity/dependencyGraph.ts +12 -8
  362. package/src/internal/solidity/parse.ts +4 -70
  363. package/src/internal/solidity/resolver.ts +36 -8
  364. package/src/internal/util/bigint.ts +25 -43
  365. package/src/internal/util/download.ts +2 -2
  366. package/src/internal/util/fs-utils.ts +223 -0
  367. package/src/internal/util/glob.ts +13 -0
  368. package/src/internal/util/keccak.ts +5 -0
  369. package/src/internal/util/scripts-runner.ts +13 -4
  370. package/src/internal/util/wei-values.ts +1 -1
  371. package/src/internal/{hardhat-network/vendor → vendor}/await-semaphore/index.ts +0 -0
  372. package/src/profiling.ts +37 -0
  373. package/src/register.ts +1 -4
  374. package/src/types/artifacts.ts +21 -0
  375. package/src/types/config.ts +7 -7
  376. package/src/types/runtime.ts +2 -0
  377. package/src/utils/source-names.ts +36 -26
  378. package/types/artifacts.d.ts +19 -0
  379. package/types/artifacts.d.ts.map +1 -1
  380. package/types/config.d.ts +7 -7
  381. package/types/runtime.d.ts +2 -0
  382. package/types/runtime.d.ts.map +1 -1
  383. package/utils/source-names.d.ts.map +1 -1
  384. package/utils/source-names.js +25 -36
  385. package/utils/source-names.js.map +1 -1
  386. package/internal/hardhat-network/provider/fork/random.d.ts +0 -7
  387. package/internal/hardhat-network/provider/fork/random.d.ts.map +0 -1
  388. package/internal/hardhat-network/provider/fork/random.js +0 -32
  389. package/internal/hardhat-network/provider/fork/random.js.map +0 -1
  390. package/internal/hardhat-network/provider/utils/bnToHex.d.ts +0 -3
  391. package/internal/hardhat-network/provider/utils/bnToHex.d.ts.map +0 -1
  392. package/internal/hardhat-network/provider/utils/bnToHex.js +0 -9
  393. package/internal/hardhat-network/provider/utils/bnToHex.js.map +0 -1
  394. package/internal/hardhat-network/provider/utils/makeForkCommon.d.ts +0 -4
  395. package/internal/hardhat-network/provider/utils/makeForkCommon.d.ts.map +0 -1
  396. package/internal/hardhat-network/provider/utils/makeForkCommon.js +0 -16
  397. package/internal/hardhat-network/provider/utils/makeForkCommon.js.map +0 -1
  398. package/internal/hardhat-network/vendor/await-semaphore/index.d.ts +0 -12
  399. package/internal/hardhat-network/vendor/await-semaphore/index.d.ts.map +0 -1
  400. package/internal/hardhat-network/vendor/await-semaphore/index.js +0 -64
  401. package/internal/hardhat-network/vendor/await-semaphore/index.js.map +0 -1
  402. package/internal/util/antlr-prototype-pollution-workaround.d.ts +0 -16
  403. package/internal/util/antlr-prototype-pollution-workaround.d.ts.map +0 -1
  404. package/internal/util/antlr-prototype-pollution-workaround.js +0 -22
  405. package/internal/util/antlr-prototype-pollution-workaround.js.map +0 -1
  406. package/src/internal/util/antlr-prototype-pollution-workaround.ts +0 -17
@@ -1,9 +1,7 @@
1
1
  import os from "os";
2
2
  import chalk from "chalk";
3
- import { exec } from "child_process";
4
3
  import debug from "debug";
5
4
  import fsExtra from "fs-extra";
6
- import path from "path";
7
5
  import semver from "semver";
8
6
  import AggregateError from "aggregate-error";
9
7
 
@@ -28,7 +26,6 @@ import {
28
26
  import { DependencyGraph } from "../internal/solidity/dependencyGraph";
29
27
  import { Parser } from "../internal/solidity/parse";
30
28
  import { ResolvedFile, Resolver } from "../internal/solidity/resolver";
31
- import { glob } from "../internal/util/glob";
32
29
  import { getCompilersDir } from "../internal/util/global-dir";
33
30
  import { pluralize } from "../internal/util/strings";
34
31
  import { Artifacts, CompilerInput, CompilerOutput, SolcBuild } from "../types";
@@ -42,6 +39,7 @@ import {
42
39
  import { getFullyQualifiedName } from "../utils/contract-names";
43
40
  import { localPathToSourceName } from "../utils/source-names";
44
41
 
42
+ import { getAllFilesMatching } from "../internal/util/fs-utils";
45
43
  import {
46
44
  TASK_COMPILE,
47
45
  TASK_COMPILE_GET_COMPILATION_TASKS,
@@ -117,7 +115,9 @@ const DEFAULT_CONCURRENCY_LEVEL = Math.max(os.cpus().length - 1, 1);
117
115
  subtask(
118
116
  TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS,
119
117
  async (_, { config }): Promise<string[]> => {
120
- const paths = await glob(path.join(config.paths.sources, "**/*.sol"));
118
+ const paths = await getAllFilesMatching(config.paths.sources, (f) =>
119
+ f.endsWith(".sol")
120
+ );
121
121
 
122
122
  return paths;
123
123
  }
@@ -412,20 +412,6 @@ subtask(TASK_COMPILE_SOLIDITY_COMPILE_JOBS)
412
412
  }
413
413
  }
414
414
 
415
- /**
416
- * Downloading the same version of a compiler in parallel can cause an
417
- * error. When compilation jobs are executed in parallel, there's a chance
418
- * that both use the same solc version and trigger this problem. To
419
- * prevent that, we pre-download all the necessary compilers before
420
- * running the compilation jobs.
421
- */
422
- for (const solcVersion of versionList) {
423
- await run(TASK_COMPILE_SOLIDITY_GET_SOLC_BUILD, {
424
- solcVersion,
425
- quiet: false,
426
- });
427
- }
428
-
429
415
  const { default: pMap } = await import("p-map");
430
416
  const pMapOptions = { concurrency, stopOnError: false };
431
417
  try {
@@ -544,91 +530,75 @@ subtask(TASK_COMPILE_SOLIDITY_GET_SOLC_BUILD)
544
530
  { run }
545
531
  ): Promise<SolcBuild> => {
546
532
  const compilersCache = await getCompilersDir();
547
- const downloader = new CompilerDownloader(compilersCache);
533
+
534
+ const compilerPlatform = CompilerDownloader.getCompilerPlatform();
535
+ const downloader = CompilerDownloader.getConcurrencySafeDownloader(
536
+ compilerPlatform,
537
+ compilersCache
538
+ );
548
539
 
549
540
  const isCompilerDownloaded = await downloader.isCompilerDownloaded(
550
541
  solcVersion
551
542
  );
552
543
 
553
- const { longVersion, platform: desiredPlatform } =
554
- await downloader.getCompilerBuild(solcVersion);
544
+ if (!isCompilerDownloaded) {
545
+ await run(TASK_COMPILE_SOLIDITY_LOG_DOWNLOAD_COMPILER_START, {
546
+ solcVersion,
547
+ isCompilerDownloaded,
548
+ quiet,
549
+ });
555
550
 
556
- await run(TASK_COMPILE_SOLIDITY_LOG_DOWNLOAD_COMPILER_START, {
557
- solcVersion,
558
- isCompilerDownloaded,
559
- quiet,
560
- });
551
+ await downloader.downloadCompiler(solcVersion);
561
552
 
562
- let compilerPath: string | undefined;
563
- let platform: CompilerPlatform | undefined;
564
- let nativeBinaryFailed = false;
553
+ await run(TASK_COMPILE_SOLIDITY_LOG_DOWNLOAD_COMPILER_END, {
554
+ solcVersion,
555
+ isCompilerDownloaded,
556
+ quiet,
557
+ });
558
+ }
565
559
 
566
- const compilerPathResult = await downloader.getDownloadedCompilerPath(
567
- solcVersion
568
- );
560
+ const compiler = await downloader.getCompiler(solcVersion);
569
561
 
570
- if (compilerPathResult === undefined) {
571
- if (desiredPlatform === CompilerPlatform.WASM) {
572
- // if we were trying to download solcjs and it failed, there's nothing
573
- // we can do
574
- throw new HardhatError(ERRORS.SOLC.CANT_GET_COMPILER, {
575
- version: solcVersion,
576
- });
577
- }
562
+ if (compiler !== undefined) {
563
+ return compiler;
564
+ }
578
565
 
579
- nativeBinaryFailed = true;
580
- } else {
581
- compilerPath = compilerPathResult.compilerPath;
566
+ log(
567
+ "Native solc binary doesn't work, using solcjs instead. Try running npx hardhat clean --global"
568
+ );
582
569
 
583
- // when using a native binary, check that it works correctly
584
- // it it doesn't, force the downloader to use solcjs
585
- if (compilerPathResult.platform !== CompilerPlatform.WASM) {
586
- log("Checking native solc binary");
570
+ const wasmDownloader = CompilerDownloader.getConcurrencySafeDownloader(
571
+ CompilerPlatform.WASM,
572
+ compilersCache
573
+ );
587
574
 
588
- const solcBinaryWorks = await checkSolcBinary(
589
- compilerPathResult.compilerPath
590
- );
591
- if (!solcBinaryWorks) {
592
- log("Native solc binary doesn't work, using solcjs instead");
593
- nativeBinaryFailed = true;
594
- }
595
- } else {
596
- platform = CompilerPlatform.WASM;
597
- }
598
- }
575
+ const isWasmCompilerDownloader =
576
+ await wasmDownloader.isCompilerDownloaded(solcVersion);
599
577
 
600
- if (nativeBinaryFailed) {
601
- const solcJsDownloader = new CompilerDownloader(compilersCache, {
602
- forceSolcJs: true,
578
+ if (!isWasmCompilerDownloader) {
579
+ await run(TASK_COMPILE_SOLIDITY_LOG_DOWNLOAD_COMPILER_START, {
580
+ solcVersion,
581
+ isCompilerDownloaded,
582
+ quiet,
603
583
  });
604
584
 
605
- const solcjsCompilerPath =
606
- await solcJsDownloader.getDownloadedCompilerPath(solcVersion);
607
-
608
- if (solcjsCompilerPath === undefined) {
609
- throw new HardhatError(ERRORS.SOLC.CANT_GET_COMPILER, {
610
- version: solcVersion,
611
- });
612
- }
585
+ await wasmDownloader.downloadCompiler(solcVersion);
613
586
 
614
- compilerPath = solcjsCompilerPath.compilerPath;
615
- platform = CompilerPlatform.WASM;
587
+ await run(TASK_COMPILE_SOLIDITY_LOG_DOWNLOAD_COMPILER_END, {
588
+ solcVersion,
589
+ isCompilerDownloaded,
590
+ quiet,
591
+ });
616
592
  }
617
593
 
618
- await run(TASK_COMPILE_SOLIDITY_LOG_DOWNLOAD_COMPILER_END, {
619
- solcVersion,
620
- isCompilerDownloaded,
621
- quiet,
622
- });
623
-
624
- const isSolcJs = platform === CompilerPlatform.WASM;
594
+ const wasmCompiler = await downloader.getCompiler(solcVersion);
625
595
 
626
596
  assertHardhatInvariant(
627
- compilerPath !== undefined,
628
- "A compilerPath should be defined at this point"
597
+ wasmCompiler !== undefined,
598
+ `WASM build of solc ${solcVersion} isn't working`
629
599
  );
630
600
 
631
- return { compilerPath, isSolcJs, version: solcVersion, longVersion };
601
+ return wasmCompiler;
632
602
  }
633
603
  );
634
604
 
@@ -845,38 +815,41 @@ subtask(TASK_COMPILE_SOLIDITY_EMIT_ARTIFACTS)
845
815
  output
846
816
  );
847
817
 
848
- const artifactsEmittedPerFile: ArtifactsEmittedPerFile = [];
849
- for (const file of compilationJob.getResolvedFiles()) {
850
- log(`Emitting artifacts for file '${file.sourceName}'`);
851
- if (!compilationJob.emitsArtifacts(file)) {
852
- continue;
853
- }
854
-
855
- const artifactsEmitted = [];
856
- for (const [contractName, contractOutput] of Object.entries(
857
- output.contracts?.[file.sourceName] ?? {}
858
- )) {
859
- log(`Emitting artifact for contract '${contractName}'`);
860
-
861
- const artifact = await run(
862
- TASK_COMPILE_SOLIDITY_GET_ARTIFACT_FROM_COMPILATION_OUTPUT,
863
- {
864
- sourceName: file.sourceName,
865
- contractName,
866
- contractOutput,
867
- }
868
- );
869
-
870
- await artifacts.saveArtifactAndDebugFile(artifact, pathToBuildInfo);
871
-
872
- artifactsEmitted.push(artifact.contractName);
873
- }
874
-
875
- artifactsEmittedPerFile.push({
876
- file,
877
- artifactsEmitted,
878
- });
879
- }
818
+ const artifactsEmittedPerFile: ArtifactsEmittedPerFile =
819
+ await Promise.all(
820
+ compilationJob
821
+ .getResolvedFiles()
822
+ .filter((f) => compilationJob.emitsArtifacts(f))
823
+ .map(async (file) => {
824
+ const artifactsEmitted = await Promise.all(
825
+ Object.entries(output.contracts?.[file.sourceName] ?? {}).map(
826
+ async ([contractName, contractOutput]) => {
827
+ log(`Emitting artifact for contract '${contractName}'`);
828
+ const artifact = await run(
829
+ TASK_COMPILE_SOLIDITY_GET_ARTIFACT_FROM_COMPILATION_OUTPUT,
830
+ {
831
+ sourceName: file.sourceName,
832
+ contractName,
833
+ contractOutput,
834
+ }
835
+ );
836
+
837
+ await artifacts.saveArtifactAndDebugFile(
838
+ artifact,
839
+ pathToBuildInfo
840
+ );
841
+
842
+ return artifact.contractName;
843
+ }
844
+ )
845
+ );
846
+
847
+ return {
848
+ file,
849
+ artifactsEmitted,
850
+ };
851
+ })
852
+ );
880
853
 
881
854
  return { artifactsEmittedPerFile };
882
855
  }
@@ -1450,6 +1423,8 @@ async function invalidateCacheMissingArtifacts(
1450
1423
  artifacts: Artifacts,
1451
1424
  resolvedFiles: ResolvedFile[]
1452
1425
  ): Promise<SolidityFilesCache> {
1426
+ const paths = new Set(await artifacts.getArtifactPaths());
1427
+
1453
1428
  for (const file of resolvedFiles) {
1454
1429
  const cacheEntry = solidityFilesCache.getEntry(file.absolutePath);
1455
1430
 
@@ -1458,21 +1433,23 @@ async function invalidateCacheMissingArtifacts(
1458
1433
  }
1459
1434
 
1460
1435
  const { artifacts: emittedArtifacts } = cacheEntry;
1461
-
1462
1436
  for (const emittedArtifact of emittedArtifacts) {
1463
- const artifactExists = await artifacts.artifactExists(
1464
- getFullyQualifiedName(file.sourceName, emittedArtifact)
1465
- );
1466
- if (!artifactExists) {
1437
+ const fqn = getFullyQualifiedName(file.sourceName, emittedArtifact);
1438
+ const path = artifacts.formArtifactPathFromFullyQualifiedName(fqn);
1439
+
1440
+ if (!paths.has(path)) {
1467
1441
  log(
1468
- `Invalidate cache for '${file.absolutePath}' because artifact '${emittedArtifact}' doesn't exist`
1442
+ `Invalidate cache for '${file.absolutePath}' because artifact '${fqn}' doesn't exist`
1469
1443
  );
1444
+
1470
1445
  solidityFilesCache.removeEntry(file.absolutePath);
1471
1446
  break;
1472
1447
  }
1473
1448
  }
1474
1449
  }
1475
1450
 
1451
+ artifacts.clearCache?.();
1452
+
1476
1453
  return solidityFilesCache;
1477
1454
  }
1478
1455
 
@@ -1506,15 +1483,6 @@ function hasCompilationErrors(output: any): boolean {
1506
1483
  );
1507
1484
  }
1508
1485
 
1509
- async function checkSolcBinary(solcPath: string): Promise<boolean> {
1510
- return new Promise((resolve) => {
1511
- const process = exec(`${solcPath} --version`);
1512
- process.on("exit", (code) => {
1513
- resolve(code === 0);
1514
- });
1515
- });
1516
- }
1517
-
1518
1486
  /**
1519
1487
  * This function returns a properly formatted Internal Compiler Error message.
1520
1488
  *
@@ -1,5 +1,3 @@
1
- import * as fs from "fs";
2
-
3
1
  import { subtask, task, types } from "../internal/core/config/config-env";
4
2
  import { HardhatError } from "../internal/core/errors";
5
3
  import { ERRORS } from "../internal/core/errors-list";
@@ -7,6 +5,7 @@ import { DependencyGraph } from "../internal/solidity/dependencyGraph";
7
5
  import { ResolvedFile, ResolvedFilesMap } from "../internal/solidity/resolver";
8
6
  import { getPackageJson } from "../internal/util/packageInfo";
9
7
 
8
+ import { getRealPathSync } from "../internal/util/fs-utils";
10
9
  import {
11
10
  TASK_COMPILE_SOLIDITY_GET_DEPENDENCY_GRAPH,
12
11
  TASK_COMPILE_SOLIDITY_GET_SOURCE_NAMES,
@@ -97,7 +96,7 @@ subtask(TASK_FLATTEN_GET_DEPENDENCY_GRAPH)
97
96
  const sourcePaths: string[] =
98
97
  files === undefined
99
98
  ? await run(TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS)
100
- : files.map((f) => fs.realpathSync(f));
99
+ : files.map((f) => getRealPathSync(f));
101
100
 
102
101
  const sourceNames: string[] = await run(
103
102
  TASK_COMPILE_SOLIDITY_GET_SOURCE_NAMES,
@@ -1,4 +1,4 @@
1
- import type EthereumjsUtilT from "@ignored/util";
1
+ import type EthereumjsUtilT from "@nomicfoundation/ethereumjs-util";
2
2
 
3
3
  import chalk from "chalk";
4
4
  import debug from "debug";
@@ -52,7 +52,7 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
52
52
  networkConfig.accounts.mnemonic === HARDHAT_NETWORK_MNEMONIC;
53
53
 
54
54
  const { bufferToHex, privateToAddress, toBuffer, toChecksumAddress } =
55
- require("@ignored/util") as typeof EthereumjsUtilT;
55
+ require("@nomicfoundation/ethereumjs-util") as typeof EthereumjsUtilT;
56
56
 
57
57
  console.log("Accounts");
58
58
  console.log("========");
@@ -8,8 +8,8 @@ import { subtask, task } from "../internal/core/config/config-env";
8
8
  import { isRunningWithTypescript } from "../internal/core/typescript-support";
9
9
  import { getForkCacheDirPath } from "../internal/hardhat-network/provider/utils/disk-cache";
10
10
  import { showForkRecommendationsBannerIfNecessary } from "../internal/hardhat-network/provider/utils/fork-recomendations-banner";
11
- import { glob } from "../internal/util/glob";
12
11
  import { pluralize } from "../internal/util/strings";
12
+ import { getAllFilesMatching } from "../internal/util/fs-utils";
13
13
 
14
14
  import {
15
15
  TASK_COMPILE,
@@ -35,13 +35,17 @@ subtask(TASK_TEST_GET_TEST_FILES)
35
35
  return testFilesAbsolutePaths;
36
36
  }
37
37
 
38
- const jsFiles = await glob(path.join(config.paths.tests, "**/*.js"));
38
+ const jsFiles = await getAllFilesMatching(config.paths.tests, (f) =>
39
+ f.endsWith(".js")
40
+ );
39
41
 
40
42
  if (!isRunningWithTypescript(config)) {
41
43
  return jsFiles;
42
44
  }
43
45
 
44
- const tsFiles = await glob(path.join(config.paths.tests, "**/*.ts"));
46
+ const tsFiles = await getAllFilesMatching(config.paths.tests, (f) =>
47
+ f.endsWith(".ts")
48
+ );
45
49
 
46
50
  return [...jsFiles, ...tsFiles];
47
51
  });
@@ -57,7 +57,7 @@ export class SolidityFilesCache {
57
57
  _format: FORMAT_VERSION,
58
58
  files: {},
59
59
  };
60
- if (fsExtra.existsSync(solidityFilesCachePath)) {
60
+ if (await fsExtra.pathExists(solidityFilesCachePath)) {
61
61
  cacheRaw = await fsExtra.readJson(solidityFilesCachePath);
62
62
  }
63
63
 
@@ -80,12 +80,13 @@ export class SolidityFilesCache {
80
80
  constructor(private _cache: Cache) {}
81
81
 
82
82
  public async removeNonExistingFiles() {
83
- for (const absolutePath of Object.keys(this._cache.files)) {
84
- if (!fsExtra.existsSync(absolutePath)) {
85
- this.removeEntry(absolutePath);
86
- continue;
87
- }
88
- }
83
+ await Promise.all(
84
+ Object.keys(this._cache.files).map(async (absolutePath) => {
85
+ if (!(await fsExtra.pathExists(absolutePath))) {
86
+ this.removeEntry(absolutePath);
87
+ }
88
+ })
89
+ );
89
90
  }
90
91
 
91
92
  public async writeToFile(solidityFilesCachePath: string) {
@@ -115,7 +116,7 @@ export class SolidityFilesCache {
115
116
  contentHash: string,
116
117
  solcConfig?: SolcConfig
117
118
  ): boolean {
118
- const { isEqual }: LoDashStatic = require("lodash");
119
+ const isEqual = require("lodash/isEqual") as LoDashStatic["isEqual"];
119
120
 
120
121
  const cacheEntry = this.getEntry(absolutePath);
121
122