@aztec/ethereum 3.0.0-canary.a9708bd → 3.0.0-devnet.20251212
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/dest/account.d.ts +1 -1
- package/dest/chain.d.ts +1 -1
- package/dest/client.d.ts +2 -2
- package/dest/client.d.ts.map +1 -1
- package/dest/config.d.ts +16 -8
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +160 -62
- package/dest/constants.d.ts +1 -1
- package/dest/contracts/empire_base.d.ts +7 -6
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/empire_base.js +1 -1
- package/dest/contracts/empire_slashing_proposer.d.ts +7 -6
- package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/empire_slashing_proposer.js +9 -3
- package/dest/contracts/errors.d.ts +1 -1
- package/dest/contracts/errors.d.ts.map +1 -1
- package/dest/contracts/fee_asset_handler.d.ts +4 -4
- package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
- package/dest/contracts/fee_juice.d.ts +1 -1
- package/dest/contracts/fee_juice.d.ts.map +1 -1
- package/dest/contracts/governance.d.ts +16 -16
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +7 -3
- package/dest/contracts/governance_proposer.d.ts +6 -6
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +9 -4
- package/dest/contracts/gse.d.ts +1 -1
- package/dest/contracts/gse.d.ts.map +1 -1
- package/dest/contracts/inbox.d.ts +1 -1
- package/dest/contracts/inbox.d.ts.map +1 -1
- package/dest/contracts/index.d.ts +1 -1
- package/dest/contracts/multicall.d.ts +5 -7
- package/dest/contracts/multicall.d.ts.map +1 -1
- package/dest/contracts/multicall.js +6 -4
- package/dest/contracts/registry.d.ts +1 -1
- package/dest/contracts/registry.d.ts.map +1 -1
- package/dest/contracts/rollup.d.ts +83 -72
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +144 -139
- package/dest/contracts/slasher_contract.d.ts +11 -1
- package/dest/contracts/slasher_contract.d.ts.map +1 -1
- package/dest/contracts/slasher_contract.js +18 -0
- package/dest/contracts/tally_slashing_proposer.d.ts +30 -9
- package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/tally_slashing_proposer.js +58 -8
- package/dest/contracts/utils.d.ts +1 -1
- package/dest/deploy_l1_contracts.d.ts +477 -15
- package/dest/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_l1_contracts.js +610 -386
- package/dest/eth-signer/eth-signer.d.ts +1 -1
- package/dest/eth-signer/index.d.ts +1 -1
- package/dest/forwarder_proxy.d.ts +32 -0
- package/dest/forwarder_proxy.d.ts.map +1 -0
- package/dest/forwarder_proxy.js +93 -0
- package/dest/l1_artifacts.d.ts +14258 -6015
- package/dest/l1_artifacts.d.ts.map +1 -1
- package/dest/l1_artifacts.js +10 -5
- package/dest/l1_contract_addresses.d.ts +8 -4
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +16 -26
- package/dest/l1_reader.d.ts +4 -2
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +14 -8
- package/dest/l1_tx_utils/config.d.ts +59 -0
- package/dest/l1_tx_utils/config.d.ts.map +1 -0
- package/dest/l1_tx_utils/config.js +96 -0
- package/dest/l1_tx_utils/constants.d.ts +6 -0
- package/dest/l1_tx_utils/constants.d.ts.map +1 -0
- package/dest/l1_tx_utils/constants.js +14 -0
- package/dest/l1_tx_utils/factory.d.ts +24 -0
- package/dest/l1_tx_utils/factory.d.ts.map +1 -0
- package/dest/l1_tx_utils/factory.js +12 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +48 -0
- package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
- package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
- package/dest/l1_tx_utils/index-blobs.js +2 -0
- package/dest/l1_tx_utils/index.d.ts +10 -0
- package/dest/l1_tx_utils/index.d.ts.map +1 -0
- package/dest/l1_tx_utils/index.js +10 -0
- package/dest/l1_tx_utils/interfaces.d.ts +76 -0
- package/dest/l1_tx_utils/interfaces.d.ts.map +1 -0
- package/dest/l1_tx_utils/interfaces.js +4 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts +94 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_tx_utils.js +623 -0
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +26 -0
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +26 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +94 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.js +431 -0
- package/dest/l1_tx_utils/signer.d.ts +4 -0
- package/dest/l1_tx_utils/signer.d.ts.map +1 -0
- package/dest/l1_tx_utils/signer.js +16 -0
- package/dest/l1_tx_utils/types.d.ts +67 -0
- package/dest/l1_tx_utils/types.d.ts.map +1 -0
- package/dest/l1_tx_utils/types.js +26 -0
- package/dest/l1_tx_utils/utils.d.ts +4 -0
- package/dest/l1_tx_utils/utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/utils.js +14 -0
- package/dest/l1_types.d.ts +1 -1
- package/dest/publisher_manager.d.ts +8 -3
- package/dest/publisher_manager.d.ts.map +1 -1
- package/dest/publisher_manager.js +36 -8
- package/dest/queries.d.ts +1 -1
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +13 -12
- package/dest/test/chain_monitor.d.ts +33 -19
- package/dest/test/chain_monitor.d.ts.map +1 -1
- package/dest/test/chain_monitor.js +100 -33
- package/dest/test/delayed_tx_utils.d.ts +3 -3
- package/dest/test/delayed_tx_utils.d.ts.map +1 -1
- package/dest/test/delayed_tx_utils.js +2 -2
- package/dest/test/eth_cheat_codes.d.ts +36 -14
- package/dest/test/eth_cheat_codes.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes.js +124 -31
- package/dest/test/eth_cheat_codes_with_state.d.ts +1 -1
- package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
- package/dest/test/index.d.ts +1 -1
- package/dest/test/rollup_cheat_codes.d.ts +23 -20
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
- package/dest/test/rollup_cheat_codes.js +79 -42
- package/dest/test/start_anvil.d.ts +2 -1
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/dest/test/start_anvil.js +2 -1
- package/dest/test/tx_delayer.d.ts +1 -1
- package/dest/test/tx_delayer.d.ts.map +1 -1
- package/dest/test/tx_delayer.js +3 -2
- package/dest/test/upgrade_utils.d.ts +1 -1
- package/dest/test/upgrade_utils.d.ts.map +1 -1
- package/dest/test/upgrade_utils.js +3 -2
- package/dest/types.d.ts +57 -2
- package/dest/types.d.ts.map +1 -1
- package/dest/utils.d.ts +2 -2
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +10 -161
- package/dest/zkPassportVerifierAddress.d.ts +1 -1
- package/dest/zkPassportVerifierAddress.js +1 -1
- package/package.json +27 -13
- package/src/client.ts +1 -1
- package/src/config.ts +177 -65
- package/src/contracts/empire_base.ts +7 -6
- package/src/contracts/empire_slashing_proposer.ts +18 -8
- package/src/contracts/fee_asset_handler.ts +1 -1
- package/src/contracts/governance.ts +3 -3
- package/src/contracts/governance_proposer.ts +14 -9
- package/src/contracts/multicall.ts +12 -10
- package/src/contracts/rollup.ts +170 -171
- package/src/contracts/slasher_contract.ts +22 -0
- package/src/contracts/tally_slashing_proposer.ts +63 -12
- package/src/deploy_l1_contracts.ts +610 -337
- package/src/forwarder_proxy.ts +108 -0
- package/src/l1_artifacts.ts +14 -6
- package/src/l1_contract_addresses.ts +17 -26
- package/src/l1_reader.ts +17 -9
- package/src/l1_tx_utils/README.md +177 -0
- package/src/l1_tx_utils/config.ts +161 -0
- package/src/l1_tx_utils/constants.ts +18 -0
- package/src/l1_tx_utils/factory.ts +64 -0
- package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +119 -0
- package/src/l1_tx_utils/index-blobs.ts +2 -0
- package/src/l1_tx_utils/index.ts +12 -0
- package/src/l1_tx_utils/interfaces.ts +86 -0
- package/src/l1_tx_utils/l1_tx_utils.ts +738 -0
- package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +77 -0
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +557 -0
- package/src/l1_tx_utils/signer.ts +28 -0
- package/src/l1_tx_utils/types.ts +85 -0
- package/src/l1_tx_utils/utils.ts +16 -0
- package/src/publisher_manager.ts +51 -9
- package/src/queries.ts +16 -8
- package/src/test/chain_monitor.ts +118 -36
- package/src/test/delayed_tx_utils.ts +2 -2
- package/src/test/eth_cheat_codes.ts +149 -30
- package/src/test/rollup_cheat_codes.ts +94 -52
- package/src/test/start_anvil.ts +2 -0
- package/src/test/tx_delayer.ts +4 -2
- package/src/test/upgrade_utils.ts +3 -2
- package/src/types.ts +62 -0
- package/src/utils.ts +12 -184
- package/src/zkPassportVerifierAddress.ts +1 -1
- package/dest/index.d.ts +0 -18
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -17
- package/dest/l1_tx_utils.d.ts +0 -250
- package/dest/l1_tx_utils.d.ts.map +0 -1
- package/dest/l1_tx_utils.js +0 -826
- package/dest/l1_tx_utils_with_blobs.d.ts +0 -19
- package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
- package/dest/l1_tx_utils_with_blobs.js +0 -85
- package/src/index.ts +0 -17
- package/src/l1_tx_utils.ts +0 -1105
- package/src/l1_tx_utils_with_blobs.ts +0 -144
|
@@ -1,30 +1,35 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
-
import type { TestDateProvider } from '@aztec/foundation/timer';
|
|
3
|
-
import { type Hex } from 'viem';
|
|
2
|
+
import type { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
|
|
3
|
+
import { type Chain, type Hex, type Transaction } from 'viem';
|
|
4
4
|
import type { ViemPublicClient } from '../types.js';
|
|
5
5
|
/**
|
|
6
6
|
* A class that provides utility functions for interacting with ethereum (L1).
|
|
7
7
|
*/
|
|
8
8
|
export declare class EthCheatCodes {
|
|
9
|
-
/**
|
|
10
|
-
* The RPC URL to use for interacting with the chain
|
|
11
|
-
*/
|
|
12
9
|
rpcUrls: string[];
|
|
13
|
-
|
|
14
|
-
* The logger to use for the eth cheatcodes
|
|
15
|
-
*/
|
|
10
|
+
dateProvider: DateProvider | TestDateProvider;
|
|
16
11
|
logger: import("@aztec/foundation/log").Logger;
|
|
12
|
+
chain: Chain;
|
|
17
13
|
readonly publicClient: ViemPublicClient;
|
|
18
14
|
constructor(
|
|
19
15
|
/**
|
|
20
16
|
* The RPC URL to use for interacting with the chain
|
|
21
17
|
*/
|
|
22
18
|
rpcUrls: string[],
|
|
19
|
+
/**
|
|
20
|
+
* The date provider to use for time operations
|
|
21
|
+
*/
|
|
22
|
+
dateProvider: DateProvider | TestDateProvider,
|
|
23
23
|
/**
|
|
24
24
|
* The logger to use for the eth cheatcodes
|
|
25
25
|
*/
|
|
26
|
-
logger?: import("@aztec/foundation/log").Logger
|
|
26
|
+
logger?: import("@aztec/foundation/log").Logger,
|
|
27
|
+
/**
|
|
28
|
+
* The chain configuration provided to Anvil
|
|
29
|
+
*/
|
|
30
|
+
chain?: Chain);
|
|
27
31
|
rpcCall(method: string, params: any[]): Promise<any>;
|
|
32
|
+
private doRpcCall;
|
|
28
33
|
/**
|
|
29
34
|
* Get the auto mine status of the underlying chain
|
|
30
35
|
* @returns True if automine is on, false otherwise
|
|
@@ -104,13 +109,12 @@ export declare class EthCheatCodes {
|
|
|
104
109
|
/**
|
|
105
110
|
* Set the next block timestamp and mines the block.
|
|
106
111
|
* Optionally resets interval mining so the next block is mined in `blockInterval` seconds from now.
|
|
107
|
-
*
|
|
112
|
+
* Always updates the injected date provider to follow L1 time.
|
|
108
113
|
* @param timestamp - The timestamp to set the next block to
|
|
109
114
|
*/
|
|
110
115
|
warp(timestamp: number | bigint, opts?: {
|
|
111
116
|
silent?: boolean;
|
|
112
117
|
resetBlockInterval?: boolean;
|
|
113
|
-
updateDateProvider?: TestDateProvider;
|
|
114
118
|
}): Promise<void>;
|
|
115
119
|
/**
|
|
116
120
|
* Load the value at a storage slot of a contract address on eth
|
|
@@ -125,7 +129,9 @@ export declare class EthCheatCodes {
|
|
|
125
129
|
* @param slot - The storage slot
|
|
126
130
|
* @param value - The value to set the storage slot to
|
|
127
131
|
*/
|
|
128
|
-
store(contract: EthAddress, slot: bigint, value: bigint
|
|
132
|
+
store(contract: EthAddress, slot: bigint, value: bigint, opts?: {
|
|
133
|
+
silent?: boolean;
|
|
134
|
+
}): Promise<void>;
|
|
129
135
|
/**
|
|
130
136
|
* Computes the slot value for a given map and key.
|
|
131
137
|
* @param baseSlot - The base slot of the map (specified in Aztec.nr contract)
|
|
@@ -190,6 +196,22 @@ export declare class EthCheatCodes {
|
|
|
190
196
|
value?: number | bigint;
|
|
191
197
|
})[][]): Promise<void>;
|
|
192
198
|
traceTransaction(txHash: Hex): Promise<any>;
|
|
193
|
-
|
|
199
|
+
getTxPoolStatus(): Promise<{
|
|
200
|
+
pending: number;
|
|
201
|
+
queued: number;
|
|
202
|
+
}>;
|
|
203
|
+
getTxPoolContents(): Promise<TxPoolTransaction[]>;
|
|
204
|
+
/**
|
|
205
|
+
* Mines an empty block by temporarily removing all pending transactions from the mempool,
|
|
206
|
+
* mining a block, and then re-adding the transactions back to the pool.
|
|
207
|
+
*/
|
|
208
|
+
mineEmptyBlock(blockCount?: number): Promise<void>;
|
|
209
|
+
execWithPausedAnvil<T>(fn: () => Promise<T>): Promise<T>;
|
|
210
|
+
syncDateProvider(): Promise<void>;
|
|
194
211
|
}
|
|
195
|
-
|
|
212
|
+
type TxPoolState = 'pending' | 'queued';
|
|
213
|
+
export type TxPoolTransaction = Transaction & {
|
|
214
|
+
poolState: TxPoolState;
|
|
215
|
+
};
|
|
216
|
+
export {};
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2NoZWF0X2NvZGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9ldGhfY2hlYXRfY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSTNELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLFdBQVcsRUFBbUQsTUFBTSxNQUFNLENBQUM7QUFHL0csT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxxQkFBYSxhQUFhO0lBTWYsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUlqQixZQUFZLEVBQUUsWUFBWSxHQUFHLGdCQUFnQjtJQUk3QyxNQUFNO0lBSU4sS0FBSyxFQUFFLEtBQUs7SUFqQnJCLFNBQWdCLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQztJQUMvQztJQUNFOztPQUVHO0lBQ0ksT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN4Qjs7T0FFRztJQUNJLFlBQVksRUFBRSxZQUFZLEdBQUcsZ0JBQWdCO0lBQ3BEOztPQUVHO0lBQ0ksTUFBTSx5Q0FBdUM7SUFDcEQ7O09BRUc7SUFDSSxLQUFLLEdBQUUsS0FBZSxFQU05QjtJQUVNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsZ0JBRzNDO1lBRWEsU0FBUztJQU92Qjs7O09BR0c7SUFDVSxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVE1QztJQUVEOzs7T0FHRztJQUNVLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRzFDO0lBRUQ7OztPQUdHO0lBQ1UsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FHdEM7SUFFRDs7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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"eth_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
import { toBigIntBE, toHex } from '@aztec/foundation/bigint-buffer';
|
|
2
|
-
import { keccak256 } from '@aztec/foundation/crypto';
|
|
2
|
+
import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
3
3
|
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
-
import {
|
|
5
|
+
import { pluralize } from '@aztec/foundation/string';
|
|
6
|
+
import { createPublicClient, fallback, hexToNumber, http } from 'viem';
|
|
7
|
+
import { foundry } from 'viem/chains';
|
|
6
8
|
/**
|
|
7
9
|
* A class that provides utility functions for interacting with ethereum (L1).
|
|
8
10
|
*/ export class EthCheatCodes {
|
|
9
11
|
rpcUrls;
|
|
12
|
+
dateProvider;
|
|
10
13
|
logger;
|
|
14
|
+
chain;
|
|
11
15
|
publicClient;
|
|
12
16
|
constructor(/**
|
|
13
17
|
* The RPC URL to use for interacting with the chain
|
|
14
18
|
*/ rpcUrls, /**
|
|
19
|
+
* The date provider to use for time operations
|
|
20
|
+
*/ dateProvider, /**
|
|
15
21
|
* The logger to use for the eth cheatcodes
|
|
16
|
-
*/ logger = createLogger('ethereum:cheat_codes')
|
|
22
|
+
*/ logger = createLogger('ethereum:cheat_codes'), /**
|
|
23
|
+
* The chain configuration provided to Anvil
|
|
24
|
+
*/ chain = foundry){
|
|
17
25
|
this.rpcUrls = rpcUrls;
|
|
26
|
+
this.dateProvider = dateProvider;
|
|
18
27
|
this.logger = logger;
|
|
28
|
+
this.chain = chain;
|
|
19
29
|
this.publicClient = createPublicClient({
|
|
20
|
-
transport: fallback(this.rpcUrls.map((url)=>http(url)))
|
|
30
|
+
transport: fallback(this.rpcUrls.map((url)=>http(url))),
|
|
31
|
+
chain: chain
|
|
21
32
|
});
|
|
22
33
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
this.
|
|
34
|
+
rpcCall(method, params) {
|
|
35
|
+
this.logger.debug(`Calling ${method} with params: ${jsonStringify(params)} on ${this.rpcUrls.join(', ')}`);
|
|
36
|
+
return this.doRpcCall(method, params);
|
|
37
|
+
}
|
|
38
|
+
async doRpcCall(method, params) {
|
|
26
39
|
return await this.publicClient.transport.request({
|
|
27
40
|
method,
|
|
28
41
|
params
|
|
@@ -33,7 +46,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
33
46
|
* @returns True if automine is on, false otherwise
|
|
34
47
|
*/ async isAutoMining() {
|
|
35
48
|
try {
|
|
36
|
-
const res = await this.
|
|
49
|
+
const res = await this.doRpcCall('anvil_getAutomine', []);
|
|
37
50
|
return res;
|
|
38
51
|
} catch (err) {
|
|
39
52
|
this.logger.error(`Calling "anvil_getAutomine" failed with:`, err);
|
|
@@ -44,21 +57,21 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
44
57
|
* Get the current blocknumber
|
|
45
58
|
* @returns The current block number
|
|
46
59
|
*/ async blockNumber() {
|
|
47
|
-
const res = await this.
|
|
60
|
+
const res = await this.doRpcCall('eth_blockNumber', []);
|
|
48
61
|
return parseInt(res, 16);
|
|
49
62
|
}
|
|
50
63
|
/**
|
|
51
64
|
* Get the current chainId
|
|
52
65
|
* @returns The current chainId
|
|
53
66
|
*/ async chainId() {
|
|
54
|
-
const res = await this.
|
|
67
|
+
const res = await this.doRpcCall('eth_chainId', []);
|
|
55
68
|
return parseInt(res, 16);
|
|
56
69
|
}
|
|
57
70
|
/**
|
|
58
71
|
* Get the current timestamp
|
|
59
72
|
* @returns The current timestamp
|
|
60
73
|
*/ async timestamp() {
|
|
61
|
-
const res = await this.
|
|
74
|
+
const res = await this.doRpcCall('eth_getBlockByNumber', [
|
|
62
75
|
'latest',
|
|
63
76
|
true
|
|
64
77
|
]);
|
|
@@ -73,7 +86,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
73
86
|
}
|
|
74
87
|
async doMine(numberOfBlocks = 1) {
|
|
75
88
|
try {
|
|
76
|
-
await this.
|
|
89
|
+
await this.doRpcCall('hardhat_mine', [
|
|
77
90
|
numberOfBlocks
|
|
78
91
|
]);
|
|
79
92
|
} catch (err) {
|
|
@@ -84,7 +97,8 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
84
97
|
* Mines a single block with evm_mine
|
|
85
98
|
*/ async evmMine() {
|
|
86
99
|
try {
|
|
87
|
-
await this.
|
|
100
|
+
await this.doRpcCall('evm_mine', []);
|
|
101
|
+
this.logger.warn(`Mined 1 L1 block with evm_mine`);
|
|
88
102
|
} catch (err) {
|
|
89
103
|
throw new Error(`Error mining: ${err}`);
|
|
90
104
|
}
|
|
@@ -105,7 +119,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
105
119
|
this.logger.warn(`Set balance for ${account} to ${balance}`);
|
|
106
120
|
}
|
|
107
121
|
async getBalance(account) {
|
|
108
|
-
const res = await this.
|
|
122
|
+
const res = await this.doRpcCall('eth_getBalance', [
|
|
109
123
|
account.toString(),
|
|
110
124
|
'latest'
|
|
111
125
|
]);
|
|
@@ -142,7 +156,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
142
156
|
* @param seconds - The interval to use between blocks
|
|
143
157
|
*/ getIntervalMining() {
|
|
144
158
|
try {
|
|
145
|
-
return this.
|
|
159
|
+
return this.doRpcCall('anvil_getIntervalMining', []);
|
|
146
160
|
} catch (err) {
|
|
147
161
|
throw new Error(`Error getting interval mining: ${err}`);
|
|
148
162
|
}
|
|
@@ -206,7 +220,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
206
220
|
/**
|
|
207
221
|
* Set the next block timestamp and mines the block.
|
|
208
222
|
* Optionally resets interval mining so the next block is mined in `blockInterval` seconds from now.
|
|
209
|
-
*
|
|
223
|
+
* Always updates the injected date provider to follow L1 time.
|
|
210
224
|
* @param timestamp - The timestamp to set the next block to
|
|
211
225
|
*/ async warp(timestamp, opts = {}) {
|
|
212
226
|
let blockInterval = null;
|
|
@@ -226,8 +240,10 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
226
240
|
]);
|
|
227
241
|
// And mine a block so the timestamp goes into effect now
|
|
228
242
|
await this.doMine();
|
|
229
|
-
// Update the date provider
|
|
230
|
-
|
|
243
|
+
// Update the injected date provider so it follows L1 time
|
|
244
|
+
if ('setTime' in this.dateProvider) {
|
|
245
|
+
this.dateProvider.setTime(Number(timestamp) * 1000);
|
|
246
|
+
}
|
|
231
247
|
} catch (err) {
|
|
232
248
|
throw new Error(`Error warping: ${err}`);
|
|
233
249
|
} finally{
|
|
@@ -260,7 +276,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
260
276
|
* @param contract - The contract address
|
|
261
277
|
* @param slot - The storage slot
|
|
262
278
|
* @param value - The value to set the storage slot to
|
|
263
|
-
*/ async store(contract, slot, value) {
|
|
279
|
+
*/ async store(contract, slot, value, opts = {}) {
|
|
264
280
|
// for the rpc call, we need to change value to be a 32 byte hex string.
|
|
265
281
|
try {
|
|
266
282
|
await this.rpcCall('hardhat_setStorageAt', [
|
|
@@ -271,7 +287,9 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
271
287
|
} catch (err) {
|
|
272
288
|
throw new Error(`Error setting storage for contract ${contract} at ${slot}: ${err}`);
|
|
273
289
|
}
|
|
274
|
-
|
|
290
|
+
if (!opts.silent) {
|
|
291
|
+
this.logger.warn(`Set L1 storage for contract ${contract} at ${slot} to ${value}`);
|
|
292
|
+
}
|
|
275
293
|
}
|
|
276
294
|
/**
|
|
277
295
|
* Computes the slot value for a given map and key.
|
|
@@ -333,31 +351,28 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
333
351
|
* @param contract - The contract address
|
|
334
352
|
* @returns The bytecode for the contract
|
|
335
353
|
*/ async getBytecode(contract) {
|
|
336
|
-
|
|
354
|
+
return await this.doRpcCall('eth_getCode', [
|
|
337
355
|
contract.toString(),
|
|
338
356
|
'latest'
|
|
339
357
|
]);
|
|
340
|
-
return res;
|
|
341
358
|
}
|
|
342
359
|
/**
|
|
343
360
|
* Get the raw transaction object for a given transaction hash
|
|
344
361
|
* @param txHash - The transaction hash
|
|
345
362
|
* @returns The raw transaction
|
|
346
363
|
*/ async getRawTransaction(txHash) {
|
|
347
|
-
|
|
364
|
+
return await this.doRpcCall('debug_getRawTransaction', [
|
|
348
365
|
txHash
|
|
349
366
|
]);
|
|
350
|
-
return res;
|
|
351
367
|
}
|
|
352
368
|
/**
|
|
353
369
|
* Get the trace for a given transaction hash
|
|
354
370
|
* @param txHash - The transaction hash
|
|
355
371
|
* @returns The trace
|
|
356
372
|
*/ async debugTraceTransaction(txHash) {
|
|
357
|
-
|
|
373
|
+
return await this.doRpcCall('debug_traceTransaction', [
|
|
358
374
|
txHash
|
|
359
375
|
]);
|
|
360
|
-
return res;
|
|
361
376
|
}
|
|
362
377
|
/**
|
|
363
378
|
* Triggers a reorg of the given depth, removing those blocks from the chain.
|
|
@@ -373,9 +388,6 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
373
388
|
* Causes Anvil to reorg until the given block number is the new tip
|
|
374
389
|
* @param blockNumber - The block number that's going to be the new tip
|
|
375
390
|
*/ reorgTo(blockNumber) {
|
|
376
|
-
this.logger.info('reorgTo', {
|
|
377
|
-
blockNumber
|
|
378
|
-
});
|
|
379
391
|
if (blockNumber <= 0) {
|
|
380
392
|
throw new Error(`Can't reorg to block before genesis: ${blockNumber}`);
|
|
381
393
|
}
|
|
@@ -389,6 +401,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
389
401
|
await this.rpcCall('anvil_rollback', [
|
|
390
402
|
depth
|
|
391
403
|
]);
|
|
404
|
+
this.logger.warn(`Reorged L1 chain to block number ${blockNumber} (depth ${depth})`);
|
|
392
405
|
});
|
|
393
406
|
}
|
|
394
407
|
/**
|
|
@@ -418,10 +431,68 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
418
431
|
});
|
|
419
432
|
}
|
|
420
433
|
traceTransaction(txHash) {
|
|
421
|
-
return this.
|
|
434
|
+
return this.doRpcCall('trace_transaction', [
|
|
422
435
|
txHash
|
|
423
436
|
]);
|
|
424
437
|
}
|
|
438
|
+
async getTxPoolStatus() {
|
|
439
|
+
const { pending, queued } = await this.doRpcCall('txpool_status', []);
|
|
440
|
+
return {
|
|
441
|
+
pending: hexToNumber(pending),
|
|
442
|
+
queued: hexToNumber(queued)
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
async getTxPoolContents() {
|
|
446
|
+
const txpoolContent = await this.doRpcCall('txpool_content', []);
|
|
447
|
+
return mapTxPoolContent(txpoolContent);
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Mines an empty block by temporarily removing all pending transactions from the mempool,
|
|
451
|
+
* mining a block, and then re-adding the transactions back to the pool.
|
|
452
|
+
*/ async mineEmptyBlock(blockCount = 1) {
|
|
453
|
+
await this.execWithPausedAnvil(async ()=>{
|
|
454
|
+
// Get all pending and queued transactions from the pool
|
|
455
|
+
const txs = await this.getTxPoolContents();
|
|
456
|
+
this.logger.debug(`Found ${txs.length} transactions in pool`);
|
|
457
|
+
// Get raw transactions before dropping them
|
|
458
|
+
const rawTxs = [];
|
|
459
|
+
for (const tx of txs){
|
|
460
|
+
try {
|
|
461
|
+
const rawTx = await this.doRpcCall('debug_getRawTransaction', [
|
|
462
|
+
tx.hash
|
|
463
|
+
]);
|
|
464
|
+
if (rawTx) {
|
|
465
|
+
rawTxs.push(rawTx);
|
|
466
|
+
this.logger.debug(`Got raw tx for ${tx.hash}`);
|
|
467
|
+
} else {
|
|
468
|
+
this.logger.warn(`No raw tx found for ${tx.hash}`);
|
|
469
|
+
}
|
|
470
|
+
} catch {
|
|
471
|
+
this.logger.warn(`Failed to get raw transaction for ${tx.hash}`);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
this.logger.debug(`Retrieved ${rawTxs.length} raw transactions`);
|
|
475
|
+
// Drop all transactions from the mempool
|
|
476
|
+
await this.doRpcCall('anvil_dropAllTransactions', []);
|
|
477
|
+
// Mine an empty block
|
|
478
|
+
await this.doMine(blockCount);
|
|
479
|
+
// Re-add the transactions to the pool
|
|
480
|
+
for (const rawTx of rawTxs){
|
|
481
|
+
try {
|
|
482
|
+
const txHash = await this.doRpcCall('eth_sendRawTransaction', [
|
|
483
|
+
rawTx
|
|
484
|
+
]);
|
|
485
|
+
this.logger.debug(`Re-added transaction ${txHash}`);
|
|
486
|
+
} catch (err) {
|
|
487
|
+
this.logger.warn(`Failed to re-add transaction: ${err}`);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
if (rawTxs.length !== txs.length) {
|
|
491
|
+
this.logger.warn(`Failed to add all txs back: had ${txs.length} but re-added ${rawTxs.length}`);
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
this.logger.warn(`Mined ${blockCount} empty L1 ${pluralize('block', blockCount)}`);
|
|
495
|
+
}
|
|
425
496
|
async execWithPausedAnvil(fn) {
|
|
426
497
|
const [blockInterval, wasAutoMining] = await Promise.all([
|
|
427
498
|
this.getIntervalMining(),
|
|
@@ -438,7 +509,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
438
509
|
silent: true
|
|
439
510
|
});
|
|
440
511
|
}
|
|
441
|
-
await fn();
|
|
512
|
+
return await fn();
|
|
442
513
|
} finally{
|
|
443
514
|
try {
|
|
444
515
|
// restore automine if necessary
|
|
@@ -462,4 +533,26 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
462
533
|
}
|
|
463
534
|
}
|
|
464
535
|
}
|
|
536
|
+
async syncDateProvider() {
|
|
537
|
+
const timestamp = await this.timestamp();
|
|
538
|
+
if ('setTime' in this.dateProvider) {
|
|
539
|
+
this.dateProvider.setTime(timestamp * 1000);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
function mapTxPoolContent(content) {
|
|
544
|
+
const result = [];
|
|
545
|
+
const processPool = (pool, poolState)=>{
|
|
546
|
+
for (const txsByNonce of Object.values(pool)){
|
|
547
|
+
for (const tx of Object.values(txsByNonce)){
|
|
548
|
+
result.push({
|
|
549
|
+
...tx,
|
|
550
|
+
poolState
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
};
|
|
555
|
+
processPool(content.pending, 'pending');
|
|
556
|
+
processPool(content.queued, 'queued');
|
|
557
|
+
return result;
|
|
465
558
|
}
|
|
@@ -15,4 +15,4 @@ export declare class EthCheatCodesWithState extends EthCheatCodes {
|
|
|
15
15
|
*/
|
|
16
16
|
loadChainState(fileName: string): Promise<void>;
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2NoZWF0X2NvZGVzX3dpdGhfc3RhdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2V0aF9jaGVhdF9jb2Rlc193aXRoX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRDs7O0dBR0c7QUFDSCxxQkFBYSxzQkFBdUIsU0FBUSxhQUFhO0lBQ3ZEOzs7T0FHRztJQUNVLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FTM0Q7SUFFRDs7O09BR0c7SUFDVSxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBUTNEO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_cheat_codes_with_state.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes_with_state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"eth_cheat_codes_with_state.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes_with_state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3D;IAED;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3D;CACF"}
|
package/dest/test/index.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export * from './tx_delayer.js';
|
|
|
6
6
|
export * from './upgrade_utils.js';
|
|
7
7
|
export * from './chain_monitor.js';
|
|
8
8
|
export * from './rollup_cheat_codes.js';
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQyJ9
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { type ViemPublicClient } from '@aztec/ethereum';
|
|
2
1
|
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
3
|
-
import type {
|
|
2
|
+
import type { ViemPublicClient } from '@aztec/ethereum/types';
|
|
3
|
+
import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import type { DateProvider } from '@aztec/foundation/timer';
|
|
4
5
|
import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi';
|
|
5
6
|
import { type GetContractReturnType, type Hex } from 'viem';
|
|
6
7
|
import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
@@ -11,18 +12,18 @@ export declare class RollupCheatCodes {
|
|
|
11
12
|
private rollup;
|
|
12
13
|
private logger;
|
|
13
14
|
constructor(ethCheatCodes: EthCheatCodes, addresses: Pick<L1ContractAddresses, 'rollupAddress'>);
|
|
14
|
-
static create(rpcUrls: string[], addresses: Pick<L1ContractAddresses, 'rollupAddress'
|
|
15
|
+
static create(rpcUrls: string[], addresses: Pick<L1ContractAddresses, 'rollupAddress'>, dateProvider: DateProvider): RollupCheatCodes;
|
|
15
16
|
/** Returns the current slot */
|
|
16
|
-
getSlot(): Promise<
|
|
17
|
+
getSlot(): Promise<SlotNumber>;
|
|
17
18
|
/** Returns the current epoch */
|
|
18
|
-
getEpoch(): Promise<
|
|
19
|
+
getEpoch(): Promise<EpochNumber>;
|
|
19
20
|
/**
|
|
20
21
|
* Returns the pending and proven chain tips
|
|
21
22
|
* @returns The pending and proven chain tips
|
|
22
23
|
*/
|
|
23
24
|
getTips(): Promise<{
|
|
24
|
-
/** The pending chain tip */ pending:
|
|
25
|
-
/** The proven chain tip */ proven:
|
|
25
|
+
/** The pending chain tip */ pending: CheckpointNumber;
|
|
26
|
+
/** The proven chain tip */ proven: CheckpointNumber;
|
|
26
27
|
}>;
|
|
27
28
|
/**
|
|
28
29
|
* Logs the current state of the rollup contract.
|
|
@@ -31,34 +32,36 @@ export declare class RollupCheatCodes {
|
|
|
31
32
|
/** Fetches the epoch and slot duration config from the rollup contract */
|
|
32
33
|
getConfig(): Promise<{
|
|
33
34
|
/** Epoch duration */ epochDuration: bigint;
|
|
34
|
-
/** Slot duration */ slotDuration:
|
|
35
|
+
/** Slot duration */ slotDuration: number;
|
|
35
36
|
}>;
|
|
36
37
|
/**
|
|
37
38
|
* Advances time to the beginning of the given epoch
|
|
38
39
|
* @param epoch - The epoch to advance to
|
|
39
40
|
* @param opts - Options
|
|
40
41
|
*/
|
|
41
|
-
advanceToEpoch(epoch:
|
|
42
|
-
/**
|
|
43
|
-
|
|
42
|
+
advanceToEpoch(epoch: EpochNumber, opts?: {
|
|
43
|
+
/** Offset in seconds */
|
|
44
|
+
offset?: number;
|
|
44
45
|
}): Promise<bigint>;
|
|
45
46
|
/** Warps time in L1 until the next epoch */
|
|
46
|
-
advanceToNextEpoch(
|
|
47
|
-
/** Optional test date provider to update with the epoch timestamp */
|
|
48
|
-
updateDateProvider?: TestDateProvider;
|
|
49
|
-
}): Promise<void>;
|
|
47
|
+
advanceToNextEpoch(): Promise<void>;
|
|
50
48
|
/** Warps time in L1 until the beginning of the next slot. */
|
|
51
|
-
advanceToNextSlot(): Promise<bigint[]>;
|
|
49
|
+
advanceToNextSlot(): Promise<(bigint | SlotNumber)[]>;
|
|
52
50
|
/**
|
|
53
51
|
* Warps time in L1 equivalent to however many slots.
|
|
54
52
|
* @param howMany - The number of slots to advance.
|
|
55
53
|
*/
|
|
56
54
|
advanceSlots(howMany: number): Promise<void>;
|
|
57
55
|
/**
|
|
58
|
-
* Marks the specified
|
|
59
|
-
* @param
|
|
56
|
+
* Marks the specified checkpoint (or latest if none) as proven
|
|
57
|
+
* @param maybeCheckpointNumber - The checkpoint number to mark as proven (defaults to latest pending)
|
|
60
58
|
*/
|
|
61
|
-
markAsProven(
|
|
59
|
+
markAsProven(maybeCheckpointNumber?: number | bigint): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Overrides the inProgress field of the Inbox contract state
|
|
62
|
+
* @param howMuch - How many checkpoints to move it forward
|
|
63
|
+
*/
|
|
64
|
+
advanceInboxInProgress(howMuch: number | bigint): Promise<bigint>;
|
|
62
65
|
/**
|
|
63
66
|
* Executes an action impersonated as the owner of the Rollup contract.
|
|
64
67
|
* @param action - The action to execute
|
|
@@ -81,4 +84,4 @@ export declare class RollupCheatCodes {
|
|
|
81
84
|
*/
|
|
82
85
|
setProvingCostPerMana(ethValue: bigint): Promise<void>;
|
|
83
86
|
}
|
|
84
|
-
//# sourceMappingURL=
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwX2NoZWF0X2NvZGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9yb2xsdXBfY2hlYXRfY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHNUYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFELE9BQU8sRUFDTCxLQUFLLHFCQUFxQixFQUMxQixLQUFLLEdBQUcsRUFNVCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCw4Q0FBOEM7QUFDOUMscUJBQWEsZ0JBQWdCO0lBT3pCLE9BQU8sQ0FBQyxhQUFhO0lBTnZCLE9BQU8sQ0FBQyxNQUFNLENBQW1CO0lBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQTREO0lBRTFFLE9BQU8sQ0FBQyxNQUFNLENBQXVDO0lBRXJELFlBQ1UsYUFBYSxFQUFFLGFBQWEsRUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFXdEQ7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUNYLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFDckQsWUFBWSxFQUFFLFlBQVksR0FDekIsZ0JBQWdCLENBR2xCO0lBRUQsK0JBQStCO0lBQ2xCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRzFDO0lBRUQsZ0NBQWdDO0lBQ25CLFFBQVEsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRzVDO0lBRUQ7OztPQUdHO0lBQ1UsT0FBTyxJQUFJLE9BQU8sQ0FBQztRQUM5Qiw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7UUFDdkQsMkJBQTJCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDO0tBQ3RELENBQUMsQ0FNRDtJQUVEOztPQUVHO0lBQ1UsV0FBVyxrQkFpQnZCO0lBRUQsMEVBQTBFO0lBQzdELFNBQVMsSUFBSSxPQUFPLENBQUM7UUFDaEMscUJBQXFCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztRQUM1QyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO0tBQzNDLENBQUMsQ0FNRDtJQUVEOzs7O09BSUc7SUFDVSxjQUFjLENBQ3pCLEtBQUssRUFBRSxXQUFXLEVBQ2xCLElBQUksR0FBRTtRQUNKLHdCQUF3QjtRQUN4QixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDWixtQkFZUDtJQUVELDRDQUE0QztJQUMvQixrQkFBa0Isa0JBVzlCO0lBRUQsNkRBQTZEO0lBQ2hELGlCQUFpQixxQ0FPN0I7SUFFRDs7O09BR0c7SUFDVSxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0saUJBT3hDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0saUJBK0IxRDtJQUVEOzs7T0FHRztJQUNJLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FtQ3ZFO0lBRUQ7OztPQUdHO0lBQ1UsT0FBTyxDQUNsQixNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBTXpHO0lBRUQ7O09BRUc7SUFDVSxVQUFVLGtCQU90QjtJQUVELDRDQUE0QztJQUMvQixvQkFBb0Isa0JBTWhDO0lBRUQ7OztPQUdHO0lBQ1Usc0JBQXNCLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLGlCQUlyRTtJQUVEOzs7T0FHRztJQUNVLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLGlCQVVsRDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/rollup_cheat_codes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rollup_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/rollup_cheat_codes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,GAAG,EAMT,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,8CAA8C;AAC9C,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,aAAa;IANvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAA4D;IAE1E,OAAO,CAAC,MAAM,CAAuC;IAErD,YACU,aAAa,EAAE,aAAa,EACpC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,EAWtD;IAED,MAAM,CAAC,MAAM,CACX,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,EACrD,YAAY,EAAE,YAAY,GACzB,gBAAgB,CAGlB;IAED,+BAA+B;IAClB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAG1C;IAED,gCAAgC;IACnB,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAG5C;IAED;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC;QAC9B,4BAA4B,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACvD,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,CAAC;KACtD,CAAC,CAMD;IAED;;OAEG;IACU,WAAW,kBAiBvB;IAED,0EAA0E;IAC7D,SAAS,IAAI,OAAO,CAAC;QAChC,qBAAqB,CAAC,aAAa,EAAE,MAAM,CAAC;QAC5C,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC;KAC3C,CAAC,CAMD;IAED;;;;OAIG;IACU,cAAc,CACzB,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE;QACJ,wBAAwB;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,mBAYP;IAED,4CAA4C;IAC/B,kBAAkB,kBAW9B;IAED,6DAA6D;IAChD,iBAAiB,qCAO7B;IAED;;;OAGG;IACU,YAAY,CAAC,OAAO,EAAE,MAAM,iBAOxC;IAED;;;OAGG;IACI,YAAY,CAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM,iBA+B1D;IAED;;;OAGG;IACI,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCvE;IAED;;;OAGG;IACU,OAAO,CAClB,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,iBAMzG;IAED;;OAEG;IACU,UAAU,kBAOtB;IAED,4CAA4C;IAC/B,oBAAoB,kBAMhC;IAED;;;OAGG;IACU,sBAAsB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,iBAIrE;IAED;;;OAGG;IACU,qBAAqB,CAAC,QAAQ,EAAE,MAAM,iBAUlD;CACF"}
|