@bitgo-beta/sdk-coin-canton 1.0.1-beta.72 → 1.0.1-beta.721
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/src/canton.d.ts +22 -1
- package/dist/src/canton.d.ts.map +1 -1
- package/dist/src/canton.js +269 -10
- package/dist/src/cantonToken.d.ts +19 -0
- package/dist/src/cantonToken.d.ts.map +1 -0
- package/dist/src/cantonToken.js +52 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/allocationAllocateBuilder.d.ts +126 -0
- package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationAllocateBuilder.js +250 -0
- package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts +67 -0
- package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationAllocateWithdrawnBuilder.js +130 -0
- package/dist/src/lib/allocationRejectBuilder.d.ts +51 -0
- package/dist/src/lib/allocationRejectBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationRejectBuilder.js +107 -0
- package/dist/src/lib/allocationRequestBuilder.d.ts +116 -0
- package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationRequestBuilder.js +248 -0
- package/dist/src/lib/cantonCommandBuilder.d.ts +72 -0
- package/dist/src/lib/cantonCommandBuilder.d.ts.map +1 -0
- package/dist/src/lib/cantonCommandBuilder.js +173 -0
- package/dist/src/lib/clearSigning.d.ts +58 -0
- package/dist/src/lib/clearSigning.d.ts.map +1 -0
- package/dist/src/lib/clearSigning.js +66 -0
- package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts +56 -0
- package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts.map +1 -0
- package/dist/src/lib/cosignDelegationAcceptBuilder.js +112 -0
- package/dist/src/lib/cosignDelegationProposalBuilder.d.ts +60 -0
- package/dist/src/lib/cosignDelegationProposalBuilder.d.ts.map +1 -0
- package/dist/src/lib/cosignDelegationProposalBuilder.js +111 -0
- package/dist/src/lib/endInvestorOnboardingOfferBuilder.d.ts +58 -0
- package/dist/src/lib/endInvestorOnboardingOfferBuilder.d.ts.map +1 -0
- package/dist/src/lib/endInvestorOnboardingOfferBuilder.js +112 -0
- package/dist/src/lib/iface.d.ts +130 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +3 -1
- package/dist/src/lib/index.d.ts +13 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +29 -2
- package/dist/src/lib/messages/cantonBaseMessage.d.ts +16 -0
- package/dist/src/lib/messages/cantonBaseMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonBaseMessage.js +28 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts +14 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.js +23 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts +17 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.js +25 -0
- package/dist/src/lib/messages/cantonSignTopology/index.d.ts +3 -0
- package/dist/src/lib/messages/cantonSignTopology/index.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/index.js +19 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts +13 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.js +22 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts +14 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.js +22 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.d.ts +3 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.js +19 -0
- package/dist/src/lib/messages/index.d.ts +5 -0
- package/dist/src/lib/messages/index.d.ts.map +1 -0
- package/dist/src/lib/messages/index.js +21 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +8 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -1
- package/dist/src/lib/oneStepPreApprovalBuilder.js +15 -1
- package/dist/src/lib/resourcesInterface.d.ts +1 -1
- package/dist/src/lib/resourcesInterface.d.ts.map +1 -1
- package/dist/src/lib/resourcesInterface.js +1 -1
- package/dist/src/lib/transaction/transaction.d.ts +17 -1
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +291 -16
- package/dist/src/lib/transactionBuilderFactory.d.ts +22 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +78 -1
- package/dist/src/lib/transferAcceptanceBuilder.d.ts +4 -4
- package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferAcceptanceBuilder.js +6 -6
- package/dist/src/lib/transferBuilder.d.ts +84 -2
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +166 -2
- package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts +67 -0
- package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferOfferWithdrawnBuilder.js +130 -0
- package/dist/src/lib/transferRejectionBuilder.d.ts +59 -0
- package/dist/src/lib/transferRejectionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferRejectionBuilder.js +116 -0
- package/dist/src/lib/utils.d.ts +45 -3
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +742 -66
- package/dist/src/lib/walletInitBuilder.d.ts +2 -1
- package/dist/src/lib/walletInitBuilder.d.ts.map +1 -1
- package/dist/src/lib/walletInitBuilder.js +4 -1
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +2 -1
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -1
- package/dist/src/lib/walletInitialization/walletInitTransaction.js +14 -1
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/test/helper.d.ts +3 -0
- package/dist/test/helper.d.ts.map +1 -0
- package/dist/test/helper.js +9 -0
- package/dist/test/integration/canton.integration.d.ts +2 -0
- package/dist/test/integration/canton.integration.d.ts.map +1 -0
- package/dist/test/integration/canton.integration.js +157 -0
- package/dist/test/integration/canton.token.integration.d.ts +2 -0
- package/dist/test/integration/canton.token.integration.d.ts.map +1 -0
- package/dist/test/integration/canton.token.integration.js +51 -0
- package/dist/test/resources.d.ts +226 -2
- package/dist/test/resources.d.ts.map +1 -1
- package/dist/test/resources.js +231 -7
- package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +360 -0
- package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.js +133 -0
- package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.js +121 -0
- package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +407 -0
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts +2 -0
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.js +340 -0
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts +2 -0
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +104 -0
- package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts +2 -0
- package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.js +74 -0
- package/dist/test/unit/builder/endInvestorOnboardingOffer/endInvestorOnboardingOfferBuilder.d.ts +2 -0
- package/dist/test/unit/builder/endInvestorOnboardingOffer/endInvestorOnboardingOfferBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/endInvestorOnboardingOffer/endInvestorOnboardingOfferBuilder.js +116 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +20 -1
- package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transfer/transferBuilder.js +84 -0
- package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +65 -15
- package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.js +64 -0
- package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferReject/transferRejectBuilder.js +96 -0
- package/dist/test/unit/canton.d.ts +2 -0
- package/dist/test/unit/canton.d.ts.map +1 -0
- package/dist/test/unit/canton.js +705 -0
- package/dist/test/unit/index.d.ts +5 -0
- package/dist/test/unit/index.d.ts.map +1 -1
- package/dist/test/unit/index.js +6 -1
- package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts +2 -0
- package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts.map +1 -0
- package/dist/test/unit/messages/cantonSignTopologyMessage.js +46 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts +2 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts.map +1 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.js +48 -0
- package/dist/test/unit/messages/clearSigning.d.ts +2 -0
- package/dist/test/unit/messages/clearSigning.d.ts.map +1 -0
- package/dist/test/unit/messages/clearSigning.js +72 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
- package/dist/test/unit/utils.js +366 -9
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,340 @@
|
|
|
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 sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
10
|
+
const cantonCommandBuilder_1 = require("../../../../src/lib/cantonCommandBuilder");
|
|
11
|
+
const transactionBuilderFactory_1 = require("../../../../src/lib/transactionBuilderFactory");
|
|
12
|
+
const transaction_1 = require("../../../../src/lib/transaction/transaction");
|
|
13
|
+
const resources_1 = require("../../../resources");
|
|
14
|
+
const PARTY_A = 'RegRegistrar::1220508e54fb709dcb1a9b4096408ad415d2217d8881ad9034a9850752933ba88ad5';
|
|
15
|
+
const PARTY_B = 'RegProvider::1220508e54fb709dcb1a9b4096408ad415d2217d8881ad9034a9850752933ba88ad5';
|
|
16
|
+
const TEMPLATE_ID = '7a75ef6e69f69395a4e60919e228528bb8f3881150ccfde3f31bcc73864b18ab:Utility.Registry.App.V0.Service.AllocationFactory:AllocationFactory';
|
|
17
|
+
const CONTRACT_ID = '00f3afdce846a40c6f3f618c4b584b022a0197010057ecd59458200183ab27de0aca1212204aef7ede37a5f41b674a1d95446d42a404461c5558c4e6d1860b65560120ef18';
|
|
18
|
+
const sampleExerciseCommand = {
|
|
19
|
+
ExerciseCommand: {
|
|
20
|
+
templateId: TEMPLATE_ID,
|
|
21
|
+
contractId: CONTRACT_ID,
|
|
22
|
+
choice: 'AllocationFactory_OfferMint',
|
|
23
|
+
choiceArgument: {
|
|
24
|
+
expectedAdmin: PARTY_A,
|
|
25
|
+
mint: { instrumentId: { admin: PARTY_A, id: 'TESTTOKEN' }, amount: '100', holder: PARTY_A, reference: 'test' },
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
const sampleCreateCommand = {
|
|
30
|
+
CreateCommand: {
|
|
31
|
+
templateId: TEMPLATE_ID,
|
|
32
|
+
createArguments: { provider: PARTY_B, registrar: PARTY_A, operator: PARTY_B },
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
describe('CantonCommandBuilder', () => {
|
|
36
|
+
describe('commandId()', () => {
|
|
37
|
+
it('should set the command ID and transaction ID', function () {
|
|
38
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
39
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
40
|
+
builder.initBuilder(tx);
|
|
41
|
+
builder.commandId('test-cmd-id-123');
|
|
42
|
+
assert_1.default.equal(builder['_commandId'], 'test-cmd-id-123');
|
|
43
|
+
assert_1.default.equal(builder['transaction'].id, 'test-cmd-id-123');
|
|
44
|
+
});
|
|
45
|
+
it('should throw on empty string', function () {
|
|
46
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
47
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
48
|
+
builder.initBuilder(tx);
|
|
49
|
+
assert_1.default.throws(() => builder.commandId(''), /commandId must be a non-empty string/);
|
|
50
|
+
});
|
|
51
|
+
it('should throw on whitespace-only string', function () {
|
|
52
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
53
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
54
|
+
builder.initBuilder(tx);
|
|
55
|
+
assert_1.default.throws(() => builder.commandId(' '), /commandId must be a non-empty string/);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe('actAs()', () => {
|
|
59
|
+
it('should set acting parties and update transaction', function () {
|
|
60
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
61
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
62
|
+
builder.initBuilder(tx);
|
|
63
|
+
builder.actAs([PARTY_A]);
|
|
64
|
+
assert_1.default.deepEqual(builder['_actAs'], [PARTY_A]);
|
|
65
|
+
assert_1.default.deepEqual(builder['transaction'].cantonCommandActAsParties, [PARTY_A]);
|
|
66
|
+
});
|
|
67
|
+
it('should throw on empty array', function () {
|
|
68
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
69
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
70
|
+
builder.initBuilder(tx);
|
|
71
|
+
assert_1.default.throws(() => builder.actAs([]), /actAs must be a non-empty array/);
|
|
72
|
+
});
|
|
73
|
+
it('should throw on array with empty strings', function () {
|
|
74
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
75
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
76
|
+
builder.initBuilder(tx);
|
|
77
|
+
assert_1.default.throws(() => builder.actAs(['']), /actAs parties must be non-empty strings/);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('readAs()', () => {
|
|
81
|
+
it('should set read-only parties', function () {
|
|
82
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
83
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
84
|
+
builder.initBuilder(tx);
|
|
85
|
+
builder.readAs([PARTY_B]);
|
|
86
|
+
assert_1.default.deepEqual(builder['_readAs'], [PARTY_B]);
|
|
87
|
+
});
|
|
88
|
+
it('should default to empty array when passed undefined', function () {
|
|
89
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
90
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
91
|
+
builder.initBuilder(tx);
|
|
92
|
+
builder.readAs(undefined);
|
|
93
|
+
assert_1.default.deepEqual(builder['_readAs'], []);
|
|
94
|
+
});
|
|
95
|
+
it('should default to empty array when passed null', function () {
|
|
96
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
97
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
98
|
+
builder.initBuilder(tx);
|
|
99
|
+
builder.readAs(null);
|
|
100
|
+
assert_1.default.deepEqual(builder['_readAs'], []);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe('command()', () => {
|
|
104
|
+
it('should set an ExerciseCommand', function () {
|
|
105
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
106
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
107
|
+
builder.initBuilder(tx);
|
|
108
|
+
builder.command(sampleExerciseCommand);
|
|
109
|
+
assert_1.default.deepEqual(builder['_command'], sampleExerciseCommand);
|
|
110
|
+
});
|
|
111
|
+
it('should set a CreateCommand', function () {
|
|
112
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
113
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
114
|
+
builder.initBuilder(tx);
|
|
115
|
+
builder.command(sampleCreateCommand);
|
|
116
|
+
assert_1.default.deepEqual(builder['_command'], sampleCreateCommand);
|
|
117
|
+
});
|
|
118
|
+
it('should throw on non-object input', function () {
|
|
119
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
120
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
121
|
+
builder.initBuilder(tx);
|
|
122
|
+
assert_1.default.throws(() => builder.command(null), /command must be a plain object/);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
describe('token()', () => {
|
|
126
|
+
it('should set the token', function () {
|
|
127
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
128
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
129
|
+
builder.initBuilder(tx);
|
|
130
|
+
builder.commandId('cmd-tok-1').actAs([PARTY_A]).command(sampleExerciseCommand).token('tcanton:testtoken');
|
|
131
|
+
assert_1.default.equal(builder.toRequestObject().token, 'tcanton:testtoken');
|
|
132
|
+
});
|
|
133
|
+
it('should trim whitespace', function () {
|
|
134
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
135
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
136
|
+
builder.initBuilder(tx);
|
|
137
|
+
builder.commandId('cmd-tok-2').actAs([PARTY_A]).command(sampleExerciseCommand).token(' tcanton:testtoken ');
|
|
138
|
+
assert_1.default.equal(builder.toRequestObject().token, 'tcanton:testtoken');
|
|
139
|
+
});
|
|
140
|
+
it('should throw on empty string', function () {
|
|
141
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
142
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
143
|
+
builder.initBuilder(tx);
|
|
144
|
+
assert_1.default.throws(() => builder.token(''), /token must be a non-empty string/);
|
|
145
|
+
});
|
|
146
|
+
it('should throw on whitespace-only string', function () {
|
|
147
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
148
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
149
|
+
builder.initBuilder(tx);
|
|
150
|
+
assert_1.default.throws(() => builder.token(' '), /token must be a non-empty string/);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe('resolveContracts()', () => {
|
|
154
|
+
it('should set the spec array', function () {
|
|
155
|
+
const spec = [{ templateId: TEMPLATE_ID, actAs: [PARTY_A], injectAs: 'command.ExerciseCommand.contractId' }];
|
|
156
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
157
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
158
|
+
builder.initBuilder(tx);
|
|
159
|
+
builder.resolveContracts(spec);
|
|
160
|
+
assert_1.default.deepEqual(builder['_resolveContracts'], spec);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
describe('toRequestObject()', () => {
|
|
164
|
+
it('should return correct object with all required fields', function () {
|
|
165
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
166
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
167
|
+
builder.initBuilder(tx);
|
|
168
|
+
builder.commandId('cmd-001').actAs([PARTY_A]).readAs([PARTY_B]).command(sampleExerciseCommand);
|
|
169
|
+
const req = builder.toRequestObject();
|
|
170
|
+
should_1.default.exist(req);
|
|
171
|
+
assert_1.default.equal(req.commandId, 'cmd-001');
|
|
172
|
+
assert_1.default.deepEqual(req.actAs, [PARTY_A]);
|
|
173
|
+
assert_1.default.deepEqual(req.readAs, [PARTY_B]);
|
|
174
|
+
assert_1.default.deepEqual(req.command, sampleExerciseCommand);
|
|
175
|
+
});
|
|
176
|
+
it('should throw when commandId is missing', function () {
|
|
177
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
178
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
179
|
+
builder.initBuilder(tx);
|
|
180
|
+
builder.actAs([PARTY_A]).command(sampleExerciseCommand);
|
|
181
|
+
assert_1.default.throws(() => builder.toRequestObject(), /commandId is missing/);
|
|
182
|
+
});
|
|
183
|
+
it('should throw when actAs is missing', function () {
|
|
184
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
185
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
186
|
+
builder.initBuilder(tx);
|
|
187
|
+
builder.commandId('cmd-001').command(sampleExerciseCommand);
|
|
188
|
+
assert_1.default.throws(() => builder.toRequestObject(), /actAs is missing/);
|
|
189
|
+
});
|
|
190
|
+
it('should throw when command is missing', function () {
|
|
191
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
192
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
193
|
+
builder.initBuilder(tx);
|
|
194
|
+
builder.commandId('cmd-001').actAs([PARTY_A]);
|
|
195
|
+
assert_1.default.throws(() => builder.toRequestObject(), /command is missing/);
|
|
196
|
+
});
|
|
197
|
+
it('should throw when command contains invalid key', function () {
|
|
198
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
199
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
200
|
+
builder.initBuilder(tx);
|
|
201
|
+
builder
|
|
202
|
+
.commandId('cmd-001')
|
|
203
|
+
.actAs([PARTY_A])
|
|
204
|
+
.command({ UnknownCommand: {} });
|
|
205
|
+
assert_1.default.throws(() => builder.toRequestObject(), /command must contain exactly one of/);
|
|
206
|
+
});
|
|
207
|
+
it('should include empty resolveContracts by default', function () {
|
|
208
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
209
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
210
|
+
builder.initBuilder(tx);
|
|
211
|
+
builder.commandId('cmd-002').actAs([PARTY_A]).command(sampleCreateCommand);
|
|
212
|
+
const req = builder.toRequestObject();
|
|
213
|
+
assert_1.default.deepEqual(req.resolveContracts, []);
|
|
214
|
+
});
|
|
215
|
+
it('should include token when set', function () {
|
|
216
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
217
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
218
|
+
builder.initBuilder(tx);
|
|
219
|
+
builder.commandId('cmd-003').actAs([PARTY_A]).command(sampleExerciseCommand).token('tcanton:testtoken');
|
|
220
|
+
const req = builder.toRequestObject();
|
|
221
|
+
assert_1.default.equal(req.token, 'tcanton:testtoken');
|
|
222
|
+
});
|
|
223
|
+
it('should not include token key when not set', function () {
|
|
224
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
225
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
226
|
+
builder.initBuilder(tx);
|
|
227
|
+
builder.commandId('cmd-004').actAs([PARTY_A]).command(sampleExerciseCommand);
|
|
228
|
+
const req = builder.toRequestObject();
|
|
229
|
+
assert_1.default.ok(!('token' in req));
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
describe('initBuilder()', () => {
|
|
233
|
+
it('should correctly initialize from existing transaction with cantonCommandActAsParties', function () {
|
|
234
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
235
|
+
tx.transactionType = sdk_core_1.TransactionType.CantonCommand;
|
|
236
|
+
tx.cantonCommandActAs = [PARTY_A];
|
|
237
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
238
|
+
builder.initBuilder(tx);
|
|
239
|
+
assert_1.default.deepEqual(builder['_actAs'], [PARTY_A]);
|
|
240
|
+
});
|
|
241
|
+
it('should leave _actAs as empty array when transaction has no parties', function () {
|
|
242
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
243
|
+
tx.transactionType = sdk_core_1.TransactionType.CantonCommand;
|
|
244
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
245
|
+
builder.initBuilder(tx);
|
|
246
|
+
assert_1.default.deepEqual(builder['_actAs'], []);
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
describe('transactionType', () => {
|
|
250
|
+
it('should return CantonCommand type', function () {
|
|
251
|
+
const builder = new cantonCommandBuilder_1.CantonCommandBuilder(statics_1.coins.get('tcanton'));
|
|
252
|
+
assert_1.default.equal(builder.transactionType, sdk_core_1.TransactionType.CantonCommand);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
describe('TransactionBuilderFactory - CantonCommand', () => {
|
|
257
|
+
it('should return a CantonCommandBuilder from getCantonCommandBuilder()', function () {
|
|
258
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(statics_1.coins.get('tcanton'));
|
|
259
|
+
const builder = factory.getCantonCommandBuilder();
|
|
260
|
+
should_1.default.exist(builder);
|
|
261
|
+
assert_1.default.ok(builder instanceof cantonCommandBuilder_1.CantonCommandBuilder);
|
|
262
|
+
assert_1.default.equal(builder.transactionType, sdk_core_1.TransactionType.CantonCommand);
|
|
263
|
+
});
|
|
264
|
+
it('should return a CantonCommandBuilder from from() with CantonCommand raw transaction', function () {
|
|
265
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(statics_1.coins.get('tcanton'));
|
|
266
|
+
const tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
267
|
+
tx.transactionType = sdk_core_1.TransactionType.CantonCommand;
|
|
268
|
+
tx.id = 'test-cmd-001';
|
|
269
|
+
tx.prepareCommand = resources_1.CantonExerciseCommandPrepareResponse;
|
|
270
|
+
const rawTx = tx.toBroadcastFormat();
|
|
271
|
+
const builder = factory.from(rawTx);
|
|
272
|
+
should_1.default.exist(builder);
|
|
273
|
+
assert_1.default.ok(builder instanceof cantonCommandBuilder_1.CantonCommandBuilder);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
describe('Transaction toJson and explainTransaction - CantonCommand', () => {
|
|
277
|
+
let tx;
|
|
278
|
+
beforeEach(() => {
|
|
279
|
+
tx = new transaction_1.Transaction(statics_1.coins.get('tcanton'));
|
|
280
|
+
tx.transactionType = sdk_core_1.TransactionType.CantonCommand;
|
|
281
|
+
tx.id = 'test-cmd-001';
|
|
282
|
+
tx.prepareCommand = resources_1.CantonExerciseCommandPrepareResponse;
|
|
283
|
+
tx.cantonCommandActAs = [PARTY_A];
|
|
284
|
+
});
|
|
285
|
+
describe('toJson()', () => {
|
|
286
|
+
it('should return cantonCommand summary for CantonCommand transactions', function () {
|
|
287
|
+
const json = tx.toJson();
|
|
288
|
+
should_1.default.exist(json);
|
|
289
|
+
should_1.default.exist(json.cantonCommand);
|
|
290
|
+
});
|
|
291
|
+
it('should include kind, templateId, and actAs in summary', function () {
|
|
292
|
+
const json = tx.toJson();
|
|
293
|
+
const cc = json.cantonCommand;
|
|
294
|
+
assert_1.default.ok(['ExerciseCommand', 'CreateCommand'].includes(cc.kind));
|
|
295
|
+
assert_1.default.ok(cc.templateId.includes(':'));
|
|
296
|
+
assert_1.default.deepEqual(cc.actAs, [PARTY_A]);
|
|
297
|
+
});
|
|
298
|
+
it('should include choice for ExerciseCommand', function () {
|
|
299
|
+
const json = tx.toJson();
|
|
300
|
+
const cc = json.cantonCommand;
|
|
301
|
+
if (cc.kind === 'ExerciseCommand') {
|
|
302
|
+
should_1.default.exist(cc.choice);
|
|
303
|
+
assert_1.default.equal(cc.choice, 'AllocationFactory_OfferMint');
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
it('should include contractId for ExerciseCommand when present', function () {
|
|
307
|
+
const json = tx.toJson();
|
|
308
|
+
const cc = json.cantonCommand;
|
|
309
|
+
if (cc.kind === 'ExerciseCommand') {
|
|
310
|
+
should_1.default.exist(cc.contractId);
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
describe('explainTransaction()', () => {
|
|
315
|
+
it('should return explanation with cantonCommand field for CantonCommand type', function () {
|
|
316
|
+
const explanation = tx.explainTransaction();
|
|
317
|
+
should_1.default.exist(explanation);
|
|
318
|
+
should_1.default.exist(explanation.cantonCommand);
|
|
319
|
+
});
|
|
320
|
+
it('should have correct structure (id, displayOrder, outputs, inputs, fee, type)', function () {
|
|
321
|
+
const explanation = tx.explainTransaction();
|
|
322
|
+
assert_1.default.ok('id' in explanation);
|
|
323
|
+
assert_1.default.ok('displayOrder' in explanation);
|
|
324
|
+
assert_1.default.ok('outputs' in explanation);
|
|
325
|
+
assert_1.default.ok('inputs' in explanation);
|
|
326
|
+
assert_1.default.ok('fee' in explanation);
|
|
327
|
+
assert_1.default.ok('type' in explanation);
|
|
328
|
+
});
|
|
329
|
+
it('should have correct cantonCommand summary fields', function () {
|
|
330
|
+
const explanation = tx.explainTransaction();
|
|
331
|
+
const cc = explanation.cantonCommand;
|
|
332
|
+
assert_1.default.equal(cc.kind, 'ExerciseCommand');
|
|
333
|
+
assert_1.default.equal(cc.templateId, '7a75ef6e69f69395a4e60919e228528bb8f3881150ccfde3f31bcc73864b18ab:Utility.Registry.App.V0.Service.AllocationFactory:AllocationFactory');
|
|
334
|
+
assert_1.default.equal(cc.choice, 'AllocationFactory_OfferMint');
|
|
335
|
+
assert_1.default.ok(cc.contractId && cc.contractId.length > 0);
|
|
336
|
+
assert_1.default.deepEqual(cc.actAs, [PARTY_A]);
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
});
|
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uQ29tbWFuZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYnVpbGRlci9jYW50b25Db21tYW5kL2NhbnRvbkNvbW1hbmRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixtREFBbUc7QUFDbkcsaURBQTRDO0FBRTVDLG1GQUFnRjtBQUNoRiw2RkFBMEY7QUFDMUYsNkVBQTBFO0FBRTFFLGtEQUEwRTtBQUUxRSxNQUFNLE9BQU8sR0FBRyxvRkFBb0YsQ0FBQztBQUNyRyxNQUFNLE9BQU8sR0FBRyxtRkFBbUYsQ0FBQztBQUNwRyxNQUFNLFdBQVcsR0FDZixzSUFBc0ksQ0FBQztBQUN6SSxNQUFNLFdBQVcsR0FDZiw0SUFBNEksQ0FBQztBQUUvSSxNQUFNLHFCQUFxQixHQUEwQjtJQUNuRCxlQUFlLEVBQUU7UUFDZixVQUFVLEVBQUUsV0FBVztRQUN2QixVQUFVLEVBQUUsV0FBVztRQUN2QixNQUFNLEVBQUUsNkJBQTZCO1FBQ3JDLGNBQWMsRUFBRTtZQUNkLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO1NBQy9HO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBd0I7SUFDL0MsYUFBYSxFQUFFO1FBQ2IsVUFBVSxFQUFFLFdBQVc7UUFDdkIsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7S0FDOUU7Q0FDRixDQUFDO0FBRUYsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcs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Q0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcblxuaW1wb3J0IHsgQ2FudG9uQ3JlYXRlQ29tbWFuZCwgQ2FudG9uRXhlcmNpc2VDb21tYW5kLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBDYW50b25Db21tYW5kQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvY2FudG9uQ29tbWFuZEJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ2FudG9uQ29tbWFuZFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB7IENhbnRvbkV4ZXJjaXNlQ29tbWFuZFByZXBhcmVSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcyc7XG5cbmNvbnN0IFBBUlRZX0EgPSAnUmVnUmVnaXN0cmFyOjoxMjIwNTA4ZTU0ZmI3MDlkY2IxYTliNDA5NjQwOGFkNDE1ZDIyMTdkODg4MWFkOTAzNGE5ODUwNzUyOTMzYmE4OGFkNSc7XG5jb25zdCBQQVJUWV9CID0gJ1JlZ1Byb3ZpZGVyOjoxMjIwNTA4ZTU0ZmI3MDlkY2IxYTliNDA5NjQwOGFkNDE1ZDIyMTdkODg4MWFkOTAzNGE5ODUwNzUyOTMzYmE4OGFkNSc7XG5jb25zdCBURU1QTEFURV9JRCA9XG4gICc3YTc1ZWY2ZTY5ZjY5Mzk1YTRlNjA5MTllMjI4NTI4YmI4ZjM4ODExNTBjY2ZkZTNmMzFiY2M3Mzg2NGIxOGFiOlV0aWxpdHkuUmVnaXN0cnkuQXBwLlYwLlNlcnZpY2UuQWxsb2NhdGlvbkZhY3Rvcnk6QWxsb2NhdGlvbkZhY3RvcnknO1xuY29uc3QgQ09OVFJBQ1RfSUQgPVxuICAnMDBmM2FmZGNlODQ2YTQwYzZmM2Y2MThjNGI1ODRiMDIyYTAxOTcwMTAwNTdlY2Q1OTQ1ODIwMDE4M2FiMjdkZTBhY2ExMjEyMjA0YWVmN2VkZTM3YTVmNDFiNjc0YTFkOTU0NDZkNDJhNDA0NDYxYzU1NThjNGU2ZDE4NjBiNjU1NjAxMjBlZjE4JztcblxuY29uc3Qgc2FtcGxlRXhlcmNpc2VDb21tYW5kOiBDYW50b25FeGVyY2lzZUNvbW1hbmQgPSB7XG4gIEV4ZXJjaXNlQ29tbWFuZDoge1xuICAgIHRlbXBsYXRlSWQ6IFRFTVBMQVRFX0lELFxuICAgIGNvbnRyYWN0SWQ6IENPTlRSQUNUX0lELFxuICAgIGNob2ljZTogJ0FsbG9jYXRpb25GYWN0b3J5X09mZmVyTWludCcsXG4gICAgY2hvaWNlQXJndW1lbnQ6IHtcbiAgICAgIGV4cGVjdGVkQWRtaW46IFBBUlRZX0EsXG4gICAgICBtaW50OiB7IGluc3RydW1lbnRJZDogeyBhZG1pbjogUEFSVFlfQSwgaWQ6ICdURVNUVE9LRU4nIH0sIGFtb3VudDogJzEwMCcsIGhvbGRlcjogUEFSVFlfQSwgcmVmZXJlbmNlOiAndGVzdCcgfSxcbiAgICB9LFxuICB9LFxufTtcblxuY29uc3Qgc2FtcGxlQ3JlYXRlQ29tbWFuZDogQ2FudG9uQ3JlYXRlQ29tbWFuZCA9IHtcbiAgQ3JlYXRlQ29tbWFuZDoge1xuICAgIHRlbXBsYXRlSWQ6IFRFTVBMQVRFX0lELFxuICAgIGNyZWF0ZUFyZ3VtZW50czogeyBwcm92aWRlcjogUEFSVFlfQiwgcmVnaXN0cmFyOiBQQVJUWV9BLCBvcGVyYXRvcjogUEFSVFlfQiB9LFxuICB9LFxufTtcblxuZGVzY3JpYmUoJ0NhbnRvbkNvbW1hbmRCdWlsZGVyJywgKCkgPT4ge1xuICBkZXNjcmliZSgnY29tbWFuZElkKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdGhlIGNvbW1hbmQgSUQgYW5kIHRyYW5zYWN0aW9uIElEJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZElkKCd0ZXN0LWNtZC1pZC0xMjMnKTtcbiAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyWydfY29tbWFuZElkJ10sICd0ZXN0LWNtZC1pZC0xMjMnKTtcbiAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyWyd0cmFuc2FjdGlvbiddLmlkLCAndGVzdC1jbWQtaWQtMTIzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIuY29tbWFuZElkKCcnKSwgL2NvbW1hbmRJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiB3aGl0ZXNwYWNlLW9ubHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci5jb21tYW5kSWQoJyAgICcpLCAvY29tbWFuZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhY3RBcygpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2V0IGFjdGluZyBwYXJ0aWVzIGFuZCB1cGRhdGUgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5hY3RBcyhbUEFSVFlfQV0pO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZGVyWydfYWN0QXMnXSwgW1BBUlRZX0FdKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsndHJhbnNhY3Rpb24nXS5jYW50b25Db21tYW5kQWN0QXNQYXJ0aWVzLCBbUEFSVFlfQV0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBlbXB0eSBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIuYWN0QXMoW10pLCAvYWN0QXMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBhcnJheSB3aXRoIGVtcHR5IHN0cmluZ3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBidWlsZGVyLmFjdEFzKFsnJ10pLCAvYWN0QXMgcGFydGllcyBtdXN0IGJlIG5vbi1lbXB0eSBzdHJpbmdzLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZWFkQXMoKScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNldCByZWFkLW9ubHkgcGFydGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLnJlYWRBcyhbUEFSVFlfQl0pO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZGVyWydfcmVhZEFzJ10sIFtQQVJUWV9CXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlZmF1bHQgdG8gZW1wdHkgYXJyYXkgd2hlbiBwYXNzZWQgdW5kZWZpbmVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIucmVhZEFzKHVuZGVmaW5lZCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19yZWFkQXMnXSwgW10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZWZhdWx0IHRvIGVtcHR5IGFycmF5IHdoZW4gcGFzc2VkIG51bGwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5yZWFkQXMobnVsbCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19yZWFkQXMnXSwgW10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29tbWFuZCgpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2V0IGFuIEV4ZXJjaXNlQ29tbWFuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmQoc2FtcGxlRXhlcmNpc2VDb21tYW5kKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsnX2NvbW1hbmQnXSwgc2FtcGxlRXhlcmNpc2VDb21tYW5kKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2V0IGEgQ3JlYXRlQ29tbWFuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmQoc2FtcGxlQ3JlYXRlQ29tbWFuZCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19jb21tYW5kJ10sIHNhbXBsZUNyZWF0ZUNvbW1hbmQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBub24tb2JqZWN0IGlucHV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci5jb21tYW5kKG51bGwgYXMgdW5rbm93biBhcyBDYW50b25FeGVyY2lzZUNvbW1hbmQpLCAvY29tbWFuZCBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0Lyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0b2tlbigpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2V0IHRoZSB0b2tlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmRJZCgnY21kLXRvay0xJykuYWN0QXMoW1BBUlRZX0FdKS5jb21tYW5kKHNhbXBsZUV4ZXJjaXNlQ29tbWFuZCkudG9rZW4oJ3RjYW50b246dGVzdHRva2VuJyk7XG4gICAgICBhc3NlcnQuZXF1YWwoYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKS50b2tlbiwgJ3RjYW50b246dGVzdHRva2VuJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRyaW0gd2hpdGVzcGFjZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmRJZCgnY21kLXRvay0yJykuYWN0QXMoW1BBUlRZX0FdKS5jb21tYW5kKHNhbXBsZUV4ZXJjaXNlQ29tbWFuZCkudG9rZW4oJyAgdGNhbnRvbjp0ZXN0dG9rZW4gICcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCkudG9rZW4sICd0Y2FudG9uOnRlc3R0b2tlbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBidWlsZGVyLnRva2VuKCcnKSwgL3Rva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIHdoaXRlc3BhY2Utb25seSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBidWlsZGVyLnRva2VuKCcgICAnKSwgL3Rva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZXNvbHZlQ29udHJhY3RzKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdGhlIHNwZWMgYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzcGVjID0gW3sgdGVtcGxhdGVJZDogVEVNUExBVEVfSUQsIGFjdEFzOiBbUEFSVFlfQV0sIGluamVjdEFzOiAnY29tbWFuZC5FeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZCcgfV07XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5yZXNvbHZlQ29udHJhY3RzKHNwZWMpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZGVyWydfcmVzb2x2ZUNvbnRyYWN0cyddLCBzcGVjKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RvUmVxdWVzdE9iamVjdCgpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3Qgb2JqZWN0IHdpdGggYWxsIHJlcXVpcmVkIGZpZWxkcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmRJZCgnY21kLTAwMScpLmFjdEFzKFtQQVJUWV9BXSkucmVhZEFzKFtQQVJUWV9CXSkuY29tbWFuZChzYW1wbGVFeGVyY2lzZUNvbW1hbmQpO1xuICAgICAgY29uc3QgcmVxOiBDYW50b25Db21tYW5kUmVxdWVzdCA9IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgICBzaG91bGQuZXhpc3QocmVxKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXEuY29tbWFuZElkLCAnY21kLTAwMScpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXEuYWN0QXMsIFtQQVJUWV9BXSk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcS5yZWFkQXMsIFtQQVJUWV9CXSk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcS5jb21tYW5kLCBzYW1wbGVFeGVyY2lzZUNvbW1hbmQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGNvbW1hbmRJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuYWN0QXMoW1BBUlRZX0FdKS5jb21tYW5kKHNhbXBsZUV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9jb21tYW5kSWQgaXMgbWlzc2luZy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGFjdEFzIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5jb21tYW5kSWQoJ2NtZC0wMDEnKS5jb21tYW5kKHNhbXBsZUV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9hY3RBcyBpcyBtaXNzaW5nLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gY29tbWFuZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGJ1aWxkZXIuY29tbWFuZElkKCdjbWQtMDAxJykuYWN0QXMoW1BBUlRZX0FdKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2NvbW1hbmQgaXMgbWlzc2luZy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGNvbW1hbmQgY29udGFpbnMgaW52YWxpZCBrZXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAuY29tbWFuZElkKCdjbWQtMDAxJylcbiAgICAgICAgLmFjdEFzKFtQQVJUWV9BXSlcbiAgICAgICAgLmNvbW1hbmQoeyBVbmtub3duQ29tbWFuZDoge30gfSBhcyB1bmtub3duIGFzIENhbnRvbkV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9jb21tYW5kIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBvZi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbmNsdWRlIGVtcHR5IHJlc29sdmVDb250cmFjdHMgYnkgZGVmYXVsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmRJZCgnY21kLTAwMicpLmFjdEFzKFtQQVJUWV9BXSkuY29tbWFuZChzYW1wbGVDcmVhdGVDb21tYW5kKTtcbiAgICAgIGNvbnN0IHJlcSA9IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcS5yZXNvbHZlQ29udHJhY3RzLCBbXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGluY2x1ZGUgdG9rZW4gd2hlbiBzZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgYnVpbGRlci5jb21tYW5kSWQoJ2NtZC0wMDMnKS5hY3RBcyhbUEFSVFlfQV0pLmNvbW1hbmQoc2FtcGxlRXhlcmNpc2VDb21tYW5kKS50b2tlbigndGNhbnRvbjp0ZXN0dG9rZW4nKTtcbiAgICAgIGNvbnN0IHJlcSA9IGJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVxLnRva2VuLCAndGNhbnRvbjp0ZXN0dG9rZW4nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGluY2x1ZGUgdG9rZW4ga2V5IHdoZW4gbm90IHNldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBidWlsZGVyLmNvbW1hbmRJZCgnY21kLTAwNCcpLmFjdEFzKFtQQVJUWV9BXSkuY29tbWFuZChzYW1wbGVFeGVyY2lzZUNvbW1hbmQpO1xuICAgICAgY29uc3QgcmVxID0gYnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICAgIGFzc2VydC5vayghKCd0b2tlbicgaW4gcmVxKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpbml0QnVpbGRlcigpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGluaXRpYWxpemUgZnJvbSBleGlzdGluZyB0cmFuc2FjdGlvbiB3aXRoIGNhbnRvbkNvbW1hbmRBY3RBc1BhcnRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICB0eC50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZDtcbiAgICAgIHR4LmNhbnRvbkNvbW1hbmRBY3RBcyA9IFtQQVJUWV9BXTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2FudG9uQ29tbWFuZEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkZXJbJ19hY3RBcyddLCBbUEFSVFlfQV0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBsZWF2ZSBfYWN0QXMgYXMgZW1wdHkgYXJyYXkgd2hlbiB0cmFuc2FjdGlvbiBoYXMgbm8gcGFydGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIHR4LnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kO1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDYW50b25Db21tYW5kQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYnVpbGRlclsnX2FjdEFzJ10sIFtdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RyYW5zYWN0aW9uVHlwZScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBDYW50b25Db21tYW5kIHR5cGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IENhbnRvbkNvbW1hbmRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyLnRyYW5zYWN0aW9uVHlwZSwgVHJhbnNhY3Rpb25UeXBlLkNhbnRvbkNvbW1hbmQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSAtIENhbnRvbkNvbW1hbmQnLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgcmV0dXJuIGEgQ2FudG9uQ29tbWFuZEJ1aWxkZXIgZnJvbSBnZXRDYW50b25Db21tYW5kQnVpbGRlcigpJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2FudG9uQ29tbWFuZEJ1aWxkZXIoKTtcbiAgICBzaG91bGQuZXhpc3QoYnVpbGRlcik7XG4gICAgYXNzZXJ0Lm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBDYW50b25Db21tYW5kQnVpbGRlcik7XG4gICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXIudHJhbnNhY3Rpb25UeXBlLCBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGEgQ2FudG9uQ29tbWFuZEJ1aWxkZXIgZnJvbSBmcm9tKCkgd2l0aCBDYW50b25Db21tYW5kIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eC50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZDtcbiAgICB0eC5pZCA9ICd0ZXN0LWNtZC0wMDEnO1xuICAgIHR4LnByZXBhcmVDb21tYW5kID0gQ2FudG9uRXhlcmNpc2VDb21tYW5kUHJlcGFyZVJlc3BvbnNlO1xuICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKHJhd1R4KTtcbiAgICBzaG91bGQuZXhpc3QoYnVpbGRlcik7XG4gICAgYXNzZXJ0Lm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBDYW50b25Db21tYW5kQnVpbGRlcik7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdUcmFuc2FjdGlvbiB0b0pzb24gYW5kIGV4cGxhaW5UcmFuc2FjdGlvbiAtIENhbnRvbkNvbW1hbmQnLCAoKSA9PiB7XG4gIGxldCB0eDogVHJhbnNhY3Rpb247XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4LnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kO1xuICAgIHR4LmlkID0gJ3Rlc3QtY21kLTAwMSc7XG4gICAgdHgucHJlcGFyZUNvbW1hbmQgPSBDYW50b25FeGVyY2lzZUNvbW1hbmRQcmVwYXJlUmVzcG9uc2U7XG4gICAgdHguY2FudG9uQ29tbWFuZEFjdEFzID0gW1BBUlRZX0FdO1xuICB9KTtcblxuICBkZXNjcmliZSgndG9Kc29uKCknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gY2FudG9uQ29tbWFuZCBzdW1tYXJ5IGZvciBDYW50b25Db21tYW5kIHRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5leGlzdChqc29uKTtcbiAgICAgIHNob3VsZC5leGlzdChqc29uLmNhbnRvbkNvbW1hbmQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbmNsdWRlIGtpbmQsIHRlbXBsYXRlSWQsIGFuZCBhY3RBcyBpbiBzdW1tYXJ5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgY29uc3QgY2MgPSBqc29uLmNhbnRvbkNvbW1hbmQhO1xuICAgICAgYXNzZXJ0Lm9rKFsnRXhlcmNpc2VDb21tYW5kJywgJ0NyZWF0ZUNvbW1hbmQnXS5pbmNsdWRlcyhjYy5raW5kKSk7XG4gICAgICBhc3NlcnQub2soY2MudGVtcGxhdGVJZC5pbmNsdWRlcygnOicpKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoY2MuYWN0QXMsIFtQQVJUWV9BXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGluY2x1ZGUgY2hvaWNlIGZvciBFeGVyY2lzZUNvbW1hbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBjb25zdCBjYyA9IGpzb24uY2FudG9uQ29tbWFuZCE7XG4gICAgICBpZiAoY2Mua2luZCA9PT0gJ0V4ZXJjaXNlQ29tbWFuZCcpIHtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGNjLmNob2ljZSk7XG4gICAgICAgIGFzc2VydC5lcXVhbChjYy5jaG9pY2UsICdBbGxvY2F0aW9uRmFjdG9yeV9PZmZlck1pbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW5jbHVkZSBjb250cmFjdElkIGZvciBFeGVyY2lzZUNvbW1hbmQgd2hlbiBwcmVzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgY29uc3QgY2MgPSBqc29uLmNhbnRvbkNvbW1hbmQhO1xuICAgICAgaWYgKGNjLmtpbmQgPT09ICdFeGVyY2lzZUNvbW1hbmQnKSB7XG4gICAgICAgIHNob3VsZC5leGlzdChjYy5jb250cmFjdElkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2V4cGxhaW5UcmFuc2FjdGlvbigpJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGV4cGxhbmF0aW9uIHdpdGggY2FudG9uQ29tbWFuZCBmaWVsZCBmb3IgQ2FudG9uQ29tbWFuZCB0eXBlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFuYXRpb24gPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIHNob3VsZC5leGlzdChleHBsYW5hdGlvbik7XG4gICAgICBzaG91bGQuZXhpc3QoZXhwbGFuYXRpb24uY2FudG9uQ29tbWFuZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhdmUgY29ycmVjdCBzdHJ1Y3R1cmUgKGlkLCBkaXNwbGF5T3JkZXIsIG91dHB1dHMsIGlucHV0cywgZmVlLCB0eXBlKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhbmF0aW9uID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICBhc3NlcnQub2soJ2lkJyBpbiBleHBsYW5hdGlvbik7XG4gICAgICBhc3NlcnQub2soJ2Rpc3BsYXlPcmRlcicgaW4gZXhwbGFuYXRpb24pO1xuICAgICAgYXNzZXJ0Lm9rKCdvdXRwdXRzJyBpbiBleHBsYW5hdGlvbik7XG4gICAgICBhc3NlcnQub2soJ2lucHV0cycgaW4gZXhwbGFuYXRpb24pO1xuICAgICAgYXNzZXJ0Lm9rKCdmZWUnIGluIGV4cGxhbmF0aW9uKTtcbiAgICAgIGFzc2VydC5vaygndHlwZScgaW4gZXhwbGFuYXRpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYXZlIGNvcnJlY3QgY2FudG9uQ29tbWFuZCBzdW1tYXJ5IGZpZWxkcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhbmF0aW9uID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICBjb25zdCBjYyA9IGV4cGxhbmF0aW9uLmNhbnRvbkNvbW1hbmQhO1xuICAgICAgYXNzZXJ0LmVxdWFsKGNjLmtpbmQsICdFeGVyY2lzZUNvbW1hbmQnKTtcbiAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgY2MudGVtcGxhdGVJZCxcbiAgICAgICAgJzdhNzVlZjZlNjlmNjkzOTVhNGU2MDkxOWUyMjg1MjhiYjhmMzg4MTE1MGNjZmRlM2YzMWJjYzczODY0YjE4YWI6VXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuU2VydmljZS5BbGxvY2F0aW9uRmFjdG9yeTpBbGxvY2F0aW9uRmFjdG9yeSdcbiAgICAgICk7XG4gICAgICBhc3NlcnQuZXF1YWwoY2MuY2hvaWNlLCAnQWxsb2NhdGlvbkZhY3RvcnlfT2ZmZXJNaW50Jyk7XG4gICAgICBhc3NlcnQub2soY2MuY29udHJhY3RJZCAmJiBjYy5jb250cmFjdElkLmxlbmd0aCA+IDApO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYy5hY3RBcywgW1BBUlRZX0FdKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosignDelegationAcceptBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
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
|
+
const commandId = '3935a06d-3b03-41be-99a5-95b2ecaabf7d';
|
|
12
|
+
const contractId = '001b549bfa833bab661ab30e4d0a3ab0ec01fcc4a2bef5369795f4928147706353ca1112205a8d0e780cf3b3115cf8be0d6315f4aed6a1c25b67e8c5d64cf9848d0458fd17';
|
|
13
|
+
const actAsPartyId = '12205::12205b4e3537a95126d90604592344d8ad3c3ddccda4f79901954280ee19c576714d';
|
|
14
|
+
describe('CosignDelegationAccept Builder', () => {
|
|
15
|
+
it('should get the cosign delegation accept request object', function () {
|
|
16
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
17
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
18
|
+
txBuilder.initBuilder(tx);
|
|
19
|
+
txBuilder.commandId(commandId).contractId(contractId).actAs(actAsPartyId);
|
|
20
|
+
const requestObj = txBuilder.toRequestObject();
|
|
21
|
+
should_1.default.exist(requestObj);
|
|
22
|
+
assert_1.default.equal(requestObj.commandId, commandId);
|
|
23
|
+
assert_1.default.equal(requestObj.contractId, contractId);
|
|
24
|
+
assert_1.default.equal(requestObj.actAs.length, 1);
|
|
25
|
+
assert_1.default.equal(requestObj.actAs[0], actAsPartyId);
|
|
26
|
+
assert_1.default.deepEqual(requestObj.readAs, []);
|
|
27
|
+
assert_1.default.equal(requestObj.verboseHashing, false);
|
|
28
|
+
});
|
|
29
|
+
it('should set transaction id from commandId', function () {
|
|
30
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
31
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
32
|
+
txBuilder.initBuilder(tx);
|
|
33
|
+
txBuilder.commandId(commandId);
|
|
34
|
+
assert_1.default.equal(txBuilder.transaction.id, commandId);
|
|
35
|
+
});
|
|
36
|
+
it('should throw if commandId is missing', function () {
|
|
37
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
38
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
39
|
+
txBuilder.initBuilder(tx);
|
|
40
|
+
txBuilder.contractId(contractId).actAs(actAsPartyId);
|
|
41
|
+
assert_1.default.throws(() => txBuilder.toRequestObject(), /commandId is missing/);
|
|
42
|
+
});
|
|
43
|
+
it('should throw if contractId is missing', function () {
|
|
44
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
45
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
46
|
+
txBuilder.initBuilder(tx);
|
|
47
|
+
txBuilder.commandId(commandId).actAs(actAsPartyId);
|
|
48
|
+
assert_1.default.throws(() => txBuilder.toRequestObject(), /contractId is missing/);
|
|
49
|
+
});
|
|
50
|
+
it('should throw if actAs is missing', function () {
|
|
51
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
52
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
53
|
+
txBuilder.initBuilder(tx);
|
|
54
|
+
txBuilder.commandId(commandId).contractId(contractId);
|
|
55
|
+
assert_1.default.throws(() => txBuilder.toRequestObject(), /actAs partyId is missing/);
|
|
56
|
+
});
|
|
57
|
+
it('should throw if commandId is empty string', function () {
|
|
58
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
59
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
60
|
+
txBuilder.initBuilder(tx);
|
|
61
|
+
assert_1.default.throws(() => txBuilder.commandId(''), /commandId must be a non-empty string/);
|
|
62
|
+
});
|
|
63
|
+
it('should throw if contractId is empty string', function () {
|
|
64
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
65
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
66
|
+
txBuilder.initBuilder(tx);
|
|
67
|
+
assert_1.default.throws(() => txBuilder.contractId(''), /contractId must be a non-empty string/);
|
|
68
|
+
});
|
|
69
|
+
it('should throw if actAs is empty string', function () {
|
|
70
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
71
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
72
|
+
txBuilder.initBuilder(tx);
|
|
73
|
+
assert_1.default.throws(() => txBuilder.actAs(''), /actAsPartyId must be a non-empty string/);
|
|
74
|
+
});
|
|
75
|
+
it('should parse preparedTransaction and extract sender, receiver, and amount via setTransaction + toJson', function () {
|
|
76
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
77
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
78
|
+
txBuilder.initBuilder(tx);
|
|
79
|
+
txBuilder.setTransaction(resources_1.CosignDelegationAcceptPrepareResponse);
|
|
80
|
+
txBuilder.commandId(commandId).contractId(contractId).actAs(actAsPartyId);
|
|
81
|
+
const txData = txBuilder.transaction.toJson();
|
|
82
|
+
should_1.default.exist(txData);
|
|
83
|
+
assert_1.default.equal(txData.sender, '12208::122083082e9af156feaeb7afd363a0ee5ffa1fd160947b647a139a7e0c2ed78f5dc7');
|
|
84
|
+
assert_1.default.equal(txData.receiver, 'ravi-new-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
|
|
85
|
+
assert_1.default.equal(txData.amount, '0');
|
|
86
|
+
});
|
|
87
|
+
it('should parse round-trip from raw transaction via TransactionBuilderFactory.from', function () {
|
|
88
|
+
const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tcanton'));
|
|
89
|
+
const txBuilder = factory.from(resources_1.CosignDelegationAcceptRawTransaction);
|
|
90
|
+
const txData = txBuilder.transaction.toJson();
|
|
91
|
+
should_1.default.exist(txData);
|
|
92
|
+
assert_1.default.equal(txData.sender, '12208::122083082e9af156feaeb7afd363a0ee5ffa1fd160947b647a139a7e0c2ed78f5dc7');
|
|
93
|
+
assert_1.default.equal(txData.receiver, 'ravi-new-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
|
|
94
|
+
assert_1.default.equal(txData.amount, '0');
|
|
95
|
+
});
|
|
96
|
+
it('should validate raw transaction hash', function () {
|
|
97
|
+
const txBuilder = new src_1.CosignDelegationAcceptBuilder(statics_1.coins.get('tcanton'));
|
|
98
|
+
const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
|
|
99
|
+
txBuilder.initBuilder(tx);
|
|
100
|
+
txBuilder.setTransaction(resources_1.CosignDelegationAcceptPrepareResponse);
|
|
101
|
+
txBuilder.validateRawTransaction(resources_1.CosignDelegationAcceptPrepareResponse.preparedTransaction);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYnVpbGRlci9jb3NpZ25EZWxlZ2F0aW9uQWNjZXB0L2Nvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixpREFBNEM7QUFFNUMseUNBQXdHO0FBRXhHLGtEQUFpSDtBQUVqSCxNQUFNLFNBQVMsR0FBRyxzQ0FBc0MsQ0FBQztBQUN6RCxNQUFNLFVBQVUsR0FDZCw0SUFBNEksQ0FBQztBQUMvSSxNQUFNLFlBQVksR0FBRyw2RUFBNkUsQ0FBQztBQUVuRyxRQUFRLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO0lBQzlDLEVBQUUsQ0FBQyx3REFBd0QsRUFBRTtRQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLG1DQUE2QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMxRSxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFFLE1BQU0sVUFBVSxHQUFzQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbEYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFV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QXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0RBQW9DLENBQUMsQ0FBQztRQUNyRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBWSxDQUFDO1FBQ3hELGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsNkVBQTZFLENBQUMsQ0FBQztRQUMzRyxnQkFBTSxDQUFDLEtBQUssQ0FDVixNQUFNLENBQUMsUUFBUSxFQUNmLHNGQUFzRixDQUN2RixDQUFDO1FBQ0YsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRTtRQUN6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLG1DQUE2QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMxRSxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxpREFBcUMsQ0FBQyxDQUFDO1FBQ2hFLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxpREFBcUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzlGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmltcG9ydCB7IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBDYW50b25UcmFuc2ZlckFjY2VwdFJlamVjdFJlcXVlc3QsIFR4RGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHsgQ29zaWduRGVsZWdhdGlvbkFjY2VwdFByZXBhcmVSZXNwb25zZSwgQ29zaWduRGVsZWdhdGlvbkFjY2VwdFJhd1RyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzJztcblxuY29uc3QgY29tbWFuZElkID0gJzM5MzVhMDZkLTNiMDMtNDFiZS05OWE1LTk1YjJlY2FhYmY3ZCc7XG5jb25zdCBjb250cmFjdElkID1cbiAgJzAwMWI1NDliZmE4MzNiYWI2NjFhYjMwZTRkMGEzYWIwZWMwMWZjYzRhMmJlZjUzNjk3OTVmNDkyODE0NzcwNjM1M2NhMTExMjIwNWE4ZDBlNzgwY2YzYjMxMTVjZjhiZTBkNjMxNWY0YWVkNmExYzI1YjY3ZThjNWQ2NGNmOTg0OGQwNDU4ZmQxNyc7XG5jb25zdCBhY3RBc1BhcnR5SWQgPSAnMTIyMDU6OjEyMjA1YjRlMzUzN2E5NTEyNmQ5MDYwNDU5MjM0NGQ4YWQzYzNkZGNjZGE0Zjc5OTAxOTU0MjgwZWUxOWM1NzY3MTRkJztcblxuZGVzY3JpYmUoJ0Nvc2lnbkRlbGVnYXRpb25BY2NlcHQgQnVpbGRlcicsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvc2lnbiBkZWxlZ2F0aW9uIGFjY2VwdCByZXF1ZXN0IG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKS5jb250cmFjdElkKGNvbnRyYWN0SWQpLmFjdEFzKGFjdEFzUGFydHlJZCk7XG4gICAgY29uc3QgcmVxdWVzdE9iajogQ2FudG9uVHJhbnNmZXJBY2NlcHRSZWplY3RSZXF1ZXN0ID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIHNob3VsZC5leGlzdChyZXF1ZXN0T2JqKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb21tYW5kSWQsIGNvbW1hbmRJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29udHJhY3RJZCwgY29udHJhY3RJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouYWN0QXMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hY3RBc1swXSwgYWN0QXNQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RPYmoucmVhZEFzLCBbXSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoudmVyYm9zZUhhc2hpbmcsIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzZXQgdHJhbnNhY3Rpb24gaWQgZnJvbSBjb21tYW5kSWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIuY29tbWFuZElkKGNvbW1hbmRJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHR4QnVpbGRlci50cmFuc2FjdGlvbi5pZCwgY29tbWFuZElkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb21tYW5kSWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb250cmFjdElkKGNvbnRyYWN0SWQpLmFjdEFzKGFjdEFzUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9jb21tYW5kSWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbnRyYWN0SWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKS5hY3RBcyhhY3RBc1BhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvY29udHJhY3RJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgYWN0QXMgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKS5jb250cmFjdElkKGNvbnRyYWN0SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvYWN0QXMgcGFydHlJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgY29tbWFuZElkIGlzIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmNvbW1hbmRJZCgnJyksIC9jb21tYW5kSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb250cmFjdElkIGlzIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmNvbnRyYWN0SWQoJycpLCAvY29udHJhY3RJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGFjdEFzIGlzIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmFjdEFzKCcnKSwgL2FjdEFzUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhcnNlIHByZXBhcmVkVHJhbnNhY3Rpb24gYW5kIGV4dHJhY3Qgc2VuZGVyLCByZWNlaXZlciwgYW5kIGFtb3VudCB2aWEgc2V0VHJhbnNhY3Rpb24gKyB0b0pzb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oQ29zaWduRGVsZWdhdGlvbkFjY2VwdFByZXBhcmVSZXNwb25zZSk7XG4gICAgdHhCdWlsZGVyLmNvbW1hbmRJZChjb21tYW5kSWQpLmNvbnRyYWN0SWQoY29udHJhY3RJZCkuYWN0QXMoYWN0QXNQYXJ0eUlkKTtcbiAgICBjb25zdCB0eERhdGEgPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24udG9Kc29uKCkgYXMgVHhEYXRhO1xuICAgIHNob3VsZC5leGlzdCh0eERhdGEpO1xuICAgIGFzc2VydC5lcXVhbCh0eERhdGEuc2VuZGVyLCAnMTIyMDg6OjEyMjA4MzA4MmU5YWYxNTZmZWFlYjdhZmQzNjNhMGVlNWZmYTFmZDE2MDk0N2I2NDdhMTM5YTdlMGMyZWQ3OGY1ZGM3Jyk7XG4gICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgdHhEYXRhLnJlY2VpdmVyLFxuICAgICAgJ3JhdmktbmV3LXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMidcbiAgICApO1xuICAgIGFzc2VydC5lcXVhbCh0eERhdGEuYW1vdW50LCAnMCcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhcnNlIHJvdW5kLXRyaXAgZnJvbSByYXcgdHJhbnNhY3Rpb24gdmlhIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuZnJvbScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbShDb3NpZ25EZWxlZ2F0aW9uQWNjZXB0UmF3VHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IHR4RGF0YSA9IHR4QnVpbGRlci50cmFuc2FjdGlvbi50b0pzb24oKSBhcyBUeERhdGE7XG4gICAgc2hvdWxkLmV4aXN0KHR4RGF0YSk7XG4gICAgYXNzZXJ0LmVxdWFsKHR4RGF0YS5zZW5kZXIsICcxMjIwODo6MTIyMDgzMDgyZTlhZjE1NmZlYWViN2FmZDM2M2EwZWU1ZmZhMWZkMTYwOTQ3YjY0N2ExMzlhN2UwYzJlZDc4ZjVkYzcnKTtcbiAgICBhc3NlcnQuZXF1YWwoXG4gICAgICB0eERhdGEucmVjZWl2ZXIsXG4gICAgICAncmF2aS1uZXctcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyJ1xuICAgICk7XG4gICAgYXNzZXJ0LmVxdWFsKHR4RGF0YS5hbW91bnQsICcwJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgcmF3IHRyYW5zYWN0aW9uIGhhc2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oQ29zaWduRGVsZWdhdGlvbkFjY2VwdFByZXBhcmVSZXNwb25zZSk7XG4gICAgdHhCdWlsZGVyLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24oQ29zaWduRGVsZWdhdGlvbkFjY2VwdFByZXBhcmVSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosignDelegationProposalBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.ts"],"names":[],"mappings":""}
|