hardhat 2.16.1 → 2.17.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 (215) hide show
  1. package/.eslintrc.js +34 -3
  2. package/builtin-tasks/compile.js +2 -2
  3. package/builtin-tasks/compile.js.map +1 -1
  4. package/builtin-tasks/flatten.js +1 -1
  5. package/builtin-tasks/flatten.js.map +1 -1
  6. package/builtin-tasks/node.js +1 -1
  7. package/builtin-tasks/node.js.map +1 -1
  8. package/builtin-tasks/run.js +1 -1
  9. package/builtin-tasks/run.js.map +1 -1
  10. package/internal/artifacts.d.ts +1 -2
  11. package/internal/artifacts.d.ts.map +1 -1
  12. package/internal/artifacts.js +3 -11
  13. package/internal/artifacts.js.map +1 -1
  14. package/internal/cli/analytics.d.ts.map +1 -1
  15. package/internal/cli/analytics.js +27 -4
  16. package/internal/cli/analytics.js.map +1 -1
  17. package/internal/cli/bootstrap.js +3 -3
  18. package/internal/cli/bootstrap.js.map +1 -1
  19. package/internal/cli/constants.d.ts +2 -0
  20. package/internal/cli/constants.d.ts.map +1 -0
  21. package/internal/cli/constants.js +5 -0
  22. package/internal/cli/constants.js.map +1 -0
  23. package/internal/cli/project-creation.d.ts +1 -1
  24. package/internal/cli/project-creation.js +4 -4
  25. package/internal/cli/project-creation.js.map +1 -1
  26. package/internal/cli/prompt.js +2 -2
  27. package/internal/cli/prompt.js.map +1 -1
  28. package/internal/core/config/config-loading.js +2 -2
  29. package/internal/core/config/config-loading.js.map +1 -1
  30. package/internal/core/jsonrpc/types/input/validation.js +1 -1
  31. package/internal/core/jsonrpc/types/input/validation.js.map +1 -1
  32. package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js +1 -1
  33. package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js.map +1 -1
  34. package/internal/core/params/argumentTypes.js +4 -4
  35. package/internal/core/params/argumentTypes.js.map +1 -1
  36. package/internal/core/params/env-variables.js +1 -1
  37. package/internal/core/params/env-variables.js.map +1 -1
  38. package/internal/core/providers/backwards-compatibility.js +1 -1
  39. package/internal/core/providers/backwards-compatibility.js.map +1 -1
  40. package/internal/core/providers/gas-providers.js +1 -1
  41. package/internal/core/providers/gas-providers.js.map +1 -1
  42. package/internal/core/providers/http.js +5 -5
  43. package/internal/core/providers/http.js.map +1 -1
  44. package/internal/core/providers/wrapper.js +1 -1
  45. package/internal/core/providers/wrapper.js.map +1 -1
  46. package/internal/core/runtime-environment.js +1 -1
  47. package/internal/core/runtime-environment.js.map +1 -1
  48. package/internal/hardhat-network/jsonrpc/client.js +3 -3
  49. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  50. package/internal/hardhat-network/jsonrpc/handler.js +3 -3
  51. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  52. package/internal/hardhat-network/provider/BlockchainBase.js +1 -1
  53. package/internal/hardhat-network/provider/BlockchainBase.js.map +1 -1
  54. package/internal/hardhat-network/provider/HardhatBlockchain.js +1 -1
  55. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
  56. package/internal/hardhat-network/provider/MiningTimer.js +1 -1
  57. package/internal/hardhat-network/provider/MiningTimer.js.map +1 -1
  58. package/internal/hardhat-network/provider/TransactionQueue.js +3 -3
  59. package/internal/hardhat-network/provider/TransactionQueue.js.map +1 -1
  60. package/internal/hardhat-network/provider/TxPool.js +1 -1
  61. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  62. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +1 -1
  63. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  64. package/internal/hardhat-network/provider/modules/debug.js +1 -1
  65. package/internal/hardhat-network/provider/modules/debug.js.map +1 -1
  66. package/internal/hardhat-network/provider/modules/eth.js +1 -1
  67. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  68. package/internal/hardhat-network/provider/modules/evm.js +1 -1
  69. package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
  70. package/internal/hardhat-network/provider/modules/hardhat.js +1 -1
  71. package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
  72. package/internal/hardhat-network/provider/modules/net.js +1 -1
  73. package/internal/hardhat-network/provider/modules/net.js.map +1 -1
  74. package/internal/hardhat-network/provider/modules/personal.js +1 -1
  75. package/internal/hardhat-network/provider/modules/personal.js.map +1 -1
  76. package/internal/hardhat-network/provider/modules/web3.js +1 -1
  77. package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
  78. package/internal/hardhat-network/provider/node.js +3 -3
  79. package/internal/hardhat-network/provider/node.js.map +1 -1
  80. package/internal/hardhat-network/provider/output.js +1 -1
  81. package/internal/hardhat-network/provider/output.js.map +1 -1
  82. package/internal/hardhat-network/provider/provider.js +1 -1
  83. package/internal/hardhat-network/provider/provider.js.map +1 -1
  84. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +1 -1
  85. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  86. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +1 -1
  87. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  88. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +1 -1
  89. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  90. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
  91. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
  92. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +1 -1
  93. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
  94. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +1 -1
  95. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
  96. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +1 -1
  97. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
  98. package/internal/hardhat-network/provider/utils/assertions.js +1 -1
  99. package/internal/hardhat-network/provider/utils/assertions.js.map +1 -1
  100. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +1 -0
  101. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
  102. package/internal/hardhat-network/provider/utils/makeForkClient.js +9 -3
  103. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  104. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js +1 -1
  105. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js.map +1 -1
  106. package/internal/hardhat-network/stack-traces/compiler-to-model.js +1 -1
  107. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
  108. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +1 -0
  109. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
  110. package/internal/hardhat-network/stack-traces/consoleLogger.js +20 -1
  111. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  112. package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
  113. package/internal/hardhat-network/stack-traces/constants.js +1 -1
  114. package/internal/hardhat-network/stack-traces/error-inferrer.js +1 -1
  115. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  116. package/internal/hardhat-network/stack-traces/model.js +1 -1
  117. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  118. package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -2
  119. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  120. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  121. package/internal/hardhat-network/stack-traces/solidityTracer.js +2 -1
  122. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  123. package/internal/hardhat-network/stack-traces/vm-tracer.js +1 -1
  124. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
  125. package/internal/solidity/parse.js +1 -1
  126. package/internal/solidity/parse.js.map +1 -1
  127. package/internal/solidity/resolver.js +2 -2
  128. package/internal/solidity/resolver.js.map +1 -1
  129. package/internal/util/caller-package.d.ts.map +1 -1
  130. package/internal/util/caller-package.js +5 -1
  131. package/internal/util/caller-package.js.map +1 -1
  132. package/internal/util/ci-detection.d.ts.map +1 -1
  133. package/internal/util/ci-detection.js +2 -2
  134. package/internal/util/ci-detection.js.map +1 -1
  135. package/internal/util/download.js +1 -1
  136. package/internal/util/download.js.map +1 -1
  137. package/internal/util/fs-utils.js +10 -10
  138. package/internal/util/fs-utils.js.map +1 -1
  139. package/internal/util/jsonrpc.js +1 -1
  140. package/internal/util/jsonrpc.js.map +1 -1
  141. package/internal/vendor/await-semaphore/index.js +1 -1
  142. package/internal/vendor/await-semaphore/index.js.map +1 -1
  143. package/package.json +9 -8
  144. package/sample-projects/javascript/hardhat.config.js +1 -1
  145. package/sample-projects/javascript-esm/hardhat.config.cjs +1 -1
  146. package/sample-projects/typescript/hardhat.config.ts +1 -1
  147. package/src/builtin-tasks/compile.ts +2 -2
  148. package/src/builtin-tasks/flatten.ts +1 -1
  149. package/src/builtin-tasks/node.ts +1 -1
  150. package/src/builtin-tasks/run.ts +1 -1
  151. package/src/internal/artifacts.ts +3 -11
  152. package/src/internal/cli/analytics.ts +5 -2
  153. package/src/internal/cli/bootstrap.ts +2 -2
  154. package/src/internal/cli/constants.ts +1 -0
  155. package/src/internal/cli/project-creation.ts +4 -4
  156. package/src/internal/cli/prompt.ts +2 -2
  157. package/src/internal/core/config/config-loading.ts +2 -2
  158. package/src/internal/core/jsonrpc/types/input/validation.ts +1 -1
  159. package/src/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.ts +1 -1
  160. package/src/internal/core/params/argumentTypes.ts +4 -4
  161. package/src/internal/core/params/env-variables.ts +1 -1
  162. package/src/internal/core/providers/backwards-compatibility.ts +1 -1
  163. package/src/internal/core/providers/gas-providers.ts +1 -1
  164. package/src/internal/core/providers/http.ts +5 -5
  165. package/src/internal/core/providers/wrapper.ts +1 -1
  166. package/src/internal/core/runtime-environment.ts +1 -1
  167. package/src/internal/hardhat-network/jsonrpc/client.ts +3 -3
  168. package/src/internal/hardhat-network/jsonrpc/handler.ts +3 -3
  169. package/src/internal/hardhat-network/provider/BlockchainBase.ts +1 -1
  170. package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +1 -1
  171. package/src/internal/hardhat-network/provider/MiningTimer.ts +1 -1
  172. package/src/internal/hardhat-network/provider/TransactionQueue.ts +3 -3
  173. package/src/internal/hardhat-network/provider/TxPool.ts +1 -1
  174. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +1 -1
  175. package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +1 -1
  176. package/src/internal/hardhat-network/provider/modules/debug.ts +1 -1
  177. package/src/internal/hardhat-network/provider/modules/eth.ts +1 -1
  178. package/src/internal/hardhat-network/provider/modules/evm.ts +1 -1
  179. package/src/internal/hardhat-network/provider/modules/hardhat.ts +1 -1
  180. package/src/internal/hardhat-network/provider/modules/net.ts +1 -1
  181. package/src/internal/hardhat-network/provider/modules/personal.ts +1 -1
  182. package/src/internal/hardhat-network/provider/modules/web3.ts +1 -1
  183. package/src/internal/hardhat-network/provider/node.ts +3 -3
  184. package/src/internal/hardhat-network/provider/output.ts +1 -1
  185. package/src/internal/hardhat-network/provider/provider.ts +1 -1
  186. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +1 -1
  187. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +1 -1
  188. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +1 -1
  189. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +1 -1
  190. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +1 -1
  191. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +1 -1
  192. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +1 -1
  193. package/src/internal/hardhat-network/provider/utils/assertions.ts +1 -1
  194. package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +11 -2
  195. package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +1 -1
  196. package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +1 -1
  197. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +26 -1
  198. package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
  199. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +1 -1
  200. package/src/internal/hardhat-network/stack-traces/model.ts +1 -1
  201. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
  202. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +4 -1
  203. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +1 -1
  204. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +1 -1
  205. package/src/internal/solidity/parse.ts +1 -1
  206. package/src/internal/solidity/resolver.ts +2 -2
  207. package/src/internal/util/caller-package.ts +7 -1
  208. package/src/internal/util/ci-detection.ts +3 -1
  209. package/src/internal/util/download.ts +1 -1
  210. package/src/internal/util/fs-utils.ts +10 -10
  211. package/src/internal/util/jsonrpc.ts +1 -1
  212. package/src/internal/vendor/await-semaphore/index.ts +1 -1
  213. package/src/utils/source-names.ts +2 -2
  214. package/utils/source-names.js +2 -2
  215. package/utils/source-names.js.map +1 -1
