@aztec/p2p 0.72.1 → 0.74.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/dest/bootstrap/bootstrap.d.ts +2 -2
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +1 -1
- package/dest/client/factory.d.ts +2 -2
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +4 -4
- package/dest/client/p2p_client.d.ts +13 -16
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +50 -62
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +11 -19
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +6 -13
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +74 -80
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +5 -5
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +3 -3
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +9 -9
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +59 -53
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +7 -7
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +17 -18
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +7 -7
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +48 -47
- package/dest/mocks/index.js +3 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.js +2 -2
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +2 -2
- package/dest/msg_validators/tx_validator/block_header_validator.js +3 -3
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +7 -7
- package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -3
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +9 -9
- package/dest/services/data_store.d.ts +4 -4
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +7 -7
- package/dest/services/libp2p/libp2p_service.d.ts +3 -3
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +56 -35
- package/dest/services/peer-manager/peer_manager.d.ts +1 -0
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +6 -3
- package/dest/services/reqresp/protocols/tx.js +4 -4
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +2 -2
- package/dest/util.d.ts +2 -2
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +2 -2
- package/package.json +7 -7
- package/src/bootstrap/bootstrap.ts +2 -2
- package/src/client/factory.ts +5 -5
- package/src/client/p2p_client.ts +63 -75
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +14 -22
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +100 -94
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +4 -4
- package/src/mem_pools/attestation_pool/mocks.ts +3 -3
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +84 -72
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +26 -23
- package/src/mem_pools/tx_pool/tx_pool.ts +7 -7
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +50 -47
- package/src/mocks/index.ts +2 -2
- package/src/msg_validators/attestation_validator/attestation_validator.ts +1 -1
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +1 -1
- package/src/msg_validators/tx_validator/block_header_validator.ts +2 -2
- package/src/msg_validators/tx_validator/data_validator.ts +12 -9
- package/src/msg_validators/tx_validator/double_spend_validator.ts +2 -2
- package/src/msg_validators/tx_validator/metadata_validator.ts +8 -8
- package/src/services/data_store.ts +9 -9
- package/src/services/libp2p/libp2p_service.ts +70 -36
- package/src/services/peer-manager/peer_manager.ts +7 -2
- package/src/services/reqresp/protocols/tx.ts +3 -3
- package/src/services/reqresp/reqresp.ts +7 -1
- package/src/util.ts +7 -4
|
@@ -2,6 +2,7 @@ var _AztecKVTxPool_store, _AztecKVTxPool_txs, _AztecKVTxPool_minedTxHashToBlock,
|
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { Tx, TxHash } from '@aztec/circuit-types';
|
|
4
4
|
import { ClientIvcProof } from '@aztec/circuits.js';
|
|
5
|
+
import { toArray } from '@aztec/foundation/iterable';
|
|
5
6
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
7
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
7
8
|
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
@@ -52,15 +53,15 @@ export class AztecKVTxPool {
|
|
|
52
53
|
return Promise.resolve();
|
|
53
54
|
}
|
|
54
55
|
let deletedPending = 0;
|
|
55
|
-
return __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").
|
|
56
|
+
return __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").transactionAsync(async () => {
|
|
56
57
|
for (const hash of txHashes) {
|
|
57
58
|
const key = hash.toString();
|
|
58
|
-
|
|
59
|
-
const tx = this.getTxByHash(hash);
|
|
59
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_minedTxHashToBlock, "f").set(key, blockNumber);
|
|
60
|
+
const tx = await this.getTxByHash(hash);
|
|
60
61
|
if (tx) {
|
|
61
62
|
deletedPending++;
|
|
62
63
|
const fee = getPendingTxPriority(tx);
|
|
63
|
-
|
|
64
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_pendingTxPriorityToHash, "f").deleteValue(fee, key);
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
__classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordAddedObjects(txHashes.length, 'mined');
|
|
@@ -72,13 +73,13 @@ export class AztecKVTxPool {
|
|
|
72
73
|
return Promise.resolve();
|
|
73
74
|
}
|
|
74
75
|
let markedAsPending = 0;
|
|
75
|
-
return __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").
|
|
76
|
+
return __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").transactionAsync(async () => {
|
|
76
77
|
for (const hash of txHashes) {
|
|
77
78
|
const key = hash.toString();
|
|
78
|
-
|
|
79
|
-
const tx = this.getTxByHash(hash);
|
|
79
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_minedTxHashToBlock, "f").delete(key);
|
|
80
|
+
const tx = await this.getTxByHash(hash);
|
|
80
81
|
if (tx) {
|
|
81
|
-
|
|
82
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_pendingTxPriorityToHash, "f").set(getPendingTxPriority(tx), key);
|
|
82
83
|
markedAsPending++;
|
|
83
84
|
}
|
|
84
85
|
}
|
|
@@ -86,21 +87,21 @@ export class AztecKVTxPool {
|
|
|
86
87
|
__classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordRemovedObjects(markedAsPending, 'mined');
|
|
87
88
|
});
|
|
88
89
|
}
|
|
89
|
-
getPendingTxHashes() {
|
|
90
|
-
|
|
90
|
+
async getPendingTxHashes() {
|
|
91
|
+
const vals = await toArray(__classPrivateFieldGet(this, _AztecKVTxPool_pendingTxPriorityToHash, "f").valuesAsync({ reverse: true }));
|
|
92
|
+
return vals.map(x => TxHash.fromString(x));
|
|
91
93
|
}
|
|
92
|
-
getMinedTxHashes() {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
blockNumber,
|
|
96
|
-
]);
|
|
94
|
+
async getMinedTxHashes() {
|
|
95
|
+
const vals = await toArray(__classPrivateFieldGet(this, _AztecKVTxPool_minedTxHashToBlock, "f").entriesAsync());
|
|
96
|
+
return vals.map(([txHash, blockNumber]) => [TxHash.fromString(txHash), blockNumber]);
|
|
97
97
|
}
|
|
98
|
-
getTxStatus(txHash) {
|
|
98
|
+
async getTxStatus(txHash) {
|
|
99
99
|
const key = txHash.toString();
|
|
100
|
-
|
|
100
|
+
const [isMined, isKnown] = await Promise.all([__classPrivateFieldGet(this, _AztecKVTxPool_minedTxHashToBlock, "f").hasAsync(key), __classPrivateFieldGet(this, _AztecKVTxPool_txs, "f").hasAsync(key)]);
|
|
101
|
+
if (isMined) {
|
|
101
102
|
return 'mined';
|
|
102
103
|
}
|
|
103
|
-
else if (
|
|
104
|
+
else if (isKnown) {
|
|
104
105
|
return 'pending';
|
|
105
106
|
}
|
|
106
107
|
else {
|
|
@@ -112,8 +113,8 @@ export class AztecKVTxPool {
|
|
|
112
113
|
* @param txHash - The generated tx hash.
|
|
113
114
|
* @returns The transaction, if found, 'undefined' otherwise.
|
|
114
115
|
*/
|
|
115
|
-
getTxByHash(txHash) {
|
|
116
|
-
const buffer = __classPrivateFieldGet(this, _AztecKVTxPool_txs, "f").
|
|
116
|
+
async getTxByHash(txHash) {
|
|
117
|
+
const buffer = await __classPrivateFieldGet(this, _AztecKVTxPool_txs, "f").getAsync(txHash.toString());
|
|
117
118
|
if (buffer) {
|
|
118
119
|
const tx = Tx.fromBuffer(buffer);
|
|
119
120
|
tx.setTxHash(txHash);
|
|
@@ -126,8 +127,8 @@ export class AztecKVTxPool {
|
|
|
126
127
|
* @param txHash - The tx hash.
|
|
127
128
|
* @returns The transaction metadata, if found, 'undefined' otherwise.
|
|
128
129
|
*/
|
|
129
|
-
getArchivedTxByHash(txHash) {
|
|
130
|
-
const buffer = __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxs, "f").
|
|
130
|
+
async getArchivedTxByHash(txHash) {
|
|
131
|
+
const buffer = await __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxs, "f").getAsync(txHash.toString());
|
|
131
132
|
if (buffer) {
|
|
132
133
|
const tx = Tx.fromBuffer(buffer);
|
|
133
134
|
tx.setTxHash(txHash);
|
|
@@ -140,24 +141,25 @@ export class AztecKVTxPool {
|
|
|
140
141
|
* @param txs - An array of txs to be added to the pool.
|
|
141
142
|
* @returns Empty promise.
|
|
142
143
|
*/
|
|
143
|
-
addTxs(txs) {
|
|
144
|
-
|
|
144
|
+
async addTxs(txs) {
|
|
145
|
+
const hashesAndStats = await Promise.all(txs.map(async (tx) => ({ txHash: await tx.getTxHash(), txStats: await tx.getStats() })));
|
|
146
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").transactionAsync(async () => {
|
|
145
147
|
let pendingCount = 0;
|
|
146
|
-
|
|
147
|
-
const txHash =
|
|
148
|
+
await Promise.all(txs.map(async (tx, i) => {
|
|
149
|
+
const { txHash, txStats } = hashesAndStats[i];
|
|
148
150
|
__classPrivateFieldGet(this, _AztecKVTxPool_log, "f").verbose(`Adding tx ${txHash.toString()} to pool`, {
|
|
149
151
|
eventName: 'tx-added-to-pool',
|
|
150
|
-
...
|
|
152
|
+
...txStats,
|
|
151
153
|
});
|
|
152
154
|
const key = txHash.toString();
|
|
153
|
-
|
|
154
|
-
if (!__classPrivateFieldGet(this, _AztecKVTxPool_minedTxHashToBlock, "f").
|
|
155
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_txs, "f").set(key, tx.toBuffer());
|
|
156
|
+
if (!(await __classPrivateFieldGet(this, _AztecKVTxPool_minedTxHashToBlock, "f").hasAsync(key))) {
|
|
155
157
|
pendingCount++;
|
|
156
158
|
// REFACTOR: Use an lmdb conditional write to avoid race conditions with this write tx
|
|
157
|
-
|
|
159
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_pendingTxPriorityToHash, "f").set(getPendingTxPriority(tx), key);
|
|
158
160
|
__classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordSize(tx);
|
|
159
161
|
}
|
|
160
|
-
}
|
|
162
|
+
}));
|
|
161
163
|
__classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordAddedObjects(pendingCount, 'pending');
|
|
162
164
|
});
|
|
163
165
|
}
|
|
@@ -170,14 +172,14 @@ export class AztecKVTxPool {
|
|
|
170
172
|
let pendingDeleted = 0;
|
|
171
173
|
let minedDeleted = 0;
|
|
172
174
|
const deletedTxs = [];
|
|
173
|
-
const poolDbTx = __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").
|
|
175
|
+
const poolDbTx = __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").transactionAsync(async () => {
|
|
174
176
|
for (const hash of txHashes) {
|
|
175
177
|
const key = hash.toString();
|
|
176
|
-
const tx = this.getTxByHash(hash);
|
|
178
|
+
const tx = await this.getTxByHash(hash);
|
|
177
179
|
if (tx) {
|
|
178
180
|
const fee = getPendingTxPriority(tx);
|
|
179
|
-
|
|
180
|
-
const isMined = __classPrivateFieldGet(this, _AztecKVTxPool_minedTxHashToBlock, "f").
|
|
181
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_pendingTxPriorityToHash, "f").deleteValue(fee, key);
|
|
182
|
+
const isMined = await __classPrivateFieldGet(this, _AztecKVTxPool_minedTxHashToBlock, "f").hasAsync(key);
|
|
181
183
|
if (isMined) {
|
|
182
184
|
minedDeleted++;
|
|
183
185
|
}
|
|
@@ -187,8 +189,8 @@ export class AztecKVTxPool {
|
|
|
187
189
|
if (__classPrivateFieldGet(this, _AztecKVTxPool_archivedTxLimit, "f")) {
|
|
188
190
|
deletedTxs.push(tx);
|
|
189
191
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_txs, "f").delete(key);
|
|
193
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_minedTxHashToBlock, "f").delete(key);
|
|
192
194
|
}
|
|
193
195
|
}
|
|
194
196
|
__classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordRemovedObjects(pendingDeleted, 'pending');
|
|
@@ -200,8 +202,9 @@ export class AztecKVTxPool {
|
|
|
200
202
|
* Gets all the transactions stored in the pool.
|
|
201
203
|
* @returns Array of tx objects in the order they were added to the pool.
|
|
202
204
|
*/
|
|
203
|
-
getAllTxs() {
|
|
204
|
-
|
|
205
|
+
async getAllTxs() {
|
|
206
|
+
const vals = await toArray(__classPrivateFieldGet(this, _AztecKVTxPool_txs, "f").entriesAsync());
|
|
207
|
+
return vals.map(([hash, buffer]) => {
|
|
205
208
|
const tx = Tx.fromBuffer(buffer);
|
|
206
209
|
tx.setTxHash(TxHash.fromString(hash));
|
|
207
210
|
return tx;
|
|
@@ -211,36 +214,39 @@ export class AztecKVTxPool {
|
|
|
211
214
|
* Gets the hashes of all transactions currently in the tx pool.
|
|
212
215
|
* @returns An array of transaction hashes found in the tx pool.
|
|
213
216
|
*/
|
|
214
|
-
getAllTxHashes() {
|
|
215
|
-
|
|
217
|
+
async getAllTxHashes() {
|
|
218
|
+
const vals = await toArray(__classPrivateFieldGet(this, _AztecKVTxPool_txs, "f").keysAsync());
|
|
219
|
+
return vals.map(x => TxHash.fromString(x));
|
|
216
220
|
}
|
|
217
221
|
/**
|
|
218
222
|
* Archives a list of txs for future reference. The number of archived txs is limited by the specified archivedTxLimit.
|
|
219
223
|
* @param txs - The list of transactions to archive.
|
|
220
224
|
* @returns Empty promise.
|
|
221
225
|
*/
|
|
222
|
-
archiveTxs(txs) {
|
|
223
|
-
|
|
226
|
+
async archiveTxs(txs) {
|
|
227
|
+
const txHashes = await Promise.all(txs.map(tx => tx.getTxHash()));
|
|
228
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_archive, "f").transactionAsync(async () => {
|
|
224
229
|
// calcualte the head and tail indices of the archived txs by insertion order.
|
|
225
|
-
let headIdx = (__classPrivateFieldGet(this, _AztecKVTxPool_archivedTxIndices, "f").
|
|
226
|
-
let tailIdx = __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxIndices, "f").
|
|
227
|
-
for (
|
|
230
|
+
let headIdx = ((await __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxIndices, "f").entriesAsync({ limit: 1, reverse: true }).next()).value?.[0] ?? -1) + 1;
|
|
231
|
+
let tailIdx = (await __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxIndices, "f").entriesAsync({ limit: 1 }).next()).value?.[0] ?? 0;
|
|
232
|
+
for (let i = 0; i < txs.length; i++) {
|
|
233
|
+
const tx = txs[i];
|
|
228
234
|
while (headIdx - tailIdx >= __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxLimit, "f")) {
|
|
229
|
-
const txHash = __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxIndices, "f").
|
|
235
|
+
const txHash = await __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxIndices, "f").getAsync(tailIdx);
|
|
230
236
|
if (txHash) {
|
|
231
|
-
|
|
232
|
-
|
|
237
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxs, "f").delete(txHash);
|
|
238
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxIndices, "f").delete(tailIdx);
|
|
233
239
|
}
|
|
234
240
|
tailIdx++;
|
|
235
241
|
}
|
|
236
242
|
const archivedTx = new Tx(tx.data, ClientIvcProof.empty(), tx.contractClassLogs, tx.enqueuedPublicFunctionCalls, tx.publicTeardownFunctionCall);
|
|
237
|
-
const txHash =
|
|
238
|
-
|
|
239
|
-
|
|
243
|
+
const txHash = txHashes[i].toString();
|
|
244
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxs, "f").set(txHash, archivedTx.toBuffer());
|
|
245
|
+
await __classPrivateFieldGet(this, _AztecKVTxPool_archivedTxIndices, "f").set(headIdx, txHash);
|
|
240
246
|
headIdx++;
|
|
241
247
|
}
|
|
242
248
|
});
|
|
243
249
|
}
|
|
244
250
|
}
|
|
245
251
|
_AztecKVTxPool_store = new WeakMap(), _AztecKVTxPool_txs = new WeakMap(), _AztecKVTxPool_minedTxHashToBlock = new WeakMap(), _AztecKVTxPool_pendingTxPriorityToHash = new WeakMap(), _AztecKVTxPool_archive = new WeakMap(), _AztecKVTxPool_archivedTxs = new WeakMap(), _AztecKVTxPool_archivedTxIndices = new WeakMap(), _AztecKVTxPool_archivedTxLimit = new WeakMap(), _AztecKVTxPool_log = new WeakMap(), _AztecKVTxPool_metrics = new WeakMap();
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfa3ZfdHhfcG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbC9henRlY19rdl90eF9wb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBd0Isa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3JEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUE0QnhCOzs7Ozs7O09BT0c7SUFDSCxZQUNFLEtBQW1CLEVBQ25CLE9BQXFCLEVBQ3JCLFlBQTZCLGtCQUFrQixFQUFFLEVBQ2pELGtCQUEwQixDQUFDLEVBQzNCLEdBQUcsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBeENuQyx1Q0FBcUI7UUFFckIsNEVBQTRFO1FBQzVFLHFDQUErQjtRQUUvQiw4RkFBOEY7UUFDOUYsb0RBQThDO1FBRTlDLHNGQUFzRjtRQUN0Rix5REFBd0Q7UUFFeEQsaUNBQWlDO1FBQ2pDLHlDQUF1QjtRQUV2QiwwQ0FBMEM7UUFDMUMsNkNBQXVDO1FBRXZDLHNEQUFzRDtRQUN0RCxtREFBNkM7UUFFN0MsZ0NBQWdDO1FBQ2hDLGlEQUF5QjtRQUV6QixxQ0FBYTtRQUViLHlDQUFrQztRQWlCaEMsdUJBQUEsSUFBSSxzQkFBUSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFBLENBQUM7UUFDakMsdUJBQUEsSUFBSSxxQ0FBdUIsS0FBSyxD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
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfa3ZfdHhfcG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbC9henRlY19rdl90eF9wb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQXdCLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRDs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBNEJ4Qjs7Ozs7OztPQU9HO0lBQ0gsWUFDRSxLQUF3QixFQUN4QixPQUEwQixFQUMxQixZQUE2QixrQkFBa0IsRUFBRSxFQUNqRCxrQkFBMEIsQ0FBQyxFQUMzQixHQUFHLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQXhDbkMsdUNBQTBCO1FBRTFCLDRFQUE0RTtRQUM1RSxxQ0FBb0M7UUFFcEMsOEZBQThGO1FBQzlGLG9EQUFtRDtRQUVuRCxzRkFBc0Y7UUFDdEYseURBQTZEO1FBRTdELGlDQUFpQztRQUNqQyx5Q0FBNEI7UUFFNUIsMENBQTBDO1FBQzFDLDZDQUE0QztRQUU1QyxzREFBc0Q7UUFDdEQsbURBQWtEO1FBRWxELGdDQUFnQztRQUNoQyxpREFBeUI7UUFFekIscUNBQWE7UUFFYix5Q0FBa0M7UUFpQmhDLHVCQUFBLElBQUksc0JBQVEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBQSxDQUFDO1FBQ2pDLHVCQUFBLElBQUkscUNBQXVCLEtBQUssQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsTUFBQSxDQUFDO1FBQy9ELHVCQUFBLElBQUksMENBQTRCLEtBQUssQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsTUFBQSxDQUFDO1FBRXpFLHVCQUFBLElBQUksOEJBQWdCLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQUEsQ0FBQztRQUNuRCx1QkFBQSxJQUFJLG9DQUFzQixPQUFPLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE1BQUEsQ0FBQztRQUMvRCx1QkFBQSxJQUFJLGtDQUFvQixlQUFlLE1BQUEsQ0FBQztRQUV4Qyx1QkFBQSxJQUFJLHdCQUFVLEtBQUssTUFBQSxDQUFDO1FBQ3BCLHVCQUFBLElBQUksMEJBQVksT0FBTyxNQUFBLENBQUM7UUFDeEIsdUJBQUEsSUFBSSxzQkFBUSxHQUFHLE1BQUEsQ0FBQztRQUNoQix1QkFBQSxJQUFJLDBCQUFZLElBQUksbUJBQW1CLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQUEsQ0FBQztJQUNuRyxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWtCLEVBQUUsV0FBbUI7UUFDeEQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDdkIsT0FBTyx1QkFBQSxJQUFJLDRCQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDN0MsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixNQUFNLHVCQUFBLElBQUkseUNBQW9CLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFFckQsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNQLGNBQWMsRUFBRSxDQUFDO29CQUNqQixNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDckMsTUFBTSx1QkFBQSxJQUFJLDhDQUF5QixDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzVELENBQUM7WUFDSCxDQUFDO1lBQ0QsdUJBQUEsSUFBSSw4QkFBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0QsdUJBQUEsSUFBSSw4QkFBUyxDQUFDLG9CQUFvQixDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxRQUFrQjtRQUMxQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN4QixPQUFPLHVCQUFBLElBQUksNEJBQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sdUJBQUEsSUFBSSx5Q0FBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRTNDLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDUCxNQUFNLHVCQUFBLElBQUksOENBQXlCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUN2RSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsQ0FBQztZQUNILENBQUM7WUFFRCx1QkFBQSxJQUFJLDhCQUFTLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzdELHVCQUFBLElBQUksOEJBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQjtRQUM3QixNQUFNLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyx1QkFBQSxJQUFJLDhDQUF5QixDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLHVCQUFBLElBQUkseUNBQW9CLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYztRQUNyQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyx1QkFBQSxJQUFJLHlDQUFvQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSx1QkFBQSxJQUFJLDBCQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoSCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDbkIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQWM7UUFDckMsTUFBTSxNQUFNLEdBQUcsTUFBTSx1QkFBQSxJQUFJLDBCQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsTUFBYztRQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUFBLElBQUksa0NBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBUztRQUMzQixNQUFNLGNBQWMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ3RDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ3RGLENBQUM7UUFDRixNQUFNLHVCQUFBLElBQUksNEJBQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUM1QyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7WUFDckIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLHVCQUFBLElBQUksMEJBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRTtvQkFDMUQsU0FBUyxFQUFFLGtCQUFrQjtvQkFDN0IsR0FBRyxPQUFPO2lCQUNrQixDQUFDLENBQUM7Z0JBRWhDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSx1QkFBQSxJQUFJLDBCQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFFeEMsSUFBSSxDQUFDLENBQUMsTUFBTSx1QkFBQSxJQUFJLHlDQUFvQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3BELFlBQVksRUFBRSxDQUFDO29CQUNmLHNGQUFzRjtvQkFDdEYsTUFBTSx1QkFBQSxJQUFJLDhDQUF5QixDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDdkUsdUJBQUEsSUFBSSw4QkFBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUNILENBQUM7WUFFRix1QkFBQSxJQUFJLDhCQUFTLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsUUFBa0I7UUFDakMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztRQUVyQixNQUFNLFVBQVUsR0FBUyxFQUFFLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsdUJBQUEsSUFBSSw0QkFBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3ZELEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUV4QyxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNQLE1BQU0sR0FBRyxHQUFHLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyQyxNQUFNLHVCQUFBLElBQUksOENBQXlCLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFFMUQsTUFBTSxPQUFPLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHlDQUFvQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDN0QsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFDWixZQUFZLEVBQUUsQ0FBQztvQkFDakIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLGNBQWMsRUFBRSxDQUFDO29CQUNuQixDQUFDO29CQUVELElBQUksdUJBQUEsSUFBSSxzQ0FBaUIsRUFBRSxDQUFDO3dCQUMxQixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN0QixDQUFDO29CQUVELE1BQU0sdUJBQUEsSUFBSSwwQkFBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDNUIsTUFBTSx1QkFBQSxJQUFJLHlDQUFvQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztZQUNILENBQUM7WUFFRCx1QkFBQSxJQUFJLDhCQUFTLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzlELHVCQUFBLElBQUksOEJBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLHVCQUFBLElBQUksc0NBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDN0YsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLHVCQUFBLElBQUksMEJBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDakMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN0QyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLHVCQUFBLElBQUksMEJBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBUztRQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsTUFBTSx1QkFBQSxJQUFJLDhCQUFTLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDOUMsOEVBQThFO1lBQzlFLElBQUksT0FBTyxHQUNULENBQUMsQ0FBQyxNQUFNLHVCQUFBLElBQUksd0NBQW1CLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFHLElBQUksT0FBTyxHQUFHLENBQUMsTUFBTSx1QkFBQSxJQUFJLHdDQUFtQixDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWhHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsT0FBTyxPQUFPLEdBQUcsT0FBTyxJQUFJLHVCQUFBLElBQUksc0NBQWlCLEVBQUUsQ0FBQztvQkFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHdDQUFtQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDWCxNQUFNLHVCQUFBLElBQUksa0NBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ3ZDLE1BQU0sdUJBQUEsSUFBSSx3Q0FBbUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hELENBQUM7b0JBQ0QsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztnQkFFRCxNQUFNLFVBQVUsR0FBTyxJQUFJLEVBQUUsQ0FDM0IsRUFBRSxDQUFDLElBQUksRUFDUCxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQ3RCLEVBQUUsQ0FBQyxpQkFBaUIsRUFDcEIsRUFBRSxDQUFDLDJCQUEyQixFQUM5QixFQUFFLENBQUMsMEJBQTBCLENBQzlCLENBQUM7Z0JBQ0YsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLHVCQUFBLElBQUksa0NBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLHVCQUFBLElBQUksd0NBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDbkQsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
|
|
@@ -20,16 +20,16 @@ export declare class InMemoryTxPool implements TxPool {
|
|
|
20
20
|
constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
21
21
|
markAsMined(txHashes: TxHash[], blockNumber: number): Promise<void>;
|
|
22
22
|
markMinedAsPending(txHashes: TxHash[]): Promise<void>;
|
|
23
|
-
getPendingTxHashes(): TxHash[]
|
|
24
|
-
getMinedTxHashes(): [TxHash, number][]
|
|
25
|
-
getTxStatus(txHash: TxHash): 'pending' | 'mined' | undefined
|
|
23
|
+
getPendingTxHashes(): Promise<TxHash[]>;
|
|
24
|
+
getMinedTxHashes(): Promise<[TxHash, number][]>;
|
|
25
|
+
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
|
|
26
26
|
/**
|
|
27
27
|
* Checks if a transaction exists in the pool and returns it.
|
|
28
28
|
* @param txHash - The generated tx hash.
|
|
29
29
|
* @returns The transaction, if found, 'undefined' otherwise.
|
|
30
30
|
*/
|
|
31
|
-
getTxByHash(txHash: TxHash): Tx | undefined
|
|
32
|
-
getArchivedTxByHash(): Tx | undefined
|
|
31
|
+
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
32
|
+
getArchivedTxByHash(): Promise<Tx | undefined>;
|
|
33
33
|
/**
|
|
34
34
|
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
35
35
|
* @param txs - An array of txs to be added to the pool.
|
|
@@ -46,11 +46,11 @@ export declare class InMemoryTxPool implements TxPool {
|
|
|
46
46
|
* Gets all the transactions stored in the pool.
|
|
47
47
|
* @returns Array of tx objects in the order they were added to the pool.
|
|
48
48
|
*/
|
|
49
|
-
getAllTxs(): Tx[]
|
|
49
|
+
getAllTxs(): Promise<Tx[]>;
|
|
50
50
|
/**
|
|
51
51
|
* Gets the hashes of all transactions currently in the tx pool.
|
|
52
52
|
* @returns An array of transaction hashes found in the tx pool.
|
|
53
53
|
*/
|
|
54
|
-
getAllTxHashes(): TxHash[]
|
|
54
|
+
getAllTxHashes(): Promise<TxHash[]>;
|
|
55
55
|
}
|
|
56
56
|
//# sourceMappingURL=memory_tx_pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAInF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,cAAe,YAAW,MAAM;IAcoB,OAAO,CAAC,GAAG;IAb1E;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;gBACS,SAAS,GAAE,eAAsC,EAAU,GAAG,yCAA8B;IAOjG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAInF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,cAAe,YAAW,MAAM;IAcoB,OAAO,CAAC,GAAG;IAb1E;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;gBACS,SAAS,GAAE,eAAsC,EAAU,GAAG,yCAA8B;IAOjG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B/C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ7C,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAM/C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAW5E;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKpD,mBAAmB,IAAI,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIrD;;;;OAIG;IACU,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD;;;OAGG;IACI,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIjC;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAG3C"}
|
|
@@ -49,24 +49,23 @@ export class InMemoryTxPool {
|
|
|
49
49
|
this.metrics.recordAddedObjects(added, 'pending');
|
|
50
50
|
return Promise.resolve();
|
|
51
51
|
}
|
|
52
|
-
getPendingTxHashes() {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
.filter(txHash => this.pendingTxs.has(txHash.toBigInt()));
|
|
52
|
+
async getPendingTxHashes() {
|
|
53
|
+
const txs = (await this.getAllTxs()).sort((tx1, tx2) => -getPendingTxPriority(tx1).localeCompare(getPendingTxPriority(tx2)));
|
|
54
|
+
const txHashes = await Promise.all(txs.map(tx => tx.getTxHash()));
|
|
55
|
+
return txHashes.filter(txHash => this.pendingTxs.has(txHash.toBigInt()));
|
|
57
56
|
}
|
|
58
57
|
getMinedTxHashes() {
|
|
59
|
-
return Array.from(this.minedTxs.entries()).map(([txHash, blockNumber]) => [TxHash.fromBigInt(txHash), blockNumber]);
|
|
58
|
+
return Promise.resolve(Array.from(this.minedTxs.entries()).map(([txHash, blockNumber]) => [TxHash.fromBigInt(txHash), blockNumber]));
|
|
60
59
|
}
|
|
61
60
|
getTxStatus(txHash) {
|
|
62
61
|
const key = txHash.toBigInt();
|
|
63
62
|
if (this.pendingTxs.has(key)) {
|
|
64
|
-
return 'pending';
|
|
63
|
+
return Promise.resolve('pending');
|
|
65
64
|
}
|
|
66
65
|
if (this.minedTxs.has(key)) {
|
|
67
|
-
return 'mined';
|
|
66
|
+
return Promise.resolve('mined');
|
|
68
67
|
}
|
|
69
|
-
return undefined;
|
|
68
|
+
return Promise.resolve(undefined);
|
|
70
69
|
}
|
|
71
70
|
/**
|
|
72
71
|
* Checks if a transaction exists in the pool and returns it.
|
|
@@ -75,23 +74,23 @@ export class InMemoryTxPool {
|
|
|
75
74
|
*/
|
|
76
75
|
getTxByHash(txHash) {
|
|
77
76
|
const result = this.txs.get(txHash.toBigInt());
|
|
78
|
-
return result === undefined ? undefined : Tx.clone(result);
|
|
77
|
+
return Promise.resolve(result === undefined ? undefined : Tx.clone(result));
|
|
79
78
|
}
|
|
80
79
|
getArchivedTxByHash() {
|
|
81
|
-
return undefined;
|
|
80
|
+
return Promise.resolve(undefined);
|
|
82
81
|
}
|
|
83
82
|
/**
|
|
84
83
|
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
85
84
|
* @param txs - An array of txs to be added to the pool.
|
|
86
85
|
* @returns Empty promise.
|
|
87
86
|
*/
|
|
88
|
-
addTxs(txs) {
|
|
87
|
+
async addTxs(txs) {
|
|
89
88
|
let pending = 0;
|
|
90
89
|
for (const tx of txs) {
|
|
91
|
-
const txHash = tx.getTxHash();
|
|
90
|
+
const txHash = await tx.getTxHash();
|
|
92
91
|
this.log.verbose(`Adding tx ${txHash.toString()} to pool`, {
|
|
93
92
|
eventName: 'tx-added-to-pool',
|
|
94
|
-
...tx.getStats(),
|
|
93
|
+
...(await tx.getStats()),
|
|
95
94
|
});
|
|
96
95
|
const key = txHash.toBigInt();
|
|
97
96
|
this.txs.set(key, tx);
|
|
@@ -102,7 +101,7 @@ export class InMemoryTxPool {
|
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
103
|
this.metrics.recordAddedObjects(pending, 'pending');
|
|
105
|
-
return
|
|
104
|
+
return;
|
|
106
105
|
}
|
|
107
106
|
/**
|
|
108
107
|
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
@@ -127,14 +126,14 @@ export class InMemoryTxPool {
|
|
|
127
126
|
* @returns Array of tx objects in the order they were added to the pool.
|
|
128
127
|
*/
|
|
129
128
|
getAllTxs() {
|
|
130
|
-
return Array.from(this.txs.values()).map(x => Tx.clone(x));
|
|
129
|
+
return Promise.resolve(Array.from(this.txs.values()).map(x => Tx.clone(x)));
|
|
131
130
|
}
|
|
132
131
|
/**
|
|
133
132
|
* Gets the hashes of all transactions currently in the tx pool.
|
|
134
133
|
* @returns An array of transaction hashes found in the tx pool.
|
|
135
134
|
*/
|
|
136
135
|
getAllTxHashes() {
|
|
137
|
-
return Array.from(this.txs.keys()).map(x => TxHash.fromBigInt(x));
|
|
136
|
+
return Promise.resolve(Array.from(this.txs.keys()).map(x => TxHash.fromBigInt(x)));
|
|
138
137
|
}
|
|
139
138
|
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X3R4X3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL3R4X3Bvb2wvbWVtb3J5X3R4X3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQVV6Qjs7O09BR0c7SUFDSCxZQUFZLFlBQTZCLGtCQUFrQixFQUFFLEVBQVUsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDO1FBQWpDLFFBQUcsR0FBSCxHQUFHLENBQThCO1FBQ3RHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBa0IsRUFBRSxXQUFtQjtRQUN4RCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFFBQWtCO1FBQzFDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBRUQsNERBQTREO1lBQzVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVsRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQjtRQUM3QixNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN2QyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2xGLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUM3RyxDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVcsQ0FBQyxNQUFjO1FBQy9CLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsTUFBYztRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQVM7UUFDM0IsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7WUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRTtnQkFDekQsU0FBUyxFQUFFLGtCQUFrQjtnQkFDN0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ0ksQ0FBQyxDQUFDO1lBRWhDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sRUFBRSxDQUFDO2dCQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE9BQU87SUFDVCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxRQUFrQjtRQUNqQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRXZCLEtBQUssTUFBTSxNQUFNLElBQUksUUFBUSxFQUFFLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsWUFBWSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFekQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVM7UUFDZCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDRiJ9
|
|
@@ -13,13 +13,13 @@ export interface TxPool {
|
|
|
13
13
|
* @param txHash - The hash of the transaction, used as an ID.
|
|
14
14
|
* @returns The transaction, if found, 'undefined' otherwise.
|
|
15
15
|
*/
|
|
16
|
-
getTxByHash(txHash: TxHash): Tx | undefined
|
|
16
|
+
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
17
17
|
/**
|
|
18
18
|
* Checks if an archived transaction exists in the pool and returns it.
|
|
19
19
|
* @param txHash - The hash of the transaction, used as an ID.
|
|
20
20
|
* @returns The transaction, if found, 'undefined' otherwise.
|
|
21
21
|
*/
|
|
22
|
-
getArchivedTxByHash(txHash: TxHash): Tx | undefined
|
|
22
|
+
getArchivedTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
23
23
|
/**
|
|
24
24
|
* Marks the set of txs as mined, as opposed to pending.
|
|
25
25
|
* @param txHashes - Hashes of the txs to flag as mined.
|
|
@@ -40,27 +40,27 @@ export interface TxPool {
|
|
|
40
40
|
* Gets all transactions currently in the tx pool.
|
|
41
41
|
* @returns An array of transaction objects found in the tx pool.
|
|
42
42
|
*/
|
|
43
|
-
getAllTxs(): Tx[]
|
|
43
|
+
getAllTxs(): Promise<Tx[]>;
|
|
44
44
|
/**
|
|
45
45
|
* Gets the hashes of all transactions currently in the tx pool.
|
|
46
46
|
* @returns An array of transaction hashes found in the tx pool.
|
|
47
47
|
*/
|
|
48
|
-
getAllTxHashes(): TxHash[]
|
|
48
|
+
getAllTxHashes(): Promise<TxHash[]>;
|
|
49
49
|
/**
|
|
50
50
|
* Gets the hashes of pending transactions currently in the tx pool sorted by priority (see getPendingTxPriority).
|
|
51
51
|
* @returns An array of pending transaction hashes found in the tx pool.
|
|
52
52
|
*/
|
|
53
|
-
getPendingTxHashes(): TxHash[]
|
|
53
|
+
getPendingTxHashes(): Promise<TxHash[]>;
|
|
54
54
|
/**
|
|
55
55
|
* Gets the hashes of mined transactions currently in the tx pool.
|
|
56
56
|
* @returns An array of mined transaction hashes found in the tx pool.
|
|
57
57
|
*/
|
|
58
|
-
getMinedTxHashes(): [tx: TxHash, blockNumber: number][]
|
|
58
|
+
getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: number][]>;
|
|
59
59
|
/**
|
|
60
60
|
* Returns whether the given tx hash is flagged as pending or mined.
|
|
61
61
|
* @param txHash - Hash of the tx to query.
|
|
62
62
|
* @returns Pending or mined depending on its status, or undefined if not found.
|
|
63
63
|
*/
|
|
64
|
-
getTxStatus(txHash: TxHash): 'pending' | 'mined' | undefined
|
|
64
|
+
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
|
|
65
65
|
}
|
|
66
66
|
//# sourceMappingURL=tx_pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAErD;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAE7D;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3B;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAExC;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAEjE;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CACvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool_test_suite.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"tx_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool_test_suite.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,MAAM,QAsHrD"}
|