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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/builtin-tasks/compile.js +17 -7
  2. package/builtin-tasks/compile.js.map +1 -1
  3. package/builtin-tasks/flatten.js +10 -4
  4. package/builtin-tasks/flatten.js.map +1 -1
  5. package/builtin-tasks/help.js +2 -4
  6. package/builtin-tasks/help.js.map +1 -1
  7. package/builtin-tasks/task-names.d.ts +1 -0
  8. package/builtin-tasks/task-names.d.ts.map +1 -1
  9. package/builtin-tasks/task-names.js +3 -2
  10. package/builtin-tasks/task-names.js.map +1 -1
  11. package/builtin-tasks/test.js +22 -1
  12. package/builtin-tasks/test.js.map +1 -1
  13. package/internal/artifacts.d.ts +5 -0
  14. package/internal/artifacts.d.ts.map +1 -1
  15. package/internal/artifacts.js +29 -10
  16. package/internal/artifacts.js.map +1 -1
  17. package/internal/cli/bootstrap.d.ts +1 -0
  18. package/internal/cli/bootstrap.js +12 -20
  19. package/internal/cli/bootstrap.js.map +1 -1
  20. package/internal/cli/cli.d.ts +0 -1
  21. package/internal/cli/cli.d.ts.map +1 -1
  22. package/internal/cli/cli.js +24 -24
  23. package/internal/cli/cli.js.map +1 -1
  24. package/internal/cli/project-creation.d.ts +1 -1
  25. package/internal/cli/project-creation.d.ts.map +1 -1
  26. package/internal/cli/project-creation.js +105 -25
  27. package/internal/cli/project-creation.js.map +1 -1
  28. package/internal/cli/prompt.d.ts +2 -2
  29. package/internal/cli/prompt.d.ts.map +1 -1
  30. package/internal/cli/prompt.js +1 -2
  31. package/internal/cli/prompt.js.map +1 -1
  32. package/internal/cli/types.d.ts +1 -0
  33. package/internal/cli/types.d.ts.map +1 -1
  34. package/internal/core/config/config-env.d.ts +5 -11
  35. package/internal/core/config/config-env.d.ts.map +1 -1
  36. package/internal/core/config/config-env.js +2 -13
  37. package/internal/core/config/config-env.js.map +1 -1
  38. package/internal/core/config/config-loading.d.ts +2 -1
  39. package/internal/core/config/config-loading.d.ts.map +1 -1
  40. package/internal/core/config/config-loading.js +25 -7
  41. package/internal/core/config/config-loading.js.map +1 -1
  42. package/internal/core/config/config-resolution.d.ts.map +1 -1
  43. package/internal/core/config/config-resolution.js +2 -1
  44. package/internal/core/config/config-resolution.js.map +1 -1
  45. package/internal/core/config/config-validation.d.ts +2 -0
  46. package/internal/core/config/config-validation.d.ts.map +1 -1
  47. package/internal/core/config/config-validation.js +18 -1
  48. package/internal/core/config/config-validation.js.map +1 -1
  49. package/internal/core/config/extenders.d.ts +4 -7
  50. package/internal/core/config/extenders.d.ts.map +1 -1
  51. package/internal/core/config/extenders.js +5 -12
  52. package/internal/core/config/extenders.js.map +1 -1
  53. package/internal/core/errors-list.d.ts +35 -7
  54. package/internal/core/errors-list.d.ts.map +1 -1
  55. package/internal/core/errors-list.js +117 -85
  56. package/internal/core/errors-list.js.map +1 -1
  57. package/internal/core/flamegraph.js +10 -10
  58. package/internal/core/jsonrpc/types/output/metadata.d.ts +13 -0
  59. package/internal/core/jsonrpc/types/output/metadata.d.ts.map +1 -0
  60. package/internal/core/jsonrpc/types/output/metadata.js +3 -0
  61. package/internal/core/jsonrpc/types/output/metadata.js.map +1 -0
  62. package/internal/core/project-structure.d.ts.map +1 -1
  63. package/internal/core/project-structure.js +6 -0
  64. package/internal/core/project-structure.js.map +1 -1
  65. package/internal/core/providers/accounts.d.ts.map +1 -1
  66. package/internal/core/providers/accounts.js +4 -1
  67. package/internal/core/providers/accounts.js.map +1 -1
  68. package/internal/core/providers/backwards-compatibility.d.ts.map +1 -1
  69. package/internal/core/providers/backwards-compatibility.js +3 -0
  70. package/internal/core/providers/backwards-compatibility.js.map +1 -1
  71. package/internal/core/providers/construction.d.ts.map +1 -1
  72. package/internal/core/providers/construction.js +25 -5
  73. package/internal/core/providers/construction.js.map +1 -1
  74. package/internal/core/providers/gas-providers.d.ts +1 -1
  75. package/internal/core/providers/gas-providers.d.ts.map +1 -1
  76. package/internal/core/providers/gas-providers.js +1 -1
  77. package/internal/core/providers/gas-providers.js.map +1 -1
  78. package/internal/core/providers/http.d.ts +2 -2
  79. package/internal/core/providers/http.d.ts.map +1 -1
  80. package/internal/core/providers/http.js +41 -19
  81. package/internal/core/providers/http.js.map +1 -1
  82. package/internal/core/runtime-environment.d.ts +4 -2
  83. package/internal/core/runtime-environment.d.ts.map +1 -1
  84. package/internal/core/runtime-environment.js +39 -47
  85. package/internal/core/runtime-environment.js.map +1 -1
  86. package/internal/core/tasks/dsl.d.ts +6 -6
  87. package/internal/core/tasks/dsl.d.ts.map +1 -1
  88. package/internal/core/tasks/dsl.js.map +1 -1
  89. package/internal/core/tasks/task-definitions.d.ts +2 -2
  90. package/internal/core/tasks/task-definitions.d.ts.map +1 -1
  91. package/internal/core/tasks/task-definitions.js.map +1 -1
  92. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
  93. package/internal/hardhat-network/jsonrpc/client.js +5 -3
  94. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  95. package/internal/hardhat-network/jsonrpc/handler.d.ts +1 -0
  96. package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -1
  97. package/internal/hardhat-network/jsonrpc/handler.js +13 -18
  98. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  99. package/internal/hardhat-network/provider/RethnetState.d.ts +26 -0
  100. package/internal/hardhat-network/provider/RethnetState.d.ts.map +1 -0
  101. package/internal/hardhat-network/provider/RethnetState.js +84 -0
  102. package/internal/hardhat-network/provider/RethnetState.js.map +1 -0
  103. package/internal/hardhat-network/provider/modules/eth.js +4 -4
  104. package/internal/hardhat-network/provider/modules/evm.d.ts +2 -1
  105. package/internal/hardhat-network/provider/modules/evm.d.ts.map +1 -1
  106. package/internal/hardhat-network/provider/modules/evm.js +10 -4
  107. package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
  108. package/internal/hardhat-network/provider/modules/hardhat.d.ts +2 -0
  109. package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
  110. package/internal/hardhat-network/provider/modules/hardhat.js +9 -0
  111. package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
  112. package/internal/hardhat-network/provider/modules/web3.d.ts +3 -0
  113. package/internal/hardhat-network/provider/modules/web3.d.ts.map +1 -1
  114. package/internal/hardhat-network/provider/modules/web3.js +4 -4
  115. package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
  116. package/internal/hardhat-network/provider/node-types.d.ts +1 -1
  117. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  118. package/internal/hardhat-network/provider/node.d.ts +6 -0
  119. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  120. package/internal/hardhat-network/provider/node.js +44 -5
  121. package/internal/hardhat-network/provider/node.js.map +1 -1
  122. package/internal/hardhat-network/provider/output.d.ts +1 -1
  123. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  124. package/internal/hardhat-network/provider/output.js +1 -1
  125. package/internal/hardhat-network/provider/output.js.map +1 -1
  126. package/internal/hardhat-network/provider/provider.d.ts +25 -21
  127. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  128. package/internal/hardhat-network/provider/provider.js +26 -43
  129. package/internal/hardhat-network/provider/provider.js.map +1 -1
  130. package/internal/hardhat-network/provider/return-data.js +2 -2
  131. package/internal/hardhat-network/provider/return-data.js.map +1 -1
  132. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
  133. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +4 -2
  134. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  135. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
  136. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +4 -2
  137. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  138. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
  139. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +4 -2
  140. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  141. package/internal/hardhat-network/provider/utils/bloom.d.ts +4 -0
  142. package/internal/hardhat-network/provider/utils/bloom.d.ts.map +1 -1
  143. package/internal/hardhat-network/provider/utils/bloom.js +6 -0
  144. package/internal/hardhat-network/provider/utils/bloom.js.map +1 -1
  145. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +8 -25
  146. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +1 -1
  147. package/internal/hardhat-network/provider/utils/convertToRethnet.js +122 -174
  148. package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +1 -1
  149. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +7 -0
  150. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -0
  151. package/internal/hardhat-network/provider/utils/makeFakeSignature.js +31 -0
  152. package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -0
  153. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +1 -0
  154. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
  155. package/internal/hardhat-network/provider/utils/makeForkClient.js +4 -1
  156. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  157. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +1 -1
  158. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
  159. package/internal/hardhat-network/provider/utils/putGenesisBlock.js +2 -2
  160. package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
  161. package/internal/hardhat-network/provider/vm/block-builder.d.ts +4 -3
  162. package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +1 -1
  163. package/internal/hardhat-network/provider/vm/block-builder.js +9 -5
  164. package/internal/hardhat-network/provider/vm/block-builder.js.map +1 -1
  165. package/internal/hardhat-network/provider/vm/creation.d.ts +10 -0
  166. package/internal/hardhat-network/provider/vm/creation.d.ts.map +1 -0
  167. package/internal/hardhat-network/provider/vm/creation.js +29 -0
  168. package/internal/hardhat-network/provider/vm/creation.js.map +1 -0
  169. package/internal/hardhat-network/provider/vm/dual.d.ts +14 -14
  170. package/internal/hardhat-network/provider/vm/dual.d.ts.map +1 -1
  171. package/internal/hardhat-network/provider/vm/dual.js +426 -58
  172. package/internal/hardhat-network/provider/vm/dual.js.map +1 -1
  173. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +23 -22
  174. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +1 -1
  175. package/internal/hardhat-network/provider/vm/ethereumjs.js +181 -37
  176. package/internal/hardhat-network/provider/vm/ethereumjs.js.map +1 -1
  177. package/internal/hardhat-network/provider/vm/exit.d.ts +23 -0
  178. package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
  179. package/internal/hardhat-network/provider/vm/exit.js +130 -0
  180. package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
  181. package/internal/hardhat-network/provider/vm/rethnet.d.ts +18 -30
  182. package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +1 -1
  183. package/internal/hardhat-network/provider/vm/rethnet.js +164 -51
  184. package/internal/hardhat-network/provider/vm/rethnet.js.map +1 -1
  185. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +29 -13
  186. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +1 -1
  187. package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts.map +1 -1
  188. package/internal/hardhat-network/stack-traces/compiler-to-model.js +37 -11
  189. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
  190. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  191. package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
  192. package/internal/hardhat-network/stack-traces/constants.js +1 -1
  193. package/internal/hardhat-network/stack-traces/debug.d.ts.map +1 -1
  194. package/internal/hardhat-network/stack-traces/debug.js +6 -2
  195. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  196. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts +1 -0
  197. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
  198. package/internal/hardhat-network/stack-traces/error-inferrer.js +87 -60
  199. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  200. package/internal/hardhat-network/stack-traces/model.d.ts +3 -1
  201. package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
  202. package/internal/hardhat-network/stack-traces/model.js +9 -1
  203. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  204. package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -1
  205. package/internal/hardhat-network/stack-traces/solidity-errors.js +4 -3
  206. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  207. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +2 -2
  208. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
  209. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  210. package/internal/hardhat-network/stack-traces/solidityTracer.js +1 -0
  211. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  212. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
  213. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +2 -1
  214. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  215. package/internal/lib/hardhat-lib.d.ts.map +1 -1
  216. package/internal/lib/hardhat-lib.js +1 -4
  217. package/internal/lib/hardhat-lib.js.map +1 -1
  218. package/internal/solidity/compiler/downloader.js +2 -2
  219. package/internal/solidity/compiler/downloader.js.map +1 -1
  220. package/internal/solidity/compiler/index.d.ts.map +1 -1
  221. package/internal/solidity/compiler/index.js +7 -1
  222. package/internal/solidity/compiler/index.js.map +1 -1
  223. package/internal/solidity/dependencyGraph.d.ts.map +1 -1
  224. package/internal/solidity/dependencyGraph.js +2 -0
  225. package/internal/solidity/dependencyGraph.js.map +1 -1
  226. package/internal/solidity/resolver.d.ts +4 -3
  227. package/internal/solidity/resolver.d.ts.map +1 -1
  228. package/internal/solidity/resolver.js +26 -7
  229. package/internal/solidity/resolver.js.map +1 -1
  230. package/internal/util/abi-helpers.d.ts +1 -0
  231. package/internal/util/abi-helpers.d.ts.map +1 -1
  232. package/internal/util/abi-helpers.js +9 -0
  233. package/internal/util/abi-helpers.js.map +1 -1
  234. package/internal/util/console.d.ts.map +1 -1
  235. package/internal/util/console.js +1 -1
  236. package/internal/util/console.js.map +1 -1
  237. package/internal/util/download.d.ts +3 -1
  238. package/internal/util/download.d.ts.map +1 -1
  239. package/internal/util/download.js +14 -12
  240. package/internal/util/download.js.map +1 -1
  241. package/internal/util/keys-derivation.d.ts.map +1 -1
  242. package/internal/util/keys-derivation.js +4 -1
  243. package/internal/util/keys-derivation.js.map +1 -1
  244. package/internal/util/packageInfo.d.ts +7 -1
  245. package/internal/util/packageInfo.d.ts.map +1 -1
  246. package/internal/util/packageInfo.js +23 -11
  247. package/internal/util/packageInfo.js.map +1 -1
  248. package/internal/util/proxy.d.ts +2 -0
  249. package/internal/util/proxy.d.ts.map +1 -0
  250. package/internal/util/proxy.js +19 -0
  251. package/internal/util/proxy.js.map +1 -0
  252. package/package.json +9 -10
  253. package/recommended-gitignore.txt +1 -1
  254. package/register.js +1 -4
  255. package/register.js.map +1 -1
  256. package/sample-projects/javascript/hardhat.config.js +1 -1
  257. package/sample-projects/javascript/scripts/deploy.js +2 -2
  258. package/sample-projects/javascript-esm/LICENSE.md +11 -0
  259. package/sample-projects/javascript-esm/README.md +13 -0
  260. package/sample-projects/javascript-esm/contracts/Lock.sol +34 -0
  261. package/sample-projects/javascript-esm/hardhat.config.cjs +6 -0
  262. package/sample-projects/javascript-esm/scripts/deploy.js +22 -0
  263. package/sample-projects/javascript-esm/test/Lock.js +123 -0
  264. package/sample-projects/typescript/hardhat.config.ts +1 -1
  265. package/sample-projects/typescript/scripts/deploy.ts +2 -2
  266. package/sample-projects/typescript/tsconfig.json +2 -1
  267. package/src/builtin-tasks/compile.ts +30 -11
  268. package/src/builtin-tasks/flatten.ts +18 -4
  269. package/src/builtin-tasks/help.ts +15 -16
  270. package/src/builtin-tasks/task-names.ts +2 -0
  271. package/src/builtin-tasks/test.ts +30 -2
  272. package/src/internal/artifacts.ts +947 -0
  273. package/src/internal/cli/bootstrap.ts +14 -36
  274. package/src/internal/cli/cli.ts +44 -35
  275. package/src/internal/cli/project-creation.ts +129 -32
  276. package/src/internal/cli/prompt.ts +2 -4
  277. package/src/internal/cli/types.ts +2 -0
  278. package/src/internal/core/config/config-env.ts +15 -27
  279. package/src/internal/core/config/config-loading.ts +35 -11
  280. package/src/internal/core/config/config-resolution.ts +4 -3
  281. package/src/internal/core/config/config-validation.ts +20 -0
  282. package/src/internal/core/config/extenders.ts +6 -15
  283. package/src/internal/core/errors-list.ts +121 -85
  284. package/src/internal/core/flamegraph.ts +10 -10
  285. package/src/internal/core/jsonrpc/types/output/metadata.ts +32 -0
  286. package/src/internal/core/project-structure.ts +8 -0
  287. package/src/internal/core/providers/accounts.ts +5 -2
  288. package/src/internal/core/providers/backwards-compatibility.ts +3 -0
  289. package/src/internal/core/providers/construction.ts +29 -24
  290. package/src/internal/core/providers/gas-providers.ts +1 -1
  291. package/src/internal/core/providers/http.ts +38 -26
  292. package/src/internal/core/runtime-environment.ts +65 -60
  293. package/src/internal/core/tasks/dsl.ts +17 -17
  294. package/src/internal/core/tasks/task-definitions.ts +6 -2
  295. package/src/internal/hardhat-network/jsonrpc/client.ts +7 -4
  296. package/src/internal/hardhat-network/jsonrpc/handler.ts +31 -28
  297. package/src/internal/hardhat-network/provider/modules/eth.ts +4 -4
  298. package/src/internal/hardhat-network/provider/modules/evm.ts +15 -3
  299. package/src/internal/hardhat-network/provider/modules/hardhat.ts +14 -0
  300. package/src/internal/hardhat-network/provider/modules/web3.ts +4 -4
  301. package/src/internal/hardhat-network/provider/node-types.ts +1 -1
  302. package/src/internal/hardhat-network/provider/node.ts +63 -1
  303. package/src/internal/hardhat-network/provider/output.ts +2 -2
  304. package/src/internal/hardhat-network/provider/provider.ts +61 -50
  305. package/src/internal/hardhat-network/provider/return-data.ts +2 -2
  306. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +5 -2
  307. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +5 -2
  308. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +5 -2
  309. package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +46 -0
  310. package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +10 -1
  311. package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +2 -2
  312. package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +73 -11
  313. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +1 -1
  314. package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
  315. package/src/internal/hardhat-network/stack-traces/debug.ts +9 -2
  316. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +179 -95
  317. package/src/internal/hardhat-network/stack-traces/model.ts +11 -1
  318. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +5 -3
  319. package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +2 -2
  320. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +3 -0
  321. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +4 -1
  322. package/src/internal/lib/hardhat-lib.ts +1 -6
  323. package/src/internal/solidity/compiler/downloader.ts +3 -3
  324. package/src/internal/solidity/compiler/index.ts +9 -1
  325. package/src/internal/solidity/dependencyGraph.ts +2 -0
  326. package/src/internal/solidity/resolver.ts +38 -11
  327. package/src/internal/util/abi-helpers.ts +9 -0
  328. package/src/internal/util/console.ts +4 -2
  329. package/src/internal/util/download.ts +16 -16
  330. package/src/internal/util/keys-derivation.ts +4 -1
  331. package/src/internal/util/packageInfo.ts +33 -10
  332. package/src/internal/util/proxy.ts +18 -0
  333. package/src/register.ts +1 -6
  334. package/src/types/artifacts.ts +19 -105
  335. package/src/types/config.ts +2 -0
  336. package/src/types/runtime.ts +16 -13
  337. package/src/utils/source-names.ts +15 -0
  338. package/types/artifacts.d.ts +14 -90
  339. package/types/artifacts.d.ts.map +1 -1
  340. package/types/config.d.ts +2 -0
  341. package/types/config.d.ts.map +1 -1
  342. package/types/runtime.d.ts +9 -10
  343. package/types/runtime.d.ts.map +1 -1
  344. package/utils/source-names.d.ts +5 -0
  345. package/utils/source-names.d.ts.map +1 -1
  346. package/utils/source-names.js +14 -1
  347. package/utils/source-names.js.map +1 -1
  348. package/internal/artifacts/caching.d.ts +0 -27
  349. package/internal/artifacts/caching.d.ts.map +0 -1
  350. package/internal/artifacts/caching.js +0 -167
  351. package/internal/artifacts/caching.js.map +0 -1
  352. package/internal/artifacts/index.d.ts +0 -44
  353. package/internal/artifacts/index.d.ts.map +0 -1
  354. package/internal/artifacts/index.js +0 -187
  355. package/internal/artifacts/index.js.map +0 -1
  356. package/internal/artifacts/mutable.d.ts +0 -29
  357. package/internal/artifacts/mutable.d.ts.map +0 -1
  358. package/internal/artifacts/mutable.js +0 -226
  359. package/internal/artifacts/mutable.js.map +0 -1
  360. package/internal/artifacts/readonly.d.ts +0 -88
  361. package/internal/artifacts/readonly.d.ts.map +0 -1
  362. package/internal/artifacts/readonly.js +0 -324
  363. package/internal/artifacts/readonly.js.map +0 -1
  364. package/src/internal/artifacts/caching.ts +0 -239
  365. package/src/internal/artifacts/index.ts +0 -296
  366. package/src/internal/artifacts/mutable.ts +0 -330
  367. package/src/internal/artifacts/readonly.ts +0 -438
