@rosen-bridge/abstract-observation-extractor 0.1.0-52fc0239

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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,19 @@
1
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
2
+ import { ExtractedObservation } from '../interfaces/extractedObservation';
3
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
4
+ import { Block } from '@rosen-bridge/scanner-interfaces';
5
+ export declare class ObservationEntityAction {
6
+ readonly logger: AbstractLogger;
7
+ private readonly datasource;
8
+ private readonly observationRepository;
9
+ constructor(dataSource: DataSource, logger?: AbstractLogger);
10
+ /**
11
+ * It stores list of observations in the dataSource with block id
12
+ * @param observations
13
+ * @param block
14
+ * @param extractor
15
+ */
16
+ storeObservations: (observations: Array<ExtractedObservation>, block: Block, extractor: string) => Promise<boolean>;
17
+ deleteBlockObservation: (block: string, extractor: string) => Promise<void>;
18
+ }
19
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../lib/actions/db.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAkB,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,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,iBACD,MAAM,oBAAoB,CAAC,SAClC,KAAK,aACD,MAAM,sBAkEjB;IAEF,sBAAsB,UAAiB,MAAM,aAAa,MAAM,mBAQ9D;CACH"}
@@ -0,0 +1,86 @@
1
+ import { ObservationEntity } from '../entities/observationEntity';
2
+ import { In } from '@rosen-bridge/extended-typeorm';
3
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
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
+ };
54
+ if (!saved) {
55
+ this.logger.info(`Storing observation for event ${observation.requestId} in blockHeight ${block.height} and extractor ${extractor}`);
56
+ await repository.insert(entity);
57
+ }
58
+ else {
59
+ this.logger.info(`Updating observation for event ${observation.requestId} in blockHeight ${block.height} and extractor ${extractor}`);
60
+ await repository.update({
61
+ requestId: observation.requestId,
62
+ }, entity);
63
+ }
64
+ this.logger.debug(`Entity ${JSON.stringify(entity)}`);
65
+ }
66
+ await queryRunner.commitTransaction();
67
+ }
68
+ catch (e) {
69
+ this.logger.error(`An error occurred during store observation action: ${e}`);
70
+ await queryRunner.rollbackTransaction();
71
+ success = false;
72
+ }
73
+ finally {
74
+ await queryRunner.release();
75
+ }
76
+ return success;
77
+ };
78
+ deleteBlockObservation = async (block, extractor) => {
79
+ this.logger.info(`Deleting observations in block ${block} and extractor ${extractor}`);
80
+ await this.observationRepository.delete({
81
+ block: block,
82
+ extractor: extractor,
83
+ });
84
+ };
85
+ }
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvYWN0aW9ucy9kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQWMsRUFBRSxFQUFjLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUUsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUc1RSxNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLE1BQU0sQ0FBaUI7SUFDZixVQUFVLENBQWE7SUFDdkIscUJBQXFCLENBQWdDO0lBRXRFLFlBQVksVUFBc0IsRUFBRSxNQUF1QjtRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLEdBQUcsS0FBSyxFQUN2QixZQUF5QyxFQUN6QyxLQUFZLEVBQ1osU0FBaUIsRUFDakIsRUFBRTtRQUNGLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO1lBQ2hFLFNBQVMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDO1lBQ3pCLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQztRQUNI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LFNBQVMsRUFBRSxDQUNyRSxDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO1lBQ3RDLEtBQUssRUFBRSxLQUFLO1lBQ1osU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhdGlvbkVudGl0eSB9IGZyb20gJy4uL2VudGl0aWVzL29ic2VydmF0aW9uRW50aXR5JztcbmltcG9ydCB7IERhdGFTb3VyY2UsIEluLCBSZXBvc2l0b3J5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCB7IEV4dHJhY3RlZE9ic2VydmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRPYnNlcnZhdGlvbic7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIE9ic2VydmF0aW9uRW50aXR5QWN0aW9uIHtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhc291cmNlOiBEYXRhU291cmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IG9ic2VydmF0aW9uUmVwb3NpdG9yeTogUmVwb3NpdG9yeTxPYnNlcnZhdGlvbkVudGl0eT47XG5cbiAgY29uc3RydWN0b3IoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSwgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIpIHtcbiAgICB0aGlzLmRhdGFzb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMub2JzZXJ2YXRpb25SZXBvc2l0b3J5ID0gZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KE9ic2VydmF0aW9uRW50aXR5KTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHN0b3JlcyBsaXN0IG9mIG9ic2VydmF0aW9ucyBpbiB0aGUgZGF0YVNvdXJjZSB3aXRoIGJsb2NrIGlkXG4gICAqIEBwYXJhbSBvYnNlcnZhdGlvbnNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHN0b3JlT2JzZXJ2YXRpb25zID0gYXN5bmMgKFxuICAgIG9ic2VydmF0aW9uczogQXJyYXk8RXh0cmFjdGVkT2JzZXJ2YXRpb24+LFxuICAgIGJsb2NrOiBCbG9jayxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApID0+IHtcbiAgICBpZiAob2JzZXJ2YXRpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgcmVxdWVzdElkcyA9IG9ic2VydmF0aW9ucy5tYXAoKGl0ZW0pID0+IGl0ZW0ucmVxdWVzdElkKTtcbiAgICBjb25zdCBzYXZlZE9ic2VydmF0aW9ucyA9IGF3YWl0IHRoaXMub2JzZXJ2YXRpb25SZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICByZXF1ZXN0SWQ6IEluKHJlcXVlc3RJZHMpLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gICAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IHF1ZXJ5UnVubmVyID0gdGhpcy5kYXRhc291cmNlLmNyZWF0ZVF1ZXJ5UnVubmVyKCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuY29ubmVjdCgpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgICBjb25zdCByZXBvc2l0b3J5ID0gYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KFxuICAgICAgT2JzZXJ2YXRpb25FbnRpdHlcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IG9ic2VydmF0aW9uIG9mIG9ic2VydmF0aW9ucykge1xuICAgICAgICBjb25zdCBzYXZlZCA9IHNhdmVkT2JzZXJ2YXRpb25zLnNvbWUoKGVudGl0eSkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbnRpdHkucmVxdWVzdElkID09PSBvYnNlcnZhdGlvbi5yZXF1ZXN0SWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbnRpdHkgPSB7XG4gICAgICAgICAgYmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgaGVpZ2h0OiBibG9jay5oZWlnaHQsXG4gICAgICAgICAgYnJpZGdlRmVlOiBvYnNlcnZhdGlvbi5icmlkZ2VGZWUsXG4gICAgICAgICAgYW1vdW50OiBvYnNlcnZhdGlvbi5hbW91bnQsXG4gICAgICAgICAgZnJvbUFkZHJlc3M6IG9ic2VydmF0aW9uLmZyb21BZGRyZXNzLFxuICAgICAgICAgIGZyb21DaGFpbjogb2JzZXJ2YXRpb24uZnJvbUNoYWluLFxuICAgICAgICAgIG5ldHdvcmtGZWU6IG9ic2VydmF0aW9uLm5ldHdvcmtGZWUsXG4gICAgICAgICAgcmVxdWVzdElkOiBvYnNlcnZhdGlvbi5yZXF1ZXN0SWQsXG4gICAgICAgICAgc291cmNlQmxvY2tJZDogb2JzZXJ2YXRpb24uc291cmNlQmxvY2tJZCxcbiAgICAgICAgICBzb3VyY2VUeElkOiBvYnNlcnZhdGlvbi5zb3VyY2VUeElkLFxuICAgICAgICAgIHRvQ2hhaW46IG9ic2VydmF0aW9uLnRvQ2hhaW4sXG4gICAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBvYnNlcnZhdGlvbi5zb3VyY2VDaGFpblRva2VuSWQsXG4gICAgICAgICAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBvYnNlcnZhdGlvbi50YXJnZXRDaGFpblRva2VuSWQsXG4gICAgICAgICAgdG9BZGRyZXNzOiBvYnNlcnZhdGlvbi50b0FkZHJlc3MsXG4gICAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2F2ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFN0b3Jpbmcgb2JzZXJ2YXRpb24gZm9yIGV2ZW50ICR7b2JzZXJ2YXRpb24ucmVxdWVzdElkfSBpbiBibG9ja0hlaWdodCAke2Jsb2NrLmhlaWdodH0gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCByZXBvc2l0b3J5Lmluc2VydChlbnRpdHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgVXBkYXRpbmcgb2JzZXJ2YXRpb24gZm9yIGV2ZW50ICR7b2JzZXJ2YXRpb24ucmVxdWVzdElkfSBpbiBibG9ja0hlaWdodCAke2Jsb2NrLmhlaWdodH0gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCByZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmVxdWVzdElkOiBvYnNlcnZhdGlvbi5yZXF1ZXN0SWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW50aXR5XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgRW50aXR5ICR7SlNPTi5zdHJpbmdpZnkoZW50aXR5KX1gKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbW1pdFRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmUgb2JzZXJ2YXRpb24gYWN0aW9uOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfTtcblxuICBkZWxldGVCbG9ja09ic2VydmF0aW9uID0gYXN5bmMgKGJsb2NrOiBzdHJpbmcsIGV4dHJhY3Rvcjogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgIGBEZWxldGluZyBvYnNlcnZhdGlvbnMgaW4gYmxvY2sgJHtibG9ja30gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLm9ic2VydmF0aW9uUmVwb3NpdG9yeS5kZWxldGUoe1xuICAgICAgYmxvY2s6IGJsb2NrLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,19 @@
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
+ }
19
+ //# sourceMappingURL=observationEntity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observationEntity.d.ts","sourceRoot":"","sources":["../../lib/entities/observationEntity.ts"],"names":[],"mappings":"AAEA,qBAEa,iBAAiB;IAE5B,EAAE,EAAE,MAAM,CAAC;IAKX,SAAS,EAAE,MAAM,CAAC;IAKlB,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;CACnB"}
@@ -0,0 +1,102 @@
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
+ };
29
+ __decorate([
30
+ PrimaryGeneratedColumn(),
31
+ __metadata("design:type", Number)
32
+ ], ObservationEntity.prototype, "id", void 0);
33
+ __decorate([
34
+ Column({
35
+ length: 30,
36
+ }),
37
+ __metadata("design:type", String)
38
+ ], ObservationEntity.prototype, "fromChain", void 0);
39
+ __decorate([
40
+ Column({
41
+ length: 30,
42
+ }),
43
+ __metadata("design:type", String)
44
+ ], ObservationEntity.prototype, "toChain", void 0);
45
+ __decorate([
46
+ Column(),
47
+ __metadata("design:type", String)
48
+ ], ObservationEntity.prototype, "fromAddress", void 0);
49
+ __decorate([
50
+ Column(),
51
+ __metadata("design:type", String)
52
+ ], ObservationEntity.prototype, "toAddress", void 0);
53
+ __decorate([
54
+ Column(),
55
+ __metadata("design:type", Number)
56
+ ], ObservationEntity.prototype, "height", void 0);
57
+ __decorate([
58
+ Column(),
59
+ __metadata("design:type", String)
60
+ ], ObservationEntity.prototype, "amount", void 0);
61
+ __decorate([
62
+ Column(),
63
+ __metadata("design:type", String)
64
+ ], ObservationEntity.prototype, "networkFee", void 0);
65
+ __decorate([
66
+ Column(),
67
+ __metadata("design:type", String)
68
+ ], ObservationEntity.prototype, "bridgeFee", void 0);
69
+ __decorate([
70
+ Column(),
71
+ __metadata("design:type", String)
72
+ ], ObservationEntity.prototype, "sourceChainTokenId", void 0);
73
+ __decorate([
74
+ Column(),
75
+ __metadata("design:type", String)
76
+ ], ObservationEntity.prototype, "targetChainTokenId", void 0);
77
+ __decorate([
78
+ Column(),
79
+ __metadata("design:type", String)
80
+ ], ObservationEntity.prototype, "sourceTxId", void 0);
81
+ __decorate([
82
+ Column(),
83
+ __metadata("design:type", String)
84
+ ], ObservationEntity.prototype, "sourceBlockId", void 0);
85
+ __decorate([
86
+ Column(),
87
+ __metadata("design:type", String)
88
+ ], ObservationEntity.prototype, "requestId", void 0);
89
+ __decorate([
90
+ Column(),
91
+ __metadata("design:type", String)
92
+ ], ObservationEntity.prototype, "block", void 0);
93
+ __decorate([
94
+ Column(),
95
+ __metadata("design:type", String)
96
+ ], ObservationEntity.prototype, "extractor", void 0);
97
+ ObservationEntity = __decorate([
98
+ Entity('observation_entity'),
99
+ Unique(['requestId', 'extractor'])
100
+ ], ObservationEntity);
101
+ export { ObservationEntity };
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YXRpb25FbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZW50aXRpZXMvb2JzZXJ2YXRpb25FbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJekYsSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBaUI7SUFFNUIsRUFBRSxDQUFTO0lBS1gsU0FBUyxDQUFTO0lBS2xCLE9BQU8sQ0FBUztJQUdoQixXQUFXLENBQVM7SUFHcEIsU0FBUyxDQUFTO0lBR2xCLE1BQU0sQ0FBUztJQUdmLE1BQU0sQ0FBUztJQUdmLFVBQVUsQ0FBUztJQUduQixTQUFTLENBQVM7SUFHbEIsa0JBQWtCLENBQVM7SUFHM0Isa0JBQWtCLENBQVM7SUFHM0IsVUFBVSxDQUFTO0lBR25CLGFBQWEsQ0FBUztJQUd0QixTQUFTLENBQVM7SUFHbEIsS0FBSyxDQUFTO0lBR2QsU0FBUyxDQUFTO0NBQ25CLENBQUE7QUFuREM7SUFBQyxzQkFBc0IsRUFBRTs7NkNBQ2Q7QUFFWDtJQUFDLE1BQU0sQ0FBQztRQUNOLE1BQU0sRUFBRSxFQUFFO0tBQ1gsQ0FBQzs7b0RBQ2dCO0FBRWxCO0lBQUMsTUFBTSxDQUFDO1FBQ04sTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDOztrREFDYztBQUVoQjtJQUFDLE1BQU0sRUFBRTs7c0RBQ1c7QUFFcEI7SUFBQyxNQUFNLEVBQUU7O29EQUNTO0FBRWxCO0lBQUMsTUFBTSxFQUFFOztpREFDTTtBQUVmO0lBQUMsTUFBTSxFQUFFOztpREFDTTtBQUVmO0lBQUMsTUFBTSxFQUFFOztxREFDVTtBQUVuQjtJQUFDLE1BQU0sRUFBRTs7b0RBQ1M7QUFFbEI7SUFBQyxNQUFNLEVBQUU7OzZEQUNrQjtBQUUzQjtJQUFDLE1BQU0sRUFBRTs7NkRBQ2tCO0FBRTNCO0lBQUMsTUFBTSxFQUFFOztxREFDVTtBQUVuQjtJQUFDLE1BQU0sRUFBRTs7d0RBQ2E7QUFFdEI7SUFBQyxNQUFNLEVBQUU7O29EQUNTO0FBRWxCO0lBQUMsTUFBTSxFQUFFOztnREFDSztBQUVkO0lBQUMsTUFBTSxFQUFFOztvREFDUztBQW5EUCxpQkFBaUI7SUFGN0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDO0lBQzVCLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztHQUN0QixpQkFBaUIsQ0FvRDdCO1NBcERZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbHVtbiwgRW50aXR5LCBQcmltYXJ5R2VuZXJhdGVkQ29sdW1uLCBVbmlxdWUgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuXG5ARW50aXR5KCdvYnNlcnZhdGlvbl9lbnRpdHknKVxuQFVuaXF1ZShbJ3JlcXVlc3RJZCcsICdleHRyYWN0b3InXSlcbmV4cG9ydCBjbGFzcyBPYnNlcnZhdGlvbkVudGl0eSB7XG4gIEBQcmltYXJ5R2VuZXJhdGVkQ29sdW1uKClcbiAgaWQ6IG51bWJlcjtcblxuICBAQ29sdW1uKHtcbiAgICBsZW5ndGg6IDMwLFxuICB9KVxuICBmcm9tQ2hhaW46IHN0cmluZztcblxuICBAQ29sdW1uKHtcbiAgICBsZW5ndGg6IDMwLFxuICB9KVxuICB0b0NoYWluOiBzdHJpbmc7XG5cbiAgQENvbHVtbigpXG4gIGZyb21BZGRyZXNzOiBzdHJpbmc7XG5cbiAgQENvbHVtbigpXG4gIHRvQWRkcmVzczogc3RyaW5nO1xuXG4gIEBDb2x1bW4oKVxuICBoZWlnaHQ6IG51bWJlcjtcblxuICBAQ29sdW1uKClcbiAgYW1vdW50OiBzdHJpbmc7XG5cbiAgQENvbHVtbigpXG4gIG5ldHdvcmtGZWU6IHN0cmluZztcblxuICBAQ29sdW1uKClcbiAgYnJpZGdlRmVlOiBzdHJpbmc7XG5cbiAgQENvbHVtbigpXG4gIHNvdXJjZUNoYWluVG9rZW5JZDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oKVxuICB0YXJnZXRDaGFpblRva2VuSWQ6IHN0cmluZztcblxuICBAQ29sdW1uKClcbiAgc291cmNlVHhJZDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oKVxuICBzb3VyY2VCbG9ja0lkOiBzdHJpbmc7XG5cbiAgQENvbHVtbigpXG4gIHJlcXVlc3RJZDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oKVxuICBibG9jazogc3RyaW5nO1xuXG4gIEBDb2x1bW4oKVxuICBleHRyYWN0b3I6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
2
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
3
+ import { TokenMap } from '@rosen-bridge/tokens';
4
+ import { AbstractRosenDataExtractor } from '@rosen-bridge/rosen-extractor';
5
+ import { Block } from '@rosen-bridge/scanner-interfaces';
6
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
7
+ import { ObservationEntityAction } from '../actions/db';
8
+ export declare abstract class AbstractObservationExtractor<TransactionType> extends AbstractExtractor<TransactionType> {
9
+ protected readonly logger: AbstractLogger;
10
+ protected readonly dataSource: DataSource;
11
+ protected readonly tokens: TokenMap;
12
+ protected readonly actions: ObservationEntityAction;
13
+ protected extractor: AbstractRosenDataExtractor<TransactionType>;
14
+ abstract readonly FROM_CHAIN: string;
15
+ constructor(dataSource: DataSource, tokens: TokenMap, extractor: AbstractRosenDataExtractor<TransactionType>, logger?: AbstractLogger);
16
+ /**
17
+ * gets Id for current extractor
18
+ */
19
+ abstract getId: () => string;
20
+ /**
21
+ * gets transaction id from TransactionType
22
+ */
23
+ abstract getTxId: (tx: TransactionType) => string;
24
+ /**
25
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
26
+ * transactions and in case of success return true and in case of failure returns false
27
+ * @param block
28
+ * @param txs
29
+ */
30
+ processTransactions: (txs: Array<TransactionType>, block: Block) => Promise<boolean>;
31
+ /**
32
+ * fork one block and remove all stored information for this block
33
+ * @param hash: block hash
34
+ */
35
+ forkBlock: (hash: string) => Promise<void>;
36
+ /**
37
+ * Extractor box initialization
38
+ * No action needed in observation extractors
39
+ */
40
+ initializeBoxes: () => Promise<void>;
41
+ }
42
+ //# sourceMappingURL=AbstractObservationExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractObservationExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/AbstractObservationExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGxD,8BAAsB,4BAA4B,CAChD,eAAe,CACf,SAAQ,iBAAiB,CAAC,eAAe,CAAC;IAC1C,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;IAUzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,MAAM,CAAC;IAElD;;;;;OAKG;IACH,mBAAmB,QACZ,MAAM,eAAe,CAAC,SACpB,KAAK,KACX,QAAQ,OAAO,CAAC,CAyBjB;IAEF;;;OAGG;IACH,SAAS,SAAgB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,eAAe,sBAEb;CACH"}
@@ -0,0 +1,65 @@
1
+ import { Buffer } from 'buffer';
2
+ import { blake2b } from 'blakejs';
3
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
4
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
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);
18
+ this.extractor = extractor;
19
+ }
20
+ /**
21
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
22
+ * transactions and in case of success return true and in case of failure returns false
23
+ * @param block
24
+ * @param txs
25
+ */
26
+ processTransactions = (txs, block) => {
27
+ const observations = [];
28
+ txs.forEach((transaction) => {
29
+ const data = this.extractor.get(transaction);
30
+ if (data) {
31
+ const requestId = Buffer.from(blake2b(this.getTxId(transaction), undefined, 32)).toString('hex');
32
+ observations.push({
33
+ fromChain: this.FROM_CHAIN,
34
+ toChain: data.toChain,
35
+ amount: data.amount,
36
+ sourceChainTokenId: data.sourceChainTokenId,
37
+ targetChainTokenId: data.targetChainTokenId,
38
+ sourceTxId: data.sourceTxId,
39
+ bridgeFee: data.bridgeFee,
40
+ networkFee: data.networkFee,
41
+ sourceBlockId: block.hash,
42
+ requestId: requestId,
43
+ toAddress: data.toAddress,
44
+ fromAddress: data.fromAddress,
45
+ });
46
+ }
47
+ });
48
+ return this.actions.storeObservations(observations, block, this.getId());
49
+ };
50
+ /**
51
+ * fork one block and remove all stored information for this block
52
+ * @param hash: block hash
53
+ */
54
+ forkBlock = async (hash) => {
55
+ await this.actions.deleteBlockObservation(hash, this.getId());
56
+ };
57
+ /**
58
+ * Extractor box initialization
59
+ * No action needed in observation extractors
60
+ */
61
+ initializeBoxes = async () => {
62
+ return;
63
+ };
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvQWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEQsTUFBTSxPQUFnQiw0QkFFcEIsU0FBUSxpQkFBa0M7SUFDdkIsTUFBTSxDQUFpQjtJQUN2QixVQUFVLENBQWE7SUFDdkIsTUFBTSxDQUFXO0lBQ2pCLE9BQU8sQ0FBMEI7SUFDMUMsU0FBUyxDQUE4QztJQUdqRSxZQUNFLFVBQXNCLEVBQ3RCLE1BQWdCLEVBQ2hCLFNBQXNELEVBQ3RELE1BQXVCO1FBRXZCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksdUJBQXVCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBWUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsR0FBRyxDQUNwQixHQUEyQixFQUMzQixLQUFZLEVBQ00sRUFBRTtRQUNwQixNQUFNLFlBQVksR0FBZ0MsRUFBRSxDQUFDO1FBQ3JELEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3QyxJQUFJLElBQUksRUFBRTtnQkFDUixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQ2xELENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixZQUFZLENBQUMsSUFBSSxDQUFDO29CQUNoQixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7b0JBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO29CQUMzQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO29CQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7b0JBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixhQUFhLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ3pCLFNBQVMsRUFBRSxTQUFTO29CQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDOUIsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFNBQVMsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFpQixFQUFFO1FBQ2hELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsZUFBZSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzNCLE9BQU87SUFDVCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IGJsYWtlMmIgfSBmcm9tICdibGFrZWpzJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IFRva2VuTWFwIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Jvc2VuLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0RXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1leHRyYWN0b3InO1xuaW1wb3J0IHsgT2JzZXJ2YXRpb25FbnRpdHlBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL2RiJztcbmltcG9ydCB7IEV4dHJhY3RlZE9ic2VydmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRPYnNlcnZhdGlvbic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yPFxuICBUcmFuc2FjdGlvblR5cGVcbj4gZXh0ZW5kcyBBYnN0cmFjdEV4dHJhY3RvcjxUcmFuc2FjdGlvblR5cGU+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhU291cmNlOiBEYXRhU291cmNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG9rZW5zOiBUb2tlbk1hcDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGlvbnM6IE9ic2VydmF0aW9uRW50aXR5QWN0aW9uO1xuICBwcm90ZWN0ZWQgZXh0cmFjdG9yOiBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxUcmFuc2FjdGlvblR5cGU+O1xuICBhYnN0cmFjdCByZWFkb25seSBGUk9NX0NIQUlOOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0b2tlbnM6IFRva2VuTWFwLFxuICAgIGV4dHJhY3RvcjogQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8VHJhbnNhY3Rpb25UeXBlPixcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIgPyBsb2dnZXIgOiBuZXcgRHVtbXlMb2dnZXIoKTtcbiAgICB0aGlzLmFjdGlvbnMgPSBuZXcgT2JzZXJ2YXRpb25FbnRpdHlBY3Rpb24oZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICAgIHRoaXMuZXh0cmFjdG9yID0gZXh0cmFjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldHMgSWQgZm9yIGN1cnJlbnQgZXh0cmFjdG9yXG4gICAqL1xuICBhYnN0cmFjdCBnZXRJZDogKCkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBnZXRzIHRyYW5zYWN0aW9uIGlkIGZyb20gVHJhbnNhY3Rpb25UeXBlXG4gICAqL1xuICBhYnN0cmFjdCBnZXRUeElkOiAodHg6IFRyYW5zYWN0aW9uVHlwZSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBnZXRzIGJsb2NrIGlkIGFuZCB0cmFuc2FjdGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2sgYW5kIHNhdmVzIGlmIHRoZXkgYXJlIHZhbGlkIHJvc2VuXG4gICAqICB0cmFuc2FjdGlvbnMgYW5kIGluIGNhc2Ugb2Ygc3VjY2VzcyByZXR1cm4gdHJ1ZSBhbmQgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHVybnMgZmFsc2VcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSB0eHNcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSAoXG4gICAgdHhzOiBBcnJheTxUcmFuc2FjdGlvblR5cGU+LFxuICAgIGJsb2NrOiBCbG9ja1xuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCBvYnNlcnZhdGlvbnM6IEFycmF5PEV4dHJhY3RlZE9ic2VydmF0aW9uPiA9IFtdO1xuICAgIHR4cy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZXh0cmFjdG9yLmdldCh0cmFuc2FjdGlvbik7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBjb25zdCByZXF1ZXN0SWQgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgICBibGFrZTJiKHRoaXMuZ2V0VHhJZCh0cmFuc2FjdGlvbiksIHVuZGVmaW5lZCwgMzIpXG4gICAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICBvYnNlcnZhdGlvbnMucHVzaCh7XG4gICAgICAgICAgZnJvbUNoYWluOiB0aGlzLkZST01fQ0hBSU4sXG4gICAgICAgICAgdG9DaGFpbjogZGF0YS50b0NoYWluLFxuICAgICAgICAgIGFtb3VudDogZGF0YS5hbW91bnQsXG4gICAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBkYXRhLnNvdXJjZUNoYWluVG9rZW5JZCxcbiAgICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IGRhdGEudGFyZ2V0Q2hhaW5Ub2tlbklkLFxuICAgICAgICAgIHNvdXJjZVR4SWQ6IGRhdGEuc291cmNlVHhJZCxcbiAgICAgICAgICBicmlkZ2VGZWU6IGRhdGEuYnJpZGdlRmVlLFxuICAgICAgICAgIG5ldHdvcmtGZWU6IGRhdGEubmV0d29ya0ZlZSxcbiAgICAgICAgICBzb3VyY2VCbG9ja0lkOiBibG9jay5oYXNoLFxuICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdElkLFxuICAgICAgICAgIHRvQWRkcmVzczogZGF0YS50b0FkZHJlc3MsXG4gICAgICAgICAgZnJvbUFkZHJlc3M6IGRhdGEuZnJvbUFkZHJlc3MsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmFjdGlvbnMuc3RvcmVPYnNlcnZhdGlvbnMob2JzZXJ2YXRpb25zLCBibG9jaywgdGhpcy5nZXRJZCgpKTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoOiBibG9jayBoYXNoXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb25zLmRlbGV0ZUJsb2NrT2JzZXJ2YXRpb24oaGFzaCwgdGhpcy5nZXRJZCgpKTtcbiAgfTtcblxuICAvKipcbiAgICogRXh0cmFjdG9yIGJveCBpbml0aWFsaXphdGlvblxuICAgKiBObyBhY3Rpb24gbmVlZGVkIGluIG9ic2VydmF0aW9uIGV4dHJhY3RvcnNcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jICgpID0+IHtcbiAgICByZXR1cm47XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import 'reflect-metadata';
2
+ export { AbstractObservationExtractor } from './extractor/AbstractObservationExtractor';
3
+ export { ObservationEntity } from './entities/observationEntity';
4
+ export { migrations } from './migrations/index';
5
+ export { ExtractedObservation } from './interfaces/extractedObservation';
6
+ export { ObservationEntityAction } from './actions/db';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ import 'reflect-metadata';
2
+ export { AbstractObservationExtractor } from './extractor/AbstractObservationExtractor';
3
+ export { ObservationEntity } from './entities/observationEntity';
4
+ export { migrations } from './migrations/index';
5
+ export { ObservationEntityAction } from './actions/db';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcblxuZXhwb3J0IHsgQWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3RvciB9IGZyb20gJy4vZXh0cmFjdG9yL0Fic3RyYWN0T2JzZXJ2YXRpb25FeHRyYWN0b3InO1xuZXhwb3J0IHsgT2JzZXJ2YXRpb25FbnRpdHkgfSBmcm9tICcuL2VudGl0aWVzL29ic2VydmF0aW9uRW50aXR5JztcbmV4cG9ydCB7IG1pZ3JhdGlvbnMgfSBmcm9tICcuL21pZ3JhdGlvbnMvaW5kZXgnO1xuZXhwb3J0IHsgRXh0cmFjdGVkT2JzZXJ2YXRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvZXh0cmFjdGVkT2JzZXJ2YXRpb24nO1xuZXhwb3J0IHsgT2JzZXJ2YXRpb25FbnRpdHlBY3Rpb24gfSBmcm9tICcuL2FjdGlvbnMvZGInO1xuIl19
@@ -0,0 +1,15 @@
1
+ export interface ExtractedObservation {
2
+ fromChain: string;
3
+ toChain: string;
4
+ networkFee: string;
5
+ bridgeFee: string;
6
+ amount: string;
7
+ sourceChainTokenId: string;
8
+ targetChainTokenId: string;
9
+ sourceTxId: string;
10
+ sourceBlockId: string;
11
+ requestId: string;
12
+ toAddress: string;
13
+ fromAddress: string;
14
+ }
15
+ //# sourceMappingURL=extractedObservation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractedObservation.d.ts","sourceRoot":"","sources":["../../lib/interfaces/extractedObservation.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdGVkT2JzZXJ2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW50ZXJmYWNlcy9leHRyYWN0ZWRPYnNlcnZhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0ZWRPYnNlcnZhdGlvbiB7XG4gIGZyb21DaGFpbjogc3RyaW5nO1xuICB0b0NoYWluOiBzdHJpbmc7XG4gIG5ldHdvcmtGZWU6IHN0cmluZztcbiAgYnJpZGdlRmVlOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBzb3VyY2VDaGFpblRva2VuSWQ6IHN0cmluZztcbiAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBzdHJpbmc7XG4gIHNvdXJjZVR4SWQ6IHN0cmluZztcbiAgc291cmNlQmxvY2tJZDogc3RyaW5nO1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgdG9BZGRyZXNzOiBzdHJpbmc7XG4gIGZyb21BZGRyZXNzOiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { migration1688545935708 } from './postgres/1688545935708-migration';
2
+ import { migration1688555621494 } from './sqlite/1688555621494-migration';
3
+ export declare const migrations: {
4
+ sqlite: (typeof migration1688555621494)[];
5
+ postgres: (typeof migration1688545935708)[];
6
+ };
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,eAAO,MAAM,UAAU;;;CAGtB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { migration1688545935708 } from './postgres/1688545935708-migration';
2
+ import { migration1688555621494 } from './sqlite/1688555621494-migration';
3
+ export const migrations = {
4
+ sqlite: [migration1688555621494],
5
+ postgres: [migration1688545935708],
6
+ };
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWlncmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTSxFQUFFLENBQUMsc0JBQXNCLENBQUM7SUFDaEMsUUFBUSxFQUFFLENBQUMsc0JBQXNCLENBQUM7Q0FDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1pZ3JhdGlvbjE2ODg1NDU5MzU3MDggfSBmcm9tICcuL3Bvc3RncmVzLzE2ODg1NDU5MzU3MDgtbWlncmF0aW9uJztcbmltcG9ydCB7IG1pZ3JhdGlvbjE2ODg1NTU2MjE0OTQgfSBmcm9tICcuL3NxbGl0ZS8xNjg4NTU1NjIxNDk0LW1pZ3JhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBtaWdyYXRpb25zID0ge1xuICBzcWxpdGU6IFttaWdyYXRpb24xNjg4NTU1NjIxNDk0XSxcbiAgcG9zdGdyZXM6IFttaWdyYXRpb24xNjg4NTQ1OTM1NzA4XSxcbn07XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from '@rosen-bridge/extended-typeorm';
2
+ export declare class migration1688545935708 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1688545935708-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1688545935708-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/postgres/1688545935708-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAEjF,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -0,0 +1,33 @@
1
+ export class migration1688545935708 {
2
+ name = 'migration1688545935708';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE TABLE "observation_entity" (
6
+ "id" SERIAL NOT NULL,
7
+ "fromChain" character varying(30) NOT NULL,
8
+ "toChain" character varying(30) NOT NULL,
9
+ "fromAddress" character varying NOT NULL,
10
+ "toAddress" character varying NOT NULL,
11
+ "height" integer NOT NULL,
12
+ "amount" character varying NOT NULL,
13
+ "networkFee" character varying NOT NULL,
14
+ "bridgeFee" character varying NOT NULL,
15
+ "sourceChainTokenId" character varying NOT NULL,
16
+ "targetChainTokenId" character varying NOT NULL,
17
+ "sourceTxId" character varying NOT NULL,
18
+ "sourceBlockId" character varying NOT NULL,
19
+ "requestId" character varying NOT NULL,
20
+ "block" character varying NOT NULL,
21
+ "extractor" character varying NOT NULL,
22
+ CONSTRAINT "UQ_a871fab5aa20b9306e13a057924" UNIQUE ("requestId", "extractor"),
23
+ CONSTRAINT "PK_1192341f36ee5eb313976dc1ae2" PRIMARY KEY ("id")
24
+ )
25
+ `);
26
+ }
27
+ async down(queryRunner) {
28
+ await queryRunner.query(`
29
+ DROP TABLE "observation_entity"
30
+ `);
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY4ODU0NTkzNTcwOC1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9wb3N0Z3Jlcy8xNjg4NTQ1OTM1NzA4LW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLElBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUV6QixLQUFLLENBQUMsRUFBRSxDQUFDLFdBQXdCO1FBQ3RDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBcUJuQixDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxXQUF3QjtRQUN4QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7O1NBRW5CLENBQUMsQ0FBQztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pZ3JhdGlvbkludGVyZmFjZSwgUXVlcnlSdW5uZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuXG5leHBvcnQgY2xhc3MgbWlncmF0aW9uMTY4ODU0NTkzNTcwOCBpbXBsZW1lbnRzIE1pZ3JhdGlvbkludGVyZmFjZSB7XG4gIG5hbWUgPSAnbWlncmF0aW9uMTY4ODU0NTkzNTcwOCc7XG5cbiAgcHVibGljIGFzeW5jIHVwKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSBcIm9ic2VydmF0aW9uX2VudGl0eVwiIChcbiAgICAgICAgICAgICAgICBcImlkXCIgU0VSSUFMIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZnJvbUNoYWluXCIgY2hhcmFjdGVyIHZhcnlpbmcoMzApIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidG9DaGFpblwiIGNoYXJhY3RlciB2YXJ5aW5nKDMwKSBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImZyb21BZGRyZXNzXCIgY2hhcmFjdGVyIHZhcnlpbmcgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJhbW91bnRcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcIm5ldHdvcmtGZWVcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiIGNoYXJhY3RlciB2YXJ5aW5nIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIgY2hhcmFjdGVyIHZhcnlpbmcgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZVR4SWRcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZUJsb2NrSWRcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInJlcXVlc3RJZFwiIGNoYXJhY3RlciB2YXJ5aW5nIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiIGNoYXJhY3RlciB2YXJ5aW5nIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIENPTlNUUkFJTlQgXCJVUV9hODcxZmFiNWFhMjBiOTMwNmUxM2EwNTc5MjRcIiBVTklRVUUgKFwicmVxdWVzdElkXCIsIFwiZXh0cmFjdG9yXCIpLFxuICAgICAgICAgICAgICAgIENPTlNUUkFJTlQgXCJQS18xMTkyMzQxZjM2ZWU1ZWIzMTM5NzZkYzFhZTJcIiBQUklNQVJZIEtFWSAoXCJpZFwiKVxuICAgICAgICAgICAgKVxuICAgICAgICBgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb3duKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIERST1AgVEFCTEUgXCJvYnNlcnZhdGlvbl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from '@rosen-bridge/extended-typeorm';
2
+ export declare class migration1688555621494 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1688555621494-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1688555621494-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/sqlite/1688555621494-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAEjF,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -0,0 +1,32 @@
1
+ export class migration1688555621494 {
2
+ name = 'migration1688555621494';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE TABLE "observation_entity" (
6
+ "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
7
+ "fromChain" varchar(30) NOT NULL,
8
+ "toChain" varchar(30) NOT NULL,
9
+ "fromAddress" varchar NOT NULL,
10
+ "toAddress" varchar NOT NULL,
11
+ "height" integer NOT NULL,
12
+ "amount" varchar NOT NULL,
13
+ "networkFee" varchar NOT NULL,
14
+ "bridgeFee" varchar NOT NULL,
15
+ "sourceChainTokenId" varchar NOT NULL,
16
+ "targetChainTokenId" varchar NOT NULL,
17
+ "sourceTxId" varchar NOT NULL,
18
+ "sourceBlockId" varchar NOT NULL,
19
+ "requestId" varchar NOT NULL,
20
+ "block" varchar NOT NULL,
21
+ "extractor" varchar NOT NULL,
22
+ CONSTRAINT "UQ_a871fab5aa20b9306e13a057924" UNIQUE ("requestId", "extractor")
23
+ )
24
+ `);
25
+ }
26
+ async down(queryRunner) {
27
+ await queryRunner.query(`
28
+ DROP TABLE "observation_entity"
29
+ `);
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY4ODU1NTYyMTQ5NC1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9zcWxpdGUvMTY4ODU1NTYyMTQ5NC1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFFekIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUF3QjtRQUN0QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBb0JuQixDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxXQUF3QjtRQUN4QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7O1NBRW5CLENBQUMsQ0FBQztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pZ3JhdGlvbkludGVyZmFjZSwgUXVlcnlSdW5uZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuXG5leHBvcnQgY2xhc3MgbWlncmF0aW9uMTY4ODU1NTYyMTQ5NCBpbXBsZW1lbnRzIE1pZ3JhdGlvbkludGVyZmFjZSB7XG4gIG5hbWUgPSAnbWlncmF0aW9uMTY4ODU1NTYyMTQ5NCc7XG5cbiAgcHVibGljIGFzeW5jIHVwKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSBcIm9ic2VydmF0aW9uX2VudGl0eVwiIChcbiAgICAgICAgICAgICAgICBcImlkXCIgaW50ZWdlciBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZnJvbUNoYWluXCIgdmFyY2hhcigzMCkgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIgdmFyY2hhcigzMCkgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJmcm9tQWRkcmVzc1wiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImFtb3VudFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpblRva2VuSWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0Q2hhaW5Ub2tlbklkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZVR4SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic291cmNlQmxvY2tJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJyZXF1ZXN0SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBDT05TVFJBSU5UIFwiVVFfYTg3MWZhYjVhYTIwYjkzMDZlMTNhMDU3OTI0XCIgVU5JUVVFIChcInJlcXVlc3RJZFwiLCBcImV4dHJhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICBgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb3duKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIERST1AgVEFCTEUgXCJvYnNlcnZhdGlvbl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgfVxufVxuIl19
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@rosen-bridge/abstract-observation-extractor",
3
+ "version": "0.1.0-52fc0239",
4
+ "description": "Event observation data extractor for different chains",
5
+ "author": "Rosen Team",
6
+ "license": "MIT",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "scripts": {
10
+ "prettify": "prettier --write . --ignore-path ../../.gitignore",
11
+ "lint": "eslint --fix . && npm run prettify",
12
+ "test": "jest --detectOpenHandles",
13
+ "coverage": "jest --detectOpenHandles --coverage",
14
+ "build": "tsc --build",
15
+ "type-check": "tsc --noEmit",
16
+ "release": "npm run test && npm run build && npm publish --access public"
17
+ },
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "dependencies": {
22
+ "@rosen-bridge/abstract-extractor": "^2.0.3-52fc0239",
23
+ "@rosen-bridge/abstract-logger": "^2.0.1",
24
+ "@rosen-bridge/rosen-extractor": "^8.0.1",
25
+ "@rosen-bridge/scanner-interfaces": "^0.1.1-52fc0239",
26
+ "@rosen-bridge/tokens": "^3.1.1",
27
+ "blakejs": "^1.2.1",
28
+ "reflect-metadata": "^0.1.13",
29
+ "sqlite3": "^5.1.7",
30
+ "@rosen-bridge/extended-typeorm": "^0.2.1"
31
+ },
32
+ "type": "module",
33
+ "devDependencies": {
34
+ "@babel/preset-env": "^7.19.0",
35
+ "@rosen-bridge/abstract-scanner": "^0.1.0-52fc0239",
36
+ "@types/jest": "^28.1.6",
37
+ "@types/node": "^22.18.0",
38
+ "@typescript-eslint/eslint-plugin": "^5.30.7",
39
+ "@typescript-eslint/parser": "^5.26.0",
40
+ "eslint": "^8.16.0",
41
+ "eslint-config-prettier": "^8.5.0",
42
+ "jest": "^28.1.3",
43
+ "prettier": "2.7.1",
44
+ "ts-jest": "^28.0.7",
45
+ "typescript": "^4.7.4"
46
+ },
47
+ "engines": {
48
+ "node": ">=22.18.0"
49
+ }
50
+ }