@rosen-bridge/abstract-extractor 2.0.1 → 2.0.3-52fc0239
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 +14 -0
- package/dist/ergo/AbstractErgoExtractor.d.ts.map +1 -1
- package/dist/ergo/AbstractErgoExtractor.js +3 -2
- package/dist/ergo/AbstractErgoExtractorAction.d.ts +1 -1
- package/dist/ergo/AbstractErgoExtractorAction.d.ts.map +1 -1
- package/dist/ergo/AbstractErgoExtractorAction.js +23 -9
- package/dist/ergo/AbstractErgoExtractorEntity.js +2 -2
- package/dist/ergo/initializable/AbstractInitializableAction.d.ts +1 -1
- package/dist/ergo/initializable/AbstractInitializableAction.d.ts.map +1 -1
- package/dist/ergo/initializable/AbstractInitializableAction.js +4 -2
- package/dist/lib/abstractExtractor.d.ts +25 -0
- package/dist/lib/abstractExtractor.d.ts.map +1 -0
- package/dist/lib/abstractExtractor.js +3 -0
- package/dist/lib/constants.d.ts +4 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +4 -0
- package/dist/lib/ergo/AbstractErgoExtractor.d.ts +80 -0
- package/dist/lib/ergo/AbstractErgoExtractor.d.ts.map +1 -0
- package/dist/lib/ergo/AbstractErgoExtractor.js +143 -0
- package/dist/lib/ergo/AbstractErgoExtractorAction.d.ts +87 -0
- package/dist/lib/ergo/AbstractErgoExtractorAction.d.ts.map +1 -0
- package/dist/lib/ergo/AbstractErgoExtractorAction.js +222 -0
- package/dist/lib/ergo/AbstractErgoExtractorEntity.d.ts +11 -0
- package/dist/lib/ergo/AbstractErgoExtractorEntity.d.ts.map +1 -0
- package/dist/lib/ergo/AbstractErgoExtractorEntity.js +57 -0
- package/dist/lib/ergo/index.d.ts +10 -0
- package/dist/lib/ergo/index.d.ts.map +1 -0
- package/dist/lib/ergo/index.js +10 -0
- package/dist/lib/ergo/initializable/AbstractInitializable.d.ts +48 -0
- package/dist/lib/ergo/initializable/AbstractInitializable.d.ts.map +1 -0
- package/dist/lib/ergo/initializable/AbstractInitializable.js +163 -0
- package/dist/lib/ergo/initializable/AbstractInitializableAction.d.ts +14 -0
- package/dist/lib/ergo/initializable/AbstractInitializableAction.d.ts.map +1 -0
- package/dist/lib/ergo/initializable/AbstractInitializableAction.js +16 -0
- package/dist/lib/ergo/initializable/index.d.ts +3 -0
- package/dist/lib/ergo/initializable/index.d.ts.map +1 -0
- package/dist/lib/ergo/initializable/index.js +3 -0
- package/dist/lib/ergo/interfaces.d.ts +47 -0
- package/dist/lib/ergo/interfaces.d.ts.map +1 -0
- package/dist/lib/ergo/interfaces.js +8 -0
- package/dist/lib/ergo/network/AbstractNetwork.d.ts +26 -0
- package/dist/lib/ergo/network/AbstractNetwork.d.ts.map +1 -0
- package/dist/lib/ergo/network/AbstractNetwork.js +3 -0
- package/dist/lib/ergo/network/ExplorerNetwork.d.ts +74 -0
- package/dist/lib/ergo/network/ExplorerNetwork.d.ts.map +1 -0
- package/dist/lib/ergo/network/ExplorerNetwork.js +185 -0
- package/dist/lib/ergo/network/NodeNetwork.d.ts +60 -0
- package/dist/lib/ergo/network/NodeNetwork.d.ts.map +1 -0
- package/dist/lib/ergo/network/NodeNetwork.js +131 -0
- package/dist/lib/ergo/utils.d.ts +8 -0
- package/dist/lib/ergo/utils.d.ts.map +1 -0
- package/dist/lib/ergo/utils.js +16 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +4 -0
- package/dist/tests/AbstractErgoExtractor.mock.d.ts +11 -0
- package/dist/tests/AbstractErgoExtractor.mock.d.ts.map +1 -0
- package/dist/tests/AbstractErgoExtractor.mock.js +13 -0
- package/dist/tests/AbstractErgoExtractor.spec.d.ts +2 -0
- package/dist/tests/AbstractErgoExtractor.spec.d.ts.map +1 -0
- package/dist/tests/AbstractErgoExtractor.spec.js +241 -0
- package/dist/tests/AbstractErgoExtractorAction.mock.d.ts +15 -0
- package/dist/tests/AbstractErgoExtractorAction.mock.d.ts.map +1 -0
- package/dist/tests/AbstractErgoExtractorAction.mock.js +27 -0
- package/dist/tests/AbstractErgoExtractorAction.spec.d.ts +2 -0
- package/dist/tests/AbstractErgoExtractorAction.spec.d.ts.map +1 -0
- package/dist/tests/AbstractErgoExtractorAction.spec.js +222 -0
- package/dist/tests/initializable/AbstractInitializable.mock.d.ts +60 -0
- package/dist/tests/initializable/AbstractInitializable.mock.d.ts.map +1 -0
- package/dist/tests/initializable/AbstractInitializable.mock.js +22 -0
- package/dist/tests/initializable/AbstractInitializable.spec.d.ts +2 -0
- package/dist/tests/initializable/AbstractInitializable.spec.d.ts.map +1 -0
- package/dist/tests/initializable/AbstractInitializable.spec.js +300 -0
- package/dist/tests/initializable/AbstractInitializableAction.mock.d.ts +15 -0
- package/dist/tests/initializable/AbstractInitializableAction.mock.d.ts.map +1 -0
- package/dist/tests/initializable/AbstractInitializableAction.mock.js +27 -0
- package/dist/tests/initializable/AbstractInitializableAction.spec.d.ts +2 -0
- package/dist/tests/initializable/AbstractInitializableAction.spec.d.ts.map +1 -0
- package/dist/tests/initializable/AbstractInitializableAction.spec.js +55 -0
- package/dist/tests/initializable/testData.d.ts +94 -0
- package/dist/tests/initializable/testData.d.ts.map +1 -0
- package/dist/tests/initializable/testData.js +235 -0
- package/dist/tests/network/ExplorerNetwork.spec.d.ts +2 -0
- package/dist/tests/network/ExplorerNetwork.spec.d.ts.map +1 -0
- package/dist/tests/network/ExplorerNetwork.spec.js +62 -0
- package/dist/tests/network/NodeNetwork.spec.d.ts +2 -0
- package/dist/tests/network/NodeNetwork.spec.d.ts.map +1 -0
- package/dist/tests/network/NodeNetwork.spec.js +49 -0
- package/dist/tests/network/testData.d.ts +752 -0
- package/dist/tests/network/testData.d.ts.map +1 -0
- package/dist/tests/network/testData.js +1401 -0
- package/dist/tests/testData.d.ts +32 -0
- package/dist/tests/testData.d.ts.map +1 -0
- package/dist/tests/testData.js +121 -0
- package/dist/tests/testUtils.d.ts +9 -0
- package/dist/tests/testUtils.d.ts.map +1 -0
- package/dist/tests/testUtils.js +31 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +17 -0
- package/lib/ergo/AbstractErgoExtractor.ts +3 -1
- package/lib/ergo/AbstractErgoExtractorAction.ts +47 -36
- package/lib/ergo/AbstractErgoExtractorEntity.ts +1 -1
- package/lib/ergo/initializable/AbstractInitializableAction.ts +4 -2
- package/package.json +9 -14
- package/tests/AbstractErgoExtractor.mock.ts +4 -2
- package/tests/AbstractErgoExtractorAction.mock.ts +1 -1
- package/tests/AbstractErgoExtractorAction.spec.ts +1 -1
- package/tests/initializable/AbstractInitializable.mock.ts +13 -4
- package/tests/initializable/AbstractInitializable.spec.ts +1 -9
- package/tests/initializable/AbstractInitializableAction.mock.ts +1 -1
- package/tests/initializable/AbstractInitializableAction.spec.ts +1 -1
- package/tests/testUtils.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":";AAEA,wBAcG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { defineConfig } from 'vitest/config';
|
|
2
|
+
export default defineConfig({
|
|
3
|
+
test: {
|
|
4
|
+
coverage: {
|
|
5
|
+
all: true,
|
|
6
|
+
provider: 'istanbul',
|
|
7
|
+
reporter: 'cobertura',
|
|
8
|
+
},
|
|
9
|
+
passWithNoTests: true,
|
|
10
|
+
poolOptions: {
|
|
11
|
+
threads: {
|
|
12
|
+
singleThread: true,
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3ZpdGVzdC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxlQUFlLFlBQVksQ0FBQztJQUMxQixJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUU7WUFDUixHQUFHLEVBQUUsSUFBSTtZQUNULFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFFBQVEsRUFBRSxXQUFXO1NBQ3RCO1FBQ0QsZUFBZSxFQUFFLElBQUk7UUFDckIsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFO2dCQUNQLFlBQVksRUFBRSxJQUFJO2FBQ25CO1NBQ0Y7S0FDRjtDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICB0ZXN0OiB7XG4gICAgY292ZXJhZ2U6IHtcbiAgICAgIGFsbDogdHJ1ZSxcbiAgICAgIHByb3ZpZGVyOiAnaXN0YW5idWwnLFxuICAgICAgcmVwb3J0ZXI6ICdjb2JlcnR1cmEnLFxuICAgIH0sXG4gICAgcGFzc1dpdGhOb1Rlc3RzOiB0cnVlLFxuICAgIHBvb2xPcHRpb25zOiB7XG4gICAgICB0aHJlYWRzOiB7XG4gICAgICAgIHNpbmdsZVRocmVhZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn0pO1xuIl19
|
|
@@ -140,7 +140,9 @@ export abstract class AbstractErgoExtractor<
|
|
|
140
140
|
* @param tx
|
|
141
141
|
* @returns
|
|
142
142
|
*/
|
|
143
|
-
getTransactionExtraData = (
|
|
143
|
+
getTransactionExtraData = (
|
|
144
|
+
tx: Transaction // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
145
|
+
): TxExtra => {
|
|
144
146
|
return {};
|
|
145
147
|
};
|
|
146
148
|
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
EntityTarget,
|
|
7
7
|
FindOptionsWhere,
|
|
8
8
|
QueryRunner,
|
|
9
|
-
} from 'typeorm';
|
|
9
|
+
} from '@rosen-bridge/extended-typeorm';
|
|
10
10
|
import { chunk, difference, pick } from 'lodash-es';
|
|
11
11
|
import { AbstractLogger, DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
12
12
|
import JsonBigInt from '@rosen-bridge/json-bigint';
|
|
@@ -18,7 +18,7 @@ import { AbstractErgoExtractorEntity } from './AbstractErgoExtractorEntity';
|
|
|
18
18
|
|
|
19
19
|
export abstract class AbstractErgoExtractorAction<
|
|
20
20
|
ExtractedData extends AbstractBoxData,
|
|
21
|
-
ExtractorEntity extends AbstractErgoExtractorEntity
|
|
21
|
+
ExtractorEntity extends AbstractErgoExtractorEntity,
|
|
22
22
|
> {
|
|
23
23
|
private readonly datasource: DataSource;
|
|
24
24
|
readonly logger: AbstractLogger;
|
|
@@ -28,7 +28,7 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
28
28
|
constructor(
|
|
29
29
|
dataSource: DataSource,
|
|
30
30
|
repo: EntityTarget<ExtractorEntity>,
|
|
31
|
-
logger?: AbstractLogger
|
|
31
|
+
logger?: AbstractLogger,
|
|
32
32
|
) {
|
|
33
33
|
this.datasource = dataSource;
|
|
34
34
|
this.logger = logger ? logger : new DummyLogger();
|
|
@@ -40,12 +40,12 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
40
40
|
* create the database entity from extracted data and block information
|
|
41
41
|
*/
|
|
42
42
|
protected createEntity = (
|
|
43
|
-
data: ExtractedData[],
|
|
44
|
-
block: BlockInfo,
|
|
45
|
-
extractor: string
|
|
43
|
+
data: ExtractedData[], // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
44
|
+
block: BlockInfo, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
45
|
+
extractor: string, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
46
46
|
): Array<Omit<ExtractorEntity, 'id'>> => {
|
|
47
47
|
throw Error(
|
|
48
|
-
'You must implement `createEntity` or override `insertEntities` and `updateEntities`'
|
|
48
|
+
'You must implement `createEntity` or override `insertEntities` and `updateEntities`',
|
|
49
49
|
);
|
|
50
50
|
};
|
|
51
51
|
|
|
@@ -53,10 +53,10 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
53
53
|
* convert the database entity back to raw data
|
|
54
54
|
*/
|
|
55
55
|
protected convertEntityToData = (
|
|
56
|
-
entities: ExtractorEntity[]
|
|
56
|
+
entities: ExtractorEntity[], // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
57
57
|
): ExtractedData[] => {
|
|
58
58
|
throw Error(
|
|
59
|
-
'You must implement `convertEntityToData` or override `deleteBlockEntities`'
|
|
59
|
+
'You must implement `convertEntityToData` or override `deleteBlockEntities`',
|
|
60
60
|
);
|
|
61
61
|
};
|
|
62
62
|
|
|
@@ -71,11 +71,11 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
71
71
|
queryRunner: QueryRunner,
|
|
72
72
|
boxesToInsert: Array<ExtractedData>,
|
|
73
73
|
block: BlockInfo,
|
|
74
|
-
extractor: string
|
|
74
|
+
extractor: string,
|
|
75
75
|
) => {
|
|
76
76
|
const repository = queryRunner.manager.getRepository(this.repo);
|
|
77
77
|
await repository.insert(
|
|
78
|
-
this.createEntity(boxesToInsert, block, extractor) as any
|
|
78
|
+
this.createEntity(boxesToInsert, block, extractor) as any, // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
79
79
|
);
|
|
80
80
|
};
|
|
81
81
|
|
|
@@ -88,9 +88,9 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
88
88
|
*/
|
|
89
89
|
protected updateEntity = async (
|
|
90
90
|
queryRunner: QueryRunner,
|
|
91
|
-
updateBox: ExtractedData,
|
|
92
|
-
block: BlockInfo,
|
|
93
|
-
extractor: string
|
|
91
|
+
updateBox: ExtractedData, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
92
|
+
block: BlockInfo, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
93
|
+
extractor: string,
|
|
94
94
|
) => {
|
|
95
95
|
const repository = queryRunner.manager.getRepository(this.repo);
|
|
96
96
|
const box = this.createEntity([updateBox], block, extractor)[0];
|
|
@@ -99,7 +99,7 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
99
99
|
boxId: box.boxId,
|
|
100
100
|
extractor: extractor,
|
|
101
101
|
} as FindOptionsWhere<ExtractorEntity>,
|
|
102
|
-
box as any
|
|
102
|
+
box as any, // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
103
103
|
);
|
|
104
104
|
};
|
|
105
105
|
|
|
@@ -113,16 +113,19 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
113
113
|
protected deleteBlockEntities = async (
|
|
114
114
|
queryRunner: QueryRunner,
|
|
115
115
|
extractor: string,
|
|
116
|
-
block: string
|
|
116
|
+
block: string,
|
|
117
117
|
): Promise<ExtractedData[]> => {
|
|
118
118
|
const repository = queryRunner.manager.getRepository(this.repo);
|
|
119
119
|
const deletedData = await repository.find({
|
|
120
|
-
where: {
|
|
120
|
+
where: {
|
|
121
|
+
extractor: extractor,
|
|
122
|
+
block: block,
|
|
123
|
+
} as FindOptionsWhere<ExtractorEntity>,
|
|
121
124
|
});
|
|
122
125
|
await repository.delete({
|
|
123
126
|
extractor: extractor,
|
|
124
127
|
block: block,
|
|
125
|
-
} as
|
|
128
|
+
} as unknown as FindOptionsWhere<ExtractorEntity>);
|
|
126
129
|
return this.convertEntityToData(deletedData);
|
|
127
130
|
};
|
|
128
131
|
|
|
@@ -134,26 +137,31 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
134
137
|
* @returns
|
|
135
138
|
*/
|
|
136
139
|
protected updateBlockEntities = async (
|
|
137
|
-
queryRunner: QueryRunner,
|
|
140
|
+
queryRunner: QueryRunner, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
138
141
|
extractor: string,
|
|
139
|
-
block: string
|
|
142
|
+
block: string,
|
|
140
143
|
): Promise<ExtractorEntity[]> => {
|
|
141
|
-
const repository =
|
|
144
|
+
const repository = this.datasource.getRepository(
|
|
145
|
+
this.repo as EntityTarget<new () => ExtractorEntity>,
|
|
146
|
+
);
|
|
142
147
|
const updatedData = await repository.find({
|
|
143
148
|
where: {
|
|
144
149
|
extractor: extractor,
|
|
145
150
|
spendBlock: block,
|
|
146
151
|
block: Not(block),
|
|
147
|
-
} as
|
|
152
|
+
} as unknown as FindOptionsWhere<ExtractorEntity>,
|
|
148
153
|
});
|
|
149
154
|
await repository.update(
|
|
150
155
|
{
|
|
151
156
|
spendBlock: block,
|
|
152
157
|
extractor: extractor,
|
|
153
|
-
} as FindOptionsWhere<ExtractorEntity>,
|
|
154
|
-
{
|
|
158
|
+
} as unknown as FindOptionsWhere<ExtractorEntity>,
|
|
159
|
+
{
|
|
160
|
+
spendBlock: null,
|
|
161
|
+
spendHeight: 0,
|
|
162
|
+
},
|
|
155
163
|
);
|
|
156
|
-
return updatedData;
|
|
164
|
+
return updatedData as unknown as ExtractorEntity[];
|
|
157
165
|
};
|
|
158
166
|
|
|
159
167
|
/**
|
|
@@ -168,7 +176,7 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
168
176
|
storeBoxes = async (
|
|
169
177
|
boxes: Array<ExtractedData>,
|
|
170
178
|
block: BlockInfo,
|
|
171
|
-
extractor: string
|
|
179
|
+
extractor: string,
|
|
172
180
|
): Promise<boolean> => {
|
|
173
181
|
let boxesToInsert: ExtractedData[] = [],
|
|
174
182
|
boxesToUpdate: ExtractedData[] = [];
|
|
@@ -197,11 +205,11 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
197
205
|
this.logger.info(
|
|
198
206
|
`Updating boxes with following Ids in the database: [${boxesToUpdate
|
|
199
207
|
.map((col) => col.boxId)
|
|
200
|
-
.join(', ')}]
|
|
208
|
+
.join(', ')}]`,
|
|
201
209
|
);
|
|
202
210
|
for (const box of boxesToUpdate) {
|
|
203
211
|
this.logger.debug(
|
|
204
|
-
`Updating boxes in database [${JsonBigInt.stringify(box)}]
|
|
212
|
+
`Updating boxes in database [${JsonBigInt.stringify(box)}]`,
|
|
205
213
|
);
|
|
206
214
|
await this.updateEntity(queryRunner, box, block, extractor);
|
|
207
215
|
}
|
|
@@ -230,7 +238,7 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
230
238
|
spendBoxes = async (
|
|
231
239
|
spendInfos: Array<SpendInfo>,
|
|
232
240
|
block: BlockInfo,
|
|
233
|
-
extractor: string
|
|
241
|
+
extractor: string,
|
|
234
242
|
): Promise<BoxInfo[]> => {
|
|
235
243
|
const spentData = [];
|
|
236
244
|
const spendInfoChunks = chunk(spendInfos, DB_CHUNK_SIZE);
|
|
@@ -241,7 +249,10 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
241
249
|
boxId: In(boxIds),
|
|
242
250
|
extractor: extractor,
|
|
243
251
|
} as FindOptionsWhere<ExtractorEntity>,
|
|
244
|
-
{
|
|
252
|
+
{
|
|
253
|
+
spendBlock: block.hash,
|
|
254
|
+
spendHeight: block.height,
|
|
255
|
+
} as any, // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
245
256
|
);
|
|
246
257
|
|
|
247
258
|
if (updateResult.affected && updateResult.affected > 0) {
|
|
@@ -252,7 +263,7 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
252
263
|
spentData.push(...spentRows);
|
|
253
264
|
for (const row of spentRows) {
|
|
254
265
|
this.logger.debug(
|
|
255
|
-
`Spent box with boxId [${row.boxId}] at height ${block.height}
|
|
266
|
+
`Spent box with boxId [${row.boxId}] at height ${block.height}`,
|
|
256
267
|
);
|
|
257
268
|
}
|
|
258
269
|
}
|
|
@@ -270,24 +281,24 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
270
281
|
*/
|
|
271
282
|
deleteBlockBoxes = async (
|
|
272
283
|
block: string,
|
|
273
|
-
extractor: string
|
|
284
|
+
extractor: string,
|
|
274
285
|
): Promise<{ deletedData: ExtractedData[]; updatedData: BoxInfo[] }> => {
|
|
275
286
|
const queryRunner = this.datasource.createQueryRunner();
|
|
276
287
|
await queryRunner.connect();
|
|
277
288
|
await queryRunner.startTransaction();
|
|
278
289
|
try {
|
|
279
290
|
this.logger.info(
|
|
280
|
-
`Deleting boxes in block ${block} and extractor ${extractor}
|
|
291
|
+
`Deleting boxes in block ${block} and extractor ${extractor}`,
|
|
281
292
|
);
|
|
282
293
|
const updatedData = await this.updateBlockEntities(
|
|
283
294
|
queryRunner,
|
|
284
295
|
extractor,
|
|
285
|
-
block
|
|
296
|
+
block,
|
|
286
297
|
);
|
|
287
298
|
const deletedData = await this.deleteBlockEntities(
|
|
288
299
|
queryRunner,
|
|
289
300
|
extractor,
|
|
290
|
-
block
|
|
301
|
+
block,
|
|
291
302
|
);
|
|
292
303
|
await queryRunner.commitTransaction();
|
|
293
304
|
return {
|
|
@@ -298,7 +309,7 @@ export abstract class AbstractErgoExtractorAction<
|
|
|
298
309
|
await queryRunner.rollbackTransaction();
|
|
299
310
|
this.logger.error(
|
|
300
311
|
`An error occurred while deleting data extracted from block ${block}`,
|
|
301
|
-
error
|
|
312
|
+
error,
|
|
302
313
|
);
|
|
303
314
|
throw error;
|
|
304
315
|
} finally {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataSource, EntityTarget } from 'typeorm';
|
|
1
|
+
import { DataSource, EntityTarget, FindOptionsWhere } from '@rosen-bridge/extended-typeorm';
|
|
2
2
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
3
3
|
|
|
4
4
|
import { AbstractErgoExtractorAction } from '../AbstractErgoExtractorAction';
|
|
@@ -22,6 +22,8 @@ export abstract class AbstractInitializableErgoExtractorAction<
|
|
|
22
22
|
* @param extractorId
|
|
23
23
|
*/
|
|
24
24
|
removeAllData = async (extractorId: string) => {
|
|
25
|
-
await this.repository.delete({
|
|
25
|
+
await this.repository.delete({
|
|
26
|
+
extractor: extractorId,
|
|
27
|
+
} as FindOptionsWhere<ExtractorEntity>);
|
|
26
28
|
};
|
|
27
29
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rosen-bridge/abstract-extractor",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3-52fc0239",
|
|
4
4
|
"description": "Rosen Bridge extractor interfaces to work with scanner",
|
|
5
5
|
"repository": "",
|
|
6
|
-
"license": "
|
|
6
|
+
"license": "MIT",
|
|
7
7
|
"author": "Rosen Team",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "dist/index.js",
|
|
@@ -19,30 +19,25 @@
|
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/lodash-es": "^4.17.12",
|
|
22
|
-
"@types/node": "^
|
|
22
|
+
"@types/node": "^22.18.0",
|
|
23
23
|
"@types/uuid": "^10.0.0",
|
|
24
|
-
"@typescript-eslint/eslint-plugin": "^6.19.1",
|
|
25
|
-
"@typescript-eslint/parser": "^6.19.1",
|
|
26
|
-
"@vitest/coverage-istanbul": "^1.2.2",
|
|
27
24
|
"await-semaphore": "^0.1.3",
|
|
28
|
-
"eslint": "^8.56.0",
|
|
29
|
-
"eslint-config-prettier": "^9.1.0",
|
|
30
25
|
"extensionless": "^1.9.6",
|
|
31
|
-
"prettier": "^3.2.4",
|
|
32
26
|
"typescript": "^5.3.3",
|
|
27
|
+
"@vitest/coverage-istanbul": "^1.2.2",
|
|
33
28
|
"vitest": "^1.2.2"
|
|
34
29
|
},
|
|
35
30
|
"engines": {
|
|
36
|
-
"node": ">=
|
|
31
|
+
"node": ">=22.18.0"
|
|
37
32
|
},
|
|
38
33
|
"dependencies": {
|
|
39
34
|
"@rosen-bridge/abstract-logger": "^2.0.1",
|
|
40
35
|
"@rosen-bridge/json-bigint": "^0.1.0",
|
|
41
|
-
"@rosen-bridge/scanner-interfaces": "^0.1.
|
|
42
|
-
"@rosen-clients/ergo-explorer": "^1.1.
|
|
43
|
-
"@rosen-clients/ergo-node": "^1.2.
|
|
36
|
+
"@rosen-bridge/scanner-interfaces": "^0.1.1-52fc0239",
|
|
37
|
+
"@rosen-clients/ergo-explorer": "^1.1.5",
|
|
38
|
+
"@rosen-clients/ergo-node": "^1.2.3",
|
|
44
39
|
"lodash-es": "^4.17.21",
|
|
45
|
-
"typeorm": "^0.
|
|
40
|
+
"@rosen-bridge/extended-typeorm": "^0.2.1",
|
|
46
41
|
"uuid": "^9.0.0"
|
|
47
42
|
}
|
|
48
43
|
}
|
|
@@ -21,10 +21,12 @@ export class MockedErgoExtractor extends AbstractErgoExtractor<
|
|
|
21
21
|
|
|
22
22
|
initializeBoxes: (initialBlock: BlockInfo) => Promise<void>;
|
|
23
23
|
|
|
24
|
-
hasData = (
|
|
24
|
+
hasData = (
|
|
25
|
+
box: V1.OutputInfo | OutputBox // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
26
|
+
) => false;
|
|
25
27
|
|
|
26
28
|
extractBoxData = (
|
|
27
|
-
box: V1.OutputInfo | OutputBox
|
|
29
|
+
box: V1.OutputInfo | OutputBox // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
28
30
|
): AbstractBoxData | undefined => {
|
|
29
31
|
return undefined;
|
|
30
32
|
};
|
|
@@ -19,17 +19,26 @@ export class MockedInitializableErgoExtractor extends AbstractInitializableErgoE
|
|
|
19
19
|
|
|
20
20
|
getId = () => 'Test';
|
|
21
21
|
|
|
22
|
-
hasData = (
|
|
22
|
+
hasData = (
|
|
23
|
+
box: V1.OutputInfo | OutputBox // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
24
|
+
) => false;
|
|
23
25
|
|
|
24
|
-
getTxBlock = async (
|
|
26
|
+
getTxBlock = async (
|
|
27
|
+
txId: string // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
28
|
+
): Promise<BlockInfo> => {
|
|
25
29
|
return { hash: 'hash', height: 100 };
|
|
26
30
|
};
|
|
27
31
|
|
|
28
|
-
getBoxesWithOffsetLimit = (
|
|
32
|
+
getBoxesWithOffsetLimit = (
|
|
33
|
+
offset: number, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
34
|
+
limit: number // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
35
|
+
) => {
|
|
29
36
|
return Promise.resolve({ boxes: ergoBoxes, hasNextBatch: true });
|
|
30
37
|
};
|
|
31
38
|
|
|
32
|
-
extractBoxData = (
|
|
39
|
+
extractBoxData = (
|
|
40
|
+
box: V1.OutputInfo | OutputBox // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
41
|
+
) => {
|
|
33
42
|
return undefined;
|
|
34
43
|
};
|
|
35
44
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { describe, expect, it, vi, vitest } from 'vitest';
|
|
2
2
|
import { ErgoNetworkType } from '@rosen-bridge/scanner-interfaces';
|
|
3
|
-
import axios from '@rosen-bridge/rate-limited-axios';
|
|
4
3
|
|
|
5
4
|
import {
|
|
6
5
|
NodeNetwork,
|
|
@@ -14,13 +13,6 @@ import { RETRIAL_COUNT } from '../../lib/constants';
|
|
|
14
13
|
import { AbstractInitializableErgoExtractorAction } from '../../lib/ergo/initializable';
|
|
15
14
|
|
|
16
15
|
describe('AbstractInitializableErgoExtractor', () => {
|
|
17
|
-
beforeAll(() => {
|
|
18
|
-
axios.initConfigs({
|
|
19
|
-
apiLimitRateRangeAsSeconds: 10,
|
|
20
|
-
apiLimitRules: [],
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
|
|
24
16
|
describe('getTotalTxCount', () => {
|
|
25
17
|
/**
|
|
26
18
|
* @target getTotalTxCount should return the total tx count
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataSource, Repository } from 'typeorm';
|
|
1
|
+
import { DataSource, Repository } from '@rosen-bridge/extended-typeorm';
|
|
2
2
|
import { describe, it, expect, beforeEach } from 'vitest';
|
|
3
3
|
|
|
4
4
|
import { TestInitializableErgoExtractorAction } from './AbstractInitializableAction.mock';
|
package/tests/testUtils.ts
CHANGED