@rosen-bridge/watcher-data-extractor 2.1.8 → 2.2.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.
@@ -1,7 +1,7 @@
1
- import { migration1689175974257 } from './postgres/1689175974257-migration';
1
+ import { migration1688554842087 } from './postgres/1688554842087-migration';
2
2
  import { migration1688555766601 } from './sqlite/1688555766601-migration';
3
3
  export declare const migrations: {
4
4
  sqlite: (typeof migration1688555766601)[];
5
- postgres: (typeof migration1689175974257)[];
5
+ postgres: (typeof migration1688554842087)[];
6
6
  };
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/migrations/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAG1E,eAAO,MAAM,UAAU;;;CAGtB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAG1E,eAAO,MAAM,UAAU;;;CAGtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rosen-bridge/watcher-data-extractor",
3
- "version": "2.1.8",
3
+ "version": "2.2.0",
4
4
  "description": "Extractor for rosen specific boxes on ergo blockchain",
5
5
  "author": "Rosen Team",
6
6
  "license": "GPL-3.0",
@@ -20,7 +20,7 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "@rosen-bridge/logger-interface": "^0.1.0",
23
- "@rosen-bridge/scanner": "^2.1.6",
23
+ "@rosen-bridge/scanner": "^2.2.0",
24
24
  "@rosen-clients/ergo-explorer": "^1.0.2",
25
25
  "@types/lodash-es": "^4.17.6",
26
26
  "blakejs": "^1.2.1",
