@bitgo-beta/key-card 0.0.1-beta.191 → 0.0.1-beta.1910
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/drawKeycard.d.ts +3 -10
- package/dist/src/drawKeycard.d.ts.map +1 -1
- package/dist/src/drawKeycard.js +105 -26
- package/dist/src/faq.d.ts +2 -4
- package/dist/src/faq.d.ts.map +1 -1
- package/dist/src/faq.js +16 -3
- package/dist/src/generateParamsForKeyCreation.d.ts +3 -0
- package/dist/src/generateParamsForKeyCreation.d.ts.map +1 -0
- package/dist/src/generateParamsForKeyCreation.js +72 -0
- package/dist/src/generateQrData.d.ts +11 -27
- package/dist/src/generateQrData.d.ts.map +1 -1
- package/dist/src/generateQrData.js +136 -19
- package/dist/src/index.d.ts +3 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +40 -9
- package/dist/src/types.d.ts +65 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/src/utils.js +2 -3
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +9 -6
|
@@ -1,8 +1,44 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateQrData =
|
|
36
|
+
exports.generateQrData = generateQrData;
|
|
37
|
+
exports.generateQrDataAsync = generateQrDataAsync;
|
|
38
|
+
exports.generateLightningQrData = generateLightningQrData;
|
|
39
|
+
exports.generateLightningQrDataAsync = generateLightningQrDataAsync;
|
|
4
40
|
const sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
5
|
-
const assert = require("assert");
|
|
41
|
+
const assert = __importStar(require("assert"));
|
|
6
42
|
function getPubFromKey(key) {
|
|
7
43
|
switch (key.type) {
|
|
8
44
|
case 'blsdkg':
|
|
@@ -14,6 +50,13 @@ function getPubFromKey(key) {
|
|
|
14
50
|
}
|
|
15
51
|
}
|
|
16
52
|
function generateUserQrData(userKeychain, userMasterKey) {
|
|
53
|
+
if (userKeychain.reducedEncryptedPrv) {
|
|
54
|
+
return {
|
|
55
|
+
title: 'A: User Key',
|
|
56
|
+
description: 'This is your private key, encrypted with your wallet password.',
|
|
57
|
+
data: userKeychain.reducedEncryptedPrv,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
17
60
|
if (userKeychain.encryptedPrv) {
|
|
18
61
|
return {
|
|
19
62
|
title: 'A: User Key',
|
|
@@ -22,7 +65,7 @@ function generateUserQrData(userKeychain, userMasterKey) {
|
|
|
22
65
|
};
|
|
23
66
|
}
|
|
24
67
|
const pub = getPubFromKey(userKeychain);
|
|
25
|
-
assert(pub);
|
|
68
|
+
assert.ok(pub);
|
|
26
69
|
return {
|
|
27
70
|
title: 'A: Provided User Key',
|
|
28
71
|
description: 'This is the public key you provided for your wallet.',
|
|
@@ -31,8 +74,14 @@ function generateUserQrData(userKeychain, userMasterKey) {
|
|
|
31
74
|
};
|
|
32
75
|
}
|
|
33
76
|
function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupMasterKey, } = {}) {
|
|
34
|
-
var _a;
|
|
35
77
|
const title = 'B: Backup Key';
|
|
78
|
+
if (backupKeychain.reducedEncryptedPrv) {
|
|
79
|
+
return {
|
|
80
|
+
title,
|
|
81
|
+
description: 'This is your backup private key, encrypted with your wallet password.',
|
|
82
|
+
data: backupKeychain.reducedEncryptedPrv,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
36
85
|
if (backupKeychain.encryptedPrv) {
|
|
37
86
|
return {
|
|
38
87
|
title,
|
|
@@ -41,8 +90,8 @@ function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupM
|
|
|
41
90
|
};
|
|
42
91
|
}
|
|
43
92
|
if (backupKeyProvider === 'BitGo Trust' && backupKeychain.type === 'tss') {
|
|
44
|
-
const keyShares =
|
|
45
|
-
assert(
|
|
93
|
+
const keyShares = backupKeychain.keyShares?.filter((keyShare) => keyShare.to === 'backup');
|
|
94
|
+
assert.ok(keyShares?.length === 2);
|
|
46
95
|
return {
|
|
47
96
|
title: 'B: Backup Key Shares',
|
|
48
97
|
description: `These are the key shares for ${backupKeyProvider}. If BitGo Inc. goes out of business,\r\n` +
|
|
@@ -51,7 +100,7 @@ function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupM
|
|
|
51
100
|
};
|
|
52
101
|
}
|
|
53
102
|
const pub = getPubFromKey(backupKeychain);
|
|
54
|
-
assert(pub);
|
|
103
|
+
assert.ok(pub);
|
|
55
104
|
if (backupKeyProvider) {
|
|
56
105
|
return {
|
|
57
106
|
title: 'B: Backup Key',
|
|
@@ -69,31 +118,99 @@ function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupM
|
|
|
69
118
|
}
|
|
70
119
|
function generateBitGoQrData(bitgoKeychain) {
|
|
71
120
|
const bitgoData = getPubFromKey(bitgoKeychain);
|
|
72
|
-
assert(bitgoData);
|
|
121
|
+
assert.ok(bitgoData);
|
|
73
122
|
return {
|
|
74
123
|
title: 'C: BitGo Public Key',
|
|
75
124
|
description: 'This is the public part of the key that BitGo will use to ' + 'co-sign transactions\r\nwith you on your wallet.',
|
|
76
125
|
data: bitgoData,
|
|
77
126
|
};
|
|
78
127
|
}
|
|
79
|
-
function
|
|
80
|
-
|
|
128
|
+
function generateUserMasterPublicKeyQRData(publicKey) {
|
|
129
|
+
return {
|
|
130
|
+
title: 'E: Master User Public Key',
|
|
131
|
+
description: 'This is the public key used to derive the user key for the wallet. This is not stored by BitGo, and may be required for use in recovery scenarios.',
|
|
132
|
+
data: publicKey,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function generatePasscodeQrData(passphrase, passcodeEncryptionCode) {
|
|
136
|
+
const encryptedWalletPasscode = (0, sdk_api_1.encrypt)(passcodeEncryptionCode, passphrase);
|
|
137
|
+
return {
|
|
138
|
+
title: 'D: Encrypted wallet Password',
|
|
139
|
+
description: 'This is the wallet password, encrypted client-side with a key held by BitGo.',
|
|
140
|
+
data: encryptedWalletPasscode,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
async function generatePasscodeQrDataAsync(passphrase, passcodeEncryptionCode) {
|
|
144
|
+
const encryptedWalletPasscode = await (0, sdk_api_1.encryptAsync)(passcodeEncryptionCode, passphrase);
|
|
145
|
+
return {
|
|
146
|
+
title: 'D: Encrypted wallet Password',
|
|
147
|
+
description: 'This is the wallet password, encrypted client-side with a key held by BitGo.',
|
|
148
|
+
data: encryptedWalletPasscode,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function generateBackupMasterPublicKeyQRData(publicKey) {
|
|
152
|
+
return {
|
|
153
|
+
title: 'F: Master Backup Public Key',
|
|
154
|
+
description: 'This is the public key used to derive the backup key for the wallet. This is not stored by BitGo, and may be required for use in recovery scenarios.',
|
|
155
|
+
data: publicKey,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function buildWalletQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, userKeychain, userMasterKey, userMasterPublicKey, backupMasterPublicKey, }) {
|
|
159
|
+
return {
|
|
81
160
|
user: generateUserQrData(userKeychain, userMasterKey),
|
|
161
|
+
userMasterPublicKey: userMasterPublicKey ? generateUserMasterPublicKeyQRData(userMasterPublicKey) : undefined,
|
|
82
162
|
backup: generateBackupQrData(coin, backupKeychain, {
|
|
83
163
|
backupKeyProvider,
|
|
84
164
|
backupMasterKey,
|
|
85
165
|
}),
|
|
166
|
+
backupMasterPublicKey: backupMasterPublicKey
|
|
167
|
+
? generateBackupMasterPublicKeyQRData(backupMasterPublicKey)
|
|
168
|
+
: undefined,
|
|
86
169
|
bitgo: generateBitGoQrData(bitgoKeychain),
|
|
87
170
|
};
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
171
|
+
}
|
|
172
|
+
function buildLightningQrData({ userAuthKeychain }) {
|
|
173
|
+
assert.ok(userAuthKeychain.encryptedPrv, 'userAuthKeychain must have an encryptedPrv');
|
|
174
|
+
return {
|
|
175
|
+
user: {
|
|
176
|
+
title: 'A: User Auth Key',
|
|
177
|
+
description: 'This is your user authentication private key, encrypted with your wallet password.\r\nIt is used to authenticate payment and wallet operations.',
|
|
178
|
+
data: userAuthKeychain.encryptedPrv,
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
function generateQrData(params) {
|
|
183
|
+
const qrData = buildWalletQrData(params);
|
|
184
|
+
if (params.passphrase && params.passcodeEncryptionCode) {
|
|
185
|
+
qrData.passcode = generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode);
|
|
95
186
|
}
|
|
96
187
|
return qrData;
|
|
97
188
|
}
|
|
98
|
-
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVRckRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVRckRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsaURBQThDO0FBQzlDLGlDQUFpQztBQXlDakMsU0FBUyxhQUFhLENBQUMsR0FBYTtJQUNsQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUU7UUFDaEIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3ZCLEtBQUssS0FBSztZQUNSLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztRQUM1QixLQUFLLGFBQWE7WUFDaEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsWUFBc0IsRUFBRSxhQUFzQjtJQUN4RSxJQUFJLFlBQVksQ0FBQyxZQUFZLEVBQUU7UUFDN0IsT0FBTztZQUNMLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFBRSxnRUFBZ0U7WUFDN0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7S0FDSDtJQUVELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFWixPQUFPO1FBQ0wsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLElBQUksRUFBRSxHQUFHO1FBQ1QsZUFBZSxFQUFFLGFBQWE7S0FDL0IsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUMzQixJQUF3QixFQUN4QixjQUF3QixFQUN4QixFQUNFLGlCQUFpQixFQUNqQixlQUFlLE1BSWIsRUFBRTs7SUFFTixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDOUIsSUFBSSxjQUFjLENBQUMsWUFBWSxFQUFFO1FBQy9CLE9BQU87WUFDTCxLQUFLO1lBQ0wsV0FBVyxFQUFFLHVFQUF1RTtZQUNwRixJQUFJLEVBQUUsY0FBYyxDQUFDLFlBQVk7U0FDbEMsQ0FBQztLQUNIO0lBRUQsSUFBSSxpQkFBaUIsS0FBSyxhQUFhLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7UUFDeEUsTUFBTSxTQUFTLEdBQUcsTUFBQSxjQUFjLENBQUMsU0FBUywwQ0FBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDM0YsTUFBTSxDQUFDLENBQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLE1BQU0sTUFBSyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPO1lBQ0wsS0FBSyxFQUFFLHNCQUFzQjtZQUM3QixXQUFXLEVBQ1QsZ0NBQWdDLGlCQUFpQiwyQ0FBMkM7Z0JBQzVGLFdBQVcsaUJBQWlCLDZDQUE2QztZQUMzRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7U0FDaEMsQ0FBQztLQUNIO0lBRUQsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVaLElBQUksaUJBQWlCLEVBQUU7UUFDckIsT0FBTztZQUNMLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFdBQVcsRUFDVCxrQ0FBa0MsaUJBQWlCLFFBQVEsSUFBSSxDQUFDLElBQUkscUJBQXFCO2dCQUN6Riw0QkFBNEIsaUJBQWlCLHNEQUFzRDtZQUNyRyxJQUFJLEVBQUUsR0FBRztTQUNWLENBQUM7S0FDSDtJQUVELE9BQU87UUFDTCxLQUFLLEVBQUUsd0JBQXdCO1FBQy9CLFdBQVcsRUFBRSxzREFBc0Q7UUFDbkUsSUFBSSxFQUFFLEdBQUc7UUFDVCxlQUFlLEVBQUUsZUFBZTtLQUNqQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsYUFBdUI7SUFDbEQsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVsQixPQUFPO1FBQ0wsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQ1QsNERBQTRELEdBQUcsa0RBQWtEO1FBQ25ILElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEVBQzdCLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGFBQWEsRUFDYixJQUFJLEVBQ0osc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxHQUNRO0lBQ3JCLE1BQU0sTUFBTSxHQUFXO1FBQ3JCLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO1FBQ3JELE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ2pELGlCQUFpQjtZQUNqQixlQUFlO1NBQ2hCLENBQUM7UUFDRixLQUFLLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxDQUFDO0tBQzFDLENBQUM7SUFFRixJQUFJLFVBQVUsSUFBSSxzQkFBc0IsRUFBRTtRQUN4QyxNQUFNLHVCQUF1QixHQUFHLGlCQUFPLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFNUUsTUFBTSxDQUFDLFFBQVEsR0FBRztZQUNoQixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLFdBQVcsRUFBRSw4RUFBOEU7WUFDM0YsSUFBSSxFQUFFLHVCQUF1QjtTQUM5QixDQUFDO0tBQ0g7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBL0JELHdDQStCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGVuY3J5cHQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlUXJEYXRhUGFyYW1zIHtcbiAgLy8gVGhlIGJhY2t1cCBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIC8vIFRoZSBuYW1lIG9mIHRoZSAzcmQgcGFydHkgcHJvdmlkZXIgb2YgdGhlIGJhY2t1cCBrZXkgaWYgbmVpdGhlciB0aGUgdXNlciBub3IgQml0R28gc3RvcmVzIGl0XG4gIGJhY2t1cEtleVByb3ZpZGVyPzogc3RyaW5nO1xuICAvLyBUaGUga2V5IGlkIG9mIHRoZSBiYWNrdXAga2V5LCBvbmx5IHVzZWQgZm9yIGNvbGQga2V5c1xuICBiYWNrdXBNYXN0ZXJLZXk/OiBzdHJpbmc7XG4gIC8vIFRoZSBCaXRHbyBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiaXRnb0tleWNoYWluOiBLZXljaGFpbjtcbiAgLy8gVGhlIGNvaW4gb2YgdGhlIHdhbGxldCB0aGF0IHdhcy8gaXMgYWJvdXQgdG8gYmUgY3JlYXRlZFxuICBjb2luOiBSZWFkb25seTxCYXNlQ29pbj47XG4gIC8vIEEgY29kZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIHdhbGxldCBwYXNzd29yZCB0by5cbiAgLy8gSWYgYm90aCB0aGUgcGFzc3BocmFzZSBhbmQgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSBhcmUgcGFzc2VkLCB0aGVuIHRoaXMgY29kZSBlbmNyeXB0cyB0aGUgcGFzc3BocmFzZSB3aXRoIHRoZVxuICAvLyBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFuZCBwdXRzIHRoZSByZXN1bHQgaW50byBCb3ggRC4gQWxsb3dzIHJlY292ZXJpZXMgb2YgdGhlIHdhbGxldCBwYXNzd29yZC5cbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgLy8gVGhlIHdhbGxldCBwYXNzd29yZFxuICAvLyBJZiBib3RoIHRoZSBwYXNzcGhyYXNlIGFuZCBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFyZSBwYXNzZWQsIHRoZW4gdGhpcyBjb2RlIGVuY3J5cHRzIHRoZSBwYXNzcGhyYXNlIHdpdGggdGhlXG4gIC8vIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbnRvIEJveCBELiBBbGxvd3MgcmVjb3ZlcmllcyBvZiB0aGUgd2FsbGV0IHBhc3N3b3JkLlxuICBwYXNzcGhyYXNlPzogc3RyaW5nO1xuICAvLyBUaGUgdXNlciBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICB1c2VyS2V5Y2hhaW46IEtleWNoYWluO1xuICAvLyBUaGUga2V5IGlkIG9mIHRoZSB1c2VyIGtleSwgb25seSB1c2VkIGZvciBjb2xkIGtleXNcbiAgdXNlck1hc3RlcktleT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFFyRGF0YUVudHJ5IHtcbiAgZGF0YTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwdWJsaWNNYXN0ZXJLZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXJEYXRhIHtcbiAgYmFja3VwPzogUXJEYXRhRW50cnk7XG4gIGJpdGdvPzogUXJEYXRhRW50cnk7XG4gIHBhc3Njb2RlPzogUXJEYXRhRW50cnk7XG4gIHVzZXI6IFFyRGF0YUVudHJ5O1xufVxuXG5mdW5jdGlvbiBnZXRQdWJGcm9tS2V5KGtleTogS2V5Y2hhaW4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKGtleS50eXBlKSB7XG4gICAgY2FzZSAnYmxzZGtnJzpcbiAgICAgIHJldHVybiBrZXkuY29tbW9uUHViO1xuICAgIGNhc2UgJ3Rzcyc6XG4gICAgICByZXR1cm4ga2V5LmNvbW1vbktleWNoYWluO1xuICAgIGNhc2UgJ2luZGVwZW5kZW50JzpcbiAgICAgIHJldHVybiBrZXkucHViO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVXNlclFyRGF0YSh1c2VyS2V5Y2hhaW46IEtleWNoYWluLCB1c2VyTWFzdGVyS2V5Pzogc3RyaW5nKTogUXJEYXRhRW50cnkge1xuICBpZiAodXNlcktleWNoYWluLmVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC4nLFxuICAgICAgZGF0YTogdXNlcktleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHViID0gZ2V0UHViRnJvbUtleSh1c2VyS2V5Y2hhaW4pO1xuICBhc3NlcnQocHViKTtcblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQTogUHJvdmlkZWQgVXNlciBLZXknLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB5b3UgcHJvdmlkZWQgZm9yIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogcHViLFxuICAgIHB1YmxpY01hc3RlcktleTogdXNlck1hc3RlcktleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVCYWNrdXBRckRhdGEoXG4gIGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPixcbiAgYmFja3VwS2V5Y2hhaW46IEtleWNoYWluLFxuICB7XG4gICAgYmFja3VwS2V5UHJvdmlkZXIsXG4gICAgYmFja3VwTWFzdGVyS2V5LFxuICB9OiB7XG4gICAgYmFja3VwS2V5UHJvdmlkZXI/OiBzdHJpbmc7XG4gICAgYmFja3VwTWFzdGVyS2V5Pzogc3RyaW5nO1xuICB9ID0ge31cbik6IFFyRGF0YUVudHJ5IHtcbiAgY29uc3QgdGl0bGUgPSAnQjogQmFja3VwIEtleSc7XG4gIGlmIChiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChiYWNrdXBLZXlQcm92aWRlciA9PT0gJ0JpdEdvIFRydXN0JyAmJiBiYWNrdXBLZXljaGFpbi50eXBlID09PSAndHNzJykge1xuICAgIGNvbnN0IGtleVNoYXJlcyA9IGJhY2t1cEtleWNoYWluLmtleVNoYXJlcz8uZmlsdGVyKChrZXlTaGFyZSkgPT4ga2V5U2hhcmUudG8gPT09ICdiYWNrdXAnKTtcbiAgICBhc3NlcnQoa2V5U2hhcmVzPy5sZW5ndGggPT09IDIpO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXkgU2hhcmVzJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBgVGhlc2UgYXJlIHRoZSBrZXkgc2hhcmVzIGZvciAke2JhY2t1cEtleVByb3ZpZGVyfS4gSWYgQml0R28gSW5jLiBnb2VzIG91dCBvZiBidXNpbmVzcyxcXHJcXG5gICtcbiAgICAgICAgYGNvbnRhY3QgJHtiYWNrdXBLZXlQcm92aWRlcn0gYW5kIHRoZXkgd2lsbCBoZWxwIHlvdSByZWNvdmVyIHlvdXIgZnVuZHMuYCxcbiAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGtleVNoYXJlcyksXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHB1YiA9IGdldFB1YkZyb21LZXkoYmFja3VwS2V5Y2hhaW4pO1xuICBhc3NlcnQocHViKTtcblxuICBpZiAoYmFja3VwS2V5UHJvdmlkZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBgVGhpcyBpcyB0aGUgcHVibGljIGtleSBoZWxkIGF0ICR7YmFja3VwS2V5UHJvdmlkZXJ9LCBhbiAke2NvaW4ubmFtZX0gcmVjb3Zlcnkgc2VydmljZS4gYCArXG4gICAgICAgIGBJZiB5b3UgbG9zZVxcclxcbnlvdXIga2V5LCAke2JhY2t1cEtleVByb3ZpZGVyfSB3aWxsIGJlIGFibGUgdG8gc2lnbiB0cmFuc2FjdGlvbnMgdG8gcmVjb3ZlciBmdW5kcy5gLFxuICAgICAgZGF0YTogcHViLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQjogUHJvdmlkZWQgQmFja3VwIEtleScsXG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHlvdSBwcm92aWRlZCBmb3IgeW91ciB3YWxsZXQuJyxcbiAgICBkYXRhOiBwdWIsXG4gICAgcHVibGljTWFzdGVyS2V5OiBiYWNrdXBNYXN0ZXJLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQml0R29RckRhdGEoYml0Z29LZXljaGFpbjogS2V5Y2hhaW4pOiBRckRhdGFFbnRyeSB7XG4gIGNvbnN0IGJpdGdvRGF0YSA9IGdldFB1YkZyb21LZXkoYml0Z29LZXljaGFpbik7XG4gIGFzc2VydChiaXRnb0RhdGEpO1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdDOiBCaXRHbyBQdWJsaWMgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGlzIGlzIHRoZSBwdWJsaWMgcGFydCBvZiB0aGUga2V5IHRoYXQgQml0R28gd2lsbCB1c2UgdG8gJyArICdjby1zaWduIHRyYW5zYWN0aW9uc1xcclxcbndpdGggeW91IG9uIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogYml0Z29EYXRhLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVRckRhdGEoe1xuICBiYWNrdXBLZXljaGFpbixcbiAgYmFja3VwS2V5UHJvdmlkZXIsXG4gIGJhY2t1cE1hc3RlcktleSxcbiAgYml0Z29LZXljaGFpbixcbiAgY29pbixcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgcGFzc3BocmFzZSxcbiAgdXNlcktleWNoYWluLFxuICB1c2VyTWFzdGVyS2V5LFxufTogR2VuZXJhdGVRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICBjb25zdCBxckRhdGE6IFFyRGF0YSA9IHtcbiAgICB1c2VyOiBnZW5lcmF0ZVVzZXJRckRhdGEodXNlcktleWNoYWluLCB1c2VyTWFzdGVyS2V5KSxcbiAgICBiYWNrdXA6IGdlbmVyYXRlQmFja3VwUXJEYXRhKGNvaW4sIGJhY2t1cEtleWNoYWluLCB7XG4gICAgICBiYWNrdXBLZXlQcm92aWRlcixcbiAgICAgIGJhY2t1cE1hc3RlcktleSxcbiAgICB9KSxcbiAgICBiaXRnbzogZ2VuZXJhdGVCaXRHb1FyRGF0YShiaXRnb0tleWNoYWluKSxcbiAgfTtcblxuICBpZiAocGFzc3BocmFzZSAmJiBwYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgY29uc3QgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUgPSBlbmNyeXB0KHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsIHBhc3NwaHJhc2UpO1xuXG4gICAgcXJEYXRhLnBhc3Njb2RlID0ge1xuICAgICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgd2FsbGV0IFBhc3N3b3JkJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgd2FsbGV0IHBhc3N3b3JkLCBlbmNyeXB0ZWQgY2xpZW50LXNpZGUgd2l0aCBhIGtleSBoZWxkIGJ5IEJpdEdvLicsXG4gICAgICBkYXRhOiBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHFyRGF0YTtcbn1cbiJdfQ==
|
|
189
|
+
/**
|
|
190
|
+
* Async version of {@link generateQrData} with v1/v2 auto-detect encrypt for Box D via `encryptAsync`.
|
|
191
|
+
*/
|
|
192
|
+
async function generateQrDataAsync(params) {
|
|
193
|
+
const qrData = buildWalletQrData(params);
|
|
194
|
+
if (params.passphrase && params.passcodeEncryptionCode) {
|
|
195
|
+
qrData.passcode = await generatePasscodeQrDataAsync(params.passphrase, params.passcodeEncryptionCode);
|
|
196
|
+
}
|
|
197
|
+
return qrData;
|
|
198
|
+
}
|
|
199
|
+
function generateLightningQrData(params) {
|
|
200
|
+
const qrData = buildLightningQrData(params);
|
|
201
|
+
if (params.passphrase && params.passcodeEncryptionCode) {
|
|
202
|
+
qrData.passcode = generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode);
|
|
203
|
+
}
|
|
204
|
+
return qrData;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Async version of {@link generateLightningQrData} with v1/v2 auto-detect encrypt for Box D via `encryptAsync`.
|
|
208
|
+
*/
|
|
209
|
+
async function generateLightningQrDataAsync(params) {
|
|
210
|
+
const qrData = buildLightningQrData(params);
|
|
211
|
+
if (params.passphrase && params.passcodeEncryptionCode) {
|
|
212
|
+
qrData.passcode = await generatePasscodeQrDataAsync(params.passphrase, params.passcodeEncryptionCode);
|
|
213
|
+
}
|
|
214
|
+
return qrData;
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVRckRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVRckRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvTUEsd0NBUUM7QUFLRCxrREFRQztBQUVELDBEQVFDO0FBS0Qsb0VBUUM7QUE5T0QsaURBQTREO0FBQzVELCtDQUFpQztBQVNqQyxTQUFTLGFBQWEsQ0FBQyxHQUFhO0lBQ2xDLFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLEtBQUssUUFBUTtZQUNYLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUN2QixLQUFLLEtBQUs7WUFDUixPQUFPLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDNUIsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsWUFBc0IsRUFBRSxhQUFzQjtJQUN4RSxJQUFJLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JDLE9BQU87WUFDTCxLQUFLLEVBQUUsYUFBYTtZQUNwQixXQUFXLEVBQUUsZ0VBQWdFO1lBQzdFLElBQUksRUFBRSxZQUFZLENBQUMsbUJBQW1CO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUIsT0FBTztZQUNMLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFBRSxnRUFBZ0U7WUFDN0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFZixPQUFPO1FBQ0wsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixX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RUFBRSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLDRCQUE0QixDQUFDLE1BQXFDO0lBQ3RGLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTVDLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sMkJBQTJCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGVuY3J5cHQsIGVuY3J5cHRBc3luYyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBHZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YVBhcmFtcyxcbiAgR2VuZXJhdGVRckRhdGFQYXJhbXMsXG4gIE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5LFxuICBRckRhdGEsXG4gIFFyRGF0YUVudHJ5LFxufSBmcm9tICcuL3R5cGVzJztcblxuZnVuY3Rpb24gZ2V0UHViRnJvbUtleShrZXk6IEtleWNoYWluKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChrZXkudHlwZSkge1xuICAgIGNhc2UgJ2Jsc2RrZyc6XG4gICAgICByZXR1cm4ga2V5LmNvbW1vblB1YjtcbiAgICBjYXNlICd0c3MnOlxuICAgICAgcmV0dXJuIGtleS5jb21tb25LZXljaGFpbjtcbiAgICBjYXNlICdpbmRlcGVuZGVudCc6XG4gICAgICByZXR1cm4ga2V5LnB1YjtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVVzZXJRckRhdGEodXNlcktleWNoYWluOiBLZXljaGFpbiwgdXNlck1hc3RlcktleT86IHN0cmluZyk6IFFyRGF0YUVudHJ5IHtcbiAgaWYgKHVzZXJLZXljaGFpbi5yZWR1Y2VkRW5jcnlwdGVkUHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBLZXknLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHlvdXIgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4ucmVkdWNlZEVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG4gIGlmICh1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBLZXknLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHlvdXIgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cblxuICBjb25zdCBwdWIgPSBnZXRQdWJGcm9tS2V5KHVzZXJLZXljaGFpbik7XG4gIGFzc2VydC5vayhwdWIpO1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdBOiBQcm92aWRlZCBVc2VyIEtleScsXG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHlvdSBwcm92aWRlZCBmb3IgeW91ciB3YWxsZXQuJyxcbiAgICBkYXRhOiBwdWIsXG4gICAgcHVibGljTWFzdGVyS2V5OiB1c2VyTWFzdGVyS2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUJhY2t1cFFyRGF0YShcbiAgY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LFxuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW4sXG4gIHtcbiAgICBiYWNrdXBLZXlQcm92aWRlcixcbiAgICBiYWNrdXBNYXN0ZXJLZXksXG4gIH06IHtcbiAgICBiYWNrdXBLZXlQcm92aWRlcj86IHN0cmluZztcbiAgICBiYWNrdXBNYXN0ZXJLZXk/OiBzdHJpbmc7XG4gIH0gPSB7fVxuKTogUXJEYXRhRW50cnkge1xuICBjb25zdCB0aXRsZSA9ICdCOiBCYWNrdXAgS2V5JztcbiAgaWYgKGJhY2t1cEtleWNoYWluLnJlZHVjZWRFbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5yZWR1Y2VkRW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cbiAgaWYgKGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIGJhY2t1cCBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG5cbiAgaWYgKGJhY2t1cEtleVByb3ZpZGVyID09PSAnQml0R28gVHJ1c3QnICYmIGJhY2t1cEtleWNoYWluLnR5cGUgPT09ICd0c3MnKSB7XG4gICAgY29uc3Qga2V5U2hhcmVzID0gYmFja3VwS2V5Y2hhaW4ua2V5U2hhcmVzPy5maWx0ZXIoKGtleVNoYXJlKSA9PiBrZXlTaGFyZS50byA9PT0gJ2JhY2t1cCcpO1xuICAgIGFzc2VydC5vayhrZXlTaGFyZXM/Lmxlbmd0aCA9PT0gMik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleSBTaGFyZXMnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIGBUaGVzZSBhcmUgdGhlIGtleSBzaGFyZXMgZm9yICR7YmFja3VwS2V5UHJvdmlkZXJ9LiBJZiBCaXRHbyBJbmMuIGdvZXMgb3V0IG9mIGJ1c2luZXNzLFxcclxcbmAgK1xuICAgICAgICBgY29udGFjdCAke2JhY2t1cEtleVByb3ZpZGVyfSBhbmQgdGhleSB3aWxsIGhlbHAgeW91IHJlY292ZXIgeW91ciBmdW5kcy5gLFxuICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoa2V5U2hhcmVzKSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHViID0gZ2V0UHViRnJvbUtleShiYWNrdXBLZXljaGFpbik7XG4gIGFzc2VydC5vayhwdWIpO1xuXG4gIGlmIChiYWNrdXBLZXlQcm92aWRlcikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIGBUaGlzIGlzIHRoZSBwdWJsaWMga2V5IGhlbGQgYXQgJHtiYWNrdXBLZXlQcm92aWRlcn0sIGFuICR7Y29pbi5uYW1lfSByZWNvdmVyeSBzZXJ2aWNlLiBgICtcbiAgICAgICAgYElmIHlvdSBsb3NlXFxyXFxueW91ciBrZXksICR7YmFja3VwS2V5UHJvdmlkZXJ9IHdpbGwgYmUgYWJsZSB0byBzaWduIHRyYW5zYWN0aW9ucyB0byByZWNvdmVyIGZ1bmRzLmAsXG4gICAgICBkYXRhOiBwdWIsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdCOiBQcm92aWRlZCBCYWNrdXAgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nLFxuICAgIGRhdGE6IHB1YixcbiAgICBwdWJsaWNNYXN0ZXJLZXk6IGJhY2t1cE1hc3RlcktleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVCaXRHb1FyRGF0YShiaXRnb0tleWNoYWluOiBLZXljaGFpbik6IFFyRGF0YUVudHJ5IHtcbiAgY29uc3QgYml0Z29EYXRhID0gZ2V0UHViRnJvbUtleShiaXRnb0tleWNoYWluKTtcbiAgYXNzZXJ0Lm9rKGJpdGdvRGF0YSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0M6IEJpdEdvIFB1YmxpYyBLZXknLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgdGhhdCBCaXRHbyB3aWxsIHVzZSB0byAnICsgJ2NvLXNpZ24gdHJhbnNhY3Rpb25zXFxyXFxud2l0aCB5b3Ugb24geW91ciB3YWxsZXQuJyxcbiAgICBkYXRhOiBiaXRnb0RhdGEsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVXNlck1hc3RlclB1YmxpY0tleVFSRGF0YShwdWJsaWNLZXk6IHN0cmluZyk6IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5IHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0U6IE1hc3RlciBVc2VyIFB1YmxpYyBLZXknLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIHVzZXIga2V5IGZvciB0aGUgd2FsbGV0LiBUaGlzIGlzIG5vdCBzdG9yZWQgYnkgQml0R28sIGFuZCBtYXkgYmUgcmVxdWlyZWQgZm9yIHVzZSBpbiByZWNvdmVyeSBzY2VuYXJpb3MuJyxcbiAgICBkYXRhOiBwdWJsaWNLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlUGFzc2NvZGVRckRhdGEocGFzc3BocmFzZTogc3RyaW5nLCBwYXNzY29kZUVuY3J5cHRpb25Db2RlOiBzdHJpbmcpOiBRckRhdGFFbnRyeSB7XG4gIGNvbnN0IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlID0gZW5jcnlwdChwYXNzY29kZUVuY3J5cHRpb25Db2RlLCBwYXNzcGhyYXNlKTtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0Q6IEVuY3J5cHRlZCB3YWxsZXQgUGFzc3dvcmQnLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgd2FsbGV0IHBhc3N3b3JkLCBlbmNyeXB0ZWQgY2xpZW50LXNpZGUgd2l0aCBhIGtleSBoZWxkIGJ5IEJpdEdvLicsXG4gICAgZGF0YTogZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlUGFzc2NvZGVRckRhdGFBc3luYyhwYXNzcGhyYXNlOiBzdHJpbmcsIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGU6IHN0cmluZyk6IFByb21pc2U8UXJEYXRhRW50cnk+IHtcbiAgY29uc3QgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUgPSBhd2FpdCBlbmNyeXB0QXN5bmMocGFzc2NvZGVFbmNyeXB0aW9uQ29kZSwgcGFzc3BocmFzZSk7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgd2FsbGV0IFBhc3N3b3JkJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHdhbGxldCBwYXNzd29yZCwgZW5jcnlwdGVkIGNsaWVudC1zaWRlIHdpdGggYSBrZXkgaGVsZCBieSBCaXRHby4nLFxuICAgIGRhdGE6IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUJhY2t1cE1hc3RlclB1YmxpY0tleVFSRGF0YShwdWJsaWNLZXk6IHN0cmluZyk6IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5IHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0Y6IE1hc3RlciBCYWNrdXAgUHVibGljIEtleScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgYmFja3VwIGtleSBmb3IgdGhlIHdhbGxldC4gVGhpcyBpcyBub3Qgc3RvcmVkIGJ5IEJpdEdvLCBhbmQgbWF5IGJlIHJlcXVpcmVkIGZvciB1c2UgaW4gcmVjb3Zlcnkgc2NlbmFyaW9zLicsXG4gICAgZGF0YTogcHVibGljS2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFdhbGxldFFyRGF0YSh7XG4gIGJhY2t1cEtleWNoYWluLFxuICBiYWNrdXBLZXlQcm92aWRlcixcbiAgYmFja3VwTWFzdGVyS2V5LFxuICBiaXRnb0tleWNoYWluLFxuICBjb2luLFxuICB1c2VyS2V5Y2hhaW4sXG4gIHVzZXJNYXN0ZXJLZXksXG4gIHVzZXJNYXN0ZXJQdWJsaWNLZXksXG4gIGJhY2t1cE1hc3RlclB1YmxpY0tleSxcbn06IEdlbmVyYXRlUXJEYXRhUGFyYW1zKTogUXJEYXRhIHtcbiAgcmV0dXJuIHtcbiAgICB1c2VyOiBnZW5lcmF0ZVVzZXJRckRhdGEodXNlcktleWNoYWluLCB1c2VyTWFzdGVyS2V5KSxcbiAgICB1c2VyTWFzdGVyUHVibGljS2V5OiB1c2VyTWFzdGVyUHVibGljS2V5ID8gZ2VuZXJhdGVVc2VyTWFzdGVyUHVibGljS2V5UVJEYXRhKHVzZXJNYXN0ZXJQdWJsaWNLZXkpIDogdW5kZWZpbmVkLFxuICAgIGJhY2t1cDogZ2VuZXJhdGVCYWNrdXBRckRhdGEoY29pbiwgYmFja3VwS2V5Y2hhaW4sIHtcbiAgICAgIGJhY2t1cEtleVByb3ZpZGVyLFxuICAgICAgYmFja3VwTWFzdGVyS2V5LFxuICAgIH0pLFxuICAgIGJhY2t1cE1hc3RlclB1YmxpY0tleTogYmFja3VwTWFzdGVyUHVibGljS2V5XG4gICAgICA/IGdlbmVyYXRlQmFja3VwTWFzdGVyUHVibGljS2V5UVJEYXRhKGJhY2t1cE1hc3RlclB1YmxpY0tleSlcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGJpdGdvOiBnZW5lcmF0ZUJpdEdvUXJEYXRhKGJpdGdvS2V5Y2hhaW4pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZExpZ2h0bmluZ1FyRGF0YSh7IHVzZXJBdXRoS2V5Y2hhaW4gfTogR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICBhc3NlcnQub2sodXNlckF1dGhLZXljaGFpbi5lbmNyeXB0ZWRQcnYsICd1c2VyQXV0aEtleWNoYWluIG11c3QgaGF2ZSBhbiBlbmNyeXB0ZWRQcnYnKTtcblxuICByZXR1cm4ge1xuICAgIHVzZXI6IHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBBdXRoIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoaXMgaXMgeW91ciB1c2VyIGF1dGhlbnRpY2F0aW9uIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC5cXHJcXG5JdCBpcyB1c2VkIHRvIGF1dGhlbnRpY2F0ZSBwYXltZW50IGFuZCB3YWxsZXQgb3BlcmF0aW9ucy4nLFxuICAgICAgZGF0YTogdXNlckF1dGhLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUXJEYXRhKHBhcmFtczogR2VuZXJhdGVRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICBjb25zdCBxckRhdGEgPSBidWlsZFdhbGxldFFyRGF0YShwYXJhbXMpO1xuXG4gIGlmIChwYXJhbXMucGFzc3BocmFzZSAmJiBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSkge1xuICAgIHFyRGF0YS5wYXNzY29kZSA9IGdlbmVyYXRlUGFzc2NvZGVRckRhdGEocGFyYW1zLnBhc3NwaHJhc2UsIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKTtcbiAgfVxuXG4gIHJldHVybiBxckRhdGE7XG59XG5cbi8qKlxuICogQXN5bmMgdmVyc2lvbiBvZiB7QGxpbmsgZ2VuZXJhdGVRckRhdGF9IHdpdGggdjEvdjIgYXV0by1kZXRlY3QgZW5jcnlwdCBmb3IgQm94IEQgdmlhIGBlbmNyeXB0QXN5bmNgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVRckRhdGFBc3luYyhwYXJhbXM6IEdlbmVyYXRlUXJEYXRhUGFyYW1zKTogUHJvbWlzZTxRckRhdGE+IHtcbiAgY29uc3QgcXJEYXRhID0gYnVpbGRXYWxsZXRRckRhdGEocGFyYW1zKTtcblxuICBpZiAocGFyYW1zLnBhc3NwaHJhc2UgJiYgcGFyYW1zLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBxckRhdGEucGFzc2NvZGUgPSBhd2FpdCBnZW5lcmF0ZVBhc3Njb2RlUXJEYXRhQXN5bmMocGFyYW1zLnBhc3NwaHJhc2UsIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKTtcbiAgfVxuXG4gIHJldHVybiBxckRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YShwYXJhbXM6IEdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhUGFyYW1zKTogUXJEYXRhIHtcbiAgY29uc3QgcXJEYXRhID0gYnVpbGRMaWdodG5pbmdRckRhdGEocGFyYW1zKTtcblxuICBpZiAocGFyYW1zLnBhc3NwaHJhc2UgJiYgcGFyYW1zLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBxckRhdGEucGFzc2NvZGUgPSBnZW5lcmF0ZVBhc3Njb2RlUXJEYXRhKHBhcmFtcy5wYXNzcGhyYXNlLCBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSk7XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuXG4vKipcbiAqIEFzeW5jIHZlcnNpb24gb2Yge0BsaW5rIGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhfSB3aXRoIHYxL3YyIGF1dG8tZGV0ZWN0IGVuY3J5cHQgZm9yIEJveCBEIHZpYSBgZW5jcnlwdEFzeW5jYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhQXN5bmMocGFyYW1zOiBHZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YVBhcmFtcyk6IFByb21pc2U8UXJEYXRhPiB7XG4gIGNvbnN0IHFyRGF0YSA9IGJ1aWxkTGlnaHRuaW5nUXJEYXRhKHBhcmFtcyk7XG5cbiAgaWYgKHBhcmFtcy5wYXNzcGhyYXNlICYmIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgcXJEYXRhLnBhc3Njb2RlID0gYXdhaXQgZ2VuZXJhdGVQYXNzY29kZVFyRGF0YUFzeW5jKHBhcmFtcy5wYXNzcGhyYXNlLCBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSk7XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuIl19
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GenerateKeycardParams, GenerateLightningQrDataParams, GenerateQrDataBaseParams } from './types';
|
|
2
2
|
export * from './drawKeycard';
|
|
3
3
|
export * from './faq';
|
|
4
4
|
export * from './generateQrData';
|
|
5
5
|
export * from './utils';
|
|
6
|
-
export
|
|
7
|
-
activationCode?: string;
|
|
8
|
-
keyCardImage?: HTMLImageElement;
|
|
9
|
-
walletLabel: string;
|
|
10
|
-
}
|
|
6
|
+
export * from './types';
|
|
11
7
|
export declare function generateKeycard(params: GenerateKeycardParams): Promise<void>;
|
|
8
|
+
export declare function generateLightningKeycard(params: GenerateQrDataBaseParams & GenerateLightningQrDataParams): Promise<void>;
|
|
12
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEzG,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,wBAAsB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBlF;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,wBAAwB,GAAG,6BAA6B,GAC/D,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
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);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -10,20 +14,47 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
15
|
};
|
|
12
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.generateKeycard =
|
|
17
|
+
exports.generateKeycard = generateKeycard;
|
|
18
|
+
exports.generateLightningKeycard = generateLightningKeycard;
|
|
14
19
|
const generateQrData_1 = require("./generateQrData");
|
|
15
20
|
const faq_1 = require("./faq");
|
|
16
21
|
const drawKeycard_1 = require("./drawKeycard");
|
|
22
|
+
const generateParamsForKeyCreation_1 = require("./generateParamsForKeyCreation");
|
|
17
23
|
__exportStar(require("./drawKeycard"), exports);
|
|
18
24
|
__exportStar(require("./faq"), exports);
|
|
19
25
|
__exportStar(require("./generateQrData"), exports);
|
|
20
26
|
__exportStar(require("./utils"), exports);
|
|
27
|
+
__exportStar(require("./types"), exports);
|
|
21
28
|
async function generateKeycard(params) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
if ('userAuthKeychain' in params) {
|
|
30
|
+
const questions = (0, faq_1.generateLightningFaq)(params.coin.fullName);
|
|
31
|
+
const qrData = await (0, generateQrData_1.generateLightningQrDataAsync)(params);
|
|
32
|
+
const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
|
|
33
|
+
const label = params.walletLabel || params.coin.fullName;
|
|
34
|
+
keycard.save(`BitGo Keycard for ${label}.pdf`);
|
|
35
|
+
}
|
|
36
|
+
else if ('coin' in params) {
|
|
37
|
+
const questions = (0, faq_1.generateFaq)(params.coin.fullName);
|
|
38
|
+
const qrData = await (0, generateQrData_1.generateQrDataAsync)(params);
|
|
39
|
+
const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
|
|
40
|
+
const label = params.walletLabel || params.coin.fullName;
|
|
41
|
+
keycard.save(`BitGo Keycard for ${label}.pdf`);
|
|
42
|
+
}
|
|
43
|
+
else if ('curve' in params) {
|
|
44
|
+
const data = (0, generateParamsForKeyCreation_1.generateParamsForKeyCreation)(params);
|
|
45
|
+
const keycard = await (0, drawKeycard_1.drawKeycard)(data);
|
|
46
|
+
const label = params.walletLabel || params.curve;
|
|
47
|
+
keycard.save(`BitGo Keycard for ${label}.pdf`);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
throw new Error('Either curve or coin must be provided');
|
|
51
|
+
}
|
|
27
52
|
}
|
|
28
|
-
|
|
29
|
-
|
|
53
|
+
async function generateLightningKeycard(params) {
|
|
54
|
+
const questions = (0, faq_1.generateLightningFaq)(params.coin.fullName);
|
|
55
|
+
const qrData = await (0, generateQrData_1.generateLightningQrDataAsync)(params);
|
|
56
|
+
const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
|
|
57
|
+
const label = params.walletLabel || params.coin.fullName;
|
|
58
|
+
keycard.save(`BitGo Keycard for ${label}.pdf`);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLDBDQXFCQztBQUVELDREQVFDO0FBM0NELHFEQUFxRjtBQUNyRiwrQkFBMEQ7QUFDMUQsK0NBQTRDO0FBQzVDLGlGQUE4RTtBQUc5RSxnREFBOEI7QUFDOUIsd0NBQXNCO0FBQ3RCLG1EQUFpQztBQUNqQywwQ0FBd0I7QUFDeEIsMENBQXdCO0FBRWpCLEtBQUssVUFBVSxlQUFlLENBQUMsTUFBNkI7SUFDakUsSUFBSSxrQkFBa0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFBLDBCQUFvQixFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDZDQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx5QkFBVyxFQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7U0FBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFBLGlCQUFXLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsb0NBQW1CLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHlCQUFXLEVBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pELE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztTQUFNLElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUEsMkRBQTRCLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHlCQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDM0QsQ0FBQztBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsd0JBQXdCLENBQzVDLE1BQWdFO0lBRWhFLE1BQU0sU0FBUyxHQUFHLElBQUEsMEJBQW9CLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsNkNBQTRCLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHlCQUFXLEVBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pELE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssTUFBTSxDQUFDLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhQXN5bmMsIGdlbmVyYXRlUXJEYXRhQXN5bmMgfSBmcm9tICcuL2dlbmVyYXRlUXJEYXRhJztcbmltcG9ydCB7IGdlbmVyYXRlRmFxLCBnZW5lcmF0ZUxpZ2h0bmluZ0ZhcSB9IGZyb20gJy4vZmFxJztcbmltcG9ydCB7IGRyYXdLZXljYXJkIH0gZnJvbSAnLi9kcmF3S2V5Y2FyZCc7XG5pbXBvcnQgeyBnZW5lcmF0ZVBhcmFtc0ZvcktleUNyZWF0aW9uIH0gZnJvbSAnLi9nZW5lcmF0ZVBhcmFtc0ZvcktleUNyZWF0aW9uJztcbmltcG9ydCB7IEdlbmVyYXRlS2V5Y2FyZFBhcmFtcywgR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXMsIEdlbmVyYXRlUXJEYXRhQmFzZVBhcmFtcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RyYXdLZXljYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vZmFxJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VuZXJhdGVRckRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlS2V5Y2FyZChwYXJhbXM6IEdlbmVyYXRlS2V5Y2FyZFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoJ3VzZXJBdXRoS2V5Y2hhaW4nIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHF1ZXN0aW9ucyA9IGdlbmVyYXRlTGlnaHRuaW5nRmFxKHBhcmFtcy5jb2luLmZ1bGxOYW1lKTtcbiAgICBjb25zdCBxckRhdGEgPSBhd2FpdCBnZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YUFzeW5jKHBhcmFtcyk7XG4gICAgY29uc3Qga2V5Y2FyZCA9IGF3YWl0IGRyYXdLZXljYXJkKHsgLi4ucGFyYW1zLCBxdWVzdGlvbnMsIHFyRGF0YSB9KTtcbiAgICBjb25zdCBsYWJlbCA9IHBhcmFtcy53YWxsZXRMYWJlbCB8fCBwYXJhbXMuY29pbi5mdWxsTmFtZTtcbiAgICBrZXljYXJkLnNhdmUoYEJpdEdvIEtleWNhcmQgZm9yICR7bGFiZWx9LnBkZmApO1xuICB9IGVsc2UgaWYgKCdjb2luJyBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZUZhcShwYXJhbXMuY29pbi5mdWxsTmFtZSk7XG4gICAgY29uc3QgcXJEYXRhID0gYXdhaXQgZ2VuZXJhdGVRckRhdGFBc3luYyhwYXJhbXMpO1xuICAgIGNvbnN0IGtleWNhcmQgPSBhd2FpdCBkcmF3S2V5Y2FyZCh7IC4uLnBhcmFtcywgcXVlc3Rpb25zLCBxckRhdGEgfSk7XG4gICAgY29uc3QgbGFiZWwgPSBwYXJhbXMud2FsbGV0TGFiZWwgfHwgcGFyYW1zLmNvaW4uZnVsbE5hbWU7XG4gICAga2V5Y2FyZC5zYXZlKGBCaXRHbyBLZXljYXJkIGZvciAke2xhYmVsfS5wZGZgKTtcbiAgfSBlbHNlIGlmICgnY3VydmUnIGluIHBhcmFtcykge1xuICAgIGNvbnN0IGRhdGEgPSBnZW5lcmF0ZVBhcmFtc0ZvcktleUNyZWF0aW9uKHBhcmFtcyk7XG4gICAgY29uc3Qga2V5Y2FyZCA9IGF3YWl0IGRyYXdLZXljYXJkKGRhdGEpO1xuICAgIGNvbnN0IGxhYmVsID0gcGFyYW1zLndhbGxldExhYmVsIHx8IHBhcmFtcy5jdXJ2ZTtcbiAgICBrZXljYXJkLnNhdmUoYEJpdEdvIEtleWNhcmQgZm9yICR7bGFiZWx9LnBkZmApO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIGN1cnZlIG9yIGNvaW4gbXVzdCBiZSBwcm92aWRlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUxpZ2h0bmluZ0tleWNhcmQoXG4gIHBhcmFtczogR2VuZXJhdGVRckRhdGFCYXNlUGFyYW1zICYgR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXNcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZUxpZ2h0bmluZ0ZhcShwYXJhbXMuY29pbi5mdWxsTmFtZSk7XG4gIGNvbnN0IHFyRGF0YSA9IGF3YWl0IGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhQXN5bmMocGFyYW1zKTtcbiAgY29uc3Qga2V5Y2FyZCA9IGF3YWl0IGRyYXdLZXljYXJkKHsgLi4ucGFyYW1zLCBxdWVzdGlvbnMsIHFyRGF0YSB9KTtcbiAgY29uc3QgbGFiZWwgPSBwYXJhbXMud2FsbGV0TGFiZWwgfHwgcGFyYW1zLmNvaW4uZnVsbE5hbWU7XG4gIGtleWNhcmQuc2F2ZShgQml0R28gS2V5Y2FyZCBmb3IgJHtsYWJlbH0ucGRmYCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Keychain } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin, KeyCurve } from '@bitgo-beta/statics';
|
|
3
|
+
export interface GenerateQrDataBaseParams {
|
|
4
|
+
activationCode?: string;
|
|
5
|
+
keyCardImage?: HTMLImageElement;
|
|
6
|
+
walletLabel: string;
|
|
7
|
+
}
|
|
8
|
+
export interface GenerateQrDataForKeychainParams {
|
|
9
|
+
bitgoKeychain: Keychain;
|
|
10
|
+
curve: KeyCurve;
|
|
11
|
+
}
|
|
12
|
+
export interface GenerateQrDataCoinParams {
|
|
13
|
+
coin: Readonly<BaseCoin>;
|
|
14
|
+
passcodeEncryptionCode?: string;
|
|
15
|
+
passphrase?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface GenerateQrDataParams extends GenerateQrDataCoinParams {
|
|
18
|
+
backupKeychain: Keychain;
|
|
19
|
+
backupKeyProvider?: string;
|
|
20
|
+
backupMasterKey?: string;
|
|
21
|
+
/**
|
|
22
|
+
* @description The key used to derive the backup key using {@link backupMasterKey} as the seed.
|
|
23
|
+
*/
|
|
24
|
+
backupMasterPublicKey?: string;
|
|
25
|
+
bitgoKeychain: Keychain;
|
|
26
|
+
userKeychain: Keychain;
|
|
27
|
+
userMasterKey?: string;
|
|
28
|
+
/**
|
|
29
|
+
* @description The key used to derive the user key using {@link userMasterKey} as the seed.
|
|
30
|
+
*/
|
|
31
|
+
userMasterPublicKey?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface GenerateLightningQrDataParams extends GenerateQrDataCoinParams {
|
|
34
|
+
userAuthKeychain: Keychain;
|
|
35
|
+
}
|
|
36
|
+
export type GenerateKeycardParams = GenerateQrDataBaseParams & (GenerateQrDataForKeychainParams | GenerateQrDataParams | GenerateLightningQrDataParams);
|
|
37
|
+
export interface IDrawKeyCard {
|
|
38
|
+
activationCode?: string;
|
|
39
|
+
keyCardImage?: HTMLImageElement;
|
|
40
|
+
qrData: QrData;
|
|
41
|
+
questions: FAQ[];
|
|
42
|
+
walletLabel?: string;
|
|
43
|
+
curve?: KeyCurve;
|
|
44
|
+
}
|
|
45
|
+
export interface FAQ {
|
|
46
|
+
question: string;
|
|
47
|
+
answer: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface QrDataEntry {
|
|
50
|
+
data: string;
|
|
51
|
+
description: string;
|
|
52
|
+
title: string;
|
|
53
|
+
publicMasterKey?: string;
|
|
54
|
+
}
|
|
55
|
+
export type MasterPublicKeyQrDataEntry = Omit<QrDataEntry, 'publicMasterKey'>;
|
|
56
|
+
export interface QrData {
|
|
57
|
+
backup?: QrDataEntry;
|
|
58
|
+
backupMasterPublicKey?: MasterPublicKeyQrDataEntry;
|
|
59
|
+
bitgo?: QrDataEntry;
|
|
60
|
+
passcode?: QrDataEntry;
|
|
61
|
+
curve?: KeyCurve;
|
|
62
|
+
user: QrDataEntry;
|
|
63
|
+
userMasterPublicKey?: MasterPublicKeyQrDataEntry;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,+BAA+B;IAE9C,aAAa,EAAE,QAAQ,CAAC;IAExB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IAEvC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAIzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAIhC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB;IAEpE,cAAc,EAAE,QAAQ,CAAC;IAEzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,aAAa,EAAE,QAAQ,CAAC;IAExB,YAAY,EAAE,QAAQ,CAAC;IAEvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB;IAE7E,gBAAgB,EAAE,QAAQ,CAAC;CAC5B;AAED,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GAC1D,CAAC,+BAA+B,GAAG,oBAAoB,GAAG,6BAA6B,CAAC,CAAC;AAE3F,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAE9E,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qBAAqB,CAAC,EAAE,0BAA0B,CAAC;IACnD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;CAClD"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleWNoYWluIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4sIEtleUN1cnZlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVRckRhdGFCYXNlUGFyYW1zIHtcbiAgYWN0aXZhdGlvbkNvZGU/OiBzdHJpbmc7XG4gIGtleUNhcmRJbWFnZT86IEhUTUxJbWFnZUVsZW1lbnQ7XG4gIHdhbGxldExhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVRckRhdGFGb3JLZXljaGFpblBhcmFtcyB7XG4gIC8vIFRoZSBCaXRHbyBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiaXRnb0tleWNoYWluOiBLZXljaGFpbjtcbiAgLy8gVGhlIGN1cnZlIHVzZWQgZm9yIHRoZSBrZXlcbiAgY3VydmU6IEtleUN1cnZlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlUXJEYXRhQ29pblBhcmFtcyB7XG4gIC8vIFRoZSBjb2luIG9mIHRoZSB3YWxsZXQgdGhhdCB3YXMvIGlzIGFib3V0IHRvIGJlIGNyZWF0ZWRcbiAgY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+O1xuICAvLyBBIGNvZGUgdGhhdCBjYW4gYmUgdXNlZCB0byBlbmNyeXB0IHRoZSB3YWxsZXQgcGFzc3dvcmQgdG8uXG4gIC8vIElmIGJvdGggdGhlIHBhc3NwaHJhc2UgYW5kIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgYXJlIHBhc3NlZCwgdGhlbiB0aGlzIGNvZGUgZW5jcnlwdHMgdGhlIHBhc3NwaHJhc2Ugd2l0aCB0aGVcbiAgLy8gcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSBhbmQgcHV0cyB0aGUgcmVzdWx0IGludG8gQm94IEQuIEFsbG93cyByZWNvdmVyaWVzIG9mIHRoZSB3YWxsZXQgcGFzc3dvcmQuXG4gIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmc7XG4gIC8vIFRoZSB3YWxsZXQgcGFzc3dvcmRcbiAgLy8gSWYgYm90aCB0aGUgcGFzc3BocmFzZSBhbmQgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSBhcmUgcGFzc2VkLCB0aGVuIHRoaXMgY29kZSBlbmNyeXB0cyB0aGUgcGFzc3BocmFzZSB3aXRoIHRoZVxuICAvLyBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFuZCBwdXRzIHRoZSByZXN1bHQgaW50byBCb3ggRC4gQWxsb3dzIHJlY292ZXJpZXMgb2YgdGhlIHdhbGxldCBwYXNzd29yZC5cbiAgcGFzc3BocmFzZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVFyRGF0YVBhcmFtcyBleHRlbmRzIEdlbmVyYXRlUXJEYXRhQ29pblBhcmFtcyB7XG4gIC8vIFRoZSBiYWNrdXAga2V5Y2hhaW4gYXMgaXQgaXMgcmV0dXJuZWQgZnJvbSB0aGUgQml0R28gQVBJIHVwb24gY3JlYXRpb25cbiAgYmFja3VwS2V5Y2hhaW46IEtleWNoYWluO1xuICAvLyBUaGUgbmFtZSBvZiB0aGUgM3JkIHBhcnR5IHByb3ZpZGVyIG9mIHRoZSBiYWNrdXAga2V5IGlmIG5laXRoZXIgdGhlIHVzZXIgbm9yIEJpdEdvIHN0b3JlcyBpdFxuICBiYWNrdXBLZXlQcm92aWRlcj86IHN0cmluZztcbiAgLy8gVGhlIGtleSBpZCBvZiB0aGUgYmFja3VwIGtleSwgb25seSB1c2VkIGZvciBjb2xkIGtleXNcbiAgYmFja3VwTWFzdGVyS2V5Pzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIGJhY2t1cCBrZXkgdXNpbmcge0BsaW5rIGJhY2t1cE1hc3RlcktleX0gYXMgdGhlIHNlZWQuXG4gICAqL1xuICBiYWNrdXBNYXN0ZXJQdWJsaWNLZXk/OiBzdHJpbmc7XG4gIC8vIFRoZSBCaXRHbyBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiaXRnb0tleWNoYWluOiBLZXljaGFpbjtcbiAgLy8gVGhlIHVzZXIga2V5Y2hhaW4gYXMgaXQgaXMgcmV0dXJuZWQgZnJvbSB0aGUgQml0R28gQVBJIHVwb24gY3JlYXRpb25cbiAgdXNlcktleWNoYWluOiBLZXljaGFpbjtcbiAgLy8gVGhlIGtleSBpZCBvZiB0aGUgdXNlciBrZXksIG9ubHkgdXNlZCBmb3IgY29sZCBrZXlzXG4gIHVzZXJNYXN0ZXJLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgdXNlciBrZXkgdXNpbmcge0BsaW5rIHVzZXJNYXN0ZXJLZXl9IGFzIHRoZSBzZWVkLlxuICAgKi9cbiAgdXNlck1hc3RlclB1YmxpY0tleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YVBhcmFtcyBleHRlbmRzIEdlbmVyYXRlUXJEYXRhQ29pblBhcmFtcyB7XG4gIC8vIFRoZSB1c2VyIGF1dGhlbnRpY2F0aW9uIGtleWNoYWluLCB1c2VkIHRvIHNpZ24gcGF5bWVudCByZXF1ZXN0cyBhbmQgd2FsbGV0IGNvbmZpZ3VyYXRpb24gdXBkYXRlc1xuICB1c2VyQXV0aEtleWNoYWluOiBLZXljaGFpbjtcbn1cblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVLZXljYXJkUGFyYW1zID0gR2VuZXJhdGVRckRhdGFCYXNlUGFyYW1zICZcbiAgKEdlbmVyYXRlUXJEYXRhRm9yS2V5Y2hhaW5QYXJhbXMgfCBHZW5lcmF0ZVFyRGF0YVBhcmFtcyB8IEdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhUGFyYW1zKTtcblxuZXhwb3J0IGludGVyZmFjZSBJRHJhd0tleUNhcmQge1xuICBhY3RpdmF0aW9uQ29kZT86IHN0cmluZztcbiAga2V5Q2FyZEltYWdlPzogSFRNTEltYWdlRWxlbWVudDtcbiAgcXJEYXRhOiBRckRhdGE7XG4gIHF1ZXN0aW9uczogRkFRW107XG4gIHdhbGxldExhYmVsPzogc3RyaW5nO1xuICBjdXJ2ZT86IEtleUN1cnZlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZBUSB7XG4gIHF1ZXN0aW9uOiBzdHJpbmc7XG4gIC8vIHRoZSBhbnN3ZXIgdG8gdGhlIHF1ZXN0aW9uLCBhbHJlYWR5IHNwbGl0IGludG8gaW5kaXZpZHVhbCBsaW5lcyBvZiB0ZXh0XG4gIGFuc3dlcjogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXJEYXRhRW50cnkge1xuICBkYXRhOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpY01hc3RlcktleT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTWFzdGVyUHVibGljS2V5UXJEYXRhRW50cnkgPSBPbWl0PFFyRGF0YUVudHJ5LCAncHVibGljTWFzdGVyS2V5Jz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXJEYXRhIHtcbiAgYmFja3VwPzogUXJEYXRhRW50cnk7XG4gIGJhY2t1cE1hc3RlclB1YmxpY0tleT86IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5O1xuICBiaXRnbz86IFFyRGF0YUVudHJ5O1xuICBwYXNzY29kZT86IFFyRGF0YUVudHJ5O1xuICBjdXJ2ZT86IEtleUN1cnZlO1xuICB1c2VyOiBRckRhdGFFbnRyeTtcbiAgdXNlck1hc3RlclB1YmxpY0tleT86IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5O1xufVxuIl19
|
package/dist/src/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.splitKeys =
|
|
3
|
+
exports.splitKeys = splitKeys;
|
|
4
4
|
function splitKeys(key, limit) {
|
|
5
5
|
if (key.length <= limit) {
|
|
6
6
|
return [key];
|
|
@@ -13,5 +13,4 @@ function splitKeys(key, limit) {
|
|
|
13
13
|
}
|
|
14
14
|
return keys;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsU0FBUyxDQUFDLEdBQVcsRUFBRSxLQUFhO0lBQ2xELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUU7UUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7SUFFMUIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUU7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBZEQsOEJBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gc3BsaXRLZXlzKGtleTogc3RyaW5nLCBsaW1pdDogbnVtYmVyKTogc3RyaW5nW10ge1xuICBpZiAoa2V5Lmxlbmd0aCA8PSBsaW1pdCkge1xuICAgIHJldHVybiBba2V5XTtcbiAgfVxuXG4gIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG5cbiAgbGV0IHJpZ2h0SW5kZXggPSBsaW1pdDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyBpICs9IGxpbWl0KSB7XG4gICAga2V5cy5wdXNoKGtleS5zdWJzdHJpbmcoaSwgcmlnaHRJbmRleCkpO1xuICAgIHJpZ2h0SW5kZXggPSBNYXRoLm1pbihyaWdodEluZGV4ICsgbGltaXQsIGtleS5sZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG4iXX0=
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4QkFjQztBQWRELFNBQWdCLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBYTtJQUNsRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztJQUUxQixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN4QyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHNwbGl0S2V5cyhrZXk6IHN0cmluZywgbGltaXQ6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgaWYgKGtleS5sZW5ndGggPD0gbGltaXQpIHtcbiAgICByZXR1cm4gW2tleV07XG4gIH1cblxuICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxldCByaWdodEluZGV4ID0gbGltaXQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSArPSBsaW1pdCkge1xuICAgIGtleXMucHVzaChrZXkuc3Vic3RyaW5nKGksIHJpZ2h0SW5kZXgpKTtcbiAgICByaWdodEluZGV4ID0gTWF0aC5taW4ocmlnaHRJbmRleCArIGxpbWl0LCBrZXkubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuIl19
|