@rosen-bridge/ergo-scanner 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 +8 -0
- package/README.md +38 -0
- package/dist/ergoScanner.d.ts +7 -0
- package/dist/ergoScanner.d.ts.map +1 -0
- package/dist/ergoScanner.js +8 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/network/ergoExplorerNetwork.d.ts +25 -0
- package/dist/network/ergoExplorerNetwork.d.ts.map +1 -0
- package/dist/network/ergoExplorerNetwork.js +64 -0
- package/dist/network/ergoNodeNetwork.d.ts +25 -0
- package/dist/network/ergoNodeNetwork.d.ts.map +1 -0
- package/dist/network/ergoNodeNetwork.js +66 -0
- package/package.json +39 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# @rosen-bridge/ergo-scanner
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## 0.1.0
|
|
6
|
+
|
|
7
|
+
- This package was **extracted** from `@rosen-bridge/scanner`.
|
|
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/scanner/CHANGELOG.md).
|
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# @rosen-bridge/ergo-scanner
|
|
2
|
+
|
|
3
|
+
## Table of contents
|
|
4
|
+
|
|
5
|
+
- [Introduction](#introduction)
|
|
6
|
+
- [Installation](#installation)
|
|
7
|
+
|
|
8
|
+
## Introduction
|
|
9
|
+
|
|
10
|
+
An ergo blockchain scanner based on Node or Explorer API.
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
npm:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
npm i @rosen-bridge/ergo-scanner
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
yarn:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
yarn add @rosen-bridge/ergo-scanner
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Usage
|
|
27
|
+
|
|
28
|
+
Ergo Scanner:
|
|
29
|
+
|
|
30
|
+
```javascript
|
|
31
|
+
const ergoScannerConfig = {
|
|
32
|
+
nodeUrl: <node_url>,
|
|
33
|
+
timeout: <node_timeout>,
|
|
34
|
+
initialHeight: <ergo_initial_height>,
|
|
35
|
+
dataSource: dataSource,
|
|
36
|
+
}
|
|
37
|
+
scanner = new ErgoScanner(ergoScannerConfig);
|
|
38
|
+
```
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { GeneralScanner, ScannerConfig } from '@rosen-bridge/abstract-scanner';
|
|
2
|
+
import { Transaction } from '@rosen-bridge/scanner-interfaces';
|
|
3
|
+
declare class ErgoScanner extends GeneralScanner<Transaction> {
|
|
4
|
+
constructor(config: ScannerConfig<Transaction>);
|
|
5
|
+
}
|
|
6
|
+
export { ErgoScanner };
|
|
7
|
+
//# sourceMappingURL=ergoScanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ergoScanner.d.ts","sourceRoot":"","sources":["../lib/ergoScanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,cAAM,WAAY,SAAQ,cAAc,CAAC,WAAW,CAAC;gBACvC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC;CAW/C;AACD,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GeneralScanner } from '@rosen-bridge/abstract-scanner';
|
|
2
|
+
class ErgoScanner extends GeneralScanner {
|
|
3
|
+
constructor(config) {
|
|
4
|
+
super('ergo', config.dataSource, config.initialHeight, config.network, config.blockRetrieveGap, config.logger, config.suffix);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export { ErgoScanner };
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJnb1NjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvZXJnb1NjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUcvRSxNQUFNLFdBQVksU0FBUSxjQUEyQjtJQUNuRCxZQUFZLE1BQWtDO1FBQzVDLEtBQUssQ0FDSCxNQUFNLEVBQ04sTUFBTSxDQUFDLFVBQVUsRUFDakIsTUFBTSxDQUFDLGFBQWEsRUFDcEIsTUFBTSxDQUFDLE9BQU8sRUFDZCxNQUFNLENBQUMsZ0JBQWdCLEVBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FDZCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBQ0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VuZXJhbFNjYW5uZXIsIFNjYW5uZXJDb25maWcgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LXNjYW5uZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbmNsYXNzIEVyZ29TY2FubmVyIGV4dGVuZHMgR2VuZXJhbFNjYW5uZXI8VHJhbnNhY3Rpb24+IHtcbiAgY29uc3RydWN0b3IoY29uZmlnOiBTY2FubmVyQ29uZmlnPFRyYW5zYWN0aW9uPikge1xuICAgIHN1cGVyKFxuICAgICAgJ2VyZ28nLFxuICAgICAgY29uZmlnLmRhdGFTb3VyY2UsXG4gICAgICBjb25maWcuaW5pdGlhbEhlaWdodCxcbiAgICAgIGNvbmZpZy5uZXR3b3JrLFxuICAgICAgY29uZmlnLmJsb2NrUmV0cmlldmVHYXAsXG4gICAgICBjb25maWcubG9nZ2VyLFxuICAgICAgY29uZmlnLnN1ZmZpeFxuICAgICk7XG4gIH1cbn1cbmV4cG9ydCB7IEVyZ29TY2FubmVyIH07XG4iXX0=
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './ergoScanner';
|
|
2
|
+
export * from './network/ergoNodeNetwork';
|
|
3
|
+
export * from './network/ergoExplorerNetwork';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9lcmdvU2Nhbm5lcic7XG5leHBvcnQgKiBmcm9tICcuL25ldHdvcmsvZXJnb05vZGVOZXR3b3JrJztcbmV4cG9ydCAqIGZyb20gJy4vbmV0d29yay9lcmdvRXhwbG9yZXJOZXR3b3JrJztcbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AbstractNetworkConnector, Block, Transaction } from '@rosen-bridge/scanner-interfaces';
|
|
2
|
+
export declare class ErgoExplorerNetwork extends AbstractNetworkConnector<Transaction> {
|
|
3
|
+
private client;
|
|
4
|
+
constructor(explorerUrl: string);
|
|
5
|
+
/**
|
|
6
|
+
* get block at height.
|
|
7
|
+
* @param height
|
|
8
|
+
*/
|
|
9
|
+
getBlockAtHeight: (height: number) => Promise<Block>;
|
|
10
|
+
/**
|
|
11
|
+
* convert Explorer transaction to scanner transaction type
|
|
12
|
+
* @param tx
|
|
13
|
+
*/
|
|
14
|
+
private convertToTransaction;
|
|
15
|
+
/**
|
|
16
|
+
* get list of all block transactions
|
|
17
|
+
* @param blockHash
|
|
18
|
+
*/
|
|
19
|
+
getBlockTxs: (blockHash: string) => Promise<Array<Transaction>>;
|
|
20
|
+
/**
|
|
21
|
+
* get current height of blockchain
|
|
22
|
+
*/
|
|
23
|
+
getCurrentHeight: () => Promise<number>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ergoExplorerNetwork.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ergoExplorerNetwork.d.ts","sourceRoot":"","sources":["../../lib/network/ergoExplorerNetwork.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,KAAK,EACL,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAG1C,qBAAa,mBAAoB,SAAQ,wBAAwB,CAAC,WAAW,CAAC;IAC5E,OAAO,CAAC,MAAM,CAA+C;gBAEjD,WAAW,EAAE,MAAM;IAK/B;;;OAGG;IACH,gBAAgB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,CASvD;IAEF;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAqB1B;IAEF;;;OAGG;IACH,WAAW,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAIlE;IAEF;;OAEG;IACH,gBAAgB,QAAa,OAAO,CAAC,MAAM,CAAC,CAG1C;CACH"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { AbstractNetworkConnector, } from '@rosen-bridge/scanner-interfaces';
|
|
2
|
+
import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
|
|
3
|
+
export class ErgoExplorerNetwork extends AbstractNetworkConnector {
|
|
4
|
+
client;
|
|
5
|
+
constructor(explorerUrl) {
|
|
6
|
+
super();
|
|
7
|
+
this.client = ergoExplorerClientFactory(explorerUrl);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* get block at height.
|
|
11
|
+
* @param height
|
|
12
|
+
*/
|
|
13
|
+
getBlockAtHeight = async (height) => {
|
|
14
|
+
const blockIds = await this.client.v0.getApiV0BlocksAtP1(height);
|
|
15
|
+
const blockSummary = await this.client.v1.getApiV1BlocksP1(blockIds[0]);
|
|
16
|
+
return {
|
|
17
|
+
parentHash: blockSummary.block.header.parentId,
|
|
18
|
+
height: blockSummary.block.header.height,
|
|
19
|
+
timestamp: Number(blockSummary.block.header.timestamp / 1000n),
|
|
20
|
+
hash: blockSummary.block.header.id,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* convert Explorer transaction to scanner transaction type
|
|
25
|
+
* @param tx
|
|
26
|
+
*/
|
|
27
|
+
convertToTransaction = (tx) => {
|
|
28
|
+
return {
|
|
29
|
+
id: tx.id,
|
|
30
|
+
dataInputs: tx.dataInputs?.map((dataInput) => ({
|
|
31
|
+
boxId: dataInput.id,
|
|
32
|
+
})) ?? [],
|
|
33
|
+
// TODO: Add input extension to explorer local/ergo/rosen-bridge/scanner/-/issues/156
|
|
34
|
+
inputs: tx.inputs?.map((input) => ({ boxId: input.id })) ?? [],
|
|
35
|
+
outputs: tx.outputs?.map((output) => ({
|
|
36
|
+
boxId: output.id,
|
|
37
|
+
transactionId: output.txId,
|
|
38
|
+
additionalRegisters: output.additionalRegisters,
|
|
39
|
+
assets: output.assets || [],
|
|
40
|
+
ergoTree: output.ergoTree,
|
|
41
|
+
creationHeight: output.creationHeight,
|
|
42
|
+
index: output.index,
|
|
43
|
+
value: output.value,
|
|
44
|
+
})) ?? [],
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* get list of all block transactions
|
|
49
|
+
* @param blockHash
|
|
50
|
+
*/
|
|
51
|
+
getBlockTxs = async (blockHash) => {
|
|
52
|
+
const block = await this.client.v1.getApiV1BlocksP1(blockHash);
|
|
53
|
+
const transactions = block.block.blockTransactions || [];
|
|
54
|
+
return transactions.map(this.convertToTransaction);
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* get current height of blockchain
|
|
58
|
+
*/
|
|
59
|
+
getCurrentHeight = async () => {
|
|
60
|
+
const networkState = await this.client.v1.getApiV1Networkstate();
|
|
61
|
+
return Number(networkState.height);
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJnb0V4cGxvcmVyTmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9uZXR3b3JrL2VyZ29FeHBsb3Jlck5ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLHdCQUF3QixHQUd6QixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8seUJBQXlCLE1BQU0sOEJBQThCLENBQUM7QUFFckUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHdCQUFxQztJQUNwRSxNQUFNLENBQStDO0lBRTdELFlBQVksV0FBbUI7UUFDN0IsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFrQixFQUFFO1FBQzFELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxPQUFPO1lBQ0wsVUFBVSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFDOUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDeEMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQzlELElBQUksRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1NBQ25DLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSyxvQkFBb0IsR0FBRyxDQUFDLEVBQW9CLEVBQWUsRUFBRTtRQUNuRSxPQUFPO1lBQ0wsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ1QsVUFBVSxFQUNSLEVBQUUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7YUFDcEIsQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNYLHFGQUFxRjtZQUNyRixNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFO1lBQzlELE9BQU8sRUFDTCxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDM0IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNoQixhQUFhLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQzFCLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUI7Z0JBQy9DLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUU7Z0JBQzNCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtnQkFDekIsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjO2dCQUNyQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQ25CLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSzthQUNwQixDQUFDLENBQUMsSUFBSSxFQUFFO1NBQ1osQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQUUsU0FBaUIsRUFBK0IsRUFBRTtRQUNyRSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQ3pELE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILGdCQUFnQixHQUFHLEtBQUssSUFBcUIsRUFBRTtRQUM3QyxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDakUsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25JbmZvMSB9IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tZXhwbG9yZXIvZGlzdC9zcmMvdjEvdHlwZXMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3ROZXR3b3JrQ29ubmVjdG9yLFxuICBCbG9jayxcbiAgVHJhbnNhY3Rpb24sXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tZXhwbG9yZXInO1xuXG5leHBvcnQgY2xhc3MgRXJnb0V4cGxvcmVyTmV0d29yayBleHRlbmRzIEFic3RyYWN0TmV0d29ya0Nvbm5lY3RvcjxUcmFuc2FjdGlvbj4ge1xuICBwcml2YXRlIGNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgZXJnb0V4cGxvcmVyQ2xpZW50RmFjdG9yeT47XG5cbiAgY29uc3RydWN0b3IoZXhwbG9yZXJVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jbGllbnQgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KGV4cGxvcmVyVXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgYmxvY2sgYXQgaGVpZ2h0LlxuICAgKiBAcGFyYW0gaGVpZ2h0XG4gICAqL1xuICBnZXRCbG9ja0F0SGVpZ2h0ID0gYXN5bmMgKGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTxCbG9jaz4gPT4ge1xuICAgIGNvbnN0IGJsb2NrSWRzID0gYXdhaXQgdGhpcy5jbGllbnQudjAuZ2V0QXBpVjBCbG9ja3NBdFAxKGhlaWdodCk7XG4gICAgY29uc3QgYmxvY2tTdW1tYXJ5ID0gYXdhaXQgdGhpcy5jbGllbnQudjEuZ2V0QXBpVjFCbG9ja3NQMShibG9ja0lkc1swXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcmVudEhhc2g6IGJsb2NrU3VtbWFyeS5ibG9jay5oZWFkZXIucGFyZW50SWQsXG4gICAgICBoZWlnaHQ6IGJsb2NrU3VtbWFyeS5ibG9jay5oZWFkZXIuaGVpZ2h0LFxuICAgICAgdGltZXN0YW1wOiBOdW1iZXIoYmxvY2tTdW1tYXJ5LmJsb2NrLmhlYWRlci50aW1lc3RhbXAgLyAxMDAwbiksXG4gICAgICBoYXNoOiBibG9ja1N1bW1hcnkuYmxvY2suaGVhZGVyLmlkLFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgRXhwbG9yZXIgdHJhbnNhY3Rpb24gdG8gc2Nhbm5lciB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEBwYXJhbSB0eFxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0VG9UcmFuc2FjdGlvbiA9ICh0eDogVHJhbnNhY3Rpb25JbmZvMSk6IFRyYW5zYWN0aW9uID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHR4LmlkLFxuICAgICAgZGF0YUlucHV0czpcbiAgICAgICAgdHguZGF0YUlucHV0cz8ubWFwKChkYXRhSW5wdXQpID0+ICh7XG4gICAgICAgICAgYm94SWQ6IGRhdGFJbnB1dC5pZCxcbiAgICAgICAgfSkpID8/IFtdLFxuICAgICAgLy8gVE9ETzogQWRkIGlucHV0IGV4dGVuc2lvbiB0byBleHBsb3JlciBsb2NhbC9lcmdvL3Jvc2VuLWJyaWRnZS9zY2FubmVyLy0vaXNzdWVzLzE1NlxuICAgICAgaW5wdXRzOiB0eC5pbnB1dHM/Lm1hcCgoaW5wdXQpID0+ICh7IGJveElkOiBpbnB1dC5pZCB9KSkgPz8gW10sXG4gICAgICBvdXRwdXRzOlxuICAgICAgICB0eC5vdXRwdXRzPy5tYXAoKG91dHB1dCkgPT4gKHtcbiAgICAgICAgICBib3hJZDogb3V0cHV0LmlkLFxuICAgICAgICAgIHRyYW5zYWN0aW9uSWQ6IG91dHB1dC50eElkLFxuICAgICAgICAgIGFkZGl0aW9uYWxSZWdpc3RlcnM6IG91dHB1dC5hZGRpdGlvbmFsUmVnaXN0ZXJzLFxuICAgICAgICAgIGFzc2V0czogb3V0cHV0LmFzc2V0cyB8fCBbXSxcbiAgICAgICAgICBlcmdvVHJlZTogb3V0cHV0LmVyZ29UcmVlLFxuICAgICAgICAgIGNyZWF0aW9uSGVpZ2h0OiBvdXRwdXQuY3JlYXRpb25IZWlnaHQsXG4gICAgICAgICAgaW5kZXg6IG91dHB1dC5pbmRleCxcbiAgICAgICAgICB2YWx1ZTogb3V0cHV0LnZhbHVlLFxuICAgICAgICB9KSkgPz8gW10sXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgYWxsIGJsb2NrIHRyYW5zYWN0aW9uc1xuICAgKiBAcGFyYW0gYmxvY2tIYXNoXG4gICAqL1xuICBnZXRCbG9ja1R4cyA9IGFzeW5jIChibG9ja0hhc2g6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8VHJhbnNhY3Rpb24+PiA9PiB7XG4gICAgY29uc3QgYmxvY2sgPSBhd2FpdCB0aGlzLmNsaWVudC52MS5nZXRBcGlWMUJsb2Nrc1AxKGJsb2NrSGFzaCk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25zID0gYmxvY2suYmxvY2suYmxvY2tUcmFuc2FjdGlvbnMgfHwgW107XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9ucy5tYXAodGhpcy5jb252ZXJ0VG9UcmFuc2FjdGlvbik7XG4gIH07XG5cbiAgLyoqXG4gICAqIGdldCBjdXJyZW50IGhlaWdodCBvZiBibG9ja2NoYWluXG4gICAqL1xuICBnZXRDdXJyZW50SGVpZ2h0ID0gYXN5bmMgKCk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gICAgY29uc3QgbmV0d29ya1N0YXRlID0gYXdhaXQgdGhpcy5jbGllbnQudjEuZ2V0QXBpVjFOZXR3b3Jrc3RhdGUoKTtcbiAgICByZXR1cm4gTnVtYmVyKG5ldHdvcmtTdGF0ZS5oZWlnaHQpO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AbstractNetworkConnector, Block, Transaction } from '@rosen-bridge/scanner-interfaces';
|
|
2
|
+
export declare class ErgoNodeNetwork extends AbstractNetworkConnector<Transaction> {
|
|
3
|
+
private client;
|
|
4
|
+
constructor(nodeUrl: string);
|
|
5
|
+
/**
|
|
6
|
+
* get block at height.
|
|
7
|
+
* @param height
|
|
8
|
+
*/
|
|
9
|
+
getBlockAtHeight: (height: number) => Promise<Block>;
|
|
10
|
+
/**
|
|
11
|
+
* convert Node transaction to scanner transaction type
|
|
12
|
+
* @param tx
|
|
13
|
+
*/
|
|
14
|
+
private convertNodeTransactionToTransaction;
|
|
15
|
+
/**
|
|
16
|
+
* get list of all block transactions
|
|
17
|
+
* @param blockHash
|
|
18
|
+
*/
|
|
19
|
+
getBlockTxs: (blockHash: string) => Promise<Array<Transaction>>;
|
|
20
|
+
/**
|
|
21
|
+
* get current height of blockchain
|
|
22
|
+
*/
|
|
23
|
+
getCurrentHeight: () => Promise<number>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ergoNodeNetwork.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ergoNodeNetwork.d.ts","sourceRoot":"","sources":["../../lib/network/ergoNodeNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,KAAK,EACL,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAK1C,qBAAa,eAAgB,SAAQ,wBAAwB,CAAC,WAAW,CAAC;IACxE,OAAO,CAAC,MAAM,CAA2C;gBAC7C,OAAO,EAAE,MAAM;IAK3B;;;OAGG;IACH,gBAAgB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,CAYvD;IAEF;;;OAGG;IACH,OAAO,CAAC,mCAAmC,CAqBzC;IAEF;;;OAGG;IACH,WAAW,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAOlE;IAEF;;OAEG;IACH,gBAAgB,QAAa,OAAO,CAAC,MAAM,CAAC,CAG1C;CACH"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { AbstractNetworkConnector, } from '@rosen-bridge/scanner-interfaces';
|
|
2
|
+
import ergoNodeClientFactory from '@rosen-clients/ergo-node';
|
|
3
|
+
export class ErgoNodeNetwork extends AbstractNetworkConnector {
|
|
4
|
+
client;
|
|
5
|
+
constructor(nodeUrl) {
|
|
6
|
+
super();
|
|
7
|
+
this.client = ergoNodeClientFactory(nodeUrl);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* get block at height.
|
|
11
|
+
* @param height
|
|
12
|
+
*/
|
|
13
|
+
getBlockAtHeight = async (height) => {
|
|
14
|
+
const blocks = await this.client.getChainSlice({
|
|
15
|
+
fromHeight: height,
|
|
16
|
+
toHeight: height,
|
|
17
|
+
});
|
|
18
|
+
const block = blocks[0];
|
|
19
|
+
return {
|
|
20
|
+
hash: block.id,
|
|
21
|
+
height: block.height,
|
|
22
|
+
parentHash: block.parentId,
|
|
23
|
+
timestamp: Number(block.timestamp / 1000n),
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* convert Node transaction to scanner transaction type
|
|
28
|
+
* @param tx
|
|
29
|
+
*/
|
|
30
|
+
convertNodeTransactionToTransaction = (tx) => {
|
|
31
|
+
return {
|
|
32
|
+
id: tx.id || '',
|
|
33
|
+
outputs: tx.outputs.map((output) => ({
|
|
34
|
+
transactionId: output.transactionId || '',
|
|
35
|
+
index: output.index || 0,
|
|
36
|
+
value: output.value || 0n,
|
|
37
|
+
ergoTree: output.ergoTree || '',
|
|
38
|
+
creationHeight: output.creationHeight || 0,
|
|
39
|
+
assets: output.assets || [],
|
|
40
|
+
additionalRegisters: output.additionalRegisters,
|
|
41
|
+
boxId: output.boxId || '',
|
|
42
|
+
})),
|
|
43
|
+
inputs: tx.inputs.map((input) => ({
|
|
44
|
+
boxId: input.boxId,
|
|
45
|
+
extension: input.spendingProof.extension,
|
|
46
|
+
})),
|
|
47
|
+
dataInputs: tx.dataInputs,
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* get list of all block transactions
|
|
52
|
+
* @param blockHash
|
|
53
|
+
*/
|
|
54
|
+
getBlockTxs = async (blockHash) => {
|
|
55
|
+
const blockTransaction = await this.client.getBlockTransactionsById(blockHash);
|
|
56
|
+
return blockTransaction.transactions.map(this.convertNodeTransactionToTransaction);
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* get current height of blockchain
|
|
60
|
+
*/
|
|
61
|
+
getCurrentHeight = async () => {
|
|
62
|
+
const info = await this.client.getNodeInfo();
|
|
63
|
+
return info.fullHeight || 0;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJnb05vZGVOZXR3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL25ldHdvcmsvZXJnb05vZGVOZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx3QkFBd0IsR0FHekIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLHFCQUVOLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsd0JBQXFDO0lBQ2hFLE1BQU0sQ0FBMkM7SUFDekQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLE1BQWMsRUFBa0IsRUFBRTtRQUMxRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQzdDLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFFBQVEsRUFBRSxNQUFNO1NBQ2pCLENBQUMsQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixPQUFPO1lBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2QsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUMxQixTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQzNDLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSyxtQ0FBbUMsR0FBRyxDQUM1QyxFQUFtQixFQUNOLEVBQUU7UUFDZixPQUFPO1lBQ0wsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRTtZQUNmLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLElBQUksRUFBRTtnQkFDekMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQztnQkFDeEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRTtnQkFDL0IsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLElBQUksQ0FBQztnQkFDMUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRTtnQkFDM0IsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQjtnQkFDL0MsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTthQUMxQixDQUFDLENBQUM7WUFDSCxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUzthQUN6QyxDQUFDLENBQUM7WUFDSCxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVU7U0FDMUIsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQUUsU0FBaUIsRUFBK0IsRUFBRTtRQUNyRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FDakUsU0FBUyxDQUNWLENBQUM7UUFDRixPQUFPLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ3RDLElBQUksQ0FBQyxtQ0FBbUMsQ0FDekMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxJQUFxQixFQUFFO1FBQzdDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWJzdHJhY3ROZXR3b3JrQ29ubmVjdG9yLFxuICBCbG9jayxcbiAgVHJhbnNhY3Rpb24sXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCBlcmdvTm9kZUNsaWVudEZhY3RvcnksIHtcbiAgRXJnb1RyYW5zYWN0aW9uLFxufSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLW5vZGUnO1xuXG5leHBvcnQgY2xhc3MgRXJnb05vZGVOZXR3b3JrIGV4dGVuZHMgQWJzdHJhY3ROZXR3b3JrQ29ubmVjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHByaXZhdGUgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBlcmdvTm9kZUNsaWVudEZhY3Rvcnk+O1xuICBjb25zdHJ1Y3Rvcihub2RlVXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY2xpZW50ID0gZXJnb05vZGVDbGllbnRGYWN0b3J5KG5vZGVVcmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBibG9jayBhdCBoZWlnaHQuXG4gICAqIEBwYXJhbSBoZWlnaHRcbiAgICovXG4gIGdldEJsb2NrQXRIZWlnaHQgPSBhc3luYyAoaGVpZ2h0OiBudW1iZXIpOiBQcm9taXNlPEJsb2NrPiA9PiB7XG4gICAgY29uc3QgYmxvY2tzID0gYXdhaXQgdGhpcy5jbGllbnQuZ2V0Q2hhaW5TbGljZSh7XG4gICAgICBmcm9tSGVpZ2h0OiBoZWlnaHQsXG4gICAgICB0b0hlaWdodDogaGVpZ2h0LFxuICAgIH0pO1xuICAgIGNvbnN0IGJsb2NrID0gYmxvY2tzWzBdO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNoOiBibG9jay5pZCxcbiAgICAgIGhlaWdodDogYmxvY2suaGVpZ2h0LFxuICAgICAgcGFyZW50SGFzaDogYmxvY2sucGFyZW50SWQsXG4gICAgICB0aW1lc3RhbXA6IE51bWJlcihibG9jay50aW1lc3RhbXAgLyAxMDAwbiksXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogY29udmVydCBOb2RlIHRyYW5zYWN0aW9uIHRvIHNjYW5uZXIgdHJhbnNhY3Rpb24gdHlwZVxuICAgKiBAcGFyYW0gdHhcbiAgICovXG4gIHByaXZhdGUgY29udmVydE5vZGVUcmFuc2FjdGlvblRvVHJhbnNhY3Rpb24gPSAoXG4gICAgdHg6IEVyZ29UcmFuc2FjdGlvblxuICApOiBUcmFuc2FjdGlvbiA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0eC5pZCB8fCAnJyxcbiAgICAgIG91dHB1dHM6IHR4Lm91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICAgIHRyYW5zYWN0aW9uSWQ6IG91dHB1dC50cmFuc2FjdGlvbklkIHx8ICcnLFxuICAgICAgICBpbmRleDogb3V0cHV0LmluZGV4IHx8IDAsXG4gICAgICAgIHZhbHVlOiBvdXRwdXQudmFsdWUgfHwgMG4sXG4gICAgICAgIGVyZ29UcmVlOiBvdXRwdXQuZXJnb1RyZWUgfHwgJycsXG4gICAgICAgIGNyZWF0aW9uSGVpZ2h0OiBvdXRwdXQuY3JlYXRpb25IZWlnaHQgfHwgMCxcbiAgICAgICAgYXNzZXRzOiBvdXRwdXQuYXNzZXRzIHx8IFtdLFxuICAgICAgICBhZGRpdGlvbmFsUmVnaXN0ZXJzOiBvdXRwdXQuYWRkaXRpb25hbFJlZ2lzdGVycyxcbiAgICAgICAgYm94SWQ6IG91dHB1dC5ib3hJZCB8fCAnJyxcbiAgICAgIH0pKSxcbiAgICAgIGlucHV0czogdHguaW5wdXRzLm1hcCgoaW5wdXQpID0+ICh7XG4gICAgICAgIGJveElkOiBpbnB1dC5ib3hJZCxcbiAgICAgICAgZXh0ZW5zaW9uOiBpbnB1dC5zcGVuZGluZ1Byb29mLmV4dGVuc2lvbixcbiAgICAgIH0pKSxcbiAgICAgIGRhdGFJbnB1dHM6IHR4LmRhdGFJbnB1dHMsXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgYWxsIGJsb2NrIHRyYW5zYWN0aW9uc1xuICAgKiBAcGFyYW0gYmxvY2tIYXNoXG4gICAqL1xuICBnZXRCbG9ja1R4cyA9IGFzeW5jIChibG9ja0hhc2g6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8VHJhbnNhY3Rpb24+PiA9PiB7XG4gICAgY29uc3QgYmxvY2tUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMuY2xpZW50LmdldEJsb2NrVHJhbnNhY3Rpb25zQnlJZChcbiAgICAgIGJsb2NrSGFzaFxuICAgICk7XG4gICAgcmV0dXJuIGJsb2NrVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zLm1hcChcbiAgICAgIHRoaXMuY29udmVydE5vZGVUcmFuc2FjdGlvblRvVHJhbnNhY3Rpb25cbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZXQgY3VycmVudCBoZWlnaHQgb2YgYmxvY2tjaGFpblxuICAgKi9cbiAgZ2V0Q3VycmVudEhlaWdodCA9IGFzeW5jICgpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICAgIGNvbnN0IGluZm8gPSBhd2FpdCB0aGlzLmNsaWVudC5nZXROb2RlSW5mbygpO1xuICAgIHJldHVybiBpbmZvLmZ1bGxIZWlnaHQgfHwgMDtcbiAgfTtcbn1cbiJdfQ==
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rosen-bridge/ergo-scanner",
|
|
3
|
+
"version": "0.1.0-52fc0239",
|
|
4
|
+
"description": "An Ergo chain scanner.",
|
|
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
|
+
"lint": "eslint --fix . && npm run prettify",
|
|
21
|
+
"prettify": "prettier --write . --ignore-path ./.gitignore",
|
|
22
|
+
"release": "npm run test -- --run && npm run build && npm publish --access public",
|
|
23
|
+
"type-check": "tsc --noEmit"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^22.18.0",
|
|
27
|
+
"tsx": "^4.19.4",
|
|
28
|
+
"typescript": "^5.3.3"
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=22.18.0"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@rosen-bridge/abstract-scanner": "^0.1.0-52fc0239",
|
|
35
|
+
"@rosen-bridge/scanner-interfaces": "^0.1.1-52fc0239",
|
|
36
|
+
"@rosen-clients/ergo-explorer": "^1.1.5",
|
|
37
|
+
"@rosen-clients/ergo-node": "^1.2.3"
|
|
38
|
+
}
|
|
39
|
+
}
|