@rosen-bridge/abstract-extractor 0.3.0 → 1.0.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 +20 -0
- package/dist/ergo/AbstractErgoExtractor.d.ts +31 -8
- package/dist/ergo/AbstractErgoExtractor.d.ts.map +1 -1
- package/dist/ergo/AbstractErgoExtractor.js +73 -8
- package/dist/ergo/AbstractErgoExtractorAction.d.ts +38 -10
- package/dist/ergo/AbstractErgoExtractorAction.d.ts.map +1 -1
- package/dist/ergo/AbstractErgoExtractorAction.js +134 -1
- package/dist/ergo/AbstractErgoExtractorEntity.d.ts +11 -0
- package/dist/ergo/AbstractErgoExtractorEntity.d.ts.map +1 -0
- package/dist/ergo/AbstractErgoExtractorEntity.js +57 -0
- package/dist/ergo/index.d.ts +1 -0
- package/dist/ergo/index.d.ts.map +1 -1
- package/dist/ergo/index.js +2 -1
- package/dist/ergo/initializable/AbstractInitializable.d.ts +4 -3
- package/dist/ergo/initializable/AbstractInitializable.d.ts.map +1 -1
- package/dist/ergo/initializable/AbstractInitializable.js +9 -5
- package/dist/ergo/initializable/AbstractInitializableAction.d.ts +7 -2
- package/dist/ergo/initializable/AbstractInitializableAction.d.ts.map +1 -1
- package/dist/ergo/initializable/AbstractInitializableAction.js +11 -1
- package/dist/ergo/interfaces.d.ts +21 -7
- package/dist/ergo/interfaces.d.ts.map +1 -1
- package/dist/ergo/interfaces.js +8 -1
- package/lib/ergo/AbstractErgoExtractor.ts +107 -23
- package/lib/ergo/AbstractErgoExtractorAction.ts +187 -18
- package/lib/ergo/AbstractErgoExtractorEntity.ts +28 -0
- package/lib/ergo/index.ts +1 -0
- package/lib/ergo/initializable/AbstractInitializable.ts +22 -9
- package/lib/ergo/initializable/AbstractInitializableAction.ts +19 -3
- package/lib/ergo/interfaces.ts +25 -7
- package/package.json +6 -2
- package/tests/{AbstractExtractor.mock.ts → AbstractErgoExtractor.mock.ts} +12 -7
- package/tests/AbstractErgoExtractor.spec.ts +281 -0
- package/tests/AbstractErgoExtractorAction.mock.ts +45 -0
- package/tests/AbstractErgoExtractorAction.spec.ts +269 -0
- package/tests/initializable/AbstractInitializable.mock.ts +15 -8
- package/tests/initializable/AbstractInitializable.spec.ts +37 -5
- package/tests/initializable/AbstractInitializableAction.mock.ts +45 -0
- package/tests/initializable/AbstractInitializableAction.spec.ts +65 -0
- package/tests/testData.ts +38 -2
- package/tests/testUtils.ts +22 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/ergo/initializable/InitializableByAddress.d.ts +0 -19
- package/dist/ergo/initializable/InitializableByAddress.d.ts.map +0 -1
- package/dist/ergo/initializable/InitializableByAddress.js +0 -30
- package/dist/ergo/initializable/InitializableByToken.d.ts +0 -19
- package/dist/ergo/initializable/InitializableByToken.d.ts.map +0 -1
- package/dist/ergo/initializable/InitializableByToken.js +0 -30
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/tests/AbstractExtractor.spec.ts +0 -106
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @rosen-bridge/abstract-extractor
|
|
2
2
|
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- Move database action shared logic to abstract class
|
|
8
|
+
- Add callback support to abstract ergo extractor and update abstract db action interface
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Ensure initialization with the node is stateful and resilient to network issues
|
|
13
|
+
- Fix `processTransaction` to return false if data insertion encounters error
|
|
14
|
+
- Modify the initialization procedure to retry upon failure
|
|
15
|
+
|
|
16
|
+
## 0.3.1
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Remove unnecessary properties from abstract extracted data type
|
|
21
|
+
- Add extras field to store extra information for spending
|
|
22
|
+
|
|
3
23
|
## 0.3.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
|
@@ -1,22 +1,45 @@
|
|
|
1
|
-
import { DataSource } from 'typeorm';
|
|
2
1
|
import { AbstractLogger, DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
3
2
|
import { AbstractExtractor } from '../AbstractExtractor';
|
|
4
3
|
import { AbstractErgoExtractorAction } from './AbstractErgoExtractorAction';
|
|
5
4
|
import { BlockInfo } from '../interfaces';
|
|
6
|
-
import { Transaction, OutputBox,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
protected abstract actions: AbstractErgoExtractorAction<ExtractedData>;
|
|
5
|
+
import { Transaction, OutputBox, AbstractBoxData, CallbackType, CallbackMap, CallbackDataMap } from './interfaces';
|
|
6
|
+
import { AbstractErgoExtractorEntity } from './AbstractErgoExtractorEntity';
|
|
7
|
+
export declare abstract class AbstractErgoExtractor<ExtractedData extends AbstractBoxData, ExtractorEntity extends AbstractErgoExtractorEntity> extends AbstractExtractor<Transaction> {
|
|
8
|
+
protected abstract actions: AbstractErgoExtractorAction<ExtractedData, ExtractorEntity>;
|
|
10
9
|
protected logger: AbstractLogger;
|
|
10
|
+
protected callbacks: {
|
|
11
|
+
[K in CallbackType]: Map<string, CallbackMap<ExtractedData>[K]>;
|
|
12
|
+
};
|
|
13
|
+
private callbackMutex;
|
|
11
14
|
constructor(logger?: DummyLogger);
|
|
15
|
+
/**
|
|
16
|
+
* hook a new callback on a callback type
|
|
17
|
+
* @param type
|
|
18
|
+
* @param id
|
|
19
|
+
* @param callback
|
|
20
|
+
* @returns callback registered id
|
|
21
|
+
*/
|
|
22
|
+
hook: <T extends CallbackType>(type: T, callback: CallbackMap<ExtractedData>[T]) => Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* unhook a callback on a type
|
|
25
|
+
* returns false if there is no registered callback with the id
|
|
26
|
+
* @param type
|
|
27
|
+
* @param id
|
|
28
|
+
* @returns success status
|
|
29
|
+
*/
|
|
30
|
+
unhook: (type: CallbackType, id: string) => Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* trigger all callbacks registered on a specific type with the provided data
|
|
33
|
+
* @param type
|
|
34
|
+
* @param data
|
|
35
|
+
*/
|
|
36
|
+
protected triggerCallbacks<T extends CallbackType>(type: T, data: CallbackDataMap<ExtractedData>[T]): void;
|
|
12
37
|
/**
|
|
13
38
|
* extract box data to proper format (not including spending information)
|
|
14
39
|
* @param box
|
|
15
|
-
* @param blockId box inclusion block hash
|
|
16
|
-
* @param height box inclusion block height
|
|
17
40
|
* @return extracted data in proper format
|
|
18
41
|
*/
|
|
19
|
-
abstract extractBoxData: (box: OutputBox
|
|
42
|
+
abstract extractBoxData: (box: OutputBox) => ExtractedData | undefined;
|
|
20
43
|
/**
|
|
21
44
|
* check proper data format in the box
|
|
22
45
|
* @param box
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractErgoExtractor.d.ts","sourceRoot":"","sources":["../../lib/ergo/AbstractErgoExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"AbstractErgoExtractor.d.ts","sourceRoot":"","sources":["../../lib/ergo/AbstractErgoExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAK5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,WAAW,EACX,SAAS,EACT,eAAe,EAEf,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,8BAAsB,qBAAqB,CACzC,aAAa,SAAS,eAAe,EACrC,eAAe,SAAS,2BAA2B,CACnD,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CACrD,aAAa,EACb,eAAe,CAChB,CAAC;IACF,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,SAAS,EAAE;SAClB,CAAC,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;KAChE,CAKC;IACF,OAAO,CAAC,aAAa,CAAe;gBAExB,MAAM,cAAoB;IAKtC;;;;;;OAMG;IACH,IAAI,iCACI,CAAC,YACG,YAAY,aAAa,CAAC,CAAC,CAAC,CAAC,KACtC,QAAQ,MAAM,CAAC,CAOhB;IAEF;;;;;;OAMG;IACH,MAAM,SAAgB,YAAY,MAAM,MAAM,KAAG,QAAQ,OAAO,CAAC,CAY/D;IAEF;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAC/C,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GACtC,IAAI;IAOP;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,aAAa,GAAG,SAAS,CAAC;IAEvE;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC;IAE9C;;;;;OAKG;IACH,mBAAmB,QACZ,WAAW,EAAE,SACX,SAAS,KACf,QAAQ,OAAO,CAAC,CAuDjB;IAEF;;;OAGG;IACH,SAAS,SAAgB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAM7C;CACH"}
|
|
@@ -1,13 +1,66 @@
|
|
|
1
1
|
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
2
2
|
import JsonBigInt from '@rosen-bridge/json-bigint';
|
|
3
|
+
import { Mutex } from 'await-semaphore';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
3
5
|
import { AbstractExtractor } from '../AbstractExtractor';
|
|
6
|
+
import { CallbackType, } from './interfaces';
|
|
4
7
|
export class AbstractErgoExtractor extends AbstractExtractor {
|
|
5
|
-
dataSource;
|
|
6
8
|
logger;
|
|
9
|
+
callbacks = {
|
|
10
|
+
[CallbackType.Update]: new Map(),
|
|
11
|
+
[CallbackType.Insert]: new Map(),
|
|
12
|
+
[CallbackType.Delete]: new Map(),
|
|
13
|
+
[CallbackType.Spend]: new Map(),
|
|
14
|
+
};
|
|
15
|
+
callbackMutex = new Mutex();
|
|
7
16
|
constructor(logger = new DummyLogger()) {
|
|
8
17
|
super();
|
|
9
18
|
this.logger = logger;
|
|
10
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* hook a new callback on a callback type
|
|
22
|
+
* @param type
|
|
23
|
+
* @param id
|
|
24
|
+
* @param callback
|
|
25
|
+
* @returns callback registered id
|
|
26
|
+
*/
|
|
27
|
+
hook = async (type, callback) => {
|
|
28
|
+
const release = await this.callbackMutex.acquire();
|
|
29
|
+
const callbackMap = this.callbacks[type];
|
|
30
|
+
const id = uuidv4();
|
|
31
|
+
callbackMap.set(id, callback);
|
|
32
|
+
release();
|
|
33
|
+
return id;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* unhook a callback on a type
|
|
37
|
+
* returns false if there is no registered callback with the id
|
|
38
|
+
* @param type
|
|
39
|
+
* @param id
|
|
40
|
+
* @returns success status
|
|
41
|
+
*/
|
|
42
|
+
unhook = async (type, id) => {
|
|
43
|
+
const release = await this.callbackMutex.acquire();
|
|
44
|
+
const callbackMap = this.callbacks[type];
|
|
45
|
+
if (!callbackMap.has(id)) {
|
|
46
|
+
this.logger.warn(`Callback with Id [${id}] is not registered for type [${type}].`);
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
callbackMap.delete(id);
|
|
50
|
+
release();
|
|
51
|
+
return true;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* trigger all callbacks registered on a specific type with the provided data
|
|
55
|
+
* @param type
|
|
56
|
+
* @param data
|
|
57
|
+
*/
|
|
58
|
+
triggerCallbacks(type, data) {
|
|
59
|
+
const callbackMap = this.callbacks[type];
|
|
60
|
+
callbackMap.forEach((callback) => {
|
|
61
|
+
callback(data);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
11
64
|
/**
|
|
12
65
|
* process a list of transactions in a block and store required information
|
|
13
66
|
* @param txs list of transactions in the block
|
|
@@ -24,7 +77,7 @@ export class AbstractErgoExtractor extends AbstractExtractor {
|
|
|
24
77
|
continue;
|
|
25
78
|
}
|
|
26
79
|
this.logger.debug(`Trying to extract data from box ${output.boxId}`);
|
|
27
|
-
const extractedData = this.extractBoxData(output
|
|
80
|
+
const extractedData = this.extractBoxData(output);
|
|
28
81
|
if (extractedData) {
|
|
29
82
|
this.logger.debug(`Extracted data ${JsonBigInt.stringify(extractedData)} from box ${output.boxId}`);
|
|
30
83
|
boxes.push(extractedData);
|
|
@@ -36,12 +89,20 @@ export class AbstractErgoExtractor extends AbstractExtractor {
|
|
|
36
89
|
boxIndex += 1;
|
|
37
90
|
}
|
|
38
91
|
}
|
|
39
|
-
if (boxes.length > 0)
|
|
40
|
-
await this.actions.
|
|
41
|
-
|
|
92
|
+
if (boxes.length > 0) {
|
|
93
|
+
if (!(await this.actions.storeBoxes(boxes, block, this.getId()))) {
|
|
94
|
+
this.logger.warn(`Data insertion failed for ${this.getId()} at the block ${block.height}`);
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
this.triggerCallbacks(CallbackType.Insert, boxes);
|
|
98
|
+
}
|
|
99
|
+
const spentData = await this.actions.spendBoxes(spentInfos, block, this.getId());
|
|
100
|
+
if (spentData.length > 0) {
|
|
101
|
+
this.triggerCallbacks(CallbackType.Spend, spentData);
|
|
102
|
+
}
|
|
42
103
|
}
|
|
43
104
|
catch (e) {
|
|
44
|
-
this.logger.error(`
|
|
105
|
+
this.logger.error(`Processing transactions failed for ${this.getId()} at the block ${block.height} with error: ${e}`);
|
|
45
106
|
return false;
|
|
46
107
|
}
|
|
47
108
|
return true;
|
|
@@ -51,7 +112,11 @@ export class AbstractErgoExtractor extends AbstractExtractor {
|
|
|
51
112
|
* @param hash block hash
|
|
52
113
|
*/
|
|
53
114
|
forkBlock = async (hash) => {
|
|
54
|
-
await this.actions.deleteBlockBoxes(hash, this.getId());
|
|
115
|
+
const result = await this.actions.deleteBlockBoxes(hash, this.getId());
|
|
116
|
+
if (result.deletedData.length > 0)
|
|
117
|
+
this.triggerCallbacks(CallbackType.Delete, result.deletedData);
|
|
118
|
+
if (result.updatedData.length > 0)
|
|
119
|
+
this.triggerCallbacks(CallbackType.Update, result.updatedData);
|
|
55
120
|
};
|
|
56
121
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VyZ28vQWJzdHJhY3RFcmdvRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFVekQsTUFBTSxPQUFnQixxQkFFcEIsU0FBUSxpQkFBOEI7SUFDbkIsVUFBVSxDQUFhO0lBRWhDLE1BQU0sQ0FBaUI7SUFFakMsWUFBWSxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUU7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBc0JEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLEdBQUcsS0FBSyxFQUN6QixHQUFrQixFQUNsQixLQUFnQixFQUNFLEVBQUU7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQXlCLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFVBQVUsR0FBcUIsRUFBRSxDQUFDO1lBQ3hDLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssTUFBTSxNQUFNLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUMxQixTQUFTO29CQUNYLENBQUM7b0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUNyRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxNQUFNLEVBQ04sS0FBSyxDQUFDLElBQUksRUFDVixLQUFLLENBQUMsTUFBTSxDQUNiLENBQUM7b0JBQ0YsSUFBSSxhQUFhLEVBQUUsQ0FBQzt3QkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2Ysa0JBQWtCLFVBQVUsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLGFBQ25ELE1BQU0sQ0FBQyxLQUNULEVBQUUsQ0FDSCxDQUFDO3dCQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBOEIsQ0FBQyxDQUFDO29CQUM3QyxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixLQUFLLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUN0RSxRQUFRLElBQUksQ0FBQyxDQUFDO2dCQUNoQixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDRCQUE0QixJQUFJLENBQUMsS0FBSyxFQUFFLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQ3ZFLENBQUM7WUFDRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFNBQVMsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFpQixFQUFFO1FBQ2hELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgSnNvbkJpZ0ludCBmcm9tICdAcm9zZW4tYnJpZGdlL2pzb24tYmlnaW50JztcblxuaW1wb3J0IHsgQWJzdHJhY3RFeHRyYWN0b3IgfSBmcm9tICcuLi9BYnN0cmFjdEV4dHJhY3Rvcic7XG5pbXBvcnQgeyBBYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb24gfSBmcm9tICcuL0Fic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbic7XG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uLFxuICBPdXRwdXRCb3gsXG4gIEVyZ29FeHRyYWN0ZWREYXRhLFxuICBTcGVuZEluZm8sXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEVyZ29FeHRyYWN0b3I8XG4gIEV4dHJhY3RlZERhdGEgZXh0ZW5kcyBFcmdvRXh0cmFjdGVkRGF0YVxuPiBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhU291cmNlOiBEYXRhU291cmNlO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYWN0aW9uczogQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uPEV4dHJhY3RlZERhdGE+O1xuICBwcm90ZWN0ZWQgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcblxuICBjb25zdHJ1Y3Rvcihsb2dnZXIgPSBuZXcgRHVtbXlMb2dnZXIoKSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gIH1cblxuICAvKipcbiAgICogZXh0cmFjdCBib3ggZGF0YSB0byBwcm9wZXIgZm9ybWF0IChub3QgaW5jbHVkaW5nIHNwZW5kaW5nIGluZm9ybWF0aW9uKVxuICAgKiBAcGFyYW0gYm94XG4gICAqIEBwYXJhbSBibG9ja0lkIGJveCBpbmNsdXNpb24gYmxvY2sgaGFzaFxuICAgKiBAcGFyYW0gaGVpZ2h0IGJveCBpbmNsdXNpb24gYmxvY2sgaGVpZ2h0XG4gICAqIEByZXR1cm4gZXh0cmFjdGVkIGRhdGEgaW4gcHJvcGVyIGZvcm1hdFxuICAgKi9cbiAgYWJzdHJhY3QgZXh0cmFjdEJveERhdGE6IChcbiAgICBib3g6IE91dHB1dEJveCxcbiAgICBibG9ja0lkOiBzdHJpbmcsXG4gICAgaGVpZ2h0OiBudW1iZXJcbiAgKSA9PiBPbWl0PEV4dHJhY3RlZERhdGEsICdzcGVuZEJsb2NrJyB8ICdzcGVuZEhlaWdodCc+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBjaGVjayBwcm9wZXIgZGF0YSBmb3JtYXQgaW4gdGhlIGJveFxuICAgKiBAcGFyYW0gYm94XG4gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgYm94IGhhcyB0aGUgcmVxdWlyZWQgZGF0YSBhbmQgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBhYnN0cmFjdCBoYXNEYXRhOiAoYm94OiBPdXRwdXRCb3gpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHByb2Nlc3MgYSBsaXN0IG9mIHRyYW5zYWN0aW9ucyBpbiBhIGJsb2NrIGFuZCBzdG9yZSByZXF1aXJlZCBpbmZvcm1hdGlvblxuICAgKiBAcGFyYW0gdHhzIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGluIHRoZSBibG9ja1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHJldHVybiB0cnVlIGlmIHRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgYW5kIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHJvY2Vzc1RyYW5zYWN0aW9ucyA9IGFzeW5jIChcbiAgICB0eHM6IFRyYW5zYWN0aW9uW10sXG4gICAgYmxvY2s6IEJsb2NrSW5mb1xuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYm94ZXM6IEFycmF5PEV4dHJhY3RlZERhdGE+ID0gW107XG4gICAgICBjb25zdCBzcGVudEluZm9zOiBBcnJheTxTcGVuZEluZm8+ID0gW107XG4gICAgICBmb3IgKGNvbnN0IHR4IG9mIHR4cykge1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiB0eC5vdXRwdXRzKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmhhc0RhdGEob3V0cHV0KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBUcnlpbmcgdG8gZXh0cmFjdCBkYXRhIGZyb20gYm94ICR7b3V0cHV0LmJveElkfWApO1xuICAgICAgICAgIGNvbnN0IGV4dHJhY3RlZERhdGEgPSB0aGlzLmV4dHJhY3RCb3hEYXRhKFxuICAgICAgICAgICAgb3V0cHV0LFxuICAgICAgICAgICAgYmxvY2suaGFzaCxcbiAgICAgICAgICAgIGJsb2NrLmhlaWdodFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGV4dHJhY3RlZERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBgRXh0cmFjdGVkIGRhdGEgJHtKc29uQmlnSW50LnN0cmluZ2lmeShleHRyYWN0ZWREYXRhKX0gZnJvbSBib3ggJHtcbiAgICAgICAgICAgICAgICBvdXRwdXQuYm94SWRcbiAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBib3hlcy5wdXNoKGV4dHJhY3RlZERhdGEgYXMgRXh0cmFjdGVkRGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBib3hJbmRleCA9IDE7XG4gICAgICAgIGZvciAoY29uc3QgaW5wdXQgb2YgdHguaW5wdXRzKSB7XG4gICAgICAgICAgc3BlbnRJbmZvcy5wdXNoKHsgdHhJZDogdHguaWQsIGJveElkOiBpbnB1dC5ib3hJZCwgaW5kZXg6IGJveEluZGV4IH0pO1xuICAgICAgICAgIGJveEluZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGJveGVzLmxlbmd0aCA+IDApIGF3YWl0IHRoaXMuYWN0aW9ucy5pbnNlcnRCb3hlcyhib3hlcywgdGhpcy5nZXRJZCgpKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5zcGVuZEJveGVzKHNwZW50SW5mb3MsIGJsb2NrLCB0aGlzLmdldElkKCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBgRXJyb3IgaW4gc3RvcmluZyBkYXRhIGluICR7dGhpcy5nZXRJZCgpfSBvZiB0aGUgYmxvY2sgJHtibG9ja306ICR7ZX1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmb3JrIG9uZSBibG9jayBhbmQgcmVtb3ZlIGFsbCBzdG9yZWQgaW5mb3JtYXRpb24gZm9yIHRoaXMgYmxvY2tcbiAgICogQHBhcmFtIGhhc2ggYmxvY2sgaGFzaFxuICAgKi9cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5kZWxldGVCbG9ja0JveGVzKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG59XG4iXX0=
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VyZ28vQWJzdHJhY3RFcmdvRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3pELE9BQU8sRUFLTCxZQUFZLEdBR2IsTUFBTSxjQUFjLENBQUM7QUFHdEIsTUFBTSxPQUFnQixxQkFHcEIsU0FBUSxpQkFBOEI7SUFLNUIsTUFBTSxDQUFpQjtJQUN2QixTQUFTLEdBRWY7UUFDRixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUNoQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUNoQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUNoQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRTtLQUNoQyxDQUFDO0lBQ00sYUFBYSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7SUFFcEMsWUFBWSxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUU7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBSSxHQUFHLEtBQUssRUFDVixJQUFPLEVBQ1AsUUFBdUMsRUFDdEIsRUFBRTtRQUNuQixNQUFNLE9BQU8s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LE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRSxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDL0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IEpzb25CaWdJbnQgZnJvbSAnQHJvc2VuLWJyaWRnZS9qc29uLWJpZ2ludCc7XG5pbXBvcnQgeyBNdXRleCB9IGZyb20gJ2F3YWl0LXNlbWFwaG9yZSc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuaW1wb3J0IHsgQWJzdHJhY3RFeHRyYWN0b3IgfSBmcm9tICcuLi9BYnN0cmFjdEV4dHJhY3Rvcic7XG5pbXBvcnQgeyBBYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb24gfSBmcm9tICcuL0Fic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbic7XG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uLFxuICBPdXRwdXRCb3gsXG4gIEFic3RyYWN0Qm94RGF0YSxcbiAgU3BlbmRJbmZvLFxuICBDYWxsYmFja1R5cGUsXG4gIENhbGxiYWNrTWFwLFxuICBDYWxsYmFja0RhdGFNYXAsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHkgfSBmcm9tICcuL0Fic3RyYWN0RXJnb0V4dHJhY3RvckVudGl0eSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEVyZ29FeHRyYWN0b3I8XG4gIEV4dHJhY3RlZERhdGEgZXh0ZW5kcyBBYnN0cmFjdEJveERhdGEsXG4gIEV4dHJhY3RvckVudGl0eSBleHRlbmRzIEFic3RyYWN0RXJnb0V4dHJhY3RvckVudGl0eVxuPiBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhY3Rpb25zOiBBYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb248XG4gICAgRXh0cmFjdGVkRGF0YSxcbiAgICBFeHRyYWN0b3JFbnRpdHlcbiAgPjtcbiAgcHJvdGVjdGVkIGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIHByb3RlY3RlZCBjYWxsYmFja3M6IHtcbiAgICBbSyBpbiBDYWxsYmFja1R5cGVdOiBNYXA8c3RyaW5nLCBDYWxsYmFja01hcDxFeHRyYWN0ZWREYXRhPltLXT47XG4gIH0gPSB7XG4gICAgW0NhbGxiYWNrVHlwZS5VcGRhdGVdOiBuZXcgTWFwKCksXG4gICAgW0NhbGxiYWNrVHlwZS5JbnNlcnRdOiBuZXcgTWFwKCksXG4gICAgW0NhbGxiYWNrVHlwZS5EZWxldGVdOiBuZXcgTWFwKCksXG4gICAgW0NhbGxiYWNrVHlwZS5TcGVuZF06IG5ldyBNYXAoKSxcbiAgfTtcbiAgcHJpdmF0ZSBjYWxsYmFja011dGV4ID0gbmV3IE11dGV4KCk7XG5cbiAgY29uc3RydWN0b3IobG9nZ2VyID0gbmV3IER1bW15TG9nZ2VyKCkpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIGhvb2sgYSBuZXcgY2FsbGJhY2sgb24gYSBjYWxsYmFjayB0eXBlXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogQHJldHVybnMgY2FsbGJhY2sgcmVnaXN0ZXJlZCBpZFxuICAgKi9cbiAgaG9vayA9IGFzeW5jIDxUIGV4dGVuZHMgQ2FsbGJhY2tUeXBlPihcbiAgICB0eXBlOiBULFxuICAgIGNhbGxiYWNrOiBDYWxsYmFja01hcDxFeHRyYWN0ZWREYXRhPltUXVxuICApOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IHJlbGVhc2UgPSBhd2FpdCB0aGlzLmNhbGxiYWNrTXV0ZXguYWNxdWlyZSgpO1xuICAgIGNvbnN0IGNhbGxiYWNrTWFwID0gdGhpcy5jYWxsYmFja3NbdHlwZV07XG4gICAgY29uc3QgaWQgPSB1dWlkdjQoKTtcbiAgICBjYWxsYmFja01hcC5zZXQoaWQsIGNhbGxiYWNrKTtcbiAgICByZWxlYXNlKCk7XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuXG4gIC8qKlxuICAgKiB1bmhvb2sgYSBjYWxsYmFjayBvbiBhIHR5cGVcbiAgICogcmV0dXJucyBmYWxzZSBpZiB0aGVyZSBpcyBubyByZWdpc3RlcmVkIGNhbGxiYWNrIHdpdGggdGhlIGlkXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcmV0dXJucyBzdWNjZXNzIHN0YXR1c1xuICAgKi9cbiAgdW5ob29rID0gYXN5bmMgKHR5cGU6IENhbGxiYWNrVHlwZSwgaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IHJlbGVhc2UgPSBhd2FpdCB0aGlzLmNhbGxiYWNrTXV0ZXguYWNxdWlyZSgpO1xuICAgIGNvbnN0IGNhbGxiYWNrTWFwID0gdGhpcy5jYWxsYmFja3NbdHlwZV07XG4gICAgaWYgKCFjYWxsYmFja01hcC5oYXMoaWQpKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICBgQ2FsbGJhY2sgd2l0aCBJZCBbJHtpZH1dIGlzIG5vdCByZWdpc3RlcmVkIGZvciB0eXBlIFske3R5cGV9XS5gXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjYWxsYmFja01hcC5kZWxldGUoaWQpO1xuICAgIHJlbGVhc2UoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAvKipcbiAgICogdHJpZ2dlciBhbGwgY2FsbGJhY2tzIHJlZ2lzdGVyZWQgb24gYSBzcGVjaWZpYyB0eXBlIHdpdGggdGhlIHByb3ZpZGVkIGRhdGFcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCB0cmlnZ2VyQ2FsbGJhY2tzPFQgZXh0ZW5kcyBDYWxsYmFja1R5cGU+KFxuICAgIHR5cGU6IFQsXG4gICAgZGF0YTogQ2FsbGJhY2tEYXRhTWFwPEV4dHJhY3RlZERhdGE+W1RdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNhbGxiYWNrTWFwID0gdGhpcy5jYWxsYmFja3NbdHlwZV07XG4gICAgY2FsbGJhY2tNYXAuZm9yRWFjaCgoY2FsbGJhY2spID0+IHtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGV4dHJhY3QgYm94IGRhdGEgdG8gcHJvcGVyIGZvcm1hdCAobm90IGluY2x1ZGluZyBzcGVuZGluZyBpbmZvcm1hdGlvbilcbiAgICogQHBhcmFtIGJveFxuICAgKiBAcmV0dXJuIGV4dHJhY3RlZCBkYXRhIGluIHByb3BlciBmb3JtYXRcbiAgICovXG4gIGFic3RyYWN0IGV4dHJhY3RCb3hEYXRhOiAoYm94OiBPdXRwdXRCb3gpID0+IEV4dHJhY3RlZERhdGEgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIGNoZWNrIHByb3BlciBkYXRhIGZvcm1hdCBpbiB0aGUgYm94XG4gICAqIEBwYXJhbSBib3hcbiAgICogQHJldHVybiB0cnVlIGlmIHRoZSBib3ggaGFzIHRoZSByZXF1aXJlZCBkYXRhIGFuZCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGFic3RyYWN0IGhhc0RhdGE6IChib3g6IE91dHB1dEJveCkgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogcHJvY2VzcyBhIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGluIGEgYmxvY2sgYW5kIHN0b3JlIHJlcXVpcmVkIGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSB0eHMgbGlzdCBvZiB0cmFuc2FjdGlvbnMgaW4gdGhlIGJsb2NrXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHByb2Nlc3MgaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhbmQgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gYXN5bmMgKFxuICAgIHR4czogVHJhbnNhY3Rpb25bXSxcbiAgICBibG9jazogQmxvY2tJbmZvXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBib3hlczogQXJyYXk8RXh0cmFjdGVkRGF0YT4gPSBbXTtcbiAgICAgIGNvbnN0IHNwZW50SW5mb3M6IEFycmF5PFNwZW5kSW5mbz4gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgdHggb2YgdHhzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHR4Lm91dHB1dHMpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuaGFzRGF0YShvdXRwdXQpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFRyeWluZyB0byBleHRyYWN0IGRhdGEgZnJvbSBib3ggJHtvdXRwdXQuYm94SWR9YCk7XG4gICAgICAgICAgY29uc3QgZXh0cmFjdGVkRGF0YSA9IHRoaXMuZXh0cmFjdEJveERhdGEob3V0cHV0KTtcbiAgICAgICAgICBpZiAoZXh0cmFjdGVkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICAgIGBFeHRyYWN0ZWQgZGF0YSAke0pzb25CaWdJbnQuc3RyaW5naWZ5KGV4dHJhY3RlZERhdGEpfSBmcm9tIGJveCAke1xuICAgICAgICAgICAgICAgIG91dHB1dC5ib3hJZFxuICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJveGVzLnB1c2goZXh0cmFjdGVkRGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBib3hJbmRleCA9IDE7XG4gICAgICAgIGZvciAoY29uc3QgaW5wdXQgb2YgdHguaW5wdXRzKSB7XG4gICAgICAgICAgc3BlbnRJbmZvcy5wdXNoKHsgdHhJZDogdHguaWQsIGJveElkOiBpbnB1dC5ib3hJZCwgaW5kZXg6IGJveEluZGV4IH0pO1xuICAgICAgICAgIGJveEluZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGJveGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKCEoYXdhaXQgdGhpcy5hY3Rpb25zLnN0b3JlQm94ZXMoYm94ZXMsIGJsb2NrLCB0aGlzLmdldElkKCkpKSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgICAgICBgRGF0YSBpbnNlcnRpb24gZmFpbGVkIGZvciAke3RoaXMuZ2V0SWQoKX0gYXQgdGhlIGJsb2NrICR7XG4gICAgICAgICAgICAgIGJsb2NrLmhlaWdodFxuICAgICAgICAgICAgfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRyaWdnZXJDYWxsYmFja3MoQ2FsbGJhY2tUeXBlLkluc2VydCwgYm94ZXMpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3BlbnREYXRhID0gYXdhaXQgdGhpcy5hY3Rpb25zLnNwZW5kQm94ZXMoXG4gICAgICAgIHNwZW50SW5mb3MsXG4gICAgICAgIGJsb2NrLFxuICAgICAgICB0aGlzLmdldElkKClcbiAgICAgICk7XG4gICAgICBpZiAoc3BlbnREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyQ2FsbGJhY2tzKENhbGxiYWNrVHlwZS5TcGVuZCwgc3BlbnREYXRhKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYFByb2Nlc3NpbmcgdHJhbnNhY3Rpb25zIGZhaWxlZCBmb3IgJHt0aGlzLmdldElkKCl9IGF0IHRoZSBibG9jayAke1xuICAgICAgICAgIGJsb2NrLmhlaWdodFxuICAgICAgICB9IHdpdGggZXJyb3I6ICR7ZX1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoIGJsb2NrIGhhc2hcbiAgICovXG4gIGZvcmtCbG9jayA9IGFzeW5jIChoYXNoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbnMuZGVsZXRlQmxvY2tCb3hlcyhoYXNoLCB0aGlzLmdldElkKCkpO1xuICAgIGlmIChyZXN1bHQuZGVsZXRlZERhdGEubGVuZ3RoID4gMClcbiAgICAgIHRoaXMudHJpZ2dlckNhbGxiYWNrcyhDYWxsYmFja1R5cGUuRGVsZXRlLCByZXN1bHQuZGVsZXRlZERhdGEpO1xuICAgIGlmIChyZXN1bHQudXBkYXRlZERhdGEubGVuZ3RoID4gMClcbiAgICAgIHRoaXMudHJpZ2dlckNhbGxiYWNrcyhDYWxsYmFja1R5cGUuVXBkYXRlLCByZXN1bHQudXBkYXRlZERhdGEpO1xuICB9O1xufVxuIl19
|
|
@@ -1,27 +1,55 @@
|
|
|
1
|
+
import { DataSource, Repository, EntityTarget } from 'typeorm';
|
|
2
|
+
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
1
3
|
import { BlockInfo } from '../interfaces';
|
|
2
|
-
import { SpendInfo } from './interfaces';
|
|
3
|
-
|
|
4
|
+
import { AbstractBoxData, BoxInfo, SpendInfo } from './interfaces';
|
|
5
|
+
import { AbstractErgoExtractorEntity } from './AbstractErgoExtractorEntity';
|
|
6
|
+
export declare abstract class AbstractErgoExtractorAction<ExtractedData extends AbstractBoxData, ExtractorEntity extends AbstractErgoExtractorEntity> {
|
|
7
|
+
private readonly datasource;
|
|
8
|
+
readonly logger: AbstractLogger;
|
|
9
|
+
protected readonly repository: Repository<ExtractorEntity>;
|
|
10
|
+
private repo;
|
|
11
|
+
constructor(dataSource: DataSource, repo: EntityTarget<ExtractorEntity>, logger?: AbstractLogger);
|
|
12
|
+
/**
|
|
13
|
+
* create the database entity from extracted data and block information
|
|
14
|
+
*/
|
|
15
|
+
protected abstract createEntity: (data: ExtractedData[], block: BlockInfo, extractor: string) => Array<Omit<ExtractorEntity, 'id'>>;
|
|
16
|
+
/**
|
|
17
|
+
* convert the database entity back to raw data
|
|
18
|
+
*/
|
|
19
|
+
protected abstract convertEntityToData: (entities: ExtractorEntity[]) => ExtractedData[];
|
|
4
20
|
/**
|
|
5
21
|
* insert all extracted box data in an atomic transaction
|
|
6
|
-
*
|
|
7
|
-
* @param
|
|
8
|
-
* @
|
|
22
|
+
* update the data if a box with the same id is already stored in db
|
|
23
|
+
* @param boxes
|
|
24
|
+
* @param block
|
|
25
|
+
* @param extractor
|
|
26
|
+
* @return inserted items and updated box ids
|
|
27
|
+
* returns undefined in case of any problem
|
|
9
28
|
*/
|
|
10
|
-
|
|
29
|
+
storeBoxes: (boxes: Array<ExtractedData>, block: BlockInfo, extractor: string) => Promise<boolean>;
|
|
11
30
|
/**
|
|
12
31
|
* update spending information of stored boxes
|
|
32
|
+
* chunk spendInfos to prevent large database queries
|
|
33
|
+
* Note: It only updates the spendHeight and spendBlock fields. If updating
|
|
34
|
+
* anything else is required, override this implementation to include the
|
|
35
|
+
* additional fields.
|
|
13
36
|
* @param spendInfos
|
|
14
37
|
* @param block
|
|
15
|
-
* @param
|
|
38
|
+
* @param extractor
|
|
39
|
+
* @returns spent box ids
|
|
16
40
|
*/
|
|
17
|
-
|
|
41
|
+
spendBoxes: (spendInfos: Array<SpendInfo>, block: BlockInfo, extractor: string) => Promise<BoxInfo[]>;
|
|
18
42
|
/**
|
|
19
43
|
* delete extracted data from a specific block
|
|
20
44
|
* if a box is spend in this block mark it as unspent
|
|
21
45
|
* if a box is created in this block remove it from database
|
|
22
46
|
* @param block
|
|
23
|
-
* @param
|
|
47
|
+
* @param extractor
|
|
48
|
+
* @return deleted items and updated box ids
|
|
24
49
|
*/
|
|
25
|
-
|
|
50
|
+
deleteBlockBoxes: (block: string, extractor: string) => Promise<{
|
|
51
|
+
deletedData: ExtractedData[];
|
|
52
|
+
updatedData: BoxInfo[];
|
|
53
|
+
}>;
|
|
26
54
|
}
|
|
27
55
|
//# sourceMappingURL=AbstractErgoExtractorAction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractErgoExtractorAction.d.ts","sourceRoot":"","sources":["../../lib/ergo/AbstractErgoExtractorAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"AbstractErgoExtractorAction.d.ts","sourceRoot":"","sources":["../../lib/ergo/AbstractErgoExtractorAction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,UAAU,EAEV,YAAY,EAEb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,8BAAsB,2BAA2B,CAC/C,aAAa,SAAS,eAAe,EACrC,eAAe,SAAS,2BAA2B;IAEnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAgC;gBAG1C,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC,EACnC,MAAM,CAAC,EAAE,cAAc;IAQzB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,CAC/B,IAAI,EAAE,aAAa,EAAE,EACrB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,KACd,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;IAExC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CACtC,QAAQ,EAAE,eAAe,EAAE,KACxB,aAAa,EAAE,CAAC;IAErB;;;;;;;;OAQG;IACH,UAAU,UACD,MAAM,aAAa,CAAC,SACpB,SAAS,aACL,MAAM,KAChB,QAAQ,OAAO,CAAC,CAsDjB;IAEF;;;;;;;;;;OAUG;IACH,UAAU,eACI,MAAM,SAAS,CAAC,SACrB,SAAS,aACL,MAAM,KAChB,QAAQ,OAAO,EAAE,CAAC,CA2BnB;IAEF;;;;;;;OAOG;IACH,gBAAgB,UACP,MAAM,aACF,MAAM,KAChB,QAAQ;QAAE,WAAW,EAAE,aAAa,EAAE,CAAC;QAAC,WAAW,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CA6BlE;CACH"}
|
|
@@ -1,3 +1,136 @@
|
|
|
1
|
+
import { In, Not, } from 'typeorm';
|
|
2
|
+
import { chunk, difference, pick } from 'lodash-es';
|
|
3
|
+
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
4
|
+
import JsonBigInt from '@rosen-bridge/json-bigint';
|
|
5
|
+
import { DB_CHUNK_SIZE } from '../constants';
|
|
1
6
|
export class AbstractErgoExtractorAction {
|
|
7
|
+
datasource;
|
|
8
|
+
logger;
|
|
9
|
+
repository;
|
|
10
|
+
repo;
|
|
11
|
+
constructor(dataSource, repo, logger) {
|
|
12
|
+
this.datasource = dataSource;
|
|
13
|
+
this.logger = logger ? logger : new DummyLogger();
|
|
14
|
+
this.repository = this.datasource.getRepository(repo);
|
|
15
|
+
this.repo = repo;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* insert all extracted box data in an atomic transaction
|
|
19
|
+
* update the data if a box with the same id is already stored in db
|
|
20
|
+
* @param boxes
|
|
21
|
+
* @param block
|
|
22
|
+
* @param extractor
|
|
23
|
+
* @return inserted items and updated box ids
|
|
24
|
+
* returns undefined in case of any problem
|
|
25
|
+
*/
|
|
26
|
+
storeBoxes = async (boxes, block, extractor) => {
|
|
27
|
+
let success = true;
|
|
28
|
+
let boxesToInsert = [], boxesToUpdate = [];
|
|
29
|
+
const queryRunner = this.datasource.createQueryRunner();
|
|
30
|
+
await queryRunner.connect();
|
|
31
|
+
await queryRunner.startTransaction();
|
|
32
|
+
try {
|
|
33
|
+
const repository = queryRunner.manager.getRepository(this.repo);
|
|
34
|
+
const dbBoxIds = (await repository.findBy({
|
|
35
|
+
boxId: In(boxes.map((item) => item.boxId)),
|
|
36
|
+
extractor: extractor,
|
|
37
|
+
})).map((box) => box.boxId);
|
|
38
|
+
if (dbBoxIds.length > 0)
|
|
39
|
+
this.logger.debug(`Found stored boxes with same boxId`, dbBoxIds);
|
|
40
|
+
boxesToUpdate = boxes.filter((box) => dbBoxIds.includes(box.boxId));
|
|
41
|
+
boxesToInsert = difference(boxes, boxesToUpdate);
|
|
42
|
+
if (boxesToInsert.length > 0) {
|
|
43
|
+
this.logger.debug(`Inserting boxes`);
|
|
44
|
+
await repository.insert(this.createEntity(boxesToInsert, block, extractor));
|
|
45
|
+
}
|
|
46
|
+
if (boxesToUpdate.length > 0)
|
|
47
|
+
this.logger.info(`Updating boxes with following Ids in the database: [${boxesToUpdate
|
|
48
|
+
.map((col) => col.boxId)
|
|
49
|
+
.join(', ')}]`);
|
|
50
|
+
for (const box of this.createEntity(boxesToUpdate, block, extractor)) {
|
|
51
|
+
this.logger.debug(`Updating boxes in database [${JsonBigInt.stringify(box)}]`);
|
|
52
|
+
await repository.update({
|
|
53
|
+
boxId: box.boxId,
|
|
54
|
+
extractor: extractor,
|
|
55
|
+
}, box);
|
|
56
|
+
}
|
|
57
|
+
await queryRunner.commitTransaction();
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
this.logger.error(`An error occurred during store boxes action: ${e}`);
|
|
61
|
+
await queryRunner.rollbackTransaction();
|
|
62
|
+
success = false;
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
await queryRunner.release();
|
|
66
|
+
}
|
|
67
|
+
return success;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* update spending information of stored boxes
|
|
71
|
+
* chunk spendInfos to prevent large database queries
|
|
72
|
+
* Note: It only updates the spendHeight and spendBlock fields. If updating
|
|
73
|
+
* anything else is required, override this implementation to include the
|
|
74
|
+
* additional fields.
|
|
75
|
+
* @param spendInfos
|
|
76
|
+
* @param block
|
|
77
|
+
* @param extractor
|
|
78
|
+
* @returns spent box ids
|
|
79
|
+
*/
|
|
80
|
+
spendBoxes = async (spendInfos, block, extractor) => {
|
|
81
|
+
const spentData = [];
|
|
82
|
+
const spendInfoChunks = chunk(spendInfos, DB_CHUNK_SIZE);
|
|
83
|
+
for (const spendInfoChunk of spendInfoChunks) {
|
|
84
|
+
const boxIds = spendInfoChunk.map((info) => info.boxId);
|
|
85
|
+
const updateResult = await this.repository.update({
|
|
86
|
+
boxId: In(boxIds),
|
|
87
|
+
extractor: extractor,
|
|
88
|
+
}, { spendBlock: block.hash, spendHeight: block.height });
|
|
89
|
+
if (updateResult.affected && updateResult.affected > 0) {
|
|
90
|
+
const spentRows = await this.repository.findBy({
|
|
91
|
+
boxId: In(boxIds),
|
|
92
|
+
spendBlock: block.hash,
|
|
93
|
+
});
|
|
94
|
+
spentData.push(...spentRows);
|
|
95
|
+
for (const row of spentRows) {
|
|
96
|
+
this.logger.debug(`Spent box with boxId [${row.boxId}] at height ${block.height}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return spentData.map((data) => pick(data, 'boxId'));
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* delete extracted data from a specific block
|
|
104
|
+
* if a box is spend in this block mark it as unspent
|
|
105
|
+
* if a box is created in this block remove it from database
|
|
106
|
+
* @param block
|
|
107
|
+
* @param extractor
|
|
108
|
+
* @return deleted items and updated box ids
|
|
109
|
+
*/
|
|
110
|
+
deleteBlockBoxes = async (block, extractor) => {
|
|
111
|
+
this.logger.info(`Deleting boxes in block ${block} and extractor ${extractor}`);
|
|
112
|
+
const deletedData = await this.repository.find({
|
|
113
|
+
where: { extractor: extractor, block: block },
|
|
114
|
+
});
|
|
115
|
+
const updatedData = await this.repository.find({
|
|
116
|
+
where: {
|
|
117
|
+
extractor: extractor,
|
|
118
|
+
spendBlock: block,
|
|
119
|
+
block: Not(block),
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
await this.repository.delete({
|
|
123
|
+
extractor: extractor,
|
|
124
|
+
block: block,
|
|
125
|
+
});
|
|
126
|
+
await this.repository.update({
|
|
127
|
+
spendBlock: block,
|
|
128
|
+
extractor: extractor,
|
|
129
|
+
}, { spendBlock: null, spendHeight: 0 });
|
|
130
|
+
return {
|
|
131
|
+
deletedData: this.convertEntityToData(deletedData),
|
|
132
|
+
updatedData: updatedData.map((data) => pick(data, 'boxId')),
|
|
133
|
+
};
|
|
134
|
+
};
|
|
2
135
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VyZ28vQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBZ0IsMkJBQTJCO0NBbUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsb2NrSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3BlbmRJbmZvIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbjxFeHRyYWN0ZWREYXRhPiB7XG4gIC8qKlxuICAgKiBpbnNlcnQgYWxsIGV4dHJhY3RlZCBib3ggZGF0YSBpbiBhbiBhdG9taWMgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHBhcmFtIGV4dHJhY3RvcklkXG4gICAqIEByZXR1cm4gcHJvY2VzcyBzdWNjZXNzXG4gICAqL1xuICBhYnN0cmFjdCBpbnNlcnRCb3hlczogKFxuICAgIGRhdGE6IEV4dHJhY3RlZERhdGFbXSxcbiAgICBleHRyYWN0b3JJZDogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogdXBkYXRlIHNwZW5kaW5nIGluZm9ybWF0aW9uIG9mIHN0b3JlZCBib3hlc1xuICAgKiBAcGFyYW0gc3BlbmRJbmZvc1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvcklkXG4gICAqL1xuICBhYnN0cmFjdCBzcGVuZEJveGVzOiAoXG4gICAgc3BlbmRJbmZvczogU3BlbmRJbmZvW10sXG4gICAgYmxvY2s6IEJsb2NrSW5mbyxcbiAgICBleHRyYWN0b3JJZDogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogZGVsZXRlIGV4dHJhY3RlZCBkYXRhIGZyb20gYSBzcGVjaWZpYyBibG9ja1xuICAgKiBpZiBhIGJveCBpcyBzcGVuZCBpbiB0aGlzIGJsb2NrIG1hcmsgaXQgYXMgdW5zcGVudFxuICAgKiBpZiBhIGJveCBpcyBjcmVhdGVkIGluIHRoaXMgYmxvY2sgcmVtb3ZlIGl0IGZyb20gZGF0YWJhc2VcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JJZFxuICAgKi9cbiAgYWJzdHJhY3QgZGVsZXRlQmxvY2tCb3hlczogKFxuICAgIGJsb2NrOiBzdHJpbmcsXG4gICAgZXh0cmFjdG9ySWQ6IHN0cmluZ1xuICApID0+IFByb21pc2U8dm9pZD47XG59XG4iXX0=
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VyZ28vQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxFQUFFLEVBRUYsR0FBRyxHQUdKLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sVUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBSW5ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0MsTUFBTSxPQUFnQiwyQkFBMkI7SUFJOUIsVUFBVSxDQUFhO0lBQy9CLE1BQU0sQ0FBaUI7SUFDYixVQUFVLENBQThCO0lBQ25ELElBQUksQ0FBZ0M7SUFFNUMsWUFDRSxVQUFzQixFQUN0QixJQUFtQyxFQUNuQyxNQUF1QjtRQUV2QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQWtCRDs7Ozs7Ozs7T0FRRztJQUNILFVBQVUsR0FBRyxLQUFLLEVBQ2hCLEtBQTJCLEVBQzNCLEtBQWdCLEVBQ2hCLFNBQWlCLEVBQ0MsRUFBRTtRQUNwQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxhQUFhLEdBQW9CLEVBQUUsRUFDckMs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RSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDNUQsQ0FBQztJQUNKLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGF0YVNvdXJjZSxcbiAgSW4sXG4gIFJlcG9zaXRvcnksXG4gIE5vdCxcbiAgRW50aXR5VGFyZ2V0LFxuICBGaW5kT3B0aW9uc1doZXJlLFxufSBmcm9tICd0eXBlb3JtJztcbmltcG9ydCB7IGNodW5rLCBkaWZmZXJlbmNlLCBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuXG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0Qm94RGF0YSwgQm94SW5mbywgU3BlbmRJbmZvIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERCX0NIVU5LX1NJWkUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5IH0gZnJvbSAnLi9BYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHknO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uPFxuICBFeHRyYWN0ZWREYXRhIGV4dGVuZHMgQWJzdHJhY3RCb3hEYXRhLFxuICBFeHRyYWN0b3JFbnRpdHkgZXh0ZW5kcyBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHlcbj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFzb3VyY2U6IERhdGFTb3VyY2U7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSByZXBvc2l0b3J5OiBSZXBvc2l0b3J5PEV4dHJhY3RvckVudGl0eT47XG4gIHByaXZhdGUgcmVwbzogRW50aXR5VGFyZ2V0PEV4dHJhY3RvckVudGl0eT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICByZXBvOiBFbnRpdHlUYXJnZXQ8RXh0cmFjdG9yRW50aXR5PixcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlclxuICApIHtcbiAgICB0aGlzLmRhdGFzb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5yZXBvc2l0b3J5ID0gdGhpcy5kYXRhc291cmNlLmdldFJlcG9zaXRvcnkocmVwbyk7XG4gICAgdGhpcy5yZXBvID0gcmVwbztcbiAgfVxuXG4gIC8qKlxuICAgKiBjcmVhdGUgdGhlIGRhdGFiYXNlIGVudGl0eSBmcm9tIGV4dHJhY3RlZCBkYXRhIGFuZCBibG9jayBpbmZvcm1hdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZUVudGl0eTogKFxuICAgIGRhdGE6IEV4dHJhY3RlZERhdGFbXSxcbiAgICBibG9jazogQmxvY2tJbmZvLFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICkgPT4gQXJyYXk8T21pdDxFeHRyYWN0b3JFbnRpdHksICdpZCc+PjtcblxuICAvKipcbiAgICogY29udmVydCB0aGUgZGF0YWJhc2UgZW50aXR5IGJhY2sgdG8gcmF3IGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjb252ZXJ0RW50aXR5VG9EYXRhOiAoXG4gICAgZW50aXRpZXM6IEV4dHJhY3RvckVudGl0eVtdXG4gICkgPT4gRXh0cmFjdGVkRGF0YVtdO1xuXG4gIC8qKlxuICAgKiBpbnNlcnQgYWxsIGV4dHJhY3RlZCBib3ggZGF0YSBpbiBhbiBhdG9taWMgdHJhbnNhY3Rpb25cbiAgICogdXBkYXRlIHRoZSBkYXRhIGlmIGEgYm94IHdpdGggdGhlIHNhbWUgaWQgaXMgYWxyZWFkeSBzdG9yZWQgaW4gZGJcbiAgICogQHBhcmFtIGJveGVzXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqIEByZXR1cm4gaW5zZXJ0ZWQgaXRlbXMgYW5kIHVwZGF0ZWQgYm94IGlkc1xuICAgKiByZXR1cm5zIHVuZGVmaW5lZCBpbiBjYXNlIG9mIGFueSBwcm9ibGVtXG4gICAqL1xuICBzdG9yZUJveGVzID0gYXN5bmMgKFxuICAgIGJveGVzOiBBcnJheTxFeHRyYWN0ZWREYXRhPixcbiAgICBibG9jazogQmxvY2tJbmZvLFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgICBsZXQgYm94ZXNUb0luc2VydDogRXh0cmFjdGVkRGF0YVtdID0gW10sXG4gICAgICBib3hlc1RvVXBkYXRlOiBFeHRyYWN0ZWREYXRhW10gPSBbXTtcbiAgICBjb25zdCBxdWVyeVJ1bm5lciA9IHRoaXMuZGF0YXNvdXJjZS5jcmVhdGVRdWVyeVJ1bm5lcigpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3QoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBxdWVyeVJ1bm5lci5tYW5hZ2VyLmdldFJlcG9zaXRvcnkodGhpcy5yZXBvKTtcbiAgICAgIGNvbnN0IGRiQm94SWRzID0gKFxuICAgICAgICBhd2FpdCByZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICAgICAgYm94SWQ6IEluKGJveGVzLm1hcCgoaXRlbSkgPT4gaXRlbS5ib3hJZCkpLFxuICAgICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICB9IGFzIEZpbmRPcHRpb25zV2hlcmU8RXh0cmFjdG9yRW50aXR5PilcbiAgICAgICkubWFwKChib3gpID0+IGJveC5ib3hJZCk7XG4gICAgICBpZiAoZGJCb3hJZHMubGVuZ3RoID4gMClcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEZvdW5kIHN0b3JlZCBib3hlcyB3aXRoIHNhbWUgYm94SWRgLCBkYkJveElkcyk7XG5cbiAgICAgIGJveGVzVG9VcGRhdGUgPSBib3hlcy5maWx0ZXIoKGJveCkgPT4gZGJCb3hJZHMuaW5jbHVkZXMoYm94LmJveElkKSk7XG4gICAgICBib3hlc1RvSW5zZXJ0ID0gZGlmZmVyZW5jZShib3hlcywgYm94ZXNUb1VwZGF0ZSk7XG5cbiAgICAgIGlmIChib3hlc1RvSW5zZXJ0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEluc2VydGluZyBib3hlc2ApO1xuICAgICAgICBhd2FpdCByZXBvc2l0b3J5Lmluc2VydChcbiAgICAgICAgICB0aGlzLmNyZWF0ZUVudGl0eShib3hlc1RvSW5zZXJ0LCBibG9jaywgZXh0cmFjdG9yKSBhcyBhbnlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChib3hlc1RvVXBkYXRlLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYFVwZGF0aW5nIGJveGVzIHdpdGggZm9sbG93aW5nIElkcyBpbiB0aGUgZGF0YWJhc2U6IFske2JveGVzVG9VcGRhdGVcbiAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gY29sLmJveElkKVxuICAgICAgICAgICAgLmpvaW4oJywgJyl9XWBcbiAgICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgYm94IG9mIHRoaXMuY3JlYXRlRW50aXR5KGJveGVzVG9VcGRhdGUsIGJsb2NrLCBleHRyYWN0b3IpKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBVcGRhdGluZyBib3hlcyBpbiBkYXRhYmFzZSBbJHtKc29uQmlnSW50LnN0cmluZ2lmeShib3gpfV1gXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJveElkOiBib3guYm94SWQsXG4gICAgICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgICAgICB9IGFzIEZpbmRPcHRpb25zV2hlcmU8RXh0cmFjdG9yRW50aXR5PixcbiAgICAgICAgICBib3ggYXMgYW55XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmUgYm94ZXMgYWN0aW9uOiAke2V9YCk7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yb2xsYmFja1RyYW5zYWN0aW9uKCk7XG4gICAgICBzdWNjZXNzID0gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJlbGVhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH07XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSBzcGVuZGluZyBpbmZvcm1hdGlvbiBvZiBzdG9yZWQgYm94ZXNcbiAgICogY2h1bmsgc3BlbmRJbmZvcyB0byBwcmV2ZW50IGxhcmdlIGRhdGFiYXNlIHF1ZXJpZXNcbiAgICogTm90ZTogSXQgb25seSB1cGRhdGVzIHRoZSBzcGVuZEhlaWdodCBhbmQgc3BlbmRCbG9jayBmaWVsZHMuIElmIHVwZGF0aW5nXG4gICAqIGFueXRoaW5nIGVsc2UgaXMgcmVxdWlyZWQsIG92ZXJyaWRlIHRoaXMgaW1wbGVtZW50YXRpb24gdG8gaW5jbHVkZSB0aGVcbiAgICogYWRkaXRpb25hbCBmaWVsZHMuXG4gICAqIEBwYXJhbSBzcGVuZEluZm9zXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqIEByZXR1cm5zIHNwZW50IGJveCBpZHNcbiAgICovXG4gIHNwZW5kQm94ZXMgPSBhc3luYyAoXG4gICAgc3BlbmRJbmZvczogQXJyYXk8U3BlbmRJbmZvPixcbiAgICBibG9jazogQmxvY2tJbmZvLFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICk6IFByb21pc2U8Qm94SW5mb1tdPiA9PiB7XG4gICAgY29uc3Qgc3BlbnREYXRhID0gW107XG4gICAgY29uc3Qgc3BlbmRJbmZvQ2h1bmtzID0gY2h1bmsoc3BlbmRJbmZvcywgREJfQ0hVTktfU0laRSk7XG4gICAgZm9yIChjb25zdCBzcGVuZEluZm9DaHVuayBvZiBzcGVuZEluZm9DaHVua3MpIHtcbiAgICAgIGNvbnN0IGJveElkcyA9IHNwZW5kSW5mb0NodW5rLm1hcCgoaW5mbykgPT4gaW5mby5ib3hJZCk7XG4gICAgICBjb25zdCB1cGRhdGVSZXN1bHQgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgICB7XG4gICAgICAgICAgYm94SWQ6IEluKGJveElkcyksXG4gICAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICAgIH0gYXMgRmluZE9wdGlvbnNXaGVyZTxFeHRyYWN0b3JFbnRpdHk+LFxuICAgICAgICB7IHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsIHNwZW5kSGVpZ2h0OiBibG9jay5oZWlnaHQgfSBhcyBhbnlcbiAgICAgICk7XG5cbiAgICAgIGlmICh1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgJiYgdXBkYXRlUmVzdWx0LmFmZmVjdGVkID4gMCkge1xuICAgICAgICBjb25zdCBzcGVudFJvd3MgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgICAgICBib3hJZDogSW4oYm94SWRzKSxcbiAgICAgICAgICBzcGVuZEJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICB9IGFzIEZpbmRPcHRpb25zV2hlcmU8RXh0cmFjdG9yRW50aXR5Pik7XG4gICAgICAgIHNwZW50RGF0YS5wdXNoKC4uLnNwZW50Um93cyk7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHNwZW50Um93cykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFNwZW50IGJveCB3aXRoIGJveElkIFske3Jvdy5ib3hJZH1dIGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3BlbnREYXRhLm1hcCgoZGF0YSkgPT4gcGljayhkYXRhLCAnYm94SWQnKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGRlbGV0ZSBleHRyYWN0ZWQgZGF0YSBmcm9tIGEgc3BlY2lmaWMgYmxvY2tcbiAgICogaWYgYSBib3ggaXMgc3BlbmQgaW4gdGhpcyBibG9jayBtYXJrIGl0IGFzIHVuc3BlbnRcbiAgICogaWYgYSBib3ggaXMgY3JlYXRlZCBpbiB0aGlzIGJsb2NrIHJlbW92ZSBpdCBmcm9tIGRhdGFiYXNlXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqIEByZXR1cm4gZGVsZXRlZCBpdGVtcyBhbmQgdXBkYXRlZCBib3ggaWRzXG4gICAqL1xuICBkZWxldGVCbG9ja0JveGVzID0gYXN5bmMgKFxuICAgIGJsb2NrOiBzdHJpbmcsXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IGRlbGV0ZWREYXRhOiBFeHRyYWN0ZWREYXRhW107IHVwZGF0ZWREYXRhOiBCb3hJbmZvW10gfT4gPT4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgRGVsZXRpbmcgYm94ZXMgaW4gYmxvY2sgJHtibG9ja30gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgKTtcbiAgICBjb25zdCBkZWxldGVkRGF0YSA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5maW5kKHtcbiAgICAgIHdoZXJlOiB7IGV4dHJhY3RvcjogZXh0cmFjdG9yLCBibG9jazogYmxvY2sgfSBhcyBhbnksXG4gICAgfSk7XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuZmluZCh7XG4gICAgICB3aGVyZToge1xuICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgICAgc3BlbmRCbG9jazogYmxvY2ssXG4gICAgICAgIGJsb2NrOiBOb3QoYmxvY2spLFxuICAgICAgfSBhcyBhbnksXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmRlbGV0ZSh7XG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgIGJsb2NrOiBibG9jayxcbiAgICB9IGFzIGFueSk7XG4gICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgIHtcbiAgICAgICAgc3BlbmRCbG9jazogYmxvY2ssXG4gICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgfSBhcyBGaW5kT3B0aW9uc1doZXJlPEV4dHJhY3RvckVudGl0eT4sXG4gICAgICB7IHNwZW5kQmxvY2s6IG51bGwsIHNwZW5kSGVpZ2h0OiAwIH0gYXMgYW55XG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVsZXRlZERhdGE6IHRoaXMuY29udmVydEVudGl0eVRvRGF0YShkZWxldGVkRGF0YSksXG4gICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEubWFwKChkYXRhKSA9PiBwaWNrKGRhdGEsICdib3hJZCcpKSxcbiAgICB9O1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare abstract class AbstractErgoExtractorEntity {
|
|
2
|
+
id: number;
|
|
3
|
+
boxId: string;
|
|
4
|
+
block: string;
|
|
5
|
+
height: number;
|
|
6
|
+
spendBlock?: string | null;
|
|
7
|
+
spendHeight?: number | null;
|
|
8
|
+
extractor: string;
|
|
9
|
+
serialized: string;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=AbstractErgoExtractorEntity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractErgoExtractorEntity.d.ts","sourceRoot":"","sources":["../../lib/ergo/AbstractErgoExtractorEntity.ts"],"names":[],"mappings":"AAEA,8BACsB,2BAA2B;IAE/C,EAAE,EAAE,MAAM,CAAC;IAGX,KAAK,EAAE,MAAM,CAAC;IAGd,KAAK,EAAE,MAAM,CAAC;IAGd,MAAM,EAAE,MAAM,CAAC;IAGf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG5B,SAAS,EAAE,MAAM,CAAC;IAGlB,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Column, PrimaryGeneratedColumn, Unique } from 'typeorm';
|
|
11
|
+
let AbstractErgoExtractorEntity = class AbstractErgoExtractorEntity {
|
|
12
|
+
id;
|
|
13
|
+
boxId;
|
|
14
|
+
block;
|
|
15
|
+
height;
|
|
16
|
+
spendBlock;
|
|
17
|
+
spendHeight;
|
|
18
|
+
extractor;
|
|
19
|
+
serialized;
|
|
20
|
+
};
|
|
21
|
+
__decorate([
|
|
22
|
+
PrimaryGeneratedColumn(),
|
|
23
|
+
__metadata("design:type", Number)
|
|
24
|
+
], AbstractErgoExtractorEntity.prototype, "id", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
Column({ type: 'varchar' }),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], AbstractErgoExtractorEntity.prototype, "boxId", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
Column({ type: 'varchar' }),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], AbstractErgoExtractorEntity.prototype, "block", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
Column({ type: 'int' }),
|
|
35
|
+
__metadata("design:type", Number)
|
|
36
|
+
], AbstractErgoExtractorEntity.prototype, "height", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
Column({ nullable: true, type: 'varchar' }),
|
|
39
|
+
__metadata("design:type", Object)
|
|
40
|
+
], AbstractErgoExtractorEntity.prototype, "spendBlock", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
Column({ nullable: true, type: 'int' }),
|
|
43
|
+
__metadata("design:type", Object)
|
|
44
|
+
], AbstractErgoExtractorEntity.prototype, "spendHeight", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
Column({ type: 'varchar' }),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], AbstractErgoExtractorEntity.prototype, "extractor", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
Column({ type: 'varchar' }),
|
|
51
|
+
__metadata("design:type", String)
|
|
52
|
+
], AbstractErgoExtractorEntity.prototype, "serialized", void 0);
|
|
53
|
+
AbstractErgoExtractorEntity = __decorate([
|
|
54
|
+
Unique(['boxId', 'extractor'])
|
|
55
|
+
], AbstractErgoExtractorEntity);
|
|
56
|
+
export { AbstractErgoExtractorEntity };
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VyZ28vQWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRzFELElBQWUsMkJBQTJCLEdBQTFDLE1BQWUsMkJBQTJCO0lBRS9DLEVBQUUsQ0FBUztJQUdYLEtBQUssQ0FBUztJQUdkLEtBQUssQ0FBUztJQUdkLE1BQU0sQ0FBUztJQUdmLFVBQVUsQ0FBaUI7SUFHM0IsV0FBVyxDQUFpQjtJQUc1QixTQUFTLENBQVM7SUFHbEIsVUFBVSxDQUFTO0NBQ3BCLENBQUE7QUF0QkM7SUFEQyxzQkFBc0IsRUFBRTs7dURBQ2Q7QUFHWDtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7MERBQ2Q7QUFHZDtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7MERBQ2Q7QUFHZDtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQzs7MkRBQ1Q7QUFHZjtJQURDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDOzsrREFDakI7QUFHM0I7SUFEQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQzs7Z0VBQ1o7QUFHNUI7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7OzhEQUNWO0FBR2xCO0lBREMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDOzsrREFDVDtBQXZCQywyQkFBMkI7SUFEaEQsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0dBQ1QsMkJBQTJCLENBd0JoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbHVtbiwgUHJpbWFyeUdlbmVyYXRlZENvbHVtbiwgVW5pcXVlIH0gZnJvbSAndHlwZW9ybSc7XG5cbkBVbmlxdWUoWydib3hJZCcsICdleHRyYWN0b3InXSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHkge1xuICBAUHJpbWFyeUdlbmVyYXRlZENvbHVtbigpXG4gIGlkOiBudW1iZXI7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBib3hJZDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiAndmFyY2hhcicgfSlcbiAgYmxvY2s6IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogJ2ludCcgfSlcbiAgaGVpZ2h0OiBudW1iZXI7XG5cbiAgQENvbHVtbih7IG51bGxhYmxlOiB0cnVlLCB0eXBlOiAndmFyY2hhcicgfSlcbiAgc3BlbmRCbG9jaz86IHN0cmluZyB8IG51bGw7XG5cbiAgQENvbHVtbih7IG51bGxhYmxlOiB0cnVlLCB0eXBlOiAnaW50JyB9KVxuICBzcGVuZEhlaWdodD86IG51bWJlciB8IG51bGw7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBleHRyYWN0b3I6IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogJ3ZhcmNoYXInIH0pXG4gIHNlcmlhbGl6ZWQ6IHN0cmluZztcbn1cbiJdfQ==
|
package/dist/ergo/index.d.ts
CHANGED
package/dist/ergo/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/ergo/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/ergo/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,+BAA+B,CAAC"}
|
package/dist/ergo/index.js
CHANGED
|
@@ -6,4 +6,5 @@ export * from './network/NodeNetwork';
|
|
|
6
6
|
export * from './network/AbstractNetwork';
|
|
7
7
|
export * from './initializable';
|
|
8
8
|
export * from './utils';
|
|
9
|
-
|
|
9
|
+
export * from './AbstractErgoExtractorEntity';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZXJnby9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9BYnN0cmFjdEVyZ29FeHRyYWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9BYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbmV0d29yay9FeHBsb3Jlck5ldHdvcmsnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXR3b3JrL05vZGVOZXR3b3JrJztcbmV4cG9ydCAqIGZyb20gJy4vbmV0d29yay9BYnN0cmFjdE5ldHdvcmsnO1xuZXhwb3J0ICogZnJvbSAnLi9pbml0aWFsaXphYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9BYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHknO1xuIl19
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
|
-
import {
|
|
2
|
+
import { AbstractBoxData, ErgoNetworkType } from '../interfaces';
|
|
3
3
|
import { AbstractErgoExtractor } from '../AbstractErgoExtractor';
|
|
4
4
|
import { AbstractInitializableErgoExtractorAction } from './AbstractInitializableAction';
|
|
5
5
|
import { BlockInfo } from '../../interfaces';
|
|
6
|
-
|
|
6
|
+
import { AbstractErgoExtractorEntity } from '../AbstractErgoExtractorEntity';
|
|
7
|
+
export declare abstract class AbstractInitializableErgoExtractor<ExtractedData extends AbstractBoxData, ExtractorEntity extends AbstractErgoExtractorEntity> extends AbstractErgoExtractor<ExtractedData, ExtractorEntity> {
|
|
7
8
|
protected initialize: boolean;
|
|
8
9
|
private address;
|
|
9
|
-
protected abstract actions: AbstractInitializableErgoExtractorAction<ExtractedData>;
|
|
10
|
+
protected abstract actions: AbstractInitializableErgoExtractorAction<ExtractedData, ExtractorEntity>;
|
|
10
11
|
private network;
|
|
11
12
|
constructor(type: ErgoNetworkType, url: string, address: string, logger?: AbstractLogger, initialize?: boolean);
|
|
12
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractInitializable.d.ts","sourceRoot":"","sources":["../../../lib/ergo/initializable/AbstractInitializable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"AbstractInitializable.d.ts","sourceRoot":"","sources":["../../../lib/ergo/initializable/AbstractInitializable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EACL,eAAe,EACf,eAAe,EAEhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wCAAwC,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAE7E,8BAAsB,kCAAkC,CACtD,aAAa,SAAS,eAAe,EACrC,eAAe,SAAS,2BAA2B,CACnD,SAAQ,qBAAqB,CAAC,aAAa,EAAE,eAAe,CAAC;IAC7D,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wCAAwC,CAClE,aAAa,EACb,eAAe,CAChB,CAAC;IAEF,OAAO,CAAC,OAAO,CAAgC;gBAG7C,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc,EACvB,UAAU,UAAO;IAkBnB;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CA6C5B;IAEF;;;OAGG;IACH,OAAO,CAAC,eAAe,CAKrB;IAEF;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAuCxB;IAEF;;;;OAIG;IACH,OAAO,CAAC,uBAAuB,CAoB7B;IAEF;;;;OAIG;IACH,OAAO,CAAC,eAAe,CA+BrB;IAEF;;;;;OAKG;IACH,eAAe,EAAE,CAAC,YAAY,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D"}
|