@rosen-bridge/watcher-data-extractor 2.1.4 → 2.1.6
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/package.json +3 -3
- package/dist/actions/EventTriggerAction.d.ts +0 -35
- package/dist/actions/EventTriggerAction.d.ts.map +0 -1
- package/dist/actions/EventTriggerAction.js +0 -122
- package/dist/actions/EventTriggerDB.d.ts +0 -33
- package/dist/actions/EventTriggerDB.d.ts.map +0 -1
- package/dist/actions/EventTriggerDB.js +0 -145
- package/dist/actions/commitmentAction.d.ts +0 -33
- package/dist/actions/commitmentAction.d.ts.map +0 -1
- package/dist/actions/commitmentAction.js +0 -110
- package/dist/actions/commitmentDB.d.ts +0 -32
- package/dist/actions/commitmentDB.d.ts.map +0 -1
- package/dist/actions/commitmentDB.js +0 -129
- package/dist/actions/permitAction.d.ts +0 -64
- package/dist/actions/permitAction.d.ts.map +0 -1
- package/dist/actions/permitAction.js +0 -173
- package/dist/actions/permitDB.d.ts +0 -39
- package/dist/actions/permitDB.d.ts.map +0 -1
- package/dist/actions/permitDB.js +0 -164
- package/dist/constants.d.ts +0 -4
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -4
- package/dist/entities/CommitmentEntity.d.ts +0 -17
- package/dist/entities/CommitmentEntity.d.ts.map +0 -1
- package/dist/entities/CommitmentEntity.js +0 -83
- package/dist/entities/EventTriggerEntity.d.ts +0 -28
- package/dist/entities/EventTriggerEntity.d.ts.map +0 -1
- package/dist/entities/EventTriggerEntity.js +0 -138
- package/dist/entities/PermitEntity.d.ts +0 -14
- package/dist/entities/PermitEntity.d.ts.map +0 -1
- package/dist/entities/PermitEntity.js +0 -68
- package/dist/extractor/EventTriggerExtractor.d.ts +0 -28
- package/dist/extractor/EventTriggerExtractor.d.ts.map +0 -1
- package/dist/extractor/EventTriggerExtractor.js +0 -126
- package/dist/extractor/commitmentExtractor.d.ts +0 -35
- package/dist/extractor/commitmentExtractor.d.ts.map +0 -1
- package/dist/extractor/commitmentExtractor.js +0 -110
- package/dist/extractor/permitExtractor.d.ts +0 -139
- package/dist/extractor/permitExtractor.d.ts.map +0 -1
- package/dist/extractor/permitExtractor.js +0 -227
- package/dist/index.d.ts +0 -10
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -10
- package/dist/interfaces/extractedCommitment.d.ts +0 -11
- package/dist/interfaces/extractedCommitment.d.ts.map +0 -1
- package/dist/interfaces/extractedCommitment.js +0 -2
- package/dist/interfaces/extractedEventTrigger.d.ts +0 -21
- package/dist/interfaces/extractedEventTrigger.d.ts.map +0 -1
- package/dist/interfaces/extractedEventTrigger.js +0 -2
- package/dist/interfaces/extractedPermit.d.ts +0 -12
- package/dist/interfaces/extractedPermit.d.ts.map +0 -1
- package/dist/interfaces/extractedPermit.js +0 -2
- package/dist/interfaces/types.d.ts +0 -20
- package/dist/interfaces/types.d.ts.map +0 -1
- package/dist/interfaces/types.js +0 -2
- package/dist/migrations/index.d.ts +0 -7
- package/dist/migrations/index.d.ts.map +0 -1
- package/dist/migrations/index.js +0 -9
- package/dist/migrations/postgres/1683776413304-migration.d.ts +0 -7
- package/dist/migrations/postgres/1683776413304-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1683776413304-migration.js +0 -81
- package/dist/migrations/postgres/1688554842087-migration.d.ts +0 -7
- package/dist/migrations/postgres/1688554842087-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1688554842087-migration.js +0 -82
- package/dist/migrations/postgres/1689175974257-migration.d.ts +0 -7
- package/dist/migrations/postgres/1689175974257-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1689175974257-migration.js +0 -50
- package/dist/migrations/postgres/initMigration1671716035915.d.ts +0 -7
- package/dist/migrations/postgres/initMigration1671716035915.d.ts.map +0 -1
- package/dist/migrations/postgres/initMigration1671716035915.js +0 -61
- package/dist/migrations/postgres/migration1673422203223.d.ts +0 -7
- package/dist/migrations/postgres/migration1673422203223.d.ts.map +0 -1
- package/dist/migrations/postgres/migration1673422203223.js +0 -10
- package/dist/migrations/postgres/migration1676360759874.d.ts +0 -7
- package/dist/migrations/postgres/migration1676360759874.d.ts.map +0 -1
- package/dist/migrations/postgres/migration1676360759874.js +0 -14
- package/dist/migrations/postgres/migration1680777406000.d.ts +0 -7
- package/dist/migrations/postgres/migration1680777406000.d.ts.map +0 -1
- package/dist/migrations/postgres/migration1680777406000.js +0 -10
- package/dist/migrations/sqlite/1683776215472-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1683776215472-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1683776215472-migration.js +0 -78
- package/dist/migrations/sqlite/1688555766601-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1688555766601-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1688555766601-migration.js +0 -79
- package/dist/migrations/sqlite/1689175103163-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1689175103163-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1689175103163-migration.js +0 -392
- package/dist/migrations/sqlite/initMigration1659787165000.d.ts +0 -7
- package/dist/migrations/sqlite/initMigration1659787165000.d.ts.map +0 -1
- package/dist/migrations/sqlite/initMigration1659787165000.js +0 -61
- package/dist/migrations/sqlite/migration1673422203210.d.ts +0 -7
- package/dist/migrations/sqlite/migration1673422203210.d.ts.map +0 -1
- package/dist/migrations/sqlite/migration1673422203210.js +0 -10
- package/dist/migrations/sqlite/migration1676360753347.d.ts +0 -7
- package/dist/migrations/sqlite/migration1676360753347.d.ts.map +0 -1
- package/dist/migrations/sqlite/migration1676360753347.js +0 -14
- package/dist/migrations/sqlite/migration1680777424623.d.ts +0 -7
- package/dist/migrations/sqlite/migration1680777424623.d.ts.map +0 -1
- package/dist/migrations/sqlite/migration1680777424623.js +0 -10
- package/dist/network/ergoNetworkApi.d.ts +0 -15
- package/dist/network/ergoNetworkApi.d.ts.map +0 -1
- package/dist/network/ergoNetworkApi.js +0 -27
- package/dist/network/parser.d.ts +0 -8
- package/dist/network/parser.d.ts.map +0 -1
- package/dist/network/parser.js +0 -5
- package/dist/utils.d.ts +0 -9
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -6
|
@@ -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,64 +0,0 @@
|
|
|
1
|
-
import { DataSource } from 'typeorm';
|
|
2
|
-
import { BlockEntity } from '@rosen-bridge/scanner';
|
|
3
|
-
import { AbstractLogger } from '@rosen-bridge/logger-interface';
|
|
4
|
-
import { ExtractedPermit } from '../interfaces/extractedPermit';
|
|
5
|
-
declare class PermitAction {
|
|
6
|
-
readonly logger: AbstractLogger;
|
|
7
|
-
private readonly datasource;
|
|
8
|
-
private readonly permitRepository;
|
|
9
|
-
constructor(dataSource: DataSource, logger: AbstractLogger);
|
|
10
|
-
/**
|
|
11
|
-
* insert a new permit boxes in the database
|
|
12
|
-
* @param permits
|
|
13
|
-
* @param initialHeight
|
|
14
|
-
* @param extractor
|
|
15
|
-
*/
|
|
16
|
-
insertPermit: (permit: ExtractedPermit, extractor: string) => Promise<import("typeorm").InsertResult>;
|
|
17
|
-
/**
|
|
18
|
-
* update an unspent permit in the database
|
|
19
|
-
* @param permit
|
|
20
|
-
* @param extractor
|
|
21
|
-
*/
|
|
22
|
-
updatePermit: (permit: ExtractedPermit, extractor: string) => Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* It stores list of permits in the dataSource with block id
|
|
25
|
-
* @param permits
|
|
26
|
-
* @param block
|
|
27
|
-
* @param extractor
|
|
28
|
-
*/
|
|
29
|
-
storePermits: (permits: Array<ExtractedPermit>, block: BlockEntity, extractor: string) => Promise<boolean>;
|
|
30
|
-
/**
|
|
31
|
-
* Update spendBlock and spendHeight of permits spent on the block
|
|
32
|
-
* @param spendId
|
|
33
|
-
* @param block
|
|
34
|
-
* @param extractor
|
|
35
|
-
*/
|
|
36
|
-
spendPermits: (spendId: Array<string>, block: BlockEntity, extractor: string) => Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
* Delete all permits corresponding to the block(id) and extractor(id)
|
|
39
|
-
* and update all permits spent on the specified block
|
|
40
|
-
* @param block
|
|
41
|
-
* @param extractor
|
|
42
|
-
*/
|
|
43
|
-
deleteBlock: (block: string, extractor: string) => Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Returns all stored permit box ids
|
|
46
|
-
*/
|
|
47
|
-
getAllPermitBoxIds: (extractor: string) => Promise<Array<string>>;
|
|
48
|
-
/**
|
|
49
|
-
* Removes specified permit
|
|
50
|
-
* @param boxId
|
|
51
|
-
* @param extractor
|
|
52
|
-
*/
|
|
53
|
-
removePermit: (boxId: string, extractor: string) => Promise<import("typeorm").DeleteResult>;
|
|
54
|
-
/**
|
|
55
|
-
* Update the permit spending information
|
|
56
|
-
* @param boxId
|
|
57
|
-
* @param extractor
|
|
58
|
-
* @param blockId
|
|
59
|
-
* @param blockHeight
|
|
60
|
-
*/
|
|
61
|
-
updateSpendBlock: (boxId: string, extractor: string, blockId: string, blockHeight: number) => Promise<import("typeorm").UpdateResult>;
|
|
62
|
-
}
|
|
63
|
-
export default PermitAction;
|
|
64
|
-
//# sourceMappingURL=permitAction.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permitAction.d.ts","sourceRoot":"","sources":["../../lib/actions/permitAction.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;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAIhE,cAAM,YAAY;IAChB,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,YAAY,WAAkB,eAAe,aAAa,MAAM,6CAY9D;IAEF;;;;OAIG;IACH,YAAY,WAAkB,eAAe,aAAa,MAAM,mBAa9D;IAEF;;;;;OAKG;IACH,YAAY,YACD,MAAM,eAAe,CAAC,SACxB,WAAW,aACP,MAAM,sBAiDjB;IAEF;;;;;OAKG;IACH,YAAY,YACD,MAAM,MAAM,CAAC,SACf,WAAW,aACP,MAAM,KAChB,QAAQ,IAAI,CAAC,CAoBd;IAEF;;;;;OAKG;IACH,WAAW,UAAiB,MAAM,aAAa,MAAM,KAAG,QAAQ,IAAI,CAAC,CASnE;IAEF;;OAEG;IACH,kBAAkB,cAAqB,MAAM,KAAG,QAAQ,MAAM,MAAM,CAAC,CAAC,CAUpE;IAEF;;;;OAIG;IACH,YAAY,UAAiB,MAAM,aAAa,MAAM,6CAKpD;IAEF;;;;;;OAMG;IACH,gBAAgB,UACP,MAAM,aACF,MAAM,WACR,MAAM,eACF,MAAM,6CAMnB;CACH;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { In } from 'typeorm';
|
|
2
|
-
import { chunk } from 'lodash-es';
|
|
3
|
-
import PermitEntity from '../entities/PermitEntity';
|
|
4
|
-
import { dbIdChunkSize } from '../constants';
|
|
5
|
-
class PermitAction {
|
|
6
|
-
logger;
|
|
7
|
-
datasource;
|
|
8
|
-
permitRepository;
|
|
9
|
-
constructor(dataSource, logger) {
|
|
10
|
-
this.datasource = dataSource;
|
|
11
|
-
this.logger = logger;
|
|
12
|
-
this.permitRepository = dataSource.getRepository(PermitEntity);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* insert a new permit boxes in the database
|
|
16
|
-
* @param permits
|
|
17
|
-
* @param initialHeight
|
|
18
|
-
* @param extractor
|
|
19
|
-
*/
|
|
20
|
-
insertPermit = async (permit, extractor) => {
|
|
21
|
-
return this.permitRepository.insert({
|
|
22
|
-
boxId: permit.boxId,
|
|
23
|
-
boxSerialized: permit.boxSerialized,
|
|
24
|
-
block: permit.block,
|
|
25
|
-
height: permit.height,
|
|
26
|
-
extractor: extractor,
|
|
27
|
-
WID: permit.WID,
|
|
28
|
-
txId: permit.txId,
|
|
29
|
-
spendBlock: permit.spendBlock,
|
|
30
|
-
spendHeight: permit.spendHeight,
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* update an unspent permit in the database
|
|
35
|
-
* @param permit
|
|
36
|
-
* @param extractor
|
|
37
|
-
*/
|
|
38
|
-
updatePermit = async (permit, extractor) => {
|
|
39
|
-
await this.permitRepository.update({ boxId: permit.boxId, extractor: extractor }, {
|
|
40
|
-
boxSerialized: permit.boxSerialized,
|
|
41
|
-
block: permit.block,
|
|
42
|
-
height: permit.height,
|
|
43
|
-
WID: permit.WID,
|
|
44
|
-
txId: permit.txId,
|
|
45
|
-
spendBlock: null,
|
|
46
|
-
spendHeight: 0,
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* It stores list of permits in the dataSource with block id
|
|
51
|
-
* @param permits
|
|
52
|
-
* @param block
|
|
53
|
-
* @param extractor
|
|
54
|
-
*/
|
|
55
|
-
storePermits = async (permits, block, extractor) => {
|
|
56
|
-
if (permits.length === 0)
|
|
57
|
-
return true;
|
|
58
|
-
const boxIds = permits.map((permit) => permit.boxId);
|
|
59
|
-
const savedPermits = await this.permitRepository.findBy({
|
|
60
|
-
boxId: In(boxIds),
|
|
61
|
-
extractor: extractor,
|
|
62
|
-
});
|
|
63
|
-
let success = true;
|
|
64
|
-
const queryRunner = this.datasource.createQueryRunner();
|
|
65
|
-
await queryRunner.connect();
|
|
66
|
-
await queryRunner.startTransaction();
|
|
67
|
-
const repository = await queryRunner.manager.getRepository(PermitEntity);
|
|
68
|
-
try {
|
|
69
|
-
for (const permit of permits) {
|
|
70
|
-
const saved = savedPermits.some((entity) => {
|
|
71
|
-
return entity.boxId === permit.boxId;
|
|
72
|
-
});
|
|
73
|
-
const entity = {
|
|
74
|
-
boxId: permit.boxId,
|
|
75
|
-
boxSerialized: permit.boxSerialized,
|
|
76
|
-
block: block.hash,
|
|
77
|
-
height: block.height,
|
|
78
|
-
extractor: extractor,
|
|
79
|
-
WID: permit.WID,
|
|
80
|
-
txId: permit.txId,
|
|
81
|
-
};
|
|
82
|
-
if (!saved) {
|
|
83
|
-
this.logger.debug(`Saving permit [${permit.boxId}] belonging to watcher [${permit.WID}] at height ${block.height} and extractor ${extractor}`);
|
|
84
|
-
await repository.insert(entity);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
this.logger.debug(`Updating permit [${permit.boxId}] belonging to watcher [${permit.WID}] at height ${block.height} and extractor ${extractor}`);
|
|
88
|
-
await repository.update({ boxId: permit.boxId }, entity);
|
|
89
|
-
}
|
|
90
|
-
this.logger.debug(`Entity: ${JSON.stringify(entity)}`);
|
|
91
|
-
}
|
|
92
|
-
await queryRunner.commitTransaction();
|
|
93
|
-
}
|
|
94
|
-
catch (e) {
|
|
95
|
-
this.logger.error(`An error occurred during store permit action: ${e}`);
|
|
96
|
-
await queryRunner.rollbackTransaction();
|
|
97
|
-
success = false;
|
|
98
|
-
}
|
|
99
|
-
finally {
|
|
100
|
-
await queryRunner.release();
|
|
101
|
-
}
|
|
102
|
-
return success;
|
|
103
|
-
};
|
|
104
|
-
/**
|
|
105
|
-
* Update spendBlock and spendHeight of permits spent on the block
|
|
106
|
-
* @param spendId
|
|
107
|
-
* @param block
|
|
108
|
-
* @param extractor
|
|
109
|
-
*/
|
|
110
|
-
spendPermits = async (spendId, block, extractor) => {
|
|
111
|
-
const spendIdChunks = chunk(spendId, dbIdChunkSize);
|
|
112
|
-
for (const spendIdChunk of spendIdChunks) {
|
|
113
|
-
const updateResult = await this.permitRepository.update({ boxId: In(spendIdChunk), extractor: extractor }, { spendBlock: block.hash, spendHeight: block.height });
|
|
114
|
-
if (updateResult.affected && updateResult.affected > 0) {
|
|
115
|
-
const spentRows = await this.permitRepository.findBy({
|
|
116
|
-
boxId: In(spendIdChunk),
|
|
117
|
-
spendBlock: block.hash,
|
|
118
|
-
});
|
|
119
|
-
for (const row of spentRows) {
|
|
120
|
-
this.logger.debug(`Spent permit with boxId [${row.boxId}] belonging to watcher with WID [${row.WID}] at height ${block.height}`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
/**
|
|
126
|
-
* Delete all permits corresponding to the block(id) and extractor(id)
|
|
127
|
-
* and update all permits spent on the specified block
|
|
128
|
-
* @param block
|
|
129
|
-
* @param extractor
|
|
130
|
-
*/
|
|
131
|
-
deleteBlock = async (block, extractor) => {
|
|
132
|
-
this.logger.info(`Deleting permits at block ${block} and extractor ${extractor}`);
|
|
133
|
-
await this.permitRepository.delete({ block: block, extractor: extractor });
|
|
134
|
-
await this.permitRepository.update({ spendBlock: block, extractor: extractor }, { spendBlock: null, spendHeight: 0 });
|
|
135
|
-
};
|
|
136
|
-
/**
|
|
137
|
-
* Returns all stored permit box ids
|
|
138
|
-
*/
|
|
139
|
-
getAllPermitBoxIds = async (extractor) => {
|
|
140
|
-
const boxIds = await this.permitRepository.find({
|
|
141
|
-
where: {
|
|
142
|
-
extractor: extractor,
|
|
143
|
-
},
|
|
144
|
-
select: {
|
|
145
|
-
boxId: true,
|
|
146
|
-
},
|
|
147
|
-
});
|
|
148
|
-
return boxIds.map((item) => item.boxId);
|
|
149
|
-
};
|
|
150
|
-
/**
|
|
151
|
-
* Removes specified permit
|
|
152
|
-
* @param boxId
|
|
153
|
-
* @param extractor
|
|
154
|
-
*/
|
|
155
|
-
removePermit = async (boxId, extractor) => {
|
|
156
|
-
return await this.permitRepository.delete({
|
|
157
|
-
boxId: boxId,
|
|
158
|
-
extractor: extractor,
|
|
159
|
-
});
|
|
160
|
-
};
|
|
161
|
-
/**
|
|
162
|
-
* Update the permit spending information
|
|
163
|
-
* @param boxId
|
|
164
|
-
* @param extractor
|
|
165
|
-
* @param blockId
|
|
166
|
-
* @param blockHeight
|
|
167
|
-
*/
|
|
168
|
-
updateSpendBlock = async (boxId, extractor, blockId, blockHeight) => {
|
|
169
|
-
return await this.permitRepository.update({ boxId: boxId, extractor: extractor }, { spendBlock: blockId, spendHeight: blockHeight });
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
export default PermitAction;
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWl0QWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FjdGlvbnMvcGVybWl0QWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQWMsTUFBTSxTQUFTLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUtsQyxPQUFPLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLE1BQU0sWUFBWTtJQUNQLE1BQU0sQ0FBaUI7SUFDZixVQUFVLENBQWE7SUFDdkIsZ0JBQWdCLENBQTJCO0lBRTVELFlBQVksVUFBc0IsRUFBRSxNQUFzQjtRQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLEdBQUcsS0FBSyxFQUFFLE1BQXVCLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztZQUNsQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQ25DLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO1lBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7U0FD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QUFJO2FBQ1o7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDO0lBRUY7Ozs7T0FJRztJQUNILFlBQVksR0FBRyxLQUFLLEVBQUUsS0FBYSxFQUFFLFNBQWlCLEVBQUUsRUFBRTtRQUN4RCxPQUFPLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztZQUN4QyxLQUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFDdEIsS0FBYSxFQUNiLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixXQUFtQixFQUNuQixFQUFFO1FBQ0YsT0FBTyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQ3ZDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQ3RDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQ2xELENBQUM7SUFDSixDQUFDLENBQUM7Q0FDSDtBQUVELGVBQWUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSwgSW4sIFJlcG9zaXRvcnkgfSBmcm9tICd0eXBlb3JtJztcbmltcG9ydCB7IGNodW5rIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJsb2NrRW50aXR5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9sb2dnZXItaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgRXh0cmFjdGVkUGVybWl0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRQZXJtaXQnO1xuaW1wb3J0IFBlcm1pdEVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9QZXJtaXRFbnRpdHknO1xuaW1wb3J0IHsgZGJJZENodW5rU2l6ZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmNsYXNzIFBlcm1pdEFjdGlvbiB7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YXNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXRSZXBvc2l0b3J5OiBSZXBvc2l0b3J5PFBlcm1pdEVudGl0eT47XG5cbiAgY29uc3RydWN0b3IoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSwgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcikge1xuICAgIHRoaXMuZGF0YXNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5wZXJtaXRSZXBvc2l0b3J5ID0gZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KFBlcm1pdEVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogaW5zZXJ0IGEgbmV3IHBlcm1pdCBib3hlcyBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHBhcmFtIHBlcm1pdHNcbiAgICogQHBhcmFtIGluaXRpYWxIZWlnaHRcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgaW5zZXJ0UGVybWl0ID0gYXN5bmMgKHBlcm1pdDogRXh0cmFjdGVkUGVybWl0LCBleHRyYWN0b3I6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcm1pdFJlcG9zaXRvcnkuaW5zZXJ0KHtcbiAgICAgIGJveElkOiBwZXJtaXQuYm94SWQsXG4gICAgICBib3hTZXJpYWxpemVkOiBwZXJtaXQuYm94U2VyaWFsaXplZCxcbiAgICAgIGJsb2NrOiBwZXJtaXQuYmxvY2ssXG4gICAgICBoZWlnaHQ6IHBlcm1pdC5oZWlnaHQsXG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgIFdJRDogcGVybWl0LldJRCxcbiAgICAgIHR4SWQ6IHBlcm1pdC50eElkLFxuICAgICAgc3BlbmRCbG9jazogcGVybWl0LnNwZW5kQmxvY2ssXG4gICAgICBzcGVuZEhlaWdodDogcGVybWl0LnNwZW5kSGVpZ2h0LFxuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiB1cGRhdGUgYW4gdW5zcGVudCBwZXJtaXQgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBwYXJhbSBwZXJtaXRcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgdXBkYXRlUGVybWl0ID0gYXN5bmMgKHBlcm1pdDogRXh0cmFjdGVkUGVybWl0LCBleHRyYWN0b3I6IHN0cmluZykgPT4ge1xuICAgIGF3YWl0IHRoaXMucGVybWl0UmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICB7IGJveElkOiBwZXJtaXQuYm94SWQsIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICB7XG4gICAgICAgIGJveFNlcmlhbGl6ZWQ6IHBlcm1pdC5ib3hTZXJpYWxpemVkLFxuICAgICAgICBibG9jazogcGVybWl0LmJsb2NrLFxuICAgICAgICBoZWlnaHQ6IHBlcm1pdC5oZWlnaHQsXG4gICAgICAgIFdJRDogcGVybWl0LldJRCxcbiAgICAgICAgdHhJZDogcGVybWl0LnR4SWQsXG4gICAgICAgIHNwZW5kQmxvY2s6IG51bGwsXG4gICAgICAgIHNwZW5kSGVpZ2h0OiAwLFxuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEl0IHN0b3JlcyBsaXN0IG9mIHBlcm1pdHMgaW4gdGhlIGRhdGFTb3VyY2Ugd2l0aCBibG9jayBpZFxuICAgKiBAcGFyYW0gcGVybWl0c1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgc3RvcmVQZXJtaXRzID0gYXN5bmMgKFxuICAgIHBlcm1pdHM6IEFycmF5PEV4dHJhY3RlZFBlcm1pdD4sXG4gICAgYmxvY2s6IEJsb2NrRW50aXR5LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICkgPT4ge1xuICAgIGlmIChwZXJtaXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgYm94SWRzID0gcGVybWl0cy5tYXAoKHBlcm1pdCkgPT4gcGVybWl0LmJveElkKTtcbiAgICBjb25zdCBzYXZlZFBlcm1pdHMgPSBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgIGJveElkOiBJbihib3hJZHMpLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gICAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IHF1ZXJ5UnVubmVyID0gdGhpcy5kYXRhc291cmNlLmNyZWF0ZVF1ZXJ5UnVubmVyKCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuY29ubmVjdCgpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgICBjb25zdCByZXBvc2l0b3J5ID0gYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KFBlcm1pdEVudGl0eSk7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgcGVybWl0IG9mIHBlcm1pdHMpIHtcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBzYXZlZFBlcm1pdHMuc29tZSgoZW50aXR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVudGl0eS5ib3hJZCA9PT0gcGVybWl0LmJveElkO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW50aXR5ID0ge1xuICAgICAgICAgIGJveElkOiBwZXJtaXQuYm94SWQsXG4gICAgICAgICAgYm94U2VyaWFsaXplZDogcGVybWl0LmJveFNlcmlhbGl6ZWQsXG4gICAgICAgICAgYmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgaGVpZ2h0OiBibG9jay5oZWlnaHQsXG4gICAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICAgICAgV0lEOiBwZXJtaXQuV0lELFxuICAgICAgICAgIHR4SWQ6IHBlcm1pdC50eElkLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoIXNhdmVkKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgU2F2aW5nIHBlcm1pdCBbJHtwZXJtaXQuYm94SWR9XSBiZWxvbmdpbmcgdG8gd2F0Y2hlciBbJHtwZXJtaXQuV0lEfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHJlcG9zaXRvcnkuaW5zZXJ0KGVudGl0eSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgVXBkYXRpbmcgcGVybWl0IFske3Blcm1pdC5ib3hJZH1dIGJlbG9uZ2luZyB0byB3YXRjaGVyIFske3Blcm1pdC5XSUR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcmVwb3NpdG9yeS51cGRhdGUoeyBib3hJZDogcGVybWl0LmJveElkIH0sIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEVudGl0eTogJHtKU09OLnN0cmluZ2lmeShlbnRpdHkpfWApO1xuICAgICAgfVxuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHN0b3JlIHBlcm1pdCBhY3Rpb246ICR7ZX1gKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHNwZW5kQmxvY2sgYW5kIHNwZW5kSGVpZ2h0IG9mIHBlcm1pdHMgc3BlbnQgb24gdGhlIGJsb2NrXG4gICAqIEBwYXJhbSBzcGVuZElkXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBzcGVuZFBlcm1pdHMgPSBhc3luYyAoXG4gICAgc3BlbmRJZDogQXJyYXk8c3RyaW5nPixcbiAgICBibG9jazogQmxvY2tFbnRpdHksXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qgc3BlbmRJZENodW5rcyA9IGNodW5rKHNwZW5kSWQsIGRiSWRDaHVua1NpemUpO1xuICAgIGZvciAoY29uc3Qgc3BlbmRJZENodW5rIG9mIHNwZW5kSWRDaHVua3MpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVJlc3VsdCA9IGF3YWl0IHRoaXMucGVybWl0UmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICAgIHsgYm94SWQ6IEluKHNwZW5kSWRDaHVuayksIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICAgIHsgc3BlbmRCbG9jazogYmxvY2suaGFzaCwgc3BlbmRIZWlnaHQ6IGJsb2NrLmhlaWdodCB9XG4gICAgICApO1xuXG4gICAgICBpZiAodXBkYXRlUmVzdWx0LmFmZmVjdGVkICYmIHVwZGF0ZVJlc3VsdC5hZmZlY3RlZCA+IDApIHtcbiAgICAgICAgY29uc3Qgc3BlbnRSb3dzID0gYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICAgICAgYm94SWQ6IEluKHNwZW5kSWRDaHVuayksXG4gICAgICAgICAgc3BlbmRCbG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHNwZW50Um93cykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFNwZW50IHBlcm1pdCB3aXRoIGJveElkIFske3Jvdy5ib3hJZH1dIGJlbG9uZ2luZyB0byB3YXRjaGVyIHdpdGggV0lEIFske3Jvdy5XSUR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbGwgcGVybWl0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBibG9jayhpZCkgYW5kIGV4dHJhY3RvcihpZClcbiAgICogYW5kIHVwZGF0ZSBhbGwgcGVybWl0cyBzcGVudCBvbiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBkZWxldGVCbG9jayA9IGFzeW5jIChibG9jazogc3RyaW5nLCBleHRyYWN0b3I6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgRGVsZXRpbmcgcGVybWl0cyBhdCBibG9jayAke2Jsb2NrfSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICApO1xuICAgIGF3YWl0IHRoaXMucGVybWl0UmVwb3NpdG9yeS5kZWxldGUoeyBibG9jazogYmxvY2ssIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0pO1xuICAgIGF3YWl0IHRoaXMucGVybWl0UmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICB7IHNwZW5kQmxvY2s6IGJsb2NrLCBleHRyYWN0b3I6IGV4dHJhY3RvciB9LFxuICAgICAgeyBzcGVuZEJsb2NrOiBudWxsLCBzcGVuZEhlaWdodDogMCB9XG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogIFJldHVybnMgYWxsIHN0b3JlZCBwZXJtaXQgYm94IGlkc1xuICAgKi9cbiAgZ2V0QWxsUGVybWl0Qm94SWRzID0gYXN5bmMgKGV4dHJhY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxBcnJheTxzdHJpbmc+PiA9PiB7XG4gICAgY29uc3QgYm94SWRzID0gYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgd2hlcmU6IHtcbiAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICB9LFxuICAgICAgc2VsZWN0OiB7XG4gICAgICAgIGJveElkOiB0cnVlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gYm94SWRzLm1hcCgoaXRlbTogeyBib3hJZDogc3RyaW5nIH0pID0+IGl0ZW0uYm94SWQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHNwZWNpZmllZCBwZXJtaXRcbiAgICogQHBhcmFtIGJveElkXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHJlbW92ZVBlcm1pdCA9IGFzeW5jIChib3hJZDogc3RyaW5nLCBleHRyYWN0b3I6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkuZGVsZXRlKHtcbiAgICAgIGJveElkOiBib3hJZCxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHBlcm1pdCBzcGVuZGluZyBpbmZvcm1hdGlvblxuICAgKiBAcGFyYW0gYm94SWRcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKiBAcGFyYW0gYmxvY2tJZFxuICAgKiBAcGFyYW0gYmxvY2tIZWlnaHRcbiAgICovXG4gIHVwZGF0ZVNwZW5kQmxvY2sgPSBhc3luYyAoXG4gICAgYm94SWQ6IHN0cmluZyxcbiAgICBleHRyYWN0b3I6IHN0cmluZyxcbiAgICBibG9ja0lkOiBzdHJpbmcsXG4gICAgYmxvY2tIZWlnaHQ6IG51bWJlclxuICApID0+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgIHsgYm94SWQ6IGJveElkLCBleHRyYWN0b3I6IGV4dHJhY3RvciB9LFxuICAgICAgeyBzcGVuZEJsb2NrOiBibG9ja0lkLCBzcGVuZEhlaWdodDogYmxvY2tIZWlnaHQgfVxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBlcm1pdEFjdGlvbjtcbiJdfQ==
|
|
@@ -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,CAqCjB;IAEF;;;;;OAKG;IACH,YAAY,YACD,MAAM,eAAe,CAAC,SACxB,WAAW,aACP,MAAM,sBAqDjB;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"}
|