@@ -9,6 +9,7 @@ export class DependencyGraph implements taskTypes.DependencyGraph {
9
9
  ): Promise<DependencyGraph> {
10
10
  const graph = new DependencyGraph();
11
11
 
12
+ // TODO refactor this to make the results deterministic
12
13
  await Promise.all(
13
14
  resolvedFiles.map((resolvedFile) =>
14
15
  graph._addDependenciesFrom(resolver, resolvedFile)
@@ -169,6 +170,7 @@ export class DependencyGraph implements taskTypes.DependencyGraph {
169
170
  this._resolvedFiles.set(file.sourceName, file);
170
171
  this._dependenciesPerFile.set(file.sourceName, dependencies);
171
172
 
173
+ // TODO refactor this to make the results deterministic
172
174
  await Promise.all(
173
175
  file.content.imports.map(async (imp) => {
174
176
  const dependency = await resolver.resolveImport(file, imp);
@@ -8,6 +8,7 @@ import {
8
8
  ResolvedFile as IResolvedFile,
9
9
  } from "../../types/builtin-tasks";
10
10
  import {
11
+ includesOwnPackageName,
11
12
  isAbsolutePathSourceName,
12
13
  isLocalSourceName,
13
14
  normalizeSourceName,
@@ -68,7 +69,10 @@ export class Resolver {
68
69
  constructor(
69
70
  private readonly _projectRoot: string,
70
71
  private readonly _parser: Parser,
71
- private readonly _readFile: (absolutePath: string) => Promise<string>
72
+ private readonly _readFile: (absolutePath: string) => Promise<string>,
73
+ private readonly _transformImportName: (
74
+ importName: string
75
+ ) => Promise<string>
72
76
  ) {}
73
77
 
74
78
  /**
@@ -99,12 +103,14 @@ export class Resolver {
99
103
  /**
100
104
  * Resolves an import from an already resolved file.
101
105
  * @param from The file were the import statement is present.
102
- * @param imported The path in the import statement.
106
+ * @param importName The path in the import statement.
103
107
  */
104
108
  public async resolveImport(
105
109
  from: ResolvedFile,
106
- imported: string
110
+ importName: string
107
111
  ): Promise<ResolvedFile> {
112
+ const imported = await this._transformImportName(importName);
113
+
108
114
  const scheme = this._getUriScheme(imported);
109
115
  if (scheme !== undefined) {
110
116
  throw new HardhatError(ERRORS.RESOLVER.INVALID_IMPORT_PROTOCOL, {
@@ -128,6 +134,15 @@ export class Resolver {
128
134
  });
129
135
  }
130
136
 
137
+ // Edge-case where an import can contain the current package's name in monorepos.
138
+ // The path can be resolved because there's a symlink in the node modules.
139
+ if (await includesOwnPackageName(imported)) {
140
+ throw new HardhatError(ERRORS.RESOLVER.INCLUDES_OWN_PACKAGE_NAME, {
141
+ from: from.sourceName,
142
+ imported,
143
+ });
144
+ }
145
+
131
146
  try {
132
147
  let sourceName: string;
133
148
 
@@ -172,14 +187,26 @@ export class Resolver {
172
187
  ERRORS.RESOLVER.LIBRARY_FILE_NOT_FOUND
173
188
  )
174
189
  ) {
175
- throw new HardhatError(
176
- ERRORS.RESOLVER.IMPORTED_FILE_NOT_FOUND,
177
- {
178
- imported,
179
- from: from.sourceName,
180
- },
181
- error
182
- );
190
+ if (imported !== importName) {
191
+ throw new HardhatError(
192
+ ERRORS.RESOLVER.IMPORTED_MAPPED_FILE_NOT_FOUND,
193
+ {
194
+ imported,
195
+ importName,
196
+ from: from.sourceName,
197
+ },
198
+ error
199
+ );
200
+ } else {
201
+ throw new HardhatError(
202
+ ERRORS.RESOLVER.IMPORTED_FILE_NOT_FOUND,
203
+ {
204
+ imported,
205
+ from: from.sourceName,
206
+ },
207
+ error
208
+ );
209
+ }
183
210
  }
184
211
 
185
212
  if (
@@ -26,6 +26,15 @@ export class AbiHelpers {
26
26
  }
27
27
  }
28
28
 
29
+ public static isValidCalldata(inputs: any[], calldata: Buffer): boolean {
30
+ try {
31
+ abi.defaultAbiCoder.decode(inputs, calldata);
32
+ return true;
33
+ } catch {
34
+ return false;
35
+ }
36
+ }
37
+
29
38
  public static formatValues(values: any[]): string {
30
39
  return values.map((x) => AbiHelpers._formatValue(x)).join(", ");
31
40
  }
@@ -1,3 +1,5 @@
1
+ import type ReplT from "repl";
2
+
1
3
  export function isNodeCalledWithoutAScript() {
2
4
  const script = process.argv[1];
3
5
  return script === undefined || script.trim() === "";
@@ -9,9 +11,9 @@ export function isNodeCalledWithoutAScript() {
9
11
  * so we disable it in hardhat/register.
10
12
  */
11
13
  export function disableReplWriterShowProxy() {
12
- const repl = require("repl");
14
+ const repl = require("repl") as typeof ReplT;
13
15
 
14
- if (repl.writer.options) {
16
+ if (repl.writer.options !== undefined) {
15
17
  Object.defineProperty(repl.writer.options, "showProxy", {
16
18
  value: false,
17
19
  writable: false,
@@ -1,9 +1,12 @@
1
+ import type { Dispatcher } from "undici";
2
+
1
3
  import fs from "fs";
2
4
  import fsExtra from "fs-extra";
3
5
  import path from "path";
4
6
  import util from "util";
5
7
 
6
8
  import { getHardhatVersion } from "./packageInfo";
9
+ import { shouldUseProxy } from "./proxy";
7
10
 
8
11
  const TEMP_FILE_PREFIX = "tmp-";
9
12
 
@@ -20,34 +23,31 @@ function resolveTempFileName(filePath: string): string {
20
23
  export async function download(
21
24
  url: string,
22
25
  filePath: string,
23
- timeoutMillis = 10000
26
+ timeoutMillis = 10000,
27
+ extraHeaders: { [name: string]: string } = {}
24
28
  ) {
25
29
  const { pipeline } = await import("stream");
26
30
  const { getGlobalDispatcher, ProxyAgent, request } = await import("undici");
27
31
  const streamPipeline = util.promisify(pipeline);
28
32
 
29
- function chooseDispatcher() {
30
- if (process.env.HTTPS_PROXY !== undefined) {
31
- return new ProxyAgent(process.env.HTTPS_PROXY);
32
- }
33
-
34
- if (process.env.HTTP_PROXY !== undefined) {
35
- return new ProxyAgent(process.env.HTTP_PROXY);
36
- }
37
-
38
- return getGlobalDispatcher();
33
+ let dispatcher: Dispatcher;
34
+ if (process.env.http_proxy !== undefined && shouldUseProxy(url)) {
35
+ dispatcher = new ProxyAgent(process.env.http_proxy);
36
+ } else {
37
+ dispatcher = getGlobalDispatcher();
39
38
  }
40
39
 
41
40
  const hardhatVersion = getHardhatVersion();
42
41
 
43
42
  // Fetch the url
44
43
  const response = await request(url, {
45
- dispatcher: chooseDispatcher(),
44
+ dispatcher,
46
45
  headersTimeout: timeoutMillis,
47
46
  maxRedirections: 10,
48
47
  method: "GET",
49
48
  headers: {
50
- "User-Agent": `hardhat ${hardhatVersion ?? "(unknown version)"}`,
49
+ ...extraHeaders,
50
+ "User-Agent": `hardhat ${hardhatVersion}`,
51
51
  },
52
52
  });
53
53
 
@@ -58,11 +58,11 @@ export async function download(
58
58
  await streamPipeline(response.body, fs.createWriteStream(tmpFilePath));
59
59
  return fsExtra.move(tmpFilePath, filePath, { overwrite: true });
60
60
  }
61
+ // undici's response bodies must always be consumed to prevent leaks
62
+ const text = await response.body.text();
61
63
 
62
64
  // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
63
65
  throw new Error(
64
- `Failed to download ${url} - ${
65
- response.statusCode
66
- } received. ${await response.body.text()}`
66
+ `Failed to download ${url} - ${response.statusCode} received. ${text}`
67
67
  );
68
68
  }
@@ -11,7 +11,10 @@ export function deriveKeyFromMnemonicAndPath(
11
11
  }: {
12
12
  mnemonicToSeedSync: typeof mnemonicToSeedSyncT;
13
13
  } = require("ethereum-cryptography/bip39");
14
- const seed = mnemonicToSeedSync(mnemonic, passphrase);
14
+ // NOTE: If mnemonic has space or newline at the beginning or end, it will be trimmed.
15
+ // This is because mnemonic containing them may generate different private keys.
16
+ const trimmedMnemonic = mnemonic.trim();
17
+ const seed = mnemonicToSeedSync(trimmedMnemonic, passphrase);
15
18
 
16
19
  const {
17
20
  HDKey,
@@ -2,6 +2,8 @@ import findup from "find-up";
2
2
  import fsExtra from "fs-extra";
3
3
  import path from "path";
4
4
 
5
+ import { assertHardhatInvariant } from "../core/errors";
6
+
5
7
  export function getPackageJsonPath(): string {
6
8
  return findClosestPackageJson(__filename)!;
7
9
  }
@@ -15,6 +17,7 @@ export function getPackageRoot(): string {
15
17
  export interface PackageJson {
16
18
  name: string;
17
19
  version: string;
20
+ type?: "commonjs" | "module";
18
21
  engines: {
19
22
  node: string;
20
23
  };
@@ -24,22 +27,42 @@ export function findClosestPackageJson(file: string): string | null {
24
27
  return findup.sync("package.json", { cwd: path.dirname(file) });
25
28
  }
26
29
 
30
+ export async function getPackageName(file: string): Promise<string> {
31
+ const packageJsonPath = findClosestPackageJson(file);
32
+ if (packageJsonPath !== null && packageJsonPath !== "") {
33
+ const packageJson: PackageJson = await fsExtra.readJSON(packageJsonPath);
34
+ return packageJson.name;
35
+ }
36
+ return "";
37
+ }
38
+
27
39
  export async function getPackageJson(): Promise<PackageJson> {
28
40
  const root = getPackageRoot();
29
41
  return fsExtra.readJSON(path.join(root, "package.json"));
30
42
  }
31
43
 
32
- export function getHardhatVersion(): string | null {
44
+ export function getHardhatVersion(): string {
33
45
  const packageJsonPath = findClosestPackageJson(__filename);
34
46
 
35
- if (packageJsonPath === null) {
36
- return null;
37
- }
47
+ assertHardhatInvariant(
48
+ packageJsonPath !== null,
49
+ "There should be a package.json in hardhat-core's root directory"
50
+ );
38
51
 
39
- try {
40
- const packageJson = fsExtra.readJsonSync(packageJsonPath);
41
- return packageJson.version;
42
- } catch {
43
- return null;
44
- }
52
+ const packageJson = fsExtra.readJsonSync(packageJsonPath);
53
+ return packageJson.version;
54
+ }
55
+
56
+ /**
57
+ * Return the contents of the package.json in the user's project
58
+ */
59
+ export function getProjectPackageJson(): Promise<any> {
60
+ const packageJsonPath = findup.sync("package.json");
61
+
62
+ assertHardhatInvariant(
63
+ packageJsonPath !== null,
64
+ "Expected a package.json file in the current directory or in an ancestor directory"
65
+ );
66
+
67
+ return fsExtra.readJson(packageJsonPath);
45
68
  }
@@ -0,0 +1,18 @@
1
+ export function shouldUseProxy(url: string): boolean {
2
+ const { hostname } = new URL(url);
3
+ const noProxy = process.env.NO_PROXY;
4
+
5
+ if (hostname === "localhost" || hostname === "127.0.0.1" || noProxy === "*") {
6
+ return false;
7
+ }
8
+
9
+ if (noProxy !== undefined && noProxy !== "") {
10
+ const noProxyList = noProxy.split(",");
11
+
12
+ if (noProxyList.includes(hostname)) {
13
+ return false;
14
+ }
15
+ }
16
+
17
+ return true;
18
+ }
package/src/register.ts CHANGED
@@ -38,16 +38,11 @@ if (!HardhatContext.isCreated()) {
38
38
 
39
39
  const { resolvedConfig, userConfig } = loadConfigAndTasks(hardhatArguments);
40
40
 
41
- const artifactsExtensions = ctx.extendersManager
42
- .getArtifactsExtenders()
43
- .map((artifactsExtender) => artifactsExtender(resolvedConfig));
44
-
45
41
  const env = new Environment(
46
42
  resolvedConfig,
47
43
  hardhatArguments,
48
44
  ctx.tasksDSL.getTaskDefinitions(),
49
- ctx.extendersManager.getEnvironmentExtenders(),
50
- artifactsExtensions,
45
+ ctx.extendersManager.getExtenders(),
51
46
  ctx.experimentalHardhatNetworkMessageTraceHooks,
52
47
  userConfig
53
48
  );
@@ -41,6 +41,11 @@ export interface Artifacts {
41
41
  */
42
42
  getBuildInfo(fullyQualifiedName: string): Promise<BuildInfo | undefined>;
43
43
 
44
+ /**
45
+ * Synchronous version of getBuildInfo.
46
+ */
47
+ getBuildInfoSync(fullyQualifiedName: string): BuildInfo | undefined;
48
+
44
49
  /**
45
50
  * Returns an array with the absolute paths of all the existing artifacts.
46
51
  *
@@ -92,9 +97,7 @@ export interface Artifacts {
92
97
  ): Promise<string>;
93
98
 
94
99
  /**
95
- * Returns the absolute path to the given artifact, as if it were saved
96
- * locally, and not by a plugin (i.e. this method does not support
97
- * ArtifactsExtension artifacts).
100
+ * Returns the absolute path to the given artifact.
98
101
  *
99
102
  * @param fullyQualifiedName The FQN of the artifact.
100
103
  */
@@ -108,7 +111,7 @@ export interface Artifacts {
108
111
  *
109
112
  * This method, if present, clears that cache.
110
113
  */
111
- clearCache?(): void;
114
+ clearCache?: () => void;
112
115
 
113
116
  /**
114
117
  * This method, if present, disables the artifact paths cache.
@@ -119,106 +122,7 @@ export interface Artifacts {
119
122
  *
120
123
  * @see clearCache
121
124
  */
122
- disableCache?(): void;
123
- }
124
-
125
- /**
126
- * Classes implementing this interface can be used as extra sources of
127
- * artifacts.
128
- *
129
- * Not every method needs to be fully implemented; some of them can have a
130
- * minimal valid implementation, as explained on their jsdocs.
131
- */
132
- export interface ArtifactsSource {
133
- /**
134
- * Reads an Artifact, returning `undefined` if not found.
135
- * @see Artifacts#readArtifact
136
- */
137
- readArtifact(
138
- contractNameOrFullyQualifiedName: string
139
- ): Promise<Artifact | undefined>;
140
-
141
- /**
142
- * Reads an Artifact, returning `undefined` if not found.
143
- * @see Artifacts#readArtifactSync
144
- */
145
- readArtifactSync(
146
- contractNameOrFullyQualifiedName: string
147
- ): Artifact | undefined;
148
-
149
- /**
150
- * @see Artifacts#artifactExists
151
- */
152
- artifactExists(contractNameOrFullyQualifiedName: string): Promise<boolean>;
153
-
154
- /**
155
- * Returns an array with the fully qualified names of all the artifacts.
156
- *
157
- * Always returning an empty array is a valid implementation.
158
- *
159
- * @see Artifacts#getAllFullyQualifiedNames
160
- */
161
- getAllFullyQualifiedNames(): Promise<string[]>;
162
-
163
- /**
164
- * Returns the BuildInfo associated with an artifact. Return `undefined` if
165
- * there's none.
166
- *
167
- * Always returning `undefined` is a valid implementation if you don't handle
168
- * BuildInfos.
169
- *
170
- * @see Artifacts#getBuildInfo
171
- */
172
- getBuildInfo(fullyQualifiedName: string): Promise<BuildInfo | undefined>;
173
-
174
- /**
175
- * Returns the paths of all the artifacts that the plugin can read.
176
- *
177
- * Always returning an empty array is a valid implementation.
178
- *
179
- * @see Artifacts#getArtifactPaths
180
- */
181
- getArtifactPaths(): Promise<string[]>;
182
-
183
- /**
184
- * Returns the paths of all the debug files associated with the artifacts that
185
- * the plugin can read.
186
- *
187
- * Always returning an empty array is a valid implementation if you don't
188
- * handle debug files.
189
- *
190
- * @see Artifacts#getDebugFilePaths
191
- */
192
- getDebugFilePaths(): Promise<string[]>;
193
-
194
- /**
195
- * Returns the paths of all the BuildInfos associated with the artifacts that
196
- * the plugin can read.
197
- *
198
- * Always returning an empty array is a valid implementation if you don't
199
- * handle BuildInfos.
200
- *
201
- * @see Artifacts#getBuildInfoPaths
202
- */
203
- getBuildInfoPaths(): Promise<string[]>;
204
-
205
- /**
206
- * Clears the internal cache, if any.
207
- *
208
- * An empty function is a valid implementation if you don't cache results.
209
- *
210
- * @see Artifacts#clearCache
211
- */
212
- clearCache: () => void;
213
-
214
- /**
215
- * Disables the internal cache, if any.
216
- *
217
- * An empty function is a valid implementation if you don't cache results.
218
- *
219
- * @see Artifacts#disableCache
220
- */
221
- disableCache: () => void;
125
+ disableCache?: () => void;
222
126
  }
223
127
 
224
128
  /**
@@ -278,7 +182,16 @@ export interface CompilerInput {
278
182
  language: string;
279
183
  sources: { [sourceName: string]: { content: string } };
280
184
  settings: {
281
- optimizer: { runs?: number; enabled?: boolean };
185
+ viaIR?: boolean;
186
+ optimizer: {
187
+ runs?: number;
188
+ enabled?: boolean;
189
+ details?: {
190
+ yulDetails: {
191
+ optimizerSteps: string;
192
+ };
193
+ };
194
+ };
282
195
  metadata?: { useLiteralContent: boolean };
283
196
  outputSelection: {
284
197
  [sourceName: string]: {
@@ -291,6 +204,7 @@ export interface CompilerInput {
291
204
  [libraryName: string]: string;
292
205
  };
293
206
  };
207
+ remappings?: string[];
294
208
  };
295
209
  }
296
210
 
@@ -51,6 +51,7 @@ export interface HardhatNetworkUserConfig {
51
51
  throwOnTransactionFailures?: boolean;
52
52
  throwOnCallFailures?: boolean;
53
53
  allowUnlimitedContractSize?: boolean;
54
+ allowBlocksWithSameTimestamp?: boolean;
54
55
  initialDate?: string;
55
56
  loggingEnabled?: boolean;
56
57
  forking?: HardhatNetworkForkingUserConfig;
@@ -151,6 +152,7 @@ export interface HardhatNetworkConfig {
151
152
  forking?: HardhatNetworkForkingConfig;
152
153
  coinbase?: string;
153
154
  chains: HardhatNetworkChainsConfig;
155
+ allowBlocksWithSameTimestamp?: boolean;
154
156
  }
155
157
 
156
158
  export type HardhatNetworkAccountsConfig =
@@ -1,4 +1,4 @@
1
- import { Artifacts, ArtifactsSource } from "./artifacts";
1
+ import { Artifacts } from "./artifacts";
2
2
  import { HardhatConfig, HardhatUserConfig, NetworkConfig } from "./config";
3
3
  import { EthereumProvider } from "./provider";
4
4
 
@@ -146,15 +146,22 @@ export interface TaskDefinition extends ConfigurableTaskDefinition {
146
146
  */
147
147
  export type TaskArguments = any;
148
148
 
149
- export interface RunSuperFunction<ArgT extends TaskArguments> {
150
- (taskArguments?: ArgT): Promise<any>;
149
+ export interface SubtaskArguments {
150
+ [subtaskName: string]: TaskArguments;
151
+ }
152
+
153
+ export interface RunSuperFunction<TaskArgumentsT extends TaskArguments> {
154
+ (
155
+ taskArguments?: TaskArgumentsT,
156
+ subtaskArguments?: SubtaskArguments
157
+ ): Promise<any>;
151
158
  isDefined: boolean;
152
159
  }
153
160
 
154
- export type ActionType<ArgsT extends TaskArguments> = (
155
- taskArgs: ArgsT,
161
+ export type ActionType<TaskArgumentsT extends TaskArguments> = (
162
+ taskArgs: TaskArgumentsT,
156
163
  env: HardhatRuntimeEnvironment,
157
- runSuper: RunSuperFunction<ArgsT>
164
+ runSuper: RunSuperFunction<TaskArgumentsT>
158
165
  ) => Promise<any>;
159
166
 
160
167
  export interface HardhatArguments {
@@ -183,7 +190,8 @@ export interface TasksMap {
183
190
 
184
191
  export type RunTaskFunction = (
185
192
  name: string,
186
- taskArguments?: TaskArguments
193
+ taskArguments?: TaskArguments,
194
+ subtaskArguments?: SubtaskArguments
187
195
  ) => Promise<any>;
188
196
 
189
197
  export interface HardhatRuntimeEnvironment {
@@ -194,6 +202,7 @@ export interface HardhatRuntimeEnvironment {
194
202
  readonly run: RunTaskFunction;
195
203
  readonly network: Network;
196
204
  readonly artifacts: Artifacts;
205
+ readonly version: string;
197
206
  }
198
207
 
199
208
  export interface Network {
@@ -207,9 +216,3 @@ export interface Network {
207
216
  * modify its properties or add new ones.
208
217
  */
209
218
  export type EnvironmentExtender = (env: HardhatRuntimeEnvironment) => void;
210
-
211
- /**
212
- * A function that receives the resolved Hardhat configuration and
213
- * returns an extra source of artifacts.
214
- */
215
- export type ArtifactsExtender = (config: HardhatConfig) => ArtifactsSource;
@@ -3,6 +3,7 @@ import path from "path";
3
3
  import { HardhatError } from "../internal/core/errors";
4
4
  import { ERRORS } from "../internal/core/errors-list";
5
5
  import { FileNotFoundError, getFileTrueCase } from "../internal/util/fs-utils";
6
+ import { getPackageName } from "../internal/util/packageInfo";
6
7
 
7
8
  const NODE_MODULES = "node_modules";
8
9
 
@@ -228,3 +229,17 @@ async function getSourceNameTrueCase(
228
229
  throw error;
229
230
  }
230
231
  }
232
+
233
+ /**
234
+ * This function returns true if the sourceName contains the current package's name
235
+ * as a substring
236
+ */
237
+ export async function includesOwnPackageName(
238
+ sourceName: string
239
+ ): Promise<boolean> {
240
+ const packageName = await getPackageName(sourceName);
241
+ if (packageName !== "") {
242
+ return sourceName.startsWith(`${packageName}/`);
243
+ }
244
+ return false;
245
+ }