@@ -1,33 +0,0 @@
1
- import { DataSource } from 'typeorm';
2
- import { BlockEntity } from '@rosen-bridge/scanner';
3
- import { AbstractLogger } from '@rosen-bridge/logger-interface';
4
- import { ExtractedEventTrigger } from '../interfaces/extractedEventTrigger';
5
- declare class EventTriggerDB {
6
- readonly logger: AbstractLogger;
7
- private readonly datasource;
8
- private readonly triggerEventRepository;
9
- constructor(dataSource: DataSource, logger: AbstractLogger);
10
- /**
11
- * It stores list of eventTriggers in the dataSource with block id
12
- * @param eventTriggers
13
- * @param block
14
- * @param extractor
15
- */
16
- storeEventTriggers: (eventTriggers: Array<ExtractedEventTrigger>, block: BlockEntity, extractor: string) => Promise<boolean>;
17
- /**
18
- * update spendBlock Column of the commitments in the dataBase
19
- * @param spendId
20
- * @param block
21
- * @param extractor
22
- * @param txId
23
- */
24
- spendEventTriggers: (spendId: Array<string>, block: BlockEntity, extractor: string, txId: string) => Promise<void>;
25
- /**
26
- * deleting all permits corresponding to the block(id) and extractor(id)
27
- * @param block
28
- * @param extractor
29
- */
30
- deleteBlock: (block: string, extractor: string) => Promise<void>;
31
- }
32
- export default EventTriggerDB;
33
- //# sourceMappingURL=EventTriggerDB.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventTriggerDB.d.ts","sourceRoot":"","sources":["../../lib/actions/EventTriggerDB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,SAAS,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAK5E,cAAM,cAAc;IAClB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;gBAE5D,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;IAM1D;;;;;OAKG;IACH,kBAAkB,kBACD,MAAM,qBAAqB,CAAC,SACpC,WAAW,aACP,MAAM,sBAqEjB;IAEF;;;;;;OAMG;IACH,kBAAkB,YACP,MAAM,MAAM,CAAC,SACf,WAAW,aACP,MAAM,QACX,MAAM,KACX,QAAQ,IAAI,CAAC,CA4Bd;IAEF;;;;OAIG;IACH,WAAW,UAAiB,MAAM,aAAa,MAAM,mBAsBnD;CACH;AAED,eAAe,cAAc,CAAC"}
@@ -1,145 +0,0 @@
1
- import { In } from 'typeorm';
2
- import EventTriggerEntity from '../entities/EventTriggerEntity';
3
- import eventTriggerEntity from '../entities/EventTriggerEntity';
4
- import { chunk } from 'lodash-es';
5
- import { dbIdChunkSize } from '../constants';
6
- class EventTriggerDB {
7
- logger;
8
- datasource;
9
- triggerEventRepository;
10
- constructor(dataSource, logger) {
11
- this.datasource = dataSource;
12
- this.logger = logger;
13
- this.triggerEventRepository = dataSource.getRepository(EventTriggerEntity);
14
- }
15
- /**
16
- * It stores list of eventTriggers in the dataSource with block id
17
- * @param eventTriggers
18
- * @param block
19
- * @param extractor
20
- */
21
- storeEventTriggers = async (eventTriggers, block, extractor) => {
22
- if (eventTriggers.length === 0)
23
- return true;
24
- const boxIds = eventTriggers.map((trigger) => trigger.boxId);
25
- const savedTriggers = await this.triggerEventRepository.findBy({
26
- boxId: In(boxIds),
27
- extractor: extractor,
28
- });
29
- let success = true;
30
- const queryRunner = this.datasource.createQueryRunner();
31
- await queryRunner.connect();
32
- await queryRunner.startTransaction();
33
- try {
34
- for (const trigger of eventTriggers) {
35
- const saved = savedTriggers.some((entity) => {
36
- return entity.boxId === trigger.boxId;
37
- });
38
- const entity = {
39
- txId: trigger.txId,
40
- eventId: trigger.eventId,
41
- boxId: trigger.boxId,
42
- boxSerialized: trigger.boxSerialized,
43
- block: block.hash,
44
- height: block.height,
45
- extractor: extractor,
46
- WIDs: trigger.WIDs,
47
- amount: trigger.amount,
48
- bridgeFee: trigger.bridgeFee,
49
- fromAddress: trigger.fromAddress,
50
- toAddress: trigger.toAddress,
51
- fromChain: trigger.fromChain,
52
- networkFee: trigger.networkFee,
53
- sourceChainTokenId: trigger.sourceChainTokenId,
54
- targetChainTokenId: trigger.targetChainTokenId,
55
- sourceBlockId: trigger.sourceBlockId,
56
- toChain: trigger.toChain,
57
- sourceTxId: trigger.sourceTxId,
58
- sourceChainHeight: trigger.sourceChainHeight,
59
- };
60
- if (!saved) {
61
- this.logger.info(`Storing event trigger [${trigger.boxId}] for event [${trigger.eventId}] at height ${block.height} and extractor ${extractor}`);
62
- await queryRunner.manager.insert(EventTriggerEntity, entity);
63
- }
64
- else {
65
- this.logger.info(`Updating event trigger ${trigger.boxId} for event [${trigger.eventId}] at height ${block.height} and extractor ${extractor}`);
66
- await queryRunner.manager.update(EventTriggerEntity, {
67
- boxId: trigger.boxId,
68
- }, entity);
69
- }
70
- this.logger.debug(`Entity: ${JSON.stringify(entity)}`);
71
- }
72
- await queryRunner.commitTransaction();
73
- }
74
- catch (e) {
75
- this.logger.error(`An error occurred during store eventTrigger action: ${e}`);
76
- await queryRunner.rollbackTransaction();
77
- success = false;
78
- }
79
- finally {
80
- await queryRunner.release();
81
- }
82
- return success;
83
- };
84
- /**
85
- * update spendBlock Column of the commitments in the dataBase
86
- * @param spendId
87
- * @param block
88
- * @param extractor
89
- * @param txId
90
- */
91
- spendEventTriggers = async (spendId, block, extractor, txId) => {
92
- const spendIdChunks = chunk(spendId, dbIdChunkSize);
93
- for (const spendIdChunk of spendIdChunks) {
94
- const updateResult = await this.datasource
95
- .createQueryBuilder()
96
- .update(eventTriggerEntity)
97
- .set({
98
- spendBlock: block.hash,
99
- spendHeight: block.height,
100
- spendTxId: txId,
101
- })
102
- .where({ boxId: In(spendIdChunk) })
103
- .andWhere({ extractor: extractor })
104
- .execute();
105
- if (updateResult.affected && updateResult.affected > 0) {
106
- const spentRows = await this.triggerEventRepository.findBy({
107
- boxId: In(spendIdChunk),
108
- spendBlock: block.hash,
109
- });
110
- for (const row of spentRows) {
111
- this.logger.info(`Spent trigger [${row.boxId}] of event [${row.eventId}] at height ${block.height}`);
112
- this.logger.debug(`Spent trigger: [${JSON.stringify(row)}]`);
113
- }
114
- }
115
- }
116
- };
117
- /**
118
- * deleting all permits corresponding to the block(id) and extractor(id)
119
- * @param block
120
- * @param extractor
121
- */
122
- deleteBlock = async (block, extractor) => {
123
- this.logger.info(`Deleting event triggers at block ${block} and extractor ${extractor}`);
124
- await this.datasource
125
- .createQueryBuilder()
126
- .delete()
127
- .from(EventTriggerEntity)
128
- .where('extractor = :extractor AND block = :block', {
129
- block: block,
130
- extractor: extractor,
131
- })
132
- .execute();
133
- //TODO: should handled null value in spendBlockHeight
134
- await this.datasource
135
- .createQueryBuilder()
136
- .update(EventTriggerEntity)
137
- .set({ spendBlock: undefined, spendHeight: 0 })
138
- .where('spendBlock = :block AND block = :block', {
139
- block: block,
140
- })
141
- .execute();
142
- };
143
- }
144
- export default EventTriggerDB;
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRUcmlnZ2VyREIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvYWN0aW9ucy9FdmVudFRyaWdnZXJEQi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFjLE1BQU0sU0FBUyxDQUFDO0FBQ3JELE9BQU8sa0JBQWtCLE1BQU0sZ0NBQWdDLENBQUM7QUFJaEUsT0FBTyxrQkFBa0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxjQUFjO0lBQ1QsTUFBTSxDQUFpQjtJQUNmLFVBQVUsQ0FBYTtJQUN2QixzQkFBc0IsQ0FBaUM7SUFFeEUsWUFBWSxVQUFzQixFQUFFLE1BQXNCO1FBQ3hELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLEdBQUcsS0FBSyxFQUN4QixhQUEyQyxFQUMzQyxLQUFrQixFQUNsQixTQUFpQixFQUNqQixFQUFFO1FBQ0YsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDO1lBQzdELEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFNBQVMsRUFB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QUFDLEtBQUssZUFBZSxHQUFHLENBQUMsT0FBTyxlQUFlLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FDbkYsQ0FBQztvQkFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzlEO2FBQ0Y7U0FDRjtJQUNILENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxXQUFXLEdBQUcsS0FBSyxFQUFFLEtBQWEsRUFBRSxTQUFpQixFQUFFLEVBQUU7UUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2Qsb0NBQW9DLEtBQUssa0JBQWtCLFNBQVMsRUFBRSxDQUN2RSxDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsVUFBVTthQUNsQixrQkFBa0IsRUFBRTthQUNwQixNQUFNLEVBQUU7YUFDUixJQUFJLENBQUMsa0JBQWtCLENBQUM7YUFDeEIsS0FBSyxDQUFDLDJDQUEyQyxFQUFFO1lBQ2xELEtBQUssRUFBRSxLQUFLO1lBQ1osU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQzthQUNELE9BQU8sRUFBRSxDQUFDO1FBQ2IscURBQXFEO1FBQ3JELE1BQU0sSUFBSSxDQUFDLFVBQVU7YUFDbEIsa0JBQWtCLEVBQUU7YUFDcEIsTUFBTSxDQUFDLGtCQUFrQixDQUFDO2FBQzFCLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQzlDLEtBQUssQ0FBQyx3Q0FBd0MsRUFBRTtZQUMvQyxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7YUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQztDQUNIO0FBRUQsZUFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlLCBJbiwgUmVwb3NpdG9yeSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0IEV2ZW50VHJpZ2dlckVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9FdmVudFRyaWdnZXJFbnRpdHknO1xuaW1wb3J0IHsgQmxvY2tFbnRpdHkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2xvZ2dlci1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRXh0cmFjdGVkRXZlbnRUcmlnZ2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRFdmVudFRyaWdnZXInO1xuaW1wb3J0IGV2ZW50VHJpZ2dlckVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9FdmVudFRyaWdnZXJFbnRpdHknO1xuaW1wb3J0IHsgY2h1bmsgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGJJZENodW5rU2l6ZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmNsYXNzIEV2ZW50VHJpZ2dlckRCIHtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhc291cmNlOiBEYXRhU291cmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyaWdnZXJFdmVudFJlcG9zaXRvcnk6IFJlcG9zaXRvcnk8RXZlbnRUcmlnZ2VyRW50aXR5PjtcblxuICBjb25zdHJ1Y3RvcihkYXRhU291cmNlOiBEYXRhU291cmNlLCBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyKSB7XG4gICAgdGhpcy5kYXRhc291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLnRyaWdnZXJFdmVudFJlcG9zaXRvcnkgPSBkYXRhU291cmNlLmdldFJlcG9zaXRvcnkoRXZlbnRUcmlnZ2VyRW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBzdG9yZXMgbGlzdCBvZiBldmVudFRyaWdnZXJzIGluIHRoZSBkYXRhU291cmNlIHdpdGggYmxvY2sgaWRcbiAgICogQHBhcmFtIGV2ZW50VHJpZ2dlcnNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHN0b3JlRXZlbnRUcmlnZ2VycyA9IGFzeW5jIChcbiAgICBldmVudFRyaWdnZXJzOiBBcnJheTxFeHRyYWN0ZWRFdmVudFRyaWdnZXI+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApID0+IHtcbiAgICBpZiAoZXZlbnRUcmlnZ2Vycy5sZW5ndGggPT09IDApIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IGJveElkcyA9IGV2ZW50VHJpZ2dlcnMubWFwKCh0cmlnZ2VyKSA9PiB0cmlnZ2VyLmJveElkKTtcbiAgICBjb25zdCBzYXZlZFRyaWdnZXJzID0gYXdhaXQgdGhpcy50cmlnZ2VyRXZlbnRSZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICBib3hJZDogSW4oYm94SWRzKSxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgICBjb25zdCBxdWVyeVJ1bm5lciA9IHRoaXMuZGF0YXNvdXJjZS5jcmVhdGVRdWVyeVJ1bm5lcigpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3QoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiBldmVudFRyaWdnZXJzKSB7XG4gICAgICAgIGNvbnN0IHNhdmVkID0gc2F2ZWRUcmlnZ2Vycy5zb21lKChlbnRpdHkpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50aXR5LmJveElkID09PSB0cmlnZ2VyLmJveElkO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW50aXR5ID0ge1xuICAgICAgICAgIHR4SWQ6IHRyaWdnZXIudHhJZCxcbiAgICAgICAgICBldmVudElkOiB0cmlnZ2VyLmV2ZW50SWQsXG4gICAgICAgICAgYm94SWQ6IHRyaWdnZXIuYm94SWQsXG4gICAgICAgICAgYm94U2VyaWFsaXplZDogdHJpZ2dlci5ib3hTZXJpYWxpemVkLFxuICAgICAgICAgIGJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICAgIGhlaWdodDogYmxvY2suaGVpZ2h0LFxuICAgICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICAgIFdJRHM6IHRyaWdnZXIuV0lEcyxcbiAgICAgICAgICBhbW91bnQ6IHRyaWdnZXIuYW1vdW50LFxuICAgICAgICAgIGJyaWRnZUZlZTogdHJpZ2dlci5icmlkZ2VGZWUsXG4gICAgICAgICAgZnJvbUFkZHJlc3M6IHRyaWdnZXIuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgdG9BZGRyZXNzOiB0cmlnZ2VyLnRvQWRkcmVzcyxcbiAgICAgICAgICBmcm9tQ2hhaW46IHRyaWdnZXIuZnJvbUNoYWluLFxuICAgICAgICAgIG5ldHdvcmtGZWU6IHRyaWdnZXIubmV0d29ya0ZlZSxcbiAgICAgICAgICBzb3VyY2VDaGFpblRva2VuSWQ6IHRyaWdnZXIuc291cmNlQ2hhaW5Ub2tlbklkLFxuICAgICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogdHJpZ2dlci50YXJnZXRDaGFpblRva2VuSWQsXG4gICAgICAgICAgc291cmNlQmxvY2tJZDogdHJpZ2dlci5zb3VyY2VCbG9ja0lkLFxuICAgICAgICAgIHRvQ2hhaW46IHRyaWdnZXIudG9DaGFpbixcbiAgICAgICAgICBzb3VyY2VUeElkOiB0cmlnZ2VyLnNvdXJjZVR4SWQsXG4gICAgICAgICAgc291cmNlQ2hhaW5IZWlnaHQ6IHRyaWdnZXIuc291cmNlQ2hhaW5IZWlnaHQsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2F2ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFN0b3JpbmcgZXZlbnQgdHJpZ2dlciBbJHt0cmlnZ2VyLmJveElkfV0gZm9yIGV2ZW50IFske3RyaWdnZXIuZXZlbnRJZH1dIGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH0gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCBxdWVyeVJ1bm5lci5tYW5hZ2VyLmluc2VydChFdmVudFRyaWdnZXJFbnRpdHksIGVudGl0eSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBVcGRhdGluZyBldmVudCB0cmlnZ2VyICR7dHJpZ2dlci5ib3hJZH0gZm9yIGV2ZW50IFske3RyaWdnZXIuZXZlbnRJZH1dIGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH0gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCBxdWVyeVJ1bm5lci5tYW5hZ2VyLnVwZGF0ZShcbiAgICAgICAgICAgIEV2ZW50VHJpZ2dlckVudGl0eSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYm94SWQ6IHRyaWdnZXIuYm94SWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW50aXR5XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgRW50aXR5OiAke0pTT04uc3RyaW5naWZ5KGVudGl0eSl9YCk7XG4gICAgICB9XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHN0b3JlIGV2ZW50VHJpZ2dlciBhY3Rpb246ICR7ZX1gXG4gICAgICApO1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yZWxlYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9O1xuXG4gIC8qKlxuICAgKiB1cGRhdGUgc3BlbmRCbG9jayBDb2x1bW4gb2YgdGhlIGNvbW1pdG1lbnRzIGluIHRoZSBkYXRhQmFzZVxuICAgKiBAcGFyYW0gc3BlbmRJZFxuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKiBAcGFyYW0gdHhJZFxuICAgKi9cbiAgc3BlbmRFdmVudFRyaWdnZXJzID0gYXN5bmMgKFxuICAgIHNwZW5kSWQ6IEFycmF5PHN0cmluZz4sXG4gICAgYmxvY2s6IEJsb2NrRW50aXR5LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nLFxuICAgIHR4SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzcGVuZElkQ2h1bmtzID0gY2h1bmsoc3BlbmRJZCwgZGJJZENodW5rU2l6ZSk7XG4gICAgZm9yIChjb25zdCBzcGVuZElkQ2h1bmsgb2Ygc3BlbmRJZENodW5rcykge1xuICAgICAgY29uc3QgdXBkYXRlUmVzdWx0ID0gYXdhaXQgdGhpcy5kYXRhc291cmNlXG4gICAgICAgIC5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAudXBkYXRlKGV2ZW50VHJpZ2dlckVudGl0eSlcbiAgICAgICAgLnNldCh7XG4gICAgICAgICAgc3BlbmRCbG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgICBzcGVuZEhlaWdodDogYmxvY2suaGVpZ2h0LFxuICAgICAgICAgIHNwZW5kVHhJZDogdHhJZCxcbiAgICAgICAgfSlcbiAgICAgICAgLndoZXJlKHsgYm94SWQ6IEluKHNwZW5kSWRDaHVuaykgfSlcbiAgICAgICAgLmFuZFdoZXJlKHsgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSlcbiAgICAgICAgLmV4ZWN1dGUoKTtcblxuICAgICAgaWYgKHVwZGF0ZVJlc3VsdC5hZmZlY3RlZCAmJiB1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHNwZW50Um93cyA9IGF3YWl0IHRoaXMudHJpZ2dlckV2ZW50UmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgICAgIGJveElkOiBJbihzcGVuZElkQ2h1bmspLFxuICAgICAgICAgIHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBzcGVudFJvd3MpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFNwZW50IHRyaWdnZXIgWyR7cm93LmJveElkfV0gb2YgZXZlbnQgWyR7cm93LmV2ZW50SWR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFNwZW50IHRyaWdnZXI6IFske0pTT04uc3RyaW5naWZ5KHJvdyl9XWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBkZWxldGluZyBhbGwgcGVybWl0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBibG9jayhpZCkgYW5kIGV4dHJhY3RvcihpZClcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIGRlbGV0ZUJsb2NrID0gYXN5bmMgKGJsb2NrOiBzdHJpbmcsIGV4dHJhY3Rvcjogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgIGBEZWxldGluZyBldmVudCB0cmlnZ2VycyBhdCBibG9jayAke2Jsb2NrfSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuZGF0YXNvdXJjZVxuICAgICAgLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAuZGVsZXRlKClcbiAgICAgIC5mcm9tKEV2ZW50VHJpZ2dlckVudGl0eSlcbiAgICAgIC53aGVyZSgnZXh0cmFjdG9yID0gOmV4dHJhY3RvciBBTkQgYmxvY2sgPSA6YmxvY2snLCB7XG4gICAgICAgIGJsb2NrOiBibG9jayxcbiAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICB9KVxuICAgICAgLmV4ZWN1dGUoKTtcbiAgICAvL1RPRE86IHNob3VsZCBoYW5kbGVkIG51bGwgdmFsdWUgaW4gc3BlbmRCbG9ja0hlaWdodFxuICAgIGF3YWl0IHRoaXMuZGF0YXNvdXJjZVxuICAgICAgLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAudXBkYXRlKEV2ZW50VHJpZ2dlckVudGl0eSlcbiAgICAgIC5zZXQoeyBzcGVuZEJsb2NrOiB1bmRlZmluZWQsIHNwZW5kSGVpZ2h0OiAwIH0pXG4gICAgICAud2hlcmUoJ3NwZW5kQmxvY2sgPSA6YmxvY2sgQU5EIGJsb2NrID0gOmJsb2NrJywge1xuICAgICAgICBibG9jazogYmxvY2ssXG4gICAgICB9KVxuICAgICAgLmV4ZWN1dGUoKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXZlbnRUcmlnZ2VyREI7XG4iXX0=
@@ -1,32 +0,0 @@
1
- import { DataSource } from 'typeorm';
2
- import { extractedCommitment } from '../interfaces/extractedCommitment';
3
- import { BlockEntity } from '@rosen-bridge/scanner';
4
- import { AbstractLogger } from '@rosen-bridge/logger-interface';
5
- declare class CommitmentEntityAction {
6
- readonly logger: AbstractLogger;
7
- private readonly datasource;
8
- private readonly commitmentRepository;
9
- constructor(dataSource: DataSource, logger: AbstractLogger);
10
- /**
11
- * It stores list of observations in the dataSource with block id
12
- * @param commitments
13
- * @param block
14
- * @param extractor
15
- */
16
- storeCommitments: (commitments: Array<extractedCommitment>, block: BlockEntity, extractor: string) => Promise<boolean>;
17
- /**
18
- * update spendBlock Column of the commitments in the dataBase
19
- * @param spendId
20
- * @param block
21
- * @param extractor
22
- */
23
- spendCommitments: (spendId: Array<string>, block: BlockEntity, extractor: string) => Promise<void>;
24
- /**
25
- * deleting all permits corresponding to the block(id) and extractor(id)
26
- * @param block
27
- * @param extractor
28
- */
29
- deleteBlockCommitment: (block: string, extractor: string) => Promise<void>;
30
- }
31
- export default CommitmentEntityAction;
32
- //# sourceMappingURL=commitmentDB.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commitmentDB.d.ts","sourceRoot":"","sources":["../../lib/actions/commitmentDB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIhE,cAAM,sBAAsB;IAC1B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+B;gBAExD,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;IAM1D;;;;;OAKG;IACH,gBAAgB,gBACD,MAAM,mBAAmB,CAAC,SAChC,WAAW,aACP,MAAM,KAChB,QAAQ,OAAO,CAAC,CA0DjB;IAEF;;;;;OAKG;IACH,gBAAgB,YACL,MAAM,MAAM,CAAC,SACf,WAAW,aACP,MAAM,KAChB,QAAQ,IAAI,CAAC,CAwBd;IAEF;;;;OAIG;IACH,qBAAqB,UAAiB,MAAM,aAAa,MAAM,mBAsB7D;CACH;AAED,eAAe,sBAAsB,CAAC"}
@@ -1,129 +0,0 @@
1
- import { In } from 'typeorm';
2
- import CommitmentEntity from '../entities/CommitmentEntity';
3
- import { chunk } from 'lodash-es';
4
- import { dbIdChunkSize } from '../constants';
5
- class CommitmentEntityAction {
6
- logger;
7
- datasource;
8
- commitmentRepository;
9
- constructor(dataSource, logger) {
10
- this.datasource = dataSource;
11
- this.logger = logger;
12
- this.commitmentRepository = dataSource.getRepository(CommitmentEntity);
13
- }
14
- /**
15
- * It stores list of observations in the dataSource with block id
16
- * @param commitments
17
- * @param block
18
- * @param extractor
19
- */
20
- storeCommitments = async (commitments, block, extractor) => {
21
- if (commitments.length === 0)
22
- return true;
23
- const boxIds = commitments.map((commitment) => commitment.boxId);
24
- const savedCommitments = await this.commitmentRepository.findBy({
25
- boxId: In(boxIds),
26
- extractor: extractor,
27
- });
28
- let success = true;
29
- const queryRunner = this.datasource.createQueryRunner();
30
- await queryRunner.connect();
31
- await queryRunner.startTransaction();
32
- try {
33
- for (const commitment of commitments) {
34
- const saved = savedCommitments.some((entity) => {
35
- return entity.boxId === commitment.boxId;
36
- });
37
- const entity = {
38
- txId: commitment.txId,
39
- commitment: commitment.commitment,
40
- eventId: commitment.eventId,
41
- boxId: commitment.boxId,
42
- WID: commitment.WID,
43
- extractor: extractor,
44
- block: block.hash,
45
- height: block.height,
46
- boxSerialized: commitment.boxSerialized,
47
- rwtCount: commitment.rwtCount,
48
- };
49
- if (!saved) {
50
- this.logger.info(`Saving commitment [${commitment.boxId}] for event [${commitment.eventId}] from watcher [${commitment.WID}] at height ${block.height} and extractor ${extractor}`);
51
- await queryRunner.manager.insert(CommitmentEntity, entity);
52
- }
53
- else {
54
- this.logger.info(`Updating commitment [${commitment.boxId}] for event [${commitment.eventId}] from watcher [${commitment.WID}] at height ${block.height} and extractor ${extractor}`);
55
- await queryRunner.manager.update(CommitmentEntity, {
56
- boxId: commitment.boxId,
57
- }, entity);
58
- }
59
- this.logger.debug(`Entity: ${JSON.stringify(entity)}`);
60
- }
61
- await queryRunner.commitTransaction();
62
- }
63
- catch (e) {
64
- this.logger.error(`An error occurred during store commitments action: ${e}`);
65
- await queryRunner.rollbackTransaction();
66
- success = false;
67
- }
68
- finally {
69
- await queryRunner.release();
70
- }
71
- return success;
72
- };
73
- /**
74
- * update spendBlock Column of the commitments in the dataBase
75
- * @param spendId
76
- * @param block
77
- * @param extractor
78
- */
79
- spendCommitments = async (spendId, block, extractor) => {
80
- const spendIdChunks = chunk(spendId, dbIdChunkSize);
81
- for (const spendIdChunk of spendIdChunks) {
82
- const updateResult = await this.datasource
83
- .createQueryBuilder()
84
- .update(CommitmentEntity)
85
- .set({ spendBlock: block.hash, spendHeight: block.height })
86
- .where({ boxId: In(spendIdChunk) })
87
- .andWhere({ extractor: extractor })
88
- .execute();
89
- if (updateResult.affected && updateResult.affected > 0) {
90
- const spentRows = await this.commitmentRepository.findBy({
91
- boxId: In(spendIdChunk),
92
- spendBlock: block.hash,
93
- });
94
- for (const row of spentRows) {
95
- this.logger.info(`Spent commitment [${row.boxId}] for event [${row.eventId}] at height ${block.height}`);
96
- this.logger.debug(`Spent commitment [${JSON.stringify(row)}]`);
97
- }
98
- }
99
- }
100
- };
101
- /**
102
- * deleting all permits corresponding to the block(id) and extractor(id)
103
- * @param block
104
- * @param extractor
105
- */
106
- deleteBlockCommitment = async (block, extractor) => {
107
- this.logger.info(`Deleting commitments of block [${block}] and extractor ${extractor}`);
108
- await this.datasource
109
- .createQueryBuilder()
110
- .delete()
111
- .from(CommitmentEntity)
112
- .where('extractor = :extractor AND block = :block', {
113
- block: block,
114
- extractor: extractor,
115
- })
116
- .execute();
117
- //TODO: should handled null value in spendBlockHeight
118
- await this.datasource
119
- .createQueryBuilder()
120
- .update(CommitmentEntity)
121
- .set({ spendBlock: undefined, spendHeight: 0 })
122
- .where('spendBlock = :block AND block = :block', {
123
- block: block,
124
- })
125
- .execute();
126
- };
127
- }
128
- export default CommitmentEntityAction;
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudERCLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FjdGlvbnMvY29tbWl0bWVudERCLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQWMsTUFBTSxTQUFTLENBQUM7QUFFckQsT0FBTyxnQkFBZ0IsTUFBTSw4QkFBOEIsQ0FBQztBQUc1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxzQkFBc0I7SUFDakIsTUFBTSxDQUFpQjtJQUNmLFVBQVUsQ0FBYTtJQUN2QixvQkFBb0IsQ0FBK0I7SUFFcEUsWUFBWSxVQUFzQixFQUFFLE1BQXNCO1FBQ3hELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxFQUN0QixXQUF1QyxFQUN2QyxLQUFrQixFQUNsQixTQUFpQixFQUNDLEVBQUU7UUFDcEIsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7WUFDOUQsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxP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QUNsQixrQkFBa0IsRUFBRTthQUNwQixNQUFNLEVBQUU7YUFDUixJQUFJLENBQUMsZ0JBQWdCLENBQUM7YUFDdEIsS0FBSyxDQUFDLDJDQUEyQyxFQUFFO1lBQ2xELEtBQUssRUFBRSxLQUFLO1lBQ1osU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQzthQUNELE9BQU8sRUFBRSxDQUFDO1FBQ2IscURBQXFEO1FBQ3JELE1BQU0sSUFBSSxDQUFDLFVBQVU7YUFDbEIsa0JBQWtCLEVBQUU7YUFDcEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDO2FBQ3hCLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQzlDLEtBQUssQ0FBQyx3Q0FBd0MsRUFBRTtZQUMvQyxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7YUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQztDQUNIO0FBRUQsZUFBZSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIEluLCBSZXBvc2l0b3J5IH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgeyBleHRyYWN0ZWRDb21taXRtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRDb21taXRtZW50JztcbmltcG9ydCBDb21taXRtZW50RW50aXR5IGZyb20gJy4uL2VudGl0aWVzL0NvbW1pdG1lbnRFbnRpdHknO1xuaW1wb3J0IHsgQmxvY2tFbnRpdHkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2xvZ2dlci1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY2h1bmsgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGJJZENodW5rU2l6ZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmNsYXNzIENvbW1pdG1lbnRFbnRpdHlBY3Rpb24ge1xuICByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFzb3VyY2U6IERhdGFTb3VyY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWl0bWVudFJlcG9zaXRvcnk6IFJlcG9zaXRvcnk8Q29tbWl0bWVudEVudGl0eT47XG5cbiAgY29uc3RydWN0b3IoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSwgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcikge1xuICAgIHRoaXMuZGF0YXNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5jb21taXRtZW50UmVwb3NpdG9yeSA9IGRhdGFTb3VyY2UuZ2V0UmVwb3NpdG9yeShDb21taXRtZW50RW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBzdG9yZXMgbGlzdCBvZiBvYnNlcnZhdGlvbnMgaW4gdGhlIGRhdGFTb3VyY2Ugd2l0aCBibG9jayBpZFxuICAgKiBAcGFyYW0gY29tbWl0bWVudHNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHN0b3JlQ29tbWl0bWVudHMgPSBhc3luYyAoXG4gICAgY29tbWl0bWVudHM6IEFycmF5PGV4dHJhY3RlZENvbW1pdG1lbnQ+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBpZiAoY29tbWl0bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBib3hJZHMgPSBjb21taXRtZW50cy5tYXAoKGNvbW1pdG1lbnQpID0+IGNvbW1pdG1lbnQuYm94SWQpO1xuICAgIGNvbnN0IHNhdmVkQ29tbWl0bWVudHMgPSBhd2FpdCB0aGlzLmNvbW1pdG1lbnRSZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICBib3hJZDogSW4oYm94SWRzKSxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgICBjb25zdCBxdWVyeVJ1bm5lciA9IHRoaXMuZGF0YXNvdXJjZS5jcmVhdGVRdWVyeVJ1bm5lcigpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3QoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgY29tbWl0bWVudCBvZiBjb21taXRtZW50cykge1xuICAgICAgICBjb25zdCBzYXZlZCA9IHNhdmVkQ29tbWl0bWVudHMuc29tZSgoZW50aXR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVudGl0eS5ib3hJZCA9PT0gY29tbWl0bWVudC5ib3hJZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHtcbiAgICAgICAgICB0eElkOiBjb21taXRtZW50LnR4SWQsXG4gICAgICAgICAgY29tbWl0bWVudDogY29tbWl0bWVudC5jb21taXRtZW50LFxuICAgICAgICAgIGV2ZW50SWQ6IGNvbW1pdG1lbnQuZXZlbnRJZCxcbiAgICAgICAgICBib3hJZDogY29tbWl0bWVudC5ib3hJZCxcbiAgICAgICAgICBXSUQ6IGNvbW1pdG1lbnQuV0lELFxuICAgICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICAgIGJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICAgIGhlaWdodDogYmxvY2suaGVpZ2h0LFxuICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IGNvbW1pdG1lbnQuYm94U2VyaWFsaXplZCxcbiAgICAgICAgICByd3RDb3VudDogY29tbWl0bWVudC5yd3RDb3VudCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFzYXZlZCkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgU2F2aW5nIGNvbW1pdG1lbnQgWyR7Y29tbWl0bWVudC5ib3hJZH1dIGZvciBldmVudCBbJHtjb21taXRtZW50LmV2ZW50SWR9XSBmcm9tIHdhdGNoZXIgWyR7Y29tbWl0bWVudC5XSUR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5pbnNlcnQoQ29tbWl0bWVudEVudGl0eSwgZW50aXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFVwZGF0aW5nIGNvbW1pdG1lbnQgWyR7Y29tbWl0bWVudC5ib3hJZH1dIGZvciBldmVudCBbJHtjb21taXRtZW50LmV2ZW50SWR9XSBmcm9tIHdhdGNoZXIgWyR7Y29tbWl0bWVudC5XSUR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci51cGRhdGUoXG4gICAgICAgICAgICBDb21taXRtZW50RW50aXR5LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBib3hJZDogY29tbWl0bWVudC5ib3hJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbnRpdHlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBFbnRpdHk6ICR7SlNPTi5zdHJpbmdpZnkoZW50aXR5KX1gKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbW1pdFRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmUgY29tbWl0bWVudHMgYWN0aW9uOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfTtcblxuICAvKipcbiAgICogdXBkYXRlIHNwZW5kQmxvY2sgQ29sdW1uIG9mIHRoZSBjb21taXRtZW50cyBpbiB0aGUgZGF0YUJhc2VcbiAgICogQHBhcmFtIHNwZW5kSWRcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHNwZW5kQ29tbWl0bWVudHMgPSBhc3luYyAoXG4gICAgc3BlbmRJZDogQXJyYXk8c3RyaW5nPixcbiAgICBibG9jazogQmxvY2tFbnRpdHksXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qgc3BlbmRJZENodW5rcyA9IGNodW5rKHNwZW5kSWQsIGRiSWRDaHVua1NpemUpO1xuICAgIGZvciAoY29uc3Qgc3BlbmRJZENodW5rIG9mIHNwZW5kSWRDaHVua3MpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVJlc3VsdCA9IGF3YWl0IHRoaXMuZGF0YXNvdXJjZVxuICAgICAgICAuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgLnVwZGF0ZShDb21taXRtZW50RW50aXR5KVxuICAgICAgICAuc2V0KHsgc3BlbmRCbG9jazogYmxvY2suaGFzaCwgc3BlbmRIZWlnaHQ6IGJsb2NrLmhlaWdodCB9KVxuICAgICAgICAud2hlcmUoeyBib3hJZDogSW4oc3BlbmRJZENodW5rKSB9KVxuICAgICAgICAuYW5kV2hlcmUoeyBleHRyYWN0b3I6IGV4dHJhY3RvciB9KVxuICAgICAgICAuZXhlY3V0ZSgpO1xuXG4gICAgICBpZiAodXBkYXRlUmVzdWx0LmFmZmVjdGVkICYmIHVwZGF0ZVJlc3VsdC5hZmZlY3RlZCA+IDApIHtcbiAgICAgICAgY29uc3Qgc3BlbnRSb3dzID0gYXdhaXQgdGhpcy5jb21taXRtZW50UmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgICAgIGJveElkOiBJbihzcGVuZElkQ2h1bmspLFxuICAgICAgICAgIHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBzcGVudFJvd3MpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFNwZW50IGNvbW1pdG1lbnQgWyR7cm93LmJveElkfV0gZm9yIGV2ZW50IFske3Jvdy5ldmVudElkfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fWBcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBTcGVudCBjb21taXRtZW50IFske0pTT04uc3RyaW5naWZ5KHJvdyl9XWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBkZWxldGluZyBhbGwgcGVybWl0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBibG9jayhpZCkgYW5kIGV4dHJhY3RvcihpZClcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIGRlbGV0ZUJsb2NrQ29tbWl0bWVudCA9IGFzeW5jIChibG9jazogc3RyaW5nLCBleHRyYWN0b3I6IHN0cmluZykgPT4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgRGVsZXRpbmcgY29tbWl0bWVudHMgb2YgYmxvY2sgWyR7YmxvY2t9XSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuZGF0YXNvdXJjZVxuICAgICAgLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAuZGVsZXRlKClcbiAgICAgIC5mcm9tKENvbW1pdG1lbnRFbnRpdHkpXG4gICAgICAud2hlcmUoJ2V4dHJhY3RvciA9IDpleHRyYWN0b3IgQU5EIGJsb2NrID0gOmJsb2NrJywge1xuICAgICAgICBibG9jazogYmxvY2ssXG4gICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgfSlcbiAgICAgIC5leGVjdXRlKCk7XG4gICAgLy9UT0RPOiBzaG91bGQgaGFuZGxlZCBudWxsIHZhbHVlIGluIHNwZW5kQmxvY2tIZWlnaHRcbiAgICBhd2FpdCB0aGlzLmRhdGFzb3VyY2VcbiAgICAgIC5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgLnVwZGF0ZShDb21taXRtZW50RW50aXR5KVxuICAgICAgLnNldCh7IHNwZW5kQmxvY2s6IHVuZGVmaW5lZCwgc3BlbmRIZWlnaHQ6IDAgfSlcbiAgICAgIC53aGVyZSgnc3BlbmRCbG9jayA9IDpibG9jayBBTkQgYmxvY2sgPSA6YmxvY2snLCB7XG4gICAgICAgIGJsb2NrOiBibG9jayxcbiAgICAgIH0pXG4gICAgICAuZXhlY3V0ZSgpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb21taXRtZW50RW50aXR5QWN0aW9uO1xuIl19
@@ -1,39 +0,0 @@
1
- import { DataSource } from 'typeorm';
2
- import { ExtractedPermit } from '../interfaces/extractedPermit';
3
- import { BlockEntity } from '@rosen-bridge/scanner';
4
- import { AbstractLogger } from '@rosen-bridge/logger-interface';
5
- declare class PermitEntityAction {
6
- readonly logger: AbstractLogger;
7
- private readonly datasource;
8
- private readonly permitRepository;
9
- constructor(dataSource: DataSource, logger: AbstractLogger);
10
- /**
11
- * stores initial permit boxes in the database
12
- * @param permits
13
- * @param initialHeight
14
- * @param extractor
15
- */
16
- storeInitialPermits: (permits: Array<ExtractedPermit>, initialHeight: number, extractor: string) => Promise<boolean>;
17
- /**
18
- * It stores list of permits in the dataSource with block id
19
- * @param permits
20
- * @param block
21
- * @param extractor
22
- */
23
- storePermits: (permits: Array<ExtractedPermit>, block: BlockEntity, extractor: string) => Promise<boolean>;
24
- /**
25
- * update spendBlock Column of the permits in the dataBase
26
- * @param spendId
27
- * @param block
28
- * @param extractor
29
- */
30
- spendPermits: (spendId: Array<string>, block: BlockEntity, extractor: string) => Promise<void>;
31
- /**
32
- * deleting all permits corresponding to the block(id) and extractor(id)
33
- * @param block
34
- * @param extractor
35
- */
36
- deleteBlock: (block: string, extractor: string) => Promise<void>;
37
- }
38
- export default PermitEntityAction;
39
- //# sourceMappingURL=permitDB.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"permitDB.d.ts","sourceRoot":"","sources":["../../lib/actions/permitDB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAKhE,cAAM,kBAAkB;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;gBAEhD,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;IAM1D;;;;;OAKG;IACH,mBAAmB,YACR,MAAM,eAAe,CAAC,iBAChB,MAAM,aACV,MAAM,KAChB,QAAQ,OAAO,CAAC,CAsCjB;IAEF;;;;;OAKG;IACH,YAAY,YACD,MAAM,eAAe,CAAC,SACxB,WAAW,aACP,MAAM,sBAsDjB;IAEF;;;;;OAKG;IACH,YAAY,YACD,MAAM,MAAM,CAAC,SACf,WAAW,aACP,MAAM,KAChB,QAAQ,IAAI,CAAC,CAuBd;IAEF;;;;OAIG;IAEH,WAAW,UAAiB,MAAM,aAAa,MAAM,KAAG,QAAQ,IAAI,CAAC,CAsBnE;CACH;AAED,eAAe,kBAAkB,CAAC"}
@@ -1,166 +0,0 @@
1
- import { In, LessThan } from 'typeorm';
2
- import PermitEntity from '../entities/PermitEntity';
3
- import CommitmentEntity from '../entities/CommitmentEntity';
4
- import { chunk } from 'lodash-es';
5
- import { dbIdChunkSize } from '../constants';
6
- class PermitEntityAction {
7
- logger;
8
- datasource;
9
- permitRepository;
10
- constructor(dataSource, logger) {
11
- this.datasource = dataSource;
12
- this.logger = logger;
13
- this.permitRepository = dataSource.getRepository(PermitEntity);
14
- }
15
- /**
16
- * stores initial permit boxes in the database
17
- * @param permits
18
- * @param initialHeight
19
- * @param extractor
20
- */
21
- storeInitialPermits = async (permits, initialHeight, extractor) => {
22
- const queryRunner = this.datasource.createQueryRunner();
23
- await queryRunner.connect();
24
- await queryRunner.startTransaction();
25
- try {
26
- const repository = queryRunner.manager.getRepository(PermitEntity);
27
- await repository.delete({ height: LessThan(initialHeight) });
28
- for (const permit of permits) {
29
- const entity = {
30
- boxId: permit.boxId,
31
- boxSerialized: permit.boxSerialized,
32
- block: permit.block,
33
- height: permit.height,
34
- extractor: extractor,
35
- WID: permit.WID,
36
- txId: permit.txId,
37
- };
38
- await queryRunner.manager.getRepository(PermitEntity).insert(entity);
39
- this.logger.info(`Storing initial permit ${permit.boxId} belonging to watcher [${permit.WID}] and extractor ${extractor}`);
40
- this.logger.debug(`Stored permit Entity: [${JSON.stringify(entity)}] and extractor ${extractor}`);
41
- }
42
- await queryRunner.commitTransaction();
43
- }
44
- catch (e) {
45
- this.logger.error(`An error occurred during storing initial permits action: ${e}`);
46
- await queryRunner.rollbackTransaction();
47
- throw new Error('Initialization failed while storing initial permits');
48
- }
49
- finally {
50
- await queryRunner.release();
51
- }
52
- return true;
53
- };
54
- /**
55
- * It stores list of permits in the dataSource with block id
56
- * @param permits
57
- * @param block
58
- * @param extractor
59
- */
60
- storePermits = async (permits, block, extractor) => {
61
- if (permits.length === 0)
62
- return true;
63
- const boxIds = permits.map((permit) => permit.boxId);
64
- const savedPermits = await this.permitRepository.findBy({
65
- boxId: In(boxIds),
66
- extractor: extractor,
67
- });
68
- let success = true;
69
- const queryRunner = this.datasource.createQueryRunner();
70
- await queryRunner.connect();
71
- await queryRunner.startTransaction();
72
- try {
73
- for (const permit of permits) {
74
- const saved = savedPermits.some((entity) => {
75
- return entity.boxId === permit.boxId;
76
- });
77
- const entity = {
78
- boxId: permit.boxId,
79
- boxSerialized: permit.boxSerialized,
80
- block: block.hash,
81
- height: block.height,
82
- extractor: extractor,
83
- WID: permit.WID,
84
- txId: permit.txId,
85
- };
86
- if (!saved) {
87
- this.logger.debug(`Saving permit [${permit.boxId}] belonging to watcher [${permit.WID}] at height ${block.height} and extractor ${extractor}`);
88
- await queryRunner.manager.insert(PermitEntity, entity);
89
- }
90
- else {
91
- this.logger.debug(`Updating permit [${permit.boxId}] belonging to watcher [${permit.WID}] at height ${block.height} and extractor ${extractor}`);
92
- await queryRunner.manager.update(PermitEntity, {
93
- boxId: permit.boxId,
94
- }, entity);
95
- }
96
- this.logger.debug(`Entity: ${JSON.stringify(entity)}`);
97
- }
98
- await queryRunner.commitTransaction();
99
- }
100
- catch (e) {
101
- this.logger.error(`An error occurred during store permit action: ${e}`);
102
- await queryRunner.rollbackTransaction();
103
- success = false;
104
- }
105
- finally {
106
- await queryRunner.release();
107
- }
108
- return success;
109
- };
110
- /**
111
- * update spendBlock Column of the permits in the dataBase
112
- * @param spendId
113
- * @param block
114
- * @param extractor
115
- */
116
- spendPermits = async (spendId, block, extractor) => {
117
- const spendIdChunks = chunk(spendId, dbIdChunkSize);
118
- for (const spendIdChunk of spendIdChunks) {
119
- const updateResult = await this.datasource
120
- .createQueryBuilder()
121
- .update(PermitEntity)
122
- .set({ spendBlock: block.hash, spendHeight: block.height })
123
- .where({ boxId: In(spendIdChunk) })
124
- .andWhere({ extractor: extractor })
125
- .execute();
126
- if (updateResult.affected && updateResult.affected > 0) {
127
- const spentRows = await this.permitRepository.findBy({
128
- boxId: In(spendIdChunk),
129
- spendBlock: block.hash,
130
- });
131
- for (const row of spentRows) {
132
- this.logger.debug(`Spent permit with boxId [${row.boxId}] belonging to watcher with WID [${row.WID}] at height ${block.height}`);
133
- }
134
- }
135
- }
136
- };
137
- /**
138
- * deleting all permits corresponding to the block(id) and extractor(id)
139
- * @param block
140
- * @param extractor
141
- */
142
- //TODO: should check if deleted or not Promise<Boolean>
143
- deleteBlock = async (block, extractor) => {
144
- this.logger.info(`Deleting permits at block ${block} and extractor ${extractor}`);
145
- await this.datasource
146
- .createQueryBuilder()
147
- .delete()
148
- .from(PermitEntity)
149
- .where('extractor = :extractor AND block = :block', {
150
- block: block,
151
- extractor: extractor,
152
- })
153
- .execute();
154
- //TODO: should handled null value in spendBlockHeight
155
- await this.datasource
156
- .createQueryBuilder()
157
- .update(CommitmentEntity)
158
- .set({ spendBlock: undefined, spendHeight: 0 })
159
- .where('spendBlock = :block AND block = :block', {
160
- block: block,
161
- })
162
- .execute();
163
- };
164
- }
165
- export default PermitEntityAction;
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWl0REIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvYWN0aW9ucy9wZXJtaXREQi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFFLFFBQVEsRUFBYyxNQUFNLFNBQVMsQ0FBQztBQUUvRCxPQUFPLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUdwRCxPQUFPLGdCQUFnQixNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3QyxNQUFNLGtCQUFrQjtJQUNiLE1BQU0sQ0FBaUI7SUFDZixVQUFVLENBQWE7SUFDdkIsZ0JBQWdCLENBQTJCO0lBRTVELFlBQVksVUFBc0IsRUFBRSxNQUFzQjtRQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsR0FBRyxLQUFLLEVBQ3pCLE9BQStCLEVBQy9CLGFBQXFCLEVBQ3JCLFNBQWlCLEVBQ0MsRUFBRTtRQUNwQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDeEQsTUFBTSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyQyxJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkUsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEs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QUFHLEtBQUssRUFBRSxLQUFhLEVBQUUsU0FBaUIsRUFBaUIsRUFBRTtRQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCw2QkFBNkIsS0FBSyxrQkFBa0IsU0FBUyxFQUFFLENBQ2hFLENBQUM7UUFDRixNQUFNLElBQUksQ0FBQyxVQUFVO2FBQ2xCLGtCQUFrQixFQUFFO2FBQ3BCLE1BQU0sRUFBRTthQUNSLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDbEIsS0FBSyxDQUFDLDJDQUEyQyxFQUFFO1lBQ2xELEtBQUssRUFBRSxLQUFLO1lBQ1osU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQzthQUNELE9BQU8sRUFBRSxDQUFDO1FBQ2IscURBQXFEO1FBQ3JELE1BQU0sSUFBSSxDQUFDLFVBQVU7YUFDbEIsa0JBQWtCLEVBQUU7YUFDcEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDO2FBQ3hCLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQzlDLEtBQUssQ0FBQyx3Q0FBd0MsRUFBRTtZQUMvQyxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7YUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQztDQUNIO0FBRUQsZUFBZSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIEluLCBMZXNzVGhhbiwgUmVwb3NpdG9yeSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0IHsgRXh0cmFjdGVkUGVybWl0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRQZXJtaXQnO1xuaW1wb3J0IFBlcm1pdEVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9QZXJtaXRFbnRpdHknO1xuaW1wb3J0IHsgQmxvY2tFbnRpdHkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2xvZ2dlci1pbnRlcmZhY2UnO1xuaW1wb3J0IENvbW1pdG1lbnRFbnRpdHkgZnJvbSAnLi4vZW50aXRpZXMvQ29tbWl0bWVudEVudGl0eSc7XG5pbXBvcnQgeyBjaHVuayB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBkYklkQ2h1bmtTaXplIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuY2xhc3MgUGVybWl0RW50aXR5QWN0aW9uIHtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhc291cmNlOiBEYXRhU291cmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pdFJlcG9zaXRvcnk6IFJlcG9zaXRvcnk8UGVybWl0RW50aXR5PjtcblxuICBjb25zdHJ1Y3RvcihkYXRhU291cmNlOiBEYXRhU291cmNlLCBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyKSB7XG4gICAgdGhpcy5kYXRhc291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLnBlcm1pdFJlcG9zaXRvcnkgPSBkYXRhU291cmNlLmdldFJlcG9zaXRvcnkoUGVybWl0RW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdG9yZXMgaW5pdGlhbCBwZXJtaXQgYm94ZXMgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBwYXJhbSBwZXJtaXRzXG4gICAqIEBwYXJhbSBpbml0aWFsSGVpZ2h0XG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHN0b3JlSW5pdGlhbFBlcm1pdHMgPSBhc3luYyAoXG4gICAgcGVybWl0czogQXJyYXk8RXh0cmFjdGVkUGVybWl0PixcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXIsXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgY29uc3QgcXVlcnlSdW5uZXIgPSB0aGlzLmRhdGFzb3VyY2UuY3JlYXRlUXVlcnlSdW5uZXIoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb25uZWN0KCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXBvc2l0b3J5ID0gcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KFBlcm1pdEVudGl0eSk7XG4gICAgICBhd2FpdCByZXBvc2l0b3J5LmRlbGV0ZSh7IGhlaWdodDogTGVzc1RoYW4oaW5pdGlhbEhlaWdodCkgfSk7XG4gICAgICBmb3IgKGNvbnN0IHBlcm1pdCBvZiBwZXJtaXRzKSB7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHtcbiAgICAgICAgICBib3hJZDogcGVybWl0LmJveElkLFxuICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IHBlcm1pdC5ib3hTZXJpYWxpemVkLFxuICAgICAgICAgIGJsb2NrOiBwZXJtaXQuYmxvY2ssXG4gICAgICAgICAgaGVpZ2h0OiBwZXJtaXQuaGVpZ2h0LFxuICAgICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICAgIFdJRDogcGVybWl0LldJRCxcbiAgICAgICAgICB0eElkOiBwZXJtaXQudHhJZCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KFBlcm1pdEVudGl0eSkuaW5zZXJ0KGVudGl0eSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYFN0b3JpbmcgaW5pdGlhbCBwZXJtaXQgJHtwZXJtaXQuYm94SWR9IGJlbG9uZ2luZyB0byB3YXRjaGVyIFske3Blcm1pdC5XSUR9XSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYFN0b3JlZCBwZXJtaXQgRW50aXR5OiBbJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGVudGl0eVxuICAgICAgICAgICl9XSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbW1pdFRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmluZyBpbml0aWFsIHBlcm1pdHMgYWN0aW9uOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5pdGlhbGl6YXRpb24gZmFpbGVkIHdoaWxlIHN0b3JpbmcgaW5pdGlhbCBwZXJtaXRzJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJlbGVhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEl0IHN0b3JlcyBsaXN0IG9mIHBlcm1pdHMgaW4gdGhlIGRhdGFTb3VyY2Ugd2l0aCBibG9jayBpZFxuICAgKiBAcGFyYW0gcGVybWl0c1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgc3RvcmVQZXJtaXRzID0gYXN5bmMgKFxuICAgIHBlcm1pdHM6IEFycmF5PEV4dHJhY3RlZFBlcm1pdD4sXG4gICAgYmxvY2s6IEJsb2NrRW50aXR5LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICkgPT4ge1xuICAgIGlmIChwZXJtaXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgYm94SWRzID0gcGVybWl0cy5tYXAoKHBlcm1pdCkgPT4gcGVybWl0LmJveElkKTtcbiAgICBjb25zdCBzYXZlZFBlcm1pdHMgPSBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgIGJveElkOiBJbihib3hJZHMpLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gICAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IHF1ZXJ5UnVubmVyID0gdGhpcy5kYXRhc291cmNlLmNyZWF0ZVF1ZXJ5UnVubmVyKCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuY29ubmVjdCgpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBwZXJtaXQgb2YgcGVybWl0cykge1xuICAgICAgICBjb25zdCBzYXZlZCA9IHNhdmVkUGVybWl0cy5zb21lKChlbnRpdHkpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50aXR5LmJveElkID09PSBwZXJtaXQuYm94SWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbnRpdHkgPSB7XG4gICAgICAgICAgYm94SWQ6IHBlcm1pdC5ib3hJZCxcbiAgICAgICAgICBib3hTZXJpYWxpemVkOiBwZXJtaXQuYm94U2VyaWFsaXplZCxcbiAgICAgICAgICBibG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgICBoZWlnaHQ6IGJsb2NrLmhlaWdodCxcbiAgICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgICAgICBXSUQ6IHBlcm1pdC5XSUQsXG4gICAgICAgICAgdHhJZDogcGVybWl0LnR4SWQsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2F2ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBTYXZpbmcgcGVybWl0IFske3Blcm1pdC5ib3hJZH1dIGJlbG9uZ2luZyB0byB3YXRjaGVyIFske3Blcm1pdC5XSUR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5pbnNlcnQoUGVybWl0RW50aXR5LCBlbnRpdHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFVwZGF0aW5nIHBlcm1pdCBbJHtwZXJtaXQuYm94SWR9XSBiZWxvbmdpbmcgdG8gd2F0Y2hlciBbJHtwZXJtaXQuV0lEfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLm1hbmFnZXIudXBkYXRlKFxuICAgICAgICAgICAgUGVybWl0RW50aXR5LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBib3hJZDogcGVybWl0LmJveElkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVudGl0eVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEVudGl0eTogJHtKU09OLnN0cmluZ2lmeShlbnRpdHkpfWApO1xuICAgICAgfVxuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHN0b3JlIHBlcm1pdCBhY3Rpb246ICR7ZX1gKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfTtcblxuICAvKipcbiAgICogdXBkYXRlIHNwZW5kQmxvY2sgQ29sdW1uIG9mIHRoZSBwZXJtaXRzIGluIHRoZSBkYXRhQmFzZVxuICAgKiBAcGFyYW0gc3BlbmRJZFxuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgc3BlbmRQZXJtaXRzID0gYXN5bmMgKFxuICAgIHNwZW5kSWQ6IEFycmF5PHN0cmluZz4sXG4gICAgYmxvY2s6IEJsb2NrRW50aXR5LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHNwZW5kSWRDaHVua3MgPSBjaHVuayhzcGVuZElkLCBkYklkQ2h1bmtTaXplKTtcbiAgICBmb3IgKGNvbnN0IHNwZW5kSWRDaHVuayBvZiBzcGVuZElkQ2h1bmtzKSB7XG4gICAgICBjb25zdCB1cGRhdGVSZXN1bHQgPSBhd2FpdCB0aGlzLmRhdGFzb3VyY2VcbiAgICAgICAgLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgIC51cGRhdGUoUGVybWl0RW50aXR5KVxuICAgICAgICAuc2V0KHsgc3BlbmRCbG9jazogYmxvY2suaGFzaCwgc3BlbmRIZWlnaHQ6IGJsb2NrLmhlaWdodCB9KVxuICAgICAgICAud2hlcmUoeyBib3hJZDogSW4oc3BlbmRJZENodW5rKSB9KVxuICAgICAgICAuYW5kV2hlcmUoeyBleHRyYWN0b3I6IGV4dHJhY3RvciB9KVxuICAgICAgICAuZXhlY3V0ZSgpO1xuXG4gICAgICBpZiAodXBkYXRlUmVzdWx0LmFmZmVjdGVkICYmIHVwZGF0ZVJlc3VsdC5hZmZlY3RlZCA+IDApIHtcbiAgICAgICAgY29uc3Qgc3BlbnRSb3dzID0gYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICAgICAgYm94SWQ6IEluKHNwZW5kSWRDaHVuayksXG4gICAgICAgICAgc3BlbmRCbG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHNwZW50Um93cykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFNwZW50IHBlcm1pdCB3aXRoIGJveElkIFske3Jvdy5ib3hJZH1dIGJlbG9uZ2luZyB0byB3YXRjaGVyIHdpdGggV0lEIFske3Jvdy5XSUR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIGRlbGV0aW5nIGFsbCBwZXJtaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrKGlkKSBhbmQgZXh0cmFjdG9yKGlkKVxuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgLy9UT0RPOiBzaG91bGQgY2hlY2sgaWYgZGVsZXRlZCBvciBub3QgUHJvbWlzZTxCb29sZWFuPlxuICBkZWxldGVCbG9jayA9IGFzeW5jIChibG9jazogc3RyaW5nLCBleHRyYWN0b3I6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgRGVsZXRpbmcgcGVybWl0cyBhdCBibG9jayAke2Jsb2NrfSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuZGF0YXNvdXJjZVxuICAgICAgLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAuZGVsZXRlKClcbiAgICAgIC5mcm9tKFBlcm1pdEVudGl0eSlcbiAgICAgIC53aGVyZSgnZXh0cmFjdG9yID0gOmV4dHJhY3RvciBBTkQgYmxvY2sgPSA6YmxvY2snLCB7XG4gICAgICAgIGJsb2NrOiBibG9jayxcbiAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICB9KVxuICAgICAgLmV4ZWN1dGUoKTtcbiAgICAvL1RPRE86IHNob3VsZCBoYW5kbGVkIG51bGwgdmFsdWUgaW4gc3BlbmRCbG9ja0hlaWdodFxuICAgIGF3YWl0IHRoaXMuZGF0YXNvdXJjZVxuICAgICAgLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAudXBkYXRlKENvbW1pdG1lbnRFbnRpdHkpXG4gICAgICAuc2V0KHsgc3BlbmRCbG9jazogdW5kZWZpbmVkLCBzcGVuZEhlaWdodDogMCB9KVxuICAgICAgLndoZXJlKCdzcGVuZEJsb2NrID0gOmJsb2NrIEFORCBibG9jayA9IDpibG9jaycsIHtcbiAgICAgICAgYmxvY2s6IGJsb2NrLFxuICAgICAgfSlcbiAgICAgIC5leGVjdXRlKCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBlcm1pdEVudGl0eUFjdGlvbjtcbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { AxiosInstance } from 'axios';
2
- import { AddressBoxes } from '../interfaces/types';
3
- declare class ExplorerApi {
4
- api: AxiosInstance;
5
- constructor(explorerAddress: string, timeout?: number);
6
- /**
7
- * gets unspent boxes for a specific ergotree with default limit of 100 and offset 0
8
- * @param tree
9
- * @param offset
10
- * @param limit
11
- */
12
- getBoxesForAddress: (tree: string, offset?: number, limit?: number) => Promise<AddressBoxes>;
13
- }
14
- export { ExplorerApi };
15
- //# sourceMappingURL=ergoNetworkApi.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ergoNetworkApi.d.ts","sourceRoot":"","sources":["../../lib/network/ergoNetworkApi.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,cAAM,WAAW;IACf,GAAG,EAAE,aAAa,CAAC;gBAEP,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAOrD;;;;;OAKG;IACH,kBAAkB,SACV,MAAM,sCAGX,QAAQ,YAAY,CAAC,CAOtB;CACH;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1,27 +0,0 @@
1
- import axios from 'axios';
2
- import { JsonBI } from './parser';
3
- class ExplorerApi {
4
- api;
5
- constructor(explorerAddress, timeout) {
6
- this.api = axios.create({
7
- baseURL: explorerAddress,
8
- timeout: timeout ? timeout : 10000,
9
- });
10
- }
11
- /**
12
- * gets unspent boxes for a specific ergotree with default limit of 100 and offset 0
13
- * @param tree
14
- * @param offset
15
- * @param limit
16
- */
17
- getBoxesForAddress = async (tree, offset = 0, limit = 100) => {
18
- return this.api
19
- .get(`/api/v1/boxes/unspent/byErgoTree/${tree}`, {
20
- params: { offset: offset, limit: limit },
21
- transformResponse: (data) => JsonBI.parse(data),
22
- })
23
- .then((res) => res.data);
24
- };
25
- }
26
- export { ExplorerApi };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJnb05ldHdvcmtBcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbmV0d29yay9lcmdvTmV0d29ya0FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQXdCLE1BQU0sT0FBTyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsTUFBTSxXQUFXO0lBQ2YsR0FBRyxDQUFnQjtJQUVuQixZQUFZLGVBQXVCLEVBQUUsT0FBZ0I7UUFDbkQsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3RCLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSztTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsR0FBRyxLQUFLLEVBQ3hCLElBQVksRUFDWixNQUFNLEdBQUcsQ0FBQyxFQUNWLEtBQUssR0FBRyxHQUFHLEVBQ1ksRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQyxHQUFHO2FBQ1osR0FBRyxDQUFlLG9DQUFvQyxJQUFJLEVBQUUsRUFBRTtZQUM3RCxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDeEMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQ2hELENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDLENBQUM7Q0FDSDtBQUVELE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc0luc3RhbmNlIH0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQWRkcmVzc0JveGVzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5pbXBvcnQgeyBKc29uQkkgfSBmcm9tICcuL3BhcnNlcic7XG5cbmNsYXNzIEV4cGxvcmVyQXBpIHtcbiAgYXBpOiBBeGlvc0luc3RhbmNlO1xuXG4gIGNvbnN0cnVjdG9yKGV4cGxvcmVyQWRkcmVzczogc3RyaW5nLCB0aW1lb3V0PzogbnVtYmVyKSB7XG4gICAgdGhpcy5hcGkgPSBheGlvcy5jcmVhdGUoe1xuICAgICAgYmFzZVVSTDogZXhwbG9yZXJBZGRyZXNzLFxuICAgICAgdGltZW91dDogdGltZW91dCA/IHRpbWVvdXQgOiAxMDAwMCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXRzIHVuc3BlbnQgYm94ZXMgZm9yIGEgc3BlY2lmaWMgZXJnb3RyZWUgd2l0aCBkZWZhdWx0IGxpbWl0IG9mIDEwMCBhbmQgb2Zmc2V0IDBcbiAgICogQHBhcmFtIHRyZWVcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcGFyYW0gbGltaXRcbiAgICovXG4gIGdldEJveGVzRm9yQWRkcmVzcyA9IGFzeW5jIChcbiAgICB0cmVlOiBzdHJpbmcsXG4gICAgb2Zmc2V0ID0gMCxcbiAgICBsaW1pdCA9IDEwMFxuICApOiBQcm9taXNlPEFkZHJlc3NCb3hlcz4gPT4ge1xuICAgIHJldHVybiB0aGlzLmFwaVxuICAgICAgLmdldDxBZGRyZXNzQm94ZXM+KGAvYXBpL3YxL2JveGVzL3Vuc3BlbnQvYnlFcmdvVHJlZS8ke3RyZWV9YCwge1xuICAgICAgICBwYXJhbXM6IHsgb2Zmc2V0OiBvZmZzZXQsIGxpbWl0OiBsaW1pdCB9LFxuICAgICAgICB0cmFuc2Zvcm1SZXNwb25zZTogKGRhdGEpID0+IEpzb25CSS5wYXJzZShkYXRhKSxcbiAgICAgIH0pXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuZGF0YSk7XG4gIH07XG59XG5cbmV4cG9ydCB7IEV4cGxvcmVyQXBpIH07XG4iXX0=
@@ -1,8 +0,0 @@
1
- export declare const JsonBI: {
2
- parse: (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any;
3
- stringify: {
4
- (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string;
5
- (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string;
6
- };
7
- };
8
- //# sourceMappingURL=parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../lib/network/parser.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;CAEjB,CAAC"}
@@ -1,5 +0,0 @@
1
- import JSONBigInt from 'json-bigint';
2
- export const JsonBI = JSONBigInt({
3
- useNativeBigInt: true,
4
- });
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL25ldHdvcmsvcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBQy9CLGVBQWUsRUFBRSxJQUFJO0NBQ3RCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBKU09OQmlnSW50IGZyb20gJ2pzb24tYmlnaW50JztcblxuZXhwb3J0IGNvbnN0IEpzb25CSSA9IEpTT05CaWdJbnQoe1xuICB1c2VOYXRpdmVCaWdJbnQ6IHRydWUsXG59KTtcbiJdfQ==