@@ -12,7 +12,7 @@ import {
12
12
  import { InternalError } from "../../../core/providers/errors";
13
13
  import * as BigIntUtils from "../../../util/bigint";
14
14
 
15
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
15
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
16
16
 
17
17
  /**
18
18
  * This class is like `ReadOnlyValidTransaction` but for EIP-1559 transactions.
@@ -10,7 +10,7 @@ import { Address } from "@nomicfoundation/ethereumjs-util";
10
10
  import { InternalError } from "../../../core/providers/errors";
11
11
  import * as BigIntUtils from "../../../util/bigint";
12
12
 
13
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
13
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
14
14
 
15
15
  /**
16
16
  * This class is like `ReadOnlyValidTransaction` but for
@@ -4,7 +4,7 @@ import { Address } from "@nomicfoundation/ethereumjs-util";
4
4
 
5
5
  import { InternalError } from "../../../core/providers/errors";
6
6
 
7
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
7
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
8
8
 
9
9
  /**
10
10
  * This class represents a transaction that is assumed to be valid.
@@ -4,7 +4,7 @@ import { Address } from "@nomicfoundation/ethereumjs-util";
4
4
 
5
5
  import { InternalError } from "../../../core/providers/errors";
6
6
 
7
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
7
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
8
8
 
9
9
  /**
10
10
  * This class is like `ReadOnlyValidTransaction` but for
@@ -5,7 +5,7 @@ export function assertHardhatNetworkInvariant(
5
5
  description: string
6
6
  ): asserts invariant {
7
7
  if (!invariant) {
8
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
8
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
9
9
  throw new InternalError(
10
10
  `Internal Hardhat Network invariant was violated: ${description}`
11
11
  );
@@ -44,12 +44,12 @@ export async function makeForkClient(
44
44
  const maxReorg = actualMaxReorg ?? FALLBACK_MAX_REORG;
45
45
 
46
46
  const latestBlock = await getLatestBlockNumber(provider);
47
- const lastSafeBlock = latestBlock - maxReorg;
47
+ const lastSafeBlock = getLastSafeBlock(latestBlock, maxReorg);
48
48
 
49
49
  let forkBlockNumber;
50
50
  if (forkConfig.blockNumber !== undefined) {
51
51
  if (forkConfig.blockNumber > latestBlock) {
52
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
52
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
53
53
  throw new Error(
54
54
  `Trying to initialize a provider with block ${forkConfig.blockNumber} but the current block is ${latestBlock}`
55
55
  );
@@ -127,3 +127,12 @@ async function getLatestBlockNumber(provider: HttpProvider) {
127
127
  const latestBlock = BigInt(latestBlockString);
128
128
  return latestBlock;
129
129
  }
130
+
131
+ export function getLastSafeBlock(
132
+ latestBlock: bigint,
133
+ maxReorg: bigint
134
+ ): bigint {
135
+ // Design choice: if latestBlock - maxReorg results in a negative number then the latestBlock block will be used.
136
+ // This decision is based on the assumption that if maxReorg > latestBlock then there is a high probability that the fork is occurring on a devnet.
137
+ return latestBlock - maxReorg >= 0 ? latestBlock - maxReorg : latestBlock;
138
+ }
@@ -2,7 +2,7 @@ import { InternalError } from "../../../core/providers/errors";
2
2
  import * as BigIntUtils from "../../../util/bigint";
3
3
  import { SenderTransactions, SerializedTransaction } from "../PoolState";
4
4
 
5
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
5
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
6
6
 
7
7
  /**
8
8
  * Move as many transactions as possible from the queued list
@@ -689,7 +689,7 @@ function correctSelectors(
689
689
  const fixedSelector = contract.correctSelector(functionName, selector);
690
690
 
691
691
  if (!fixedSelector) {
692
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
692
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
693
693
  throw new Error(
694
694
  `Failed to compute the selector one or more implementations of ${contract.name}#${functionName}. Hardhat Network can automatically fix this problem if you don't use function overloading.`
695
695
  );
@@ -134,7 +134,32 @@ export class ConsoleLogger {
134
134
  return;
135
135
  }
136
136
 
137
- return this._decode(parameters, types);
137
+ const consoleLogs = this._decode(parameters, types);
138
+
139
+ this._replaceNumberFormatSpecifiers(consoleLogs);
140
+
141
+ return consoleLogs;
142
+ }
143
+
144
+ private _replaceNumberFormatSpecifiers(consoleLogs: ConsoleLogs) {
145
+ /**
146
+ * Replace the occurrences of %d and %i with %s. This is necessary because if the arguments passed are numbers,
147
+ * they could be too large to be formatted as a Number or an Integer, so it is safer to use a String.
148
+ * %d and %i are replaced only if there is an odd number of % before the d or i.
149
+ * If there is an even number of % then it is assumed that the % is escaped and should not be replaced.
150
+ * The regex matches a '%d' or an '%i' that has an even number of
151
+ * '%' behind it (including 0). This group of pairs of '%' is captured
152
+ * and preserved, while the '%[di]' is replaced with '%s'.
153
+ * Naively doing (%%)* is not enough; we also have to use the
154
+ * (?<!%) negative look-behind to make this work.
155
+ * The (?:) is just to avoid capturing that inner group.
156
+ */
157
+ if (consoleLogs.length > 0 && typeof consoleLogs[0] === "string") {
158
+ consoleLogs[0] = consoleLogs[0].replace(
159
+ /((?<!%)(?:%%)*)(%[di])/g,
160
+ "$1%s"
161
+ );
162
+ }
138
163
  }
