@bitgo-beta/sdk-core 8.2.1-beta.1905 → 8.2.1-beta.1906
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/bitgo/defi/defiVault.d.ts +27 -8
- package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -1
- package/dist/src/bitgo/defi/defiVault.js +104 -5
- package/dist/src/bitgo/defi/iDefiVault.d.ts +11 -1
- package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -1
- package/dist/src/bitgo/defi/iDefiVault.js +1 -1
- package/dist/src/bitgo/enterprise/enterprise.d.ts +6 -0
- package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/enterprise.js +9 -1
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts +3 -0
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
- package/dist/src/bitgo/index.d.ts +1 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +2 -1
- package/dist/src/bitgo/safe/iSafe.d.ts +80 -0
- package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -0
- package/dist/src/bitgo/safe/iSafe.js +3 -0
- package/dist/src/bitgo/safe/iSafes.d.ts +58 -0
- package/dist/src/bitgo/safe/iSafes.d.ts.map +1 -0
- package/dist/src/bitgo/safe/iSafes.js +3 -0
- package/dist/src/bitgo/safe/index.d.ts +5 -0
- package/dist/src/bitgo/safe/index.d.ts.map +1 -0
- package/dist/src/bitgo/safe/index.js +21 -0
- package/dist/src/bitgo/safe/safe.d.ts +66 -0
- package/dist/src/bitgo/safe/safe.d.ts.map +1 -0
- package/dist/src/bitgo/safe/safe.js +96 -0
- package/dist/src/bitgo/safe/safes.d.ts +61 -0
- package/dist/src/bitgo/safe/safes.d.ts.map +1 -0
- package/dist/src/bitgo/safe/safes.js +67 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +5 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +61 -1
- package/dist/src/bitgo/wallet/BuildParams.d.ts +1 -0
- package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/BuildParams.js +2 -1
- package/dist/src/bitgo/wallet/iWallet.d.ts +7 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/test/unit/bitgo/defi/defiVault.js +265 -132
- package/dist/test/unit/bitgo/safe/safe.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/safe.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/safe.js +134 -0
- package/dist/test/unit/bitgo/safe/safes.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/safes.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/safes.js +94 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +120 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/safe/safe.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const sinon = __importStar(require("sinon"));
|
|
37
|
+
require("should");
|
|
38
|
+
const src_1 = require("../../../../src");
|
|
39
|
+
describe('Safe', function () {
|
|
40
|
+
let safe;
|
|
41
|
+
let mockBitGo;
|
|
42
|
+
let safeData;
|
|
43
|
+
// wire-shaped SafeData (timestamps as ISO strings) for mocked REST responses that get decoded
|
|
44
|
+
let safeDataWire;
|
|
45
|
+
beforeEach(function () {
|
|
46
|
+
mockBitGo = {
|
|
47
|
+
url: sinon.stub().callsFake((path) => path),
|
|
48
|
+
post: sinon.stub(),
|
|
49
|
+
};
|
|
50
|
+
safeData = {
|
|
51
|
+
id: 'test-safe-id',
|
|
52
|
+
enterpriseId: 'test-enterprise-id',
|
|
53
|
+
label: 'my safe',
|
|
54
|
+
status: 'active',
|
|
55
|
+
creator: 'creator-id',
|
|
56
|
+
users: [{ userId: 'creator-id', permissions: ['admin', 'spend'] }],
|
|
57
|
+
createdAt: new Date('2026-07-07T00:00:00.000Z'),
|
|
58
|
+
};
|
|
59
|
+
safeDataWire = {
|
|
60
|
+
id: 'test-safe-id',
|
|
61
|
+
enterpriseId: 'test-enterprise-id',
|
|
62
|
+
label: 'my safe',
|
|
63
|
+
status: 'active',
|
|
64
|
+
creator: 'creator-id',
|
|
65
|
+
users: [{ userId: 'creator-id', permissions: ['admin', 'spend'] }],
|
|
66
|
+
createdAt: '2026-07-07T00:00:00.000Z',
|
|
67
|
+
};
|
|
68
|
+
safe = new src_1.Safe(mockBitGo, safeData);
|
|
69
|
+
});
|
|
70
|
+
afterEach(function () {
|
|
71
|
+
sinon.restore();
|
|
72
|
+
});
|
|
73
|
+
describe('getters', function () {
|
|
74
|
+
it('exposes id/enterpriseId/label/status', function () {
|
|
75
|
+
safe.id().should.equal('test-safe-id');
|
|
76
|
+
safe.enterpriseId().should.equal('test-enterprise-id');
|
|
77
|
+
safe.label().should.equal('my safe');
|
|
78
|
+
safe.status().should.equal('active');
|
|
79
|
+
});
|
|
80
|
+
it('toJSON returns the underlying data', function () {
|
|
81
|
+
safe.toJSON().should.equal(safeData);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe('url', function () {
|
|
85
|
+
it('builds the enterprise-scoped v2 path', function () {
|
|
86
|
+
safe.url().should.equal('/enterprise/test-enterprise-id/safes/test-safe-id');
|
|
87
|
+
safe.url('/freeze').should.equal('/enterprise/test-enterprise-id/safes/test-safe-id/freeze');
|
|
88
|
+
mockBitGo.url.calledWith('/enterprise/test-enterprise-id/safes/test-safe-id', 2).should.be.true();
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe('freeze / archive REST plumbing', function () {
|
|
92
|
+
function stubPost(response) {
|
|
93
|
+
const resultStub = sinon.stub().resolves(response);
|
|
94
|
+
const sendStub = sinon.stub().returns({ result: resultStub });
|
|
95
|
+
mockBitGo.post.returns({ send: sendStub });
|
|
96
|
+
return { sendStub };
|
|
97
|
+
}
|
|
98
|
+
it('freeze posts the encoded body to the freeze route and decodes SafeData', async function () {
|
|
99
|
+
const frozen = { ...safeDataWire, freeze: { reason: 'incident' } };
|
|
100
|
+
const { sendStub } = stubPost(frozen);
|
|
101
|
+
const result = await safe.freeze({ reason: 'incident' });
|
|
102
|
+
mockBitGo.post.calledWith('/enterprise/test-enterprise-id/safes/test-safe-id/freeze').should.be.true();
|
|
103
|
+
sendStub.calledWith({ reason: 'incident' }).should.be.true();
|
|
104
|
+
result.freeze.reason.should.equal('incident');
|
|
105
|
+
result.createdAt.should.be.instanceof(Date);
|
|
106
|
+
});
|
|
107
|
+
it('archive posts an empty body to the archive route and decodes SafeData', async function () {
|
|
108
|
+
const archived = { ...safeDataWire, status: 'archived' };
|
|
109
|
+
const { sendStub } = stubPost(archived);
|
|
110
|
+
const result = await safe.archive();
|
|
111
|
+
mockBitGo.post.calledWith('/enterprise/test-enterprise-id/safes/test-safe-id/archive').should.be.true();
|
|
112
|
+
sendStub.calledWithExactly().should.be.true();
|
|
113
|
+
result.status.should.equal('archived');
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
describe('member/share methods are stubbed (WCN-1203 / WCN-1204)', function () {
|
|
117
|
+
it('createWallet throws not-implemented (WCN-1203)', async function () {
|
|
118
|
+
await safe.createWallet({ coin: 'tbtc', label: 'w' }).should.be.rejectedWith(/WCN-1203/);
|
|
119
|
+
});
|
|
120
|
+
it('addMember throws not-implemented (WCN-1204)', async function () {
|
|
121
|
+
await safe.addMember({ userId: 'u', permissions: ['view'] }).should.be.rejectedWith(/WCN-1204/);
|
|
122
|
+
});
|
|
123
|
+
it('addMemberToWallet throws not-implemented (WCN-1204)', async function () {
|
|
124
|
+
await safe.addMemberToWallet({ walletId: 'w', walletPassphrase: 'p' }).should.be.rejectedWith(/WCN-1204/);
|
|
125
|
+
});
|
|
126
|
+
it('listShares throws not-implemented (WCN-1204)', async function () {
|
|
127
|
+
await safe.listShares().should.be.rejectedWith(/WCN-1204/);
|
|
128
|
+
});
|
|
129
|
+
it('acceptShare throws not-implemented (WCN-1204)', async function () {
|
|
130
|
+
await safe.acceptShare({ safeShareId: 's' }).should.be.rejectedWith(/WCN-1204/);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby9zYWZlL3NhZmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0Isa0JBQWdCO0FBRWhCLHlDQUF1QztBQUV2QyxRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxJQUFVLENBQUM7SUFDZixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFFBQWtCLENBQUM7SUFDdkIsOEZBQThGO0lBQzlGLElBQUksWUFBaUIsQ0FBQztJQUV0QixVQUFVLENBQUM7UUFDVCxTQUFTLEdBQUc7WUFDVixHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ25ELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO1NBQ25CLENBQUM7UUFDRixRQUFRLEdBQUc7WUFDVCxFQUFFLEVBQUUsY0FBYztZQUNsQixZQUFZLEVBQUUsb0JBQW9CO1lBQ2xDLEtBQUssRUFBRSxTQUFTO1lBQ2hCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUM7U0FDaEQsQ0FBQztRQUNGLFlBQVksR0FBRztZQUNiLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLFlBQVksRUFBRSxvQkFBb0I7WUFDbEMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFLFlBQVk7WUFDckIsS0FBSyxFQUFFLENBQUMsRUFBRSxN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LElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxLQUFLO1lBQzdELE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUs7WUFDdEQsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0NBQStDLEVBQUUsS0FBSztZQUN2RCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBTYWZlRGF0YSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgU2FmZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdTYWZlJywgZnVuY3Rpb24gKCkge1xuICBsZXQgc2FmZTogU2FmZTtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgc2FmZURhdGE6IFNhZmVEYXRhO1xuICAvLyB3aXJlLXNoYXBlZCBTYWZlRGF0YSAodGltZXN0YW1wcyBhcyBJU08gc3RyaW5ncykgZm9yIG1vY2tlZCBSRVNUIHJlc3BvbnNlcyB0aGF0IGdldCBkZWNvZGVkXG4gIGxldCBzYWZlRGF0YVdpcmU6IGFueTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZykgPT4gcGF0aCksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBzYWZlRGF0YSA9IHtcbiAgICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIGVudGVycHJpc2VJZDogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICBsYWJlbDogJ215IHNhZmUnLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGNyZWF0b3I6ICdjcmVhdG9yLWlkJyxcbiAgICAgIHVzZXJzOiBbeyB1c2VySWQ6ICdjcmVhdG9yLWlkJywgcGVybWlzc2lvbnM6IFsnYWRtaW4nLCAnc3BlbmQnXSB9XSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDctMDdUMDA6MDA6MDAuMDAwWicpLFxuICAgIH07XG4gICAgc2FmZURhdGFXaXJlID0ge1xuICAgICAgaWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgZW50ZXJwcmlzZUlkOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgY3JlYXRvcjogJ2NyZWF0b3ItaWQnLFxuICAgICAgdXNlcnM6IFt7IHVzZXJJZDogJ2NyZWF0b3ItaWQnLCBwZXJtaXNzaW9uczogWydhZG1pbicsICdzcGVuZCddIH1dLFxuICAgICAgY3JlYXRlZEF0OiAnMjAyNi0wNy0wN1QwMDowMDowMC4wMDBaJyxcbiAgICB9O1xuICAgIHNhZmUgPSBuZXcgU2FmZShtb2NrQml0R28sIHNhZmVEYXRhKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXR0ZXJzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdleHBvc2VzIGlkL2VudGVycHJpc2VJZC9sYWJlbC9zdGF0dXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHNhZmUuZW50ZXJwcmlzZUlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LWVudGVycHJpc2UtaWQnKTtcbiAgICAgIHNhZmUubGFiZWwoKS5zaG91bGQuZXF1YWwoJ215IHNhZmUnKTtcbiAgICAgIHNhZmUuc3RhdHVzKCkuc2hvdWxkLmVxdWFsKCdhY3RpdmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCd0b0pTT04gcmV0dXJucyB0aGUgdW5kZXJseWluZyBkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2FmZS50b0pTT04oKS5zaG91bGQuZXF1YWwoc2FmZURhdGEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXJsJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdidWlsZHMgdGhlIGVudGVycHJpc2Utc2NvcGVkIHYyIHBhdGgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLnVybCgpLnNob3VsZC5lcXVhbCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgc2FmZS51cmwoJy9mcmVlemUnKS5zaG91bGQuZXF1YWwoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvZnJlZXplJyk7XG4gICAgICBtb2NrQml0R28udXJsLmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnLCAyKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJlZXplIC8gYXJjaGl2ZSBSRVNUIHBsdW1iaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHN0dWJQb3N0KHJlc3BvbnNlOiB1bmtub3duKSB7XG4gICAgICBjb25zdCByZXN1bHRTdHViID0gc2lub24uc3R1YigpLnJlc29sdmVzKHJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHNlbmRTdHViID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHJlc3VsdFN0dWIgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZDogc2VuZFN0dWIgfSk7XG4gICAgICByZXR1cm4geyBzZW5kU3R1YiB9O1xuICAgIH1cblxuICAgIGl0KCdmcmVlemUgcG9zdHMgdGhlIGVuY29kZWQgYm9keSB0byB0aGUgZnJlZXplIHJvdXRlIGFuZCBkZWNvZGVzIFNhZmVEYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZnJvemVuID0geyAuLi5zYWZlRGF0YVdpcmUsIGZyZWV6ZTogeyByZWFzb246ICdpbmNpZGVudCcgfSB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoZnJvemVuKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmUuZnJlZXplKHsgcmVhc29uOiAnaW5jaWRlbnQnIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9mcmVlemUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aCh7IHJlYXNvbjogJ2luY2lkZW50JyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LmZyZWV6ZSEucmVhc29uIS5zaG91bGQuZXF1YWwoJ2luY2lkZW50Jyk7XG4gICAgICByZXN1bHQuY3JlYXRlZEF0LnNob3VsZC5iZS5pbnN0YW5jZW9mKERhdGUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FyY2hpdmUgcG9zdHMgYW4gZW1wdHkgYm9keSB0byB0aGUgYXJjaGl2ZSByb3V0ZSBhbmQgZGVjb2RlcyBTYWZlRGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFyY2hpdmVkID0geyAuLi5zYWZlRGF0YVdpcmUsIHN0YXR1czogJ2FyY2hpdmVkJyBhcyBjb25zdCB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoYXJjaGl2ZWQpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZS5hcmNoaXZlKCk7XG4gICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2FyY2hpdmUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aEV4YWN0bHkoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LnN0YXR1cy5zaG91bGQuZXF1YWwoJ2FyY2hpdmVkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdtZW1iZXIvc2hhcmUgbWV0aG9kcyBhcmUgc3R1YmJlZCAoV0NOLTEyMDMgLyBXQ04tMTIwNCknLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2NyZWF0ZVdhbGxldCB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwMyknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICd3JyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XQ04tMTIwMy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZE1lbWJlciB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwNCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmFkZE1lbWJlcih7IHVzZXJJZDogJ3UnLCBwZXJtaXNzaW9uczogWyd2aWV3J10gfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvV0NOLTEyMDQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGRNZW1iZXJUb1dhbGxldCB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwNCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmFkZE1lbWJlclRvV2FsbGV0KHsgd2FsbGV0SWQ6ICd3Jywgd2FsbGV0UGFzc3BocmFzZTogJ3AnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dDTi0xMjA0Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbGlzdFNoYXJlcyB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwNCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmxpc3RTaGFyZXMoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XQ04tMTIwNC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FjY2VwdFNoYXJlIHRocm93cyBub3QtaW1wbGVtZW50ZWQgKFdDTi0xMjA0KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmUuYWNjZXB0U2hhcmUoeyBzYWZlU2hhcmVJZDogJ3MnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dDTi0xMjA0Lyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safes.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/safe/safes.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const sinon = __importStar(require("sinon"));
|
|
37
|
+
require("should");
|
|
38
|
+
const src_1 = require("../../../../src");
|
|
39
|
+
describe('Safes', function () {
|
|
40
|
+
let safes;
|
|
41
|
+
let mockBitGo;
|
|
42
|
+
beforeEach(function () {
|
|
43
|
+
mockBitGo = {
|
|
44
|
+
url: sinon.stub().callsFake((path) => path),
|
|
45
|
+
};
|
|
46
|
+
safes = new src_1.Safes(mockBitGo, 'test-enterprise-id');
|
|
47
|
+
});
|
|
48
|
+
afterEach(function () {
|
|
49
|
+
sinon.restore();
|
|
50
|
+
});
|
|
51
|
+
// Phase 2 (generateSafe/initialize/createSafeKeys/finalize) and Phase 3 (list/get) are not yet
|
|
52
|
+
// implemented — they are gated on WCN-1175 / WCN-1176 / WCN-1177. Assert the interface is wired
|
|
53
|
+
// and stubbed for now.
|
|
54
|
+
describe('unimplemented lifecycle methods', function () {
|
|
55
|
+
it('generateSafe throws (Phase 2)', async function () {
|
|
56
|
+
await safes.generateSafe({ label: 'v', passphrase: 'p' }).should.be.rejectedWith(/not yet implemented .*Phase 2/);
|
|
57
|
+
});
|
|
58
|
+
it('initializeSafe throws (Phase 2)', async function () {
|
|
59
|
+
await safes.initializeSafe({ label: 'v' }).should.be.rejectedWith(/not yet implemented .*Phase 2/);
|
|
60
|
+
});
|
|
61
|
+
it('createSafeKeys throws (Phase 2)', async function () {
|
|
62
|
+
await safes
|
|
63
|
+
.createSafeKeys({ label: 'v', passphrase: 'p', safeId: 'vid' })
|
|
64
|
+
.should.be.rejectedWith(/not yet implemented .*Phase 2/);
|
|
65
|
+
});
|
|
66
|
+
it('finalizeSafe throws (Phase 2)', async function () {
|
|
67
|
+
await safes
|
|
68
|
+
.finalizeSafe('vid', {
|
|
69
|
+
rootKeys: {
|
|
70
|
+
hot: {
|
|
71
|
+
secp256k1Multisig: ['u', 'b', 'g'],
|
|
72
|
+
ecdsaMpc: ['u', 'b', 'g'],
|
|
73
|
+
eddsaMpc: ['u', 'b', 'g'],
|
|
74
|
+
ed25519Multisig: ['u', 'b', 'g'],
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
})
|
|
78
|
+
.should.be.rejectedWith(/not yet implemented .*Phase 2/);
|
|
79
|
+
});
|
|
80
|
+
it('list throws (Phase 3)', async function () {
|
|
81
|
+
await safes.list().should.be.rejectedWith(/not yet implemented .*Phase 3/);
|
|
82
|
+
});
|
|
83
|
+
it('get throws (Phase 3)', async function () {
|
|
84
|
+
await safes.get({ id: 'vid' }).should.be.rejectedWith(/not yet implemented .*Phase 3/);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe('Enterprise.safes() accessor', function () {
|
|
88
|
+
it('returns a Safes instance scoped to the enterprise', function () {
|
|
89
|
+
const enterprise = new src_1.Enterprise(mockBitGo, {}, { id: 'ent-id', name: 'ent' });
|
|
90
|
+
enterprise.safes().should.be.instanceof(src_1.Safes);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQixrQkFBZ0I7QUFDaEIseUNBQW9EO0FBRXBELFFBQVEsQ0FBQyxPQUFPLEVBQUU7SUFDaEIsSUFBSSxLQUFZLENBQUM7SUFDakIsSUFBSSxTQUFjLENBQUM7SUFFbkIsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztTQUNwRCxDQUFDO1FBQ0YsS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsK0ZBQStGO0lBQy9GLGdHQUFnRztJQUNoRyx1QkFBdUI7SUFDdkIsUUFBUSxDQUFDLGlDQUFpQyxFQUFFO1FBQzFDLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxLQUFLO1lBQ3ZDLE1BQU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNwSCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLO1lBQ3pDLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSztZQUN6QyxNQUFNLEtBQUs7aUJBQ1IsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztpQkFDOUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxLQUFLO1lBQ3ZDLE1BQU0sS0FBSztpQkFDUixZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUNuQixRQUFRLEVBQUU7b0JBQ1IsR0FBRyxFQUFFO3dCQUNILGlCQUFpQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7d0JBQ2xDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO3dCQUN6QixRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQzt3QkFDekIsZUFBZSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7cUJBQ2pDO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEtBQUs7WUFDL0IsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLO1lBQzlCLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyw2QkFBNkIsRUFBRTtRQUN0QyxFQUFFLENBQUMsbURBQW1ELEVBQUU7WUFDdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxnQkFBVSxDQUFDLFNBQVMsRUFBRSxFQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBFbnRlcnByaXNlLCBTYWZlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdTYWZlcycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHNhZmVzOiBTYWZlcztcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIHVybDogc2lub24uc3R1YigpLmNhbGxzRmFrZSgocGF0aDogc3RyaW5nKSA9PiBwYXRoKSxcbiAgICB9O1xuICAgIHNhZmVzID0gbmV3IFNhZmVzKG1vY2tCaXRHbywgJ3Rlc3QtZW50ZXJwcmlzZS1pZCcpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgLy8gUGhhc2UgMiAoZ2VuZXJhdGVTYWZlL2luaXRpYWxpemUvY3JlYXRlU2FmZUtleXMvZmluYWxpemUpIGFuZCBQaGFzZSAzIChsaXN0L2dldCkgYXJlIG5vdCB5ZXRcbiAgLy8gaW1wbGVtZW50ZWQg4oCUIHRoZXkgYXJlIGdhdGVkIG9uIFdDTi0xMTc1IC8gV0NOLTExNzYgLyBXQ04tMTE3Ny4gQXNzZXJ0IHRoZSBpbnRlcmZhY2UgaXMgd2lyZWRcbiAgLy8gYW5kIHN0dWJiZWQgZm9yIG5vdy5cbiAgZGVzY3JpYmUoJ3VuaW1wbGVtZW50ZWQgbGlmZWN5Y2xlIG1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2dlbmVyYXRlU2FmZSB0aHJvd3MgKFBoYXNlIDIpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZXMuZ2VuZXJhdGVTYWZlKHsgbGFiZWw6ICd2JywgcGFzc3BocmFzZTogJ3AnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQgLipQaGFzZSAyLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaW5pdGlhbGl6ZVNhZmUgdGhyb3dzIChQaGFzZSAyKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVzLmluaXRpYWxpemVTYWZlKHsgbGFiZWw6ICd2JyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9ub3QgeWV0IGltcGxlbWVudGVkIC4qUGhhc2UgMi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZVNhZmVLZXlzIHRocm93cyAoUGhhc2UgMiknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlc1xuICAgICAgICAuY3JlYXRlU2FmZUtleXMoeyBsYWJlbDogJ3YnLCBwYXNzcGhyYXNlOiAncCcsIHNhZmVJZDogJ3ZpZCcgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQgLipQaGFzZSAyLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZmluYWxpemVTYWZlIHRocm93cyAoUGhhc2UgMiknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlc1xuICAgICAgICAuZmluYWxpemVTYWZlKCd2aWQnLCB7XG4gICAgICAgICAgcm9vdEtleXM6IHtcbiAgICAgICAgICAgIGhvdDoge1xuICAgICAgICAgICAgICBzZWNwMjU2azFNdWx0aXNpZzogWyd1JywgJ2InLCAnZyddLFxuICAgICAgICAgICAgICBlY2RzYU1wYzogWyd1JywgJ2InLCAnZyddLFxuICAgICAgICAgICAgICBlZGRzYU1wYzogWyd1JywgJ2InLCAnZyddLFxuICAgICAgICAgICAgICBlZDI1NTE5TXVsdGlzaWc6IFsndScsICdiJywgJ2cnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQgLipQaGFzZSAyLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbGlzdCB0aHJvd3MgKFBoYXNlIDMpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZXMubGlzdCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQgLipQaGFzZSAzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZ2V0IHRocm93cyAoUGhhc2UgMyknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlcy5nZXQoeyBpZDogJ3ZpZCcgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbm90IHlldCBpbXBsZW1lbnRlZCAuKlBoYXNlIDMvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0VudGVycHJpc2Uuc2FmZXMoKSBhY2Nlc3NvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyBhIFNhZmVzIGluc3RhbmNlIHNjb3BlZCB0byB0aGUgZW50ZXJwcmlzZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVudGVycHJpc2UgPSBuZXcgRW50ZXJwcmlzZShtb2NrQml0R28sIHt9IGFzIGFueSwgeyBpZDogJ2VudC1pZCcsIG5hbWU6ICdlbnQnIH0pO1xuICAgICAgZW50ZXJwcmlzZS5zYWZlcygpLnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmVzKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|