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.
- package/.eslintrc.js +34 -3
- package/builtin-tasks/compile.js +2 -2
- package/builtin-tasks/compile.js.map +1 -1
- package/builtin-tasks/flatten.js +1 -1
- package/builtin-tasks/flatten.js.map +1 -1
- package/builtin-tasks/node.js +1 -1
- package/builtin-tasks/node.js.map +1 -1
- package/builtin-tasks/run.js +1 -1
- package/builtin-tasks/run.js.map +1 -1
- package/internal/artifacts.d.ts +1 -2
- package/internal/artifacts.d.ts.map +1 -1
- package/internal/artifacts.js +3 -11
- package/internal/artifacts.js.map +1 -1
- package/internal/cli/analytics.d.ts.map +1 -1
- package/internal/cli/analytics.js +27 -4
- package/internal/cli/analytics.js.map +1 -1
- package/internal/cli/bootstrap.js +3 -3
- package/internal/cli/bootstrap.js.map +1 -1
- package/internal/cli/constants.d.ts +2 -0
- package/internal/cli/constants.d.ts.map +1 -0
- package/internal/cli/constants.js +5 -0
- package/internal/cli/constants.js.map +1 -0
- package/internal/cli/project-creation.d.ts +1 -1
- package/internal/cli/project-creation.js +4 -4
- package/internal/cli/project-creation.js.map +1 -1
- package/internal/cli/prompt.js +2 -2
- package/internal/cli/prompt.js.map +1 -1
- package/internal/core/config/config-loading.js +2 -2
- package/internal/core/config/config-loading.js.map +1 -1
- package/internal/core/jsonrpc/types/input/validation.js +1 -1
- package/internal/core/jsonrpc/types/input/validation.js.map +1 -1
- package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js +1 -1
- package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js.map +1 -1
- package/internal/core/params/argumentTypes.js +4 -4
- package/internal/core/params/argumentTypes.js.map +1 -1
- package/internal/core/params/env-variables.js +1 -1
- package/internal/core/params/env-variables.js.map +1 -1
- package/internal/core/providers/backwards-compatibility.js +1 -1
- package/internal/core/providers/backwards-compatibility.js.map +1 -1
- package/internal/core/providers/gas-providers.js +1 -1
- package/internal/core/providers/gas-providers.js.map +1 -1
- package/internal/core/providers/http.js +5 -5
- package/internal/core/providers/http.js.map +1 -1
- package/internal/core/providers/wrapper.js +1 -1
- package/internal/core/providers/wrapper.js.map +1 -1
- package/internal/core/runtime-environment.js +1 -1
- package/internal/core/runtime-environment.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.js +3 -3
- package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.js +3 -3
- package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
- package/internal/hardhat-network/provider/BlockchainBase.js +1 -1
- package/internal/hardhat-network/provider/BlockchainBase.js.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.js +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/MiningTimer.js +1 -1
- package/internal/hardhat-network/provider/MiningTimer.js.map +1 -1
- package/internal/hardhat-network/provider/TransactionQueue.js +3 -3
- package/internal/hardhat-network/provider/TransactionQueue.js.map +1 -1
- package/internal/hardhat-network/provider/TxPool.js +1 -1
- package/internal/hardhat-network/provider/TxPool.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/modules/debug.js +1 -1
- package/internal/hardhat-network/provider/modules/debug.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +1 -1
- package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
- package/internal/hardhat-network/provider/modules/evm.js +1 -1
- package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.js +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
- package/internal/hardhat-network/provider/modules/net.js +1 -1
- package/internal/hardhat-network/provider/modules/net.js.map +1 -1
- package/internal/hardhat-network/provider/modules/personal.js +1 -1
- package/internal/hardhat-network/provider/modules/personal.js.map +1 -1
- package/internal/hardhat-network/provider/modules/web3.js +1 -1
- package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
- package/internal/hardhat-network/provider/node.js +3 -3
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/output.js +1 -1
- package/internal/hardhat-network/provider/output.js.map +1 -1
- package/internal/hardhat-network/provider/provider.js +1 -1
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/utils/assertions.js +1 -1
- package/internal/hardhat-network/provider/utils/assertions.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +1 -0
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js +9 -3
- package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
- package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js +1 -1
- package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js.map +1 -1
- package/internal/hardhat-network/stack-traces/compiler-to-model.js +1 -1
- package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +1 -0
- package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js +20 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
- package/internal/hardhat-network/stack-traces/constants.js +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/model.js +1 -1
- package/internal/hardhat-network/stack-traces/model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -2
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +2 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.js +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
- package/internal/solidity/parse.js +1 -1
- package/internal/solidity/parse.js.map +1 -1
- package/internal/solidity/resolver.js +2 -2
- package/internal/solidity/resolver.js.map +1 -1
- package/internal/util/caller-package.d.ts.map +1 -1
- package/internal/util/caller-package.js +5 -1
- package/internal/util/caller-package.js.map +1 -1
- package/internal/util/ci-detection.d.ts.map +1 -1
- package/internal/util/ci-detection.js +2 -2
- package/internal/util/ci-detection.js.map +1 -1
- package/internal/util/download.js +1 -1
- package/internal/util/download.js.map +1 -1
- package/internal/util/fs-utils.js +10 -10
- package/internal/util/fs-utils.js.map +1 -1
- package/internal/util/jsonrpc.js +1 -1
- package/internal/util/jsonrpc.js.map +1 -1
- package/internal/vendor/await-semaphore/index.js +1 -1
- package/internal/vendor/await-semaphore/index.js.map +1 -1
- package/package.json +9 -8
- package/sample-projects/javascript/hardhat.config.js +1 -1
- package/sample-projects/javascript-esm/hardhat.config.cjs +1 -1
- package/sample-projects/typescript/hardhat.config.ts +1 -1
- package/src/builtin-tasks/compile.ts +2 -2
- package/src/builtin-tasks/flatten.ts +1 -1
- package/src/builtin-tasks/node.ts +1 -1
- package/src/builtin-tasks/run.ts +1 -1
- package/src/internal/artifacts.ts +3 -11
- package/src/internal/cli/analytics.ts +5 -2
- package/src/internal/cli/bootstrap.ts +2 -2
- package/src/internal/cli/constants.ts +1 -0
- package/src/internal/cli/project-creation.ts +4 -4
- package/src/internal/cli/prompt.ts +2 -2
- package/src/internal/core/config/config-loading.ts +2 -2
- package/src/internal/core/jsonrpc/types/input/validation.ts +1 -1
- package/src/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.ts +1 -1
- package/src/internal/core/params/argumentTypes.ts +4 -4
- package/src/internal/core/params/env-variables.ts +1 -1
- package/src/internal/core/providers/backwards-compatibility.ts +1 -1
- package/src/internal/core/providers/gas-providers.ts +1 -1
- package/src/internal/core/providers/http.ts +5 -5
- package/src/internal/core/providers/wrapper.ts +1 -1
- package/src/internal/core/runtime-environment.ts +1 -1
- package/src/internal/hardhat-network/jsonrpc/client.ts +3 -3
- package/src/internal/hardhat-network/jsonrpc/handler.ts +3 -3
- package/src/internal/hardhat-network/provider/BlockchainBase.ts +1 -1
- package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +1 -1
- package/src/internal/hardhat-network/provider/MiningTimer.ts +1 -1
- package/src/internal/hardhat-network/provider/TransactionQueue.ts +3 -3
- package/src/internal/hardhat-network/provider/TxPool.ts +1 -1
- package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +1 -1
- package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/debug.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/eth.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/evm.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/hardhat.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/net.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/personal.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/web3.ts +1 -1
- package/src/internal/hardhat-network/provider/node.ts +3 -3
- package/src/internal/hardhat-network/provider/output.ts +1 -1
- package/src/internal/hardhat-network/provider/provider.ts +1 -1
- package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +1 -1
- package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +1 -1
- package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +1 -1
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +1 -1
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +1 -1
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +1 -1
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +1 -1
- package/src/internal/hardhat-network/provider/utils/assertions.ts +1 -1
- package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +11 -2
- package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +26 -1
- package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/model.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +4 -1
- package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +1 -1
- package/src/internal/solidity/parse.ts +1 -1
- package/src/internal/solidity/resolver.ts +2 -2
- package/src/internal/util/caller-package.ts +7 -1
- package/src/internal/util/ci-detection.ts +3 -1
- package/src/internal/util/download.ts +1 -1
- package/src/internal/util/fs-utils.ts +10 -10
- package/src/internal/util/jsonrpc.ts +1 -1
- package/src/internal/vendor/await-semaphore/index.ts +1 -1
- package/src/utils/source-names.ts +2 -2
- package/utils/source-names.js +2 -2
- package/utils/source-names.js.map +1 -1
package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts
CHANGED
|
@@ -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 @
|
|
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.
|
package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts
CHANGED
|
@@ -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 @
|
|
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 @
|
|
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.
|
package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts
CHANGED
|
@@ -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 @
|
|
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 @
|
|
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
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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
|
-
|
|
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.
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 (
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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
|
-
|
|
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
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 @
|
|
228
|
+
// eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
|
|
229
229
|
throw error;
|
|
230
230
|
}
|
|
231
231
|
}
|
package/utils/source-names.js
CHANGED
|
@@ -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 @
|
|
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 @
|
|
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":";;;;;;AAAA,gDAAwB;AAExB,oDAAuD;AACvD,8DAAsD;AACtD,wDAA+E;AAC/E,8DAA8D;AAE9D,MAAM,YAAY,GAAG,cAAc,CAAC;AAEpC;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,UAAkB;IACzD,IAAI,wBAAwB,CAAC,UAAU,CAAC,EAAE;QACxC,MAAM,IAAI,qBAAY,CACpB,oBAAM,CAAC,YAAY,CAAC,iCAAiC,EACrD;YACE,IAAI,EAAE,UAAU;SACjB,CACF,CAAC;KACH;IAED,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE;QACtC,MAAM,IAAI,qBAAY,CACpB,oBAAM,CAAC,YAAY,CAAC,iCAAiC,EACrD;YACE,IAAI,EAAE,UAAU;SACjB,CACF,CAAC;KACH;IAED,sEAAsE;IACtE,gCAAgC;IAChC,IAAI,kBAAkB,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;QACjD,MAAM,IAAI,qBAAY,CACpB,oBAAM,CAAC,YAAY,CAAC,+BAA+B,EACnD;YACE,IAAI,EAAE,UAAU;SACjB,CACF,CAAC;KACH;IAED,IAAI,mBAAmB,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;QAClD,MAAM,IAAI,qBAAY,CAAC,oBAAM,CAAC,YAAY,CAAC,6BAA6B,EAAE;YACxE,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;KACJ;AACH,CAAC;AAnCD,4DAmCC;AAED;;;;;GAKG;AACI,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,UAAkB;IAElB,sEAAsE;IACtE,4EAA4E;IAC5E,2CAA2C;IAC3C,4DAA4D;IAC5D,IACE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjC,UAAU,KAAK,qBAAqB,EACpC;QACA,OAAO,KAAK,CAAC;KACd;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,kBAAkB,GACtB,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAEvE,IAAI;QACF,MAAM,IAAA,0BAAe,EAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;KACxD;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,KAAK,YAAY,4BAAiB,EAAE;YACtC,OAAO,KAAK,CAAC;SACd;QAED,
|
|
1
|
+
{"version":3,"file":"source-names.js","sourceRoot":"","sources":["../src/utils/source-names.ts"],"names":[],"mappings":"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"}
|