@bitgo-beta/statics 7.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/.mocharc.js +10 -0
- package/.prettierignore +2 -0
- package/CHANGELOG.md +251 -0
- package/LICENSE +191 -0
- package/README.md +124 -0
- package/dist/resources/aca/index.d.ts +3 -0
- package/dist/resources/aca/index.d.ts.map +1 -0
- package/dist/resources/aca/index.js +15 -0
- package/dist/resources/aca/mainnet.d.ts +2 -0
- package/dist/resources/aca/mainnet.d.ts.map +1 -0
- package/dist/resources/aca/mainnet.js +5 -0
- package/dist/resources/aca/mandala.d.ts +2 -0
- package/dist/resources/aca/mandala.d.ts.map +1 -0
- package/dist/resources/aca/mandala.js +5 -0
- package/dist/resources/dot/index.d.ts +3 -0
- package/dist/resources/dot/index.d.ts.map +1 -0
- package/dist/resources/dot/index.js +15 -0
- package/dist/resources/dot/mainnet.d.ts +2 -0
- package/dist/resources/dot/mainnet.d.ts.map +1 -0
- package/dist/resources/dot/mainnet.js +5 -0
- package/dist/resources/dot/westend.d.ts +2 -0
- package/dist/resources/dot/westend.d.ts.map +1 -0
- package/dist/resources/dot/westend.js +5 -0
- package/dist/src/account.d.ts +676 -0
- package/dist/src/account.d.ts.map +1 -0
- package/dist/src/account.js +1055 -0
- package/dist/src/ada.d.ts +33 -0
- package/dist/src/ada.d.ts.map +1 -0
- package/dist/src/ada.js +55 -0
- package/dist/src/avaxp.d.ts +38 -0
- package/dist/src/avaxp.d.ts.map +1 -0
- package/dist/src/avaxp.js +51 -0
- package/dist/src/base.d.ts +851 -0
- package/dist/src/base.d.ts.map +1 -0
- package/dist/src/base.js +928 -0
- package/dist/src/coins.d.ts +3 -0
- package/dist/src/coins.d.ts.map +1 -0
- package/dist/src/coins.js +978 -0
- package/dist/src/errors.d.ts +31 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +60 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +36 -0
- package/dist/src/map.d.ts +21 -0
- package/dist/src/map.d.ts.map +1 -0
- package/dist/src/map.js +75 -0
- package/dist/src/networks.d.ts +668 -0
- package/dist/src/networks.d.ts.map +1 -0
- package/dist/src/networks.js +838 -0
- package/dist/src/ofc.d.ts +93 -0
- package/dist/src/ofc.d.ts.map +1 -0
- package/dist/src/ofc.js +161 -0
- package/dist/src/tokenConfig.d.ts +129 -0
- package/dist/src/tokenConfig.d.ts.map +1 -0
- package/dist/src/tokenConfig.js +295 -0
- package/dist/src/utxo.d.ts +38 -0
- package/dist/src/utxo.d.ts.map +1 -0
- package/dist/src/utxo.js +55 -0
- package/dist/tsconfig.tsbuildinfo +2021 -0
- package/package.json +41 -0
- package/resources/dot/index.ts +2 -0
- package/resources/dot/mainnet.ts +2 -0
- package/resources/dot/westend.ts +2 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Each subclass needs the explicit Object.setPrototypeOf() so that instanceof will work correctly.
|
|
3
|
+
* See https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
4
|
+
*/
|
|
5
|
+
import { CoinFeature } from './base';
|
|
6
|
+
declare class BitGoStaticsError extends Error {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class CoinNotDefinedError extends BitGoStaticsError {
|
|
10
|
+
constructor(coinName: string);
|
|
11
|
+
}
|
|
12
|
+
export declare class DuplicateCoinDefinitionError extends BitGoStaticsError {
|
|
13
|
+
constructor(coinName: string);
|
|
14
|
+
}
|
|
15
|
+
export declare class DisallowedCoinFeatureError extends BitGoStaticsError {
|
|
16
|
+
constructor(coinName: string, feature: CoinFeature);
|
|
17
|
+
}
|
|
18
|
+
export declare class MissingRequiredCoinFeatureError extends BitGoStaticsError {
|
|
19
|
+
constructor(coinName: string, missingFeatures: CoinFeature[]);
|
|
20
|
+
}
|
|
21
|
+
export declare class InvalidContractAddressError extends BitGoStaticsError {
|
|
22
|
+
constructor(coinName: string, contractAddress: string);
|
|
23
|
+
}
|
|
24
|
+
export declare class InvalidDomainError extends BitGoStaticsError {
|
|
25
|
+
constructor(coinName: string, domain: string);
|
|
26
|
+
}
|
|
27
|
+
export declare class ConflictingCoinFeaturesError extends BitGoStaticsError {
|
|
28
|
+
constructor(coinName: string, conflictingFeatures: CoinFeature[]);
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,cAAM,iBAAkB,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAKnC;AAED,qBAAa,mBAAoB,SAAQ,iBAAiB;gBACrC,QAAQ,EAAE,MAAM;CAIpC;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;gBAC9C,QAAQ,EAAE,MAAM;CAIpC;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB;gBAC5C,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;CAI1D;AAED,qBAAa,+BAAgC,SAAQ,iBAAiB;gBACjD,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE;CAIpE;AAED,qBAAa,2BAA4B,SAAQ,iBAAiB;gBAC7C,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;CAI7D;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;gBACpC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIpD;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;gBAC9C,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE;CAMxE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConflictingCoinFeaturesError = exports.InvalidDomainError = exports.InvalidContractAddressError = exports.MissingRequiredCoinFeatureError = exports.DisallowedCoinFeatureError = exports.DuplicateCoinDefinitionError = exports.CoinNotDefinedError = void 0;
|
|
4
|
+
class BitGoStaticsError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.stack = new Error(message).stack;
|
|
8
|
+
Object.setPrototypeOf(this, BitGoStaticsError.prototype);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
class CoinNotDefinedError extends BitGoStaticsError {
|
|
12
|
+
constructor(coinName) {
|
|
13
|
+
super(`coin '${coinName}' is not defined`);
|
|
14
|
+
Object.setPrototypeOf(this, CoinNotDefinedError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.CoinNotDefinedError = CoinNotDefinedError;
|
|
18
|
+
class DuplicateCoinDefinitionError extends BitGoStaticsError {
|
|
19
|
+
constructor(coinName) {
|
|
20
|
+
super(`coin '${coinName}' is already defined`);
|
|
21
|
+
Object.setPrototypeOf(this, DuplicateCoinDefinitionError.prototype);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.DuplicateCoinDefinitionError = DuplicateCoinDefinitionError;
|
|
25
|
+
class DisallowedCoinFeatureError extends BitGoStaticsError {
|
|
26
|
+
constructor(coinName, feature) {
|
|
27
|
+
super(`coin feature '${feature}' is disallowed for coin ${coinName}.`);
|
|
28
|
+
Object.setPrototypeOf(this, DisallowedCoinFeatureError.prototype);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.DisallowedCoinFeatureError = DisallowedCoinFeatureError;
|
|
32
|
+
class MissingRequiredCoinFeatureError extends BitGoStaticsError {
|
|
33
|
+
constructor(coinName, missingFeatures) {
|
|
34
|
+
super(`Required coin feature(s) '${missingFeatures.join(', ')}' were not found for coin ${coinName}.`);
|
|
35
|
+
Object.setPrototypeOf(this, MissingRequiredCoinFeatureError.prototype);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.MissingRequiredCoinFeatureError = MissingRequiredCoinFeatureError;
|
|
39
|
+
class InvalidContractAddressError extends BitGoStaticsError {
|
|
40
|
+
constructor(coinName, contractAddress) {
|
|
41
|
+
super(`invalid contract address '${contractAddress}' for coin '${coinName}'`);
|
|
42
|
+
Object.setPrototypeOf(this, InvalidContractAddressError.prototype);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.InvalidContractAddressError = InvalidContractAddressError;
|
|
46
|
+
class InvalidDomainError extends BitGoStaticsError {
|
|
47
|
+
constructor(coinName, domain) {
|
|
48
|
+
super(`invalid domain '${domain}' for coin '${coinName}'`);
|
|
49
|
+
Object.setPrototypeOf(this, InvalidDomainError.prototype);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.InvalidDomainError = InvalidDomainError;
|
|
53
|
+
class ConflictingCoinFeaturesError extends BitGoStaticsError {
|
|
54
|
+
constructor(coinName, conflictingFeatures) {
|
|
55
|
+
super(`coin feature(s) for coin '${coinName}' cannot be both required and disallowed: ${conflictingFeatures.join(', ')}`);
|
|
56
|
+
Object.setPrototypeOf(this, ConflictingCoinFeaturesError.prototype);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.ConflictingCoinFeaturesError = ConflictingCoinFeaturesError;
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFNLGlCQUFrQixTQUFRLEtBQUs7SUFDbkMsWUFBbUIsT0FBZTtRQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN0QyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUFFRCxNQUFhLG1CQUFvQixTQUFRLGlCQUFpQjtJQUN4RCxZQUFtQixRQUFnQjtRQUNqQyxLQUFLLENBQUMsU0FBUyxRQUFRLGtCQUFrQixDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBTEQsa0RBS0M7QUFFRCxNQUFhLDRCQUE2QixTQUFRLGlCQUFpQjtJQUNqRSxZQUFtQixRQUFnQjtRQUNqQyxLQUFLLENBQUMsU0FBUyxRQUFRLHNCQUFzQixDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNGO0FBTEQsb0VBS0M7QUFFRCxNQUFhLDBCQUEyQixTQUFRLGlCQUFpQjtJQUMvRCxZQUFtQixRQUFnQixFQUFFLE9BQW9CO1FBQ3ZELEtBQUssQ0FBQyxpQkFBaUIsT0FBTyw0QkFBNEIsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFMRCxnRUFLQztBQUVELE1BQWEsK0JBQWdDLFNBQVEsaUJBQWlCO0lBQ3BFLFlBQW1CLFFBQWdCLEVBQUUsZUFBOEI7UUFDakUsS0FBSyxDQUFDLDZCQUE2QixlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUN2RyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwrQkFBK0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RSxDQUFDO0NBQ0Y7QUFMRCwwRUFLQztBQUVELE1BQWEsMkJBQTRCLFNBQVEsaUJBQWlCO0lBQ2hFLFlBQW1CLFFBQWdCLEVBQUUsZUFBdUI7UUFDMUQsS0FBSyxDQUFDLDZCQUE2QixlQUFlLGVBQWUsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUM5RSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0Y7QUFMRCxrRUFLQztBQUVELE1BQWEsa0JBQW1CLFNBQVEsaUJBQWlCO0lBQ3ZELFlBQW1CLFFBQWdCLEVBQUUsTUFBYztRQUNqRCxLQUFLLENBQUMsbUJBQW1CLE1BQU0sZUFBZSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRjtBQUxELGdEQUtDO0FBRUQsTUFBYSw0QkFBNkIsU0FBUSxpQkFBaUI7SUFDakUsWUFBbUIsUUFBZ0IsRUFBRSxtQkFBa0M7UUFDckUsS0FBSyxDQUNILDZCQUE2QixRQUFRLDZDQUE2QyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbkgsQ0FBQztRQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Q0FDRjtBQVBELG9FQU9DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFYWNoIHN1YmNsYXNzIG5lZWRzIHRoZSBleHBsaWNpdCBPYmplY3Quc2V0UHJvdG90eXBlT2YoKSBzbyB0aGF0IGluc3RhbmNlb2Ygd2lsbCB3b3JrIGNvcnJlY3RseS5cbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQtd2lraS9ibG9iL21hc3Rlci9CcmVha2luZy1DaGFuZ2VzLm1kI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29ya1xuICovXG5pbXBvcnQgeyBDb2luRmVhdHVyZSB9IGZyb20gJy4vYmFzZSc7XG5cbmNsYXNzIEJpdEdvU3RhdGljc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcihtZXNzYWdlKS5zdGFjaztcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQml0R29TdGF0aWNzRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29pbk5vdERlZmluZWRFcnJvciBleHRlbmRzIEJpdEdvU3RhdGljc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW5OYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgY29pbiAnJHtjb2luTmFtZX0nIGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIENvaW5Ob3REZWZpbmVkRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvciBleHRlbmRzIEJpdEdvU3RhdGljc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW5OYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgY29pbiAnJHtjb2luTmFtZX0nIGlzIGFscmVhZHkgZGVmaW5lZGApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEdXBsaWNhdGVDb2luRGVmaW5pdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpc2FsbG93ZWRDb2luRmVhdHVyZUVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgZmVhdHVyZTogQ29pbkZlYXR1cmUpIHtcbiAgICBzdXBlcihgY29pbiBmZWF0dXJlICcke2ZlYXR1cmV9JyBpcyBkaXNhbGxvd2VkIGZvciBjb2luICR7Y29pbk5hbWV9LmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEaXNhbGxvd2VkQ29pbkZlYXR1cmVFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaXNzaW5nUmVxdWlyZWRDb2luRmVhdHVyZUVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgbWlzc2luZ0ZlYXR1cmVzOiBDb2luRmVhdHVyZVtdKSB7XG4gICAgc3VwZXIoYFJlcXVpcmVkIGNvaW4gZmVhdHVyZShzKSAnJHttaXNzaW5nRmVhdHVyZXMuam9pbignLCAnKX0nIHdlcmUgbm90IGZvdW5kIGZvciBjb2luICR7Y29pbk5hbWV9LmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBNaXNzaW5nUmVxdWlyZWRDb2luRmVhdHVyZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRDb250cmFjdEFkZHJlc3NFcnJvciBleHRlbmRzIEJpdEdvU3RhdGljc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW5OYW1lOiBzdHJpbmcsIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nKSB7XG4gICAgc3VwZXIoYGludmFsaWQgY29udHJhY3QgYWRkcmVzcyAnJHtjb250cmFjdEFkZHJlc3N9JyBmb3IgY29pbiAnJHtjb2luTmFtZX0nYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEludmFsaWRDb250cmFjdEFkZHJlc3NFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkRG9tYWluRXJyb3IgZXh0ZW5kcyBCaXRHb1N0YXRpY3NFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb2luTmFtZTogc3RyaW5nLCBkb21haW46IHN0cmluZykge1xuICAgIHN1cGVyKGBpbnZhbGlkIGRvbWFpbiAnJHtkb21haW59JyBmb3IgY29pbiAnJHtjb2luTmFtZX0nYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEludmFsaWREb21haW5FcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25mbGljdGluZ0NvaW5GZWF0dXJlc0Vycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgY29uZmxpY3RpbmdGZWF0dXJlczogQ29pbkZlYXR1cmVbXSkge1xuICAgIHN1cGVyKFxuICAgICAgYGNvaW4gZmVhdHVyZShzKSBmb3IgY29pbiAnJHtjb2luTmFtZX0nIGNhbm5vdCBiZSBib3RoIHJlcXVpcmVkIGFuZCBkaXNhbGxvd2VkOiAke2NvbmZsaWN0aW5nRmVhdHVyZXMuam9pbignLCAnKX1gXG4gICAgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQ29uZmxpY3RpbmdDb2luRmVhdHVyZXNFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './base';
|
|
2
|
+
export * from './coins';
|
|
3
|
+
export * from './networks';
|
|
4
|
+
export * from './errors';
|
|
5
|
+
export * from './tokenConfig';
|
|
6
|
+
export { OfcCoin } from './ofc';
|
|
7
|
+
export { UtxoCoin } from './utxo';
|
|
8
|
+
export { AccountCoin, CeloCoin, ContractAddressDefinedToken, Erc20Coin, StellarCoin, EosCoin, AlgoCoin, AvaxERC20Token, SolCoin, HederaToken, } from './account';
|
|
9
|
+
export { CoinMap } from './map';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,2BAA2B,EAC3B,SAAS,EACT,WAAW,EACX,OAAO,EACP,QAAQ,EACR,cAAc,EACd,OAAO,EACP,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.CoinMap = exports.HederaToken = exports.SolCoin = exports.AvaxERC20Token = exports.AlgoCoin = exports.EosCoin = exports.StellarCoin = exports.Erc20Coin = exports.ContractAddressDefinedToken = exports.CeloCoin = exports.AccountCoin = exports.UtxoCoin = exports.OfcCoin = void 0;
|
|
14
|
+
__exportStar(require("./base"), exports);
|
|
15
|
+
__exportStar(require("./coins"), exports);
|
|
16
|
+
__exportStar(require("./networks"), exports);
|
|
17
|
+
__exportStar(require("./errors"), exports);
|
|
18
|
+
__exportStar(require("./tokenConfig"), exports);
|
|
19
|
+
var ofc_1 = require("./ofc");
|
|
20
|
+
Object.defineProperty(exports, "OfcCoin", { enumerable: true, get: function () { return ofc_1.OfcCoin; } });
|
|
21
|
+
var utxo_1 = require("./utxo");
|
|
22
|
+
Object.defineProperty(exports, "UtxoCoin", { enumerable: true, get: function () { return utxo_1.UtxoCoin; } });
|
|
23
|
+
var account_1 = require("./account");
|
|
24
|
+
Object.defineProperty(exports, "AccountCoin", { enumerable: true, get: function () { return account_1.AccountCoin; } });
|
|
25
|
+
Object.defineProperty(exports, "CeloCoin", { enumerable: true, get: function () { return account_1.CeloCoin; } });
|
|
26
|
+
Object.defineProperty(exports, "ContractAddressDefinedToken", { enumerable: true, get: function () { return account_1.ContractAddressDefinedToken; } });
|
|
27
|
+
Object.defineProperty(exports, "Erc20Coin", { enumerable: true, get: function () { return account_1.Erc20Coin; } });
|
|
28
|
+
Object.defineProperty(exports, "StellarCoin", { enumerable: true, get: function () { return account_1.StellarCoin; } });
|
|
29
|
+
Object.defineProperty(exports, "EosCoin", { enumerable: true, get: function () { return account_1.EosCoin; } });
|
|
30
|
+
Object.defineProperty(exports, "AlgoCoin", { enumerable: true, get: function () { return account_1.AlgoCoin; } });
|
|
31
|
+
Object.defineProperty(exports, "AvaxERC20Token", { enumerable: true, get: function () { return account_1.AvaxERC20Token; } });
|
|
32
|
+
Object.defineProperty(exports, "SolCoin", { enumerable: true, get: function () { return account_1.SolCoin; } });
|
|
33
|
+
Object.defineProperty(exports, "HederaToken", { enumerable: true, get: function () { return account_1.HederaToken; } });
|
|
34
|
+
var map_1 = require("./map");
|
|
35
|
+
Object.defineProperty(exports, "CoinMap", { enumerable: true, get: function () { return map_1.CoinMap; } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2QiwwQ0FBd0I7QUFDeEIsNkNBQTJCO0FBQzNCLDJDQUF5QjtBQUN6QixnREFBOEI7QUFDOUIsNkJBQWdDO0FBQXZCLDhGQUFBLE9BQU8sT0FBQTtBQUNoQiwrQkFBa0M7QUFBekIsZ0dBQUEsUUFBUSxPQUFBO0FBQ2pCLHFDQVdtQjtBQVZqQixzR0FBQSxXQUFXLE9BQUE7QUFDWCxtR0FBQSxRQUFRLE9BQUE7QUFDUixzSEFBQSwyQkFBMkIsT0FBQTtBQUMzQixvR0FBQSxTQUFTLE9BQUE7QUFDVCxzR0FBQSxXQUFXLE9BQUE7QUFDWCxrR0FBQSxPQUFPLE9BQUE7QUFDUCxtR0FBQSxRQUFRLE9BQUE7QUFDUix5R0FBQSxjQUFjLE9BQUE7QUFDZCxrR0FBQSxPQUFPLE9BQUE7QUFDUCxzR0FBQSxXQUFXLE9BQUE7QUFFYiw2QkFBZ0M7QUFBdkIsOEZBQUEsT0FBTyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29pbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXR3b3Jrcyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3Rva2VuQ29uZmlnJztcbmV4cG9ydCB7IE9mY0NvaW4gfSBmcm9tICcuL29mYyc7XG5leHBvcnQgeyBVdHhvQ29pbiB9IGZyb20gJy4vdXR4byc7XG5leHBvcnQge1xuICBBY2NvdW50Q29pbixcbiAgQ2Vsb0NvaW4sXG4gIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbixcbiAgRXJjMjBDb2luLFxuICBTdGVsbGFyQ29pbixcbiAgRW9zQ29pbixcbiAgQWxnb0NvaW4sXG4gIEF2YXhFUkMyMFRva2VuLFxuICBTb2xDb2luLFxuICBIZWRlcmFUb2tlbixcbn0gZnJvbSAnLi9hY2NvdW50JztcbmV4cG9ydCB7IENvaW5NYXAgfSBmcm9tICcuL21hcCc7XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BaseCoin } from './base';
|
|
2
|
+
export declare class CoinMap {
|
|
3
|
+
private readonly _map;
|
|
4
|
+
private readonly _coinByAliases;
|
|
5
|
+
private constructor();
|
|
6
|
+
static fromCoins(coins: Readonly<BaseCoin>[]): CoinMap;
|
|
7
|
+
/**
|
|
8
|
+
* Override `get` to throw if a coin is missing, instead of returning undefined.
|
|
9
|
+
* It will honor key equivalences in case given key is missing.
|
|
10
|
+
* @param {string} key
|
|
11
|
+
* @return {BaseCoin}
|
|
12
|
+
*/
|
|
13
|
+
get(key: string): Readonly<BaseCoin>;
|
|
14
|
+
has(key: string): boolean;
|
|
15
|
+
map<T>(mapper: (coin: Readonly<BaseCoin>, coinName: string) => T): T[];
|
|
16
|
+
reduce<T>(reducer: (acc: T, coin: Readonly<BaseCoin>, coinName: string) => T, initialValue: T): T;
|
|
17
|
+
filter(predicate: (coin: Readonly<BaseCoin>, coinName: string) => boolean): CoinMap;
|
|
18
|
+
forEach(callback: (coin: Readonly<BaseCoin>, coinName: string) => void): void;
|
|
19
|
+
[Symbol.iterator](): IterableIterator<[string, Readonly<BaseCoin>]>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAE9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IAExE,OAAO;IAIP,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO;IAiBtD;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAUpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE;IAQtE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;IAQjG,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO;IAUnF,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI7E,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;CAG3E"}
|
package/dist/src/map.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CoinMap = void 0;
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
|
+
class CoinMap {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._map = new Map();
|
|
8
|
+
// Holds key equivalences used during an asset name migration
|
|
9
|
+
this._coinByAliases = new Map();
|
|
10
|
+
// Do not instantiate
|
|
11
|
+
}
|
|
12
|
+
static fromCoins(coins) {
|
|
13
|
+
return coins.reduce((coinMap, coin) => {
|
|
14
|
+
if (coinMap.has(coin.name)) {
|
|
15
|
+
throw new errors_1.DuplicateCoinDefinitionError(coin.name);
|
|
16
|
+
}
|
|
17
|
+
coinMap._map.set(coin.name, coin);
|
|
18
|
+
const alias = coin.alias;
|
|
19
|
+
if (alias) {
|
|
20
|
+
if (coinMap.has(alias)) {
|
|
21
|
+
throw new errors_1.DuplicateCoinDefinitionError(alias);
|
|
22
|
+
}
|
|
23
|
+
coinMap._coinByAliases.set(alias, coin);
|
|
24
|
+
}
|
|
25
|
+
return coinMap;
|
|
26
|
+
}, new CoinMap());
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Override `get` to throw if a coin is missing, instead of returning undefined.
|
|
30
|
+
* It will honor key equivalences in case given key is missing.
|
|
31
|
+
* @param {string} key
|
|
32
|
+
* @return {BaseCoin}
|
|
33
|
+
*/
|
|
34
|
+
get(key) {
|
|
35
|
+
const coin = this._map.get(key) || this._coinByAliases.get(key);
|
|
36
|
+
if (coin) {
|
|
37
|
+
return coin;
|
|
38
|
+
}
|
|
39
|
+
throw new errors_1.CoinNotDefinedError(key);
|
|
40
|
+
}
|
|
41
|
+
has(key) {
|
|
42
|
+
return this._map.has(key) || this._coinByAliases.has(key);
|
|
43
|
+
}
|
|
44
|
+
map(mapper) {
|
|
45
|
+
const mapResult = [];
|
|
46
|
+
this._map.forEach((value, key) => {
|
|
47
|
+
mapResult.push(mapper(value, key));
|
|
48
|
+
});
|
|
49
|
+
return mapResult;
|
|
50
|
+
}
|
|
51
|
+
reduce(reducer, initialValue) {
|
|
52
|
+
let acc = initialValue;
|
|
53
|
+
this._map.forEach((value, key) => {
|
|
54
|
+
acc = reducer(acc, value, key);
|
|
55
|
+
});
|
|
56
|
+
return acc;
|
|
57
|
+
}
|
|
58
|
+
filter(predicate) {
|
|
59
|
+
const filterResult = [];
|
|
60
|
+
this._map.forEach((value, key) => {
|
|
61
|
+
if (predicate(value, key)) {
|
|
62
|
+
filterResult.push(value);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
return CoinMap.fromCoins(filterResult);
|
|
66
|
+
}
|
|
67
|
+
forEach(callback) {
|
|
68
|
+
this._map.forEach(callback);
|
|
69
|
+
}
|
|
70
|
+
[Symbol.iterator]() {
|
|
71
|
+
return this._map[Symbol.iterator]();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.CoinMap = CoinMap;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FBNkU7QUFFN0UsTUFBYSxPQUFPO0lBS2xCO1FBSmlCLFNBQUksR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUM5RCw2REFBNkQ7UUFDNUMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUd0RSxxQkFBcUI7SUFDdkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBMkI7UUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxxQ0FBNEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkQ7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN0QixNQUFNLElBQUkscUNBQTRCLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQy9DO2dCQUNELE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN6QztZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksR0FBRyxDQUFDLEdBQVc7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEUsSUFBSSxJQUFJLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxJQUFJLDRCQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxHQUFHLENBQUksTUFBeUQ7UUFDckUsTUFBTSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLE1BQU0sQ0FBSSxPQUFrRSxFQUFFLFlBQWU7UUFDbEcsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQy9CLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFrRTtRQUM5RSxNQUFNLFlBQVksR0FBeUIsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQy9CLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDekIsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxPQUFPLENBQUMsUUFBOEQ7UUFDM0UsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBL0VELDBCQStFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IER1cGxpY2F0ZUNvaW5EZWZpbml0aW9uRXJyb3IsIENvaW5Ob3REZWZpbmVkRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCBjbGFzcyBDb2luTWFwIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFwID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gSG9sZHMga2V5IGVxdWl2YWxlbmNlcyB1c2VkIGR1cmluZyBhbiBhc3NldCBuYW1lIG1pZ3JhdGlvblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2luQnlBbGlhc2VzID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIERvIG5vdCBpbnN0YW50aWF0ZVxuICB9XG5cbiAgc3RhdGljIGZyb21Db2lucyhjb2luczogUmVhZG9ubHk8QmFzZUNvaW4+W10pOiBDb2luTWFwIHtcbiAgICByZXR1cm4gY29pbnMucmVkdWNlKChjb2luTWFwLCBjb2luKSA9PiB7XG4gICAgICBpZiAoY29pbk1hcC5oYXMoY29pbi5uYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvcihjb2luLm5hbWUpO1xuICAgICAgfVxuICAgICAgY29pbk1hcC5fbWFwLnNldChjb2luLm5hbWUsIGNvaW4pO1xuICAgICAgY29uc3QgYWxpYXMgPSBjb2luLmFsaWFzO1xuICAgICAgaWYgKGFsaWFzKSB7XG4gICAgICAgIGlmIChjb2luTWFwLmhhcyhhbGlhcykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvcihhbGlhcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29pbk1hcC5fY29pbkJ5QWxpYXNlcy5zZXQoYWxpYXMsIGNvaW4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvaW5NYXA7XG4gICAgfSwgbmV3IENvaW5NYXAoKSk7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgYGdldGAgdG8gdGhyb3cgaWYgYSBjb2luIGlzIG1pc3NpbmcsIGluc3RlYWQgb2YgcmV0dXJuaW5nIHVuZGVmaW5lZC5cbiAgICogSXQgd2lsbCBob25vciBrZXkgZXF1aXZhbGVuY2VzIGluIGNhc2UgZ2l2ZW4ga2V5IGlzIG1pc3NpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHJldHVybiB7QmFzZUNvaW59XG4gICAqL1xuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogUmVhZG9ubHk8QmFzZUNvaW4+IHtcbiAgICBjb25zdCBjb2luID0gdGhpcy5fbWFwLmdldChrZXkpIHx8IHRoaXMuX2NvaW5CeUFsaWFzZXMuZ2V0KGtleSk7XG5cbiAgICBpZiAoY29pbikge1xuICAgICAgcmV0dXJuIGNvaW47XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IENvaW5Ob3REZWZpbmVkRXJyb3Ioa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWFwLmhhcyhrZXkpIHx8IHRoaXMuX2NvaW5CeUFsaWFzZXMuaGFzKGtleSk7XG4gIH1cblxuICBwdWJsaWMgbWFwPFQ+KG1hcHBlcjogKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gVCk6IFRbXSB7XG4gICAgY29uc3QgbWFwUmVzdWx0OiBUW10gPSBbXTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgbWFwUmVzdWx0LnB1c2gobWFwcGVyKHZhbHVlLCBrZXkpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbWFwUmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHJlZHVjZTxUPihyZWR1Y2VyOiAoYWNjOiBULCBjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IFQsIGluaXRpYWxWYWx1ZTogVCk6IFQge1xuICAgIGxldCBhY2MgPSBpbml0aWFsVmFsdWU7XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGFjYyA9IHJlZHVjZXIoYWNjLCB2YWx1ZSwga2V5KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihwcmVkaWNhdGU6IChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IGJvb2xlYW4pOiBDb2luTWFwIHtcbiAgICBjb25zdCBmaWx0ZXJSZXN1bHQ6IFJlYWRvbmx5PEJhc2VDb2luPltdID0gW107XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSkpIHtcbiAgICAgICAgZmlsdGVyUmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDb2luTWFwLmZyb21Db2lucyhmaWx0ZXJSZXN1bHQpO1xuICB9XG5cbiAgcHVibGljIGZvckVhY2goY2FsbGJhY2s6IChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaChjYWxsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxbc3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj5dPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cbn1cbiJdfQ==
|