@bitgo-beta/sdk-coin-canton 1.0.1-beta.5 → 1.0.1-beta.51
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/resources/hash/hash.d.ts +5 -0
- package/dist/resources/hash/hash.js +298 -0
- package/dist/resources/proto/damlTransaction.js +100 -0
- package/dist/resources/proto/damlTransactionNode.js +71 -0
- package/dist/resources/proto/damlTransactionNodeSeed.js +56 -0
- package/dist/resources/proto/metadata/metadataGlobalKeyMappingEntry.js +53 -0
- package/dist/resources/proto/metadata/metadataInputContract.js +80 -0
- package/dist/resources/proto/metadata/metadataSubmitterInfo.js +62 -0
- package/dist/resources/proto/metadata.js +189 -0
- package/dist/resources/proto/node/empty.js +36 -0
- package/dist/resources/proto/node/globalKey.js +81 -0
- package/dist/resources/proto/node/identifier.js +73 -0
- package/dist/resources/proto/node/node.js +664 -0
- package/dist/resources/proto/node/timestamp.js +145 -0
- package/dist/resources/proto/node/value.js +838 -0
- package/dist/resources/proto/preparedTransaction.d.ts +8 -0
- package/dist/resources/proto/preparedTransaction.js +66 -0
- package/dist/src/canton.d.ts +37 -0
- package/dist/src/canton.d.ts.map +1 -0
- package/dist/src/canton.js +115 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +20 -0
- package/dist/src/lib/constant.d.ts +14 -0
- package/dist/src/lib/constant.d.ts.map +1 -0
- package/dist/src/lib/constant.js +17 -0
- package/dist/src/lib/iface.d.ts +72 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +3 -0
- package/dist/src/lib/index.d.ts +10 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +53 -0
- package/dist/src/lib/keyPair.d.ts +18 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +44 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +49 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.js +87 -0
- package/dist/src/lib/resourcesInterface.d.ts +214 -0
- package/dist/src/lib/resourcesInterface.d.ts.map +1 -0
- package/dist/src/lib/resourcesInterface.js +3 -0
- package/dist/src/lib/transaction/transaction.d.ts +18 -0
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transaction.js +79 -0
- package/dist/src/lib/transactionBuilder.d.ts +36 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +86 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +18 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +45 -0
- package/dist/src/lib/transferBuilder.d.ts +10 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +18 -0
- package/dist/src/lib/utils.d.ts +113 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +257 -0
- package/dist/src/lib/walletInitBuilder.d.ts +101 -0
- package/dist/src/lib/walletInitBuilder.d.ts.map +1 -0
- package/dist/src/lib/walletInitBuilder.js +232 -0
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +16 -0
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -0
- package/dist/src/lib/walletInitialization/walletInitTransaction.js +87 -0
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +11 -0
- package/dist/src/tcanton.d.ts +17 -0
- package/dist/src/tcanton.d.ts.map +1 -0
- package/dist/src/tcanton.js +30 -0
- package/dist/test/integration/index.d.ts +1 -0
- package/dist/test/integration/index.d.ts.map +1 -0
- package/dist/test/integration/index.js +1 -0
- package/dist/test/resources.d.ts +47 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +62 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts +2 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +67 -0
- package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts +2 -0
- package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/walletInit/walletInitBuilder.js +65 -0
- package/dist/test/unit/index.d.ts +2 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +16 -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 +72 -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 +62 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +29 -10
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneStepEnablementBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
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 assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const should_1 = __importDefault(require("should"));
|
|
8
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
9
|
+
const src_1 = require("../../../../src");
|
|
10
|
+
const oneStepPreApprovalBuilder_1 = require("../../../../src/lib/oneStepPreApprovalBuilder");
|
|
11
|
+
const resources_1 = require("../../../resources");
|
|
12
|
+
describe('Wallet Pre-approval Enablement Builder', () => {
|
|
13
|
+
it('should get the wallet init request object', function () {
|
|
14
|
+
const txBuilder = new oneStepPreApprovalBuilder_1.OneStepPreApprovalBuilder(statics_1.coins.get('tcanton'));
|
|
15
|
+
const oneStepEnablementTx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
16
|
+
txBuilder.initBuilder(oneStepEnablementTx);
|
|
17
|
+
const { commandId, partyId } = resources_1.OneStepEnablement;
|
|
18
|
+
txBuilder.commandId(commandId).receiverPartyId(partyId);
|
|
19
|
+
const requestObj = txBuilder.toRequestObject();
|
|
20
|
+
should_1.default.exist(requestObj);
|
|
21
|
+
assert_1.default.equal(requestObj.commandId, commandId);
|
|
22
|
+
assert_1.default.equal(requestObj.receiverId, partyId);
|
|
23
|
+
assert_1.default.equal(requestObj.actAs.length, 1);
|
|
24
|
+
const actAs = requestObj.actAs[0];
|
|
25
|
+
assert_1.default.equal(actAs, partyId);
|
|
26
|
+
});
|
|
27
|
+
it('should validate raw transaction', function () {
|
|
28
|
+
const txBuilder = new oneStepPreApprovalBuilder_1.OneStepPreApprovalBuilder(statics_1.coins.get('tcanton'));
|
|
29
|
+
const oneStepEnablementTx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
30
|
+
txBuilder.initBuilder(oneStepEnablementTx);
|
|
31
|
+
txBuilder.setTransaction(resources_1.OneStepPreApprovalPrepareResponse);
|
|
32
|
+
txBuilder.validateRawTransaction(resources_1.OneStepPreApprovalPrepareResponse.preparedTransaction);
|
|
33
|
+
});
|
|
34
|
+
it('should validate the transaction', function () {
|
|
35
|
+
const txBuilder = new oneStepPreApprovalBuilder_1.OneStepPreApprovalBuilder(statics_1.coins.get('tcanton'));
|
|
36
|
+
const oneStepEnablementTx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
37
|
+
oneStepEnablementTx.prepareCommand = resources_1.OneStepPreApprovalPrepareResponse;
|
|
38
|
+
txBuilder.initBuilder(oneStepEnablementTx);
|
|
39
|
+
txBuilder.setTransaction(resources_1.OneStepPreApprovalPrepareResponse);
|
|
40
|
+
txBuilder.validateTransaction(oneStepEnablementTx);
|
|
41
|
+
});
|
|
42
|
+
it('should throw error in validating raw transaction', function () {
|
|
43
|
+
const txBuilder = new oneStepPreApprovalBuilder_1.OneStepPreApprovalBuilder(statics_1.coins.get('tcanton'));
|
|
44
|
+
const oneStepEnablementTx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
45
|
+
txBuilder.initBuilder(oneStepEnablementTx);
|
|
46
|
+
txBuilder.setTransaction(resources_1.InvalidOneStepPreApprovalPrepareResponse);
|
|
47
|
+
try {
|
|
48
|
+
txBuilder.validateRawTransaction(resources_1.InvalidOneStepPreApprovalPrepareResponse.preparedTransaction);
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
assert_1.default.equal(e.message, 'invalid raw transaction, hash not matching');
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
it('should throw error in validating raw transaction', function () {
|
|
55
|
+
const txBuilder = new oneStepPreApprovalBuilder_1.OneStepPreApprovalBuilder(statics_1.coins.get('tcanton'));
|
|
56
|
+
const oneStepEnablementTx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
57
|
+
txBuilder.initBuilder(oneStepEnablementTx);
|
|
58
|
+
oneStepEnablementTx.prepareCommand = resources_1.InvalidOneStepPreApprovalPrepareResponse;
|
|
59
|
+
try {
|
|
60
|
+
txBuilder.validateTransaction(oneStepEnablementTx);
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
assert_1.default.equal(e.message, 'invalid transaction');
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lU3RlcEVuYWJsZW1lbnRCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2J1aWxkZXIvb25lU3RlcEVuYWJsZW1lbnQvb25lU3RlcEVuYWJsZW1lbnRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixpREFBNEM7QUFFNUMseUNBQThDO0FBRTlDLDZGQUEwRjtBQUUxRixrREFJNEI7QUFFNUIsUUFBUSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxFQUFFLENBQUMsMkNBQTJDLEVBQUU7UUFDOUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxxREFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLFNBQVMsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLDZCQUFpQixDQUFDO1FBQ2pELFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sVUFBVSxHQUE2QixTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxL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LENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IE9uZVN0ZXBFbmFibGVtZW50UmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHsgT25lU3RlcFByZUFwcHJvdmFsQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvb25lU3RlcFByZUFwcHJvdmFsQnVpbGRlcic7XG5cbmltcG9ydCB7XG4gIEludmFsaWRPbmVTdGVwUHJlQXBwcm92YWxQcmVwYXJlUmVzcG9uc2UsXG4gIE9uZVN0ZXBFbmFibGVtZW50LFxuICBPbmVTdGVwUHJlQXBwcm92YWxQcmVwYXJlUmVzcG9uc2UsXG59IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdXYWxsZXQgUHJlLWFwcHJvdmFsIEVuYWJsZW1lbnQgQnVpbGRlcicsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHdhbGxldCBpbml0IHJlcXVlc3Qgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBPbmVTdGVwUHJlQXBwcm92YWxCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCBvbmVTdGVwRW5hYmxlbWVudFR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIob25lU3RlcEVuYWJsZW1lbnRUeCk7XG4gICAgY29uc3QgeyBjb21tYW5kSWQsIHBhcnR5SWQgfSA9IE9uZVN0ZXBFbmFibGVtZW50O1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKS5yZWNlaXZlclBhcnR5SWQocGFydHlJZCk7XG4gICAgY29uc3QgcmVxdWVzdE9iajogT25lU3RlcEVuYWJsZW1lbnRSZXF1ZXN0ID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIHNob3VsZC5leGlzdChyZXF1ZXN0T2JqKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb21tYW5kSWQsIGNvbW1hbmRJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoucmVjZWl2ZXJJZCwgcGFydHlJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouYWN0QXMubGVuZ3RoLCAxKTtcbiAgICBjb25zdCBhY3RBcyA9IHJlcXVlc3RPYmouYWN0QXNbMF07XG4gICAgYXNzZXJ0LmVxdWFsKGFjdEFzLCBwYXJ0eUlkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSByYXcgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IE9uZVN0ZXBQcmVBcHByb3ZhbEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IG9uZVN0ZXBFbmFibGVtZW50VHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihvbmVTdGVwRW5hYmxlbWVudFR4KTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oT25lU3RlcFByZUFwcHJvdmFsUHJlcGFyZVJlc3BvbnNlKTtcbiAgICB0eEJ1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihPbmVTdGVwUHJlQXBwcm92YWxQcmVwYXJlUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBPbmVTdGVwUHJlQXBwcm92YWxCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCBvbmVTdGVwRW5hYmxlbWVudFR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBvbmVTdGVwRW5hYmxlbWVudFR4LnByZXBhcmVDb21tYW5kID0gT25lU3RlcFByZUFwcHJvdmFsUHJlcGFyZVJlc3BvbnNlO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihvbmVTdGVwRW5hYmxlbWVudFR4KTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oT25lU3RlcFByZUFwcHJvdmFsUHJlcGFyZVJlc3BvbnNlKTtcbiAgICB0eEJ1aWxkZXIudmFsaWRhdGVUcmFuc2FjdGlvbihvbmVTdGVwRW5hYmxlbWVudFR4KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpbiB2YWxpZGF0aW5nIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgT25lU3RlcFByZUFwcHJvdmFsQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3Qgb25lU3RlcEVuYWJsZW1lbnRUeCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKG9uZVN0ZXBFbmFibGVtZW50VHgpO1xuICAgIHR4QnVpbGRlci5zZXRUcmFuc2FjdGlvbihJbnZhbGlkT25lU3RlcFByZUFwcHJvdmFsUHJlcGFyZVJlc3BvbnNlKTtcbiAgICB0cnkge1xuICAgICAgdHhCdWlsZGVyLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24oSW52YWxpZE9uZVN0ZXBQcmVBcHByb3ZhbFByZXBhcmVSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZS5tZXNzYWdlLCAnaW52YWxpZCByYXcgdHJhbnNhY3Rpb24sIGhhc2ggbm90IG1hdGNoaW5nJyk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGluIHZhbGlkYXRpbmcgcmF3IHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBPbmVTdGVwUHJlQXBwcm92YWxCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCBvbmVTdGVwRW5hYmxlbWVudFR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIob25lU3RlcEVuYWJsZW1lbnRUeCk7XG4gICAgb25lU3RlcEVuYWJsZW1lbnRUeC5wcmVwYXJlQ29tbWFuZCA9IEludmFsaWRPbmVTdGVwUHJlQXBwcm92YWxQcmVwYXJlUmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHR4QnVpbGRlci52YWxpZGF0ZVRyYW5zYWN0aW9uKG9uZVN0ZXBFbmFibGVtZW50VHgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGFzc2VydC5lcXVhbChlLm1lc3NhZ2UsICdpbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletInitBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/builder/walletInit/walletInitBuilder.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 assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const should_1 = __importDefault(require("should"));
|
|
8
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
9
|
+
const src_1 = require("../../../../src");
|
|
10
|
+
const resources_1 = require("../../../resources");
|
|
11
|
+
describe('Wallet Initialization Builder', () => {
|
|
12
|
+
it('should get the wallet init request object', function () {
|
|
13
|
+
const txBuilder = new src_1.WalletInitBuilder(statics_1.coins.get('tcanton'));
|
|
14
|
+
const { publicKey, partyHint } = resources_1.WalletInitRequestData;
|
|
15
|
+
txBuilder.publicKey(publicKey);
|
|
16
|
+
txBuilder.partyHint(partyHint);
|
|
17
|
+
const requestObj = txBuilder.toRequestObject();
|
|
18
|
+
should_1.default.exist(requestObj);
|
|
19
|
+
assert_1.default.equal(requestObj.partyHint, partyHint);
|
|
20
|
+
assert_1.default.equal(requestObj.localParticipantObservationOnly, false);
|
|
21
|
+
assert_1.default.equal(requestObj.confirmationThreshold, 1);
|
|
22
|
+
assert_1.default.equal(requestObj.observingParticipantUids.length, 0);
|
|
23
|
+
assert_1.default.equal(requestObj.otherConfirmingParticipantUids.length, 0);
|
|
24
|
+
should_1.default.exist(requestObj.publicKey);
|
|
25
|
+
assert_1.default.equal(requestObj.publicKey.keyData, publicKey);
|
|
26
|
+
should_1.default.exist(requestObj.publicKey.format);
|
|
27
|
+
should_1.default.exist(requestObj.publicKey.format);
|
|
28
|
+
should_1.default.exist(requestObj.publicKey.keySpec);
|
|
29
|
+
});
|
|
30
|
+
it('should validate raw transaction', function () {
|
|
31
|
+
const txBuilder = new src_1.WalletInitBuilder(statics_1.coins.get('tcanton'));
|
|
32
|
+
txBuilder.transaction = resources_1.GenerateTopologyResponse;
|
|
33
|
+
txBuilder.validateRawTransaction(resources_1.GenerateTopologyResponse.topologyTransactions);
|
|
34
|
+
});
|
|
35
|
+
it('should validate the transaction', function () {
|
|
36
|
+
const txBuilder = new src_1.WalletInitBuilder(statics_1.coins.get('tcanton'));
|
|
37
|
+
txBuilder.transaction = resources_1.GenerateTopologyResponse;
|
|
38
|
+
const walletInitTxn = new src_1.WalletInitTransaction(statics_1.coins.get('tcanton'));
|
|
39
|
+
walletInitTxn.preparedParty = resources_1.GenerateTopologyResponse;
|
|
40
|
+
txBuilder.validateTransaction(walletInitTxn);
|
|
41
|
+
});
|
|
42
|
+
it('should throw error in validating raw transaction', function () {
|
|
43
|
+
const txBuilder = new src_1.WalletInitBuilder(statics_1.coins.get('tcanton'));
|
|
44
|
+
txBuilder.transaction = resources_1.InvalidGenerateTopologyResponse;
|
|
45
|
+
try {
|
|
46
|
+
txBuilder.validateRawTransaction(resources_1.InvalidGenerateTopologyResponse.topologyTransactions);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
assert_1.default.equal(e.message, 'invalid raw transaction, hash not matching');
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
it('should throw error in validating raw transaction', function () {
|
|
53
|
+
const txBuilder = new src_1.WalletInitBuilder(statics_1.coins.get('tcanton'));
|
|
54
|
+
txBuilder.transaction = resources_1.InvalidGenerateTopologyResponse;
|
|
55
|
+
const walletInitTxn = new src_1.WalletInitTransaction(statics_1.coins.get('tcanton'));
|
|
56
|
+
walletInitTxn.preparedParty = resources_1.InvalidGenerateTopologyResponse;
|
|
57
|
+
try {
|
|
58
|
+
txBuilder.validateTransaction(walletInitTxn);
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
assert_1.default.equal(e.message, 'invalid transaction');
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYnVpbGRlci93YWxsZXRJbml0L3dhbGxldEluaXRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixpREFBNEM7QUFFNUMseUNBQTJFO0FBRzNFLGtEQUFzSDtBQUV0SCxRQUFRLENBQUMsK0JBQStCLEVBQUUsR0FBRyxFQUFFO0lBQzdDLEVBQUUsQ0FBQywyQ0FBMkMsRUFBRTtRQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLHVCQUFpQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5RCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLGlDQUFxQixDQUFDO1FBQ3ZELFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0IsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixNQUFNLFVBQVUsR0FBc0IsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVELGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksdUJBQWlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzlELFNBQVMsQ0FBQyxXQUFXLEdBQUcsb0NBQXdCLENBQUM7UUFDakQsU0FBUyxDQUFDLHNCQUFzQixDQUFDLG9DQUF3QixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUU7UUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSx1QkFBaUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsU0FBUyxDQUFDLFdBQVcsR0FBRyxvQ0FBd0IsQ0FBQztRQUNqRCxNQUFNLGFBQWEsR0FBRyxJQUFJLDJCQUFxQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0RSxhQUFhLENBQUMsYUFBYSxHQUFHLG9DQUF3QixDQUFDO1FBQ3ZELFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRTtRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHVCQUFpQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5RCxTQUFTLENBQUMsV0FBVyxHQUFHLDJDQUErQixDQUFDO1FBQ3hELElBQUksQ0FBQztZQUNILFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQywyQ0FBK0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRTtRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHVCQUFpQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5RCxTQUFTLENBQUMsV0FBVyxHQUFHLDJDQUErQixDQUFDO1FBQ3hELE1BQU0sYUFBYSxHQUFHLElBQUksMkJBQXFCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLGFBQWEsQ0FBQyxhQUFhLEdBQUcsMkNBQStCLENBQUM7UUFDOUQsSUFBSSxDQUFDO1lBQ0gsU0FBUyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuXG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBXYWxsZXRJbml0QnVpbGRlciwgV2FsbGV0SW5pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IFdhbGxldEluaXRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5cbmltcG9ydCB7IEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZSwgSW52YWxpZEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZSwgV2FsbGV0SW5pdFJlcXVlc3REYXRhIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzJztcblxuZGVzY3JpYmUoJ1dhbGxldCBJbml0aWFsaXphdGlvbiBCdWlsZGVyJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGdldCB0aGUgd2FsbGV0IGluaXQgcmVxdWVzdCBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFdhbGxldEluaXRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB7IHB1YmxpY0tleSwgcGFydHlIaW50IH0gPSBXYWxsZXRJbml0UmVxdWVzdERhdGE7XG4gICAgdHhCdWlsZGVyLnB1YmxpY0tleShwdWJsaWNLZXkpO1xuICAgIHR4QnVpbGRlci5wYXJ0eUhpbnQocGFydHlIaW50KTtcbiAgICBjb25zdCByZXF1ZXN0T2JqOiBXYWxsZXRJbml0UmVxdWVzdCA9IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICBzaG91bGQuZXhpc3QocmVxdWVzdE9iaik7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoucGFydHlIaW50LCBwYXJ0eUhpbnQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmxvY2FsUGFydGljaXBhbnRPYnNlcnZhdGlvbk9ubHksIGZhbHNlKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb25maXJtYXRpb25UaHJlc2hvbGQsIDEpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLm9ic2VydmluZ1BhcnRpY2lwYW50VWlkcy5sZW5ndGgsIDApO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLm90aGVyQ29uZmlybWluZ1BhcnRpY2lwYW50VWlkcy5sZW5ndGgsIDApO1xuICAgIHNob3VsZC5leGlzdChyZXF1ZXN0T2JqLnB1YmxpY0tleSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoucHVibGljS2V5LmtleURhdGEsIHB1YmxpY0tleSk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmoucHVibGljS2V5LmZvcm1hdCk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmoucHVibGljS2V5LmZvcm1hdCk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmoucHVibGljS2V5LmtleVNwZWMpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHZhbGlkYXRlIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgV2FsbGV0SW5pdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci50cmFuc2FjdGlvbiA9IEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZTtcbiAgICB0eEJ1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihHZW5lcmF0ZVRvcG9sb2d5UmVzcG9uc2UudG9wb2xvZ3lUcmFuc2FjdGlvbnMpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgV2FsbGV0SW5pdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci50cmFuc2FjdGlvbiA9IEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZTtcbiAgICBjb25zdCB3YWxsZXRJbml0VHhuID0gbmV3IFdhbGxldEluaXRUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgd2FsbGV0SW5pdFR4bi5wcmVwYXJlZFBhcnR5ID0gR2VuZXJhdGVUb3BvbG9neVJlc3BvbnNlO1xuICAgIHR4QnVpbGRlci52YWxpZGF0ZVRyYW5zYWN0aW9uKHdhbGxldEluaXRUeG4pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGluIHZhbGlkYXRpbmcgcmF3IHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBXYWxsZXRJbml0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLnRyYW5zYWN0aW9uID0gSW52YWxpZEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgdHhCdWlsZGVyLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24oSW52YWxpZEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZS50b3BvbG9neVRyYW5zYWN0aW9ucyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXNzZXJ0LmVxdWFsKGUubWVzc2FnZSwgJ2ludmFsaWQgcmF3IHRyYW5zYWN0aW9uLCBoYXNoIG5vdCBtYXRjaGluZycpO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpbiB2YWxpZGF0aW5nIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgV2FsbGV0SW5pdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci50cmFuc2FjdGlvbiA9IEludmFsaWRHZW5lcmF0ZVRvcG9sb2d5UmVzcG9uc2U7XG4gICAgY29uc3Qgd2FsbGV0SW5pdFR4biA9IG5ldyBXYWxsZXRJbml0VHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHdhbGxldEluaXRUeG4ucHJlcGFyZWRQYXJ0eSA9IEludmFsaWRHZW5lcmF0ZVRvcG9sb2d5UmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHR4QnVpbGRlci52YWxpZGF0ZVRyYW5zYWN0aW9uKHdhbGxldEluaXRUeG4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGFzc2VydC5lcXVhbChlLm1lc3NhZ2UsICdpbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/unit/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("should");
|
|
4
|
+
const sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
5
|
+
const sdk_test_1 = require("@bitgo-beta/sdk-test");
|
|
6
|
+
const src_1 = require("../../src");
|
|
7
|
+
describe('Canton:', function () {
|
|
8
|
+
let bitgo;
|
|
9
|
+
before(function () {
|
|
10
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
|
|
11
|
+
bitgo.safeRegister('canton', src_1.Canton.createInstance);
|
|
12
|
+
bitgo.safeRegister('tcanton', src_1.Tcanton.createInstance);
|
|
13
|
+
bitgo.initializeTestVars();
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQkFBZ0I7QUFDaEIsaURBQStDO0FBQy9DLG1EQUErRDtBQUMvRCxtQ0FBNEM7QUFFNUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtJQUNsQixJQUFJLEtBQW1CLENBQUM7SUFFeEIsTUFBTSxDQUFDO1FBQ0wsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxZQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsYUFBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzdCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBDYW50b24sIFRjYW50b24gfSBmcm9tICcuLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnQ2FudG9uOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ2NhbnRvbicsIENhbnRvbi5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0Y2FudG9uJywgVGNhbnRvbi5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../test/unit/keyPair.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
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 sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
|
|
9
|
+
const sdk_test_1 = require("@bitgo-beta/sdk-test");
|
|
10
|
+
const assert_1 = __importDefault(require("assert"));
|
|
11
|
+
const should_1 = __importDefault(require("should"));
|
|
12
|
+
const src_1 = require("../../src");
|
|
13
|
+
const utils_1 = __importDefault(require("../../src/lib/utils"));
|
|
14
|
+
describe('Canton KeyPair', function () {
|
|
15
|
+
let rootKeychain;
|
|
16
|
+
let rootPublicKey;
|
|
17
|
+
let MPC;
|
|
18
|
+
let hdTree;
|
|
19
|
+
let bitgo;
|
|
20
|
+
let basecoin;
|
|
21
|
+
before(async () => {
|
|
22
|
+
hdTree = await sdk_lib_mpc_1.Ed25519Bip32HdTree.initialize();
|
|
23
|
+
MPC = await sdk_core_1.Eddsa.initialize(hdTree);
|
|
24
|
+
const A = MPC.keyShare(1, 2, 3);
|
|
25
|
+
const B = MPC.keyShare(2, 2, 3);
|
|
26
|
+
const C = MPC.keyShare(3, 2, 3);
|
|
27
|
+
const A_combine = MPC.keyCombine(A.uShare, [B.yShares[1], C.yShares[1]]);
|
|
28
|
+
const commonKeychain = A_combine.pShare.y + A_combine.pShare.chaincode;
|
|
29
|
+
rootKeychain = MPC.deriveUnhardened(commonKeychain, 'm/0');
|
|
30
|
+
rootPublicKey = Buffer.from(rootKeychain.slice(0, 64), 'hex').toString('hex');
|
|
31
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
|
|
32
|
+
bitgo.safeRegister('tcanton', src_1.Tcanton.createInstance);
|
|
33
|
+
basecoin = bitgo.coin('tcanton');
|
|
34
|
+
});
|
|
35
|
+
describe('should create a valid KeyPair', () => {
|
|
36
|
+
it('from an empty value', async () => {
|
|
37
|
+
const keyPair = new src_1.KeyPair();
|
|
38
|
+
should_1.default.exists(keyPair.getKeys().prv);
|
|
39
|
+
should_1.default.exists(keyPair.getKeys().pub);
|
|
40
|
+
const address = utils_1.default.getAddressFromPublicKey(keyPair.getKeys().pub);
|
|
41
|
+
should_1.default.exists(address);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('Keypair from derived Public Key', () => {
|
|
45
|
+
it('should create keypair with just derived public key', () => {
|
|
46
|
+
const keyPair = new src_1.KeyPair({ pub: rootPublicKey });
|
|
47
|
+
keyPair.getKeys().pub.should.equal(rootPublicKey);
|
|
48
|
+
});
|
|
49
|
+
it('should derived ed25519 public key should be valid', () => {
|
|
50
|
+
utils_1.default.isValidPublicKey(rootPublicKey).should.be.true();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('Keypair from random seed', () => {
|
|
54
|
+
it('should generate a keypair from random seed', function () {
|
|
55
|
+
const keyPair = basecoin.generateKeyPair();
|
|
56
|
+
keyPair.should.have.property('pub');
|
|
57
|
+
keyPair.should.have.property('prv');
|
|
58
|
+
if (keyPair.pub) {
|
|
59
|
+
basecoin.isValidPub(keyPair.pub).should.equal(true);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe('should fail to create a KeyPair', function () {
|
|
64
|
+
it('from an invalid public key', () => {
|
|
65
|
+
const source = {
|
|
66
|
+
pub: '01D63D',
|
|
67
|
+
};
|
|
68
|
+
assert_1.default.throws(() => new src_1.KeyPair(source));
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQStDO0FBQy9DLG1EQUE2QztBQUM3Qyx5REFBcUU7QUFDckUsbURBQStEO0FBQy9ELG9EQUE0QjtBQUM1QixvREFBNEI7QUFFNUIsbUNBQTZDO0FBQzdDLGdFQUF3QztBQUV4QyxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7SUFDekIsSUFBSSxZQUFvQixDQUFDO0lBQ3pCLElBQUksYUFBcUIsQ0FBQztJQUMxQixJQUFJLEdBQVUsQ0FBQztJQUNmLElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksS0FBbUIsQ0FBQztJQUN4QixJQUFJLFFBQWlCLENBQUM7SUFFdEIsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2hCLE1BQU0sR0FBRyxNQUFNLGdDQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLEdBQUcsR0FBRyxNQUFNLGdCQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekUsTUFB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LFFBQVE7YUFDZCxDQUFDO1lBRUYsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxhQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgRWRkc2EgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBFZDI1NTE5QmlwMzJIZFRyZWUsIEhEVHJlZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItbXBjJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuXG5pbXBvcnQgeyBLZXlQYWlyLCBUY2FudG9uIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcblxuZGVzY3JpYmUoJ0NhbnRvbiBLZXlQYWlyJywgZnVuY3Rpb24gKCkge1xuICBsZXQgcm9vdEtleWNoYWluOiBzdHJpbmc7XG4gIGxldCByb290UHVibGljS2V5OiBzdHJpbmc7XG4gIGxldCBNUEM6IEVkZHNhO1xuICBsZXQgaGRUcmVlOiBIRFRyZWU7XG4gIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuICBsZXQgYmFzZWNvaW46IFRjYW50b247XG5cbiAgYmVmb3JlKGFzeW5jICgpID0+IHtcbiAgICBoZFRyZWUgPSBhd2FpdCBFZDI1NTE5QmlwMzJIZFRyZWUuaW5pdGlhbGl6ZSgpO1xuICAgIE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoaGRUcmVlKTtcbiAgICBjb25zdCBBID0gTVBDLmtleVNoYXJlKDEsIDIsIDMpO1xuICAgIGNvbnN0IEIgPSBNUEMua2V5U2hhcmUoMiwgMiwgMyk7XG4gICAgY29uc3QgQyA9IE1QQy5rZXlTaGFyZSgzLCAyLCAzKTtcblxuICAgIGNvbnN0IEFfY29tYmluZSA9IE1QQy5rZXlDb21iaW5lKEEudVNoYXJlLCBbQi55U2hhcmVzWzFdLCBDLnlTaGFyZXNbMV1dKTtcblxuICAgIGNvbnN0IGNvbW1vbktleWNoYWluID0gQV9jb21iaW5lLnBTaGFyZS55ICsgQV9jb21iaW5lLnBTaGFyZS5jaGFpbmNvZGU7XG4gICAgcm9vdEtleWNoYWluID0gTVBDLmRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW4sICdtLzAnKTtcbiAgICByb290UHVibGljS2V5ID0gQnVmZmVyLmZyb20ocm9vdEtleWNoYWluLnNsaWNlKDAsIDY0KSwgJ2hleCcpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RjYW50b24nLCBUY2FudG9uLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oJ3RjYW50b24nKSBhcyBUY2FudG9uO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIGNyZWF0ZSBhIHZhbGlkIEtleVBhaXInLCAoKSA9PiB7XG4gICAgaXQoJ2Zyb20gYW4gZW1wdHkgdmFsdWUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoKTtcbiAgICAgIHNob3VsZC5leGlzdHMoa2V5UGFpci5nZXRLZXlzKCkucHJ2KTtcbiAgICAgIHNob3VsZC5leGlzdHMoa2V5UGFpci5nZXRLZXlzKCkucHViKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShrZXlQYWlyLmdldEtleXMoKS5wdWIpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhhZGRyZXNzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0tleXBhaXIgZnJvbSBkZXJpdmVkIFB1YmxpYyBLZXknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUga2V5cGFpciB3aXRoIGp1c3QgZGVyaXZlZCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHViOiByb290UHVibGljS2V5IH0pO1xuICAgICAga2V5UGFpci5nZXRLZXlzKCkucHViLnNob3VsZC5lcXVhbChyb290UHVibGljS2V5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVyaXZlZCBlZDI1NTE5IHB1YmxpYyBrZXkgc2hvdWxkIGJlIHZhbGlkJywgKCkgPT4ge1xuICAgICAgdXRpbHMuaXNWYWxpZFB1YmxpY0tleShyb290UHVibGljS2V5KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnS2V5cGFpciBmcm9tIHJhbmRvbSBzZWVkJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBrZXlwYWlyIGZyb20gcmFuZG9tIHNlZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gYmFzZWNvaW4uZ2VuZXJhdGVLZXlQYWlyKCk7XG4gICAgICBrZXlQYWlyLnNob3VsZC5oYXZlLnByb3BlcnR5KCdwdWInKTtcbiAgICAgIGtleVBhaXIuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3BydicpO1xuICAgICAgaWYgKGtleVBhaXIucHViKSB7XG4gICAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoa2V5UGFpci5wdWIpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBmYWlsIHRvIGNyZWF0ZSBhIEtleVBhaXInLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2Zyb20gYW4gaW52YWxpZCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0ge1xuICAgICAgICBwdWI6ICcwMUQ2M0QnLFxuICAgICAgfTtcblxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgS2V5UGFpcihzb3VyY2UpKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
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 assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const should_1 = __importDefault(require("should"));
|
|
8
|
+
const utils_1 = __importDefault(require("../../src/lib/utils"));
|
|
9
|
+
const resources_1 = require("../resources");
|
|
10
|
+
describe('Canton Util', function () {
|
|
11
|
+
describe('Raw transaction parser', function () {
|
|
12
|
+
it('should parse the prepared transaction', () => {
|
|
13
|
+
const parsedData = utils_1.default.parseRawCantonTransactionData(resources_1.PreparedTransactionRawData);
|
|
14
|
+
should_1.default.exist(parsedData);
|
|
15
|
+
assert_1.default.equal(parsedData.sender, 'abc-1::12200c1ee226fbdf9fba3461c2c0c73331b69d3c6fd8cfce28cdf864141141cc656d');
|
|
16
|
+
assert_1.default.equal(parsedData.receiver, 'abc-2::12207e96ada18a845adf4dc01410265633d5266dca9bb280c98e35c3692db87d3e35');
|
|
17
|
+
assert_1.default.equal(parsedData.amount, '20.0000000000');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe('Wallet init transaction', function () {
|
|
21
|
+
it('should locally generate and validate the hash for topology transaction', function () {
|
|
22
|
+
const computedHash = utils_1.default.computeHashFromCreatePartyResponse(resources_1.GenerateTopologyResponse.topologyTransactions);
|
|
23
|
+
should_1.default.exist(computedHash);
|
|
24
|
+
assert_1.default.strictEqual(computedHash, resources_1.GenerateTopologyResponse.multiHash);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('Prepare submission response validation', function () {
|
|
28
|
+
it('should locally generate and validate the hash for prepare submission response', async function () {
|
|
29
|
+
const computedHash = await utils_1.default.computeHashFromPrepareSubmissionResponse(resources_1.PrepareSubmissionResponse.preparedTransaction);
|
|
30
|
+
should_1.default.exist(computedHash);
|
|
31
|
+
assert_1.default.strictEqual(computedHash, resources_1.PrepareSubmissionResponse.preparedTransactionHash);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('Check if the address is valid', function () {
|
|
35
|
+
it('should return true when the address is valid', function () {
|
|
36
|
+
const isValid = utils_1.default.isValidAddress(resources_1.CANTON_ADDRESSES.VALID_ADDRESS);
|
|
37
|
+
should_1.default.exist(isValid);
|
|
38
|
+
assert_1.default.strictEqual(isValid, true);
|
|
39
|
+
});
|
|
40
|
+
it('should return false when party hint is invalid', function () {
|
|
41
|
+
const isValid = utils_1.default.isValidAddress(resources_1.CANTON_ADDRESSES.INVALID_PARTY_HINT);
|
|
42
|
+
should_1.default.exist(isValid);
|
|
43
|
+
assert_1.default.strictEqual(isValid, false);
|
|
44
|
+
});
|
|
45
|
+
it('should return false when fingerprint is invalid', function () {
|
|
46
|
+
const isValid = utils_1.default.isValidAddress(resources_1.CANTON_ADDRESSES.INVALID_FINGERPRINT);
|
|
47
|
+
should_1.default.exist(isValid);
|
|
48
|
+
assert_1.default.strictEqual(isValid, false);
|
|
49
|
+
});
|
|
50
|
+
it('should return false when party hint is missing', function () {
|
|
51
|
+
const isValid = utils_1.default.isValidAddress(resources_1.CANTON_ADDRESSES.MISSING_PARTY_HINT);
|
|
52
|
+
should_1.default.exist(isValid);
|
|
53
|
+
assert_1.default.strictEqual(isValid, false);
|
|
54
|
+
});
|
|
55
|
+
it('should return false when fingerprint is missing', function () {
|
|
56
|
+
const isValid = utils_1.default.isValidAddress(resources_1.CANTON_ADDRESSES.MISSING_FINGERPRINT);
|
|
57
|
+
should_1.default.exist(isValid);
|
|
58
|
+
assert_1.default.strictEqual(isValid, false);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLGdFQUF3QztBQUN4Qyw0Q0FLc0I7QUFFdEIsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixRQUFRLENBQUMsd0JBQXdCLEVBQUU7UUFDakMsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtZQUMvQyxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsNkJBQTZCLENBQUMsc0NBQTBCLENBQUMsQ0FBQztZQUNuRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLDZFQUE2RSxDQUFDLENBQUM7WUFDL0csZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSw2RUFBNkUsQ0FBQyxDQUFDO1lBQ2pILGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx5QkFBeUIsRUFBRTtRQUNsQyxFQUFFLENBQUMsd0VBQXdFLEVBQUU7WUFDM0UsTUFBTSxZQUFZLEdBQUcsZUFBSyxDQUFDLGtDQUFrQyxDQUFDLG9DQUF3QixDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDN0csZ0JBQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0IsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLG9DQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsd0NBQXdDLEVBQUU7UUFDakQsRUFBRSxDQUFDLCtFQUErRSxFQUFFLEtBQUs7WUFDdkYsTUFBTSxZQUFZLEdBQUcsTUFBTSxlQUFLLENBQUMsd0NBQXdDLENBQ3ZFLHFDQUF5QixDQUFDLG1CQUFtQixDQUM5QyxDQUFDO1lBQ0YsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0IsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLHFDQUF5QixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywrQkFBK0IsRUFBRTtRQUN4QyxFQUFFLENBQUMsOENBQThDLEVBQUU7WUFDakQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLGNBQWMsQ0FBQyw0QkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUU7WUFDbkQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLGNBQWMsQ0FBQyw0QkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzFFLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLGdCQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRTtZQUNwRCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsY0FBYyxDQUFDLDRCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDM0UsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFO1lBQ25ELE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxjQUFjLENBQUMsNEJBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMxRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUU7WUFDcEQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLGNBQWMsQ0FBQyw0QkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzNFLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLGdCQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5pbXBvcnQge1xuICBDQU5UT05fQUREUkVTU0VTLFxuICBHZW5lcmF0ZVRvcG9sb2d5UmVzcG9uc2UsXG4gIFByZXBhcmVkVHJhbnNhY3Rpb25SYXdEYXRhLFxuICBQcmVwYXJlU3VibWlzc2lvblJlc3BvbnNlLFxufSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuXG5kZXNjcmliZSgnQ2FudG9uIFV0aWwnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdSYXcgdHJhbnNhY3Rpb24gcGFyc2VyJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcGFyc2UgdGhlIHByZXBhcmVkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHV0aWxzLnBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKFByZXBhcmVkVHJhbnNhY3Rpb25SYXdEYXRhKTtcbiAgICAgIHNob3VsZC5leGlzdChwYXJzZWREYXRhKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLnNlbmRlciwgJ2FiYy0xOjoxMjIwMGMxZWUyMjZmYmRmOWZiYTM0NjFjMmMwYzczMzMxYjY5ZDNjNmZkOGNmY2UyOGNkZjg2NDE0MTE0MWNjNjU2ZCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEucmVjZWl2ZXIsICdhYmMtMjo6MTIyMDdlOTZhZGExOGE4NDVhZGY0ZGMwMTQxMDI2NTYzM2Q1MjY2ZGNhOWJiMjgwYzk4ZTM1YzM2OTJkYjg3ZDNlMzUnKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLmFtb3VudCwgJzIwLjAwMDAwMDAwMDAnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1dhbGxldCBpbml0IHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgbG9jYWxseSBnZW5lcmF0ZSBhbmQgdmFsaWRhdGUgdGhlIGhhc2ggZm9yIHRvcG9sb2d5IHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY29tcHV0ZWRIYXNoID0gdXRpbHMuY29tcHV0ZUhhc2hGcm9tQ3JlYXRlUGFydHlSZXNwb25zZShHZW5lcmF0ZVRvcG9sb2d5UmVzcG9uc2UudG9wb2xvZ3lUcmFuc2FjdGlvbnMpO1xuICAgICAgc2hvdWxkLmV4aXN0KGNvbXB1dGVkSGFzaCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29tcHV0ZWRIYXNoLCBHZW5lcmF0ZVRvcG9sb2d5UmVzcG9uc2UubXVsdGlIYXNoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1ByZXBhcmUgc3VibWlzc2lvbiByZXNwb25zZSB2YWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgbG9jYWxseSBnZW5lcmF0ZSBhbmQgdmFsaWRhdGUgdGhlIGhhc2ggZm9yIHByZXBhcmUgc3VibWlzc2lvbiByZXNwb25zZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNvbXB1dGVkSGFzaCA9IGF3YWl0IHV0aWxzLmNvbXB1dGVIYXNoRnJvbVByZXBhcmVTdWJtaXNzaW9uUmVzcG9uc2UoXG4gICAgICAgIFByZXBhcmVTdWJtaXNzaW9uUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvblxuICAgICAgKTtcbiAgICAgIHNob3VsZC5leGlzdChjb21wdXRlZEhhc2gpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbXB1dGVkSGFzaCwgUHJlcGFyZVN1Ym1pc3Npb25SZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uSGFzaCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdDaGVjayBpZiB0aGUgYWRkcmVzcyBpcyB2YWxpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGFkZHJlc3MgaXMgdmFsaWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXRpbHMuaXNWYWxpZEFkZHJlc3MoQ0FOVE9OX0FERFJFU1NFUy5WQUxJRF9BRERSRVNTKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gcGFydHkgaGludCBpcyBpbnZhbGlkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IHV0aWxzLmlzVmFsaWRBZGRyZXNzKENBTlRPTl9BRERSRVNTRVMuSU5WQUxJRF9QQVJUWV9ISU5UKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGZpbmdlcnByaW50IGlzIGludmFsaWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXRpbHMuaXNWYWxpZEFkZHJlc3MoQ0FOVE9OX0FERFJFU1NFUy5JTlZBTElEX0ZJTkdFUlBSSU5UKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHBhcnR5IGhpbnQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB1dGlscy5pc1ZhbGlkQWRkcmVzcyhDQU5UT05fQUREUkVTU0VTLk1JU1NJTkdfUEFSVFlfSElOVCk7XG4gICAgICBzaG91bGQuZXhpc3QoaXNWYWxpZCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZCwgZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBmaW5nZXJwcmludCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IHV0aWxzLmlzVmFsaWRBZGRyZXNzKENBTlRPTl9BRERSRVNTRVMuTUlTU0lOR19GSU5HRVJQUklOVCk7XG4gICAgICBzaG91bGQuZXhpc3QoaXNWYWxpZCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZCwgZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|