@rosen-bridge/ergo-observation-extractor 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# @rosen-bridge/ergo-observation-extractor
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- The observation extractor have been updated to follow the format defined in `abstract-observation-extractor`
|
|
8
|
+
- Update rosen-extractor version to the 10.1.0
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Fix package-lock and move typescript and types/node into root
|
|
13
|
+
- Update eslint and plugins:
|
|
14
|
+
- Apply new rules such as sort imports and file name
|
|
15
|
+
- Update dependencies
|
|
16
|
+
- @rosen-bridge/extended-typeorm@1.0.1
|
|
17
|
+
- @rosen-clients/rate-limited-axios@1.1.0
|
|
18
|
+
- @rosen-bridge/rosen-extractor@10.1.1
|
|
19
|
+
- @rosen-bridge/tokens@4.0.1
|
|
20
|
+
- @rosen-bridge/abstract-logger@3.0.1
|
|
21
|
+
- @rosen-bridge/json-bigint@1.1.0
|
|
22
|
+
- @rosen-clients/ergo-explorer@2.1.0
|
|
23
|
+
- @rosen-clients/ergo-node@3.1.0
|
|
24
|
+
- @rosen-bridge/abstract-observation-extractor@0.2.0
|
|
25
|
+
- @rosen-bridge/scanner-interfaces@0.2.1
|
|
26
|
+
|
|
27
|
+
## 0.1.2
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- Update dependencies
|
|
32
|
+
- @rosen-bridge/abstract-observation-extractor@0.1.2
|
|
33
|
+
- @rosen-bridge/abstract-extractor@2.1.1
|
|
34
|
+
- @rosen-bridge/extended-typeorm@1.0.0
|
|
35
|
+
- @rosen-bridge/tokens@4.0.0
|
|
36
|
+
- @rosen-bridge/rosen-extractor@10.0.0
|
|
37
|
+
- @rosen-bridge/abstract-logger@3.0.0
|
|
38
|
+
|
|
3
39
|
## 0.1.1
|
|
4
40
|
|
|
5
41
|
### Patch Changes
|
|
@@ -1,34 +1,22 @@
|
|
|
1
|
-
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
2
1
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
3
|
-
import {
|
|
2
|
+
import { AbstractObservationExtractor } from '@rosen-bridge/abstract-observation-extractor';
|
|
3
|
+
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
4
4
|
import { Block, Transaction } from '@rosen-bridge/scanner-interfaces';
|
|
5
|
-
import {
|
|
6
|
-
export declare class ErgoObservationExtractor extends
|
|
7
|
-
readonly
|
|
8
|
-
|
|
9
|
-
private readonly extractor;
|
|
10
|
-
static readonly FROM_CHAIN: string;
|
|
11
|
-
constructor(dataSource: DataSource, tokens: TokenMap, address: string, logger?: AbstractLogger);
|
|
5
|
+
import { TokenMap } from '@rosen-bridge/tokens';
|
|
6
|
+
export declare class ErgoObservationExtractor extends AbstractObservationExtractor<Transaction> {
|
|
7
|
+
readonly FROM_CHAIN: string;
|
|
8
|
+
constructor(lockAddress: string, dataSource: DataSource, tokens: TokenMap, logger?: AbstractLogger);
|
|
12
9
|
/**
|
|
13
10
|
* get Id for current extractor
|
|
14
11
|
*/
|
|
15
12
|
getId: () => string;
|
|
16
13
|
/**
|
|
17
|
-
* gets
|
|
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
|
|
14
|
+
* gets transaction id from TransactionType
|
|
26
15
|
*/
|
|
27
|
-
|
|
16
|
+
getTxId: (tx: Transaction) => string;
|
|
28
17
|
/**
|
|
29
|
-
*
|
|
30
|
-
* No action needed in cardano extractors
|
|
18
|
+
* Filter transactions before processing
|
|
31
19
|
*/
|
|
32
|
-
|
|
20
|
+
protected preprocessTransactions: (txs: Array<Transaction>, block: Block) => Transaction[];
|
|
33
21
|
}
|
|
34
22
|
//# sourceMappingURL=ergoExtractor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ergoExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/ergoExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ergoExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/ergoExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,qBAAa,wBAAyB,SAAQ,4BAA4B,CAAC,WAAW,CAAC;IACrF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAU;gBAGnC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,cAAc;IAUzB;;OAEG;IACH,KAAK,eAAsC;IAE3C;;OAEG;IACH,OAAO,GAAI,IAAI,WAAW,YAAW;IAErC;;OAEG;IACH,SAAS,CAAC,sBAAsB,GAC9B,KAAK,KAAK,CAAC,WAAW,CAAC,EACvB,OAAO,KAAK,mBAiBZ;CACH"}
|
|
@@ -1,92 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { blake2b } from 'blakejs';
|
|
3
|
-
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
1
|
+
import { AbstractObservationExtractor } from '@rosen-bridge/abstract-observation-extractor';
|
|
4
2
|
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
3
|
import { NUMBER_OF_BLOCKS_PER_YEAR } from '../const';
|
|
8
|
-
export class ErgoObservationExtractor extends
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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);
|
|
4
|
+
export class ErgoObservationExtractor extends AbstractObservationExtractor {
|
|
5
|
+
FROM_CHAIN = 'ergo';
|
|
6
|
+
constructor(lockAddress, dataSource, tokens, logger) {
|
|
7
|
+
super(dataSource, tokens, new ErgoNodeRosenExtractor(lockAddress, tokens, logger), logger);
|
|
18
8
|
}
|
|
19
9
|
/**
|
|
20
10
|
* get Id for current extractor
|
|
21
11
|
*/
|
|
22
12
|
getId = () => 'ergo-observation-extractor';
|
|
23
13
|
/**
|
|
24
|
-
* gets
|
|
25
|
-
* transactions and in case of success return true and in case of failure returns false
|
|
26
|
-
* @param txs
|
|
27
|
-
* @param block
|
|
14
|
+
* gets transaction id from TransactionType
|
|
28
15
|
*/
|
|
29
|
-
|
|
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
|
-
};
|
|
16
|
+
getTxId = (tx) => tx.id;
|
|
77
17
|
/**
|
|
78
|
-
*
|
|
79
|
-
* @param hash: block hash
|
|
18
|
+
* Filter transactions before processing
|
|
80
19
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
20
|
+
preprocessTransactions = (txs, block) => {
|
|
21
|
+
return txs.filter((transaction) => {
|
|
22
|
+
for (let i = 0; i < transaction.outputs.length; i++) {
|
|
23
|
+
const box = transaction.outputs[i];
|
|
24
|
+
if (block.height - Number(box.creationHeight) >
|
|
25
|
+
NUMBER_OF_BLOCKS_PER_YEAR) {
|
|
26
|
+
this.logger.debug(`Skipping tx [${transaction.id}], box [${box.boxId}] creation_height [${box.creationHeight}] is more than a year ago [currentHeight: ${block.height}]`);
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
});
|
|
90
32
|
};
|
|
91
33
|
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJnb0V4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvZXJnb0V4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUU1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFckQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLDRCQUF5QztJQUM1RSxVQUFVLEdBQVcsTUFBTSxDQUFDO0lBRXJDLFlBQ0UsV0FBbUIsRUFDbkIsVUFBc0IsRUFDdEIsTUFBZ0IsRUFDaEIsTUFBdUI7UUFFdkIsS0FBSyxDQUNILFVBQVUsRUFDVixNQUFNLEVBQ04sSUFBSSxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUN2RCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztJQUUzQzs7T0FFRztJQUNILE9BQU8sR0FBRyxDQUFDLEVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVyQzs7T0FFRztJQUNPLHNCQUFzQixHQUFHLENBQ2pDLEdBQXVCLEVBQ3ZCLEtBQVksRUFDWixFQUFFO1FBQ0YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3BELE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLElBQ0UsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztvQkFDekMseUJBQXlCLEVBQ3pCLENBQUM7b0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsZ0JBQWdCLFdBQVcsQ0FBQyxFQUFFLFdBQVcsR0FBRyxDQUFDLEtBQUssc0JBQXNCLEdBQUcsQ0FBQyxjQUFjLDZDQUE2QyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQ3ZKLENBQUM7b0JBQ0YsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IEFic3RyYWN0T2JzZXJ2YXRpb25FeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCB7IEVyZ29Ob2RlUm9zZW5FeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Jvc2VuLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBCbG9jaywgVHJhbnNhY3Rpb24gfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUb2tlbk1hcCB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvdG9rZW5zJztcblxuaW1wb3J0IHsgTlVNQkVSX09GX0JMT0NLU19QRVJfWUVBUiB9IGZyb20gJy4uL2NvbnN0JztcblxuZXhwb3J0IGNsYXNzIEVyZ29PYnNlcnZhdGlvbkV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0T2JzZXJ2YXRpb25FeHRyYWN0b3I8VHJhbnNhY3Rpb24+IHtcbiAgcmVhZG9ubHkgRlJPTV9DSEFJTjogc3RyaW5nID0gJ2VyZ28nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGxvY2tBZGRyZXNzOiBzdHJpbmcsXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0b2tlbnM6IFRva2VuTWFwLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGRhdGFTb3VyY2UsXG4gICAgICB0b2tlbnMsXG4gICAgICBuZXcgRXJnb05vZGVSb3NlbkV4dHJhY3Rvcihsb2NrQWRkcmVzcywgdG9rZW5zLCBsb2dnZXIpLFxuICAgICAgbG9nZ2VyLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgZ2V0SWQgPSAoKSA9PiAnZXJnby1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuXG4gIC8qKlxuICAgKiBnZXRzIHRyYW5zYWN0aW9uIGlkIGZyb20gVHJhbnNhY3Rpb25UeXBlXG4gICAqL1xuICBnZXRUeElkID0gKHR4OiBUcmFuc2FjdGlvbikgPT4gdHguaWQ7XG5cbiAgLyoqXG4gICAqIEZpbHRlciB0cmFuc2FjdGlvbnMgYmVmb3JlIHByb2Nlc3NpbmdcbiAgICovXG4gIHByb3RlY3RlZCBwcmVwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb24+LFxuICAgIGJsb2NrOiBCbG9jayxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIHR4cy5maWx0ZXIoKHRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyYW5zYWN0aW9uLm91dHB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYm94ID0gdHJhbnNhY3Rpb24ub3V0cHV0c1tpXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGJsb2NrLmhlaWdodCAtIE51bWJlcihib3guY3JlYXRpb25IZWlnaHQpID5cbiAgICAgICAgICBOVU1CRVJfT0ZfQkxPQ0tTX1BFUl9ZRUFSXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFNraXBwaW5nIHR4IFske3RyYW5zYWN0aW9uLmlkfV0sIGJveCBbJHtib3guYm94SWR9XSBjcmVhdGlvbl9oZWlnaHQgWyR7Ym94LmNyZWF0aW9uSGVpZ2h0fV0gaXMgbW9yZSB0aGFuIGEgeWVhciBhZ28gW2N1cnJlbnRIZWlnaHQ6ICR7YmxvY2suaGVpZ2h0fV1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rosen-bridge/ergo-observation-extractor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Event observation data extractor for Ergo chain",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,33 +17,32 @@
|
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
19
|
"build": "tsc --build tsconfig.build.json",
|
|
20
|
+
"clean": "rimraf dist && rimraf tsconfig.build.tsbuildinfo",
|
|
20
21
|
"coverage": "npm run test -- --coverage",
|
|
21
22
|
"lint": "eslint --fix . && npm run prettify",
|
|
22
|
-
"
|
|
23
|
-
"
|
|
23
|
+
"lint:check": "eslint . && npm run prettify:check",
|
|
24
|
+
"prettify": "prettier --write . --ignore-path ../../../.gitignore",
|
|
25
|
+
"prettify:check": "prettier --check . --ignore-path ../../../.gitignore",
|
|
26
|
+
"release": "npm run test -- --run && npm run clean && npm run build && npm publish --access public",
|
|
24
27
|
"test": "NODE_OPTIONS='--import tsx' vitest",
|
|
25
28
|
"type-check": "tsc --noEmit"
|
|
26
29
|
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@rosen-bridge/abstract-logger": "^3.0.1",
|
|
32
|
+
"@rosen-bridge/abstract-observation-extractor": "^0.2.0",
|
|
33
|
+
"@rosen-bridge/extended-typeorm": "^1.0.1",
|
|
34
|
+
"@rosen-bridge/rosen-extractor": "^10.1.1",
|
|
35
|
+
"@rosen-bridge/scanner-interfaces": "^0.2.1",
|
|
36
|
+
"@rosen-bridge/tokens": "^4.0.1"
|
|
37
|
+
},
|
|
27
38
|
"devDependencies": {
|
|
28
|
-
"@rosen-bridge/abstract-scanner": "^0.1
|
|
29
|
-
"@rosen-bridge/json-bigint": "^
|
|
30
|
-
"@types/node": "^22.18.0",
|
|
39
|
+
"@rosen-bridge/abstract-scanner": "^0.2.1",
|
|
40
|
+
"@rosen-bridge/json-bigint": "^1.1.0",
|
|
31
41
|
"@vitest/coverage-istanbul": "^3.1.4",
|
|
32
42
|
"ergo-lib-wasm-nodejs": "^0.24.1",
|
|
33
43
|
"tsx": "^4.19.4",
|
|
34
|
-
"typescript": "^5.3.3",
|
|
35
44
|
"vitest": "^3.1.4"
|
|
36
45
|
},
|
|
37
|
-
"dependencies": {
|
|
38
|
-
"@rosen-bridge/abstract-extractor": "^2.1.0",
|
|
39
|
-
"@rosen-bridge/abstract-logger": "^2.0.1",
|
|
40
|
-
"@rosen-bridge/abstract-observation-extractor": "^0.1.1",
|
|
41
|
-
"@rosen-bridge/extended-typeorm": "^0.2.1",
|
|
42
|
-
"@rosen-bridge/rosen-extractor": "^9.0.0",
|
|
43
|
-
"@rosen-bridge/scanner-interfaces": "^0.2.0",
|
|
44
|
-
"@rosen-bridge/tokens": "^3.1.1",
|
|
45
|
-
"blakejs": "^1.2.1"
|
|
46
|
-
},
|
|
47
46
|
"engines": {
|
|
48
47
|
"node": ">=22.18.0"
|
|
49
48
|
}
|