139
164
 
140
165
  private _decode(data: Buffer, types: string[]): ConsoleLogs {
@@ -1,2 +1,2 @@
1
- export const SUPPORTED_SOLIDITY_VERSION_RANGE = "<=0.8.18";
1
+ export const SUPPORTED_SOLIDITY_VERSION_RANGE = "<=0.8.20";
2
2
  export const FIRST_SOLC_VERSION_SUPPORTED = "0.5.1";
@@ -57,7 +57,7 @@ export interface SubmessageData {
57
57
  stepIndex: number;
58
58
  }
59
59
 
60
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
60
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
61
61
 
62
62
  export class ErrorInferrer {
63
63
  public inferBeforeTracingCallMessage(
@@ -4,7 +4,7 @@ import { AbiHelpers } from "../../util/abi-helpers";
4
4
 
5
5
  import { Opcode } from "./opcodes";
6
6
 
7
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
7
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
8
8
 
9
9
  export enum JumpType {
10
10
  NOT_JUMP,
@@ -38,11 +38,11 @@ export async function wrapWithSolidityErrorsCorrection(
38
38
  return await f();
39
39
  } catch (error: any) {
40
40
  if (error.stackTrace === undefined) {
41
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
41
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
42
42
  throw error;
43
43
  }
44
44
 
45
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
45
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
46
46
  throw encodeSolidityStackTrace(
47
47
  error.message,
48
48
  error.stackTrace,
@@ -186,7 +186,10 @@ export class SolidityTracer {
186
186
  if (isEvmStep(step)) {
187
187
  const inst = trace.bytecode.getInstruction(step.pc);
188
188
 
189
- if (inst.jumpType === JumpType.INTO_FUNCTION) {
189
+ if (
190
+ inst.jumpType === JumpType.INTO_FUNCTION &&
191
+ nextStep !== undefined
192
+ ) {
190
193
  const nextEvmStep = nextStep as EvmStep; // A jump can't be followed by a subtrace
191
194
  const nextInst = trace.bytecode.getInstruction(nextEvmStep.pc);
192
195
 
@@ -16,7 +16,7 @@ import { InvalidInputError } from "../../core/providers/errors";
16
16
  import { RpcDebugTraceOutput, RpcStructLog } from "../provider/output";
17
17
  import * as BigIntUtils from "../../util/bigint";
18
18
 
19
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
19
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
20
20
 
21
21
  interface StructLog {
22
22
  depth: number;
@@ -17,7 +17,7 @@ import {
17
17
  PrecompileMessageTrace,
18
18
  } from "./message-trace";
19
19
 
20
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
20
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
21
21
 
22
22
  const DUMMY_RETURN_DATA = Buffer.from([]);
23
23
  const DUMMY_GAS_USED = 0n;
@@ -42,7 +42,7 @@ export class Parser {
42
42
  throw new HardhatError(ERRORS.GENERAL.CORRUPTED_LOCKFILE);
43
43
  }
44
44
 
45
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
45
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
46
46
  throw e;
47
47
  }
48
48
  }
@@ -241,7 +241,7 @@ export class Resolver {
241
241
  );
242
242
  }
243
243
 
244
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
244
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
245
245
  throw error;
246
246
  }
247
247
  }
@@ -514,7 +514,7 @@ export class Resolver {
514
514
  );
515
515
  }
516
516
 
517
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
517
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
518
518
  throw error;
519
519
  }
520
520
  }
@@ -22,7 +22,13 @@ export function getClosestCallerPackage(): string | undefined {
22
22
 
23
23
  for (const callSite of stack) {
24
24
  const fileName = callSite.getFileName();
25
- if (fileName !== null && path.isAbsolute(fileName)) {
25
+ // fileName is string | null in @types/node <=18
26
+ // and string | undefined in @types/node 20
27
+ if (
28
+ fileName !== null &&
29
+ fileName !== undefined &&
30
+ path.isAbsolute(fileName)
31
+ ) {
26
32
  const callerPackage = findClosestPackageJson(fileName);
27
33
 
28
34
  if (callerPackage === currentPackage) {
@@ -1,4 +1,5 @@
1
- import ci from "ci-info";
1
+ import type CiInfoT from "ci-info";
2
+
2
3
  import os from "os";
3
4
 
4
5
  // This has been tested in:
@@ -17,6 +18,7 @@ import os from "os";
17
18
  // - Jenkins -- Using process.env.BUILD_NUMBER
18
19
  // - ZEIT Now -- Special case
19
20
  export function isRunningOnCiServer(): boolean {
21
+ const ci = require("ci-info") as typeof CiInfoT;
20
22
  return (
21
23
  ci.isCI ||
22
24
  isGithubActions() ||
@@ -58,7 +58,7 @@ export async function download(
58
58
  // undici's response bodies must always be consumed to prevent leaks
59
59
  const text = await response.body.text();
60
60
 
61
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
61
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
62
62
  throw new Error(
63
63
  `Failed to download ${url} - ${response.statusCode} received. ${text}`
64
64
  );
@@ -30,11 +30,11 @@ export async function getRealPath(absolutePath: string): Promise<string> {
30
30
  return await fsPromises.realpath(path.normalize(absolutePath));
31
31
  } catch (e: any) {
32
32
  if (e.code === "ENOENT") {
33
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
33
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
34
34
  throw new FileNotFoundError(absolutePath, e);
35
35
  }
36
36
 
37
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
37
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
38
38
  throw new FileSystemAccessError(e.message, e);
39
39
  }
40
40
  }
@@ -51,11 +51,11 @@ export function getRealPathSync(absolutePath: string): string {
51
51
  return fs.realpathSync.native(path.normalize(absolutePath));
52
52
  } catch (e: any) {
53
53
  if (e.code === "ENOENT") {
54
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
54
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
55
55
  throw new FileNotFoundError(absolutePath, e);
56
56
  }
57
57
 
58
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
58
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
59
59
  throw new FileSystemAccessError(e.message, e);
60
60
  }
61
61
  }
@@ -148,7 +148,7 @@ export async function getFileTrueCase(
148
148
  }
149
149
  }
150
150
 
151
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
151
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
152
152
  throw new FileNotFoundError(path.join(from, relativePath));
153
153
  }
154
154
 
@@ -182,7 +182,7 @@ export function getFileTrueCaseSync(
182
182
  }
183
183
  }
184
184
 
185
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
185
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
186
186
  throw new FileNotFoundError(path.join(from, relativePath));
187
187
  }
188
188
 
@@ -195,11 +195,11 @@ async function readdir(absolutePathToDir: string) {
195
195
  }
196
196
 
197
197
  if (e.code === "ENOTDIR") {
198
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
198
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
199
199
  throw new InvalidDirectoryError(absolutePathToDir, e);
200
200
  }
201
201
 
202
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
202
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
203
203
  throw new FileSystemAccessError(e.message, e);
204
204
  }
205
205
  }
@@ -213,11 +213,11 @@ function readdirSync(absolutePathToDir: string) {
213
213
  }
214
214
 
215
215
  if (e.code === "ENOTDIR") {
216
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
216
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
217
217
  throw new InvalidDirectoryError(absolutePathToDir, e);
218
218
  }
219
219
 
220
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
220
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
221
221
  throw new FileSystemAccessError(e.message, e);
222
222
  }
223
223
  }
@@ -37,7 +37,7 @@ export function parseJsonResponse(
37
37
  if (!isValidJsonResponse(response)) {
38
38
  // We are sending the proper error inside the catch part of the statement.
39
39
  // We just need to raise anything here.
40
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
40
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
41
41
  throw new Error();
42
42
  }
43
43
  }
@@ -1,7 +1,7 @@
1
1
  // Based on: https://github.com/notenoughneon/await-semaphore/blob/f117a6b59324038c9e8ee04c70c328215a727812/index.ts
2
2
  // which is distributed under this license: https://github.com/notenoughneon/await-semaphore/blob/f117a6b59324038c9e8ee04c70c328215a727812/LICENSE
3
3
 
4
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
4
+ /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
5
5
 
6
6
  export class Semaphore {
7
7
  public count: number;
@@ -82,7 +82,7 @@ export async function isLocalSourceName(
82
82
  return false;
83
83
  }
84
84
 
85
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
85
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
86
86
  throw error;
87
87
  }
88
88
 
@@ -225,7 +225,7 @@ async function getSourceNameTrueCase(
225
225
  );
226
226
  }
227
227
 
228
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
228
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
229
229
  throw error;
230
230
  }
231
231
  }
@@ -65,7 +65,7 @@ async function isLocalSourceName(projectRoot, sourceName) {
65
65
  if (error instanceof fs_utils_1.FileNotFoundError) {
66
66
  return false;
67
67
  }
68
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
68
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
69
69
  throw error;
70
70
  }
71
71
  return true;
@@ -182,7 +182,7 @@ async function getSourceNameTrueCase(fromDir, p) {
182
182
  name: p,
183
183
  }, error);
184
184
  }
185
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
185
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
186
186
  throw error;
187
187
  }
188
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"source-names.js","sourceRoot":"","sources":["../src/utils/source-names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source-names.js","sourceRoot":"","sources":["../src/utils/source-names.ts"],"names":[],"mappings":"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"}