@my-packages-changeit/abstract-observation-extractor 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +169 -0
- package/README.md +48 -0
- package/dist/actions/db.d.ts +28 -0
- package/dist/actions/db.d.ts.map +1 -0
- package/dist/actions/db.js +101 -0
- package/dist/entities/observationEntity.d.ts +20 -0
- package/dist/entities/observationEntity.d.ts.map +1 -0
- package/dist/entities/observationEntity.js +103 -0
- package/dist/extractor/abstractObservationExtractor.d.ts +56 -0
- package/dist/extractor/abstractObservationExtractor.d.ts.map +1 -0
- package/dist/extractor/abstractObservationExtractor.js +80 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/interfaces/extractedObservation.d.ts +16 -0
- package/dist/interfaces/extractedObservation.d.ts.map +1 -0
- package/dist/interfaces/extractedObservation.js +2 -0
- package/dist/migrations/index.d.ts +7 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +9 -0
- package/dist/migrations/postgres/1688545935708-migration.d.ts +7 -0
- package/dist/migrations/postgres/1688545935708-migration.d.ts.map +1 -0
- package/dist/migrations/postgres/1688545935708-migration.js +33 -0
- package/dist/migrations/postgres/1759307285120-migration.d.ts +7 -0
- package/dist/migrations/postgres/1759307285120-migration.d.ts.map +1 -0
- package/dist/migrations/postgres/1759307285120-migration.js +15 -0
- package/dist/migrations/sqlite/1688555621494-migration.d.ts +7 -0
- package/dist/migrations/sqlite/1688555621494-migration.d.ts.map +1 -0
- package/dist/migrations/sqlite/1688555621494-migration.js +32 -0
- package/dist/migrations/sqlite/1759315440593-migration.d.ts +7 -0
- package/dist/migrations/sqlite/1759315440593-migration.d.ts.map +1 -0
- package/dist/migrations/sqlite/1759315440593-migration.js +139 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +46 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# @rosen-bridge/abstract-observation-extractor
|
|
2
|
+
|
|
3
|
+
## 1.0.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Update dependencies
|
|
8
|
+
- @rosen-bridge/abstract-extractor@3.2.3
|
|
9
|
+
|
|
10
|
+
## 1.0.9
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Update dependencies
|
|
15
|
+
- @rosen-bridge/abstract-extractor@3.2.2
|
|
16
|
+
- @rosen-bridge/rosen-extractor@12.1.1
|
|
17
|
+
- @rosen-bridge/tokens@6.0.2
|
|
18
|
+
|
|
19
|
+
## 1.0.8
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Update dependencies
|
|
24
|
+
- @rosen-bridge/abstract-extractor@3.2.1
|
|
25
|
+
|
|
26
|
+
## 1.0.7
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- Update dependencies
|
|
31
|
+
- @rosen-bridge/abstract-extractor@3.2.0
|
|
32
|
+
- @rosen-bridge/scanner-interfaces@1.0.0
|
|
33
|
+
|
|
34
|
+
## 1.0.6
|
|
35
|
+
|
|
36
|
+
### Patch Changes
|
|
37
|
+
|
|
38
|
+
- Update dependencies
|
|
39
|
+
- @rosen-bridge/rosen-extractor@12.0.2
|
|
40
|
+
|
|
41
|
+
## 1.0.5
|
|
42
|
+
|
|
43
|
+
### Patch Changes
|
|
44
|
+
|
|
45
|
+
- Update dependencies
|
|
46
|
+
- @rosen-bridge/abstract-extractor@3.1.2
|
|
47
|
+
- @rosen-bridge/extended-typeorm@1.1.0
|
|
48
|
+
- @rosen-bridge/rosen-extractor@12.0.1
|
|
49
|
+
- @rosen-bridge/tokens@6.0.1
|
|
50
|
+
|
|
51
|
+
## 1.0.4
|
|
52
|
+
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- Update dependencies
|
|
56
|
+
- @rosen-bridge/abstract-extractor@3.1.1
|
|
57
|
+
|
|
58
|
+
## 1.0.3
|
|
59
|
+
|
|
60
|
+
### Patch Changes
|
|
61
|
+
|
|
62
|
+
- Update dependencies
|
|
63
|
+
- @rosen-bridge/abstract-extractor@3.1.0
|
|
64
|
+
- @rosen-bridge/rosen-extractor@11.3.0
|
|
65
|
+
|
|
66
|
+
## 1.0.2
|
|
67
|
+
|
|
68
|
+
### Patch Changes
|
|
69
|
+
|
|
70
|
+
- Update dependencies:
|
|
71
|
+
- @rosen-bridge/rosen-extractor@11.2.2
|
|
72
|
+
- @rosen-bridge/tokens@6.0.0
|
|
73
|
+
|
|
74
|
+
## 1.0.1
|
|
75
|
+
|
|
76
|
+
### Patch Changes
|
|
77
|
+
|
|
78
|
+
- Update dependencies
|
|
79
|
+
- @rosen-bridge/abstract-extractor@3.0.1
|
|
80
|
+
- @rosen-bridge/rosen-extractor@11.2.1
|
|
81
|
+
- @rosen-bridge/scanner-interfaces@0.2.2
|
|
82
|
+
- @rosen-bridge/tokens@5.0.1
|
|
83
|
+
|
|
84
|
+
## 1.0.0
|
|
85
|
+
|
|
86
|
+
### Major Changes
|
|
87
|
+
|
|
88
|
+
- Update AbstractExtractor interface; use `BlockInfo` in `processTransactions` and rename `initializeBoxes` to `initializeData`
|
|
89
|
+
|
|
90
|
+
### Minor Changes
|
|
91
|
+
|
|
92
|
+
- Update AbstractExtractor interface; add `createUsedBlocksQuery` method that returns the query for used blocks
|
|
93
|
+
|
|
94
|
+
### Patch Changes
|
|
95
|
+
|
|
96
|
+
- Update ObservationEntityAction to considering extractor in storeObservations method
|
|
97
|
+
- Update dependencies
|
|
98
|
+
- @rosen-bridge/abstract-extractor@3.0.0
|
|
99
|
+
- @rosen-bridge/abstract-logger@4.0.0
|
|
100
|
+
- @rosen-bridge/rosen-extractor@11.2.0
|
|
101
|
+
- @rosen-bridge/tokens@5.0.0
|
|
102
|
+
|
|
103
|
+
## 0.2.3
|
|
104
|
+
|
|
105
|
+
### Patch Changes
|
|
106
|
+
|
|
107
|
+
- Update dependencies
|
|
108
|
+
- @rosen-bridge/rosen-extractor@11.1.1
|
|
109
|
+
|
|
110
|
+
## 0.2.2
|
|
111
|
+
|
|
112
|
+
### Patch Changes
|
|
113
|
+
|
|
114
|
+
- Update Dependencies
|
|
115
|
+
- @rosen-bridge/rosen-extractor@11.1.0
|
|
116
|
+
|
|
117
|
+
## 0.2.1
|
|
118
|
+
|
|
119
|
+
### Patch Changes
|
|
120
|
+
|
|
121
|
+
- Fixed type definitions in entities based migrations
|
|
122
|
+
- Update Dependencies
|
|
123
|
+
- @rosen-bridge/rosen-extractor@11.0.0
|
|
124
|
+
|
|
125
|
+
## 0.2.0
|
|
126
|
+
|
|
127
|
+
### Minor Changes
|
|
128
|
+
|
|
129
|
+
- Added preprocessTransactions method
|
|
130
|
+
- Add rawData field in ObservationEntity and AbstractObservationExtractor processTransactions method
|
|
131
|
+
|
|
132
|
+
### Patch Changes
|
|
133
|
+
|
|
134
|
+
- Fix package-lock and move typescript and types/node into root
|
|
135
|
+
- Update eslint and plugins:
|
|
136
|
+
- Apply new rules such as sort imports and file name
|
|
137
|
+
- Update dependencies
|
|
138
|
+
- @rosen-bridge/extended-typeorm@1.0.1
|
|
139
|
+
- @rosen-clients/rate-limited-axios@1.1.0
|
|
140
|
+
- @rosen-bridge/rosen-extractor@10.1.1
|
|
141
|
+
- @rosen-bridge/tokens@4.0.1
|
|
142
|
+
- @rosen-bridge/abstract-logger@3.0.1
|
|
143
|
+
- @rosen-bridge/json-bigint@1.1.0
|
|
144
|
+
- @rosen-clients/ergo-explorer@2.1.0
|
|
145
|
+
- @rosen-clients/ergo-node@3.1.0
|
|
146
|
+
- @rosen-bridge/abstract-extractor@2.1.2
|
|
147
|
+
- @rosen-bridge/scanner-interfaces@0.2.1
|
|
148
|
+
|
|
149
|
+
## 0.1.2
|
|
150
|
+
|
|
151
|
+
### Patch Changes
|
|
152
|
+
|
|
153
|
+
- Update dependencies
|
|
154
|
+
- @rosen-bridge/abstract-extractor@2.1.1
|
|
155
|
+
- @rosen-bridge/extended-typeorm@1.0.0
|
|
156
|
+
- @rosen-bridge/tokens@4.0.0
|
|
157
|
+
- @rosen-bridge/rosen-extractor@10.0.0
|
|
158
|
+
- @rosen-bridge/abstract-logger@3.0.0
|
|
159
|
+
|
|
160
|
+
## 0.1.1
|
|
161
|
+
|
|
162
|
+
### Patch Changes
|
|
163
|
+
|
|
164
|
+
- Update @rosen-bridge/rosen-extractor version to 9.0.0
|
|
165
|
+
|
|
166
|
+
## 0.1.0
|
|
167
|
+
|
|
168
|
+
- The package has been **renamed** from `@rosen-bridge/observation-extractor`.
|
|
169
|
+
You can track the previous history in the changelog of the old package. The latest update is available [here](https://github.com/rosen-bridge/scanner/blob/d4a5539b01c523b101104470b03ff7023a10b70b/packages/observation-extractor/CHANGELOG.md).
|
package/README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Abstract Observation Extractor
|
|
2
|
+
|
|
3
|
+
### Table of Contents
|
|
4
|
+
|
|
5
|
+
- [Description](#description)
|
|
6
|
+
- [Related Projects](#related-projects)
|
|
7
|
+
- [How to Use the Observation Extractor](#how-to-use-the-observation-extractor)
|
|
8
|
+
- [Install](#install)
|
|
9
|
+
- [Usage](#usage)
|
|
10
|
+
- [Contributing](#contributing)
|
|
11
|
+
- [License](#license)
|
|
12
|
+
|
|
13
|
+
<a name="headers"/>
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Data extractors are modules that are integrated within a scanner. They drive the required information from the scanned blocks and store them in their own database. The observation extractor is designed to fulfill a watcher's main task: observing user payments in source networks. The bridge payment transaction has its own structure, and the observation extractor searches for this pattern occurrence in source chains and stores all needed information for a watcher commitment creation and revealment.
|
|
18
|
+
|
|
19
|
+
## Related Projects
|
|
20
|
+
|
|
21
|
+
This module is used within the [Scanner](https://github.com/rosen-bridge/scanner) project. The address scanner is currently used in the [Watcher](https://github.com/rosen-bridge/watcher) service to drive the valid source chain observations.
|
|
22
|
+
|
|
23
|
+
## How to Use the Observation Extractor
|
|
24
|
+
|
|
25
|
+
### Install
|
|
26
|
+
|
|
27
|
+
This project is written in node-js using Esnext module and typeorm database. Extractors are not standalone projects and should be used as scanner modules. You can easily install it using npm with the command:
|
|
28
|
+
|
|
29
|
+
```shell
|
|
30
|
+
npm install @rosen-bridge/abstract-observation-extractor
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Alternatively, you can build and use it manually by cloning the project and running:
|
|
34
|
+
|
|
35
|
+
```shell
|
|
36
|
+
npm install
|
|
37
|
+
npm run build
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Usage
|
|
41
|
+
|
|
42
|
+
## Contributing
|
|
43
|
+
|
|
44
|
+
TBD
|
|
45
|
+
|
|
46
|
+
## License
|
|
47
|
+
|
|
48
|
+
TBD
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
|
+
import { DataSource, SelectQueryBuilder } from '@rosen-bridge/extended-typeorm';
|
|
3
|
+
import { BlockInfo } from '@rosen-bridge/scanner-interfaces';
|
|
4
|
+
import { ObservationEntity } from '../entities/observationEntity';
|
|
5
|
+
import { ExtractedObservation } from '../interfaces/extractedObservation';
|
|
6
|
+
export declare class ObservationEntityAction {
|
|
7
|
+
readonly logger: AbstractLogger;
|
|
8
|
+
private readonly datasource;
|
|
9
|
+
private readonly observationRepository;
|
|
10
|
+
constructor(dataSource: DataSource, logger?: AbstractLogger);
|
|
11
|
+
/**
|
|
12
|
+
* It stores list of observations in the dataSource with block id
|
|
13
|
+
* @param observations
|
|
14
|
+
* @param block
|
|
15
|
+
* @param extractor
|
|
16
|
+
*/
|
|
17
|
+
storeObservations: (observations: Array<ExtractedObservation>, block: BlockInfo, extractor: string) => Promise<boolean>;
|
|
18
|
+
deleteBlockObservation: (block: string, extractor: string) => Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Builds a query that returns used blocks by selecting the `block` column from the `ObservationEntity` repository,
|
|
21
|
+
* filtered by the provided `extractorId`
|
|
22
|
+
*
|
|
23
|
+
* @param extractorId - Identifier of the extractor
|
|
24
|
+
* @returns A query builder selecting used blocks
|
|
25
|
+
*/
|
|
26
|
+
createUsedBlocksQuery: (extractorId: string) => SelectQueryBuilder<ObservationEntity>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../lib/actions/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,UAAU,EAGV,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,qBAAa,uBAAuB;IAClC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgC;gBAE1D,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,cAAc;IAM3D;;;;;OAKG;IACH,iBAAiB,GACf,cAAc,KAAK,CAAC,oBAAoB,CAAC,EACzC,OAAO,SAAS,EAChB,WAAW,MAAM,sBAmEjB;IAEF,sBAAsB,GAAU,OAAO,MAAM,EAAE,WAAW,MAAM,mBAQ9D;IAEF;;;;;;OAMG;IACH,qBAAqB,GACnB,aAAa,MAAM,KAClB,kBAAkB,CAAC,iBAAiB,CAAC,CAKtC;CACH"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
2
|
+
import { In, } from '@rosen-bridge/extended-typeorm';
|
|
3
|
+
import { ObservationEntity } from '../entities/observationEntity';
|
|
4
|
+
export class ObservationEntityAction {
|
|
5
|
+
logger;
|
|
6
|
+
datasource;
|
|
7
|
+
observationRepository;
|
|
8
|
+
constructor(dataSource, logger) {
|
|
9
|
+
this.datasource = dataSource;
|
|
10
|
+
this.observationRepository = dataSource.getRepository(ObservationEntity);
|
|
11
|
+
this.logger = logger ? logger : new DummyLogger();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* It stores list of observations in the dataSource with block id
|
|
15
|
+
* @param observations
|
|
16
|
+
* @param block
|
|
17
|
+
* @param extractor
|
|
18
|
+
*/
|
|
19
|
+
storeObservations = async (observations, block, extractor) => {
|
|
20
|
+
if (observations.length === 0)
|
|
21
|
+
return true;
|
|
22
|
+
const requestIds = observations.map((item) => item.requestId);
|
|
23
|
+
const savedObservations = await this.observationRepository.findBy({
|
|
24
|
+
requestId: In(requestIds),
|
|
25
|
+
extractor: extractor,
|
|
26
|
+
});
|
|
27
|
+
let success = true;
|
|
28
|
+
const queryRunner = this.datasource.createQueryRunner();
|
|
29
|
+
await queryRunner.connect();
|
|
30
|
+
await queryRunner.startTransaction();
|
|
31
|
+
const repository = await queryRunner.manager.getRepository(ObservationEntity);
|
|
32
|
+
try {
|
|
33
|
+
for (const observation of observations) {
|
|
34
|
+
const saved = savedObservations.some((entity) => {
|
|
35
|
+
return entity.requestId === observation.requestId;
|
|
36
|
+
});
|
|
37
|
+
const entity = {
|
|
38
|
+
block: block.hash,
|
|
39
|
+
height: block.height,
|
|
40
|
+
bridgeFee: observation.bridgeFee,
|
|
41
|
+
amount: observation.amount,
|
|
42
|
+
fromAddress: observation.fromAddress,
|
|
43
|
+
fromChain: observation.fromChain,
|
|
44
|
+
networkFee: observation.networkFee,
|
|
45
|
+
requestId: observation.requestId,
|
|
46
|
+
sourceBlockId: observation.sourceBlockId,
|
|
47
|
+
sourceTxId: observation.sourceTxId,
|
|
48
|
+
toChain: observation.toChain,
|
|
49
|
+
sourceChainTokenId: observation.sourceChainTokenId,
|
|
50
|
+
targetChainTokenId: observation.targetChainTokenId,
|
|
51
|
+
toAddress: observation.toAddress,
|
|
52
|
+
extractor: extractor,
|
|
53
|
+
rawData: observation.rawData,
|
|
54
|
+
};
|
|
55
|
+
if (!saved) {
|
|
56
|
+
this.logger.info(`Storing observation for event ${observation.requestId} in blockHeight ${block.height} and extractor ${extractor}`);
|
|
57
|
+
await repository.insert(entity);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this.logger.info(`Updating observation for event ${observation.requestId} in blockHeight ${block.height} and extractor ${extractor}`);
|
|
61
|
+
await repository.update({
|
|
62
|
+
requestId: observation.requestId,
|
|
63
|
+
extractor: extractor,
|
|
64
|
+
}, entity);
|
|
65
|
+
}
|
|
66
|
+
this.logger.debug(`Entity ${JSON.stringify(entity)}`);
|
|
67
|
+
}
|
|
68
|
+
await queryRunner.commitTransaction();
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
this.logger.error(`An error occurred during store observation action: ${e}`);
|
|
72
|
+
await queryRunner.rollbackTransaction();
|
|
73
|
+
success = false;
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
await queryRunner.release();
|
|
77
|
+
}
|
|
78
|
+
return success;
|
|
79
|
+
};
|
|
80
|
+
deleteBlockObservation = async (block, extractor) => {
|
|
81
|
+
this.logger.info(`Deleting observations in block ${block} and extractor ${extractor}`);
|
|
82
|
+
await this.observationRepository.delete({
|
|
83
|
+
block: block,
|
|
84
|
+
extractor: extractor,
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Builds a query that returns used blocks by selecting the `block` column from the `ObservationEntity` repository,
|
|
89
|
+
* filtered by the provided `extractorId`
|
|
90
|
+
*
|
|
91
|
+
* @param extractorId - Identifier of the extractor
|
|
92
|
+
* @returns A query builder selecting used blocks
|
|
93
|
+
*/
|
|
94
|
+
createUsedBlocksQuery = (extractorId) => {
|
|
95
|
+
return this.observationRepository
|
|
96
|
+
.createQueryBuilder('observationEntity')
|
|
97
|
+
.select('observationEntity.block', 'block')
|
|
98
|
+
.where('observationEntity.extractor = :extractorId', { extractorId });
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvYWN0aW9ucy9kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFFTCxFQUFFLEdBR0gsTUFBTSxnQ0FBZ0MsQ0FBQztBQUd4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUdsRSxNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLE1BQU0sQ0FBaUI7SUFDZixVQUFVLENBQWE7SUFDdkIscUJBQXFCLENBQWdDO0lBRXRFLFlBQVksVUFBc0IsRUFBRSxNQUF1QjtRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLEdBQUcsS0FBSyxFQUN2QixZQUF5QyxFQUN6QyxLQUFnQixFQUNoQixTQUFpQixFQUNqQixFQUFFO1FBQ0YsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7WUFDaEUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDekIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxDQUFDO1FB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QUMsQ0FBQztJQUVGLHNCQUFzQixHQUFHLEtBQUssRUFBRSxLQUFhLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLGtDQUFrQyxLQUFLLGtCQUFrQixTQUFTLEVBQUUsQ0FDckUsQ0FBQztRQUNGLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztZQUN0QyxLQUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILHFCQUFxQixHQUFHLENBQ3RCLFdBQW1CLEVBQ29CLEVBQUU7UUFDekMsT0FBTyxJQUFJLENBQUMscUJBQXFCO2FBQzlCLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDO2FBQ3ZDLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxPQUFPLENBQUM7YUFDMUMsS0FBSyxDQUFDLDRDQUE0QyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7XG4gIERhdGFTb3VyY2UsXG4gIEluLFxuICBSZXBvc2l0b3J5LFxuICBTZWxlY3RRdWVyeUJ1aWxkZXIsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IE9ic2VydmF0aW9uRW50aXR5IH0gZnJvbSAnLi4vZW50aXRpZXMvb2JzZXJ2YXRpb25FbnRpdHknO1xuaW1wb3J0IHsgRXh0cmFjdGVkT2JzZXJ2YXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dHJhY3RlZE9ic2VydmF0aW9uJztcblxuZXhwb3J0IGNsYXNzIE9ic2VydmF0aW9uRW50aXR5QWN0aW9uIHtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhc291cmNlOiBEYXRhU291cmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IG9ic2VydmF0aW9uUmVwb3NpdG9yeTogUmVwb3NpdG9yeTxPYnNlcnZhdGlvbkVudGl0eT47XG5cbiAgY29uc3RydWN0b3IoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSwgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIpIHtcbiAgICB0aGlzLmRhdGFzb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMub2JzZXJ2YXRpb25SZXBvc2l0b3J5ID0gZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KE9ic2VydmF0aW9uRW50aXR5KTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHN0b3JlcyBsaXN0IG9mIG9ic2VydmF0aW9ucyBpbiB0aGUgZGF0YVNvdXJjZSB3aXRoIGJsb2NrIGlkXG4gICAqIEBwYXJhbSBvYnNlcnZhdGlvbnNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHN0b3JlT2JzZXJ2YXRpb25zID0gYXN5bmMgKFxuICAgIG9ic2VydmF0aW9uczogQXJyYXk8RXh0cmFjdGVkT2JzZXJ2YXRpb24+LFxuICAgIGJsb2NrOiBCbG9ja0luZm8sXG4gICAgZXh0cmFjdG9yOiBzdHJpbmcsXG4gICkgPT4ge1xuICAgIGlmIChvYnNlcnZhdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCByZXF1ZXN0SWRzID0gb2JzZXJ2YXRpb25zLm1hcCgoaXRlbSkgPT4gaXRlbS5yZXF1ZXN0SWQpO1xuICAgIGNvbnN0IHNhdmVkT2JzZXJ2YXRpb25zID0gYXdhaXQgdGhpcy5vYnNlcnZhdGlvblJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgIHJlcXVlc3RJZDogSW4ocmVxdWVzdElkcyksXG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICB9KTtcbiAgICBsZXQgc3VjY2VzcyA9IHRydWU7XG4gICAgY29uc3QgcXVlcnlSdW5uZXIgPSB0aGlzLmRhdGFzb3VyY2UuY3JlYXRlUXVlcnlSdW5uZXIoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb25uZWN0KCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIGNvbnN0IHJlcG9zaXRvcnkgPVxuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KE9ic2VydmF0aW9uRW50aXR5KTtcbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBvYnNlcnZhdGlvbiBvZiBvYnNlcnZhdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBzYXZlZE9ic2VydmF0aW9ucy5zb21lKChlbnRpdHkpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50aXR5LnJlcXVlc3RJZCA9PT0gb2JzZXJ2YXRpb24ucmVxdWVzdElkO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW50aXR5ID0ge1xuICAgICAgICAgIGJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICAgIGhlaWdodDogYmxvY2suaGVpZ2h0LFxuICAgICAgICAgIGJyaWRnZUZlZTogb2JzZXJ2YXRpb24uYnJpZGdlRmVlLFxuICAgICAgICAgIGFtb3VudDogb2JzZXJ2YXRpb24uYW1vdW50LFxuICAgICAgICAgIGZyb21BZGRyZXNzOiBvYnNlcnZhdGlvbi5mcm9tQWRkcmVzcyxcbiAgICAgICAgICBmcm9tQ2hhaW46IG9ic2VydmF0aW9uLmZyb21DaGFpbixcbiAgICAgICAgICBuZXR3b3JrRmVlOiBvYnNlcnZhdGlvbi5uZXR3b3JrRmVlLFxuICAgICAgICAgIHJlcXVlc3RJZDogb2JzZXJ2YXRpb24ucmVxdWVzdElkLFxuICAgICAgICAgIHNvdXJjZUJsb2NrSWQ6IG9ic2VydmF0aW9uLnNvdXJjZUJsb2NrSWQsXG4gICAgICAgICAgc291cmNlVHhJZDogb2JzZXJ2YXRpb24uc291cmNlVHhJZCxcbiAgICAgICAgICB0b0NoYWluOiBvYnNlcnZhdGlvbi50b0NoYWluLFxuICAgICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogb2JzZXJ2YXRpb24uc291cmNlQ2hhaW5Ub2tlbklkLFxuICAgICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogb2JzZXJ2YXRpb24udGFyZ2V0Q2hhaW5Ub2tlbklkLFxuICAgICAgICAgIHRvQWRkcmVzczogb2JzZXJ2YXRpb24udG9BZGRyZXNzLFxuICAgICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICAgIHJhd0RhdGE6IG9ic2VydmF0aW9uLnJhd0RhdGEsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2F2ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFN0b3Jpbmcgb2JzZXJ2YXRpb24gZm9yIGV2ZW50ICR7b2JzZXJ2YXRpb24ucmVxdWVzdElkfSBpbiBibG9ja0hlaWdodCAke2Jsb2NrLmhlaWdodH0gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcmVwb3NpdG9yeS5pbnNlcnQoZW50aXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFVwZGF0aW5nIG9ic2VydmF0aW9uIGZvciBldmVudCAke29ic2VydmF0aW9uLnJlcXVlc3RJZH0gaW4gYmxvY2tIZWlnaHQgJHtibG9jay5oZWlnaHR9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByZXF1ZXN0SWQ6IG9ic2VydmF0aW9uLnJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEVudGl0eSAke0pTT04uc3RyaW5naWZ5KGVudGl0eSl9YCk7XG4gICAgICB9XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHN0b3JlIG9ic2VydmF0aW9uIGFjdGlvbjogJHtlfWAsXG4gICAgICApO1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yZWxlYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9O1xuXG4gIGRlbGV0ZUJsb2NrT2JzZXJ2YXRpb24gPSBhc3luYyAoYmxvY2s6IHN0cmluZywgZXh0cmFjdG9yOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgYERlbGV0aW5nIG9ic2VydmF0aW9ucyBpbiBibG9jayAke2Jsb2NrfSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWAsXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLm9ic2VydmF0aW9uUmVwb3NpdG9yeS5kZWxldGUoe1xuICAgICAgYmxvY2s6IGJsb2NrLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHF1ZXJ5IHRoYXQgcmV0dXJucyB1c2VkIGJsb2NrcyBieSBzZWxlY3RpbmcgdGhlIGBibG9ja2AgY29sdW1uIGZyb20gdGhlIGBPYnNlcnZhdGlvbkVudGl0eWAgcmVwb3NpdG9yeSxcbiAgICogZmlsdGVyZWQgYnkgdGhlIHByb3ZpZGVkIGBleHRyYWN0b3JJZGBcbiAgICpcbiAgICogQHBhcmFtIGV4dHJhY3RvcklkIC0gSWRlbnRpZmllciBvZiB0aGUgZXh0cmFjdG9yXG4gICAqIEByZXR1cm5zIEEgcXVlcnkgYnVpbGRlciBzZWxlY3RpbmcgdXNlZCBibG9ja3NcbiAgICovXG4gIGNyZWF0ZVVzZWRCbG9ja3NRdWVyeSA9IChcbiAgICBleHRyYWN0b3JJZDogc3RyaW5nLFxuICApOiBTZWxlY3RRdWVyeUJ1aWxkZXI8T2JzZXJ2YXRpb25FbnRpdHk+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5vYnNlcnZhdGlvblJlcG9zaXRvcnlcbiAgICAgIC5jcmVhdGVRdWVyeUJ1aWxkZXIoJ29ic2VydmF0aW9uRW50aXR5JylcbiAgICAgIC5zZWxlY3QoJ29ic2VydmF0aW9uRW50aXR5LmJsb2NrJywgJ2Jsb2NrJylcbiAgICAgIC53aGVyZSgnb2JzZXJ2YXRpb25FbnRpdHkuZXh0cmFjdG9yID0gOmV4dHJhY3RvcklkJywgeyBleHRyYWN0b3JJZCB9KTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare class ObservationEntity {
|
|
2
|
+
id: number;
|
|
3
|
+
fromChain: string;
|
|
4
|
+
toChain: string;
|
|
5
|
+
fromAddress: string;
|
|
6
|
+
toAddress: string;
|
|
7
|
+
height: number;
|
|
8
|
+
amount: string;
|
|
9
|
+
networkFee: string;
|
|
10
|
+
bridgeFee: string;
|
|
11
|
+
sourceChainTokenId: string;
|
|
12
|
+
targetChainTokenId: string;
|
|
13
|
+
sourceTxId: string;
|
|
14
|
+
sourceBlockId: string;
|
|
15
|
+
requestId: string;
|
|
16
|
+
block: string;
|
|
17
|
+
extractor: string;
|
|
18
|
+
rawData: string;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=observationEntity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observationEntity.d.ts","sourceRoot":"","sources":["../../lib/entities/observationEntity.ts"],"names":[],"mappings":"AAOA,qBAEa,iBAAiB;IAE5B,EAAE,EAAE,MAAM,CAAC;IAEX,SAAS,EAAE,MAAM,CAAC;IAGlB,OAAO,EAAE,MAAM,CAAC;IAGhB,WAAW,EAAE,MAAM,CAAC;IAGpB,SAAS,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC;IAGf,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,MAAM,CAAC;IAGlB,kBAAkB,EAAE,MAAM,CAAC;IAG3B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,UAAU,EAAE,MAAM,CAAC;IAGnB,aAAa,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,MAAM,CAAC;IAGlB,KAAK,EAAE,MAAM,CAAC;IAGd,SAAS,EAAE,MAAM,CAAC;IAGlB,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Column, Entity, PrimaryGeneratedColumn, Unique, } from '@rosen-bridge/extended-typeorm';
|
|
11
|
+
let ObservationEntity = class ObservationEntity {
|
|
12
|
+
id;
|
|
13
|
+
fromChain;
|
|
14
|
+
toChain;
|
|
15
|
+
fromAddress;
|
|
16
|
+
toAddress;
|
|
17
|
+
height;
|
|
18
|
+
amount;
|
|
19
|
+
networkFee;
|
|
20
|
+
bridgeFee;
|
|
21
|
+
sourceChainTokenId;
|
|
22
|
+
targetChainTokenId;
|
|
23
|
+
sourceTxId;
|
|
24
|
+
sourceBlockId;
|
|
25
|
+
requestId;
|
|
26
|
+
block;
|
|
27
|
+
extractor;
|
|
28
|
+
rawData;
|
|
29
|
+
};
|
|
30
|
+
__decorate([
|
|
31
|
+
PrimaryGeneratedColumn(),
|
|
32
|
+
__metadata("design:type", Number)
|
|
33
|
+
], ObservationEntity.prototype, "id", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
Column({ type: 'varchar', length: 30 }),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], ObservationEntity.prototype, "fromChain", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
Column({ type: 'varchar', length: 30 }),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], ObservationEntity.prototype, "toChain", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
Column({ type: 'varchar' }),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], ObservationEntity.prototype, "fromAddress", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
Column({ type: 'varchar' }),
|
|
48
|
+
__metadata("design:type", String)
|
|
49
|
+
], ObservationEntity.prototype, "toAddress", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
Column({ type: 'int' }),
|
|
52
|
+
__metadata("design:type", Number)
|
|
53
|
+
], ObservationEntity.prototype, "height", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
Column({ type: 'varchar' }),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], ObservationEntity.prototype, "amount", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
Column({ type: 'varchar' }),
|
|
60
|
+
__metadata("design:type", String)
|
|
61
|
+
], ObservationEntity.prototype, "networkFee", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
Column({ type: 'varchar' }),
|
|
64
|
+
__metadata("design:type", String)
|
|
65
|
+
], ObservationEntity.prototype, "bridgeFee", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
Column({ type: 'varchar' }),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], ObservationEntity.prototype, "sourceChainTokenId", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
Column({ type: 'varchar' }),
|
|
72
|
+
__metadata("design:type", String)
|
|
73
|
+
], ObservationEntity.prototype, "targetChainTokenId", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
Column({ type: 'varchar' }),
|
|
76
|
+
__metadata("design:type", String)
|
|
77
|
+
], ObservationEntity.prototype, "sourceTxId", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
Column({ type: 'varchar' }),
|
|
80
|
+
__metadata("design:type", String)
|
|
81
|
+
], ObservationEntity.prototype, "sourceBlockId", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
Column({ type: 'varchar' }),
|
|
84
|
+
__metadata("design:type", String)
|
|
85
|
+
], ObservationEntity.prototype, "requestId", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
Column({ type: 'varchar' }),
|
|
88
|
+
__metadata("design:type", String)
|
|
89
|
+
], ObservationEntity.prototype, "block", void 0);
|
|
90
|
+
__decorate([
|
|
91
|
+
Column({ type: 'varchar' }),
|
|
92
|
+
__metadata("design:type", String)
|
|
93
|
+
], ObservationEntity.prototype, "extractor", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
Column({ type: 'varchar', default: '' }),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], ObservationEntity.prototype, "rawData", void 0);
|
|
98
|
+
ObservationEntity = __decorate([
|
|
99
|
+
Entity('observation_entity'),
|
|
100
|
+
Unique(['requestId', 'extractor'])
|
|
101
|
+
], ObservationEntity);
|
|
102
|
+
export { ObservationEntity };
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YXRpb25FbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZW50aXRpZXMvb2JzZXJ2YXRpb25FbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sc0JBQXNCLEVBQ3RCLE1BQU0sR0FDUCxNQUFNLGdDQUFnQyxDQUFDO0FBSWpDLElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBRTVCLEVBQUUsQ0FBUztJQUVYLFNBQVMsQ0FBUztJQUdsQixPQUFPLENBQVM7SUFHaEIsV0FBVyxDQUFTO0lBR3BCLFNBQVMsQ0FBUztJQUdsQixNQUFNLENBQVM7SUFHZixNQUFNLENBQVM7SUFHZixVQUFVLENBQVM7SUFHbkIsU0FBUyxDQUFTO0lBR2xCLGtCQUFrQixDQUFTO0lBRzNCLGtCQUFrQixDQUFTO0lBRzNCLFVBQVUsQ0FBUztJQUduQixhQUFhLENBQVM7SUFHdEIsU0FBUyxDQUFTO0lBR2xCLEtBQUssQ0FBUztJQUdkLFNBQVMsQ0FBUztJQUdsQixPQUFPLENBQVM7Q0FDakIsQ0FBQTtBQWhEQztJQURDLHNCQUFzQixFQUFFOzs2Q0FDZDtBQUVYO0lBREMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7O29EQUN0QjtBQUdsQjtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDOztrREFDeEI7QUFHaEI7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7O3NEQUNSO0FBR3BCO0lBREMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDOztvREFDVjtBQUdsQjtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQzs7aURBQ1Q7QUFHZjtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7aURBQ2I7QUFHZjtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7cURBQ1Q7QUFHbkI7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7O29EQUNWO0FBR2xCO0lBREMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDOzs2REFDRDtBQUczQjtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7NkRBQ0Q7QUFHM0I7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7O3FEQUNUO0FBR25CO0lBREMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDOzt3REFDTjtBQUd0QjtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7b0RBQ1Y7QUFHbEI7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7O2dEQUNkO0FBR2Q7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7O29EQUNWO0FBR2xCO0lBREMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7O2tEQUN6QjtBQWpETCxpQkFBaUI7SUFGN0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDO0lBQzVCLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztHQUN0QixpQkFBaUIsQ0FrRDdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29sdW1uLFxuICBFbnRpdHksXG4gIFByaW1hcnlHZW5lcmF0ZWRDb2x1bW4sXG4gIFVuaXF1ZSxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcblxuQEVudGl0eSgnb2JzZXJ2YXRpb25fZW50aXR5JylcbkBVbmlxdWUoWydyZXF1ZXN0SWQnLCAnZXh0cmFjdG9yJ10pXG5leHBvcnQgY2xhc3MgT2JzZXJ2YXRpb25FbnRpdHkge1xuICBAUHJpbWFyeUdlbmVyYXRlZENvbHVtbigpXG4gIGlkOiBudW1iZXI7XG4gIEBDb2x1bW4oeyB0eXBlOiAndmFyY2hhcicsIGxlbmd0aDogMzAgfSlcbiAgZnJvbUNoYWluOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJywgbGVuZ3RoOiAzMCB9KVxuICB0b0NoYWluOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBmcm9tQWRkcmVzczogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiAndmFyY2hhcicgfSlcbiAgdG9BZGRyZXNzOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICdpbnQnIH0pXG4gIGhlaWdodDogbnVtYmVyO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiAndmFyY2hhcicgfSlcbiAgYW1vdW50OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBuZXR3b3JrRmVlOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBicmlkZ2VGZWU6IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogJ3ZhcmNoYXInIH0pXG4gIHNvdXJjZUNoYWluVG9rZW5JZDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiAndmFyY2hhcicgfSlcbiAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBzb3VyY2VUeElkOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBzb3VyY2VCbG9ja0lkOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICByZXF1ZXN0SWQ6IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogJ3ZhcmNoYXInIH0pXG4gIGJsb2NrOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBleHRyYWN0b3I6IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogJ3ZhcmNoYXInLCBkZWZhdWx0OiAnJyB9KVxuICByYXdEYXRhOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
|
|
2
|
+
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
3
|
+
import { DataSource, SelectQueryBuilder } from '@rosen-bridge/extended-typeorm';
|
|
4
|
+
import { AbstractRosenDataExtractor } from '@rosen-bridge/rosen-extractor';
|
|
5
|
+
import { BlockInfo } from '@rosen-bridge/scanner-interfaces';
|
|
6
|
+
import { TokenMap } from '@rosen-bridge/tokens';
|
|
7
|
+
import { ObservationEntityAction } from '../actions/db';
|
|
8
|
+
import { ObservationEntity } from '../entities/observationEntity';
|
|
9
|
+
export declare abstract class AbstractObservationExtractor<TransactionType> extends AbstractExtractor<TransactionType, ObservationEntity> {
|
|
10
|
+
protected readonly logger: AbstractLogger;
|
|
11
|
+
protected readonly dataSource: DataSource;
|
|
12
|
+
protected readonly tokens: TokenMap;
|
|
13
|
+
protected readonly actions: ObservationEntityAction;
|
|
14
|
+
protected extractor: AbstractRosenDataExtractor<TransactionType>;
|
|
15
|
+
abstract readonly FROM_CHAIN: string;
|
|
16
|
+
constructor(dataSource: DataSource, tokens: TokenMap, extractor: AbstractRosenDataExtractor<TransactionType>, logger?: AbstractLogger);
|
|
17
|
+
/**
|
|
18
|
+
* gets Id for current extractor
|
|
19
|
+
*/
|
|
20
|
+
abstract getId: () => string;
|
|
21
|
+
/**
|
|
22
|
+
* gets transaction id from TransactionType
|
|
23
|
+
*/
|
|
24
|
+
abstract getTxId: (tx: TransactionType) => string;
|
|
25
|
+
/**
|
|
26
|
+
* manipulate transactions before processing
|
|
27
|
+
* @param txs
|
|
28
|
+
* @param block
|
|
29
|
+
*/
|
|
30
|
+
protected preprocessTransactions: (txs: Array<TransactionType>, block: BlockInfo) => TransactionType[];
|
|
31
|
+
/**
|
|
32
|
+
* gets block id and transactions corresponding to the block and saves if they are valid rosen
|
|
33
|
+
* transactions and in case of success return true and in case of failure returns false
|
|
34
|
+
* @param txs
|
|
35
|
+
* @param block
|
|
36
|
+
*/
|
|
37
|
+
processTransactions: (txs: Array<TransactionType>, block: BlockInfo) => Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* fork one block and remove all stored information for this block
|
|
40
|
+
* @param hash: block hash
|
|
41
|
+
*/
|
|
42
|
+
forkBlock: (hash: string) => Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Extractor box initialization
|
|
45
|
+
* No action needed in observation extractors
|
|
46
|
+
*/
|
|
47
|
+
initializeData: () => Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Builds a query that returns used blocks by selecting the `block` column from the `ObservationEntity` repository,
|
|
50
|
+
* filtered by the provided `extractorId`
|
|
51
|
+
*
|
|
52
|
+
* @returns A query builder selecting used blocks
|
|
53
|
+
*/
|
|
54
|
+
createUsedBlocksQuery: () => SelectQueryBuilder<ObservationEntity>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=abstractObservationExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractObservationExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/abstractObservationExtractor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,8BAAsB,4BAA4B,CAChD,eAAe,CACf,SAAQ,iBAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IACpD,SAAS,CAAC,SAAS,EAAE,0BAA0B,CAAC,eAAe,CAAC,CAAC;IACjE,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAGnC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,0BAA0B,CAAC,eAAe,CAAC,EACtD,MAAM,CAAC,EAAE,cAAc;IAazB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,MAAM,CAAC;IAElD;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,GAC9B,KAAK,KAAK,CAAC,eAAe,CAAC,EAC3B,OAAO,SAAS,uBACT;IAET;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,eAAe,CAAC,EAC3B,OAAO,SAAS,KACf,OAAO,CAAC,OAAO,CAAC,CA2BjB;IAEF;;;OAGG;IACH,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,cAAc,sBAEZ;IAEF;;;;;OAKG;IACH,qBAAqB,QAAO,kBAAkB,CAAC,iBAAiB,CAAC,CACd;CACpD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { blake2b } from 'blakejs';
|
|
2
|
+
import { Buffer } from 'buffer';
|
|
3
|
+
import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
|
|
4
|
+
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
5
|
+
import { ObservationEntityAction } from '../actions/db';
|
|
6
|
+
export class AbstractObservationExtractor extends AbstractExtractor {
|
|
7
|
+
logger;
|
|
8
|
+
dataSource;
|
|
9
|
+
tokens;
|
|
10
|
+
actions;
|
|
11
|
+
extractor;
|
|
12
|
+
constructor(dataSource, tokens, extractor, logger) {
|
|
13
|
+
super();
|
|
14
|
+
this.dataSource = dataSource;
|
|
15
|
+
this.tokens = tokens;
|
|
16
|
+
this.logger = logger ? logger : new DummyLogger();
|
|
17
|
+
this.actions = new ObservationEntityAction(dataSource, this.logger.child('ObservationEntityAction'));
|
|
18
|
+
this.extractor = extractor;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* manipulate transactions before processing
|
|
22
|
+
* @param txs
|
|
23
|
+
* @param block
|
|
24
|
+
*/
|
|
25
|
+
preprocessTransactions = (txs, block) => txs;
|
|
26
|
+
/**
|
|
27
|
+
* gets block id and transactions corresponding to the block and saves if they are valid rosen
|
|
28
|
+
* transactions and in case of success return true and in case of failure returns false
|
|
29
|
+
* @param txs
|
|
30
|
+
* @param block
|
|
31
|
+
*/
|
|
32
|
+
processTransactions = (txs, block) => {
|
|
33
|
+
const observations = [];
|
|
34
|
+
const filteredTxs = this.preprocessTransactions(txs, block);
|
|
35
|
+
filteredTxs.forEach((transaction) => {
|
|
36
|
+
const data = this.extractor.get(transaction);
|
|
37
|
+
if (data) {
|
|
38
|
+
const requestId = Buffer.from(blake2b(this.getTxId(transaction), undefined, 32)).toString('hex');
|
|
39
|
+
observations.push({
|
|
40
|
+
fromChain: this.FROM_CHAIN,
|
|
41
|
+
toChain: data.toChain,
|
|
42
|
+
amount: data.amount,
|
|
43
|
+
sourceChainTokenId: data.sourceChainTokenId,
|
|
44
|
+
targetChainTokenId: data.targetChainTokenId,
|
|
45
|
+
sourceTxId: data.sourceTxId,
|
|
46
|
+
bridgeFee: data.bridgeFee,
|
|
47
|
+
networkFee: data.networkFee,
|
|
48
|
+
sourceBlockId: block.hash,
|
|
49
|
+
requestId: requestId,
|
|
50
|
+
toAddress: data.toAddress,
|
|
51
|
+
fromAddress: data.fromAddress,
|
|
52
|
+
rawData: data.rawData,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return this.actions.storeObservations(observations, block, this.getId());
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* fork one block and remove all stored information for this block
|
|
60
|
+
* @param hash: block hash
|
|
61
|
+
*/
|
|
62
|
+
forkBlock = async (hash) => {
|
|
63
|
+
await this.actions.deleteBlockObservation(hash, this.getId());
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Extractor box initialization
|
|
67
|
+
* No action needed in observation extractors
|
|
68
|
+
*/
|
|
69
|
+
initializeData = async () => {
|
|
70
|
+
return;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Builds a query that returns used blocks by selecting the `block` column from the `ObservationEntity` repository,
|
|
74
|
+
* filtered by the provided `extractorId`
|
|
75
|
+
*
|
|
76
|
+
* @returns A query builder selecting used blocks
|
|
77
|
+
*/
|
|
78
|
+
createUsedBlocksQuery = () => this.actions.createUsedBlocksQuery(this.getId());
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvYWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFaEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU01RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJeEQsTUFBTSxPQUFnQiw0QkFFcEIsU0FBUSxpQkFBcUQ7SUFDMUMsTUFBTSxDQUFpQjtJQUN2QixVQUFVLENBQWE7SUFDdkIsTUFBTSxDQUFXO0lBQ2pCLE9BQU8sQ0FBMEI7SUFDMUMsU0FBUyxDQUE4QztJQUdqRSxZQUNFLFVBQXNCLEVBQ3RCLE1BQWdCLEVBQ2hCLFNBQXNELEVBQ3RELE1BQXVCO1FBRXZCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksdUJBQXVCLENBQ3hDLFVBQVUsRUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUM3QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQVlEOzs7O09BSUc7SUFDTyxzQkFBc0IsR0FBRyxDQUNqQyxHQUEyQixFQUMzQixLQUFnQixFQUNoQixFQUFFLENBQUMsR0FBRyxDQUFDO0lBRVQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsR0FBRyxDQUNwQixHQUEyQixFQUMzQixLQUFnQixFQUNFLEVBQUU7UUFDcEIsTUFBTSxZQUFZLEdBQWdDLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVELFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3QyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FDbEQsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7b0JBQzNCLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSTtvQkFDekIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO29CQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ3RCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFNBQVMsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFpQixFQUFFO1FBQ2hELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsY0FBYyxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzFCLE9BQU87SUFDVCxDQUFDLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNILHFCQUFxQixHQUFHLEdBQTBDLEVBQUUsQ0FDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztDQUNwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJsYWtlMmIgfSBmcm9tICdibGFrZWpzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5cbmltcG9ydCB7IEFic3RyYWN0RXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1leHRyYWN0b3InO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSwgU2VsZWN0UXVlcnlCdWlsZGVyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCB7IEFic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9yb3Nlbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgQmxvY2tJbmZvIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5cbmltcG9ydCB7IE9ic2VydmF0aW9uRW50aXR5QWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9kYic7XG5pbXBvcnQgeyBPYnNlcnZhdGlvbkVudGl0eSB9IGZyb20gJy4uL2VudGl0aWVzL29ic2VydmF0aW9uRW50aXR5JztcbmltcG9ydCB7IEV4dHJhY3RlZE9ic2VydmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRPYnNlcnZhdGlvbic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yPFxuICBUcmFuc2FjdGlvblR5cGUsXG4+IGV4dGVuZHMgQWJzdHJhY3RFeHRyYWN0b3I8VHJhbnNhY3Rpb25UeXBlLCBPYnNlcnZhdGlvbkVudGl0eT4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFTb3VyY2U6IERhdGFTb3VyY2U7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b2tlbnM6IFRva2VuTWFwO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aW9uczogT2JzZXJ2YXRpb25FbnRpdHlBY3Rpb247XG4gIHByb3RlY3RlZCBleHRyYWN0b3I6IEFic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yPFRyYW5zYWN0aW9uVHlwZT47XG4gIGFic3RyYWN0IHJlYWRvbmx5IEZST01fQ0hBSU46IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHRva2VuczogVG9rZW5NYXAsXG4gICAgZXh0cmFjdG9yOiBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxUcmFuc2FjdGlvblR5cGU+LFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIgPyBsb2dnZXIgOiBuZXcgRHVtbXlMb2dnZXIoKTtcbiAgICB0aGlzLmFjdGlvbnMgPSBuZXcgT2JzZXJ2YXRpb25FbnRpdHlBY3Rpb24oXG4gICAgICBkYXRhU291cmNlLFxuICAgICAgdGhpcy5sb2dnZXIuY2hpbGQoJ09ic2VydmF0aW9uRW50aXR5QWN0aW9uJyksXG4gICAgKTtcbiAgICB0aGlzLmV4dHJhY3RvciA9IGV4dHJhY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXRzIElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0SWQ6ICgpID0+IHN0cmluZztcblxuICAvKipcbiAgICogZ2V0cyB0cmFuc2FjdGlvbiBpZCBmcm9tIFRyYW5zYWN0aW9uVHlwZVxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0VHhJZDogKHR4OiBUcmFuc2FjdGlvblR5cGUpID0+IHN0cmluZztcblxuICAvKipcbiAgICogbWFuaXB1bGF0ZSB0cmFuc2FjdGlvbnMgYmVmb3JlIHByb2Nlc3NpbmdcbiAgICogQHBhcmFtIHR4c1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICovXG4gIHByb3RlY3RlZCBwcmVwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb25UeXBlPixcbiAgICBibG9jazogQmxvY2tJbmZvLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICApID0+IHR4cztcblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiAgdHJhbnNhY3Rpb25zIGFuZCBpbiBjYXNlIG9mIHN1Y2Nlc3MgcmV0dXJuIHRydWUgYW5kIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm5zIGZhbHNlXG4gICAqIEBwYXJhbSB0eHNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb25UeXBlPixcbiAgICBibG9jazogQmxvY2tJbmZvLFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCBvYnNlcnZhdGlvbnM6IEFycmF5PEV4dHJhY3RlZE9ic2VydmF0aW9uPiA9IFtdO1xuICAgIGNvbnN0IGZpbHRlcmVkVHhzID0gdGhpcy5wcmVwcm9jZXNzVHJhbnNhY3Rpb25zKHR4cywgYmxvY2spO1xuICAgIGZpbHRlcmVkVHhzLmZvckVhY2goKHRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0b3IuZ2V0KHRyYW5zYWN0aW9uKTtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgIGJsYWtlMmIodGhpcy5nZXRUeElkKHRyYW5zYWN0aW9uKSwgdW5kZWZpbmVkLCAzMiksXG4gICAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICBvYnNlcnZhdGlvbnMucHVzaCh7XG4gICAgICAgICAgZnJvbUNoYWluOiB0aGlzLkZST01fQ0hBSU4sXG4gICAgICAgICAgdG9DaGFpbjogZGF0YS50b0NoYWluLFxuICAgICAgICAgIGFtb3VudDogZGF0YS5hbW91bnQsXG4gICAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBkYXRhLnNvdXJjZUNoYWluVG9rZW5JZCxcbiAgICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IGRhdGEudGFyZ2V0Q2hhaW5Ub2tlbklkLFxuICAgICAgICAgIHNvdXJjZVR4SWQ6IGRhdGEuc291cmNlVHhJZCxcbiAgICAgICAgICBicmlkZ2VGZWU6IGRhdGEuYnJpZGdlRmVlLFxuICAgICAgICAgIG5ldHdvcmtGZWU6IGRhdGEubmV0d29ya0ZlZSxcbiAgICAgICAgICBzb3VyY2VCbG9ja0lkOiBibG9jay5oYXNoLFxuICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdElkLFxuICAgICAgICAgIHRvQWRkcmVzczogZGF0YS50b0FkZHJlc3MsXG4gICAgICAgICAgZnJvbUFkZHJlc3M6IGRhdGEuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgcmF3RGF0YTogZGF0YS5yYXdEYXRhLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zLnN0b3JlT2JzZXJ2YXRpb25zKG9ic2VydmF0aW9ucywgYmxvY2ssIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZvcmsgb25lIGJsb2NrIGFuZCByZW1vdmUgYWxsIHN0b3JlZCBpbmZvcm1hdGlvbiBmb3IgdGhpcyBibG9ja1xuICAgKiBAcGFyYW0gaGFzaDogYmxvY2sgaGFzaFxuICAgKi9cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5kZWxldGVCbG9ja09ic2VydmF0aW9uKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RvciBib3ggaW5pdGlhbGl6YXRpb25cbiAgICogTm8gYWN0aW9uIG5lZWRlZCBpbiBvYnNlcnZhdGlvbiBleHRyYWN0b3JzXG4gICAqL1xuICBpbml0aWFsaXplRGF0YSA9IGFzeW5jICgpID0+IHtcbiAgICByZXR1cm47XG4gIH07XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHF1ZXJ5IHRoYXQgcmV0dXJucyB1c2VkIGJsb2NrcyBieSBzZWxlY3RpbmcgdGhlIGBibG9ja2AgY29sdW1uIGZyb20gdGhlIGBPYnNlcnZhdGlvbkVudGl0eWAgcmVwb3NpdG9yeSxcbiAgICogZmlsdGVyZWQgYnkgdGhlIHByb3ZpZGVkIGBleHRyYWN0b3JJZGBcbiAgICpcbiAgICogQHJldHVybnMgQSBxdWVyeSBidWlsZGVyIHNlbGVjdGluZyB1c2VkIGJsb2Nrc1xuICAgKi9cbiAgY3JlYXRlVXNlZEJsb2Nrc1F1ZXJ5ID0gKCk6IFNlbGVjdFF1ZXJ5QnVpbGRlcjxPYnNlcnZhdGlvbkVudGl0eT4gPT5cbiAgICB0aGlzLmFjdGlvbnMuY3JlYXRlVXNlZEJsb2Nrc1F1ZXJ5KHRoaXMuZ2V0SWQoKSk7XG59XG4iXX0=
|