@rosen-bridge/raw-data-provider 0.1.0-0022763f → 0.1.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 +2 -2
- package/dist/abstractRawDataProvider.d.ts +12 -4
- package/dist/abstractRawDataProvider.d.ts.map +1 -1
- package/dist/abstractRawDataProvider.js +26 -4
- package/dist/actions/rawDataProviderStateEntityAction.d.ts +18 -1
- package/dist/actions/rawDataProviderStateEntityAction.d.ts.map +1 -1
- package/dist/actions/rawDataProviderStateEntityAction.js +36 -3
- package/dist/providers/bitcoin/bitcoinEsploraRawDataProvider.d.ts +11 -6
- package/dist/providers/bitcoin/bitcoinEsploraRawDataProvider.d.ts.map +1 -1
- package/dist/providers/bitcoin/bitcoinEsploraRawDataProvider.js +31 -17
- package/dist/providers/bitcoin/bitcoinRpcRawDataProvider.d.ts +8 -6
- package/dist/providers/bitcoin/bitcoinRpcRawDataProvider.d.ts.map +1 -1
- package/dist/providers/bitcoin/bitcoinRpcRawDataProvider.js +12 -12
- package/dist/providers/bitcoin/index.d.ts +1 -0
- package/dist/providers/bitcoin/index.d.ts.map +1 -1
- package/dist/providers/bitcoin/index.js +2 -1
- package/dist/providers/cardano/cardanoKoiosRawDataProvider.d.ts +5 -5
- package/dist/providers/cardano/cardanoKoiosRawDataProvider.d.ts.map +1 -1
- package/dist/providers/cardano/cardanoKoiosRawDataProvider.js +10 -18
- package/dist/providers/cardano/cardanoOgmiosRawDataProvider.d.ts +43 -0
- package/dist/providers/cardano/cardanoOgmiosRawDataProvider.d.ts.map +1 -0
- package/dist/providers/cardano/cardanoOgmiosRawDataProvider.js +112 -0
- package/dist/providers/cardano/index.d.ts +1 -0
- package/dist/providers/cardano/index.d.ts.map +1 -1
- package/dist/providers/cardano/index.js +2 -1
- package/dist/providers/doge/dogeRpcRawDataProvider.d.ts +5 -4
- package/dist/providers/doge/dogeRpcRawDataProvider.d.ts.map +1 -1
- package/dist/providers/doge/dogeRpcRawDataProvider.js +8 -12
- package/dist/providers/ergo/ergoExplorerRawDataProvider.d.ts +5 -4
- package/dist/providers/ergo/ergoExplorerRawDataProvider.d.ts.map +1 -1
- package/dist/providers/ergo/ergoExplorerRawDataProvider.js +12 -12
- package/dist/providers/ergo/ergoNodeRawDataProvider.d.ts +5 -4
- package/dist/providers/ergo/ergoNodeRawDataProvider.d.ts.map +1 -1
- package/dist/providers/ergo/ergoNodeRawDataProvider.js +14 -14
- package/dist/providers/evm/evmRawDataProvider.d.ts +6 -6
- package/dist/providers/evm/evmRawDataProvider.d.ts.map +1 -1
- package/dist/providers/evm/evmRawDataProvider.js +12 -20
- package/dist/providers/index.d.ts +0 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -2
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +18 -19
- package/dist/providers/bitcoinRunes/bitcoinRunesRpcRawDataProvider.d.ts +0 -21
- package/dist/providers/bitcoinRunes/bitcoinRunesRpcRawDataProvider.d.ts.map +0 -1
- package/dist/providers/bitcoinRunes/bitcoinRunesRpcRawDataProvider.js +0 -49
- package/dist/providers/bitcoinRunes/index.d.ts +0 -2
- package/dist/providers/bitcoinRunes/index.d.ts.map +0 -1
- package/dist/providers/bitcoinRunes/index.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
|
-
import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
|
|
2
|
+
import { AbstractObservationExtractor, ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
|
|
3
3
|
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
4
4
|
import { RawDataProviderStateEntityAction } from './actions/rawDataProviderStateEntityAction';
|
|
5
5
|
import { RawDataProviderStateEntity } from './entities';
|
|
6
|
-
export declare abstract class AbstractRawDataProvider {
|
|
6
|
+
export declare abstract class AbstractRawDataProvider<TxType> {
|
|
7
7
|
protected chain: string;
|
|
8
8
|
protected dataSource: DataSource;
|
|
9
|
+
protected extractor: AbstractObservationExtractor<TxType>;
|
|
9
10
|
protected logger: AbstractLogger;
|
|
10
11
|
protected action: RawDataProviderStateEntityAction;
|
|
11
|
-
constructor(chain: string, dataSource: DataSource, logger?: AbstractLogger);
|
|
12
|
+
constructor(chain: string, dataSource: DataSource, extractor: AbstractObservationExtractor<TxType>, logger?: AbstractLogger);
|
|
12
13
|
/**
|
|
13
14
|
* Retrieves the current RawDataProviderStateEntity for the configured chain.
|
|
14
15
|
*
|
|
@@ -22,13 +23,20 @@ export declare abstract class AbstractRawDataProvider {
|
|
|
22
23
|
* @returns void
|
|
23
24
|
*/
|
|
24
25
|
fillRawData: () => Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* fetch transactions related to the input observation parameter
|
|
28
|
+
*
|
|
29
|
+
* @param observation
|
|
30
|
+
* @returns { Promise<TxType[]> }
|
|
31
|
+
*/
|
|
32
|
+
protected abstract fetchObservationTxs: (observation: ObservationEntity) => Promise<TxType[] | undefined>;
|
|
25
33
|
/**
|
|
26
34
|
* Process observation and write rawData
|
|
27
35
|
*
|
|
28
36
|
* @param observation
|
|
29
37
|
* @return {boolean} determining result of process done successfully or no
|
|
30
38
|
*/
|
|
31
|
-
protected
|
|
39
|
+
protected processObservation: (observation: ObservationEntity) => Promise<boolean>;
|
|
32
40
|
/**
|
|
33
41
|
* Fills the raw data field for all ObservationEntity records of the current chain of input RawDataProviderStateEntity
|
|
34
42
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractRawDataProvider.d.ts","sourceRoot":"","sources":["../lib/abstractRawDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"abstractRawDataProvider.d.ts","sourceRoot":"","sources":["../lib/abstractRawDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,EAClB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,8BAAsB,uBAAuB,CAAC,MAAM;IAIhD,SAAS,CAAC,KAAK,EAAE,MAAM;IACvB,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,SAAS,EAAE,4BAA4B,CAAC,MAAM,CAAC;IACzD,SAAS,CAAC,MAAM,EAAE,cAAc;IANlC,SAAS,CAAC,MAAM,EAAE,gCAAgC,CAAC;gBAGvC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,4BAA4B,CAAC,MAAM,CAAC,EAC/C,MAAM,GAAE,cAAkC;IAQtD;;;;OAIG;IACH,SAAS,CAAC,0BAA0B,QACxB,OAAO,CAAC,0BAA0B,CAAC,CAuB3C;IAEJ;;;;;OAKG;IACH,WAAW,QAAa,OAAO,CAAC,IAAI,CAAC,CAwBnC;IAEF;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CACtC,WAAW,EAAE,iBAAiB,KAC3B,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACnC;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,GAAU,aAAa,iBAAiB,sBAgBlE;IAEF;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,GAC/B,OAAO,0BAA0B,KAChC,OAAO,CAAC,0BAA0B,CAAC,CAiCpC;CACH"}
|
|
@@ -3,13 +3,15 @@ import { RawDataProviderStateEntityAction } from './actions/rawDataProviderState
|
|
|
3
3
|
export class AbstractRawDataProvider {
|
|
4
4
|
chain;
|
|
5
5
|
dataSource;
|
|
6
|
+
extractor;
|
|
6
7
|
logger;
|
|
7
8
|
action;
|
|
8
|
-
constructor(chain, dataSource, logger = new DummyLogger()) {
|
|
9
|
+
constructor(chain, dataSource, extractor, logger = new DummyLogger()) {
|
|
9
10
|
this.chain = chain;
|
|
10
11
|
this.dataSource = dataSource;
|
|
12
|
+
this.extractor = extractor;
|
|
11
13
|
this.logger = logger;
|
|
12
|
-
this.action = new RawDataProviderStateEntityAction(dataSource, logger);
|
|
14
|
+
this.action = new RawDataProviderStateEntityAction(dataSource, logger.child('RawDataProviderStateEntityAction'));
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* Retrieves the current RawDataProviderStateEntity for the configured chain.
|
|
@@ -60,6 +62,26 @@ export class AbstractRawDataProvider {
|
|
|
60
62
|
}
|
|
61
63
|
this.logger.info(`RawDataProvider Finished filling raw-data for [${this.chain}] chain`);
|
|
62
64
|
};
|
|
65
|
+
/**
|
|
66
|
+
* Process observation and write rawData
|
|
67
|
+
*
|
|
68
|
+
* @param observation
|
|
69
|
+
* @return {boolean} determining result of process done successfully or no
|
|
70
|
+
*/
|
|
71
|
+
processObservation = async (observation) => {
|
|
72
|
+
try {
|
|
73
|
+
const block = { height: observation.height, hash: observation.block };
|
|
74
|
+
const txs = await this.fetchObservationTxs(observation);
|
|
75
|
+
if (!txs)
|
|
76
|
+
throw new Error(`Transaction [${observation.sourceTxId}] not found or invalid response from ${this.chain} chain.`);
|
|
77
|
+
this.extractor.processTransactions(txs, block);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
this.logger.error(`Processing of observation for ${this.chain} failed: ${err}`);
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
};
|
|
63
85
|
/**
|
|
64
86
|
* Fills the raw data field for all ObservationEntity records of the current chain of input RawDataProviderStateEntity
|
|
65
87
|
*
|
|
@@ -67,7 +89,7 @@ export class AbstractRawDataProvider {
|
|
|
67
89
|
* @returns
|
|
68
90
|
*/
|
|
69
91
|
fillObservationsRawData = async (state) => {
|
|
70
|
-
const observations = await this.action.fetchChainObservations(this.chain, state.syncedHeight);
|
|
92
|
+
const observations = await this.action.fetchChainObservations(this.chain, state.syncedHeight, this.extractor.getId());
|
|
71
93
|
if (observations.length === 0)
|
|
72
94
|
throw new Error(`ImpossibleBehavior: No more observations found for [${this.chain}] chain`);
|
|
73
95
|
for (const observation of observations) {
|
|
@@ -86,4 +108,4 @@ export class AbstractRawDataProvider {
|
|
|
86
108
|
return state;
|
|
87
109
|
};
|
|
88
110
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RSYXdEYXRhUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvYWJzdHJhY3RSYXdEYXRhUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk1RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUc5RixNQUFNLE9BQWdCLHVCQUF1QjtJQUkvQjtJQUNBO0lBQ0E7SUFMRixNQUFNLENBQW1DO0lBRW5ELFlBQ1ksS0FBYSxFQUNiLFVBQXNCLEVBQ3RCLFNBQXlCLElBQUksV0FBVyxFQUFFO1FBRjFDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQW9DO1FBRXBELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxnQ0FBZ0MsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7O09BSUc7SUFDTywwQkFBMEIsR0FDbEMsS0FBSyxJQUF5QyxFQUFFO1FBQzlDLElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sc0JBQXNCLEdBQzFCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCwwQ0FBMEMsSUFBSSxDQUFDLEtBQUssUUFBUSxDQUM3RCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7WUFDN0MsQ0FBQztZQUNELEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixZQUFZLEVBQUUsQ0FBQzthQUNoQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwwQ0FBMEMsSUFBSSxDQUFDLEtBQUsscUJBQXFCLFVBQVUsRUFBRSxDQUN0RixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxXQUFXLEdBQUcsS0FBSyxJQUFtQixFQUFFO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLGtEQUFrRCxJQUFJLENBQUMsS0FBSyxTQUFTLENBQ3RFLENBQUM7UUFFRixJQUFJLEtBQUssR0FDUCxNQUFNLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQzFDLE9BQU8sS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsOENBQThDLElBQUksQ0FBQyxLQUFLLHlCQUF5QixLQUFLLENBQUMsWUFBWSxFQUFFLENBQ3RHLENBQUM7WUFDRixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pELEtBQUssR0FBRyxNQUFNLENBQUM7WUFDakIsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSztvQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BFLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLGtEQUFrRCxJQUFJLENBQUMsS0FBSyxTQUFTLENBQ3RFLENBQUM7SUFDSixDQUFDLENBQUM7SUFZRjs7Ozs7T0FLRztJQUNPLHVCQUF1QixHQUFHLEtBQUssRUFDdkMsS0FBaUMsRUFDSSxFQUFFO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDM0QsSUFBSSxDQUFDLEtBQUssRUFDVixLQUFLLENBQUMsWUFBWSxDQUNuQixDQUFDO1FBRUYsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FDYix1REFBdUQsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUMzRSxDQUFDO1FBRUosS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiw4REFBOEQsV0FBVyxDQUFDLE1BQU0sU0FBUyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQzdHLENBQUM7WUFDRixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3RCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLGdFQUFnRSxXQUFXLENBQUMsTUFBTSxTQUFTLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FDL0csQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxXQUFXLENBQUMsTUFBTSxTQUFTLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FDMUcsQ0FBQztZQUNKLENBQUM7WUFDRCxLQUFLLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDeEMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwyQ0FBMkMsV0FBVyxDQUFDLE1BQU0sU0FBUyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQzFGLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IE9ic2VydmF0aW9uRW50aXR5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5cbmltcG9ydCB7IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zL3Jhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uJztcbmltcG9ydCB7IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IH0gZnJvbSAnLi9lbnRpdGllcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFJhd0RhdGFQcm92aWRlciB7XG4gIHByb3RlY3RlZCBhY3Rpb246IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjaGFpbjogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHByb3RlY3RlZCBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyID0gbmV3IER1bW15TG9nZ2VyKCksXG4gICkge1xuICAgIHRoaXMuYWN0aW9uID0gbmV3IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uKGRhdGFTb3VyY2UsIGxvZ2dlcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IGZvciB0aGUgY29uZmlndXJlZCBjaGFpbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGV4aXN0aW5nIG9yIG5ld2x5IGNyZWF0ZWQgUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHlcbiAgICovXG4gIHByb3RlY3RlZCBmZXRjaE9yQ3JlYXRlU3RhdGVGb3JDaGFpbiA9XG4gICAgYXN5bmMgKCk6IFByb21pc2U8UmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHk+ID0+IHtcbiAgICAgIGxldCBzdGF0ZSA9IGF3YWl0IHRoaXMuYWN0aW9uLmZldGNoQnlDaGFpbih0aGlzLmNoYWluKTtcbiAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgY29uc3QgbGF0ZXN0Q2hhaW5PYnNlcnZhdGlvbiA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uZmV0Y2hMYXRlc3RPYnNlcnZhdGlvbkJ5Q2hhaW4odGhpcy5jaGFpbik7XG4gICAgICAgIGxldCBsYXN0SGVpZ2h0ID0gMDtcbiAgICAgICAgaWYgKCFsYXRlc3RDaGFpbk9ic2VydmF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBOb3QgZmluZCBhbnkgT2JzZXJ2YXRpb25FbnRpdHkgZm9yIHRoZSAke3RoaXMuY2hhaW59IGNoYWluYCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxhc3RIZWlnaHQgPSBsYXRlc3RDaGFpbk9ic2VydmF0aW9uLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IGF3YWl0IHRoaXMuYWN0aW9uLnN0b3JlKHtcbiAgICAgICAgICBjaGFpbjogdGhpcy5jaGFpbixcbiAgICAgICAgICBsYXN0SGVpZ2h0OiBsYXN0SGVpZ2h0LFxuICAgICAgICAgIHN5bmNlZEhlaWdodDogMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBDcmVhdGVkIFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IG9uIFske3RoaXMuY2hhaW59XSBjaGFpbiBhdCBoZWlnaHQgJHtsYXN0SGVpZ2h0fWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfTtcblxuICAvKipcbiAgICogSXRlcmF0ZXMgdGhyb3VnaCBvYnNlcnZhdGlvbnMgb2YgdGhlIGN1cnJlbnQgY2hhaW4gYW5kIGZpbGxzIHRoZWlyIHJhd0RhdGEgZmllbGQuXG4gICAqIFVwZGF0ZXMgdGhlIHN5bmNlZEhlaWdodCBhZnRlciBlYWNoIHByb2Nlc3NlZCBvYnNlcnZhdGlvbiB1bnRpbCB0aGUgY2hhaW4gaXMgZnVsbHkgc3luY2VkLlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBmaWxsUmF3RGF0YSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgYFJhd0RhdGFQcm92aWRlciBTdGFydGluZyByYXctZGF0YSBmaWxsaW5nIGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW5gLFxuICAgICk7XG5cbiAgICBsZXQgc3RhdGU6IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5ID1cbiAgICAgIGF3YWl0IHRoaXMuZmV0Y2hPckNyZWF0ZVN0YXRlRm9yQ2hhaW4oKTtcbiAgICB3aGlsZSAoc3RhdGUuc3luY2VkSGVpZ2h0IDwgc3RhdGUubGFzdEhlaWdodCkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBSYXdEYXRhUHJvdmlkZXIgRmV0Y2hpbmcgb2JzZXJ2YXRpb25zIGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW4gZnJvbSBoZWlnaHQgPiAke3N0YXRlLnN5bmNlZEhlaWdodH1gLFxuICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZmlsbE9ic2VydmF0aW9uc1Jhd0RhdGEoc3RhdGUpO1xuICAgICAgICBzdGF0ZSA9IHJlc3VsdDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgUmF3RGF0YVByb3ZpZGVyIEVycm9yOiAke2Vycn1gKTtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5zdGFjaykgdGhpcy5sb2dnZXIuZXJyb3IoZXJyLnN0YWNrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgIGBSYXdEYXRhUHJvdmlkZXIgRmluaXNoZWQgZmlsbGluZyByYXctZGF0YSBmb3IgWyR7dGhpcy5jaGFpbn1dIGNoYWluYCxcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQcm9jZXNzIG9ic2VydmF0aW9uIGFuZCB3cml0ZSByYXdEYXRhXG4gICAqXG4gICAqIEBwYXJhbSBvYnNlcnZhdGlvblxuICAgKiBAcmV0dXJuIHtib29sZWFufSBkZXRlcm1pbmluZyByZXN1bHQgb2YgcHJvY2VzcyBkb25lIHN1Y2Nlc3NmdWxseSBvciBub1xuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NPYnNlcnZhdGlvbjogKFxuICAgIG9ic2VydmF0aW9uOiBPYnNlcnZhdGlvbkVudGl0eSxcbiAgKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBGaWxscyB0aGUgcmF3IGRhdGEgZmllbGQgZm9yIGFsbCBPYnNlcnZhdGlvbkVudGl0eSByZWNvcmRzIG9mIHRoZSBjdXJyZW50IGNoYWluIG9mIGlucHV0IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5XG4gICAqXG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJvdGVjdGVkIGZpbGxPYnNlcnZhdGlvbnNSYXdEYXRhID0gYXN5bmMgKFxuICAgIHN0YXRlOiBSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSxcbiAgKTogUHJvbWlzZTxSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eT4gPT4ge1xuICAgIGNvbnN0IG9ic2VydmF0aW9ucyA9IGF3YWl0IHRoaXMuYWN0aW9uLmZldGNoQ2hhaW5PYnNlcnZhdGlvbnMoXG4gICAgICB0aGlzLmNoYWluLFxuICAgICAgc3RhdGUuc3luY2VkSGVpZ2h0LFxuICAgICk7XG5cbiAgICBpZiAob2JzZXJ2YXRpb25zLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEltcG9zc2libGVCZWhhdmlvcjogTm8gbW9yZSBvYnNlcnZhdGlvbnMgZm91bmQgZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbmAsXG4gICAgICApO1xuXG4gICAgZm9yIChjb25zdCBvYnNlcnZhdGlvbiBvZiBvYnNlcnZhdGlvbnMpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgUmF3RGF0YVByb3ZpZGVyIFVwZGF0aW5nIHJhd0RhdGEgZm9yIG9ic2VydmF0aW9uIGF0IGhlaWdodCAke29ic2VydmF0aW9uLmhlaWdodH0gZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbmAsXG4gICAgICApO1xuICAgICAgY29uc3QgaXNTdWNjZXNzID0gYXdhaXQgdGhpcy5wcm9jZXNzT2JzZXJ2YXRpb24ob2JzZXJ2YXRpb24pO1xuICAgICAgaWYgKGlzU3VjY2Vzcykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgUmF3RGF0YVByb3ZpZGVyIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQgb2JzZXJ2YXRpb24gYXQgaGVpZ2h0ICR7b2JzZXJ2YXRpb24uaGVpZ2h0fSBmb3IgWyR7dGhpcy5jaGFpbn1dIGNoYWluYCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUmF3RGF0YVByb3ZpZGVyIGZhaWxlZCB0byBwcm9jZXNzIG9ic2VydmF0aW9uIGF0IGhlaWdodCAke29ic2VydmF0aW9uLmhlaWdodH0gZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzdGF0ZS5zeW5jZWRIZWlnaHQgPSBvYnNlcnZhdGlvbi5oZWlnaHQ7XG4gICAgICBhd2FpdCB0aGlzLmFjdGlvbi5zdG9yZShzdGF0ZSk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYFJhd0RhdGFQcm92aWRlciBzeW5jZWRIZWlnaHQgdXBkYXRlZCB0byAke29ic2VydmF0aW9uLmhlaWdodH0gZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH07XG59XG4iXX0=
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RSYXdEYXRhUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvYWJzdHJhY3RSYXdEYXRhUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU81RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUc5RixNQUFNLE9BQWdCLHVCQUF1QjtJQUkvQjtJQUNBO0lBQ0E7SUFDQTtJQU5GLE1BQU0sQ0FBbUM7SUFFbkQsWUFDWSxLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsU0FBK0MsRUFDL0MsU0FBeUIsSUFBSSxXQUFXLEVBQUU7UUFIMUMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBc0M7UUFDL0MsV0FBTSxHQUFOLE1BQU0sQ0FBb0M7UUFFcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGdDQUFnQyxDQUNoRCxVQUFVLEVBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDTywwQkFBMEIsR0FDbEMsS0FBSyxJQUF5QyxFQUFFO1FBQzlDLElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sc0JBQXNCLEdBQzFCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElB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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7XG4gIEFic3RyYWN0T2JzZXJ2YXRpb25FeHRyYWN0b3IsXG4gIE9ic2VydmF0aW9uRW50aXR5LFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcblxuaW1wb3J0IHsgUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHlBY3Rpb24gfSBmcm9tICcuL2FjdGlvbnMvcmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHlBY3Rpb24nO1xuaW1wb3J0IHsgUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHkgfSBmcm9tICcuL2VudGl0aWVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UmF3RGF0YVByb3ZpZGVyPFR4VHlwZT4ge1xuICBwcm90ZWN0ZWQgYWN0aW9uOiBSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eUFjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY2hhaW46IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICBwcm90ZWN0ZWQgZXh0cmFjdG9yOiBBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yPFR4VHlwZT4sXG4gICAgcHJvdGVjdGVkIGxvZ2dlcjogQWJzdHJhY3RMb2dnZXIgPSBuZXcgRHVtbXlMb2dnZXIoKSxcbiAgKSB7XG4gICAgdGhpcy5hY3Rpb24gPSBuZXcgUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHlBY3Rpb24oXG4gICAgICBkYXRhU291cmNlLFxuICAgICAgbG9nZ2VyLmNoaWxkKCdSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eUFjdGlvbicpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IGZvciB0aGUgY29uZmlndXJlZCBjaGFpbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGV4aXN0aW5nIG9yIG5ld2x5IGNyZWF0ZWQgUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHlcbiAgICovXG4gIHByb3RlY3RlZCBmZXRjaE9yQ3JlYXRlU3RhdGVGb3JDaGFpbiA9XG4gICAgYXN5bmMgKCk6IFByb21pc2U8UmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHk+ID0+IHtcbiAgICAgIGxldCBzdGF0ZSA9IGF3YWl0IHRoaXMuYWN0aW9uLmZldGNoQnlDaGFpbih0aGlzLmNoYWluKTtcbiAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgY29uc3QgbGF0ZXN0Q2hhaW5PYnNlcnZhdGlvbiA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uZmV0Y2hMYXRlc3RPYnNlcnZhdGlvbkJ5Q2hhaW4odGhpcy5jaGFpbik7XG4gICAgICAgIGxldCBsYXN0SGVpZ2h0ID0gMDtcbiAgICAgICAgaWYgKCFsYXRlc3RDaGFpbk9ic2VydmF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBOb3QgZmluZCBhbnkgT2JzZXJ2YXRpb25FbnRpdHkgZm9yIHRoZSAke3RoaXMuY2hhaW59IGNoYWluYCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxhc3RIZWlnaHQgPSBsYXRlc3RDaGFpbk9ic2VydmF0aW9uLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IGF3YWl0IHRoaXMuYWN0aW9uLnN0b3JlKHtcbiAgICAgICAgICBjaGFpbjogdGhpcy5jaGFpbixcbiAgICAgICAgICBsYXN0SGVpZ2h0OiBsYXN0SGVpZ2h0LFxuICAgICAgICAgIHN5bmNlZEhlaWdodDogMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBDcmVhdGVkIFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IG9uIFske3RoaXMuY2hhaW59XSBjaGFpbiBhdCBoZWlnaHQgJHtsYXN0SGVpZ2h0fWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfTtcblxuICAvKipcbiAgICogSXRlcmF0ZXMgdGhyb3VnaCBvYnNlcnZhdGlvbnMgb2YgdGhlIGN1cnJlbnQgY2hhaW4gYW5kIGZpbGxzIHRoZWlyIHJhd0RhdGEgZmllbGQuXG4gICAqIFVwZGF0ZXMgdGhlIHN5bmNlZEhlaWdodCBhZnRlciBlYWNoIHByb2Nlc3NlZCBvYnNlcnZhdGlvbiB1bnRpbCB0aGUgY2hhaW4gaXMgZnVsbHkgc3luY2VkLlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBmaWxsUmF3RGF0YSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgYFJhd0RhdGFQcm92aWRlciBTdGFydGluZyByYXctZGF0YSBmaWxsaW5nIGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW5gLFxuICAgICk7XG5cbiAgICBsZXQgc3RhdGU6IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5ID1cbiAgICAgIGF3YWl0IHRoaXMuZmV0Y2hPckNyZWF0ZVN0YXRlRm9yQ2hhaW4oKTtcbiAgICB3aGlsZSAoc3RhdGUuc3luY2VkSGVpZ2h0IDwgc3RhdGUubGFzdEhlaWdodCkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBSYXdEYXRhUHJvdmlkZXIgRmV0Y2hpbmcgb2JzZXJ2YXRpb25zIGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW4gZnJvbSBoZWlnaHQgPiAke3N0YXRlLnN5bmNlZEhlaWdodH1gLFxuICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZmlsbE9ic2VydmF0aW9uc1Jhd0RhdGEoc3RhdGUpO1xuICAgICAgICBzdGF0ZSA9IHJlc3VsdDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgUmF3RGF0YVByb3ZpZGVyIEVycm9yOiAke2Vycn1gKTtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5zdGFjaykgdGhpcy5sb2dnZXIuZXJyb3IoZXJyLnN0YWNrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgIGBSYXdEYXRhUHJvdmlkZXIgRmluaXNoZWQgZmlsbGluZyByYXctZGF0YSBmb3IgWyR7dGhpcy5jaGFpbn1dIGNoYWluYCxcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmZXRjaCB0cmFuc2FjdGlvbnMgcmVsYXRlZCB0byB0aGUgaW5wdXQgb2JzZXJ2YXRpb24gcGFyYW1ldGVyXG4gICAqXG4gICAqIEBwYXJhbSBvYnNlcnZhdGlvblxuICAgKiBAcmV0dXJucyB7IFByb21pc2U8VHhUeXBlW10+IH1cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBmZXRjaE9ic2VydmF0aW9uVHhzOiAoXG4gICAgb2JzZXJ2YXRpb246IE9ic2VydmF0aW9uRW50aXR5LFxuICApID0+IFByb21pc2U8VHhUeXBlW10gfCB1bmRlZmluZWQ+O1xuICAvKipcbiAgICogUHJvY2VzcyBvYnNlcnZhdGlvbiBhbmQgd3JpdGUgcmF3RGF0YVxuICAgKlxuICAgKiBAcGFyYW0gb2JzZXJ2YXRpb25cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gZGV0ZXJtaW5pbmcgcmVzdWx0IG9mIHByb2Nlc3MgZG9uZSBzdWNjZXNzZnVsbHkgb3Igbm9cbiAgICovXG4gIHByb3RlY3RlZCBwcm9jZXNzT2JzZXJ2YXRpb24gPSBhc3luYyAob2JzZXJ2YXRpb246IE9ic2VydmF0aW9uRW50aXR5KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJsb2NrID0geyBoZWlnaHQ6IG9ic2VydmF0aW9uLmhlaWdodCwgaGFzaDogb2JzZXJ2YXRpb24uYmxvY2sgfTtcbiAgICAgIGNvbnN0IHR4cyA9IGF3YWl0IHRoaXMuZmV0Y2hPYnNlcnZhdGlvblR4cyhvYnNlcnZhdGlvbik7XG4gICAgICBpZiAoIXR4cylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUcmFuc2FjdGlvbiBbJHtvYnNlcnZhdGlvbi5zb3VyY2VUeElkfV0gbm90IGZvdW5kIG9yIGludmFsaWQgcmVzcG9uc2UgZnJvbSAke3RoaXMuY2hhaW59IGNoYWluLmAsXG4gICAgICAgICk7XG4gICAgICB0aGlzLmV4dHJhY3Rvci5wcm9jZXNzVHJhbnNhY3Rpb25zKHR4cywgYmxvY2spO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBQcm9jZXNzaW5nIG9mIG9ic2VydmF0aW9uIGZvciAke3RoaXMuY2hhaW59IGZhaWxlZDogJHtlcnJ9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBGaWxscyB0aGUgcmF3IGRhdGEgZmllbGQgZm9yIGFsbCBPYnNlcnZhdGlvbkVudGl0eSByZWNvcmRzIG9mIHRoZSBjdXJyZW50IGNoYWluIG9mIGlucHV0IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5XG4gICAqXG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJvdGVjdGVkIGZpbGxPYnNlcnZhdGlvbnNSYXdEYXRhID0gYXN5bmMgKFxuICAgIHN0YXRlOiBSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSxcbiAgKTogUHJvbWlzZTxSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eT4gPT4ge1xuICAgIGNvbnN0IG9ic2VydmF0aW9ucyA9IGF3YWl0IHRoaXMuYWN0aW9uLmZldGNoQ2hhaW5PYnNlcnZhdGlvbnMoXG4gICAgICB0aGlzLmNoYWluLFxuICAgICAgc3RhdGUuc3luY2VkSGVpZ2h0LFxuICAgICAgdGhpcy5leHRyYWN0b3IuZ2V0SWQoKSxcbiAgICApO1xuXG4gICAgaWYgKG9ic2VydmF0aW9ucy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbXBvc3NpYmxlQmVoYXZpb3I6IE5vIG1vcmUgb2JzZXJ2YXRpb25zIGZvdW5kIGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW5gLFxuICAgICAgKTtcblxuICAgIGZvciAoY29uc3Qgb2JzZXJ2YXRpb24gb2Ygb2JzZXJ2YXRpb25zKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYFJhd0RhdGFQcm92aWRlciBVcGRhdGluZyByYXdEYXRhIGZvciBvYnNlcnZhdGlvbiBhdCBoZWlnaHQgJHtvYnNlcnZhdGlvbi5oZWlnaHR9IGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW5gLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGlzU3VjY2VzcyA9IGF3YWl0IHRoaXMucHJvY2Vzc09ic2VydmF0aW9uKG9ic2VydmF0aW9uKTtcbiAgICAgIGlmIChpc1N1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYFJhd0RhdGFQcm92aWRlciBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkIG9ic2VydmF0aW9uIGF0IGhlaWdodCAke29ic2VydmF0aW9uLmhlaWdodH0gZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbmAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFJhd0RhdGFQcm92aWRlciBmYWlsZWQgdG8gcHJvY2VzcyBvYnNlcnZhdGlvbiBhdCBoZWlnaHQgJHtvYnNlcnZhdGlvbi5oZWlnaHR9IGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgc3RhdGUuc3luY2VkSGVpZ2h0ID0gb2JzZXJ2YXRpb24uaGVpZ2h0O1xuICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uc3RvcmUoc3RhdGUpO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBSYXdEYXRhUHJvdmlkZXIgc3luY2VkSGVpZ2h0IHVwZGF0ZWQgdG8gJHtvYnNlcnZhdGlvbi5oZWlnaHR9IGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9O1xufVxuIl19
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
2
|
import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
|
|
3
|
+
import { BlockEntity } from '@rosen-bridge/abstract-scanner';
|
|
3
4
|
import { DataSource, Repository } from '@rosen-bridge/extended-typeorm';
|
|
4
5
|
import { RawDataProviderStateEntity } from '../entities';
|
|
5
6
|
export declare class RawDataProviderStateEntityAction {
|
|
6
7
|
protected dataSource: DataSource;
|
|
7
8
|
protected logger: AbstractLogger;
|
|
8
9
|
protected readonly repository: Repository<RawDataProviderStateEntity>;
|
|
10
|
+
protected readonly blockRepository: Repository<BlockEntity>;
|
|
9
11
|
protected readonly observationRepository: Repository<ObservationEntity>;
|
|
10
12
|
constructor(dataSource: DataSource, logger?: AbstractLogger);
|
|
11
13
|
/**
|
|
@@ -37,6 +39,21 @@ export declare class RawDataProviderStateEntityAction {
|
|
|
37
39
|
* @param length
|
|
38
40
|
* @returns {ObservationEntity[]} Chain-related observations
|
|
39
41
|
*/
|
|
40
|
-
fetchChainObservations: (chain: string, offsetHeight: number, length?: number) => Promise<ObservationEntity[]>;
|
|
42
|
+
fetchChainObservations: (chain: string, offsetHeight: number, extractorId: string, length?: number) => Promise<ObservationEntity[]>;
|
|
43
|
+
/**
|
|
44
|
+
* return saved block by scannerName & height if exists
|
|
45
|
+
*
|
|
46
|
+
* @param scannerName
|
|
47
|
+
* @param height
|
|
48
|
+
* @return Promise<BlockEntity or undefined>
|
|
49
|
+
*/
|
|
50
|
+
getBlockOfHeight: (scannerName: string, height: number) => Promise<BlockEntity | undefined>;
|
|
51
|
+
/**
|
|
52
|
+
* return lowest height of saved block by chain if exists
|
|
53
|
+
*
|
|
54
|
+
* @param chain
|
|
55
|
+
* @return Promise<BlockEntity or undefined>
|
|
56
|
+
*/
|
|
57
|
+
getFirstBlockOfChain: (chain: string) => Promise<BlockEntity | undefined>;
|
|
41
58
|
}
|
|
42
59
|
//# sourceMappingURL=rawDataProviderStateEntityAction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rawDataProviderStateEntityAction.d.ts","sourceRoot":"","sources":["../../lib/actions/rawDataProviderStateEntityAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EACL,UAAU,EAEV,UAAU,EACX,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,gCAAgC;
|
|
1
|
+
{"version":3,"file":"rawDataProviderStateEntityAction.d.ts","sourceRoot":"","sources":["../../lib/actions/rawDataProviderStateEntityAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAW,MAAM,gCAAgC,CAAC;AACtE,OAAO,EACL,UAAU,EAEV,UAAU,EACX,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,gCAAgC;IAMzC,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,MAAM,EAAE,cAAc;IANlC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC5D,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;gBAG5D,UAAU,EAAE,UAAU,EACtB,MAAM,GAAE,cAAkC;IAOtD;;;;;OAKG;IACH,KAAK,GACH,uBAAuB,0BAA0B,KAChD,OAAO,CAAC,0BAA0B,CAAC,CAMpC;IAEF;;;;;OAKG;IACH,YAAY,GACV,OAAO,MAAM,KACZ,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAE3C;IAEF;;;;;OAKG;IACH,6BAA6B,GAC3B,OAAO,MAAM,KACZ,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAKlC;IAEF;;;;;;;OAOG;IACH,sBAAsB,GACpB,OAAO,MAAM,EACb,cAAc,MAAM,EACpB,aAAa,MAAM,EACnB,SAAQ,MAA+B,KACtC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAU7B;IAEF;;;;;;OAMG;IACH,gBAAgB,GACd,aAAa,MAAM,EACnB,QAAQ,MAAM,KACb,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAKjC;IAEF;;;;;OAKG;IACH,oBAAoB,GAClB,OAAO,MAAM,KACZ,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAMjC;CACH"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
2
2
|
import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
|
|
3
|
+
import { BlockEntity, PROCEED } from '@rosen-bridge/abstract-scanner';
|
|
3
4
|
import { MoreThan, } from '@rosen-bridge/extended-typeorm';
|
|
4
5
|
import { OBSERVATION_BATCH_SIZE } from '../constants';
|
|
5
6
|
import { RawDataProviderStateEntity } from '../entities';
|
|
@@ -7,11 +8,13 @@ export class RawDataProviderStateEntityAction {
|
|
|
7
8
|
dataSource;
|
|
8
9
|
logger;
|
|
9
10
|
repository;
|
|
11
|
+
blockRepository;
|
|
10
12
|
observationRepository;
|
|
11
13
|
constructor(dataSource, logger = new DummyLogger()) {
|
|
12
14
|
this.dataSource = dataSource;
|
|
13
15
|
this.logger = logger;
|
|
14
16
|
this.repository = dataSource.getRepository(RawDataProviderStateEntity);
|
|
17
|
+
this.blockRepository = dataSource.getRepository(BlockEntity);
|
|
15
18
|
this.observationRepository = dataSource.getRepository(ObservationEntity);
|
|
16
19
|
}
|
|
17
20
|
/**
|
|
@@ -54,12 +57,42 @@ export class RawDataProviderStateEntityAction {
|
|
|
54
57
|
* @param length
|
|
55
58
|
* @returns {ObservationEntity[]} Chain-related observations
|
|
56
59
|
*/
|
|
57
|
-
fetchChainObservations = async (chain, offsetHeight, length = OBSERVATION_BATCH_SIZE) => {
|
|
60
|
+
fetchChainObservations = async (chain, offsetHeight, extractorId, length = OBSERVATION_BATCH_SIZE) => {
|
|
58
61
|
return await this.observationRepository.find({
|
|
59
|
-
where: {
|
|
62
|
+
where: {
|
|
63
|
+
fromChain: chain,
|
|
64
|
+
height: MoreThan(offsetHeight),
|
|
65
|
+
extractor: extractorId,
|
|
66
|
+
},
|
|
60
67
|
order: { height: 'ASC' },
|
|
61
68
|
take: length,
|
|
62
69
|
});
|
|
63
70
|
};
|
|
71
|
+
/**
|
|
72
|
+
* return saved block by scannerName & height if exists
|
|
73
|
+
*
|
|
74
|
+
* @param scannerName
|
|
75
|
+
* @param height
|
|
76
|
+
* @return Promise<BlockEntity or undefined>
|
|
77
|
+
*/
|
|
78
|
+
getBlockOfHeight = async (scannerName, height) => {
|
|
79
|
+
const block = await this.blockRepository.findOne({
|
|
80
|
+
where: { status: PROCEED, scanner: scannerName, height: height },
|
|
81
|
+
});
|
|
82
|
+
return block || undefined;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* return lowest height of saved block by chain if exists
|
|
86
|
+
*
|
|
87
|
+
* @param chain
|
|
88
|
+
* @return Promise<BlockEntity or undefined>
|
|
89
|
+
*/
|
|
90
|
+
getFirstBlockOfChain = async (chain) => {
|
|
91
|
+
const block = await this.blockRepository.findOne({
|
|
92
|
+
where: { status: PROCEED, scanner: chain },
|
|
93
|
+
order: { height: 'ASC' },
|
|
94
|
+
});
|
|
95
|
+
return block || undefined;
|
|
96
|
+
};
|
|
64
97
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHlBY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvYWN0aW9ucy9yYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eUFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUVMLFFBQVEsR0FFVCxNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekQsTUFBTSxPQUFPLGdDQUFnQztJQU0vQjtJQUNBO0lBTk8sVUFBVSxDQUF5QztJQUNuRCxlQUFlLENBQTBCO0lBQ3pDLHFCQUFxQixDQUFnQztJQUV4RSxZQUNZLFVBQXNCLEVBQ3RCLFNBQXlCLElBQUksV0FBVyxFQUFFO1FBRDFDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBb0M7UUFFcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxHQUFHLEtBQUssRUFDWCxxQkFBaUQsRUFDWixFQUFFO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiw2QkFBNkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FDekYsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUY7Ozs7O09BS0c7SUFDSCxZQUFZLEdBQUcsS0FBSyxFQUNsQixLQUFhLEVBQytCLEVBQUU7UUFDOUMsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNILDZCQUE2QixHQUFHLEtBQUssRUFDbkMsS0FBYSxFQUNzQixFQUFFO1FBQ3JDLE9BQU8sTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDO1lBQzlDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOzs7Ozs7O09BT0c7SUFDSCxzQkFBc0IsR0FBRyxLQUFLLEVBQzVCLEtBQWEsRUFDYixZQUFvQixFQUNwQixXQUFtQixFQUNuQixTQUFpQixzQkFBc0IsRUFDVCxFQUFFO1FBQ2hDLE9BQU8sTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDO1lBQzNDLEtBQUssRUFBRTtnQkFDTCxTQUFTLEVBQUUsS0FBSztnQkFDaEIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUM7Z0JBQzlCLFNBQVMsRUFBRSxXQUFXO2FBQ3ZCO1lBQ0QsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUN4QixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFDdEIsV0FBbUIsRUFDbkIsTUFBYyxFQUNvQixFQUFFO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7WUFDL0MsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7U0FDakUsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLElBQUksU0FBUyxDQUFDO0lBQzVCLENBQUMsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ0gsb0JBQW9CLEdBQUcsS0FBSyxFQUMxQixLQUFhLEVBQ3FCLEVBQUU7UUFDcEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQztZQUMvQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7WUFDMUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtTQUN6QixDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssSUFBSSxTQUFTLENBQUM7SUFDNUIsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBPYnNlcnZhdGlvbkVudGl0eSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3Qtb2JzZXJ2YXRpb24tZXh0cmFjdG9yJztcbmltcG9ydCB7IEJsb2NrRW50aXR5LCBQUk9DRUVEIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1zY2FubmVyJztcbmltcG9ydCB7XG4gIERhdGFTb3VyY2UsXG4gIE1vcmVUaGFuLFxuICBSZXBvc2l0b3J5LFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuXG5pbXBvcnQgeyBPQlNFUlZBVElPTl9CQVRDSF9TSVpFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IH0gZnJvbSAnLi4vZW50aXRpZXMnO1xuXG5leHBvcnQgY2xhc3MgUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHlBY3Rpb24ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVwb3NpdG9yeTogUmVwb3NpdG9yeTxSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eT47XG4gIHByb3RlY3RlZCByZWFkb25seSBibG9ja1JlcG9zaXRvcnk6IFJlcG9zaXRvcnk8QmxvY2tFbnRpdHk+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb2JzZXJ2YXRpb25SZXBvc2l0b3J5OiBSZXBvc2l0b3J5PE9ic2VydmF0aW9uRW50aXR5PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICBwcm90ZWN0ZWQgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlciA9IG5ldyBEdW1teUxvZ2dlcigpLFxuICApIHtcbiAgICB0aGlzLnJlcG9zaXRvcnkgPSBkYXRhU291cmNlLmdldFJlcG9zaXRvcnkoUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHkpO1xuICAgIHRoaXMuYmxvY2tSZXBvc2l0b3J5ID0gZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KEJsb2NrRW50aXR5KTtcbiAgICB0aGlzLm9ic2VydmF0aW9uUmVwb3NpdG9yeSA9IGRhdGFTb3VyY2UuZ2V0UmVwb3NpdG9yeShPYnNlcnZhdGlvbkVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcmVzIG9uZSBSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSBpbiB0aGUgZGF0YWJhc2VcbiAgICpcbiAgICogQHBhcmFtIHJhd0RhdGFQcm92aWRlckVudGl0aWVzXG4gICAqIEByZXR1cm5zIHtSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eX0gc2F2ZWQgaW5zdGFuY2VcbiAgICovXG4gIHN0b3JlID0gYXN5bmMgKFxuICAgIHJhd0RhdGFQcm92aWRlckVudGl0eTogUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHksXG4gICk6IFByb21pc2U8UmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHk+ID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5zYXZlKHJhd0RhdGFQcm92aWRlckVudGl0eSk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgcmF3LWRhdGEgZm9yIGNoYWluIHN0YXRlIFske0pTT04uc3RyaW5naWZ5KHJhd0RhdGFQcm92aWRlckVudGl0eSl9XSBzdG9yZWQgaW4gZGF0YWJhc2VgLFxuICAgICk7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IG9mIHNwZWNpZmljIGNoYWluXG4gICAqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcmV0dXJucyB7UmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHkgfCBudWxsfSBDaGFpbi1yZWxhdGVkIHN0YXRlLCBvciBudWxsIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgZmV0Y2hCeUNoYWluID0gYXN5bmMgKFxuICAgIGNoYWluOiBzdHJpbmcsXG4gICk6IFByb21pc2U8UmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHkgfCBudWxsPiA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwb3NpdG9yeS5maW5kT25lKHsgd2hlcmU6IHsgY2hhaW46IGNoYWluIH0gfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgbGF0ZXN0IE9ic2VydmF0aW9uRW50aXR5IGZvciB0aGUgc3BlY2lmaWVkIGNoYWluXG4gICAqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YXRpb25FbnRpdHkgfCBudWxsfSBMYXRlc3QgcmVsYXRlZCBvYnNlcnZhdGlvbiwgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAgICovXG4gIGZldGNoTGF0ZXN0T2JzZXJ2YXRpb25CeUNoYWluID0gYXN5bmMgKFxuICAgIGNoYWluOiBzdHJpbmcsXG4gICk6IFByb21pc2U8T2JzZXJ2YXRpb25FbnRpdHkgfCBudWxsPiA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMub2JzZXJ2YXRpb25SZXBvc2l0b3J5LmZpbmRPbmUoe1xuICAgICAgd2hlcmU6IHsgZnJvbUNoYWluOiBjaGFpbiwgcmF3RGF0YTogJycgfSxcbiAgICAgIG9yZGVyOiB7IGhlaWdodDogJ0RFU0MnIH0sXG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYSBiYXRjaCBvZiBPYnNlcnZhdGlvbkVudGl0eSByZWNvcmRzIGZvciB0aGUgZ2l2ZW4gY2hhaW5cbiAgICpcbiAgICogQHBhcmFtIGNoYWluXG4gICAqIEBwYXJhbSBvZmZzZXRIZWlnaHRcbiAgICogQHBhcmFtIGxlbmd0aFxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YXRpb25FbnRpdHlbXX0gQ2hhaW4tcmVsYXRlZCBvYnNlcnZhdGlvbnNcbiAgICovXG4gIGZldGNoQ2hhaW5PYnNlcnZhdGlvbnMgPSBhc3luYyAoXG4gICAgY2hhaW46IHN0cmluZyxcbiAgICBvZmZzZXRIZWlnaHQ6IG51bWJlcixcbiAgICBleHRyYWN0b3JJZDogc3RyaW5nLFxuICAgIGxlbmd0aDogbnVtYmVyID0gT0JTRVJWQVRJT05fQkFUQ0hfU0laRSxcbiAgKTogUHJvbWlzZTxPYnNlcnZhdGlvbkVudGl0eVtdPiA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMub2JzZXJ2YXRpb25SZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgd2hlcmU6IHtcbiAgICAgICAgZnJvbUNoYWluOiBjaGFpbixcbiAgICAgICAgaGVpZ2h0OiBNb3JlVGhhbihvZmZzZXRIZWlnaHQpLFxuICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcklkLFxuICAgICAgfSxcbiAgICAgIG9yZGVyOiB7IGhlaWdodDogJ0FTQycgfSxcbiAgICAgIHRha2U6IGxlbmd0aCxcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJuIHNhdmVkIGJsb2NrIGJ5IHNjYW5uZXJOYW1lICYgaGVpZ2h0IGlmIGV4aXN0c1xuICAgKlxuICAgKiBAcGFyYW0gc2Nhbm5lck5hbWVcbiAgICogQHBhcmFtIGhlaWdodFxuICAgKiBAcmV0dXJuIFByb21pc2U8QmxvY2tFbnRpdHkgb3IgdW5kZWZpbmVkPlxuICAgKi9cbiAgZ2V0QmxvY2tPZkhlaWdodCA9IGFzeW5jIChcbiAgICBzY2FubmVyTmFtZTogc3RyaW5nLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICApOiBQcm9taXNlPEJsb2NrRW50aXR5IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgY29uc3QgYmxvY2sgPSBhd2FpdCB0aGlzLmJsb2NrUmVwb3NpdG9yeS5maW5kT25lKHtcbiAgICAgIHdoZXJlOiB7IHN0YXR1czogUFJPQ0VFRCwgc2Nhbm5lcjogc2Nhbm5lck5hbWUsIGhlaWdodDogaGVpZ2h0IH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGJsb2NrIHx8IHVuZGVmaW5lZDtcbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJuIGxvd2VzdCBoZWlnaHQgb2Ygc2F2ZWQgYmxvY2sgYnkgY2hhaW4gaWYgZXhpc3RzXG4gICAqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcmV0dXJuIFByb21pc2U8QmxvY2tFbnRpdHkgb3IgdW5kZWZpbmVkPlxuICAgKi9cbiAgZ2V0Rmlyc3RCbG9ja09mQ2hhaW4gPSBhc3luYyAoXG4gICAgY2hhaW46IHN0cmluZyxcbiAgKTogUHJvbWlzZTxCbG9ja0VudGl0eSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgdGhpcy5ibG9ja1JlcG9zaXRvcnkuZmluZE9uZSh7XG4gICAgICB3aGVyZTogeyBzdGF0dXM6IFBST0NFRUQsIHNjYW5uZXI6IGNoYWluIH0sXG4gICAgICBvcmRlcjogeyBoZWlnaHQ6ICdBU0MnIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGJsb2NrIHx8IHVuZGVmaW5lZDtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
2
|
import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
|
|
3
3
|
import { BitcoinEsploraObservationExtractor } from '@rosen-bridge/bitcoin-observation-extractor';
|
|
4
|
+
import { BitcoinRunesEsploraObservationExtractor } from '@rosen-bridge/bitcoin-runes-observation-extractor';
|
|
5
|
+
import { BitcoinEsploraTransaction } from '@rosen-bridge/bitcoin-scanner';
|
|
4
6
|
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
5
7
|
import { AbstractRawDataProvider } from '../../abstractRawDataProvider';
|
|
6
|
-
|
|
8
|
+
import { EsploraConnectionInfoInterface } from '../../types';
|
|
9
|
+
export declare class BitcoinEsploraRawDataProvider extends AbstractRawDataProvider<BitcoinEsploraTransaction> {
|
|
7
10
|
protected dataSource: DataSource;
|
|
8
|
-
protected extractor: BitcoinEsploraObservationExtractor;
|
|
11
|
+
protected extractor: BitcoinEsploraObservationExtractor | BitcoinRunesEsploraObservationExtractor;
|
|
12
|
+
protected esploraConnectionInfo: EsploraConnectionInfoInterface;
|
|
9
13
|
protected logger: AbstractLogger;
|
|
14
|
+
ESPLORA_BLOCK_TXS_LIMIT: number;
|
|
10
15
|
protected client: import("@rosen-clients/rate-limited-axios").Axios;
|
|
11
|
-
constructor(dataSource: DataSource, extractor: BitcoinEsploraObservationExtractor,
|
|
16
|
+
constructor(dataSource: DataSource, extractor: BitcoinEsploraObservationExtractor | BitcoinRunesEsploraObservationExtractor, esploraConnectionInfo: EsploraConnectionInfoInterface, logger: AbstractLogger);
|
|
12
17
|
/**
|
|
13
|
-
*
|
|
18
|
+
* fetch bitcoin transactions related to the input observation parameter
|
|
14
19
|
*
|
|
15
20
|
* @param observation
|
|
16
|
-
* @
|
|
21
|
+
* @returns { Promise<BitcoinEsploraTransaction[]> }
|
|
17
22
|
*/
|
|
18
|
-
protected
|
|
23
|
+
protected fetchObservationTxs: (observation: ObservationEntity) => Promise<BitcoinEsploraTransaction[] | undefined>;
|
|
19
24
|
}
|
|
20
25
|
//# sourceMappingURL=bitcoinEsploraRawDataProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoinEsploraRawDataProvider.d.ts","sourceRoot":"","sources":["../../../lib/providers/bitcoin/bitcoinEsploraRawDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"bitcoinEsploraRawDataProvider.d.ts","sourceRoot":"","sources":["../../../lib/providers/bitcoin/bitcoinEsploraRawDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AACjG,OAAO,EAAE,uCAAuC,EAAE,MAAM,mDAAmD,CAAC;AAC5G,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAE7D,qBAAa,6BAA8B,SAAQ,uBAAuB,CAAC,yBAAyB,CAAC;IAMjG,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,SAAS,EACf,kCAAkC,GAClC,uCAAuC;IAC3C,SAAS,CAAC,qBAAqB,EAAE,8BAA8B;IAC/D,SAAS,CAAC,MAAM,EAAE,cAAc;IAVlC,uBAAuB,SAAM;IAE7B,SAAS,CAAC,MAAM,oDAAC;gBAGL,UAAU,EAAE,UAAU,EACtB,SAAS,EACf,kCAAkC,GAClC,uCAAuC,EACjC,qBAAqB,EAAE,8BAA8B,EACrD,MAAM,EAAE,cAAc;IAclC;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,GAC3B,aAAa,iBAAiB,KAC7B,OAAO,CAAC,yBAAyB,EAAE,GAAG,SAAS,CAAC,CA6BjD;CACH"}
|
|
@@ -1,38 +1,52 @@
|
|
|
1
|
+
import { BitcoinRunesEsploraObservationExtractor } from '@rosen-bridge/bitcoin-runes-observation-extractor';
|
|
1
2
|
import axios from '@rosen-clients/rate-limited-axios';
|
|
2
3
|
import { AbstractRawDataProvider } from '../../abstractRawDataProvider';
|
|
3
4
|
export class BitcoinEsploraRawDataProvider extends AbstractRawDataProvider {
|
|
4
5
|
dataSource;
|
|
5
6
|
extractor;
|
|
7
|
+
esploraConnectionInfo;
|
|
6
8
|
logger;
|
|
9
|
+
ESPLORA_BLOCK_TXS_LIMIT = 25;
|
|
7
10
|
client;
|
|
8
|
-
constructor(dataSource, extractor,
|
|
9
|
-
|
|
11
|
+
constructor(dataSource, extractor, esploraConnectionInfo, logger) {
|
|
12
|
+
const chain = extractor instanceof BitcoinRunesEsploraObservationExtractor
|
|
13
|
+
? 'bitcoin-runes'
|
|
14
|
+
: 'bitcoin';
|
|
15
|
+
super(chain, dataSource, extractor, logger);
|
|
10
16
|
this.dataSource = dataSource;
|
|
11
17
|
this.extractor = extractor;
|
|
18
|
+
this.esploraConnectionInfo = esploraConnectionInfo;
|
|
12
19
|
this.logger = logger;
|
|
13
|
-
this.client = axios.create({
|
|
20
|
+
this.client = axios.create({
|
|
21
|
+
baseURL: esploraConnectionInfo.url,
|
|
22
|
+
timeout: (esploraConnectionInfo.timeout ?? 0) * 1000,
|
|
23
|
+
headers: { 'Content-Type': 'application/json' },
|
|
24
|
+
});
|
|
14
25
|
}
|
|
15
26
|
/**
|
|
16
|
-
*
|
|
27
|
+
* fetch bitcoin transactions related to the input observation parameter
|
|
17
28
|
*
|
|
18
29
|
* @param observation
|
|
19
|
-
* @
|
|
30
|
+
* @returns { Promise<BitcoinEsploraTransaction[]> }
|
|
20
31
|
*/
|
|
21
|
-
|
|
32
|
+
fetchObservationTxs = async (observation) => {
|
|
22
33
|
try {
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
const blockHash = observation.block;
|
|
35
|
+
const txCount = (await this.client.get(`${this.esploraConnectionInfo.prefix ?? '/api'}/block/${blockHash}`)).data.tx_count;
|
|
36
|
+
let offset = 0;
|
|
37
|
+
while (offset < txCount) {
|
|
38
|
+
const txs = (await this.client.get(`${this.esploraConnectionInfo.prefix ?? '/api'}/block/${blockHash}/txs/${offset}`)).data;
|
|
39
|
+
const tx = txs
|
|
40
|
+
.filter((item) => item.txid == observation.sourceTxId)
|
|
41
|
+
.at(0);
|
|
42
|
+
if (tx)
|
|
43
|
+
return [tx];
|
|
44
|
+
offset += this.ESPLORA_BLOCK_TXS_LIMIT;
|
|
45
|
+
}
|
|
30
46
|
}
|
|
31
47
|
catch (err) {
|
|
32
|
-
|
|
33
|
-
return false;
|
|
48
|
+
throw new Error(`Fetch transactions by [${observation.sourceTxId}] id of related observation for [${this.chain}] chain failed: ${err}`);
|
|
34
49
|
}
|
|
35
|
-
return true;
|
|
36
50
|
};
|
|
37
51
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Y29pbkVzcGxvcmFSYXdEYXRhUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvcHJvdmlkZXJzL2JpdGNvaW4vYml0Y29pbkVzcGxvcmFSYXdEYXRhUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFHNUcsT0FBTyxLQUFLLE1BQU0sbUNBQW1DLENBQUM7QUFFdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHeEUsTUFBTSxPQUFPLDZCQUE4QixTQUFRLHVCQUFrRDtJQU12RjtJQUNBO0lBR0E7SUFDQTtJQVZaLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztJQUVuQixNQUFNLENBQUM7SUFFakIsWUFDWSxVQUFzQixFQUN0QixTQUVpQyxFQUNqQyxxQkFBcUQsRUFDckQsTUFBc0I7UUFFaEMsTUFBTSxLQUFLLEdBQ1QsU0FBUyxZQUFZLHVDQUF1QztZQUMxRCxDQUFDLENBQUMsZUFBZTtZQUNqQixDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQVhsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBRXdCO1FBQ2pDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBZ0M7UUFDckQsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFPaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxHQUFHO1lBQ2xDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJO1lBQ3BELE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRTtTQUNoRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxtQkFBbUIsR0FBRyxLQUFLLEVBQ25DLFdBQThCLEVBQ29CLEVBQUU7UUFDcEQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNwQyxNQUFNLE9BQU8sR0FBRyxDQUNkLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ25CLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sSUFBSSxNQUFNLFVBQVUsU0FBUyxFQUFFLENBQ3BFLENBQ0YsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ2hCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNmLE9BQU8sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDO2dCQUN4QixNQUFNLEdBQUcsR0FBRyxDQUNWLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ25CLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sSUFBSSxNQUFNLFVBQVUsU0FBUyxRQUFRLE1BQU0sRUFBRSxDQUNsRixDQUNGLENBQUMsSUFBSSxDQUFDO2dCQUNQLE1BQU0sRUFBRSxHQUFHLEdBQUc7cUJBQ1gsTUFBTSxDQUNMLENBQUMsSUFBK0IsRUFBRSxFQUFFLENBQ2xDLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FDdEM7cUJBQ0EsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNULElBQUksRUFBRTtvQkFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BCLE1BQU0sSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FDYiwwQkFBMEIsV0FBVyxDQUFDLFVBQVUsb0NBQW9DLElBQUksQ0FBQyxLQUFLLG1CQUFtQixHQUFHLEVBQUUsQ0FDdkgsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgT2JzZXJ2YXRpb25FbnRpdHkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBCaXRjb2luRXNwbG9yYU9ic2VydmF0aW9uRXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9iaXRjb2luLW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBCaXRjb2luUnVuZXNFc3Bsb3JhT2JzZXJ2YXRpb25FeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2JpdGNvaW4tcnVuZXMtb2JzZXJ2YXRpb24tZXh0cmFjdG9yJztcbmltcG9ydCB7IEJpdGNvaW5Fc3Bsb3JhVHJhbnNhY3Rpb24gfSBmcm9tICdAcm9zZW4tYnJpZGdlL2JpdGNvaW4tc2Nhbm5lcic7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCBheGlvcyBmcm9tICdAcm9zZW4tY2xpZW50cy9yYXRlLWxpbWl0ZWQtYXhpb3MnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFJhd0RhdGFQcm92aWRlciB9IGZyb20gJy4uLy4uL2Fic3RyYWN0UmF3RGF0YVByb3ZpZGVyJztcbmltcG9ydCB7IEVzcGxvcmFDb25uZWN0aW9uSW5mb0ludGVyZmFjZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIEJpdGNvaW5Fc3Bsb3JhUmF3RGF0YVByb3ZpZGVyIGV4dGVuZHMgQWJzdHJhY3RSYXdEYXRhUHJvdmlkZXI8Qml0Y29pbkVzcGxvcmFUcmFuc2FjdGlvbj4ge1xuICBFU1BMT1JBX0JMT0NLX1RYU19MSU1JVCA9IDI1O1xuXG4gIHByb3RlY3RlZCBjbGllbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgcHJvdGVjdGVkIGV4dHJhY3RvcjpcbiAgICAgIHwgQml0Y29pbkVzcGxvcmFPYnNlcnZhdGlvbkV4dHJhY3RvclxuICAgICAgfCBCaXRjb2luUnVuZXNFc3Bsb3JhT2JzZXJ2YXRpb25FeHRyYWN0b3IsXG4gICAgcHJvdGVjdGVkIGVzcGxvcmFDb25uZWN0aW9uSW5mbzogRXNwbG9yYUNvbm5lY3Rpb25JbmZvSW50ZXJmYWNlLFxuICAgIHByb3RlY3RlZCBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyLFxuICApIHtcbiAgICBjb25zdCBjaGFpbiA9XG4gICAgICBleHRyYWN0b3IgaW5zdGFuY2VvZiBCaXRjb2luUnVuZXNFc3Bsb3JhT2JzZXJ2YXRpb25FeHRyYWN0b3JcbiAgICAgICAgPyAnYml0Y29pbi1ydW5lcydcbiAgICAgICAgOiAnYml0Y29pbic7XG4gICAgc3VwZXIoY2hhaW4sIGRhdGFTb3VyY2UsIGV4dHJhY3RvciwgbG9nZ2VyKTtcbiAgICB0aGlzLmNsaWVudCA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgICBiYXNlVVJMOiBlc3Bsb3JhQ29ubmVjdGlvbkluZm8udXJsLFxuICAgICAgdGltZW91dDogKGVzcGxvcmFDb25uZWN0aW9uSW5mby50aW1lb3V0ID8/IDApICogMTAwMCxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGZldGNoIGJpdGNvaW4gdHJhbnNhY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGlucHV0IG9ic2VydmF0aW9uIHBhcmFtZXRlclxuICAgKlxuICAgKiBAcGFyYW0gb2JzZXJ2YXRpb25cbiAgICogQHJldHVybnMgeyBQcm9taXNlPEJpdGNvaW5Fc3Bsb3JhVHJhbnNhY3Rpb25bXT4gfVxuICAgKi9cbiAgcHJvdGVjdGVkIGZldGNoT2JzZXJ2YXRpb25UeHMgPSBhc3luYyAoXG4gICAgb2JzZXJ2YXRpb246IE9ic2VydmF0aW9uRW50aXR5LFxuICApOiBQcm9taXNlPEJpdGNvaW5Fc3Bsb3JhVHJhbnNhY3Rpb25bXSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBibG9ja0hhc2ggPSBvYnNlcnZhdGlvbi5ibG9jaztcbiAgICAgIGNvbnN0IHR4Q291bnQgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMuY2xpZW50LmdldChcbiAgICAgICAgICBgJHt0aGlzLmVzcGxvcmFDb25uZWN0aW9uSW5mby5wcmVmaXggPz8gJy9hcGknfS9ibG9jay8ke2Jsb2NrSGFzaH1gLFxuICAgICAgICApXG4gICAgICApLmRhdGEudHhfY291bnQ7XG4gICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgIHdoaWxlIChvZmZzZXQgPCB0eENvdW50KSB7XG4gICAgICAgIGNvbnN0IHR4cyA9IChcbiAgICAgICAgICBhd2FpdCB0aGlzLmNsaWVudC5nZXQoXG4gICAgICAgICAgICBgJHt0aGlzLmVzcGxvcmFDb25uZWN0aW9uSW5mby5wcmVmaXggPz8gJy9hcGknfS9ibG9jay8ke2Jsb2NrSGFzaH0vdHhzLyR7b2Zmc2V0fWAsXG4gICAgICAgICAgKVxuICAgICAgICApLmRhdGE7XG4gICAgICAgIGNvbnN0IHR4ID0gdHhzXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChpdGVtOiBCaXRjb2luRXNwbG9yYVRyYW5zYWN0aW9uKSA9PlxuICAgICAgICAgICAgICBpdGVtLnR4aWQgPT0gb2JzZXJ2YXRpb24uc291cmNlVHhJZCxcbiAgICAgICAgICApXG4gICAgICAgICAgLmF0KDApO1xuICAgICAgICBpZiAodHgpIHJldHVybiBbdHhdO1xuICAgICAgICBvZmZzZXQgKz0gdGhpcy5FU1BMT1JBX0JMT0NLX1RYU19MSU1JVDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEZldGNoIHRyYW5zYWN0aW9ucyBieSBbJHtvYnNlcnZhdGlvbi5zb3VyY2VUeElkfV0gaWQgb2YgcmVsYXRlZCBvYnNlcnZhdGlvbiBmb3IgWyR7dGhpcy5jaGFpbn1dIGNoYWluIGZhaWxlZDogJHtlcnJ9YCxcbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
2
|
import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
|
|
3
3
|
import { BitcoinRpcObservationExtractor } from '@rosen-bridge/bitcoin-observation-extractor';
|
|
4
|
+
import { BitcoinRunesRpcObservationExtractor } from '@rosen-bridge/bitcoin-runes-observation-extractor';
|
|
5
|
+
import { BitcoinRpcTransaction } from '@rosen-bridge/bitcoin-scanner';
|
|
4
6
|
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
5
7
|
import { AbstractRawDataProvider } from '../../abstractRawDataProvider';
|
|
6
8
|
import { RpcConnectionInfoInterface } from '../../types';
|
|
7
|
-
export declare class BitcoinRpcRawDataProvider extends AbstractRawDataProvider {
|
|
9
|
+
export declare class BitcoinRpcRawDataProvider extends AbstractRawDataProvider<BitcoinRpcTransaction> {
|
|
8
10
|
protected dataSource: DataSource;
|
|
9
|
-
protected extractor: BitcoinRpcObservationExtractor;
|
|
11
|
+
protected extractor: BitcoinRpcObservationExtractor | BitcoinRunesRpcObservationExtractor;
|
|
10
12
|
protected logger: AbstractLogger;
|
|
11
13
|
protected client: import("@rosen-clients/rate-limited-axios").Axios;
|
|
12
|
-
constructor(dataSource: DataSource, extractor: BitcoinRpcObservationExtractor, rpcConnectionInfo: RpcConnectionInfoInterface, logger: AbstractLogger);
|
|
14
|
+
constructor(dataSource: DataSource, extractor: BitcoinRpcObservationExtractor | BitcoinRunesRpcObservationExtractor, rpcConnectionInfo: RpcConnectionInfoInterface, logger: AbstractLogger);
|
|
13
15
|
/**
|
|
14
|
-
*
|
|
16
|
+
* fetch bitcoin transactions related to the input observation parameter
|
|
15
17
|
*
|
|
16
18
|
* @param observation
|
|
17
|
-
* @
|
|
19
|
+
* @returns { Promise<BitcoinRpcTransaction[]> }
|
|
18
20
|
*/
|
|
19
|
-
protected
|
|
21
|
+
protected fetchObservationTxs: (observation: ObservationEntity) => Promise<BitcoinRpcTransaction[]>;
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=bitcoinRpcRawDataProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoinRpcRawDataProvider.d.ts","sourceRoot":"","sources":["../../../lib/providers/bitcoin/bitcoinRpcRawDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"bitcoinRpcRawDataProvider.d.ts","sourceRoot":"","sources":["../../../lib/providers/bitcoin/bitcoinRpcRawDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,mCAAmC,EAAE,MAAM,mDAAmD,CAAC;AACxG,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,yBAA0B,SAAQ,uBAAuB,CAAC,qBAAqB,CAAC;IAIzF,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,SAAS,EACf,8BAA8B,GAC9B,mCAAmC;IAEvC,SAAS,CAAC,MAAM,EAAE,cAAc;IARlC,SAAS,CAAC,MAAM,oDAAC;gBAGL,UAAU,EAAE,UAAU,EACtB,SAAS,EACf,8BAA8B,GAC9B,mCAAmC,EACvC,iBAAiB,EAAE,0BAA0B,EACnC,MAAM,EAAE,cAAc;IAsBlC;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,GAC3B,aAAa,iBAAiB,KAC7B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAcjC;CACH"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BitcoinRunesRpcObservationExtractor } from '@rosen-bridge/bitcoin-runes-observation-extractor';
|
|
1
2
|
import axios from '@rosen-clients/rate-limited-axios';
|
|
2
3
|
import { AbstractRawDataProvider } from '../../abstractRawDataProvider';
|
|
3
4
|
export class BitcoinRpcRawDataProvider extends AbstractRawDataProvider {
|
|
@@ -6,7 +7,10 @@ export class BitcoinRpcRawDataProvider extends AbstractRawDataProvider {
|
|
|
6
7
|
logger;
|
|
7
8
|
client;
|
|
8
9
|
constructor(dataSource, extractor, rpcConnectionInfo, logger) {
|
|
9
|
-
|
|
10
|
+
const chain = extractor instanceof BitcoinRunesRpcObservationExtractor
|
|
11
|
+
? 'bitcoin-runes'
|
|
12
|
+
: 'bitcoin';
|
|
13
|
+
super(chain, dataSource, extractor, logger);
|
|
10
14
|
this.dataSource = dataSource;
|
|
11
15
|
this.extractor = extractor;
|
|
12
16
|
this.logger = logger;
|
|
@@ -24,26 +28,22 @@ export class BitcoinRpcRawDataProvider extends AbstractRawDataProvider {
|
|
|
24
28
|
});
|
|
25
29
|
}
|
|
26
30
|
/**
|
|
27
|
-
*
|
|
31
|
+
* fetch bitcoin transactions related to the input observation parameter
|
|
28
32
|
*
|
|
29
33
|
* @param observation
|
|
30
|
-
* @
|
|
34
|
+
* @returns { Promise<BitcoinRpcTransaction[]> }
|
|
31
35
|
*/
|
|
32
|
-
|
|
36
|
+
fetchObservationTxs = async (observation) => {
|
|
33
37
|
try {
|
|
34
|
-
|
|
35
|
-
const tx = await this.client.post('', {
|
|
38
|
+
return (await this.client.post('', {
|
|
36
39
|
method: 'getrawtransaction',
|
|
37
40
|
id: 0,
|
|
38
41
|
params: [observation.sourceTxId, true],
|
|
39
|
-
});
|
|
40
|
-
this.extractor.processTransactions([tx.data], block);
|
|
42
|
+
})).data?.result;
|
|
41
43
|
}
|
|
42
44
|
catch (err) {
|
|
43
|
-
|
|
44
|
-
return false;
|
|
45
|
+
throw new Error(`Fetch transactions by [${observation.sourceTxId}] id of related observation for [${this.chain}] chain failed: ${err}`);
|
|
45
46
|
}
|
|
46
|
-
return true;
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Y29pblJwY1Jhd0RhdGFQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9wcm92aWRlcnMvYml0Y29pbi9iaXRjb2luUnBjUmF3RGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBR3hHLE9BQU8sS0FBSyxNQUFNLG1DQUFtQyxDQUFDO0FBRXRELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx1QkFBOEM7SUFJL0U7SUFDQTtJQUlBO0lBUkYsTUFBTSxDQUFDO0lBRWpCLFlBQ1ksVUFBc0IsRUFDdEIsU0FFNkIsRUFDdkMsaUJBQTZDLEVBQ25DLE1BQXNCO1FBRWhDLE1BQU0sS0FBSyxHQUNULFNBQVMsWUFBWSxtQ0FBbUM7WUFDdEQsQ0FBQyxDQUFDLGVBQWU7WUFDakIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoQixLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFYbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUVvQjtRQUU3QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQU9oQyxNQUFNLElBQUksR0FDUixpQkFBaUIsQ0FBQyxRQUFRLElBQUksaUJBQWlCLENBQUMsUUFBUTtZQUN0RCxDQUFDLENBQUM7Z0JBQ0UsUUFBUSxFQUFFLGlCQUFpQixDQUFDLFFBQVE7Z0JBQ3BDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRO2FBQ3JDO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDekIsT0FBTyxFQUFFLGlCQUFpQixDQUFDLEdBQUc7WUFDOUIsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU87WUFDbEMsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO1lBQy9DLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sbUJBQW1CLEdBQUcsS0FBSyxFQUNuQyxXQUE4QixFQUNJLEVBQUU7UUFDcEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxDQUNMLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO2dCQUN6QixNQUFNLEVBQUUsbUJBQW1CO2dCQUMzQixFQUFFLEVBQUUsQ0FBQztnQkFDTCxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQzthQUN2QyxDQUFDLENBQ0gsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FDYiwwQkFBMEIsV0FBVyxDQUFDLFVBQVUsb0NBQW9DLElBQUksQ0FBQyxLQUFLLG1CQUFtQixHQUFHLEVBQUUsQ0FDdkgsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgT2JzZXJ2YXRpb25FbnRpdHkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBCaXRjb2luUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2JpdGNvaW4tb2JzZXJ2YXRpb24tZXh0cmFjdG9yJztcbmltcG9ydCB7IEJpdGNvaW5SdW5lc1JwY09ic2VydmF0aW9uRXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9iaXRjb2luLXJ1bmVzLW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBCaXRjb2luUnBjVHJhbnNhY3Rpb24gfSBmcm9tICdAcm9zZW4tYnJpZGdlL2JpdGNvaW4tc2Nhbm5lcic7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCBheGlvcyBmcm9tICdAcm9zZW4tY2xpZW50cy9yYXRlLWxpbWl0ZWQtYXhpb3MnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFJhd0RhdGFQcm92aWRlciB9IGZyb20gJy4uLy4uL2Fic3RyYWN0UmF3RGF0YVByb3ZpZGVyJztcbmltcG9ydCB7IFJwY0Nvbm5lY3Rpb25JbmZvSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQml0Y29pblJwY1Jhd0RhdGFQcm92aWRlciBleHRlbmRzIEFic3RyYWN0UmF3RGF0YVByb3ZpZGVyPEJpdGNvaW5ScGNUcmFuc2FjdGlvbj4ge1xuICBwcm90ZWN0ZWQgY2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHByb3RlY3RlZCBleHRyYWN0b3I6XG4gICAgICB8IEJpdGNvaW5ScGNPYnNlcnZhdGlvbkV4dHJhY3RvclxuICAgICAgfCBCaXRjb2luUnVuZXNScGNPYnNlcnZhdGlvbkV4dHJhY3RvcixcbiAgICBycGNDb25uZWN0aW9uSW5mbzogUnBjQ29ubmVjdGlvbkluZm9JbnRlcmZhY2UsXG4gICAgcHJvdGVjdGVkIGxvZ2dlcjogQWJzdHJhY3RMb2dnZXIsXG4gICkge1xuICAgIGNvbnN0IGNoYWluID1cbiAgICAgIGV4dHJhY3RvciBpbnN0YW5jZW9mIEJpdGNvaW5SdW5lc1JwY09ic2VydmF0aW9uRXh0cmFjdG9yXG4gICAgICAgID8gJ2JpdGNvaW4tcnVuZXMnXG4gICAgICAgIDogJ2JpdGNvaW4nO1xuICAgIHN1cGVyKGNoYWluLCBkYXRhU291cmNlLCBleHRyYWN0b3IsIGxvZ2dlcik7XG4gICAgY29uc3QgYXV0aCA9XG4gICAgICBycGNDb25uZWN0aW9uSW5mby51c2VybmFtZSAmJiBycGNDb25uZWN0aW9uSW5mby5wYXNzd29yZFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBycGNDb25uZWN0aW9uSW5mby51c2VybmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBycGNDb25uZWN0aW9uSW5mby5wYXNzd29yZCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xpZW50ID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgIGJhc2VVUkw6IHJwY0Nvbm5lY3Rpb25JbmZvLnVybCxcbiAgICAgIHRpbWVvdXQ6IHJwY0Nvbm5lY3Rpb25JbmZvLnRpbWVvdXQsXG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgIGF1dGg6IGF1dGgsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogZmV0Y2ggYml0Y29pbiB0cmFuc2FjdGlvbnMgcmVsYXRlZCB0byB0aGUgaW5wdXQgb2JzZXJ2YXRpb24gcGFyYW1ldGVyXG4gICAqXG4gICAqIEBwYXJhbSBvYnNlcnZhdGlvblxuICAgKiBAcmV0dXJucyB7IFByb21pc2U8Qml0Y29pblJwY1RyYW5zYWN0aW9uW10+IH1cbiAgICovXG4gIHByb3RlY3RlZCBmZXRjaE9ic2VydmF0aW9uVHhzID0gYXN5bmMgKFxuICAgIG9ic2VydmF0aW9uOiBPYnNlcnZhdGlvbkVudGl0eSxcbiAgKTogUHJvbWlzZTxCaXRjb2luUnBjVHJhbnNhY3Rpb25bXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBhd2FpdCB0aGlzLmNsaWVudC5wb3N0KCcnLCB7XG4gICAgICAgICAgbWV0aG9kOiAnZ2V0cmF3dHJhbnNhY3Rpb24nLFxuICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgIHBhcmFtczogW29ic2VydmF0aW9uLnNvdXJjZVR4SWQsIHRydWVdLFxuICAgICAgICB9KVxuICAgICAgKS5kYXRhPy5yZXN1bHQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGZXRjaCB0cmFuc2FjdGlvbnMgYnkgWyR7b2JzZXJ2YXRpb24uc291cmNlVHhJZH1dIGlkIG9mIHJlbGF0ZWQgb2JzZXJ2YXRpb24gZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbiBmYWlsZWQ6ICR7ZXJyfWAsXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/providers/bitcoin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/providers/bitcoin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { BitcoinRpcRawDataProvider } from './bitcoinRpcRawDataProvider';
|
|
2
|
-
|
|
2
|
+
export { BitcoinEsploraRawDataProvider } from './bitcoinEsploraRawDataProvider';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvcHJvdmlkZXJzL2JpdGNvaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBCaXRjb2luUnBjUmF3RGF0YVByb3ZpZGVyIH0gZnJvbSAnLi9iaXRjb2luUnBjUmF3RGF0YVByb3ZpZGVyJztcbmV4cG9ydCB7IEJpdGNvaW5Fc3Bsb3JhUmF3RGF0YVByb3ZpZGVyIH0gZnJvbSAnLi9iaXRjb2luRXNwbG9yYVJhd0RhdGFQcm92aWRlcic7XG4iXX0=
|
|
@@ -3,8 +3,8 @@ import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor'
|
|
|
3
3
|
import { CardanoKoiosObservationExtractor } from '@rosen-bridge/cardano-observation-extractor';
|
|
4
4
|
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
5
5
|
import { AbstractRawDataProvider } from '../../abstractRawDataProvider';
|
|
6
|
-
import { ConnectionByAuthInfoInterface } from '../../types';
|
|
7
|
-
export declare class CardanoKoiosRawDataProvider extends AbstractRawDataProvider {
|
|
6
|
+
import { ConnectionByAuthInfoInterface, KoiosTransaction } from '../../types';
|
|
7
|
+
export declare class CardanoKoiosRawDataProvider extends AbstractRawDataProvider<KoiosTransaction> {
|
|
8
8
|
protected dataSource: DataSource;
|
|
9
9
|
protected extractor: CardanoKoiosObservationExtractor;
|
|
10
10
|
protected logger: AbstractLogger;
|
|
@@ -98,11 +98,11 @@ export declare class CardanoKoiosRawDataProvider extends AbstractRawDataProvider
|
|
|
98
98
|
};
|
|
99
99
|
constructor(dataSource: DataSource, extractor: CardanoKoiosObservationExtractor, koiosConnectionInfo: ConnectionByAuthInfoInterface, logger: AbstractLogger);
|
|
100
100
|
/**
|
|
101
|
-
*
|
|
101
|
+
* fetch cardano-koios transactions related to the input observation parameter
|
|
102
102
|
*
|
|
103
103
|
* @param observation
|
|
104
|
-
* @
|
|
104
|
+
* @returns { Promise<KoiosTransaction[]> }
|
|
105
105
|
*/
|
|
106
|
-
protected
|
|
106
|
+
protected fetchObservationTxs: (observation: ObservationEntity) => Promise<KoiosTransaction[] | undefined>;
|
|
107
107
|
}
|
|
108
108
|
//# sourceMappingURL=cardanoKoiosRawDataProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cardanoKoiosRawDataProvider.d.ts","sourceRoot":"","sources":["../../../lib/providers/cardano/cardanoKoiosRawDataProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"cardanoKoiosRawDataProvider.d.ts","sourceRoot":"","sources":["../../../lib/providers/cardano/cardanoKoiosRawDataProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE9E,qBAAa,2BAA4B,SAAQ,uBAAuB,CAAC,gBAAgB,CAAC;IAItF,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,SAAS,EAAE,gCAAgC;IAErD,SAAS,CAAC,MAAM,EAAE,cAAc;IANlC,SAAS,CAAC,MAAM;;;uBAVkD,CAAC;;;;;0BAO9C,CAAC;4BAEsB,CAAC;oCAIf,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAwCw8G,CAAC;;;;4BAAuY,CAAC;4BAA0G,CAAC;;;;+BAAuY,CAAC;;;;;;;;;;;;4BAAmwC,CAAC;kCAAgH,CAAC;gCAA0H,CAAC;;;;;;;;;;;MA3Cl0L;gBAGL,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gCAAgC,EACrD,mBAAmB,EAAE,6BAA6B,EACxC,MAAM,EAAE,cAAc;IASlC;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,GAC3B,aAAa,iBAAiB,KAC7B,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAkBxC;CACH"}
|