@bitgo/sdk-coin-rune 1.6.2 → 1.6.3
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/test/resources/rune.d.ts +74 -0
- package/dist/test/resources/rune.d.ts.map +1 -0
- package/dist/test/resources/rune.js +51 -0
- package/dist/test/resources/trune.d.ts +110 -0
- package/dist/test/resources/trune.d.ts.map +1 -0
- package/dist/test/resources/trune.js +102 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +94 -0
- package/dist/test/unit/rune.d.ts +2 -0
- package/dist/test/unit/rune.d.ts.map +1 -0
- package/dist/test/unit/rune.js +369 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +146 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +97 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +202 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +101 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +10 -7
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -292
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transactionBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
40
|
+
const should_1 = __importDefault(require("should"));
|
|
41
|
+
const sdk_api_1 = require("@bitgo/sdk-api");
|
|
42
|
+
const sdk_test_1 = require("@bitgo/sdk-test");
|
|
43
|
+
const src_1 = require("../../../src");
|
|
44
|
+
const testData = __importStar(require("../../resources/trune"));
|
|
45
|
+
describe('Rune Transaction Builder', async () => {
|
|
46
|
+
let bitgo;
|
|
47
|
+
let basecoin;
|
|
48
|
+
let factory;
|
|
49
|
+
before(function () {
|
|
50
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
|
|
51
|
+
bitgo.safeRegister('thorchain:rune', src_1.Rune.createInstance);
|
|
52
|
+
bitgo.safeRegister('tthorchain:rune', src_1.Trune.createInstance);
|
|
53
|
+
bitgo.initializeTestVars();
|
|
54
|
+
basecoin = bitgo.coin('tthorchain:rune');
|
|
55
|
+
factory = basecoin.getBuilder();
|
|
56
|
+
});
|
|
57
|
+
const testTxData = testData.TEST_SEND_TX;
|
|
58
|
+
let data;
|
|
59
|
+
beforeEach(() => {
|
|
60
|
+
data = [
|
|
61
|
+
{
|
|
62
|
+
type: sdk_core_1.TransactionType.Send,
|
|
63
|
+
testTx: testData.TEST_SEND_TX,
|
|
64
|
+
builder: factory.getTransferBuilder(),
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
});
|
|
68
|
+
it('should build a signed tx from signed tx data', async function () {
|
|
69
|
+
const txBuilder = factory.from(testTxData.signedTxBase64);
|
|
70
|
+
const tx = await txBuilder.build();
|
|
71
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
72
|
+
// Should recreate the same raw tx data when re-build and turned to broadcast format
|
|
73
|
+
const rawTx = tx.toBroadcastFormat();
|
|
74
|
+
should_1.default.equal(rawTx, testTxData.signedTxBase64);
|
|
75
|
+
});
|
|
76
|
+
describe('gasBudget tests', async () => {
|
|
77
|
+
it('should succeed for valid gasBudget', function () {
|
|
78
|
+
for (const { builder } of data) {
|
|
79
|
+
should_1.default.doesNotThrow(() => builder.gasBudget(testTxData.gasBudget));
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
it('should throw for invalid gasBudget', function () {
|
|
83
|
+
const invalidGasBudget = 0;
|
|
84
|
+
for (const { builder } of data) {
|
|
85
|
+
(0, should_1.default)(() => builder.gasBudget({ gasLimit: invalidGasBudget })).throw('Invalid gas limit ' + invalidGasBudget);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
it('validateAddress', function () {
|
|
90
|
+
const invalidAddress = { address: 'randomString' };
|
|
91
|
+
for (const { builder } of data) {
|
|
92
|
+
should_1.default.doesNotThrow(() => builder.validateAddress({ address: testTxData.sender }));
|
|
93
|
+
(0, should_1.default)(() => builder.validateAddress(invalidAddress)).throwError('transactionBuilder: address isValidAddress check failed: ' + invalidAddress.address);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBa0Q7QUFDbEQsb0RBQTRCO0FBRTVCLDRDQUEwQztBQUMxQyw4Q0FBMEQ7QUFDMUQsc0NBQTJDO0FBQzNDLGdFQUFrRDtBQUVsRCxRQUFRLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDOUMsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxPQUFPLENBQUM7SUFDWixNQUFNLENBQUM7UUFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsVUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFELEtBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsV0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDekMsSUFBSSxJQUFJLENBQUM7SUFFVCxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsSUFBSSxHQUFHO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLDBCQUFlLENBQUMsSUFBSTtnQkFDMUIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxZQUFZO2dCQUM3QixPQUFPLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixFQUFFO2FBQ3RDO1NBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUs7UUFDdEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUQsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSwwQkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLG9GQUFvRjtRQUNwRixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JDLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRTtZQUN2QyxLQUFLLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUU7WUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7WUFDM0IsS0FBSyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQy9CLElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2pILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlCQUFpQixFQUFFO1FBQ3BCLE1BQU0sY0FBYyxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQ25ELEtBQUssTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQy9CLGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRixJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FDOUQsMkRBQTJELEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FDckYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcblxuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBSdW5lLCBUcnVuZSB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvdHJ1bmUnO1xuXG5kZXNjcmliZSgnUnVuZSBUcmFuc2FjdGlvbiBCdWlsZGVyJywgYXN5bmMgKCkgPT4ge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2Vjb2luO1xuICBsZXQgZmFjdG9yeTtcbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3Rob3JjaGFpbjpydW5lJywgUnVuZS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0dGhvcmNoYWluOnJ1bmUnLCBUcnVuZS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0dGhvcmNoYWluOnJ1bmUnKTtcbiAgICBmYWN0b3J5ID0gYmFzZWNvaW4uZ2V0QnVpbGRlcigpO1xuICB9KTtcblxuICBjb25zdCB0ZXN0VHhEYXRhID0gdGVzdERhdGEuVEVTVF9TRU5EX1RYO1xuICBsZXQgZGF0YTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBkYXRhID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuU2VuZCxcbiAgICAgICAgdGVzdFR4OiB0ZXN0RGF0YS5URVNUX1NFTkRfVFgsXG4gICAgICAgIGJ1aWxkZXI6IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCksXG4gICAgICB9LFxuICAgIF07XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgYSBzaWduZWQgdHggZnJvbSBzaWduZWQgdHggZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdFR4RGF0YS5zaWduZWRUeEJhc2U2NCk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIC8vIFNob3VsZCByZWNyZWF0ZSB0aGUgc2FtZSByYXcgdHggZGF0YSB3aGVuIHJlLWJ1aWxkIGFuZCB0dXJuZWQgdG8gYnJvYWRjYXN0IGZvcm1hdFxuICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBzaG91bGQuZXF1YWwocmF3VHgsIHRlc3RUeERhdGEuc2lnbmVkVHhCYXNlNjQpO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2FzQnVkZ2V0IHRlc3RzJywgYXN5bmMgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc3VjY2VlZCBmb3IgdmFsaWQgZ2FzQnVkZ2V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChjb25zdCB7IGJ1aWxkZXIgfSBvZiBkYXRhKSB7XG4gICAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci5nYXNCdWRnZXQodGVzdFR4RGF0YS5nYXNCdWRnZXQpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZm9yIGludmFsaWQgZ2FzQnVkZ2V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW52YWxpZEdhc0J1ZGdldCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IHsgYnVpbGRlciB9IG9mIGRhdGEpIHtcbiAgICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIuZ2FzQnVkZ2V0KHsgZ2FzTGltaXQ6IGludmFsaWRHYXNCdWRnZXQgfSkpLnRocm93KCdJbnZhbGlkIGdhcyBsaW1pdCAnICsgaW52YWxpZEdhc0J1ZGdldCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCd2YWxpZGF0ZUFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgaW52YWxpZEFkZHJlc3MgPSB7IGFkZHJlc3M6ICdyYW5kb21TdHJpbmcnIH07XG4gICAgZm9yIChjb25zdCB7IGJ1aWxkZXIgfSBvZiBkYXRhKSB7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogdGVzdFR4RGF0YS5zZW5kZXIgfSkpO1xuICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIudmFsaWRhdGVBZGRyZXNzKGludmFsaWRBZGRyZXNzKSkudGhyb3dFcnJvcihcbiAgICAgICAgJ3RyYW5zYWN0aW9uQnVpbGRlcjogYWRkcmVzcyBpc1ZhbGlkQWRkcmVzcyBjaGVjayBmYWlsZWQ6ICcgKyBpbnZhbGlkQWRkcmVzcy5hZGRyZXNzXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transferBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const sdk_api_1 = require("@bitgo/sdk-api");
|
|
40
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
41
|
+
const sdk_test_1 = require("@bitgo/sdk-test");
|
|
42
|
+
const encoding_1 = require("@cosmjs/encoding");
|
|
43
|
+
const should_1 = __importDefault(require("should"));
|
|
44
|
+
const src_1 = require("../../../src");
|
|
45
|
+
const testData = __importStar(require("../../resources/trune"));
|
|
46
|
+
const bech32 = require('bech32-buffer');
|
|
47
|
+
describe('Rune Transfer Builder', () => {
|
|
48
|
+
let bitgo;
|
|
49
|
+
let basecoin;
|
|
50
|
+
let factory;
|
|
51
|
+
let testTx;
|
|
52
|
+
let testTxWithMemo;
|
|
53
|
+
before(function () {
|
|
54
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
|
|
55
|
+
bitgo.safeRegister('thorchain:rune', src_1.Rune.createInstance);
|
|
56
|
+
bitgo.safeRegister('tthorchain:rune', src_1.Trune.createInstance);
|
|
57
|
+
bitgo.initializeTestVars();
|
|
58
|
+
basecoin = bitgo.coin('tthorchain:rune');
|
|
59
|
+
factory = basecoin.getBuilder();
|
|
60
|
+
testTx = testData.TEST_SEND_TX;
|
|
61
|
+
testTxWithMemo = testData.TEST_TX_WITH_MEMO;
|
|
62
|
+
});
|
|
63
|
+
it('should build a Transfer tx with signature', async function () {
|
|
64
|
+
const txBuilder = factory.getTransferBuilder();
|
|
65
|
+
txBuilder.sequence(testTx.sequence);
|
|
66
|
+
txBuilder.gasBudget(testTx.gasBudget);
|
|
67
|
+
txBuilder.messages([testTx.sendMessage.value]);
|
|
68
|
+
txBuilder.publicKey((0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTx.pubKey)));
|
|
69
|
+
txBuilder.addSignature({ pub: (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTx.pubKey)) }, Buffer.from(testTx.signature, 'base64'));
|
|
70
|
+
const tx = await txBuilder.build();
|
|
71
|
+
const json = await (await txBuilder.build()).toJson();
|
|
72
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
73
|
+
should_1.default.deepEqual(json.gasBudget, testTx.gasBudget);
|
|
74
|
+
should_1.default.deepEqual(json.sendMessages[0].typeUrl, testTx.sendMessage.typeUrl);
|
|
75
|
+
should_1.default.deepEqual(json.sendMessages[0].value.amount, testTx.sendMessage.value.amount);
|
|
76
|
+
should_1.default.deepEqual(bech32.encode('sthor', json.sendMessages[0].value.fromAddress), testTx.sendMessage.value.fromAddress);
|
|
77
|
+
should_1.default.deepEqual(bech32.encode('sthor', json.sendMessages[0].value.toAddress), testTx.sendMessage.value.toAddress);
|
|
78
|
+
should_1.default.deepEqual(json.publicKey, (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTx.pubKey)));
|
|
79
|
+
should_1.default.deepEqual(json.sequence, testTx.sequence);
|
|
80
|
+
const rawTx = tx.toBroadcastFormat();
|
|
81
|
+
should_1.default.equal(rawTx, testTx.signedTxBase64);
|
|
82
|
+
should_1.default.deepEqual(tx.inputs, [
|
|
83
|
+
{
|
|
84
|
+
address: bech32.decode(testData.TEST_SEND_TX.sender).data,
|
|
85
|
+
value: testData.TEST_SEND_TX.sendMessage.value.amount[0].amount,
|
|
86
|
+
coin: basecoin.getChain(),
|
|
87
|
+
},
|
|
88
|
+
]);
|
|
89
|
+
should_1.default.deepEqual(tx.outputs, [
|
|
90
|
+
{
|
|
91
|
+
address: bech32.decode(testData.TEST_SEND_TX.sendMessage.value.toAddress).data,
|
|
92
|
+
value: testData.TEST_SEND_TX.sendMessage.value.amount[0].amount,
|
|
93
|
+
coin: basecoin.getChain(),
|
|
94
|
+
},
|
|
95
|
+
]);
|
|
96
|
+
});
|
|
97
|
+
it('should build a Transfer tx with signature and memo', async function () {
|
|
98
|
+
const txBuilder = factory.getTransferBuilder();
|
|
99
|
+
txBuilder.sequence(testTxWithMemo.sequence);
|
|
100
|
+
txBuilder.gasBudget(testTxWithMemo.gasBudget);
|
|
101
|
+
txBuilder.messages([testTxWithMemo.sendMessage.value]);
|
|
102
|
+
txBuilder.publicKey((0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTxWithMemo.pubKey)));
|
|
103
|
+
txBuilder.memo(testTxWithMemo.memo);
|
|
104
|
+
txBuilder.addSignature({ pub: (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTxWithMemo.pubKey)) }, Buffer.from(testTxWithMemo.signature, 'base64'));
|
|
105
|
+
const tx = await txBuilder.build();
|
|
106
|
+
const json = await (await txBuilder.build()).toJson();
|
|
107
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
108
|
+
should_1.default.deepEqual(json.gasBudget, testTxWithMemo.gasBudget);
|
|
109
|
+
should_1.default.deepEqual(json.sendMessages[0].typeUrl, testTx.sendMessage.typeUrl);
|
|
110
|
+
should_1.default.deepEqual(json.sendMessages[0].value.amount, testTx.sendMessage.value.amount);
|
|
111
|
+
should_1.default.deepEqual(bech32.encode('sthor', json.sendMessages[0].value.fromAddress), testTx.sendMessage.value.fromAddress);
|
|
112
|
+
should_1.default.deepEqual(bech32.encode('sthor', json.sendMessages[0].value.toAddress), testTx.sendMessage.value.toAddress);
|
|
113
|
+
should_1.default.deepEqual(json.publicKey, (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTxWithMemo.pubKey)));
|
|
114
|
+
should_1.default.deepEqual(json.sequence, testTxWithMemo.sequence);
|
|
115
|
+
should_1.default.equal(json.memo, testTxWithMemo.memo);
|
|
116
|
+
const rawTx = tx.toBroadcastFormat();
|
|
117
|
+
should_1.default.equal(rawTx, testTxWithMemo.signedTxBase64);
|
|
118
|
+
should_1.default.deepEqual(tx.inputs, [
|
|
119
|
+
{
|
|
120
|
+
address: bech32.decode(testTxWithMemo.sendMessage.value.fromAddress).data,
|
|
121
|
+
value: testTxWithMemo.sendMessage.value.amount[0].amount,
|
|
122
|
+
coin: basecoin.getChain(),
|
|
123
|
+
},
|
|
124
|
+
]);
|
|
125
|
+
should_1.default.deepEqual(tx.outputs, [
|
|
126
|
+
{
|
|
127
|
+
address: bech32.decode(testTxWithMemo.sendMessage.value.toAddress).data,
|
|
128
|
+
value: testTxWithMemo.sendMessage.value.amount[0].amount,
|
|
129
|
+
coin: basecoin.getChain(),
|
|
130
|
+
},
|
|
131
|
+
]);
|
|
132
|
+
});
|
|
133
|
+
it('should build a Transfer tx without signature', async function () {
|
|
134
|
+
const txBuilder = factory.getTransferBuilder();
|
|
135
|
+
txBuilder.sequence(testTx.sequence);
|
|
136
|
+
txBuilder.gasBudget(testTx.gasBudget);
|
|
137
|
+
txBuilder.messages([testTx.sendMessage.value]);
|
|
138
|
+
txBuilder.publicKey((0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTx.pubKey)));
|
|
139
|
+
const tx = await txBuilder.build();
|
|
140
|
+
const json = await (await txBuilder.build()).toJson();
|
|
141
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
142
|
+
should_1.default.deepEqual(json.gasBudget, testTx.gasBudget);
|
|
143
|
+
should_1.default.deepEqual(json.sendMessages[0].typeUrl, testTx.sendMessage.typeUrl);
|
|
144
|
+
should_1.default.deepEqual(json.sendMessages[0].value.amount, testTx.sendMessage.value.amount);
|
|
145
|
+
should_1.default.deepEqual(bech32.encode('sthor', json.sendMessages[0].value.fromAddress), testTx.sendMessage.value.fromAddress);
|
|
146
|
+
should_1.default.deepEqual(bech32.encode('sthor', json.sendMessages[0].value.toAddress), testTx.sendMessage.value.toAddress);
|
|
147
|
+
should_1.default.deepEqual(json.publicKey, (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTx.pubKey)));
|
|
148
|
+
should_1.default.deepEqual(json.sequence, testTx.sequence);
|
|
149
|
+
tx.toBroadcastFormat();
|
|
150
|
+
should_1.default.deepEqual(tx.inputs, [
|
|
151
|
+
{
|
|
152
|
+
address: bech32.decode(testData.TEST_SEND_TX.sender).data,
|
|
153
|
+
value: testData.TEST_SEND_TX.sendMessage.value.amount[0].amount,
|
|
154
|
+
coin: basecoin.getChain(),
|
|
155
|
+
},
|
|
156
|
+
]);
|
|
157
|
+
should_1.default.deepEqual(tx.outputs, [
|
|
158
|
+
{
|
|
159
|
+
address: bech32.decode(testData.TEST_SEND_TX.sendMessage.value.toAddress).data,
|
|
160
|
+
value: testData.TEST_SEND_TX.sendMessage.value.amount[0].amount,
|
|
161
|
+
coin: basecoin.getChain(),
|
|
162
|
+
},
|
|
163
|
+
]);
|
|
164
|
+
});
|
|
165
|
+
it('should sign a Transfer tx', async function () {
|
|
166
|
+
const txBuilder = factory.getTransferBuilder();
|
|
167
|
+
txBuilder.sequence(testTx.sequence);
|
|
168
|
+
txBuilder.gasBudget(testTx.gasBudget);
|
|
169
|
+
txBuilder.messages([testTx.sendMessage.value]);
|
|
170
|
+
txBuilder.accountNumber(testTx.accountNumber);
|
|
171
|
+
txBuilder.chainId(testTx.chainId);
|
|
172
|
+
txBuilder.sign({ key: (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTx.privateKey)) });
|
|
173
|
+
const tx = await txBuilder.build();
|
|
174
|
+
const json = await (await txBuilder.build()).toJson();
|
|
175
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
176
|
+
should_1.default.deepEqual(json.gasBudget, testTx.gasBudget);
|
|
177
|
+
should_1.default.deepEqual(json.sendMessages[0].typeUrl, testTx.sendMessage.typeUrl);
|
|
178
|
+
should_1.default.deepEqual(json.sendMessages[0].value.amount, testTx.sendMessage.value.amount);
|
|
179
|
+
should_1.default.deepEqual(bech32.encode('sthor', json.sendMessages[0].value.fromAddress), testTx.sendMessage.value.fromAddress);
|
|
180
|
+
should_1.default.deepEqual(bech32.encode('sthor', json.sendMessages[0].value.toAddress), testTx.sendMessage.value.toAddress);
|
|
181
|
+
should_1.default.deepEqual(json.publicKey, (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTx.pubKey)));
|
|
182
|
+
should_1.default.deepEqual(json.sequence, testTx.sequence);
|
|
183
|
+
const rawTx = tx.toBroadcastFormat();
|
|
184
|
+
should_1.default.equal(tx.signature[0], (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testTx.signature)));
|
|
185
|
+
should_1.default.equal(rawTx, testTx.signedTxBase64);
|
|
186
|
+
should_1.default.deepEqual(tx.inputs, [
|
|
187
|
+
{
|
|
188
|
+
address: bech32.decode(testData.TEST_SEND_TX.sender).data,
|
|
189
|
+
value: testData.TEST_SEND_TX.sendMessage.value.amount[0].amount,
|
|
190
|
+
coin: basecoin.getChain(),
|
|
191
|
+
},
|
|
192
|
+
]);
|
|
193
|
+
should_1.default.deepEqual(tx.outputs, [
|
|
194
|
+
{
|
|
195
|
+
address: bech32.decode(testData.TEST_SEND_TX.sendMessage.value.toAddress).data,
|
|
196
|
+
value: testData.TEST_SEND_TX.sendMessage.value.amount[0].amount,
|
|
197
|
+
coin: basecoin.getChain(),
|
|
198
|
+
},
|
|
199
|
+
]);
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBMEM7QUFDMUMsOENBQWtEO0FBQ2xELDhDQUEwRDtBQUMxRCwrQ0FBcUQ7QUFDckQsb0RBQTRCO0FBQzVCLHNDQUEyQztBQUMzQyxnRUFBa0Q7QUFDbEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRXhDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7SUFDckMsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxPQUFPLENBQUM7SUFDWixJQUFJLE1BQU0sQ0FBQztJQUNYLElBQUksY0FBYyxDQUFDO0lBQ25CLE1BQU0sQ0FBQztRQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxXQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN6QyxPQUFPLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQy9CLGNBQWMsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7SUFDOUMs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QixFQUFFLENBQUM7UUFDckMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFBLGdCQUFLLEVBQUMsSUFBQSxxQkFBVSxFQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQzFCO2dCQUNFLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSTtnQkFDekQsS0FBSyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtnQkFDL0QsSUFBSSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUU7YUFDMUI7U0FDRixDQUFDLENBQUM7UUFDSCxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO1lBQzNCO2dCQUNFLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJO2dCQUM5RSxLQUFLLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO2dCQUMvRCxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRTthQUMxQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBmcm9tQmFzZTY0LCB0b0hleCB9IGZyb20gJ0Bjb3NtanMvZW5jb2RpbmcnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgUnVuZSwgVHJ1bmUgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3RydW5lJztcbmNvbnN0IGJlY2gzMiA9IHJlcXVpcmUoJ2JlY2gzMi1idWZmZXInKTtcblxuZGVzY3JpYmUoJ1J1bmUgVHJhbnNmZXIgQnVpbGRlcicsICgpID0+IHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlY29pbjtcbiAgbGV0IGZhY3Rvcnk7XG4gIGxldCB0ZXN0VHg7XG4gIGxldCB0ZXN0VHhXaXRoTWVtbztcbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3Rob3JjaGFpbjpydW5lJywgUnVuZS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0dGhvcmNoYWluOnJ1bmUnLCBUcnVuZS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0dGhvcmNoYWluOnJ1bmUnKTtcbiAgICBmYWN0b3J5ID0gYmFzZWNvaW4uZ2V0QnVpbGRlcigpO1xuICAgIHRlc3RUeCA9IHRlc3REYXRhLlRFU1RfU0VORF9UWDtcbiAgICB0ZXN0VHhXaXRoTWVtbyA9IHRlc3REYXRhLlRFU1RfVFhfV0lUSF9NRU1PO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgVHJhbnNmZXIgdHggd2l0aCBzaWduYXR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc2VxdWVuY2UodGVzdFR4LnNlcXVlbmNlKTtcbiAgICB0eEJ1aWxkZXIuZ2FzQnVkZ2V0KHRlc3RUeC5nYXNCdWRnZXQpO1xuICAgIHR4QnVpbGRlci5tZXNzYWdlcyhbdGVzdFR4LnNlbmRNZXNzYWdlLnZhbHVlXSk7XG4gICAgdHhCdWlsZGVyLnB1YmxpY0tleSh0b0hleChmcm9tQmFzZTY0KHRlc3RUeC5wdWJLZXkpKSk7XG4gICAgdHhCdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogdG9IZXgoZnJvbUJhc2U2NCh0ZXN0VHgucHViS2V5KSkgfSwgQnVmZmVyLmZyb20odGVzdFR4LnNpZ25hdHVyZSwgJ2Jhc2U2NCcpKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvbiA9IGF3YWl0IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24uZ2FzQnVkZ2V0LCB0ZXN0VHguZ2FzQnVkZ2V0KTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24uc2VuZE1lc3NhZ2VzWzBdLnR5cGVVcmwsIHRlc3RUeC5zZW5kTWVzc2FnZS50eXBlVXJsKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlLmFtb3VudCwgdGVzdFR4LnNlbmRNZXNzYWdlLnZhbHVlLmFtb3VudCk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChcbiAgICAgIGJlY2gzMi5lbmNvZGUoJ3N0aG9yJywganNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUuZnJvbUFkZHJlc3MpLFxuICAgICAgdGVzdFR4LnNlbmRNZXNzYWdlLnZhbHVlLmZyb21BZGRyZXNzXG4gICAgKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGJlY2gzMi5lbmNvZGUoJ3N0aG9yJywganNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUudG9BZGRyZXNzKSwgdGVzdFR4LnNlbmRNZXNzYWdlLnZhbHVlLnRvQWRkcmVzcyk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChqc29uLnB1YmxpY0tleSwgdG9IZXgoZnJvbUJhc2U2NCh0ZXN0VHgucHViS2V5KSkpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoanNvbi5zZXF1ZW5jZSwgdGVzdFR4LnNlcXVlbmNlKTtcbiAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgc2hvdWxkLmVxdWFsKHJhd1R4LCB0ZXN0VHguc2lnbmVkVHhCYXNlNjQpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwodHguaW5wdXRzLCBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IGJlY2gzMi5kZWNvZGUodGVzdERhdGEuVEVTVF9TRU5EX1RYLnNlbmRlcikuZGF0YSxcbiAgICAgICAgdmFsdWU6IHRlc3REYXRhLlRFU1RfU0VORF9UWC5zZW5kTWVzc2FnZS52YWx1ZS5hbW91bnRbMF0uYW1vdW50LFxuICAgICAgICBjb2luOiBiYXNlY29pbi5nZXRDaGFpbigpLFxuICAgICAgfSxcbiAgICBdKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKHR4Lm91dHB1dHMsIFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogYmVjaDMyLmRlY29kZSh0ZXN0RGF0YS5URVNUX1NFTkRfVFguc2VuZE1lc3NhZ2UudmFsdWUudG9BZGRyZXNzKS5kYXRhLFxuICAgICAgICB2YWx1ZTogdGVzdERhdGEuVEVTVF9TRU5EX1RYLnNlbmRNZXNzYWdlLnZhbHVlLmFtb3VudFswXS5hbW91bnQsXG4gICAgICAgIGNvaW46IGJhc2Vjb2luLmdldENoYWluKCksXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgVHJhbnNmZXIgdHggd2l0aCBzaWduYXR1cmUgYW5kIG1lbW8nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc2VxdWVuY2UodGVzdFR4V2l0aE1lbW8uc2VxdWVuY2UpO1xuICAgIHR4QnVpbGRlci5nYXNCdWRnZXQodGVzdFR4V2l0aE1lbW8uZ2FzQnVkZ2V0KTtcbiAgICB0eEJ1aWxkZXIubWVzc2FnZXMoW3Rlc3RUeFdpdGhNZW1vLnNlbmRNZXNzYWdlLnZhbHVlXSk7XG4gICAgdHhCdWlsZGVyLnB1YmxpY0tleSh0b0hleChmcm9tQmFzZTY0KHRlc3RUeFdpdGhNZW1vLnB1YktleSkpKTtcbiAgICB0eEJ1aWxkZXIubWVtbyh0ZXN0VHhXaXRoTWVtby5tZW1vKTtcbiAgICB0eEJ1aWxkZXIuYWRkU2lnbmF0dXJlKFxuICAgICAgeyBwdWI6IHRvSGV4KGZyb21CYXNlNjQodGVzdFR4V2l0aE1lbW8ucHViS2V5KSkgfSxcbiAgICAgIEJ1ZmZlci5mcm9tKHRlc3RUeFdpdGhNZW1vLnNpZ25hdHVyZSwgJ2Jhc2U2NCcpXG4gICAgKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvbiA9IGF3YWl0IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24uZ2FzQnVkZ2V0LCB0ZXN0VHhXaXRoTWVtby5nYXNCdWRnZXQpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoanNvbi5zZW5kTWVzc2FnZXNbMF0udHlwZVVybCwgdGVzdFR4LnNlbmRNZXNzYWdlLnR5cGVVcmwpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoanNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUuYW1vdW50LCB0ZXN0VHguc2VuZE1lc3NhZ2UudmFsdWUuYW1vdW50KTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKFxuICAgICAgYmVjaDMyLmVuY29kZSgnc3Rob3InLCBqc29uLnNlbmRNZXNzYWdlc1swXS52YWx1ZS5mcm9tQWRkcmVzcyksXG4gICAgICB0ZXN0VHguc2VuZE1lc3NhZ2UudmFsdWUuZnJvbUFkZHJlc3NcbiAgICApO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoYmVjaDMyLmVuY29kZSgnc3Rob3InLCBqc29uLnNlbmRNZXNzYWdlc1swXS52YWx1ZS50b0FkZHJlc3MpLCB0ZXN0VHguc2VuZE1lc3NhZ2UudmFsdWUudG9BZGRyZXNzKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24ucHVibGljS2V5LCB0b0hleChmcm9tQmFzZTY0KHRlc3RUeFdpdGhNZW1vLnB1YktleSkpKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24uc2VxdWVuY2UsIHRlc3RUeFdpdGhNZW1vLnNlcXVlbmNlKTtcbiAgICBzaG91bGQuZXF1YWwoanNvbi5tZW1vLCB0ZXN0VHhXaXRoTWVtby5tZW1vKTtcbiAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgc2hvdWxkLmVxdWFsKHJhd1R4LCB0ZXN0VHhXaXRoTWVtby5zaWduZWRUeEJhc2U2NCk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbCh0eC5pbnB1dHMsIFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogYmVjaDMyLmRlY29kZSh0ZXN0VHhXaXRoTWVtby5zZW5kTWVzc2FnZS52YWx1ZS5mcm9tQWRkcmVzcykuZGF0YSxcbiAgICAgICAgdmFsdWU6IHRlc3RUeFdpdGhNZW1vLnNlbmRNZXNzYWdlLnZhbHVlLmFtb3VudFswXS5hbW91bnQsXG4gICAgICAgIGNvaW46IGJhc2Vjb2luLmdldENoYWluKCksXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHNob3VsZC5kZWVwRXF1YWwodHgub3V0cHV0cywgW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiBiZWNoMzIuZGVjb2RlKHRlc3RUeFdpdGhNZW1vLnNlbmRNZXNzYWdlLnZhbHVlLnRvQWRkcmVzcykuZGF0YSxcbiAgICAgICAgdmFsdWU6IHRlc3RUeFdpdGhNZW1vLnNlbmRNZXNzYWdlLnZhbHVlLmFtb3VudFswXS5hbW91bnQsXG4gICAgICAgIGNvaW46IGJhc2Vjb2luLmdldENoYWluKCksXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgVHJhbnNmZXIgdHggd2l0aG91dCBzaWduYXR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc2VxdWVuY2UodGVzdFR4LnNlcXVlbmNlKTtcbiAgICB0eEJ1aWxkZXIuZ2FzQnVkZ2V0KHRlc3RUeC5nYXNCdWRnZXQpO1xuICAgIHR4QnVpbGRlci5tZXNzYWdlcyhbdGVzdFR4LnNlbmRNZXNzYWdlLnZhbHVlXSk7XG4gICAgdHhCdWlsZGVyLnB1YmxpY0tleSh0b0hleChmcm9tQmFzZTY0KHRlc3RUeC5wdWJLZXkpKSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBqc29uID0gYXdhaXQgKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKS50b0pzb24oKTtcbiAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoanNvbi5nYXNCdWRnZXQsIHRlc3RUeC5nYXNCdWRnZXQpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoanNvbi5zZW5kTWVzc2FnZXNbMF0udHlwZVVybCwgdGVzdFR4LnNlbmRNZXNzYWdlLnR5cGVVcmwpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoanNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUuYW1vdW50LCB0ZXN0VHguc2VuZE1lc3NhZ2UudmFsdWUuYW1vdW50KTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKFxuICAgICAgYmVjaDMyLmVuY29kZSgnc3Rob3InLCBqc29uLnNlbmRNZXNzYWdlc1swXS52YWx1ZS5mcm9tQWRkcmVzcyksXG4gICAgICB0ZXN0VHguc2VuZE1lc3NhZ2UudmFsdWUuZnJvbUFkZHJlc3NcbiAgICApO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoYmVjaDMyLmVuY29kZSgnc3Rob3InLCBqc29uLnNlbmRNZXNzYWdlc1swXS52YWx1ZS50b0FkZHJlc3MpLCB0ZXN0VHguc2VuZE1lc3NhZ2UudmFsdWUudG9BZGRyZXNzKTtcblxuICAgIHNob3VsZC5kZWVwRXF1YWwoanNvbi5wdWJsaWNLZXksIHRvSGV4KGZyb21CYXNlNjQodGVzdFR4LnB1YktleSkpKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24uc2VxdWVuY2UsIHRlc3RUeC5zZXF1ZW5jZSk7XG4gICAgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKHR4LmlucHV0cywgW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiBiZWNoMzIuZGVjb2RlKHRlc3REYXRhLlRFU1RfU0VORF9UWC5zZW5kZXIpLmRhdGEsXG4gICAgICAgIHZhbHVlOiB0ZXN0RGF0YS5URVNUX1NFTkRfVFguc2VuZE1lc3NhZ2UudmFsdWUuYW1vdW50WzBdLmFtb3VudCxcbiAgICAgICAgY29pbjogYmFzZWNvaW4uZ2V0Q2hhaW4oKSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbCh0eC5vdXRwdXRzLCBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IGJlY2gzMi5kZWNvZGUodGVzdERhdGEuVEVTVF9TRU5EX1RYLnNlbmRNZXNzYWdlLnZhbHVlLnRvQWRkcmVzcykuZGF0YSxcbiAgICAgICAgdmFsdWU6IHRlc3REYXRhLlRFU1RfU0VORF9UWC5zZW5kTWVzc2FnZS52YWx1ZS5hbW91bnRbMF0uYW1vdW50LFxuICAgICAgICBjb2luOiBiYXNlY29pbi5nZXRDaGFpbigpLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzaWduIGEgVHJhbnNmZXIgdHgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc2VxdWVuY2UodGVzdFR4LnNlcXVlbmNlKTtcbiAgICB0eEJ1aWxkZXIuZ2FzQnVkZ2V0KHRlc3RUeC5nYXNCdWRnZXQpO1xuICAgIHR4QnVpbGRlci5tZXNzYWdlcyhbdGVzdFR4LnNlbmRNZXNzYWdlLnZhbHVlXSk7XG4gICAgdHhCdWlsZGVyLmFjY291bnROdW1iZXIodGVzdFR4LmFjY291bnROdW1iZXIpO1xuICAgIHR4QnVpbGRlci5jaGFpbklkKHRlc3RUeC5jaGFpbklkKTtcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdG9IZXgoZnJvbUJhc2U2NCh0ZXN0VHgucHJpdmF0ZUtleSkpIH0pO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvbiA9IGF3YWl0IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24uZ2FzQnVkZ2V0LCB0ZXN0VHguZ2FzQnVkZ2V0KTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24uc2VuZE1lc3NhZ2VzWzBdLnR5cGVVcmwsIHRlc3RUeC5zZW5kTWVzc2FnZS50eXBlVXJsKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGpzb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlLmFtb3VudCwgdGVzdFR4LnNlbmRNZXNzYWdlLnZhbHVlLmFtb3VudCk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChcbiAgICAgIGJlY2gzMi5lbmNvZGUoJ3N0aG9yJywganNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUuZnJvbUFkZHJlc3MpLFxuICAgICAgdGVzdFR4LnNlbmRNZXNzYWdlLnZhbHVlLmZyb21BZGRyZXNzXG4gICAgKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGJlY2gzMi5lbmNvZGUoJ3N0aG9yJywganNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUudG9BZGRyZXNzKSwgdGVzdFR4LnNlbmRNZXNzYWdlLnZhbHVlLnRvQWRkcmVzcyk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChqc29uLnB1YmxpY0tleSwgdG9IZXgoZnJvbUJhc2U2NCh0ZXN0VHgucHViS2V5KSkpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoanNvbi5zZXF1ZW5jZSwgdGVzdFR4LnNlcXVlbmNlKTtcbiAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnNpZ25hdHVyZVswXSwgdG9IZXgoZnJvbUJhc2U2NCh0ZXN0VHguc2lnbmF0dXJlKSkpO1xuICAgIHNob3VsZC5lcXVhbChyYXdUeCwgdGVzdFR4LnNpZ25lZFR4QmFzZTY0KTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKHR4LmlucHV0cywgW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiBiZWNoMzIuZGVjb2RlKHRlc3REYXRhLlRFU1RfU0VORF9UWC5zZW5kZXIpLmRhdGEsXG4gICAgICAgIHZhbHVlOiB0ZXN0RGF0YS5URVNUX1NFTkRfVFguc2VuZE1lc3NhZ2UudmFsdWUuYW1vdW50WzBdLmFtb3VudCxcbiAgICAgICAgY29pbjogYmFzZWNvaW4uZ2V0Q2hhaW4oKSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbCh0eC5vdXRwdXRzLCBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IGJlY2gzMi5kZWNvZGUodGVzdERhdGEuVEVTVF9TRU5EX1RYLnNlbmRNZXNzYWdlLnZhbHVlLnRvQWRkcmVzcykuZGF0YSxcbiAgICAgICAgdmFsdWU6IHRlc3REYXRhLlRFU1RfU0VORF9UWC5zZW5kTWVzc2FnZS52YWx1ZS5hbW91bnRbMF0uYW1vdW50LFxuICAgICAgICBjb2luOiBiYXNlY29pbi5nZXRDaGFpbigpLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,101 @@
|
|
|
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 statics_1 = require("@bitgo/statics");
|
|
7
|
+
const should_1 = __importDefault(require("should"));
|
|
8
|
+
const utils_1 = require("../../src/lib/utils");
|
|
9
|
+
const constants_1 = require("../../src/lib/constants");
|
|
10
|
+
const rune_1 = require("../resources/rune");
|
|
11
|
+
const trune_1 = require("../resources/trune");
|
|
12
|
+
const bech32 = require('bech32-buffer');
|
|
13
|
+
describe('utils', () => {
|
|
14
|
+
const mainnetUtils = new utils_1.RuneUtils(statics_1.NetworkType.MAINNET);
|
|
15
|
+
const testnetUtils = new utils_1.RuneUtils(statics_1.NetworkType.TESTNET);
|
|
16
|
+
const testnetDecodedAddress = bech32.decode(trune_1.testnetAddress.address1).data;
|
|
17
|
+
const mainnetDecodedAddress = bech32.decode(rune_1.mainnetAddress.address1).data;
|
|
18
|
+
it('should validate block hash correctly', () => {
|
|
19
|
+
should_1.default.equal(mainnetUtils.isValidBlockId(rune_1.blockHash.hash1), true);
|
|
20
|
+
should_1.default.equal(mainnetUtils.isValidBlockId(rune_1.blockHash.hash2), true);
|
|
21
|
+
// param is coming as undefined so it was causing an issue
|
|
22
|
+
should_1.default.equal(mainnetUtils.isValidBlockId(undefined), false);
|
|
23
|
+
should_1.default.equal(mainnetUtils.isValidBlockId(''), false);
|
|
24
|
+
});
|
|
25
|
+
it('should validate invalid block hash correctly', () => {
|
|
26
|
+
should_1.default.equal(mainnetUtils.isValidBlockId(''), false);
|
|
27
|
+
should_1.default.equal(mainnetUtils.isValidBlockId('0xade35465gfvdcsxsz24300'), false);
|
|
28
|
+
should_1.default.equal(mainnetUtils.isValidBlockId(rune_1.blockHash.hash2 + 'ff'), false);
|
|
29
|
+
should_1.default.equal(mainnetUtils.isValidBlockId('latest'), false);
|
|
30
|
+
});
|
|
31
|
+
it('should validate transaction id correctly', () => {
|
|
32
|
+
should_1.default.equal(mainnetUtils.isValidTransactionId(rune_1.txIds.hash1), true);
|
|
33
|
+
should_1.default.equal(mainnetUtils.isValidTransactionId(rune_1.txIds.hash2), true);
|
|
34
|
+
should_1.default.equal(mainnetUtils.isValidTransactionId(rune_1.txIds.hash3), true);
|
|
35
|
+
});
|
|
36
|
+
it('should validate invalid transaction id correctly', () => {
|
|
37
|
+
should_1.default.equal(mainnetUtils.isValidTransactionId(''), false);
|
|
38
|
+
should_1.default.equal(mainnetUtils.isValidTransactionId(rune_1.txIds.hash1.slice(3)), false);
|
|
39
|
+
should_1.default.equal(mainnetUtils.isValidTransactionId(rune_1.txIds.hash3 + '00'), false);
|
|
40
|
+
should_1.default.equal(mainnetUtils.isValidTransactionId('dalij43ta0ga2dadda02'), false);
|
|
41
|
+
});
|
|
42
|
+
it('validateAmount', function () {
|
|
43
|
+
should_1.default.doesNotThrow(() => mainnetUtils.validateAmountData([rune_1.mainnetCoinAmounts.amount1]));
|
|
44
|
+
should_1.default.doesNotThrow(() => mainnetUtils.validateAmountData([rune_1.mainnetCoinAmounts.amount2]));
|
|
45
|
+
should_1.default.doesNotThrow(() => mainnetUtils.validateAmountData([rune_1.mainnetCoinAmounts.amount3]));
|
|
46
|
+
(0, should_1.default)(() => mainnetUtils.validateAmountData([rune_1.mainnetCoinAmounts.amount4])).throwError('transactionBuilder: validateAmount: Invalid amount: ' + rune_1.mainnetCoinAmounts.amount4.amount);
|
|
47
|
+
(0, should_1.default)(() => mainnetUtils.validateAmountData([rune_1.mainnetCoinAmounts.amount5])).throwError('transactionBuilder: validateAmount: Invalid denom: ' + rune_1.mainnetCoinAmounts.amount5.denom);
|
|
48
|
+
should_1.default.doesNotThrow(() => testnetUtils.validateAmountData([trune_1.testnetCoinAmounts.amount1]));
|
|
49
|
+
should_1.default.doesNotThrow(() => testnetUtils.validateAmountData([trune_1.testnetCoinAmounts.amount2]));
|
|
50
|
+
should_1.default.doesNotThrow(() => testnetUtils.validateAmountData([trune_1.testnetCoinAmounts.amount3]));
|
|
51
|
+
(0, should_1.default)(() => testnetUtils.validateAmountData([trune_1.testnetCoinAmounts.amount4])).throwError('transactionBuilder: validateAmount: Invalid amount: ' + trune_1.testnetCoinAmounts.amount4.amount);
|
|
52
|
+
(0, should_1.default)(() => testnetUtils.validateAmountData([trune_1.testnetCoinAmounts.amount5])).throwError('transactionBuilder: validateAmount: Invalid denom: ' + trune_1.testnetCoinAmounts.amount5.denom);
|
|
53
|
+
});
|
|
54
|
+
it('validate gas amount', function () {
|
|
55
|
+
const gasBudget = { amount: [rune_1.mainnetGasAmounts.positiveGasAmount], gasLimit: 1 };
|
|
56
|
+
should_1.default.doesNotThrow(() => mainnetUtils.validateGasBudget(gasBudget));
|
|
57
|
+
gasBudget.amount[0] = rune_1.mainnetGasAmounts.zeroGasAmount;
|
|
58
|
+
should_1.default.doesNotThrow(() => mainnetUtils.validateGasBudget(gasBudget));
|
|
59
|
+
gasBudget.amount[0] = rune_1.mainnetGasAmounts.emptyGasAmount;
|
|
60
|
+
(0, should_1.default)(() => mainnetUtils.validateGasBudget(gasBudget)).throwError('transactionBuilder: validateAmount: Invalid amount: ');
|
|
61
|
+
gasBudget.amount[0] = rune_1.mainnetGasAmounts.alphabeticGasAmount;
|
|
62
|
+
(0, should_1.default)(() => mainnetUtils.validateGasBudget(gasBudget)).throwError('transactionBuilder: validateAmount: Invalid amount: xyz');
|
|
63
|
+
});
|
|
64
|
+
it('should validate mainnet address', () => {
|
|
65
|
+
should_1.default.equal(mainnetUtils.isValidAddress(rune_1.mainnetAddress.address1), true);
|
|
66
|
+
should_1.default.equal(mainnetUtils.isValidAddress(rune_1.mainnetAddress.validMemoIdAddress), true);
|
|
67
|
+
should_1.default.equal(mainnetUtils.isValidAddress(mainnetDecodedAddress), true);
|
|
68
|
+
should_1.default.equal(mainnetUtils.isValidAddress(trune_1.testnetAddress.address1), false);
|
|
69
|
+
should_1.default.equal(mainnetUtils.isValidAddress('12345'), false);
|
|
70
|
+
});
|
|
71
|
+
it('should validate testnet address', () => {
|
|
72
|
+
should_1.default.equal(testnetUtils.isValidAddress(trune_1.testnetAddress.address1), true);
|
|
73
|
+
should_1.default.equal(testnetUtils.isValidAddress(trune_1.testnetAddress.validMemoIdAddress), true);
|
|
74
|
+
should_1.default.equal(mainnetUtils.isValidAddress(testnetDecodedAddress), true);
|
|
75
|
+
should_1.default.equal(testnetUtils.isValidAddress(rune_1.mainnetAddress.address1), false);
|
|
76
|
+
should_1.default.equal(testnetUtils.isValidAddress('12345'), false);
|
|
77
|
+
});
|
|
78
|
+
it('should convert string type testnet address to Uint8Array', () => {
|
|
79
|
+
const decodedAddress = testnetUtils.getDecodedAddress(trune_1.testnetAddress.address1);
|
|
80
|
+
should_1.default.equal(decodedAddress.length, 20);
|
|
81
|
+
});
|
|
82
|
+
it('should convert string type mainnet address to Uint8Array', () => {
|
|
83
|
+
const decodedAddress = mainnetUtils.getDecodedAddress(rune_1.mainnetAddress.address1);
|
|
84
|
+
should_1.default.equal(decodedAddress.length, 20);
|
|
85
|
+
});
|
|
86
|
+
it('should convert Uint8Array type testnet address to string', () => {
|
|
87
|
+
const encodedAddress = testnetUtils.getEncodedAddress(testnetDecodedAddress);
|
|
88
|
+
should_1.default.equal(encodedAddress, trune_1.testnetAddress.address1);
|
|
89
|
+
should_1.default.equal(typeof encodedAddress, 'string');
|
|
90
|
+
should_1.default.equal(encodedAddress.length, 44);
|
|
91
|
+
should_1.default.equal(encodedAddress.startsWith(constants_1.TESTNET_ADDRESS_PREFIX), true);
|
|
92
|
+
});
|
|
93
|
+
it('should convert Uint8Array type mainnet address to string', () => {
|
|
94
|
+
const encodedAddress = mainnetUtils.getEncodedAddress(mainnetDecodedAddress);
|
|
95
|
+
should_1.default.equal(encodedAddress, rune_1.mainnetAddress.address1);
|
|
96
|
+
should_1.default.equal(typeof encodedAddress, 'string');
|
|
97
|
+
should_1.default.equal(encodedAddress.length, 43);
|
|
98
|
+
should_1.default.equal(encodedAddress.startsWith(constants_1.MAINNET_ADDRESS_PREFIX), true);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBNkM7QUFDN0Msb0RBQTRCO0FBQzVCLCtDQUFnRDtBQUNoRCx1REFBeUY7QUFDekYsNENBQTRHO0FBQzVHLDhDQUF3RTtBQUN4RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFeEMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7SUFDckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxpQkFBUyxDQUFDLHFCQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxpQkFBUyxDQUFDLHFCQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFeEQsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLHNCQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFFLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUUxRSxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1FBQzlDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsZ0JBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLGdCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakUsMERBQTBEO1FBQzFELGdCQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsU0FBOEIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pGLGdCQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FB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d29ya1R5cGUgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBSdW5lVXRpbHMgfSBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IE1BSU5ORVRfQUREUkVTU19QUkVGSVgsIFRFU1RORVRfQUREUkVTU19QUkVGSVggfSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBibG9ja0hhc2gsIG1haW5uZXRDb2luQW1vdW50cywgdHhJZHMsIG1haW5uZXRBZGRyZXNzLCBtYWlubmV0R2FzQW1vdW50cyB9IGZyb20gJy4uL3Jlc291cmNlcy9ydW5lJztcbmltcG9ydCB7IHRlc3RuZXRDb2luQW1vdW50cywgdGVzdG5ldEFkZHJlc3MgfSBmcm9tICcuLi9yZXNvdXJjZXMvdHJ1bmUnO1xuY29uc3QgYmVjaDMyID0gcmVxdWlyZSgnYmVjaDMyLWJ1ZmZlcicpO1xuXG5kZXNjcmliZSgndXRpbHMnLCAoKSA9PiB7XG4gIGNvbnN0IG1haW5uZXRVdGlscyA9IG5ldyBSdW5lVXRpbHMoTmV0d29ya1R5cGUuTUFJTk5FVCk7XG4gIGNvbnN0IHRlc3RuZXRVdGlscyA9IG5ldyBSdW5lVXRpbHMoTmV0d29ya1R5cGUuVEVTVE5FVCk7XG5cbiAgY29uc3QgdGVzdG5ldERlY29kZWRBZGRyZXNzID0gYmVjaDMyLmRlY29kZSh0ZXN0bmV0QWRkcmVzcy5hZGRyZXNzMSkuZGF0YTtcbiAgY29uc3QgbWFpbm5ldERlY29kZWRBZGRyZXNzID0gYmVjaDMyLmRlY29kZShtYWlubmV0QWRkcmVzcy5hZGRyZXNzMSkuZGF0YTtcblxuICBpdCgnc2hvdWxkIHZhbGlkYXRlIGJsb2NrIGhhc2ggY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIHNob3VsZC5lcXVhbChtYWlubmV0VXRpbHMuaXNWYWxpZEJsb2NrSWQoYmxvY2tIYXNoLmhhc2gxKSwgdHJ1ZSk7XG4gICAgc2hvdWxkLmVxdWFsKG1haW5uZXRVdGlscy5pc1ZhbGlkQmxvY2tJZChibG9ja0hhc2guaGFzaDIpLCB0cnVlKTtcbiAgICAvLyBwYXJhbSBpcyBjb21pbmcgYXMgdW5kZWZpbmVkIHNvIGl0IHdhcyBjYXVzaW5nIGFuIGlzc3VlXG4gICAgc2hvdWxkLmVxdWFsKG1haW5uZXRVdGlscy5pc1ZhbGlkQmxvY2tJZCh1bmRlZmluZWQgYXMgdW5rbm93biBhcyBzdHJpbmcpLCBmYWxzZSk7XG4gICAgc2hvdWxkLmVxdWFsKG1haW5uZXRVdGlscy5pc1ZhbGlkQmxvY2tJZCgnJyksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBpbnZhbGlkIGJsb2NrIGhhc2ggY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIHNob3VsZC5lcXVhbChtYWlubmV0VXRpbHMuaXNWYWxpZEJsb2NrSWQoJycpLCBmYWxzZSk7XG4gICAgc2hvdWxkLmVxdWFsKG1haW5uZXRVdGlscy5pc1ZhbGlkQmxvY2tJZCgnMHhhZGUzNTQ2NWdmdmRjc3hzejI0MzAwJyksIGZhbHNlKTtcbiAgICBzaG91bGQuZXF1YWwobWFpbm5ldFV0aWxzLmlzVmFsaWRCbG9ja0lkKGJsb2NrSGFzaC5oYXNoMiArICdmZicpLCBmYWxzZSk7XG4gICAgc2hvdWxkLmVxdWFsKG1haW5uZXRVdGlscy5pc1ZhbGlkQmxvY2tJZCgnbGF0ZXN0JyksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0cmFuc2FjdGlvbiBpZCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgc2hvdWxkLmVxdWFsKG1haW5uZXRVdGlscy5pc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkcy5oYXNoMSksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbChtYWlubmV0VXRpbHMuaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZHMuaGFzaDIpLCB0cnVlKTtcbiAgICBzaG91bGQuZXF1YWwobWFpbm5ldFV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWRzLmhhc2gzKSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgaW52YWxpZCB0cmFuc2FjdGlvbiBpZCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgc2hvdWxkLmVxdWFsKG1haW5uZXRVdGlscy5pc1ZhbGlkVHJhbnNhY3Rpb25JZCgnJyksIGZhbHNlKTtcbiAgICBzaG91bGQuZXF1YWwobWFpbm5ldFV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWRzLmhhc2gxLnNsaWNlKDMpKSwgZmFsc2UpO1xuICAgIHNob3VsZC5lcXVhbChtYWlubmV0VXRpbHMuaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZHMuaGFzaDMgKyAnMDAnKSwgZmFsc2UpO1xuICAgIHNob3VsZC5lcXVhbChtYWlubmV0VXRpbHMuaXNWYWxpZFRyYW5zYWN0aW9uSWQoJ2RhbGlqNDN0YTBnYTJkYWRkYTAyJyksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3ZhbGlkYXRlQW1vdW50JywgZnVuY3Rpb24gKCkge1xuICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gbWFpbm5ldFV0aWxzLnZhbGlkYXRlQW1vdW50RGF0YShbbWFpbm5ldENvaW5BbW91bnRzLmFtb3VudDFdKSk7XG4gICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBtYWlubmV0VXRpbHMudmFsaWRhdGVBbW91bnREYXRhKFttYWlubmV0Q29pbkFtb3VudHMuYW1vdW50Ml0pKTtcbiAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IG1haW5uZXRVdGlscy52YWxpZGF0ZUFtb3VudERhdGEoW21haW5uZXRDb2luQW1vdW50cy5hbW91bnQzXSkpO1xuICAgIHNob3VsZCgoKSA9PiBtYWlubmV0VXRpbHMudmFsaWRhdGVBbW91bnREYXRhKFttYWlubmV0Q29pbkFtb3VudHMuYW1vdW50NF0pKS50aHJvd0Vycm9yKFxuICAgICAgJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgYW1vdW50OiAnICsgbWFpbm5ldENvaW5BbW91bnRzLmFtb3VudDQuYW1vdW50XG4gICAgKTtcbiAgICBzaG91bGQoKCkgPT4gbWFpbm5ldFV0aWxzLnZhbGlkYXRlQW1vdW50RGF0YShbbWFpbm5ldENvaW5BbW91bnRzLmFtb3VudDVdKSkudGhyb3dFcnJvcihcbiAgICAgICd0cmFuc2FjdGlvbkJ1aWxkZXI6IHZhbGlkYXRlQW1vdW50OiBJbnZhbGlkIGRlbm9tOiAnICsgbWFpbm5ldENvaW5BbW91bnRzLmFtb3VudDUuZGVub21cbiAgICApO1xuXG4gICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB0ZXN0bmV0VXRpbHMudmFsaWRhdGVBbW91bnREYXRhKFt0ZXN0bmV0Q29pbkFtb3VudHMuYW1vdW50MV0pKTtcbiAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHRlc3RuZXRVdGlscy52YWxpZGF0ZUFtb3VudERhdGEoW3Rlc3RuZXRDb2luQW1vdW50cy5hbW91bnQyXSkpO1xuICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gdGVzdG5ldFV0aWxzLnZhbGlkYXRlQW1vdW50RGF0YShbdGVzdG5ldENvaW5BbW91bnRzLmFtb3VudDNdKSk7XG4gICAgc2hvdWxkKCgpID0+IHRlc3RuZXRVdGlscy52YWxpZGF0ZUFtb3VudERhdGEoW3Rlc3RuZXRDb2luQW1vdW50cy5hbW91bnQ0XSkpLnRocm93RXJyb3IoXG4gICAgICAndHJhbnNhY3Rpb25CdWlsZGVyOiB2YWxpZGF0ZUFtb3VudDogSW52YWxpZCBhbW91bnQ6ICcgKyB0ZXN0bmV0Q29pbkFtb3VudHMuYW1vdW50NC5hbW91bnRcbiAgICApO1xuICAgIHNob3VsZCgoKSA9PiB0ZXN0bmV0VXRpbHMudmFsaWRhdGVBbW91bnREYXRhKFt0ZXN0bmV0Q29pbkFtb3VudHMuYW1vdW50NV0pKS50aHJvd0Vycm9yKFxuICAgICAgJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgZGVub206ICcgKyB0ZXN0bmV0Q29pbkFtb3VudHMuYW1vdW50NS5kZW5vbVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCd2YWxpZGF0ZSBnYXMgYW1vdW50JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGdhc0J1ZGdldCA9IHsgYW1vdW50OiBbbWFpbm5ldEdhc0Ftb3VudHMucG9zaXRpdmVHYXNBbW91bnRdLCBnYXNMaW1pdDogMSB9O1xuICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gbWFpbm5ldFV0aWxzLnZhbGlkYXRlR2FzQnVkZ2V0KGdhc0J1ZGdldCkpO1xuXG4gICAgZ2FzQnVkZ2V0LmFtb3VudFswXSA9IG1haW5uZXRHYXNBbW91bnRzLnplcm9HYXNBbW91bnQ7XG4gICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBtYWlubmV0VXRpbHMudmFsaWRhdGVHYXNCdWRnZXQoZ2FzQnVkZ2V0KSk7XG5cbiAgICBnYXNCdWRnZXQuYW1vdW50WzBdID0gbWFpbm5ldEdhc0Ftb3VudHMuZW1wdHlHYXNBbW91bnQ7XG4gICAgc2hvdWxkKCgpID0+IG1haW5uZXRVdGlscy52YWxpZGF0ZUdhc0J1ZGdldChnYXNCdWRnZXQpKS50aHJvd0Vycm9yKFxuICAgICAgJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgYW1vdW50OiAnXG4gICAgKTtcblxuICAgIGdhc0J1ZGdldC5hbW91bnRbMF0gPSBtYWlubmV0R2FzQW1vdW50cy5hbHBoYWJldGljR2FzQW1vdW50O1xuICAgIHNob3VsZCgoKSA9PiBtYWlubmV0VXRpbHMudmFsaWRhdGVHYXNCdWRnZXQoZ2FzQnVkZ2V0KSkudGhyb3dFcnJvcihcbiAgICAgICd0cmFuc2FjdGlvbkJ1aWxkZXI6IHZhbGlkYXRlQW1vdW50OiBJbnZhbGlkIGFtb3VudDogeHl6J1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgbWFpbm5ldCBhZGRyZXNzJywgKCkgPT4ge1xuICAgIHNob3VsZC5lcXVhbChtYWlubmV0VXRpbHMuaXNWYWxpZEFkZHJlc3MobWFpbm5ldEFkZHJlc3MuYWRkcmVzczEpLCB0cnVlKTtcbiAgICBzaG91bGQuZXF1YWwobWFpbm5ldFV0aWxzLmlzVmFsaWRBZGRyZXNzKG1haW5uZXRBZGRyZXNzLnZhbGlkTWVtb0lkQWRkcmVzcyksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbChtYWlubmV0VXRpbHMuaXNWYWxpZEFkZHJlc3MobWFpbm5ldERlY29kZWRBZGRyZXNzKSwgdHJ1ZSk7XG4gICAgc2hvdWxkLmVxdWFsKG1haW5uZXRVdGlscy5pc1ZhbGlkQWRkcmVzcyh0ZXN0bmV0QWRkcmVzcy5hZGRyZXNzMSksIGZhbHNlKTtcbiAgICBzaG91bGQuZXF1YWwobWFpbm5ldFV0aWxzLmlzVmFsaWRBZGRyZXNzKCcxMjM0NScpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgdGVzdG5ldCBhZGRyZXNzJywgKCkgPT4ge1xuICAgIHNob3VsZC5lcXVhbCh0ZXN0bmV0VXRpbHMuaXNWYWxpZEFkZHJlc3ModGVzdG5ldEFkZHJlc3MuYWRkcmVzczEpLCB0cnVlKTtcbiAgICBzaG91bGQuZXF1YWwodGVzdG5ldFV0aWxzLmlzVmFsaWRBZGRyZXNzKHRlc3RuZXRBZGRyZXNzLnZhbGlkTWVtb0lkQWRkcmVzcyksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbChtYWlubmV0VXRpbHMuaXNWYWxpZEFkZHJlc3ModGVzdG5ldERlY29kZWRBZGRyZXNzKSwgdHJ1ZSk7XG4gICAgc2hvdWxkLmVxdWFsKHRlc3RuZXRVdGlscy5pc1ZhbGlkQWRkcmVzcyhtYWlubmV0QWRkcmVzcy5hZGRyZXNzMSksIGZhbHNlKTtcbiAgICBzaG91bGQuZXF1YWwodGVzdG5ldFV0aWxzLmlzVmFsaWRBZGRyZXNzKCcxMjM0NScpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY29udmVydCBzdHJpbmcgdHlwZSB0ZXN0bmV0IGFkZHJlc3MgdG8gVWludDhBcnJheScsICgpID0+IHtcbiAgICBjb25zdCBkZWNvZGVkQWRkcmVzcyA9IHRlc3RuZXRVdGlscy5nZXREZWNvZGVkQWRkcmVzcyh0ZXN0bmV0QWRkcmVzcy5hZGRyZXNzMSk7XG4gICAgc2hvdWxkLmVxdWFsKGRlY29kZWRBZGRyZXNzLmxlbmd0aCwgMjApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNvbnZlcnQgc3RyaW5nIHR5cGUgbWFpbm5ldCBhZGRyZXNzIHRvIFVpbnQ4QXJyYXknLCAoKSA9PiB7XG4gICAgY29uc3QgZGVjb2RlZEFkZHJlc3MgPSBtYWlubmV0VXRpbHMuZ2V0RGVjb2RlZEFkZHJlc3MobWFpbm5ldEFkZHJlc3MuYWRkcmVzczEpO1xuICAgIHNob3VsZC5lcXVhbChkZWNvZGVkQWRkcmVzcy5sZW5ndGgsIDIwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb252ZXJ0IFVpbnQ4QXJyYXkgdHlwZSB0ZXN0bmV0IGFkZHJlc3MgdG8gc3RyaW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IGVuY29kZWRBZGRyZXNzID0gdGVzdG5ldFV0aWxzLmdldEVuY29kZWRBZGRyZXNzKHRlc3RuZXREZWNvZGVkQWRkcmVzcyk7XG4gICAgc2hvdWxkLmVxdWFsKGVuY29kZWRBZGRyZXNzLCB0ZXN0bmV0QWRkcmVzcy5hZGRyZXNzMSk7XG4gICAgc2hvdWxkLmVxdWFsKHR5cGVvZiBlbmNvZGVkQWRkcmVzcywgJ3N0cmluZycpO1xuICAgIHNob3VsZC5lcXVhbChlbmNvZGVkQWRkcmVzcy5sZW5ndGgsIDQ0KTtcbiAgICBzaG91bGQuZXF1YWwoZW5jb2RlZEFkZHJlc3Muc3RhcnRzV2l0aChURVNUTkVUX0FERFJFU1NfUFJFRklYKSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY29udmVydCBVaW50OEFycmF5IHR5cGUgbWFpbm5ldCBhZGRyZXNzIHRvIHN0cmluZycsICgpID0+IHtcbiAgICBjb25zdCBlbmNvZGVkQWRkcmVzcyA9IG1haW5uZXRVdGlscy5nZXRFbmNvZGVkQWRkcmVzcyhtYWlubmV0RGVjb2RlZEFkZHJlc3MpO1xuICAgIHNob3VsZC5lcXVhbChlbmNvZGVkQWRkcmVzcywgbWFpbm5ldEFkZHJlc3MuYWRkcmVzczEpO1xuICAgIHNob3VsZC5lcXVhbCh0eXBlb2YgZW5jb2RlZEFkZHJlc3MsICdzdHJpbmcnKTtcbiAgICBzaG91bGQuZXF1YWwoZW5jb2RlZEFkZHJlc3MubGVuZ3RoLCA0Myk7XG4gICAgc2hvdWxkLmVxdWFsKGVuY29kZWRBZGRyZXNzLnN0YXJ0c1dpdGgoTUFJTk5FVF9BRERSRVNTX1BSRUZJWCksIHRydWUpO1xuICB9KTtcbn0pO1xuIl19
|