@bitgo-beta/sdk-coin-sol 7.6.4-beta.479 → 7.6.4-beta.480
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/dist/cjs/src/register.d.ts +2 -0
- package/dist/cjs/src/register.d.ts.map +1 -1
- package/dist/cjs/src/register.js +16 -2
- package/dist/cjs/src/solToken.d.ts +2 -0
- package/dist/cjs/src/solToken.d.ts.map +1 -1
- package/dist/cjs/src/solToken.js +4 -1
- package/dist/cjs/test/unit/register.d.ts +2 -0
- package/dist/cjs/test/unit/register.d.ts.map +1 -0
- package/dist/cjs/test/unit/register.js +65 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/register.d.ts +2 -0
- package/dist/esm/register.d.ts.map +1 -1
- package/dist/esm/register.js +14 -1
- package/dist/esm/solToken.d.ts +2 -0
- package/dist/esm/solToken.d.ts.map +1 -1
- package/dist/esm/solToken.js +4 -1
- package/package.json +7 -7
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { BitGoBase } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { type CoinMap } from '@bitgo-beta/statics';
|
|
2
3
|
export declare const register: (sdk: BitGoBase) => void;
|
|
4
|
+
export declare const registerWithCoinMap: (sdk: BitGoBase, coinMap: CoinMap) => void;
|
|
3
5
|
//# sourceMappingURL=register.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,qBAAqB,CAAC;AAK1E,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAMzC,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAS,SAAS,WAAW,OAAO,KAAG,IAUtE,CAAC"}
|
package/dist/cjs/src/register.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.register = void 0;
|
|
3
|
+
exports.registerWithCoinMap = exports.register = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
4
6
|
const sol_1 = require("./sol");
|
|
5
7
|
const solToken_1 = require("./solToken");
|
|
6
8
|
const tsol_1 = require("./tsol");
|
|
@@ -12,4 +14,16 @@ const register = (sdk) => {
|
|
|
12
14
|
});
|
|
13
15
|
};
|
|
14
16
|
exports.register = register;
|
|
15
|
-
|
|
17
|
+
const registerWithCoinMap = (sdk, coinMap) => {
|
|
18
|
+
sdk.register('sol', sol_1.Sol.createInstance);
|
|
19
|
+
sdk.register('tsol', tsol_1.Tsol.createInstance);
|
|
20
|
+
// Registration for SOL tokens from the coin map (includes both hardcoded and dynamic tokens from AMS).
|
|
21
|
+
solToken_1.SolToken.createTokenConstructors((0, statics_1.getFormattedSolTokens)(coinMap)).forEach(({ name, coinConstructor }) => {
|
|
22
|
+
sdk.register(name, coinConstructor);
|
|
23
|
+
if (coinMap.has(name)) {
|
|
24
|
+
sdk_core_1.GlobalCoinFactory.registerToken(coinMap.get(name), coinConstructor);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
exports.registerWithCoinMap = registerWithCoinMap;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQW9FO0FBQ3BFLGlEQUEwRTtBQUMxRSwrQkFBNEI7QUFDNUIseUNBQXNDO0FBQ3RDLGlDQUE4QjtBQUV2QixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWMsRUFBUSxFQUFFO0lBQy9DLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDMUMsbUJBQVEsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUU7UUFDdkUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFOVyxRQUFBLFFBQVEsWUFNbkI7QUFFSyxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBYyxFQUFFLE9BQWdCLEVBQVEsRUFBRTtJQUM1RSxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLHVHQUF1RztJQUN2RyxtQkFBUSxDQUFDLHVCQUF1QixDQUFDLElBQUEsK0JBQXFCLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO1FBQ3JHLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RCLDRCQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQVZXLFFBQUEsbUJBQW1CLHVCQVU5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSwgR2xvYmFsQ29pbkZhY3RvcnkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyB0eXBlIENvaW5NYXAsIGdldEZvcm1hdHRlZFNvbFRva2VucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgU29sIH0gZnJvbSAnLi9zb2wnO1xuaW1wb3J0IHsgU29sVG9rZW4gfSBmcm9tICcuL3NvbFRva2VuJztcbmltcG9ydCB7IFRzb2wgfSBmcm9tICcuL3Rzb2wnO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCdzb2wnLCBTb2wuY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3Rzb2wnLCBUc29sLmNyZWF0ZUluc3RhbmNlKTtcbiAgU29sVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyV2l0aENvaW5NYXAgPSAoc2RrOiBCaXRHb0Jhc2UsIGNvaW5NYXA6IENvaW5NYXApOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCdzb2wnLCBTb2wuY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3Rzb2wnLCBUc29sLmNyZWF0ZUluc3RhbmNlKTtcbiAgLy8gUmVnaXN0cmF0aW9uIGZvciBTT0wgdG9rZW5zIGZyb20gdGhlIGNvaW4gbWFwIChpbmNsdWRlcyBib3RoIGhhcmRjb2RlZCBhbmQgZHluYW1pYyB0b2tlbnMgZnJvbSBBTVMpLlxuICBTb2xUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhnZXRGb3JtYXR0ZWRTb2xUb2tlbnMoY29pbk1hcCkpLmZvckVhY2goKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICBzZGsucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgICBpZiAoY29pbk1hcC5oYXMobmFtZSkpIHtcbiAgICAgIEdsb2JhbENvaW5GYWN0b3J5LnJlZ2lzdGVyVG9rZW4oY29pbk1hcC5nZXQobmFtZSksIGNvaW5Db25zdHJ1Y3Rvcik7XG4gICAgfVxuICB9KTtcbn07XG4iXX0=
|
|
@@ -7,6 +7,7 @@ export interface SolTokenConfig {
|
|
|
7
7
|
network: string;
|
|
8
8
|
tokenAddress: string;
|
|
9
9
|
decimalPlaces: number;
|
|
10
|
+
programId?: string;
|
|
10
11
|
}
|
|
11
12
|
export declare class SolToken extends Sol {
|
|
12
13
|
readonly tokenConfig: SolTokenConfig;
|
|
@@ -19,6 +20,7 @@ export declare class SolToken extends Sol {
|
|
|
19
20
|
get tokenAddress(): string;
|
|
20
21
|
get decimalPlaces(): number;
|
|
21
22
|
get contractAddress(): string;
|
|
23
|
+
get programId(): string | undefined;
|
|
22
24
|
getChain(): string;
|
|
23
25
|
getBaseChain(): string;
|
|
24
26
|
getFullName(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solToken.d.ts","sourceRoot":"","sources":["../../../src/solToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGxF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"solToken.d.ts","sourceRoot":"","sources":["../../../src/solToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGxF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,QAAS,SAAQ,GAAG;IAC/B,SAAgB,WAAW,EAAE,cAAc,CAAC;gBAEhC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc;IAMzD,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAItE,MAAM,CAAC,uBAAuB,CAC5B,YAAY,GAAE,cAAc,EAAiE,GAC5F,oBAAoB,EAAE;IASzB,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,WAEP;IAED,IAAI,OAAO,WAEV;IAED,IAAI,YAAY,WAEf;IAED,IAAI,aAAa,WAEhB;IAED,IAAI,eAAe,WAElB;IAED,IAAI,SAAS,uBAEZ;IAED,QAAQ;IAIR,YAAY;IAIZ,WAAW;IAIX,aAAa;IAIb;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,wBAAwB;IAIxB;;;OAGG;IACH,sBAAsB;CAGvB"}
|
package/dist/cjs/src/solToken.js
CHANGED
|
@@ -38,6 +38,9 @@ class SolToken extends sol_1.Sol {
|
|
|
38
38
|
get contractAddress() {
|
|
39
39
|
return this.tokenConfig.tokenAddress;
|
|
40
40
|
}
|
|
41
|
+
get programId() {
|
|
42
|
+
return this.tokenConfig.programId;
|
|
43
|
+
}
|
|
41
44
|
getChain() {
|
|
42
45
|
return this.tokenConfig.type;
|
|
43
46
|
}
|
|
@@ -73,4 +76,4 @@ class SolToken extends sol_1.Sol {
|
|
|
73
76
|
}
|
|
74
77
|
}
|
|
75
78
|
exports.SolToken = SolToken;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc29sVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQTRCO0FBRTVCLGlEQUFvRDtBQVlwRCxNQUFhLFFBQVMsU0FBUSxTQUFHO0lBRy9CLFlBQVksS0FBZ0IsRUFBRSxXQUEyQjtRQUN2RCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RixLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBc0I7UUFDbEQsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixlQUFpQyxDQUFDLEdBQUcsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFFN0YsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUMvQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVk7UUFDVixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsc0JBQXNCO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBM0ZELDRCQTJGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvbCB9IGZyb20gJy4vc29sJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgQ29pbkNvbnN0cnVjdG9yLCBOYW1lZENvaW5Db25zdHJ1Y3RvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zLCB0b2tlbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGludGVyZmFjZSBTb2xUb2tlbkNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBjb2luOiBzdHJpbmc7XG4gIG5ldHdvcms6IHN0cmluZztcbiAgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gIGRlY2ltYWxQbGFjZXM6IG51bWJlcjtcbiAgcHJvZ3JhbUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU29sVG9rZW4gZXh0ZW5kcyBTb2wge1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5Db25maWc6IFNvbFRva2VuQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHRva2VuQ29uZmlnOiBTb2xUb2tlbkNvbmZpZykge1xuICAgIGNvbnN0IHN0YXRpY3NDb2luID0gdG9rZW5Db25maWcubmV0d29yayA9PT0gJ01haW5uZXQnID8gY29pbnMuZ2V0KCdzb2wnKSA6IGNvaW5zLmdldCgndHNvbCcpO1xuICAgIHN1cGVyKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gICAgdGhpcy50b2tlbkNvbmZpZyA9IHRva2VuQ29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3IoY29uZmlnOiBTb2xUb2tlbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgU29sVG9rZW4oYml0Z28sIGNvbmZpZyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoXG4gICAgdG9rZW5Db25maWdzOiBTb2xUb2tlbkNvbmZpZ1tdID0gWy4uLnRva2Vucy5iaXRjb2luLnNvbC50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0LnNvbC50b2tlbnNdXG4gICk6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10ge1xuICAgIGNvbnN0IHRva2Vuc0N0b3JzOiBOYW1lZENvaW5Db25zdHJ1Y3RvcltdID0gW107XG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbkNvbmZpZ3MpIHtcbiAgICAgIGNvbnN0IHRva2VuQ29uc3RydWN0b3IgPSBTb2xUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuKTtcbiAgICAgIHRva2Vuc0N0b3JzLnB1c2goeyBuYW1lOiB0b2tlbi50eXBlLCBjb2luQ29uc3RydWN0b3I6IHRva2VuQ29uc3RydWN0b3IgfSk7XG4gICAgfVxuICAgIHJldHVybiB0b2tlbnNDdG9ycztcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLm5hbWU7XG4gIH1cblxuICBnZXQgY29pbigpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5jb2luO1xuICB9XG5cbiAgZ2V0IG5ldHdvcmsoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcubmV0d29yaztcbiAgfVxuXG4gIGdldCB0b2tlbkFkZHJlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcudG9rZW5BZGRyZXNzO1xuICB9XG5cbiAgZ2V0IGRlY2ltYWxQbGFjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcztcbiAgfVxuXG4gIGdldCBjb250cmFjdEFkZHJlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcudG9rZW5BZGRyZXNzO1xuICB9XG5cbiAgZ2V0IHByb2dyYW1JZCgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5wcm9ncmFtSWQ7XG4gIH1cblxuICBnZXRDaGFpbigpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgZ2V0QmFzZUNoYWluKCkge1xuICAgIHJldHVybiB0aGlzLmNvaW47XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpIHtcbiAgICByZXR1cm4gJ1NvbGFuYSBUb2tlbic7XG4gIH1cblxuICBnZXRCYXNlRmFjdG9yKCkge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy50b2tlbkNvbmZpZy5kZWNpbWFsUGxhY2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2tlbiBzdGFuZGFyZCBmb3IgY29uc29saWRhdGlvbiBpbnRlbnRzICh3YWxsZXQtcGxhdGZvcm0pLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBTUEwgdG9rZW4gdHlwZSBpZGVudGlmaWVyXG4gICAqL1xuICBnZXRUb2tlblR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1NQTCc7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyB2YWx1ZSBvZiAwXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIG9rYXkgdG8gc2VuZCAwIHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHZhbHVlbGVzc1RyYW5zZmVyQWxsb3dlZCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyBkYXRhIGFsb25nIHdpdGggdHJhbnNhY3Rpb25zXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIG9rYXkgdG8gc2VuZCB0eCBkYXRhIChDRUxPKSwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICB0cmFuc2FjdGlvbkRhdGFBbGxvd2VkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../test/unit/register.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
9
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
10
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
11
|
+
const register_1 = require("../../src/register");
|
|
12
|
+
const solToken_1 = require("../../src/solToken");
|
|
13
|
+
describe('SOL Register', function () {
|
|
14
|
+
let bitgo;
|
|
15
|
+
let registerSpy;
|
|
16
|
+
let registerTokenSpy;
|
|
17
|
+
beforeEach(function () {
|
|
18
|
+
bitgo = new sdk_api_1.BitGoAPI({ env: 'test' });
|
|
19
|
+
registerSpy = sinon_1.default.spy(bitgo, 'register');
|
|
20
|
+
registerTokenSpy = sinon_1.default.spy(sdk_core_1.GlobalCoinFactory, 'registerToken');
|
|
21
|
+
});
|
|
22
|
+
afterEach(function () {
|
|
23
|
+
registerSpy.restore();
|
|
24
|
+
registerTokenSpy.restore();
|
|
25
|
+
});
|
|
26
|
+
describe('register', function () {
|
|
27
|
+
it('should register base coins and token constructors', function () {
|
|
28
|
+
(0, register_1.register)(bitgo);
|
|
29
|
+
const registeredNames = registerSpy.getCalls().map((call) => call.args[0]);
|
|
30
|
+
// Base coins should be registered
|
|
31
|
+
assert_1.default.ok(registeredNames.includes('sol'));
|
|
32
|
+
assert_1.default.ok(registeredNames.includes('tsol'));
|
|
33
|
+
// SOL tokens from statics should be registered
|
|
34
|
+
const solTokenCount = solToken_1.SolToken.createTokenConstructors().length;
|
|
35
|
+
assert_1.default.strictEqual(registerSpy.callCount, 2 + solTokenCount);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('registerWithCoinMap', function () {
|
|
39
|
+
it('should call register internally for base coins and tokens', function () {
|
|
40
|
+
(0, register_1.registerWithCoinMap)(bitgo, statics_1.coins);
|
|
41
|
+
const registeredNames = registerSpy.getCalls().map((call) => call.args[0]);
|
|
42
|
+
// Base coins should be registered
|
|
43
|
+
assert_1.default.ok(registeredNames.includes('sol'));
|
|
44
|
+
assert_1.default.ok(registeredNames.includes('tsol'));
|
|
45
|
+
});
|
|
46
|
+
it('should add dynamic SOL tokens to the global coin map', function () {
|
|
47
|
+
(0, register_1.registerWithCoinMap)(bitgo, statics_1.coins);
|
|
48
|
+
// registerToken should have been called for SOL tokens in the coin map
|
|
49
|
+
assert_1.default.ok(registerTokenSpy.callCount > 0);
|
|
50
|
+
// Each call should pass a valid coin from the coinMap
|
|
51
|
+
for (let i = 0; i < registerTokenSpy.callCount; i++) {
|
|
52
|
+
const call = registerTokenSpy.getCall(i);
|
|
53
|
+
const staticsCoin = call.args[0];
|
|
54
|
+
assert_1.default.ok(statics_1.coins.has(staticsCoin.name), `${staticsCoin.name} should exist in the coin map`);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
it('should not add tokens to the global coin map when coin map has no SOL tokens', function () {
|
|
58
|
+
const limitedCoinMap = statics_1.coins.filter((coin) => !(coin instanceof statics_1.SolCoin));
|
|
59
|
+
(0, register_1.registerWithCoinMap)(bitgo, limitedCoinMap);
|
|
60
|
+
// registerToken should not be called since no SOL tokens are in the map
|
|
61
|
+
assert_1.default.strictEqual(registerTokenSpy.callCount, 0);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsb0RBQTRCO0FBQzVCLGlEQUErQztBQUMvQyxtREFBeUQ7QUFDekQsaURBQXFEO0FBQ3JELGlEQUFtRTtBQUNuRSxpREFBOEM7QUFFOUMsUUFBUSxDQUFDLGNBQWMsRUFBRTtJQUN2QixJQUFJLEtBQWUsQ0FBQztJQUNwQixJQUFJLFdBQTJCLENBQUM7SUFDaEMsSUFBSSxnQkFBZ0MsQ0FBQztJQUVyQyxVQUFVLENBQUM7UUFDVCxLQUFLLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEMsV0FBVyxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLGdCQUFnQixHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsNEJBQWlCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUM7UUFDUixXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsVUFBVSxFQUFFO1FBQ25CLEVBQUUsQ0FBQyxtREFBbUQsRUFBRTtZQUN0RCxJQUFBLG1CQUFRLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFFaEIsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTNFLGtDQUFrQztZQUNsQyxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0MsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRTVDLCtDQUErQztZQUMvQyxNQUFNLGFBQWEsR0FBRyxtQkFBUSxDQUFDLHVCQUF1QixFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2hFLGdCQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMscUJBQXFCLEVBQUU7UUFDOUIsRUFBRSxDQUFDLDJEQUEyRCxFQUFFO1lBQzlELElBQUEsOEJBQW1CLEVBQUMsS0FBSyxFQUFFLGVBQUssQ0FBQyxDQUFDO1lBRWxDLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzRSxrQ0FBa0M7WUFDbEMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNDLGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzREFBc0QsRUFBRTtZQUN6RCxJQUFBLDhCQUFtQixFQUFDLEtBQUssRUFBRSxlQUFLLENBQUMsQ0FBQztZQUVsQyx1RUFBdUU7WUFDdkUsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRTFDLHNEQUFzRDtZQUN0RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3BELE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsSUFBSSwrQkFBK0IsQ0FBQyxDQUFDO1lBQzdGLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4RUFBOEUsRUFBRTtZQUNqRixNQUFNLGNBQWMsR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLGlCQUFPLENBQUMsQ0FBQyxDQUFDO1lBRTFFLElBQUEsOEJBQW1CLEVBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRTNDLHdFQUF3RTtZQUN4RSxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQgeyBHbG9iYWxDb2luRmFjdG9yeSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zLCBTb2xDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyByZWdpc3RlciwgcmVnaXN0ZXJXaXRoQ29pbk1hcCB9IGZyb20gJy4uLy4uL3NyYy9yZWdpc3Rlcic7XG5pbXBvcnQgeyBTb2xUb2tlbiB9IGZyb20gJy4uLy4uL3NyYy9zb2xUb2tlbic7XG5cbmRlc2NyaWJlKCdTT0wgUmVnaXN0ZXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbzogQml0R29BUEk7XG4gIGxldCByZWdpc3RlclNweTogc2lub24uU2lub25TcHk7XG4gIGxldCByZWdpc3RlclRva2VuU3B5OiBzaW5vbi5TaW5vblNweTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IG5ldyBCaXRHb0FQSSh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIHJlZ2lzdGVyU3B5ID0gc2lub24uc3B5KGJpdGdvLCAncmVnaXN0ZXInKTtcbiAgICByZWdpc3RlclRva2VuU3B5ID0gc2lub24uc3B5KEdsb2JhbENvaW5GYWN0b3J5LCAncmVnaXN0ZXJUb2tlbicpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHJlZ2lzdGVyU3B5LnJlc3RvcmUoKTtcbiAgICByZWdpc3RlclRva2VuU3B5LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlZ2lzdGVyJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmVnaXN0ZXIgYmFzZSBjb2lucyBhbmQgdG9rZW4gY29uc3RydWN0b3JzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVnaXN0ZXIoYml0Z28pO1xuXG4gICAgICBjb25zdCByZWdpc3RlcmVkTmFtZXMgPSByZWdpc3RlclNweS5nZXRDYWxscygpLm1hcCgoY2FsbCkgPT4gY2FsbC5hcmdzWzBdKTtcblxuICAgICAgLy8gQmFzZSBjb2lucyBzaG91bGQgYmUgcmVnaXN0ZXJlZFxuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyZWROYW1lcy5pbmNsdWRlcygnc29sJykpO1xuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyZWROYW1lcy5pbmNsdWRlcygndHNvbCcpKTtcblxuICAgICAgLy8gU09MIHRva2VucyBmcm9tIHN0YXRpY3Mgc2hvdWxkIGJlIHJlZ2lzdGVyZWRcbiAgICAgIGNvbnN0IHNvbFRva2VuQ291bnQgPSBTb2xUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycygpLmxlbmd0aDtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWdpc3RlclNweS5jYWxsQ291bnQsIDIgKyBzb2xUb2tlbkNvdW50KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlZ2lzdGVyV2l0aENvaW5NYXAnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIHJlZ2lzdGVyIGludGVybmFsbHkgZm9yIGJhc2UgY29pbnMgYW5kIHRva2VucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlZ2lzdGVyV2l0aENvaW5NYXAoYml0Z28sIGNvaW5zKTtcblxuICAgICAgY29uc3QgcmVnaXN0ZXJlZE5hbWVzID0gcmVnaXN0ZXJTcHkuZ2V0Q2FsbHMoKS5tYXAoKGNhbGwpID0+IGNhbGwuYXJnc1swXSk7XG5cbiAgICAgIC8vIEJhc2UgY29pbnMgc2hvdWxkIGJlIHJlZ2lzdGVyZWRcbiAgICAgIGFzc2VydC5vayhyZWdpc3RlcmVkTmFtZXMuaW5jbHVkZXMoJ3NvbCcpKTtcbiAgICAgIGFzc2VydC5vayhyZWdpc3RlcmVkTmFtZXMuaW5jbHVkZXMoJ3Rzb2wnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFkZCBkeW5hbWljIFNPTCB0b2tlbnMgdG8gdGhlIGdsb2JhbCBjb2luIG1hcCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlZ2lzdGVyV2l0aENvaW5NYXAoYml0Z28sIGNvaW5zKTtcblxuICAgICAgLy8gcmVnaXN0ZXJUb2tlbiBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmb3IgU09MIHRva2VucyBpbiB0aGUgY29pbiBtYXBcbiAgICAgIGFzc2VydC5vayhyZWdpc3RlclRva2VuU3B5LmNhbGxDb3VudCA+IDApO1xuXG4gICAgICAvLyBFYWNoIGNhbGwgc2hvdWxkIHBhc3MgYSB2YWxpZCBjb2luIGZyb20gdGhlIGNvaW5NYXBcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVnaXN0ZXJUb2tlblNweS5jYWxsQ291bnQ7IGkrKykge1xuICAgICAgICBjb25zdCBjYWxsID0gcmVnaXN0ZXJUb2tlblNweS5nZXRDYWxsKGkpO1xuICAgICAgICBjb25zdCBzdGF0aWNzQ29pbiA9IGNhbGwuYXJnc1swXTtcbiAgICAgICAgYXNzZXJ0Lm9rKGNvaW5zLmhhcyhzdGF0aWNzQ29pbi5uYW1lKSwgYCR7c3RhdGljc0NvaW4ubmFtZX0gc2hvdWxkIGV4aXN0IGluIHRoZSBjb2luIG1hcGApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgYWRkIHRva2VucyB0byB0aGUgZ2xvYmFsIGNvaW4gbWFwIHdoZW4gY29pbiBtYXAgaGFzIG5vIFNPTCB0b2tlbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBsaW1pdGVkQ29pbk1hcCA9IGNvaW5zLmZpbHRlcigoY29pbikgPT4gIShjb2luIGluc3RhbmNlb2YgU29sQ29pbikpO1xuXG4gICAgICByZWdpc3RlcldpdGhDb2luTWFwKGJpdGdvLCBsaW1pdGVkQ29pbk1hcCk7XG5cbiAgICAgIC8vIHJlZ2lzdGVyVG9rZW4gc2hvdWxkIG5vdCBiZSBjYWxsZWQgc2luY2Ugbm8gU09MIHRva2VucyBhcmUgaW4gdGhlIG1hcFxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlZ2lzdGVyVG9rZW5TcHkuY2FsbENvdW50LCAwKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|