@rosen-bridge/ergo-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/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # @rosen-bridge/ergo-observation-extractor
2
+
3
+ ---
4
+
5
+ ## 0.1.0
6
+
7
+ - This package was **extracted** from `@rosen-bridge/observation-extractor`.
8
+ You can follow the previous history in the old package’s changelog. The last changelog update is available [here](https://github.com/rosen-bridge/scanner/blob/d4a5539b01c523b101104470b03ff7023a10b70b/packages/observation-extractor/CHANGELOG.md).
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # @rosen-bridge/ergo-observation-extractor
2
+
3
+ ## Table of contents
4
+
5
+ - [Introduction](#introduction)
6
+ - [Installation](#installation)
7
+
8
+ ## Introduction
9
+
10
+ Event observation data extractor for Ergo chain.
11
+
12
+ ## Installation
13
+
14
+ npm:
15
+
16
+ ```sh
17
+ npm i @rosen-bridge/ergo-observation-extractor
18
+ ```
19
+
20
+ yarn:
21
+
22
+ ```sh
23
+ yarn add @rosen-bridge/ergo-observation-extractor
24
+ ```
@@ -0,0 +1,3 @@
1
+ export declare const ERGO_NATIVE_TOKEN = "erg";
2
+ export declare const NUMBER_OF_BLOCKS_PER_YEAR: number;
3
+ //# sourceMappingURL=const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,yBAAyB,QAAgB,CAAC"}
package/dist/const.js ADDED
@@ -0,0 +1,3 @@
1
+ export const ERGO_NATIVE_TOKEN = 'erg';
2
+ export const NUMBER_OF_BLOCKS_PER_YEAR = 30 * 24 * 365;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVSR09fTkFUSVZFX1RPS0VOID0gJ2VyZyc7XG5leHBvcnQgY29uc3QgTlVNQkVSX09GX0JMT0NLU19QRVJfWUVBUiA9IDMwICogMjQgKiAzNjU7XG4iXX0=
@@ -0,0 +1,34 @@
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 { Block, Transaction } from '@rosen-bridge/scanner-interfaces';
5
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
6
+ export declare class ErgoObservationExtractor extends AbstractExtractor<Transaction> {
7
+ readonly logger: AbstractLogger;
8
+ private readonly actions;
9
+ private readonly extractor;
10
+ static readonly FROM_CHAIN: string;
11
+ constructor(dataSource: DataSource, tokens: TokenMap, address: string, logger?: AbstractLogger);
12
+ /**
13
+ * get Id for current extractor
14
+ */
15
+ getId: () => string;
16
+ /**
17
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
18
+ * transactions and in case of success return true and in case of failure returns false
19
+ * @param txs
20
+ * @param block
21
+ */
22
+ processTransactions: (txs: Array<Transaction>, block: Block) => Promise<boolean>;
23
+ /**
24
+ * fork one block and remove all stored information for this block
25
+ * @param hash: block hash
26
+ */
27
+ forkBlock: (hash: string) => Promise<void>;
28
+ /**
29
+ * Extractor box initialization
30
+ * No action needed in cardano extractors
31
+ */
32
+ initializeBoxes: () => Promise<void>;
33
+ }
34
+ //# sourceMappingURL=ergoExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ergoExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/ergoExtractor.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;AAEhD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAKrE,qBAAa,wBAAyB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IAC1E,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAU;gBAG1C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc;IAQzB;;OAEG;IACH,KAAK,eAAsC;IAE3C;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,WAAW,CAAC,EACvB,OAAO,KAAK,KACX,OAAO,CAAC,OAAO,CAAC,CAwDjB;IAEF;;;OAGG;IACH,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,eAAe,sBAEb;CACH"}
@@ -0,0 +1,92 @@
1
+ import { Buffer } from 'buffer';
2
+ import { blake2b } from 'blakejs';
3
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
4
+ import { ErgoNodeRosenExtractor } from '@rosen-bridge/rosen-extractor';
5
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
6
+ import { ObservationEntityAction } from '@rosen-bridge/abstract-observation-extractor';
7
+ import { NUMBER_OF_BLOCKS_PER_YEAR } from '../const';
8
+ export class ErgoObservationExtractor extends AbstractExtractor {
9
+ logger;
10
+ actions;
11
+ extractor;
12
+ static FROM_CHAIN = 'ergo';
13
+ constructor(dataSource, tokens, address, logger) {
14
+ super();
15
+ this.logger = logger ? logger : new DummyLogger();
16
+ this.actions = new ObservationEntityAction(dataSource, this.logger);
17
+ this.extractor = new ErgoNodeRosenExtractor(address, tokens, this.logger);
18
+ }
19
+ /**
20
+ * get Id for current extractor
21
+ */
22
+ getId = () => 'ergo-observation-extractor';
23
+ /**
24
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
25
+ * transactions and in case of success return true and in case of failure returns false
26
+ * @param txs
27
+ * @param block
28
+ */
29
+ processTransactions = (txs, block) => {
30
+ return new Promise((resolve, reject) => {
31
+ try {
32
+ const observations = [];
33
+ txs.forEach((transaction) => {
34
+ for (let i = 0; i < transaction.outputs.length; i++) {
35
+ const box = transaction.outputs[i];
36
+ if (block.height - Number(box.creationHeight) >
37
+ NUMBER_OF_BLOCKS_PER_YEAR) {
38
+ this.logger.debug(`Skipping tx [${transaction.id}], box [${box.boxId}] creation_height [${box.creationHeight}] is more than a year ago [currentHeight: ${block.height}]`);
39
+ return;
40
+ }
41
+ }
42
+ const data = this.extractor.get(transaction);
43
+ if (data) {
44
+ const requestId = Buffer.from(blake2b(transaction.id, undefined, 32)).toString('hex');
45
+ observations.push({
46
+ fromChain: ErgoObservationExtractor.FROM_CHAIN,
47
+ toChain: data.toChain,
48
+ networkFee: data.networkFee,
49
+ bridgeFee: data.bridgeFee,
50
+ amount: data.amount,
51
+ sourceChainTokenId: data.sourceChainTokenId,
52
+ targetChainTokenId: data.targetChainTokenId,
53
+ sourceTxId: data.sourceTxId,
54
+ sourceBlockId: block.hash,
55
+ requestId: requestId,
56
+ toAddress: data.toAddress,
57
+ fromAddress: data.fromAddress,
58
+ });
59
+ }
60
+ });
61
+ this.actions
62
+ .storeObservations(observations, block, this.getId())
63
+ .then((status) => {
64
+ resolve(status);
65
+ })
66
+ .catch((e) => {
67
+ this.logger.error(`An error uncached exception occurred during store ergo observation: ${e}`);
68
+ reject(e);
69
+ });
70
+ }
71
+ catch (e) {
72
+ this.logger.error(`An error occurred while saving block ${block}: [${e}]`);
73
+ reject(e);
74
+ }
75
+ });
76
+ };
77
+ /**
78
+ * fork one block and remove all stored information for this block
79
+ * @param hash: block hash
80
+ */
81
+ forkBlock = async (hash) => {
82
+ await this.actions.deleteBlockObservation(hash, this.getId());
83
+ };
84
+ /**
85
+ * Extractor box initialization
86
+ * No action needed in cardano extractors
87
+ */
88
+ initializeBoxes = async () => {
89
+ return;
90
+ };
91
+ }
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJnb0V4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvZXJnb0V4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFckQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGlCQUE4QjtJQUNqRSxNQUFNLENBQWlCO0lBQ2YsT0FBTyxDQUEwQjtJQUNqQyxTQUFTLENBQXlCO0lBQ25ELE1BQU0sQ0FBVSxVQUFVLEdBQVcsTUFBTSxDQUFDO0lBRTVDLFlBQ0UsVUFBc0IsRUFDdEIsTUFBZ0IsRUFDaEIsT0FBZSxFQUNmLE1BQXVCO1FBRXZCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksdUJBQXVCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksc0JBQXNCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVEOztPQUVHO0lB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Q0FBQyxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsU0FBUyxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQWlCLEVBQUU7UUFDaEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxlQUFlLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDM0IsT0FBTztJQUNULENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IGJsYWtlMmIgfSBmcm9tICdibGFrZWpzJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IFRva2VuTWFwIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuaW1wb3J0IHsgRXJnb05vZGVSb3NlbkV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvcm9zZW4tZXh0cmFjdG9yJztcbmltcG9ydCB7IEJsb2NrLCBUcmFuc2FjdGlvbiB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0RXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1leHRyYWN0b3InO1xuaW1wb3J0IHsgRXh0cmFjdGVkT2JzZXJ2YXRpb24gfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBPYnNlcnZhdGlvbkVudGl0eUFjdGlvbiB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3Qtb2JzZXJ2YXRpb24tZXh0cmFjdG9yJztcbmltcG9ydCB7IE5VTUJFUl9PRl9CTE9DS1NfUEVSX1lFQVIgfSBmcm9tICcuLi9jb25zdCc7XG5cbmV4cG9ydCBjbGFzcyBFcmdvT2JzZXJ2YXRpb25FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdEV4dHJhY3RvcjxUcmFuc2FjdGlvbj4ge1xuICByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnM6IE9ic2VydmF0aW9uRW50aXR5QWN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4dHJhY3RvcjogRXJnb05vZGVSb3NlbkV4dHJhY3RvcjtcbiAgc3RhdGljIHJlYWRvbmx5IEZST01fQ0hBSU46IHN0cmluZyA9ICdlcmdvJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHRva2VuczogVG9rZW5NYXAsXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIgPyBsb2dnZXIgOiBuZXcgRHVtbXlMb2dnZXIoKTtcbiAgICB0aGlzLmFjdGlvbnMgPSBuZXcgT2JzZXJ2YXRpb25FbnRpdHlBY3Rpb24oZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICAgIHRoaXMuZXh0cmFjdG9yID0gbmV3IEVyZ29Ob2RlUm9zZW5FeHRyYWN0b3IoYWRkcmVzcywgdG9rZW5zLCB0aGlzLmxvZ2dlcik7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgZ2V0SWQgPSAoKSA9PiAnZXJnby1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuXG4gIC8qKlxuICAgKiBnZXRzIGJsb2NrIGlkIGFuZCB0cmFuc2FjdGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2sgYW5kIHNhdmVzIGlmIHRoZXkgYXJlIHZhbGlkIHJvc2VuXG4gICAqICB0cmFuc2FjdGlvbnMgYW5kIGluIGNhc2Ugb2Ygc3VjY2VzcyByZXR1cm4gdHJ1ZSBhbmQgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHVybnMgZmFsc2VcbiAgICogQHBhcmFtIHR4c1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSAoXG4gICAgdHhzOiBBcnJheTxUcmFuc2FjdGlvbj4sXG4gICAgYmxvY2s6IEJsb2NrXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBvYnNlcnZhdGlvbnM6IEFycmF5PEV4dHJhY3RlZE9ic2VydmF0aW9uPiA9IFtdO1xuICAgICAgICB0eHMuZm9yRWFjaCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyYW5zYWN0aW9uLm91dHB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGJveCA9IHRyYW5zYWN0aW9uLm91dHB1dHNbaV07XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGJsb2NrLmhlaWdodCAtIE51bWJlcihib3guY3JlYXRpb25IZWlnaHQpID5cbiAgICAgICAgICAgICAgTlVNQkVSX09GX0JMT0NLU19QRVJfWUVBUlxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICAgIGBTa2lwcGluZyB0eCBbJHt0cmFuc2FjdGlvbi5pZH1dLCBib3ggWyR7Ym94LmJveElkfV0gY3JlYXRpb25faGVpZ2h0IFske2JveC5jcmVhdGlvbkhlaWdodH1dIGlzIG1vcmUgdGhhbiBhIHllYXIgYWdvIFtjdXJyZW50SGVpZ2h0OiAke2Jsb2NrLmhlaWdodH1dYFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3Rvci5nZXQodHJhbnNhY3Rpb24pO1xuICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0SWQgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgICAgICAgYmxha2UyYih0cmFuc2FjdGlvbi5pZCwgdW5kZWZpbmVkLCAzMilcbiAgICAgICAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICAgICAgb2JzZXJ2YXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICBmcm9tQ2hhaW46IEVyZ29PYnNlcnZhdGlvbkV4dHJhY3Rvci5GUk9NX0NIQUlOLFxuICAgICAgICAgICAgICB0b0NoYWluOiBkYXRhLnRvQ2hhaW4sXG4gICAgICAgICAgICAgIG5ldHdvcmtGZWU6IGRhdGEubmV0d29ya0ZlZSxcbiAgICAgICAgICAgICAgYnJpZGdlRmVlOiBkYXRhLmJyaWRnZUZlZSxcbiAgICAgICAgICAgICAgYW1vdW50OiBkYXRhLmFtb3VudCxcbiAgICAgICAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBkYXRhLnNvdXJjZUNoYWluVG9rZW5JZCxcbiAgICAgICAgICAgICAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBkYXRhLnRhcmdldENoYWluVG9rZW5JZCxcbiAgICAgICAgICAgICAgc291cmNlVHhJZDogZGF0YS5zb3VyY2VUeElkLFxuICAgICAgICAgICAgICBzb3VyY2VCbG9ja0lkOiBibG9jay5oYXNoLFxuICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgdG9BZGRyZXNzOiBkYXRhLnRvQWRkcmVzcyxcbiAgICAgICAgICAgICAgZnJvbUFkZHJlc3M6IGRhdGEuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGlvbnNcbiAgICAgICAgICAuc3RvcmVPYnNlcnZhdGlvbnMob2JzZXJ2YXRpb25zLCBibG9jaywgdGhpcy5nZXRJZCgpKVxuICAgICAgICAgIC50aGVuKChzdGF0dXMpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3RhdHVzKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgIGBBbiBlcnJvciB1bmNhY2hlZCBleGNlcHRpb24gb2NjdXJyZWQgZHVyaW5nIHN0b3JlIGVyZ28gb2JzZXJ2YXRpb246ICR7ZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgc2F2aW5nIGJsb2NrICR7YmxvY2t9OiBbJHtlfV1gXG4gICAgICAgICk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoOiBibG9jayBoYXNoXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb25zLmRlbGV0ZUJsb2NrT2JzZXJ2YXRpb24oaGFzaCwgdGhpcy5nZXRJZCgpKTtcbiAgfTtcblxuICAvKipcbiAgICogRXh0cmFjdG9yIGJveCBpbml0aWFsaXphdGlvblxuICAgKiBObyBhY3Rpb24gbmVlZGVkIGluIGNhcmRhbm8gZXh0cmFjdG9yc1xuICAgKi9cbiAgaW5pdGlhbGl6ZUJveGVzID0gYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybjtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './extractor/ergoExtractor';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './extractor/ergoExtractor';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXh0cmFjdG9yL2VyZ29FeHRyYWN0b3InO1xuIl19
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@rosen-bridge/ergo-observation-extractor",
3
+ "version": "0.1.0-52fc0239",
4
+ "description": "Event observation data extractor for Ergo chain",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/rosen-bridge/scanner.git"
8
+ },
9
+ "license": "MIT",
10
+ "author": "Rosen Team",
11
+ "type": "module",
12
+ "main": "dist/index.js",
13
+ "types": "dist/index.d.ts",
14
+ "files": [
15
+ "dist",
16
+ "CHANGELOG.md"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc --build tsconfig.build.json",
20
+ "coverage": "npm run test -- --coverage",
21
+ "lint": "eslint --fix . && npm run prettify",
22
+ "prettify": "prettier --write . --ignore-path ./.gitignore",
23
+ "release": "npm run test -- --run && npm run build && npm publish --access public",
24
+ "test": "NODE_OPTIONS='--import tsx' vitest",
25
+ "type-check": "tsc --noEmit"
26
+ },
27
+ "devDependencies": {
28
+ "@types/node": "^22.18.0",
29
+ "@rosen-bridge/abstract-scanner": "^0.1.0-52fc0239",
30
+ "ergo-lib-wasm-nodejs": "^0.24.1",
31
+ "@rosen-bridge/json-bigint": "^0.1.0",
32
+ "@vitest/coverage-istanbul": "^3.1.4",
33
+ "tsx": "^4.19.4",
34
+ "typescript": "^5.3.3",
35
+ "vitest": "^3.1.4"
36
+ },
37
+ "dependencies": {
38
+ "@rosen-bridge/abstract-observation-extractor": "^0.1.0-52fc0239",
39
+ "@rosen-bridge/abstract-extractor": "^2.0.3-52fc0239",
40
+ "@rosen-bridge/abstract-logger": "^2.0.1",
41
+ "@rosen-bridge/rosen-extractor": "^8.0.1",
42
+ "@rosen-bridge/scanner-interfaces": "^0.1.1-52fc0239",
43
+ "@rosen-bridge/tokens": "^3.1.1",
44
+ "blakejs": "^1.2.1",
45
+ "@rosen-bridge/extended-typeorm": "^0.2.1"
46
+ },
47
+ "engines": {
48
+ "node": ">=22.18.0"
49
+ }
50
+ }