@rosen-bridge/abstract-extractor 2.1.0 → 2.1.1
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/CHANGELOG.md +11 -0
- package/package.json +14 -7
- package/.eslintignore +0 -1
- package/dist/lib/abstractExtractor.d.ts +0 -25
- package/dist/lib/abstractExtractor.d.ts.map +0 -1
- package/dist/lib/abstractExtractor.js +0 -3
- package/dist/lib/constants.d.ts +0 -4
- package/dist/lib/constants.d.ts.map +0 -1
- package/dist/lib/constants.js +0 -4
- package/dist/lib/ergo/AbstractErgoExtractor.d.ts +0 -80
- package/dist/lib/ergo/AbstractErgoExtractor.d.ts.map +0 -1
- package/dist/lib/ergo/AbstractErgoExtractor.js +0 -142
- package/dist/lib/ergo/AbstractErgoExtractorAction.d.ts +0 -92
- package/dist/lib/ergo/AbstractErgoExtractorAction.d.ts.map +0 -1
- package/dist/lib/ergo/AbstractErgoExtractorAction.js +0 -222
- package/dist/lib/ergo/AbstractErgoExtractorEntity.d.ts +0 -11
- package/dist/lib/ergo/AbstractErgoExtractorEntity.d.ts.map +0 -1
- package/dist/lib/ergo/AbstractErgoExtractorEntity.js +0 -57
- package/dist/lib/ergo/index.d.ts +0 -10
- package/dist/lib/ergo/index.d.ts.map +0 -1
- package/dist/lib/ergo/index.js +0 -10
- package/dist/lib/ergo/initializable/AbstractInitializable.d.ts +0 -48
- package/dist/lib/ergo/initializable/AbstractInitializable.d.ts.map +0 -1
- package/dist/lib/ergo/initializable/AbstractInitializable.js +0 -163
- package/dist/lib/ergo/initializable/AbstractInitializableAction.d.ts +0 -14
- package/dist/lib/ergo/initializable/AbstractInitializableAction.d.ts.map +0 -1
- package/dist/lib/ergo/initializable/AbstractInitializableAction.js +0 -16
- package/dist/lib/ergo/initializable/index.d.ts +0 -3
- package/dist/lib/ergo/initializable/index.d.ts.map +0 -1
- package/dist/lib/ergo/initializable/index.js +0 -3
- package/dist/lib/ergo/interfaces.d.ts +0 -47
- package/dist/lib/ergo/interfaces.d.ts.map +0 -1
- package/dist/lib/ergo/interfaces.js +0 -8
- package/dist/lib/ergo/network/AbstractNetwork.d.ts +0 -26
- package/dist/lib/ergo/network/AbstractNetwork.d.ts.map +0 -1
- package/dist/lib/ergo/network/AbstractNetwork.js +0 -3
- package/dist/lib/ergo/network/ExplorerNetwork.d.ts +0 -74
- package/dist/lib/ergo/network/ExplorerNetwork.d.ts.map +0 -1
- package/dist/lib/ergo/network/ExplorerNetwork.js +0 -185
- package/dist/lib/ergo/network/NodeNetwork.d.ts +0 -60
- package/dist/lib/ergo/network/NodeNetwork.d.ts.map +0 -1
- package/dist/lib/ergo/network/NodeNetwork.js +0 -131
- package/dist/lib/ergo/utils.d.ts +0 -8
- package/dist/lib/ergo/utils.d.ts.map +0 -1
- package/dist/lib/ergo/utils.js +0 -16
- package/dist/lib/index.d.ts +0 -4
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js +0 -4
- package/dist/tests/AbstractErgoExtractor.mock.d.ts +0 -11
- package/dist/tests/AbstractErgoExtractor.mock.d.ts.map +0 -1
- package/dist/tests/AbstractErgoExtractor.mock.js +0 -11
- package/dist/tests/AbstractErgoExtractor.spec.d.ts +0 -2
- package/dist/tests/AbstractErgoExtractor.spec.d.ts.map +0 -1
- package/dist/tests/AbstractErgoExtractor.spec.js +0 -240
- package/dist/tests/AbstractErgoExtractorAction.mock.d.ts +0 -15
- package/dist/tests/AbstractErgoExtractorAction.mock.d.ts.map +0 -1
- package/dist/tests/AbstractErgoExtractorAction.mock.js +0 -27
- package/dist/tests/AbstractErgoExtractorAction.spec.d.ts +0 -2
- package/dist/tests/AbstractErgoExtractorAction.spec.d.ts.map +0 -1
- package/dist/tests/AbstractErgoExtractorAction.spec.js +0 -221
- package/dist/tests/initializable/AbstractInitializable.mock.d.ts +0 -61
- package/dist/tests/initializable/AbstractInitializable.mock.d.ts.map +0 -1
- package/dist/tests/initializable/AbstractInitializable.mock.js +0 -18
- package/dist/tests/initializable/AbstractInitializable.spec.d.ts +0 -2
- package/dist/tests/initializable/AbstractInitializable.spec.d.ts.map +0 -1
- package/dist/tests/initializable/AbstractInitializable.spec.js +0 -299
- package/dist/tests/initializable/AbstractInitializableAction.mock.d.ts +0 -15
- package/dist/tests/initializable/AbstractInitializableAction.mock.d.ts.map +0 -1
- package/dist/tests/initializable/AbstractInitializableAction.mock.js +0 -27
- package/dist/tests/initializable/AbstractInitializableAction.spec.d.ts +0 -2
- package/dist/tests/initializable/AbstractInitializableAction.spec.d.ts.map +0 -1
- package/dist/tests/initializable/AbstractInitializableAction.spec.js +0 -54
- package/dist/tests/initializable/testData.d.ts +0 -94
- package/dist/tests/initializable/testData.d.ts.map +0 -1
- package/dist/tests/initializable/testData.js +0 -235
- package/dist/tests/network/ExplorerNetwork.spec.d.ts +0 -2
- package/dist/tests/network/ExplorerNetwork.spec.d.ts.map +0 -1
- package/dist/tests/network/ExplorerNetwork.spec.js +0 -61
- package/dist/tests/network/NodeNetwork.spec.d.ts +0 -2
- package/dist/tests/network/NodeNetwork.spec.d.ts.map +0 -1
- package/dist/tests/network/NodeNetwork.spec.js +0 -48
- package/dist/tests/network/testData.d.ts +0 -752
- package/dist/tests/network/testData.d.ts.map +0 -1
- package/dist/tests/network/testData.js +0 -1401
- package/dist/tests/testData.d.ts +0 -32
- package/dist/tests/testData.d.ts.map +0 -1
- package/dist/tests/testData.js +0 -121
- package/dist/tests/testUtils.d.ts +0 -9
- package/dist/tests/testUtils.d.ts.map +0 -1
- package/dist/tests/testUtils.js +0 -31
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -18
- package/lib/abstractExtractor.ts +0 -31
- package/lib/constants.ts +0 -3
- package/lib/ergo/AbstractErgoExtractor.ts +0 -227
- package/lib/ergo/AbstractErgoExtractorAction.ts +0 -319
- package/lib/ergo/AbstractErgoExtractorEntity.ts +0 -32
- package/lib/ergo/index.ts +0 -9
- package/lib/ergo/initializable/AbstractInitializable.ts +0 -228
- package/lib/ergo/initializable/AbstractInitializableAction.ts +0 -33
- package/lib/ergo/initializable/index.ts +0 -2
- package/lib/ergo/interfaces.ts +0 -51
- package/lib/ergo/network/AbstractNetwork.ts +0 -29
- package/lib/ergo/network/ExplorerNetwork.ts +0 -237
- package/lib/ergo/network/NodeNetwork.ts +0 -169
- package/lib/ergo/utils.ts +0 -15
- package/lib/index.ts +0 -3
- package/tests/AbstractErgoExtractor.mock.ts +0 -33
- package/tests/AbstractErgoExtractor.spec.ts +0 -284
- package/tests/AbstractErgoExtractorAction.mock.ts +0 -45
- package/tests/AbstractErgoExtractorAction.spec.ts +0 -268
- package/tests/initializable/AbstractInitializable.mock.ts +0 -44
- package/tests/initializable/AbstractInitializable.spec.ts +0 -386
- package/tests/initializable/AbstractInitializableAction.mock.ts +0 -45
- package/tests/initializable/AbstractInitializableAction.spec.ts +0 -64
- package/tests/initializable/testData.ts +0 -283
- package/tests/network/ExplorerNetwork.spec.ts +0 -73
- package/tests/network/NodeNetwork.spec.ts +0 -56
- package/tests/network/testData.ts +0 -1708
- package/tests/testData.ts +0 -140
- package/tests/testUtils.ts +0 -22
- package/tsconfig.build.json +0 -9
- package/tsconfig.build.tsbuildinfo +0 -1
- package/tsconfig.json +0 -9
- package/vitest.config.ts +0 -18
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
import { ErgoNetworkType } from '@rosen-bridge/scanner-interfaces';
|
|
2
|
-
import { MockedInitializableErgoExtractor } from './AbstractInitializable.mock';
|
|
3
|
-
import { transactionBatch } from './testData';
|
|
4
|
-
import { RETRIAL_COUNT } from '../../lib/constants';
|
|
5
|
-
describe('AbstractInitializableErgoExtractor', () => {
|
|
6
|
-
describe('getTotalTxCount', () => {
|
|
7
|
-
/**
|
|
8
|
-
* @target getTotalTxCount should return the total tx count
|
|
9
|
-
* @dependencies
|
|
10
|
-
* - explorer network
|
|
11
|
-
* @scenario
|
|
12
|
-
* - mock extractor
|
|
13
|
-
* - mock `getAddressTransactionsWithOffsetLimit` in node network
|
|
14
|
-
* - run test (call `getTotalTxCount`)
|
|
15
|
-
* @expected
|
|
16
|
-
* - return one total tx count
|
|
17
|
-
*/
|
|
18
|
-
it('should return the total tx count', async () => {
|
|
19
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Node, 'node_url', 'address');
|
|
20
|
-
extractor['network'].getAddressTransactionsWithOffsetLimit = vitest.fn().mockResolvedValue({
|
|
21
|
-
items: [],
|
|
22
|
-
total: 196704,
|
|
23
|
-
});
|
|
24
|
-
const totalTxCount = await extractor['getTotalTxCount']();
|
|
25
|
-
expect(totalTxCount).toEqual(196704);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
describe('processTransactionBatch', () => {
|
|
29
|
-
/**
|
|
30
|
-
* @target processTransactionBatch should group transactions and process them in correct order
|
|
31
|
-
* @dependencies
|
|
32
|
-
* @scenario
|
|
33
|
-
* - mock extractor
|
|
34
|
-
* - spy `processTransactions`
|
|
35
|
-
* - run test (call `processTransactionBatch`)
|
|
36
|
-
* @expected
|
|
37
|
-
* - to group txs in two blocks
|
|
38
|
-
* - to process each blocks transaction separately
|
|
39
|
-
*/
|
|
40
|
-
it('should group transactions and process them in correct order', async () => {
|
|
41
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Node, 'node_url', 'address');
|
|
42
|
-
const processSpy = vitest.fn().mockResolvedValue(true);
|
|
43
|
-
extractor.processTransactions = processSpy;
|
|
44
|
-
await extractor['processTransactionBatch'](transactionBatch);
|
|
45
|
-
expect(processSpy).toBeCalledTimes(2);
|
|
46
|
-
expect(processSpy).toHaveBeenCalledWith([transactionBatch[2]], {
|
|
47
|
-
hash: '92eaff11a4a1c29b8654473258f9d837e9ce99fc0a8a4f27c484d5871afcde64',
|
|
48
|
-
height: 1320698,
|
|
49
|
-
});
|
|
50
|
-
expect(processSpy).toHaveBeenLastCalledWith(transactionBatch.slice(0, 2), {
|
|
51
|
-
hash: 'b861e2134821fcf1fcdad7e6edd56c4e4495b42b2fd72762a4c79ed1db78b44b',
|
|
52
|
-
height: 1320705,
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
/**
|
|
56
|
-
* @target processTransactionBatch should throw error when processing transactions fails for a block
|
|
57
|
-
* @dependencies
|
|
58
|
-
* @scenario
|
|
59
|
-
* - mock extractor
|
|
60
|
-
* - spy `processTransactions` to return false (always fails)
|
|
61
|
-
* - run test (call `processTransactionBatch`)
|
|
62
|
-
* @expected
|
|
63
|
-
* - to throw error
|
|
64
|
-
*/
|
|
65
|
-
it('should throw error when processing transactions fails for a block', async () => {
|
|
66
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Node, 'node_url', 'address');
|
|
67
|
-
extractor.processTransactions = vitest.fn().mockResolvedValue(false);
|
|
68
|
-
await expect(() => extractor['processTransactionBatch'](transactionBatch)).rejects.toThrowError();
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
describe('initWithRetrial', () => {
|
|
72
|
-
/**
|
|
73
|
-
* @target initWithRetrial should not run the init job when its not set
|
|
74
|
-
* @dependencies
|
|
75
|
-
* - database
|
|
76
|
-
* @scenario
|
|
77
|
-
* - mock extractor with false initialization
|
|
78
|
-
* - mock `removeAllData` in database actions
|
|
79
|
-
* - mock init job
|
|
80
|
-
* - run test (call `initWithRetrial`)
|
|
81
|
-
* @expected
|
|
82
|
-
* - not to remove database old data
|
|
83
|
-
* - not to run the init job
|
|
84
|
-
*/
|
|
85
|
-
it('should not run the init job when its not set', async () => {
|
|
86
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Node, 'node_url', 'address', undefined, false);
|
|
87
|
-
const removeSpy = vitest.fn();
|
|
88
|
-
extractor['actions'] = {
|
|
89
|
-
removeAllData: removeSpy,
|
|
90
|
-
};
|
|
91
|
-
const initSpy = vitest.fn();
|
|
92
|
-
await extractor['initWithRetrial'](initSpy);
|
|
93
|
-
expect(removeSpy).not.toHaveBeenCalled();
|
|
94
|
-
expect(initSpy).not.toHaveBeenCalled();
|
|
95
|
-
});
|
|
96
|
-
/**
|
|
97
|
-
* @target initWithRetrial should call init job once
|
|
98
|
-
* @dependencies
|
|
99
|
-
* - database
|
|
100
|
-
* @scenario
|
|
101
|
-
* - mock extractor
|
|
102
|
-
* - mock `removeAllData` in database actions
|
|
103
|
-
* - mock init job
|
|
104
|
-
* - run test (call `initWithRetrial`)
|
|
105
|
-
* @expected
|
|
106
|
-
* - to remove database old data once
|
|
107
|
-
* - call init job once
|
|
108
|
-
*/
|
|
109
|
-
it('should call init job once', async () => {
|
|
110
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Node, 'node_url', 'address');
|
|
111
|
-
const removeSpy = vitest.fn();
|
|
112
|
-
extractor['actions'] = {
|
|
113
|
-
removeAllData: removeSpy,
|
|
114
|
-
};
|
|
115
|
-
const initSpy = vitest.fn();
|
|
116
|
-
await extractor['initWithRetrial'](initSpy);
|
|
117
|
-
expect(removeSpy).toHaveBeenCalledOnce();
|
|
118
|
-
expect(initSpy).toHaveBeenCalledOnce();
|
|
119
|
-
});
|
|
120
|
-
/**
|
|
121
|
-
* @target initWithRetrial should call init job RETRIAL_COUNT number of times
|
|
122
|
-
* @dependencies
|
|
123
|
-
* - database
|
|
124
|
-
* @scenario
|
|
125
|
-
* - mock extractor
|
|
126
|
-
* - mock `removeAllData` in database actions
|
|
127
|
-
* - mock init job to throw error
|
|
128
|
-
* - run test (call `initWithRetrial`)
|
|
129
|
-
* @expected
|
|
130
|
-
* - to remove database old data once
|
|
131
|
-
* - call init job RETRIAL_COUNT number of times
|
|
132
|
-
* - to throw error after trials
|
|
133
|
-
*/
|
|
134
|
-
it('should call init job RETRIAL_COUNT number of times', async () => {
|
|
135
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Node, 'node_url', 'address');
|
|
136
|
-
const removeSpy = vitest.fn();
|
|
137
|
-
extractor['actions'] = {
|
|
138
|
-
removeAllData: removeSpy,
|
|
139
|
-
};
|
|
140
|
-
const initSpy = vitest.fn().mockRejectedValue(0);
|
|
141
|
-
await expect(async () => await extractor['initWithRetrial'](initSpy)).rejects.toThrowError();
|
|
142
|
-
expect(removeSpy).toHaveBeenCalledOnce();
|
|
143
|
-
expect(initSpy).toHaveBeenCalledTimes(RETRIAL_COUNT);
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
describe('initializeWithNode', () => {
|
|
147
|
-
/**
|
|
148
|
-
* @target initializeWithNode should process all transactions bellow the init height twice
|
|
149
|
-
* @dependencies
|
|
150
|
-
* - node network
|
|
151
|
-
* @scenario
|
|
152
|
-
* - mock extractor
|
|
153
|
-
* - mock `getAddressTransactionsWithOffsetLimit` in node network
|
|
154
|
-
* - mock `initWithRetrial` to run the job once
|
|
155
|
-
* - mock `getTotalTxCount` to return 3
|
|
156
|
-
* - run test (call `initializeWithNode`)
|
|
157
|
-
* @expected
|
|
158
|
-
* - to filter the transactions and process the txs bellow the init height
|
|
159
|
-
* - to process all filtered transactions twice
|
|
160
|
-
*/
|
|
161
|
-
it('should process all transactions bellow the init height twice', async () => {
|
|
162
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Node, 'node_url', 'address');
|
|
163
|
-
extractor['network'].getAddressTransactionsWithOffsetLimit = vitest.fn().mockResolvedValue({
|
|
164
|
-
items: transactionBatch,
|
|
165
|
-
total: 3,
|
|
166
|
-
});
|
|
167
|
-
extractor['initWithRetrial'] = async (job) => job();
|
|
168
|
-
extractor['getTotalTxCount'] = async () => 3;
|
|
169
|
-
const processSpy = vitest.fn();
|
|
170
|
-
extractor['processTransactionBatch'] = processSpy;
|
|
171
|
-
await extractor['initializeWithNode']({ hash: 'hash', height: 1320698 });
|
|
172
|
-
expect(processSpy).toBeCalledTimes(2);
|
|
173
|
-
expect(processSpy).toBeCalledWith([transactionBatch[2]]);
|
|
174
|
-
});
|
|
175
|
-
/**
|
|
176
|
-
* @target initializeWithNode should throw error when total transaction count changes
|
|
177
|
-
* @dependencies
|
|
178
|
-
* - node network
|
|
179
|
-
* @scenario
|
|
180
|
-
* - mock extractor
|
|
181
|
-
* - mock `getAddressTransactionsWithOffsetLimit` in node network
|
|
182
|
-
* - mock `initWithRetrial` to run the job once
|
|
183
|
-
* - mock `getTotalTxCount` to return 3 then 4
|
|
184
|
-
* - run test (call `initializeWithNode`)
|
|
185
|
-
* @expected
|
|
186
|
-
* - to throw error when the number of transactions change during initialization
|
|
187
|
-
*/
|
|
188
|
-
it('should throw error when total transaction count changes', async () => {
|
|
189
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Node, 'node_url', 'address');
|
|
190
|
-
extractor['network'].getAddressTransactionsWithOffsetLimit = vitest.fn().mockResolvedValue({
|
|
191
|
-
items: transactionBatch,
|
|
192
|
-
total: 3,
|
|
193
|
-
});
|
|
194
|
-
extractor['initWithRetrial'] = async (job) => job();
|
|
195
|
-
extractor['getTotalTxCount'] = vitest
|
|
196
|
-
.fn()
|
|
197
|
-
.mockResolvedValueOnce(3)
|
|
198
|
-
.mockResolvedValue(4);
|
|
199
|
-
extractor['processTransactionBatch'] = vitest.fn();
|
|
200
|
-
expect(() => extractor['initializeWithNode']({ hash: 'hash', height: 1320698 })).rejects.toThrowError();
|
|
201
|
-
});
|
|
202
|
-
});
|
|
203
|
-
describe('initializeWithExplorer', () => {
|
|
204
|
-
/**
|
|
205
|
-
* @target initializeWithExplorer should limit the height and process
|
|
206
|
-
* transactions when they are less than the API_LIMIT
|
|
207
|
-
* @dependencies
|
|
208
|
-
* - explorer network
|
|
209
|
-
* @scenario
|
|
210
|
-
* - mock extractor
|
|
211
|
-
* - mock `initWithRetrial` to run the job once
|
|
212
|
-
* - mock `getAddressTransactionsWithHeight` in explorer network
|
|
213
|
-
* return API_LIMIT transactions in first call (to limit the height range)
|
|
214
|
-
* return 0 transactions in second call (to pass a range without process)
|
|
215
|
-
* return transactionBatch in last call (to process the transactions when they are less than API_LIMIT)
|
|
216
|
-
* - run test (call `initializeWithExplorer`)
|
|
217
|
-
* @expected
|
|
218
|
-
* - to limit the height when the transaction count is equal to API_LIMIT
|
|
219
|
-
* - to cover all height ranges
|
|
220
|
-
* - to process transactions when they are less than API_LIMIT
|
|
221
|
-
*/
|
|
222
|
-
it(`should limit the height and process transactions when they are less than
|
|
223
|
-
the API_LIMIT`, async () => {
|
|
224
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Explorer, 'explorer_url', 'address');
|
|
225
|
-
extractor['initWithRetrial'] = async (job) => job();
|
|
226
|
-
const addressTxSpy = vitest
|
|
227
|
-
.fn()
|
|
228
|
-
.mockResolvedValueOnce(new Array(100).fill(transactionBatch[0]))
|
|
229
|
-
.mockResolvedValueOnce([])
|
|
230
|
-
.mockResolvedValueOnce(transactionBatch);
|
|
231
|
-
extractor['network'].getAddressTransactionsWithHeight = addressTxSpy;
|
|
232
|
-
const processSpy = vitest.fn();
|
|
233
|
-
extractor['processTransactionBatch'] = processSpy;
|
|
234
|
-
await extractor['initializeWithExplorer']({
|
|
235
|
-
hash: 'hash',
|
|
236
|
-
height: 1320800,
|
|
237
|
-
});
|
|
238
|
-
expect(addressTxSpy).toHaveBeenCalledWith('address', 0, 1320800);
|
|
239
|
-
expect(addressTxSpy).toHaveBeenCalledWith('address', 0, 660400);
|
|
240
|
-
expect(addressTxSpy).toHaveBeenLastCalledWith('address', 660401, 1320800);
|
|
241
|
-
expect(processSpy).toHaveBeenCalledTimes(1);
|
|
242
|
-
expect(processSpy).toHaveBeenCalledWith(transactionBatch);
|
|
243
|
-
});
|
|
244
|
-
/**
|
|
245
|
-
* @target initializeWithExplorer should process all block transactions when
|
|
246
|
-
* the number of transactions in the block is more than API_LIMIT
|
|
247
|
-
* @dependencies
|
|
248
|
-
* - explorer network
|
|
249
|
-
* @scenario
|
|
250
|
-
* - mock extractor
|
|
251
|
-
* - mock `initWithRetrial` to run the job once
|
|
252
|
-
* - mock `getAddressTransactionsWithHeight` to return 100 transactions in one block
|
|
253
|
-
* - spy all other functions to check the calls
|
|
254
|
-
* - run test (call `initializeWithExplorer`)
|
|
255
|
-
* @expected
|
|
256
|
-
* - to process all transactions in block 1320000
|
|
257
|
-
* - not to stuck at a large block and complete the process
|
|
258
|
-
*/
|
|
259
|
-
it(`should process all block transactions when the number of transactions in
|
|
260
|
-
the block is more than API_LIMIT`, async () => {
|
|
261
|
-
// mock extractor
|
|
262
|
-
const extractor = new MockedInitializableErgoExtractor(ErgoNetworkType.Explorer, 'explorer_url', 'address');
|
|
263
|
-
// mock `initWithRetrial` to run the job once
|
|
264
|
-
extractor['initWithRetrial'] = async (job) => job();
|
|
265
|
-
// mock `getAddressTransactionsWithHeight` to return 100 transactions in one block
|
|
266
|
-
const exNetwork = extractor['network'];
|
|
267
|
-
const addressTxSpy = vitest
|
|
268
|
-
.fn()
|
|
269
|
-
.mockImplementation((address, fromHeight, toHeight) => {
|
|
270
|
-
if (fromHeight <= 1320000 && toHeight >= 1320000)
|
|
271
|
-
return new Array(100).fill(transactionBatch[0]);
|
|
272
|
-
return [];
|
|
273
|
-
});
|
|
274
|
-
exNetwork.getAddressTransactionsWithHeight = addressTxSpy;
|
|
275
|
-
// spy all other functions to check the calls
|
|
276
|
-
const blockIdSpy = vi.fn().mockResolvedValue('blockId');
|
|
277
|
-
const blockTxsSpy = vi.fn().mockResolvedValue([]);
|
|
278
|
-
exNetwork.getBlockIdAtHeight = blockIdSpy;
|
|
279
|
-
exNetwork.getBlockTxs = blockTxsSpy;
|
|
280
|
-
const processSpy = vitest.fn();
|
|
281
|
-
const processBatchSpy = vitest.fn();
|
|
282
|
-
extractor.processTransactions = processSpy;
|
|
283
|
-
extractor['processTransactionBatch'] = processBatchSpy;
|
|
284
|
-
// run test (call `initializeWithExplorer`)
|
|
285
|
-
await extractor['initializeWithExplorer']({
|
|
286
|
-
hash: 'hash',
|
|
287
|
-
height: 1320800,
|
|
288
|
-
});
|
|
289
|
-
expect(blockIdSpy).toHaveBeenCalledWith(1320000);
|
|
290
|
-
expect(blockTxsSpy).toHaveBeenCalledWith('blockId');
|
|
291
|
-
expect(processSpy).toHaveBeenCalledWith([], {
|
|
292
|
-
hash: 'blockId',
|
|
293
|
-
height: 1320000,
|
|
294
|
-
});
|
|
295
|
-
expect(processBatchSpy).not.toBeCalled();
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
});
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0cy9pbml0aWFsaXphYmxlL0Fic3RyYWN0SW5pdGlhbGl6YWJsZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVFuRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3BELFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7SUFDbEQsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtRQUMvQjs7Ozs7Ozs7OztXQVVHO1FBQ0gsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2hELE1BQU0sU0FBUyxHQUFHLElBQUksZ0NBQWdDLENBQ3BELGVBQWUsQ0FBQyxJQUFJLEVBQ3BCLFVBQVUsRUFDVixTQUFTLENBQ1YsQ0FBQztZQUVBLFNBQVMsQ0FBQyxTQUFTLENBQ3BCLENBQUMscUNBQXFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUN0RSxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsTUFBTTthQUNkLENBQUMsQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLE1BQU0sU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUMxRCxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO1FBQ3ZDOzs7Ozs7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QyxHQUFHLGVBQWUsQ0FBQztZQUN2RCwyQ0FBMkM7WUFDM0MsTUFBTSxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLE9BQU87YUFDaEIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLEVBQUUsU0FBUztnQkFDZixNQUFNLEVBQUUsT0FBTzthQUNoQixDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVyZ29OZXR3b3JrVHlwZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgTm9kZU5ldHdvcmssXG4gIEFic3RyYWN0Qm94RGF0YSxcbiAgRXhwbG9yZXJOZXR3b3JrLFxuICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHksXG59IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgeyBNb2NrZWRJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvciB9IGZyb20gJy4vQWJzdHJhY3RJbml0aWFsaXphYmxlLm1vY2snO1xuaW1wb3J0IHsgdHJhbnNhY3Rpb25CYXRjaCB9IGZyb20gJy4vdGVzdERhdGEnO1xuaW1wb3J0IHsgUkVUUklBTF9DT1VOVCB9IGZyb20gJy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbiB9IGZyb20gJy4uLy4uL2xpYi9lcmdvL2luaXRpYWxpemFibGUnO1xuXG5kZXNjcmliZSgnQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvcicsICgpID0+IHtcbiAgZGVzY3JpYmUoJ2dldFRvdGFsVHhDb3VudCcsICgpID0+IHtcbiAgICAvKipcbiAgICAgKiBAdGFyZ2V0IGdldFRvdGFsVHhDb3VudCBzaG91bGQgcmV0dXJuIHRoZSB0b3RhbCB0eCBjb3VudFxuICAgICAqIEBkZXBlbmRlbmNpZXNcbiAgICAgKiAtIGV4cGxvcmVyIG5ldHdvcmtcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIG1vY2sgZXh0cmFjdG9yXG4gICAgICogLSBtb2NrIGBnZXRBZGRyZXNzVHJhbnNhY3Rpb25zV2l0aE9mZnNldExpbWl0YCBpbiBub2RlIG5ldHdvcmtcbiAgICAgKiAtIHJ1biB0ZXN0IChjYWxsIGBnZXRUb3RhbFR4Q291bnRgKVxuICAgICAqIEBleHBlY3RlZFxuICAgICAqIC0gcmV0dXJuIG9uZSB0b3RhbCB0eCBjb3VudFxuICAgICAqL1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSB0b3RhbCB0eCBjb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhY3RvciA9IG5ldyBNb2NrZWRJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvcihcbiAgICAgICAgRXJnb05ldHdvcmtUeXBlLk5vZGUsXG4gICAgICAgICdub2RlX3VybCcsXG4gICAgICAgICdhZGRyZXNzJyxcbiAgICAgICk7XG4gICAgICAoXG4gICAgICAgIGV4dHJhY3RvclsnbmV0d29yayddIGFzIE5vZGVOZXR3b3JrXG4gICAgICApLmdldEFkZHJlc3NUcmFuc2FjdGlvbnNXaXRoT2Zmc2V0TGltaXQgPSB2aXRlc3QuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgdG90YWw6IDE5NjcwNCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdG90YWxUeENvdW50ID0gYXdhaXQgZXh0cmFjdG9yWydnZXRUb3RhbFR4Q291bnQnXSgpO1xuICAgICAgZXhwZWN0KHRvdGFsVHhDb3VudCkudG9FcXVhbCgxOTY3MDQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncHJvY2Vzc1RyYW5zYWN0aW9uQmF0Y2gnLCAoKSA9PiB7XG4gICAgLyoqXG4gICAgICogQHRhcmdldCBwcm9jZXNzVHJhbnNhY3Rpb25CYXRjaCBzaG91bGQgZ3JvdXAgdHJhbnNhY3Rpb25zIGFuZCBwcm9jZXNzIHRoZW0gaW4gY29ycmVjdCBvcmRlclxuICAgICAqIEBkZXBlbmRlbmNpZXNcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIG1vY2sgZXh0cmFjdG9yXG4gICAgICogLSBzcHkgYHByb2Nlc3NUcmFuc2FjdGlvbnNgXG4gICAgICogLSBydW4gdGVzdCAoY2FsbCBgcHJvY2Vzc1RyYW5zYWN0aW9uQmF0Y2hgKVxuICAgICAqIEBleHBlY3RlZFxuICAgICAqIC0gdG8gZ3JvdXAgdHhzIGluIHR3byBibG9ja3NcbiAgICAgKiAtIHRvIHByb2Nlc3MgZWFjaCBibG9ja3MgdHJhbnNhY3Rpb24gc2VwYXJhdGVseVxuICAgICAqL1xuICAgIGl0KCdzaG91bGQgZ3JvdXAgdHJhbnNhY3Rpb25zIGFuZCBwcm9jZXNzIHRoZW0gaW4gY29ycmVjdCBvcmRlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhY3RvciA9IG5ldyBNb2NrZWRJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvcihcbiAgICAgICAgRXJnb05ldHdvcmtUeXBlLk5vZGUsXG4gICAgICAgICdub2RlX3VybCcsXG4gICAgICAgICdhZGRyZXNzJyxcbiAgICAgICk7XG4gICAgICBjb25zdCBwcm9jZXNzU3B5ID0gdml0ZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUodHJ1ZSk7XG4gICAgICBleHRyYWN0b3IucHJvY2Vzc1RyYW5zYWN0aW9ucyA9IHByb2Nlc3NTcHk7XG4gICAgICBhd2FpdCBleHRyYWN0b3JbJ3Byb2Nlc3NUcmFuc2FjdGlvbkJhdGNoJ10odHJhbnNhY3Rpb25CYXRjaCk7XG4gICAgICBleHBlY3QocHJvY2Vzc1NweSkudG9CZUNhbGxlZFRpbWVzKDIpO1xuICAgICAgZXhwZWN0KHByb2Nlc3NTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFt0cmFuc2FjdGlvbkJhdGNoWzJdXSwge1xuICAgICAgICBoYXNoOiAnOTJlYWZmMTFhNGExYzI5Yjg2NTQ0NzMyNThmOWQ4MzdlOWNlOTlmYzBhOGE0ZjI3YzQ4NGQ1ODcxYWZjZGU2NCcsXG4gICAgICAgIGhlaWdodDogMTMyMDY5OCxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHByb2Nlc3NTcHkpLnRvSGF2ZUJlZW5MYXN0Q2FsbGVkV2l0aChcbiAgICAgICAgdHJhbnNhY3Rpb25CYXRjaC5zbGljZSgwLCAyKSxcbiAgICAgICAge1xuICAgICAgICAgIGhhc2g6ICdiODYxZTIxMzQ4MjFmY2YxZmNkYWQ3ZTZlZGQ1NmM0ZTQ0OTViNDJiMmZkNzI3NjJhNGM3OWVkMWRiNzhiNDRiJyxcbiAgICAgICAgICBoZWlnaHQ6IDEzMjA3MDUsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQHRhcmdldCBwcm9jZXNzVHJhbnNhY3Rpb25CYXRjaCBzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBwcm9jZXNzaW5nIHRyYW5zYWN0aW9ucyBmYWlscyBmb3IgYSBibG9ja1xuICAgICAqIEBkZXBlbmRlbmNpZXNcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIG1vY2sgZXh0cmFjdG9yXG4gICAgICogLSBzcHkgYHByb2Nlc3NUcmFuc2FjdGlvbnNgIHRvIHJldHVybiBmYWxzZSAoYWx3YXlzIGZhaWxzKVxuICAgICAqIC0gcnVuIHRlc3QgKGNhbGwgYHByb2Nlc3NUcmFuc2FjdGlvbkJhdGNoYClcbiAgICAgKiBAZXhwZWN0ZWRcbiAgICAgKiAtIHRvIHRocm93IGVycm9yXG4gICAgICovXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHByb2Nlc3NpbmcgdHJhbnNhY3Rpb25zIGZhaWxzIGZvciBhIGJsb2NrJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXh0cmFjdG9yID0gbmV3IE1vY2tlZEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yKFxuICAgICAgICBFcmdvTmV0d29ya1R5cGUuTm9kZSxcbiAgICAgICAgJ25vZGVfdXJsJyxcbiAgICAgICAgJ2FkZHJlc3MnLFxuICAgICAgKTtcbiAgICAgIGV4dHJhY3Rvci5wcm9jZXNzVHJhbnNhY3Rpb25zID0gdml0ZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoZmFsc2UpO1xuICAgICAgYXdhaXQgZXhwZWN0KCgpID0+XG4gICAgICAgIGV4dHJhY3RvclsncHJvY2Vzc1RyYW5zYWN0aW9uQmF0Y2gnXSh0cmFuc2FjdGlvbkJhdGNoKSxcbiAgICAgICkucmVqZWN0cy50b1Rocm93RXJyb3IoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2luaXRXaXRoUmV0cmlhbCcsICgpID0+IHtcbiAgICAvKipcbiAgICAgKiBAdGFyZ2V0IGluaXRXaXRoUmV0cmlhbCBzaG91bGQgbm90IHJ1biB0aGUgaW5pdCBqb2Igd2hlbiBpdHMgbm90IHNldFxuICAgICAqIEBkZXBlbmRlbmNpZXNcbiAgICAgKiAtIGRhdGFiYXNlXG4gICAgICogQHNjZW5hcmlvXG4gICAgICogLSBtb2NrIGV4dHJhY3RvciB3aXRoIGZhbHNlIGluaXRpYWxpemF0aW9uXG4gICAgICogLSBtb2NrIGByZW1vdmVBbGxEYXRhYCBpbiBkYXRhYmFzZSBhY3Rpb25zXG4gICAgICogLSBtb2NrIGluaXQgam9iXG4gICAgICogLSBydW4gdGVzdCAoY2FsbCBgaW5pdFdpdGhSZXRyaWFsYClcbiAgICAgKiBAZXhwZWN0ZWRcbiAgICAgKiAtIG5vdCB0byByZW1vdmUgZGF0YWJhc2Ugb2xkIGRhdGFcbiAgICAgKiAtIG5vdCB0byBydW4gdGhlIGluaXQgam9iXG4gICAgICovXG4gICAgaXQoJ3Nob3VsZCBub3QgcnVuIHRoZSBpbml0IGpvYiB3aGVuIGl0cyBub3Qgc2V0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXh0cmFjdG9yID0gbmV3IE1vY2tlZEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yKFxuICAgICAgICBFcmdvTmV0d29ya1R5cGUuTm9kZSxcbiAgICAgICAgJ25vZGVfdXJsJyxcbiAgICAgICAgJ2FkZHJlc3MnLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGZhbHNlLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlbW92ZVNweSA9IHZpdGVzdC5mbigpO1xuICAgICAgZXh0cmFjdG9yWydhY3Rpb25zJ10gPSB7XG4gICAgICAgIHJlbW92ZUFsbERhdGE6IHJlbW92ZVNweSxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBBYnN0cmFjdEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yQWN0aW9uPFxuICAgICAgICBBYnN0cmFjdEJveERhdGEsXG4gICAgICAgIEFic3RyYWN0RXJnb0V4dHJhY3RvckVudGl0eVxuICAgICAgPjtcbiAgICAgIGNvbnN0IGluaXRTcHkgPSB2aXRlc3QuZm4oKTtcbiAgICAgIGF3YWl0IGV4dHJhY3RvclsnaW5pdFdpdGhSZXRyaWFsJ10oaW5pdFNweSk7XG4gICAgICBleHBlY3QocmVtb3ZlU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgZXhwZWN0KGluaXRTcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBAdGFyZ2V0IGluaXRXaXRoUmV0cmlhbCBzaG91bGQgY2FsbCBpbml0IGpvYiBvbmNlXG4gICAgICogQGRlcGVuZGVuY2llc1xuICAgICAqIC0gZGF0YWJhc2VcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIG1vY2sgZXh0cmFjdG9yXG4gICAgICogLSBtb2NrIGByZW1vdmVBbGxEYXRhYCBpbiBkYXRhYmFzZSBhY3Rpb25zXG4gICAgICogLSBtb2NrIGluaXQgam9iXG4gICAgICogLSBydW4gdGVzdCAoY2FsbCBgaW5pdFdpdGhSZXRyaWFsYClcbiAgICAgKiBAZXhwZWN0ZWRcbiAgICAgKiAtIHRvIHJlbW92ZSBkYXRhYmFzZSBvbGQgZGF0YSBvbmNlXG4gICAgICogLSBjYWxsIGluaXQgam9iIG9uY2VcbiAgICAgKi9cbiAgICBpdCgnc2hvdWxkIGNhbGwgaW5pdCBqb2Igb25jZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhY3RvciA9IG5ldyBNb2NrZWRJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvcihcbiAgICAgICAgRXJnb05ldHdvcmtUeXBlLk5vZGUsXG4gICAgICAgICdub2RlX3VybCcsXG4gICAgICAgICdhZGRyZXNzJyxcbiAgICAgICk7XG4gICAgICBjb25zdCByZW1vdmVTcHkgPSB2aXRlc3QuZm4oKTtcbiAgICAgIGV4dHJhY3RvclsnYWN0aW9ucyddID0ge1xuICAgICAgICByZW1vdmVBbGxEYXRhOiByZW1vdmVTcHksXG4gICAgICB9IGFzIHVua25vd24gYXMgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbjxcbiAgICAgICAgQWJzdHJhY3RCb3hEYXRhLFxuICAgICAgICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHlcbiAgICAgID47XG4gICAgICBjb25zdCBpbml0U3B5ID0gdml0ZXN0LmZuKCk7XG4gICAgICBhd2FpdCBleHRyYWN0b3JbJ2luaXRXaXRoUmV0cmlhbCddKGluaXRTcHkpO1xuICAgICAgZXhwZWN0KHJlbW92ZVNweSkudG9IYXZlQmVlbkNhbGxlZE9uY2UoKTtcbiAgICAgIGV4cGVjdChpbml0U3B5KS50b0hhdmVCZWVuQ2FsbGVkT25jZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQHRhcmdldCBpbml0V2l0aFJldHJpYWwgc2hvdWxkIGNhbGwgaW5pdCBqb2IgUkVUUklBTF9DT1VOVCBudW1iZXIgb2YgdGltZXNcbiAgICAgKiBAZGVwZW5kZW5jaWVzXG4gICAgICogLSBkYXRhYmFzZVxuICAgICAqIEBzY2VuYXJpb1xuICAgICAqIC0gbW9jayBleHRyYWN0b3JcbiAgICAgKiAtIG1vY2sgYHJlbW92ZUFsbERhdGFgIGluIGRhdGFiYXNlIGFjdGlvbnNcbiAgICAgKiAtIG1vY2sgaW5pdCBqb2IgdG8gdGhyb3cgZXJyb3JcbiAgICAgKiAtIHJ1biB0ZXN0IChjYWxsIGBpbml0V2l0aFJldHJpYWxgKVxuICAgICAqIEBleHBlY3RlZFxuICAgICAqIC0gdG8gcmVtb3ZlIGRhdGFiYXNlIG9sZCBkYXRhIG9uY2VcbiAgICAgKiAtIGNhbGwgaW5pdCBqb2IgUkVUUklBTF9DT1VOVCBudW1iZXIgb2YgdGltZXNcbiAgICAgKiAtIHRvIHRocm93IGVycm9yIGFmdGVyIHRyaWFsc1xuICAgICAqL1xuICAgIGl0KCdzaG91bGQgY2FsbCBpbml0IGpvYiBSRVRSSUFMX0NPVU5UIG51bWJlciBvZiB0aW1lcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhY3RvciA9IG5ldyBNb2NrZWRJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvcihcbiAgICAgICAgRXJnb05ldHdvcmtUeXBlLk5vZGUsXG4gICAgICAgICdub2RlX3VybCcsXG4gICAgICAgICdhZGRyZXNzJyxcbiAgICAgICk7XG4gICAgICBjb25zdCByZW1vdmVTcHkgPSB2aXRlc3QuZm4oKTtcbiAgICAgIGV4dHJhY3RvclsnYWN0aW9ucyddID0ge1xuICAgICAgICByZW1vdmVBbGxEYXRhOiByZW1vdmVTcHksXG4gICAgICB9IGFzIHVua25vd24gYXMgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbjxcbiAgICAgICAgQWJzdHJhY3RCb3hEYXRhLFxuICAgICAgICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHlcbiAgICAgID47XG4gICAgICBjb25zdCBpbml0U3B5ID0gdml0ZXN0LmZuKCkubW9ja1JlamVjdGVkVmFsdWUoMCk7XG4gICAgICBhd2FpdCBleHBlY3QoXG4gICAgICAgIGFzeW5jICgpID0+IGF3YWl0IGV4dHJhY3RvclsnaW5pdFdpdGhSZXRyaWFsJ10oaW5pdFNweSksXG4gICAgICApLnJlamVjdHMudG9UaHJvd0Vycm9yKCk7XG4gICAgICBleHBlY3QocmVtb3ZlU3B5KS50b0hhdmVCZWVuQ2FsbGVkT25jZSgpO1xuICAgICAgZXhwZWN0KGluaXRTcHkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcyhSRVRSSUFMX0NPVU5UKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2luaXRpYWxpemVXaXRoTm9kZScsICgpID0+IHtcbiAgICAvKipcbiAgICAgKiBAdGFyZ2V0IGluaXRpYWxpemVXaXRoTm9kZSBzaG91bGQgcHJvY2VzcyBhbGwgdHJhbnNhY3Rpb25zIGJlbGxvdyB0aGUgaW5pdCBoZWlnaHQgdHdpY2VcbiAgICAgKiBAZGVwZW5kZW5jaWVzXG4gICAgICogLSBub2RlIG5ldHdvcmtcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIG1vY2sgZXh0cmFjdG9yXG4gICAgICogLSBtb2NrIGBnZXRBZGRyZXNzVHJhbnNhY3Rpb25zV2l0aE9mZnNldExpbWl0YCBpbiBub2RlIG5ldHdvcmtcbiAgICAgKiAtIG1vY2sgYGluaXRXaXRoUmV0cmlhbGAgdG8gcnVuIHRoZSBqb2Igb25jZVxuICAgICAqIC0gbW9jayBgZ2V0VG90YWxUeENvdW50YCB0byByZXR1cm4gM1xuICAgICAqIC0gcnVuIHRlc3QgKGNhbGwgYGluaXRpYWxpemVXaXRoTm9kZWApXG4gICAgICogQGV4cGVjdGVkXG4gICAgICogLSB0byBmaWx0ZXIgdGhlIHRyYW5zYWN0aW9ucyBhbmQgcHJvY2VzcyB0aGUgdHhzIGJlbGxvdyB0aGUgaW5pdCBoZWlnaHRcbiAgICAgKiAtIHRvIHByb2Nlc3MgYWxsIGZpbHRlcmVkIHRyYW5zYWN0aW9ucyB0d2ljZVxuICAgICAqL1xuICAgIGl0KCdzaG91bGQgcHJvY2VzcyBhbGwgdHJhbnNhY3Rpb25zIGJlbGxvdyB0aGUgaW5pdCBoZWlnaHQgdHdpY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBleHRyYWN0b3IgPSBuZXcgTW9ja2VkSW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3IoXG4gICAgICAgIEVyZ29OZXR3b3JrVHlwZS5Ob2RlLFxuICAgICAgICAnbm9kZV91cmwnLFxuICAgICAgICAnYWRkcmVzcycsXG4gICAgICApO1xuICAgICAgKFxuICAgICAgICBleHRyYWN0b3JbJ25ldHdvcmsnXSBhcyBOb2RlTmV0d29ya1xuICAgICAgKS5nZXRBZGRyZXNzVHJhbnNhY3Rpb25zV2l0aE9mZnNldExpbWl0ID0gdml0ZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICBpdGVtczogdHJhbnNhY3Rpb25CYXRjaCxcbiAgICAgICAgdG90YWw6IDMsXG4gICAgICB9KTtcbiAgICAgIGV4dHJhY3RvclsnaW5pdFdpdGhSZXRyaWFsJ10gPSBhc3luYyAoam9iOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSA9PiBqb2IoKTtcbiAgICAgIGV4dHJhY3RvclsnZ2V0VG90YWxUeENvdW50J10gPSBhc3luYyAoKSA9PiAzO1xuICAgICAgY29uc3QgcHJvY2Vzc1NweSA9IHZpdGVzdC5mbigpO1xuICAgICAgZXh0cmFjdG9yWydwcm9jZXNzVHJhbnNhY3Rpb25CYXRjaCddID0gcHJvY2Vzc1NweTtcbiAgICAgIGF3YWl0IGV4dHJhY3RvclsnaW5pdGlhbGl6ZVdpdGhOb2RlJ10oeyBoYXNoOiAnaGFzaCcsIGhlaWdodDogMTMyMDY5OCB9KTtcbiAgICAgIGV4cGVjdChwcm9jZXNzU3B5KS50b0JlQ2FsbGVkVGltZXMoMik7XG4gICAgICBleHBlY3QocHJvY2Vzc1NweSkudG9CZUNhbGxlZFdpdGgoW3RyYW5zYWN0aW9uQmF0Y2hbMl1dKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEB0YXJnZXQgaW5pdGlhbGl6ZVdpdGhOb2RlIHNob3VsZCB0aHJvdyBlcnJvciB3aGVuIHRvdGFsIHRyYW5zYWN0aW9uIGNvdW50IGNoYW5nZXNcbiAgICAgKiBAZGVwZW5kZW5jaWVzXG4gICAgICogLSBub2RlIG5ldHdvcmtcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIG1vY2sgZXh0cmFjdG9yXG4gICAgICogLSBtb2NrIGBnZXRBZGRyZXNzVHJhbnNhY3Rpb25zV2l0aE9mZnNldExpbWl0YCBpbiBub2RlIG5ldHdvcmtcbiAgICAgKiAtIG1vY2sgYGluaXRXaXRoUmV0cmlhbGAgdG8gcnVuIHRoZSBqb2Igb25jZVxuICAgICAqIC0gbW9jayBgZ2V0VG90YWxUeENvdW50YCB0byByZXR1cm4gMyB0aGVuIDRcbiAgICAgKiAtIHJ1biB0ZXN0IChjYWxsIGBpbml0aWFsaXplV2l0aE5vZGVgKVxuICAgICAqIEBleHBlY3RlZFxuICAgICAqIC0gdG8gdGhyb3cgZXJyb3Igd2hlbiB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBjaGFuZ2UgZHVyaW5nIGluaXRpYWxpemF0aW9uXG4gICAgICovXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHRvdGFsIHRyYW5zYWN0aW9uIGNvdW50IGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBleHRyYWN0b3IgPSBuZXcgTW9ja2VkSW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3IoXG4gICAgICAgIEVyZ29OZXR3b3JrVHlwZS5Ob2RlLFxuICAgICAgICAnbm9kZV91cmwnLFxuICAgICAgICAnYWRkcmVzcycsXG4gICAgICApO1xuICAgICAgKFxuICAgICAgICBleHRyYWN0b3JbJ25ldHdvcmsnXSBhcyBOb2RlTmV0d29ya1xuICAgICAgKS5nZXRBZGRyZXNzVHJhbnNhY3Rpb25zV2l0aE9mZnNldExpbWl0ID0gdml0ZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICBpdGVtczogdHJhbnNhY3Rpb25CYXRjaCxcbiAgICAgICAgdG90YWw6IDMsXG4gICAgICB9KTtcbiAgICAgIGV4dHJhY3RvclsnaW5pdFdpdGhSZXRyaWFsJ10gPSBhc3luYyAoam9iOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSA9PiBqb2IoKTtcbiAgICAgIGV4dHJhY3RvclsnZ2V0VG90YWxUeENvdW50J10gPSB2aXRlc3RcbiAgICAgICAgLmZuKClcbiAgICAgICAgLm1vY2tSZXNvbHZlZFZhbHVlT25jZSgzKVxuICAgICAgICAubW9ja1Jlc29sdmVkVmFsdWUoNCk7XG4gICAgICBleHRyYWN0b3JbJ3Byb2Nlc3NUcmFuc2FjdGlvbkJhdGNoJ10gPSB2aXRlc3QuZm4oKTtcbiAgICAgIGV4cGVjdCgoKSA9PlxuICAgICAgICBleHRyYWN0b3JbJ2luaXRpYWxpemVXaXRoTm9kZSddKHsgaGFzaDogJ2hhc2gnLCBoZWlnaHQ6IDEzMjA2OTggfSksXG4gICAgICApLnJlamVjdHMudG9UaHJvd0Vycm9yKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpbml0aWFsaXplV2l0aEV4cGxvcmVyJywgKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIEB0YXJnZXQgaW5pdGlhbGl6ZVdpdGhFeHBsb3JlciBzaG91bGQgbGltaXQgdGhlIGhlaWdodCBhbmQgcHJvY2Vzc1xuICAgICAqIHRyYW5zYWN0aW9ucyB3aGVuIHRoZXkgYXJlIGxlc3MgdGhhbiB0aGUgQVBJX0xJTUlUXG4gICAgICogQGRlcGVuZGVuY2llc1xuICAgICAqIC0gZXhwbG9yZXIgbmV0d29ya1xuICAgICAqIEBzY2VuYXJpb1xuICAgICAqIC0gbW9jayBleHRyYWN0b3JcbiAgICAgKiAtIG1vY2sgYGluaXRXaXRoUmV0cmlhbGAgdG8gcnVuIHRoZSBqb2Igb25jZVxuICAgICAqIC0gbW9jayBgZ2V0QWRkcmVzc1RyYW5zYWN0aW9uc1dpdGhIZWlnaHRgIGluIGV4cGxvcmVyIG5ldHdvcmtcbiAgICAgKiAgICByZXR1cm4gQVBJX0xJTUlUIHRyYW5zYWN0aW9ucyBpbiBmaXJzdCBjYWxsICh0byBsaW1pdCB0aGUgaGVpZ2h0IHJhbmdlKVxuICAgICAqICAgIHJldHVybiAwIHRyYW5zYWN0aW9ucyBpbiBzZWNvbmQgY2FsbCAodG8gcGFzcyBhIHJhbmdlIHdpdGhvdXQgcHJvY2VzcylcbiAgICAgKiAgICByZXR1cm4gdHJhbnNhY3Rpb25CYXRjaCBpbiBsYXN0IGNhbGwgKHRvIHByb2Nlc3MgdGhlIHRyYW5zYWN0aW9ucyB3aGVuIHRoZXkgYXJlIGxlc3MgdGhhbiBBUElfTElNSVQpXG4gICAgICogLSBydW4gdGVzdCAoY2FsbCBgaW5pdGlhbGl6ZVdpdGhFeHBsb3JlcmApXG4gICAgICogQGV4cGVjdGVkXG4gICAgICogLSB0byBsaW1pdCB0aGUgaGVpZ2h0IHdoZW4gdGhlIHRyYW5zYWN0aW9uIGNvdW50IGlzIGVxdWFsIHRvIEFQSV9MSU1JVFxuICAgICAqIC0gdG8gY292ZXIgYWxsIGhlaWdodCByYW5nZXNcbiAgICAgKiAtIHRvIHByb2Nlc3MgdHJhbnNhY3Rpb25zIHdoZW4gdGhleSBhcmUgbGVzcyB0aGFuIEFQSV9MSU1JVFxuICAgICAqL1xuICAgIGl0KGBzaG91bGQgbGltaXQgdGhlIGhlaWdodCBhbmQgcHJvY2VzcyB0cmFuc2FjdGlvbnMgd2hlbiB0aGV5IGFyZSBsZXNzIHRoYW5cbiAgICAgIHRoZSBBUElfTElNSVRgLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBleHRyYWN0b3IgPSBuZXcgTW9ja2VkSW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3IoXG4gICAgICAgIEVyZ29OZXR3b3JrVHlwZS5FeHBsb3JlcixcbiAgICAgICAgJ2V4cGxvcmVyX3VybCcsXG4gICAgICAgICdhZGRyZXNzJyxcbiAgICAgICk7XG4gICAgICBleHRyYWN0b3JbJ2luaXRXaXRoUmV0cmlhbCddID0gYXN5bmMgKGpvYjogKCkgPT4gUHJvbWlzZTx2b2lkPikgPT4gam9iKCk7XG4gICAgICBjb25zdCBhZGRyZXNzVHhTcHkgPSB2aXRlc3RcbiAgICAgICAgLmZuKClcbiAgICAgICAgLm1vY2tSZXNvbHZlZFZhbHVlT25jZShuZXcgQXJyYXkoMTAwKS5maWxsKHRyYW5zYWN0aW9uQmF0Y2hbMF0pKVxuICAgICAgICAubW9ja1Jlc29sdmVkVmFsdWVPbmNlKFtdKVxuICAgICAgICAubW9ja1Jlc29sdmVkVmFsdWVPbmNlKHRyYW5zYWN0aW9uQmF0Y2gpO1xuICAgICAgKFxuICAgICAgICBleHRyYWN0b3JbJ25ldHdvcmsnXSBhcyBFeHBsb3Jlck5ldHdvcmtcbiAgICAgICkuZ2V0QWRkcmVzc1RyYW5zYWN0aW9uc1dpdGhIZWlnaHQgPSBhZGRyZXNzVHhTcHk7XG4gICAgICBjb25zdCBwcm9jZXNzU3B5ID0gdml0ZXN0LmZuKCk7XG4gICAgICBleHRyYWN0b3JbJ3Byb2Nlc3NUcmFuc2FjdGlvbkJhdGNoJ10gPSBwcm9jZXNzU3B5O1xuICAgICAgYXdhaXQgZXh0cmFjdG9yWydpbml0aWFsaXplV2l0aEV4cGxvcmVyJ10oe1xuICAgICAgICBoYXNoOiAnaGFzaCcsXG4gICAgICAgIGhlaWdodDogMTMyMDgwMCxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KGFkZHJlc3NUeFNweSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2FkZHJlc3MnLCAwLCAxMzIwODAwKTtcbiAgICAgIGV4cGVjdChhZGRyZXNzVHhTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdhZGRyZXNzJywgMCwgNjYwNDAwKTtcbiAgICAgIGV4cGVjdChhZGRyZXNzVHhTcHkpLnRvSGF2ZUJlZW5MYXN0Q2FsbGVkV2l0aCgnYWRkcmVzcycsIDY2MDQwMSwgMTMyMDgwMCk7XG4gICAgICBleHBlY3QocHJvY2Vzc1NweSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgZXhwZWN0KHByb2Nlc3NTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRyYW5zYWN0aW9uQmF0Y2gpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQHRhcmdldCBpbml0aWFsaXplV2l0aEV4cGxvcmVyIHNob3VsZCBwcm9jZXNzIGFsbCBibG9jayB0cmFuc2FjdGlvbnMgd2hlblxuICAgICAqIHRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGluIHRoZSBibG9jayBpcyBtb3JlIHRoYW4gQVBJX0xJTUlUXG4gICAgICogQGRlcGVuZGVuY2llc1xuICAgICAqIC0gZXhwbG9yZXIgbmV0d29ya1xuICAgICAqIEBzY2VuYXJpb1xuICAgICAqIC0gbW9jayBleHRyYWN0b3JcbiAgICAgKiAtIG1vY2sgYGluaXRXaXRoUmV0cmlhbGAgdG8gcnVuIHRoZSBqb2Igb25jZVxuICAgICAqIC0gbW9jayBgZ2V0QWRkcmVzc1RyYW5zYWN0aW9uc1dpdGhIZWlnaHRgIHRvIHJldHVybiAxMDAgdHJhbnNhY3Rpb25zIGluIG9uZSBibG9ja1xuICAgICAqIC0gc3B5IGFsbCBvdGhlciBmdW5jdGlvbnMgdG8gY2hlY2sgdGhlIGNhbGxzXG4gICAgICogLSBydW4gdGVzdCAoY2FsbCBgaW5pdGlhbGl6ZVdpdGhFeHBsb3JlcmApXG4gICAgICogQGV4cGVjdGVkXG4gICAgICogLSB0byBwcm9jZXNzIGFsbCB0cmFuc2FjdGlvbnMgaW4gYmxvY2sgMTMyMDAwMFxuICAgICAqIC0gbm90IHRvIHN0dWNrIGF0IGEgbGFyZ2UgYmxvY2sgYW5kIGNvbXBsZXRlIHRoZSBwcm9jZXNzXG4gICAgICovXG4gICAgaXQoYHNob3VsZCBwcm9jZXNzIGFsbCBibG9jayB0cmFuc2FjdGlvbnMgd2hlbiB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBpblxuICAgICAgdGhlIGJsb2NrIGlzIG1vcmUgdGhhbiBBUElfTElNSVRgLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBtb2NrIGV4dHJhY3RvclxuICAgICAgY29uc3QgZXh0cmFjdG9yID0gbmV3IE1vY2tlZEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yKFxuICAgICAgICBFcmdvTmV0d29ya1R5cGUuRXhwbG9yZXIsXG4gICAgICAgICdleHBsb3Jlcl91cmwnLFxuICAgICAgICAnYWRkcmVzcycsXG4gICAgICApO1xuICAgICAgLy8gbW9jayBgaW5pdFdpdGhSZXRyaWFsYCB0byBydW4gdGhlIGpvYiBvbmNlXG4gICAgICBleHRyYWN0b3JbJ2luaXRXaXRoUmV0cmlhbCddID0gYXN5bmMgKGpvYjogKCkgPT4gUHJvbWlzZTx2b2lkPikgPT4gam9iKCk7XG4gICAgICAvLyBtb2NrIGBnZXRBZGRyZXNzVHJhbnNhY3Rpb25zV2l0aEhlaWdodGAgdG8gcmV0dXJuIDEwMCB0cmFuc2FjdGlvbnMgaW4gb25lIGJsb2NrXG4gICAgICBjb25zdCBleE5ldHdvcmsgPSBleHRyYWN0b3JbJ25ldHdvcmsnXSBhcyBFeHBsb3Jlck5ldHdvcms7XG4gICAgICBjb25zdCBhZGRyZXNzVHhTcHkgPSB2aXRlc3RcbiAgICAgICAgLmZuKClcbiAgICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbihcbiAgICAgICAgICAoYWRkcmVzczogc3RyaW5nLCBmcm9tSGVpZ2h0OiBudW1iZXIsIHRvSGVpZ2h0OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChmcm9tSGVpZ2h0IDw9IDEzMjAwMDAgJiYgdG9IZWlnaHQgPj0gMTMyMDAwMClcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheSgxMDApLmZpbGwodHJhbnNhY3Rpb25CYXRjaFswXSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIGV4TmV0d29yay5nZXRBZGRyZXNzVHJhbnNhY3Rpb25zV2l0aEhlaWdodCA9IGFkZHJlc3NUeFNweTtcbiAgICAgIC8vIHNweSBhbGwgb3RoZXIgZnVuY3Rpb25zIHRvIGNoZWNrIHRoZSBjYWxsc1xuICAgICAgY29uc3QgYmxvY2tJZFNweSA9IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoJ2Jsb2NrSWQnKTtcbiAgICAgIGNvbnN0IGJsb2NrVHhzU3B5ID0gdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZShbXSk7XG4gICAgICBleE5ldHdvcmsuZ2V0QmxvY2tJZEF0SGVpZ2h0ID0gYmxvY2tJZFNweTtcbiAgICAgIGV4TmV0d29yay5nZXRCbG9ja1R4cyA9IGJsb2NrVHhzU3B5O1xuICAgICAgY29uc3QgcHJvY2Vzc1NweSA9IHZpdGVzdC5mbigpO1xuICAgICAgY29uc3QgcHJvY2Vzc0JhdGNoU3B5ID0gdml0ZXN0LmZuKCk7XG4gICAgICBleHRyYWN0b3IucHJvY2Vzc1RyYW5zYWN0aW9ucyA9IHByb2Nlc3NTcHk7XG4gICAgICBleHRyYWN0b3JbJ3Byb2Nlc3NUcmFuc2FjdGlvbkJhdGNoJ10gPSBwcm9jZXNzQmF0Y2hTcHk7XG4gICAgICAvLyBydW4gdGVzdCAoY2FsbCBgaW5pdGlhbGl6ZVdpdGhFeHBsb3JlcmApXG4gICAgICBhd2FpdCBleHRyYWN0b3JbJ2luaXRpYWxpemVXaXRoRXhwbG9yZXInXSh7XG4gICAgICAgIGhhc2g6ICdoYXNoJyxcbiAgICAgICAgaGVpZ2h0OiAxMzIwODAwLFxuICAgICAgfSk7XG4gICAgICBleHBlY3QoYmxvY2tJZFNweSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoMTMyMDAwMCk7XG4gICAgICBleHBlY3QoYmxvY2tUeHNTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdibG9ja0lkJyk7XG4gICAgICBleHBlY3QocHJvY2Vzc1NweSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW10sIHtcbiAgICAgICAgaGFzaDogJ2Jsb2NrSWQnLFxuICAgICAgICBoZWlnaHQ6IDEzMjAwMDAsXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChwcm9jZXNzQmF0Y2hTcHkpLm5vdC50b0JlQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
2
|
-
import { BlockInfo } from '@rosen-bridge/scanner-interfaces';
|
|
3
|
-
import { AbstractErgoExtractorEntity, AbstractBoxData, AbstractInitializableErgoExtractorAction } from '../../lib';
|
|
4
|
-
export declare class TestInitializableErgoExtractorAction extends AbstractInitializableErgoExtractorAction<AbstractBoxData, AbstractErgoExtractorEntity> {
|
|
5
|
-
constructor(dataSource: DataSource);
|
|
6
|
-
/**
|
|
7
|
-
* create the test database entity from data and block information
|
|
8
|
-
*/
|
|
9
|
-
createEntity: (boxes: AbstractBoxData[], block: BlockInfo, extractor: string) => Omit<AbstractErgoExtractorEntity, "id">[];
|
|
10
|
-
/**
|
|
11
|
-
* convert the database entity back to raw data
|
|
12
|
-
*/
|
|
13
|
-
convertEntityToData: (entities: AbstractErgoExtractorEntity[]) => AbstractBoxData[];
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=AbstractInitializableAction.mock.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractInitializableAction.mock.d.ts","sourceRoot":"","sources":["../../../tests/initializable/AbstractInitializableAction.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,wCAAwC,EACzC,MAAM,WAAW,CAAC;AAGnB,qBAAa,oCAAqC,SAAQ,wCAAwC,CAChG,eAAe,EACf,2BAA2B,CAC5B;gBACa,UAAU,EAAE,UAAU;IAIlC;;OAEG;IACH,YAAY,GACV,OAAO,eAAe,EAAE,EACxB,OAAO,SAAS,EAChB,WAAW,MAAM,KAChB,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,EAAE,CAQ1C;IAEF;;OAEG;IACH,mBAAmB,GACjB,UAAU,2BAA2B,EAAE,KACtC,eAAe,EAAE,CAElB;CACH"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { pick } from 'lodash-es';
|
|
2
|
-
import { AbstractInitializableErgoExtractorAction, } from '../../lib';
|
|
3
|
-
import { TestEntity } from '../testUtils';
|
|
4
|
-
export class TestInitializableErgoExtractorAction extends AbstractInitializableErgoExtractorAction {
|
|
5
|
-
constructor(dataSource) {
|
|
6
|
-
super(dataSource, TestEntity);
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* create the test database entity from data and block information
|
|
10
|
-
*/
|
|
11
|
-
createEntity = (boxes, block, extractor) => {
|
|
12
|
-
return boxes.map((box) => ({
|
|
13
|
-
boxId: box.boxId,
|
|
14
|
-
block: block.hash,
|
|
15
|
-
height: block.height,
|
|
16
|
-
serialized: box.serialized,
|
|
17
|
-
extractor: extractor,
|
|
18
|
-
}));
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* convert the database entity back to raw data
|
|
22
|
-
*/
|
|
23
|
-
convertEntityToData = (entities) => {
|
|
24
|
-
return entities.map((data) => pick(data, ['boxId', 'serialized']));
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlQWN0aW9uLm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0cy9pbml0aWFsaXphYmxlL0Fic3RyYWN0SW5pdGlhbGl6YWJsZUFjdGlvbi5tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHakMsT0FBTyxFQUdMLHdDQUF3QyxHQUN6QyxNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTFDLE1BQU0sT0FBTyxvQ0FBcUMsU0FBUSx3Q0FHekQ7SUFDQyxZQUFZLFVBQXNCO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxHQUFHLENBQ2IsS0FBd0IsRUFDeEIsS0FBZ0IsRUFDaEIsU0FBaUIsRUFDMEIsRUFBRTtRQUM3QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNqQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1lBQzFCLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxtQkFBbUIsR0FBRyxDQUNwQixRQUF1QyxFQUNwQixFQUFFO1FBQ3JCLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmxvY2tJbmZvIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHksXG4gIEFic3RyYWN0Qm94RGF0YSxcbiAgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbixcbn0gZnJvbSAnLi4vLi4vbGliJztcbmltcG9ydCB7IFRlc3RFbnRpdHkgfSBmcm9tICcuLi90ZXN0VXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVGVzdEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yQWN0aW9uIGV4dGVuZHMgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbjxcbiAgQWJzdHJhY3RCb3hEYXRhLFxuICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHlcbj4ge1xuICBjb25zdHJ1Y3RvcihkYXRhU291cmNlOiBEYXRhU291cmNlKSB7XG4gICAgc3VwZXIoZGF0YVNvdXJjZSwgVGVzdEVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlIHRoZSB0ZXN0IGRhdGFiYXNlIGVudGl0eSBmcm9tIGRhdGEgYW5kIGJsb2NrIGluZm9ybWF0aW9uXG4gICAqL1xuICBjcmVhdGVFbnRpdHkgPSAoXG4gICAgYm94ZXM6IEFic3RyYWN0Qm94RGF0YVtdLFxuICAgIGJsb2NrOiBCbG9ja0luZm8sXG4gICAgZXh0cmFjdG9yOiBzdHJpbmcsXG4gICk6IE9taXQ8QWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5LCAnaWQnPltdID0+IHtcbiAgICByZXR1cm4gYm94ZXMubWFwKChib3gpID0+ICh7XG4gICAgICBib3hJZDogYm94LmJveElkLFxuICAgICAgYmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICBoZWlnaHQ6IGJsb2NrLmhlaWdodCxcbiAgICAgIHNlcmlhbGl6ZWQ6IGJveC5zZXJpYWxpemVkLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHRoZSBkYXRhYmFzZSBlbnRpdHkgYmFjayB0byByYXcgZGF0YVxuICAgKi9cbiAgY29udmVydEVudGl0eVRvRGF0YSA9IChcbiAgICBlbnRpdGllczogQWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5W10sXG4gICk6IEFic3RyYWN0Qm94RGF0YVtdID0+IHtcbiAgICByZXR1cm4gZW50aXRpZXMubWFwKChkYXRhKSA9PiBwaWNrKGRhdGEsIFsnYm94SWQnLCAnc2VyaWFsaXplZCddKSk7XG4gIH07XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractInitializableAction.spec.d.ts","sourceRoot":"","sources":["../../../tests/initializable/AbstractInitializableAction.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { TestInitializableErgoExtractorAction } from './AbstractInitializableAction.mock';
|
|
2
|
-
import { createDatabase, TestEntity } from '../testUtils';
|
|
3
|
-
import { sampleEntities } from '../testData';
|
|
4
|
-
describe('AbstractErgoExtractorAction', () => {
|
|
5
|
-
let dataSource;
|
|
6
|
-
let action;
|
|
7
|
-
let repository;
|
|
8
|
-
beforeEach(async () => {
|
|
9
|
-
dataSource = await createDatabase();
|
|
10
|
-
action = new TestInitializableErgoExtractorAction(dataSource);
|
|
11
|
-
repository = dataSource.getRepository(TestEntity);
|
|
12
|
-
});
|
|
13
|
-
describe('removeAllData', () => {
|
|
14
|
-
/**
|
|
15
|
-
* @target removeAllData should remove all available data related to this extractor
|
|
16
|
-
* @dependencies
|
|
17
|
-
* @scenario
|
|
18
|
-
* - insert 4 entities related to this extractor
|
|
19
|
-
* - run test (call `removeAllData`)
|
|
20
|
-
* @expected
|
|
21
|
-
* - to have 4 entities before removing
|
|
22
|
-
* - to have no remaining entities after remove
|
|
23
|
-
*/
|
|
24
|
-
it(`should remove all available data related to this extractor`, async () => {
|
|
25
|
-
await dataSource.getRepository(TestEntity).insert(sampleEntities);
|
|
26
|
-
const countBefore = await repository.count();
|
|
27
|
-
await action.removeAllData('extractor');
|
|
28
|
-
const countAfter = await repository.count();
|
|
29
|
-
expect(countBefore).toEqual(4);
|
|
30
|
-
expect(countAfter).toEqual(0);
|
|
31
|
-
});
|
|
32
|
-
/**
|
|
33
|
-
* @target removeAllData should not remove any data related to another extractor
|
|
34
|
-
* @dependencies
|
|
35
|
-
* @scenario
|
|
36
|
-
* - insert 4 entities related to another extractor
|
|
37
|
-
* - run test (call `removeAllData`)
|
|
38
|
-
* @expected
|
|
39
|
-
* - to have 4 entities after removing
|
|
40
|
-
*/
|
|
41
|
-
it(`should not remove any data related to another extractor`, async () => {
|
|
42
|
-
await dataSource.getRepository(TestEntity).insert(sampleEntities.map((entity) => ({
|
|
43
|
-
...entity,
|
|
44
|
-
extractor: 'extractor-new',
|
|
45
|
-
})));
|
|
46
|
-
const countBefore = await repository.count();
|
|
47
|
-
await action.removeAllData('extractor');
|
|
48
|
-
const countAfter = await repository.count();
|
|
49
|
-
expect(countBefore).toEqual(4);
|
|
50
|
-
expect(countAfter).toEqual(4);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlQWN0aW9uLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0cy9pbml0aWFsaXphYmxlL0Fic3RyYWN0SW5pdGlhbGl6YWJsZUFjdGlvbi5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsUUFBUSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtJQUMzQyxJQUFJLFVBQXNCLENBQUM7SUFDM0IsSUFBSSxNQUE0QyxDQUFDO0lBQ2pELElBQUksVUFBa0MsQ0FBQztJQUN2QyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDcEIsVUFBVSxHQUFHLE1BQU0sY0FBYyxFQUFFLENBQUM7UUFDcEMsTUFBTSxHQUFHLElBQUksb0NBQW9DLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsVUFBVSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtRQUM3Qjs7Ozs7Ozs7O1dBU0c7UUFDSCxFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDMUUsTUFBTSxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRSxNQUFNLFdBQVcsR0FBRyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUU3QyxNQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFNUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUg7Ozs7Ozs7O1dBUUc7UUFDSCxFQUFFLENBQUMseURBQXlELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDdkUsTUFBTSxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FDL0MsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUIsR0FBRyxNQUFNO2dCQUNULFNBQVMsRUFBRSxlQUFlO2FBQzNCLENBQUMsQ0FBQyxDQUNKLENBQUM7WUFDRixNQUFNLFdBQVcsR0FBRyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUU3QyxNQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFNUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIFJlcG9zaXRvcnkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuXG5pbXBvcnQgeyBUZXN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3JBY3Rpb24gfSBmcm9tICcuL0Fic3RyYWN0SW5pdGlhbGl6YWJsZUFjdGlvbi5tb2NrJztcbmltcG9ydCB7IGNyZWF0ZURhdGFiYXNlLCBUZXN0RW50aXR5IH0gZnJvbSAnLi4vdGVzdFV0aWxzJztcbmltcG9ydCB7IHNhbXBsZUVudGl0aWVzIH0gZnJvbSAnLi4vdGVzdERhdGEnO1xuXG5kZXNjcmliZSgnQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uJywgKCkgPT4ge1xuICBsZXQgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcbiAgbGV0IGFjdGlvbjogVGVzdEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yQWN0aW9uO1xuICBsZXQgcmVwb3NpdG9yeTogUmVwb3NpdG9yeTxUZXN0RW50aXR5PjtcbiAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgZGF0YVNvdXJjZSA9IGF3YWl0IGNyZWF0ZURhdGFiYXNlKCk7XG4gICAgYWN0aW9uID0gbmV3IFRlc3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbihkYXRhU291cmNlKTtcbiAgICByZXBvc2l0b3J5ID0gZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KFRlc3RFbnRpdHkpO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVtb3ZlQWxsRGF0YScsICgpID0+IHtcbiAgICAvKipcbiAgICAgKiBAdGFyZ2V0IHJlbW92ZUFsbERhdGEgc2hvdWxkIHJlbW92ZSBhbGwgYXZhaWxhYmxlIGRhdGEgcmVsYXRlZCB0byB0aGlzIGV4dHJhY3RvclxuICAgICAqIEBkZXBlbmRlbmNpZXNcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIGluc2VydCA0IGVudGl0aWVzIHJlbGF0ZWQgdG8gdGhpcyBleHRyYWN0b3JcbiAgICAgKiAtIHJ1biB0ZXN0IChjYWxsIGByZW1vdmVBbGxEYXRhYClcbiAgICAgKiBAZXhwZWN0ZWRcbiAgICAgKiAtIHRvIGhhdmUgNCBlbnRpdGllcyBiZWZvcmUgcmVtb3ZpbmdcbiAgICAgKiAtIHRvIGhhdmUgbm8gcmVtYWluaW5nIGVudGl0aWVzIGFmdGVyIHJlbW92ZVxuICAgICAqL1xuICAgIGl0KGBzaG91bGQgcmVtb3ZlIGFsbCBhdmFpbGFibGUgZGF0YSByZWxhdGVkIHRvIHRoaXMgZXh0cmFjdG9yYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KFRlc3RFbnRpdHkpLmluc2VydChzYW1wbGVFbnRpdGllcyk7XG4gICAgICBjb25zdCBjb3VudEJlZm9yZSA9IGF3YWl0IHJlcG9zaXRvcnkuY291bnQoKTtcblxuICAgICAgYXdhaXQgYWN0aW9uLnJlbW92ZUFsbERhdGEoJ2V4dHJhY3RvcicpO1xuICAgICAgY29uc3QgY291bnRBZnRlciA9IGF3YWl0IHJlcG9zaXRvcnkuY291bnQoKTtcblxuICAgICAgZXhwZWN0KGNvdW50QmVmb3JlKS50b0VxdWFsKDQpO1xuICAgICAgZXhwZWN0KGNvdW50QWZ0ZXIpLnRvRXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBAdGFyZ2V0IHJlbW92ZUFsbERhdGEgc2hvdWxkIG5vdCByZW1vdmUgYW55IGRhdGEgcmVsYXRlZCB0byBhbm90aGVyIGV4dHJhY3RvclxuICAgICAqIEBkZXBlbmRlbmNpZXNcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIGluc2VydCA0IGVudGl0aWVzIHJlbGF0ZWQgdG8gYW5vdGhlciBleHRyYWN0b3JcbiAgICAgKiAtIHJ1biB0ZXN0IChjYWxsIGByZW1vdmVBbGxEYXRhYClcbiAgICAgKiBAZXhwZWN0ZWRcbiAgICAgKiAtIHRvIGhhdmUgNCBlbnRpdGllcyBhZnRlciByZW1vdmluZ1xuICAgICAqL1xuICAgIGl0KGBzaG91bGQgbm90IHJlbW92ZSBhbnkgZGF0YSByZWxhdGVkIHRvIGFub3RoZXIgZXh0cmFjdG9yYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KFRlc3RFbnRpdHkpLmluc2VydChcbiAgICAgICAgc2FtcGxlRW50aXRpZXMubWFwKChlbnRpdHkpID0+ICh7XG4gICAgICAgICAgLi4uZW50aXR5LFxuICAgICAgICAgIGV4dHJhY3RvcjogJ2V4dHJhY3Rvci1uZXcnLFxuICAgICAgICB9KSksXG4gICAgICApO1xuICAgICAgY29uc3QgY291bnRCZWZvcmUgPSBhd2FpdCByZXBvc2l0b3J5LmNvdW50KCk7XG5cbiAgICAgIGF3YWl0IGFjdGlvbi5yZW1vdmVBbGxEYXRhKCdleHRyYWN0b3InKTtcbiAgICAgIGNvbnN0IGNvdW50QWZ0ZXIgPSBhd2FpdCByZXBvc2l0b3J5LmNvdW50KCk7XG5cbiAgICAgIGV4cGVjdChjb3VudEJlZm9yZSkudG9FcXVhbCg0KTtcbiAgICAgIGV4cGVjdChjb3VudEFmdGVyKS50b0VxdWFsKDQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
export declare const ergoBoxes: ({
|
|
2
|
-
boxId: string;
|
|
3
|
-
transactionId: string;
|
|
4
|
-
blockId: string;
|
|
5
|
-
value: bigint;
|
|
6
|
-
index: number;
|
|
7
|
-
creationHeight: number;
|
|
8
|
-
inclusionHeight: number;
|
|
9
|
-
ergoTree: string;
|
|
10
|
-
address: string;
|
|
11
|
-
assets: {
|
|
12
|
-
tokenId: string;
|
|
13
|
-
index: number;
|
|
14
|
-
amount: bigint;
|
|
15
|
-
name: string;
|
|
16
|
-
decimals: number;
|
|
17
|
-
}[];
|
|
18
|
-
additionalRegisters: {};
|
|
19
|
-
spentHeight?: undefined;
|
|
20
|
-
spentBlockId?: undefined;
|
|
21
|
-
spentTransactionId?: undefined;
|
|
22
|
-
spentIndex?: undefined;
|
|
23
|
-
} | {
|
|
24
|
-
boxId: string;
|
|
25
|
-
transactionId: string;
|
|
26
|
-
blockId: string;
|
|
27
|
-
value: bigint;
|
|
28
|
-
index: number;
|
|
29
|
-
creationHeight: number;
|
|
30
|
-
inclusionHeight: number;
|
|
31
|
-
ergoTree: string;
|
|
32
|
-
address: string;
|
|
33
|
-
assets: {
|
|
34
|
-
tokenId: string;
|
|
35
|
-
index: number;
|
|
36
|
-
amount: bigint;
|
|
37
|
-
name: string;
|
|
38
|
-
decimals: number;
|
|
39
|
-
}[];
|
|
40
|
-
additionalRegisters: {};
|
|
41
|
-
spentHeight: number;
|
|
42
|
-
spentBlockId: string;
|
|
43
|
-
spentTransactionId: string;
|
|
44
|
-
spentIndex: number;
|
|
45
|
-
})[];
|
|
46
|
-
export declare const extractedData: {
|
|
47
|
-
boxId: string;
|
|
48
|
-
address: string;
|
|
49
|
-
serialized: string;
|
|
50
|
-
blockId: string;
|
|
51
|
-
height: number;
|
|
52
|
-
};
|
|
53
|
-
export declare const transactionBatch: {
|
|
54
|
-
id: string;
|
|
55
|
-
inclusionHeight: number;
|
|
56
|
-
blockId: string;
|
|
57
|
-
outputs: ({
|
|
58
|
-
transactionId: string;
|
|
59
|
-
index: number;
|
|
60
|
-
value: bigint;
|
|
61
|
-
ergoTree: string;
|
|
62
|
-
creationHeight: number;
|
|
63
|
-
assets: {
|
|
64
|
-
tokenId: string;
|
|
65
|
-
amount: bigint;
|
|
66
|
-
}[];
|
|
67
|
-
additionalRegisters: {
|
|
68
|
-
R4: string;
|
|
69
|
-
R5: string;
|
|
70
|
-
R6: string;
|
|
71
|
-
};
|
|
72
|
-
boxId: string;
|
|
73
|
-
} | {
|
|
74
|
-
transactionId: string;
|
|
75
|
-
index: number;
|
|
76
|
-
value: bigint;
|
|
77
|
-
ergoTree: string;
|
|
78
|
-
creationHeight: number;
|
|
79
|
-
assets: never[];
|
|
80
|
-
additionalRegisters: {
|
|
81
|
-
R4?: undefined;
|
|
82
|
-
R5?: undefined;
|
|
83
|
-
R6?: undefined;
|
|
84
|
-
};
|
|
85
|
-
boxId: string;
|
|
86
|
-
})[];
|
|
87
|
-
inputs: {
|
|
88
|
-
boxId: string;
|
|
89
|
-
}[];
|
|
90
|
-
dataInputs: {
|
|
91
|
-
boxId: string;
|
|
92
|
-
}[];
|
|
93
|
-
}[];
|
|
94
|
-
//# sourceMappingURL=testData.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testData.d.ts","sourceRoot":"","sources":["../../../tests/initializable/testData.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuDrB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyN5B,CAAC"}
|