@bitgo-beta/key-card 0.0.1-beta.220 → 0.0.1-beta.2201

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/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.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -10,20 +14,70 @@ 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 = void 0;
17
+ exports.generateKeycard = generateKeycard;
18
+ exports.generateLightningKeycard = generateLightningKeycard;
19
+ exports.generateSafeKeycard = generateSafeKeycard;
14
20
  const generateQrData_1 = require("./generateQrData");
15
21
  const faq_1 = require("./faq");
16
22
  const drawKeycard_1 = require("./drawKeycard");
23
+ const generateParamsForKeyCreation_1 = require("./generateParamsForKeyCreation");
17
24
  __exportStar(require("./drawKeycard"), exports);
25
+ __exportStar(require("./extractKeycardFromPDF"), exports);
18
26
  __exportStar(require("./faq"), exports);
19
27
  __exportStar(require("./generateQrData"), exports);
28
+ __exportStar(require("./parseKeycard"), exports);
29
+ __exportStar(require("./upgradeWalletEncryption"), exports);
20
30
  __exportStar(require("./utils"), exports);
31
+ __exportStar(require("./types"), exports);
21
32
  async function generateKeycard(params) {
22
- const questions = faq_1.generateFaq(params.coin.fullName);
23
- const qrData = generateQrData_1.generateQrData(params);
24
- const keycard = await drawKeycard_1.drawKeycard({ ...params, questions, qrData });
25
- // Save the PDF on the user's browser
26
- keycard.save(`BitGo Keycard for ${params.walletLabel}.pdf`);
33
+ if ('userAuthKeychain' in params) {
34
+ const questions = (0, faq_1.generateLightningFaq)(params.coin.fullName);
35
+ const qrData = await (0, generateQrData_1.generateLightningQrData)(params);
36
+ const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
37
+ const label = params.walletLabel || params.coin.fullName;
38
+ keycard.save(`BitGo Keycard for ${label}.pdf`);
39
+ }
40
+ else if ('coin' in params) {
41
+ const questions = (0, faq_1.generateFaq)(params.coin.fullName);
42
+ const qrData = await (0, generateQrData_1.generateQrData)(params);
43
+ const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
44
+ const label = params.walletLabel || params.coin.fullName;
45
+ keycard.save(`BitGo Keycard for ${label}.pdf`);
46
+ }
47
+ else if ('curve' in params) {
48
+ const data = (0, generateParamsForKeyCreation_1.generateParamsForKeyCreation)(params);
49
+ const keycard = await (0, drawKeycard_1.drawKeycard)(data);
50
+ const label = params.walletLabel || params.curve;
51
+ keycard.save(`BitGo Keycard for ${label}.pdf`);
52
+ }
53
+ else {
54
+ throw new Error('Either curve or coin must be provided');
55
+ }
27
56
  }
28
- exports.generateKeycard = generateKeycard;
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUF3RTtBQUN4RSwrQkFBb0M7QUFDcEMsK0NBQTRDO0FBRTVDLGdEQUE4QjtBQUM5Qix3Q0FBc0I7QUFDdEIsbURBQWlDO0FBQ2pDLDBDQUF3QjtBQVFqQixLQUFLLFVBQVUsZUFBZSxDQUFDLE1BQTZCO0lBQ2pFLE1BQU0sU0FBUyxHQUFHLGlCQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxNQUFNLE1BQU0sR0FBRywrQkFBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0seUJBQVcsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLHFDQUFxQztJQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixNQUFNLENBQUMsV0FBVyxNQUFNLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBTkQsMENBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZW5lcmF0ZVFyRGF0YSwgR2VuZXJhdGVRckRhdGFQYXJhbXMgfSBmcm9tICcuL2dlbmVyYXRlUXJEYXRhJztcbmltcG9ydCB7IGdlbmVyYXRlRmFxIH0gZnJvbSAnLi9mYXEnO1xuaW1wb3J0IHsgZHJhd0tleWNhcmQgfSBmcm9tICcuL2RyYXdLZXljYXJkJztcblxuZXhwb3J0ICogZnJvbSAnLi9kcmF3S2V5Y2FyZCc7XG5leHBvcnQgKiBmcm9tICcuL2ZhcSc7XG5leHBvcnQgKiBmcm9tICcuL2dlbmVyYXRlUXJEYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlS2V5Y2FyZFBhcmFtcyBleHRlbmRzIEdlbmVyYXRlUXJEYXRhUGFyYW1zIHtcbiAgYWN0aXZhdGlvbkNvZGU/OiBzdHJpbmc7XG4gIGtleUNhcmRJbWFnZT86IEhUTUxJbWFnZUVsZW1lbnQ7XG4gIHdhbGxldExhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUtleWNhcmQocGFyYW1zOiBHZW5lcmF0ZUtleWNhcmRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcXVlc3Rpb25zID0gZ2VuZXJhdGVGYXEocGFyYW1zLmNvaW4uZnVsbE5hbWUpO1xuICBjb25zdCBxckRhdGEgPSBnZW5lcmF0ZVFyRGF0YShwYXJhbXMpO1xuICBjb25zdCBrZXljYXJkID0gYXdhaXQgZHJhd0tleWNhcmQoeyAuLi5wYXJhbXMsIHF1ZXN0aW9ucywgcXJEYXRhIH0pO1xuICAvLyBTYXZlIHRoZSBQREYgb24gdGhlIHVzZXIncyBicm93c2VyXG4gIGtleWNhcmQuc2F2ZShgQml0R28gS2V5Y2FyZCBmb3IgJHtwYXJhbXMud2FsbGV0TGFiZWx9LnBkZmApO1xufVxuIl19
57
+ async function generateLightningKeycard(params) {
58
+ const questions = (0, faq_1.generateLightningFaq)(params.coin.fullName);
59
+ const qrData = await (0, generateQrData_1.generateLightningQrData)(params);
60
+ const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
61
+ const label = params.walletLabel || params.coin.fullName;
62
+ keycard.save(`BitGo Keycard for ${label}.pdf`);
63
+ }
64
+ /**
65
+ * Generates a safe keycard using the existing 4-box layout: boxes A/B/C each carry a JSON
66
+ * object of the four roots (see {@link generateSafeQrData}), rendered through the same
67
+ * {@link drawKeycard} path as a wallet. Generated as part of safe creation, once all four
68
+ * root triplets exist.
69
+ */
70
+ async function generateSafeKeycard(params) {
71
+ const questions = (0, faq_1.generateFaq)(params.coin.fullName);
72
+ const qrData = await (0, generateQrData_1.generateSafeQrData)(params);
73
+ const keycard = await (0, drawKeycard_1.drawKeycard)({
74
+ ...params,
75
+ questions,
76
+ qrData,
77
+ pageBreakBeforeIndices: [1, 2],
78
+ useQrPartHeaders: true,
79
+ });
80
+ const label = params.walletLabel || params.coin.fullName;
81
+ keycard.save(`BitGo Keycard for ${label}.pdf`);
82
+ }
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSwwQ0FxQkM7QUFFRCw0REFRQztBQVFELGtEQVlDO0FBdkVELHFEQUErRjtBQUMvRiwrQkFBMEQ7QUFDMUQsK0NBQTRDO0FBQzVDLGlGQUE4RTtBQVE5RSxnREFBOEI7QUFDOUIsMERBQXdDO0FBQ3hDLHdDQUFzQjtBQUN0QixtREFBaUM7QUFDakMsaURBQStCO0FBQy9CLDREQUEwQztBQUMxQywwQ0FBd0I7QUFDeEIsMENBQXdCO0FBRWpCLEtBQUssVUFBVSxlQUFlLENBQUMsTUFBNkI7SUFDakUsSUFBSSxrQkFBa0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFBLDBCQUFvQixFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLHdDQUF1QixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx5QkFBVyxFQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7U0FBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFBLGlCQUFXLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsK0JBQWMsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEseUJBQVcsRUFBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekQsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO1NBQU0sSUFBSSxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBQSwyREFBNEIsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEseUJBQVcsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSx3QkFBd0IsQ0FDNUMsTUFBZ0U7SUFFaEUsTUFBTSxTQUFTLEdBQUcsSUFBQSwwQkFBb0IsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSx3Q0FBdUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEseUJBQVcsRUFBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekQsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxNQUFNLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsbUJBQW1CLENBQUMsTUFBMkQ7SUFDbkcsTUFBTSxTQUFTLEdBQUcsSUFBQSxpQkFBVyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLG1DQUFrQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx5QkFBVyxFQUFDO1FBQ2hDLEdBQUcsTUFBTTtRQUNULFNBQVM7UUFDVCxNQUFNO1FBQ04sc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLGdCQUFnQixFQUFFLElBQUk7S0FDdkIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLE1BQU0sQ0FBQyxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YSwgZ2VuZXJhdGVRckRhdGEsIGdlbmVyYXRlU2FmZVFyRGF0YSB9IGZyb20gJy4vZ2VuZXJhdGVRckRhdGEnO1xuaW1wb3J0IHsgZ2VuZXJhdGVGYXEsIGdlbmVyYXRlTGlnaHRuaW5nRmFxIH0gZnJvbSAnLi9mYXEnO1xuaW1wb3J0IHsgZHJhd0tleWNhcmQgfSBmcm9tICcuL2RyYXdLZXljYXJkJztcbmltcG9ydCB7IGdlbmVyYXRlUGFyYW1zRm9yS2V5Q3JlYXRpb24gfSBmcm9tICcuL2dlbmVyYXRlUGFyYW1zRm9yS2V5Q3JlYXRpb24nO1xuaW1wb3J0IHtcbiAgR2VuZXJhdGVLZXljYXJkUGFyYW1zLFxuICBHZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YVBhcmFtcyxcbiAgR2VuZXJhdGVRckRhdGFCYXNlUGFyYW1zLFxuICBHZW5lcmF0ZVNhZmVRckRhdGFQYXJhbXMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RyYXdLZXljYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vZXh0cmFjdEtleWNhcmRGcm9tUERGJztcbmV4cG9ydCAqIGZyb20gJy4vZmFxJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VuZXJhdGVRckRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJzZUtleWNhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi91cGdyYWRlV2FsbGV0RW5jcnlwdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVLZXljYXJkKHBhcmFtczogR2VuZXJhdGVLZXljYXJkUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICgndXNlckF1dGhLZXljaGFpbicgaW4gcGFyYW1zKSB7XG4gICAgY29uc3QgcXVlc3Rpb25zID0gZ2VuZXJhdGVMaWdodG5pbmdGYXEocGFyYW1zLmNvaW4uZnVsbE5hbWUpO1xuICAgIGNvbnN0IHFyRGF0YSA9IGF3YWl0IGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhKHBhcmFtcyk7XG4gICAgY29uc3Qga2V5Y2FyZCA9IGF3YWl0IGRyYXdLZXljYXJkKHsgLi4ucGFyYW1zLCBxdWVzdGlvbnMsIHFyRGF0YSB9KTtcbiAgICBjb25zdCBsYWJlbCA9IHBhcmFtcy53YWxsZXRMYWJlbCB8fCBwYXJhbXMuY29pbi5mdWxsTmFtZTtcbiAgICBrZXljYXJkLnNhdmUoYEJpdEdvIEtleWNhcmQgZm9yICR7bGFiZWx9LnBkZmApO1xuICB9IGVsc2UgaWYgKCdjb2luJyBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZUZhcShwYXJhbXMuY29pbi5mdWxsTmFtZSk7XG4gICAgY29uc3QgcXJEYXRhID0gYXdhaXQgZ2VuZXJhdGVRckRhdGEocGFyYW1zKTtcbiAgICBjb25zdCBrZXljYXJkID0gYXdhaXQgZHJhd0tleWNhcmQoeyAuLi5wYXJhbXMsIHF1ZXN0aW9ucywgcXJEYXRhIH0pO1xuICAgIGNvbnN0IGxhYmVsID0gcGFyYW1zLndhbGxldExhYmVsIHx8IHBhcmFtcy5jb2luLmZ1bGxOYW1lO1xuICAgIGtleWNhcmQuc2F2ZShgQml0R28gS2V5Y2FyZCBmb3IgJHtsYWJlbH0ucGRmYCk7XG4gIH0gZWxzZSBpZiAoJ2N1cnZlJyBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCBkYXRhID0gZ2VuZXJhdGVQYXJhbXNGb3JLZXlDcmVhdGlvbihwYXJhbXMpO1xuICAgIGNvbnN0IGtleWNhcmQgPSBhd2FpdCBkcmF3S2V5Y2FyZChkYXRhKTtcbiAgICBjb25zdCBsYWJlbCA9IHBhcmFtcy53YWxsZXRMYWJlbCB8fCBwYXJhbXMuY3VydmU7XG4gICAga2V5Y2FyZC5zYXZlKGBCaXRHbyBLZXljYXJkIGZvciAke2xhYmVsfS5wZGZgKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBjdXJ2ZSBvciBjb2luIG11c3QgYmUgcHJvdmlkZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVMaWdodG5pbmdLZXljYXJkKFxuICBwYXJhbXM6IEdlbmVyYXRlUXJEYXRhQmFzZVBhcmFtcyAmIEdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhUGFyYW1zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcXVlc3Rpb25zID0gZ2VuZXJhdGVMaWdodG5pbmdGYXEocGFyYW1zLmNvaW4uZnVsbE5hbWUpO1xuICBjb25zdCBxckRhdGEgPSBhd2FpdCBnZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YShwYXJhbXMpO1xuICBjb25zdCBrZXljYXJkID0gYXdhaXQgZHJhd0tleWNhcmQoeyAuLi5wYXJhbXMsIHF1ZXN0aW9ucywgcXJEYXRhIH0pO1xuICBjb25zdCBsYWJlbCA9IHBhcmFtcy53YWxsZXRMYWJlbCB8fCBwYXJhbXMuY29pbi5mdWxsTmFtZTtcbiAga2V5Y2FyZC5zYXZlKGBCaXRHbyBLZXljYXJkIGZvciAke2xhYmVsfS5wZGZgKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBzYWZlIGtleWNhcmQgdXNpbmcgdGhlIGV4aXN0aW5nIDQtYm94IGxheW91dDogYm94ZXMgQS9CL0MgZWFjaCBjYXJyeSBhIEpTT05cbiAqIG9iamVjdCBvZiB0aGUgZm91ciByb290cyAoc2VlIHtAbGluayBnZW5lcmF0ZVNhZmVRckRhdGF9KSwgcmVuZGVyZWQgdGhyb3VnaCB0aGUgc2FtZVxuICoge0BsaW5rIGRyYXdLZXljYXJkfSBwYXRoIGFzIGEgd2FsbGV0LiBHZW5lcmF0ZWQgYXMgcGFydCBvZiBzYWZlIGNyZWF0aW9uLCBvbmNlIGFsbCBmb3VyXG4gKiByb290IHRyaXBsZXRzIGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVTYWZlS2V5Y2FyZChwYXJhbXM6IEdlbmVyYXRlUXJEYXRhQmFzZVBhcmFtcyAmIEdlbmVyYXRlU2FmZVFyRGF0YVBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZUZhcShwYXJhbXMuY29pbi5mdWxsTmFtZSk7XG4gIGNvbnN0IHFyRGF0YSA9IGF3YWl0IGdlbmVyYXRlU2FmZVFyRGF0YShwYXJhbXMpO1xuICBjb25zdCBrZXljYXJkID0gYXdhaXQgZHJhd0tleWNhcmQoe1xuICAgIC4uLnBhcmFtcyxcbiAgICBxdWVzdGlvbnMsXG4gICAgcXJEYXRhLFxuICAgIHBhZ2VCcmVha0JlZm9yZUluZGljZXM6IFsxLCAyXSxcbiAgICB1c2VRclBhcnRIZWFkZXJzOiB0cnVlLFxuICB9KTtcbiAgY29uc3QgbGFiZWwgPSBwYXJhbXMud2FsbGV0TGFiZWwgfHwgcGFyYW1zLmNvaW4uZnVsbE5hbWU7XG4gIGtleWNhcmQuc2F2ZShgQml0R28gS2V5Y2FyZCBmb3IgJHtsYWJlbH0ucGRmYCk7XG59XG4iXX0=
@@ -0,0 +1,24 @@
1
+ export { parseSafeKeycardBox } from '@bitgo-beta/sdk-lib-safes';
2
+ export type PDFTextNode = {
3
+ text: string;
4
+ x: number;
5
+ y: number;
6
+ page: number;
7
+ width: number;
8
+ };
9
+ export type KeycardEntry = {
10
+ label: string;
11
+ value: string;
12
+ };
13
+ /**
14
+ * Reconstructs logical text lines from an unordered set of PDF text nodes.
15
+ *
16
+ * PDF text extraction returns individual positioned fragments. This function
17
+ * sorts them by page then Y-coordinate (top-to-bottom), groups fragments
18
+ * within PDF_LINE_Y_TOLERANCE points of each other onto the same line, and
19
+ * inserts a space between fragments that are separated by more than
20
+ * PDF_NODE_GAP_THRESHOLD points horizontally.
21
+ */
22
+ export declare function buildLinesFromPDFNodes(nodes: PDFTextNode[]): string[];
23
+ export declare function parseKeycardFromLines(lines: string[]): KeycardEntry[];
24
+ //# sourceMappingURL=parseKeycard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseKeycard.d.ts","sourceRoot":"","sources":["../../src/parseKeycard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA0CF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CA4DrE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAyErE"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSafeKeycardBox = void 0;
4
+ exports.buildLinesFromPDFNodes = buildLinesFromPDFNodes;
5
+ exports.parseKeycardFromLines = parseKeycardFromLines;
6
+ var sdk_lib_safes_1 = require("@bitgo-beta/sdk-lib-safes");
7
+ Object.defineProperty(exports, "parseSafeKeycardBox", { enumerable: true, get: function () { return sdk_lib_safes_1.parseSafeKeycardBox; } });
8
+ const sectionHeaderRegex = /^([A-D])\s*[:.)-]\s*(.+?)\s*$/i;
9
+ const dataLineRegex = /^data\s*:\s*(.*)$/i;
10
+ const faqHeaderRegex = /^BitGo\s+KeyCard\s+FAQ$/i;
11
+ // PDF coordinate tolerance in points. Nodes within this distance on the Y-axis
12
+ // are treated as belonging to the same line; nodes further apart are separate lines.
13
+ const PDF_LINE_Y_TOLERANCE = 2;
14
+ // Horizontal gap in points above which a space is inserted between adjacent nodes.
15
+ const PDF_NODE_GAP_THRESHOLD = 2;
16
+ function sanitizeText(input) {
17
+ return input.replace(/\s+/g, ' ').trim();
18
+ }
19
+ function normalizeSectionValue(rawValue) {
20
+ // Two-pass removal of "Part N" page-continuation labels:
21
+ // 1. Line filter: removes labels that appear as standalone lines.
22
+ // 2. Regex replace: removes labels embedded mid-line when
23
+ // buildLinesFromPDFNodes merges them with adjacent content at the same
24
+ // y-coordinate (e.g. "...X88bPart 2 lFPMd...").
25
+ // join('') intentionally uses no separator — section values are continuous
26
+ // strings (base64 / xpub) that wrap across PDF lines without spaces.
27
+ return rawValue
28
+ .split('\n')
29
+ .filter((line) => !/^Part\s+\d+$/i.test(line.trim()))
30
+ .join('')
31
+ .replace(/\s*Part\s+\d+\s*/gi, '')
32
+ .trim();
33
+ }
34
+ function countChar(input, char) {
35
+ return input.split(char).length - 1;
36
+ }
37
+ function isEncryptedWalletPasswordSectionTitle(title) {
38
+ const normalized = title.toLowerCase();
39
+ // Box D is titled "Encrypted Wallet Password" (wallet) or "Encrypted Safe Password" (safe).
40
+ return normalized.includes('encrypted wallet password') || normalized.includes('encrypted safe password');
41
+ }
42
+ /**
43
+ * Reconstructs logical text lines from an unordered set of PDF text nodes.
44
+ *
45
+ * PDF text extraction returns individual positioned fragments. This function
46
+ * sorts them by page then Y-coordinate (top-to-bottom), groups fragments
47
+ * within PDF_LINE_Y_TOLERANCE points of each other onto the same line, and
48
+ * inserts a space between fragments that are separated by more than
49
+ * PDF_NODE_GAP_THRESHOLD points horizontally.
50
+ */
51
+ function buildLinesFromPDFNodes(nodes) {
52
+ const sortedNodes = [...nodes].sort((a, b) => {
53
+ if (a.page !== b.page) {
54
+ return a.page - b.page;
55
+ }
56
+ const yDiff = Math.abs(a.y - b.y);
57
+ if (yDiff > PDF_LINE_Y_TOLERANCE) {
58
+ return b.y - a.y;
59
+ }
60
+ return a.x - b.x;
61
+ });
62
+ const lines = [];
63
+ let currentLineNodes = [];
64
+ let currentPage = -1;
65
+ let currentY = Number.NaN;
66
+ function flushLine() {
67
+ if (currentLineNodes.length === 0) {
68
+ return;
69
+ }
70
+ const sortedLineNodes = [...currentLineNodes].sort((a, b) => a.x - b.x);
71
+ let line = '';
72
+ let previousRightEdge = null;
73
+ for (const node of sortedLineNodes) {
74
+ const piece = sanitizeText(node.text);
75
+ if (!piece) {
76
+ continue;
77
+ }
78
+ if (previousRightEdge !== null && node.x - previousRightEdge > PDF_NODE_GAP_THRESHOLD) {
79
+ line += ' ';
80
+ }
81
+ line += piece;
82
+ previousRightEdge = node.x + node.width;
83
+ }
84
+ const normalizedLine = line.trim();
85
+ if (normalizedLine) {
86
+ lines.push(normalizedLine);
87
+ }
88
+ }
89
+ for (const node of sortedNodes) {
90
+ const pageChanged = node.page !== currentPage;
91
+ const lineChanged = Number.isNaN(currentY) || Math.abs(node.y - currentY) > PDF_LINE_Y_TOLERANCE;
92
+ if (pageChanged || lineChanged) {
93
+ flushLine();
94
+ currentLineNodes = [node];
95
+ currentPage = node.page;
96
+ currentY = node.y;
97
+ continue;
98
+ }
99
+ currentLineNodes.push(node);
100
+ }
101
+ flushLine();
102
+ return lines;
103
+ }
104
+ function parseKeycardFromLines(lines) {
105
+ const sections = [];
106
+ let currentSectionIndex = -1;
107
+ for (const line of lines) {
108
+ const labelMatch = line.match(sectionHeaderRegex);
109
+ if (labelMatch) {
110
+ const section = labelMatch[1]?.toUpperCase();
111
+ const title = sanitizeText(labelMatch[2] ?? '');
112
+ if (section && title) {
113
+ sections.push({
114
+ section,
115
+ title,
116
+ values: [],
117
+ isCapturingData: false,
118
+ openCurlyCount: 0,
119
+ });
120
+ currentSectionIndex = sections.length - 1;
121
+ continue;
122
+ }
123
+ }
124
+ if (currentSectionIndex < 0) {
125
+ continue;
126
+ }
127
+ const currentSection = sections[currentSectionIndex];
128
+ if (!currentSection) {
129
+ continue;
130
+ }
131
+ const dataLineMatch = line.match(dataLineRegex);
132
+ if (dataLineMatch) {
133
+ currentSection.isCapturingData = true;
134
+ const inlineValue = sanitizeText(dataLineMatch[1] ?? '');
135
+ if (inlineValue) {
136
+ currentSection.values.push(inlineValue);
137
+ currentSection.openCurlyCount += countChar(inlineValue, '{') - countChar(inlineValue, '}');
138
+ }
139
+ continue;
140
+ }
141
+ if (currentSection.isCapturingData) {
142
+ if (faqHeaderRegex.test(line)) {
143
+ currentSection.isCapturingData = false;
144
+ continue;
145
+ }
146
+ currentSection.values.push(line);
147
+ // For encrypted wallet password, data is a single JSON object. Stop as
148
+ // soon as the object closes so footer/FAQ content is not appended.
149
+ if (isEncryptedWalletPasswordSectionTitle(currentSection.title)) {
150
+ currentSection.openCurlyCount += countChar(line, '{') - countChar(line, '}');
151
+ if (currentSection.values.length > 0 && currentSection.openCurlyCount <= 0) {
152
+ currentSection.isCapturingData = false;
153
+ }
154
+ }
155
+ }
156
+ }
157
+ return sections
158
+ .filter(({ section, values }) => ['A', 'B', 'C', 'D'].includes(section) && values.length > 0)
159
+ .map(({ section, title, values }) => ({
160
+ label: `${section}: ${title}`,
161
+ value: normalizeSectionValue(values.join('\n')),
162
+ }));
163
+ }
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VLZXljYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnNlS2V5Y2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnRUEsd0RBNERDO0FBRUQsc0RBeUVDO0FBdk1ELDJEQUFnRTtBQUF2RCxvSEFBQSxtQkFBbUIsT0FBQTtBQWU1QixNQUFNLGtCQUFrQixHQUFHLGdDQUFnQyxDQUFDO0FBQzVELE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDO0FBQzNDLE1BQU0sY0FBYyxHQUFHLDBCQUEwQixDQUFDO0FBRWxELCtFQUErRTtBQUMvRSxxRkFBcUY7QUFDckYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDL0IsbUZBQW1GO0FBQ25GLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBRWpDLFNBQVMsWUFBWSxDQUFDLEtBQWE7SUFDakMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxRQUFnQjtJQUM3Qyx5REFBeUQ7SUFDekQsa0VBQWtFO0lBQ2xFLDBEQUEwRDtJQUMxRCwwRUFBMEU7SUFDMUUsbURBQW1EO0lBQ25ELDJFQUEyRTtJQUMzRSxxRUFBcUU7SUFDckUsT0FBTyxRQUFRO1NBQ1osS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BELElBQUksQ0FBQyxFQUFFLENBQUM7U0FDUixPQUFPLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1NBQ2pDLElBQUksRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFZO0lBQzVDLE9BQU8sS0FBSyxDQUFD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QUFjLENBQUMsY0FBYyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksY0FBYyxDQUFDLGNBQWMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDM0UsY0FBYyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7Z0JBQ3pDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFFBQVE7U0FDWixNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDNUYsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLEtBQUssRUFBRSxHQUFHLE9BQU8sS0FBSyxLQUFLLEVBQUU7UUFDN0IsS0FBSyxFQUFFLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDaEQsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcGFyc2VTYWZlS2V5Y2FyZEJveCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItc2FmZXMnO1xuXG5leHBvcnQgdHlwZSBQREZUZXh0Tm9kZSA9IHtcbiAgdGV4dDogc3RyaW5nO1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgcGFnZTogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgS2V5Y2FyZEVudHJ5ID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufTtcblxuY29uc3Qgc2VjdGlvbkhlYWRlclJlZ2V4ID0gL14oW0EtRF0pXFxzKls6LiktXVxccyooLis/KVxccyokL2k7XG5jb25zdCBkYXRhTGluZVJlZ2V4ID0gL15kYXRhXFxzKjpcXHMqKC4qKSQvaTtcbmNvbnN0IGZhcUhlYWRlclJlZ2V4ID0gL15CaXRHb1xccytLZXlDYXJkXFxzK0ZBUSQvaTtcblxuLy8gUERGIGNvb3JkaW5hdGUgdG9sZXJhbmNlIGluIHBvaW50cy4gTm9kZXMgd2l0aGluIHRoaXMgZGlzdGFuY2Ugb24gdGhlIFktYXhpc1xuLy8gYXJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGxpbmU7IG5vZGVzIGZ1cnRoZXIgYXBhcnQgYXJlIHNlcGFyYXRlIGxpbmVzLlxuY29uc3QgUERGX0xJTkVfWV9UT0xFUkFOQ0UgPSAyO1xuLy8gSG9yaXpvbnRhbCBnYXAgaW4gcG9pbnRzIGFib3ZlIHdoaWNoIGEgc3BhY2UgaXMgaW5zZXJ0ZWQgYmV0d2VlbiBhZGphY2VudCBub2Rlcy5cbmNvbnN0IFBERl9OT0RFX0dBUF9USFJFU0hPTEQgPSAyO1xuXG5mdW5jdGlvbiBzYW5pdGl6ZVRleHQoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC9cXHMrL2csICcgJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTZWN0aW9uVmFsdWUocmF3VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFR3by1wYXNzIHJlbW92YWwgb2YgXCJQYXJ0IE5cIiBwYWdlLWNvbnRpbnVhdGlvbiBsYWJlbHM6XG4gIC8vIDEuIExpbmUgZmlsdGVyOiByZW1vdmVzIGxhYmVscyB0aGF0IGFwcGVhciBhcyBzdGFuZGFsb25lIGxpbmVzLlxuICAvLyAyLiBSZWdleCByZXBsYWNlOiByZW1vdmVzIGxhYmVscyBlbWJlZGRlZCBtaWQtbGluZSB3aGVuXG4gIC8vICAgIGJ1aWxkTGluZXNGcm9tUERGTm9kZXMgbWVyZ2VzIHRoZW0gd2l0aCBhZGphY2VudCBjb250ZW50IGF0IHRoZSBzYW1lXG4gIC8vICAgIHktY29vcmRpbmF0ZSAoZS5nLiBcIi4uLlg4OGJQYXJ0IDIgbEZQTWQuLi5cIikuXG4gIC8vIGpvaW4oJycpIGludGVudGlvbmFsbHkgdXNlcyBubyBzZXBhcmF0b3Ig4oCUIHNlY3Rpb24gdmFsdWVzIGFyZSBjb250aW51b3VzXG4gIC8vIHN0cmluZ3MgKGJhc2U2NCAvIHhwdWIpIHRoYXQgd3JhcCBhY3Jvc3MgUERGIGxpbmVzIHdpdGhvdXQgc3BhY2VzLlxuICByZXR1cm4gcmF3VmFsdWVcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLmZpbHRlcigobGluZSkgPT4gIS9eUGFydFxccytcXGQrJC9pLnRlc3QobGluZS50cmltKCkpKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKC9cXHMqUGFydFxccytcXGQrXFxzKi9naSwgJycpXG4gICAgLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gY291bnRDaGFyKGlucHV0OiBzdHJpbmcsIGNoYXI6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBpbnB1dC5zcGxpdChjaGFyKS5sZW5ndGggLSAxO1xufVxuXG5mdW5jdGlvbiBpc0VuY3J5cHRlZFdhbGxldFBhc3N3b3JkU2VjdGlvblRpdGxlKHRpdGxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHRpdGxlLnRvTG93ZXJDYXNlKCk7XG4gIC8vIEJveCBEIGlzIHRpdGxlZCBcIkVuY3J5cHRlZCBXYWxsZXQgUGFzc3dvcmRcIiAod2FsbGV0KSBvciBcIkVuY3J5cHRlZCBTYWZlIFBhc3N3b3JkXCIgKHNhZmUpLlxuICByZXR1cm4gbm9ybWFsaXplZC5pbmNsdWRlcygnZW5jcnlwdGVkIHdhbGxldCBwYXNzd29yZCcpIHx8IG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2VuY3J5cHRlZCBzYWZlIHBhc3N3b3JkJyk7XG59XG5cbi8qKlxuICogUmVjb25zdHJ1Y3RzIGxvZ2ljYWwgdGV4dCBsaW5lcyBmcm9tIGFuIHVub3JkZXJlZCBzZXQgb2YgUERGIHRleHQgbm9kZXMuXG4gKlxuICogUERGIHRleHQgZXh0cmFjdGlvbiByZXR1cm5zIGluZGl2aWR1YWwgcG9zaXRpb25lZCBmcmFnbWVudHMuIFRoaXMgZnVuY3Rpb25cbiAqIHNvcnRzIHRoZW0gYnkgcGFnZSB0aGVuIFktY29vcmRpbmF0ZSAodG9wLXRvLWJvdHRvbSksIGdyb3VwcyBmcmFnbWVudHNcbiAqIHdpdGhpbiBQREZfTElORV9ZX1RPTEVSQU5DRSBwb2ludHMgb2YgZWFjaCBvdGhlciBvbnRvIHRoZSBzYW1lIGxpbmUsIGFuZFxuICogaW5zZXJ0cyBhIHNwYWNlIGJldHdlZW4gZnJhZ21lbnRzIHRoYXQgYXJlIHNlcGFyYXRlZCBieSBtb3JlIHRoYW5cbiAqIFBERl9OT0RFX0dBUF9USFJFU0hPTEQgcG9pbnRzIGhvcml6b250YWxseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTGluZXNGcm9tUERGTm9kZXMobm9kZXM6IFBERlRleHROb2RlW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHNvcnRlZE5vZGVzID0gWy4uLm5vZGVzXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGEucGFnZSAhPT0gYi5wYWdlKSB7XG4gICAgICByZXR1cm4gYS5wYWdlIC0gYi5wYWdlO1xuICAgIH1cbiAgICBjb25zdCB5RGlmZiA9IE1hdGguYWJzKGEueSAtIGIueSk7XG4gICAgaWYgKHlEaWZmID4gUERGX0xJTkVfWV9UT0xFUkFOQ0UpIHtcbiAgICAgIHJldHVybiBiLnkgLSBhLnk7XG4gICAgfVxuICAgIHJldHVybiBhLnggLSBiLng7XG4gIH0pO1xuXG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgY3VycmVudExpbmVOb2RlczogUERGVGV4dE5vZGVbXSA9IFtdO1xuICBsZXQgY3VycmVudFBhZ2UgPSAtMTtcbiAgbGV0IGN1cnJlbnRZID0gTnVtYmVyLk5hTjtcblxuICBmdW5jdGlvbiBmbHVzaExpbmUoKSB7XG4gICAgaWYgKGN1cnJlbnRMaW5lTm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc29ydGVkTGluZU5vZGVzID0gWy4uLmN1cnJlbnRMaW5lTm9kZXNdLnNvcnQoKGEsIGIpID0+IGEueCAtIGIueCk7XG4gICAgbGV0IGxpbmUgPSAnJztcbiAgICBsZXQgcHJldmlvdXNSaWdodEVkZ2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBzb3J0ZWRMaW5lTm9kZXMpIHtcbiAgICAgIGNvbnN0IHBpZWNlID0gc2FuaXRpemVUZXh0KG5vZGUudGV4dCk7XG4gICAgICBpZiAoIXBpZWNlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldmlvdXNSaWdodEVkZ2UgIT09IG51bGwgJiYgbm9kZS54IC0gcHJldmlvdXNSaWdodEVkZ2UgPiBQREZfTk9ERV9HQVBfVEhSRVNIT0xEKSB7XG4gICAgICAgIGxpbmUgKz0gJyAnO1xuICAgICAgfVxuICAgICAgbGluZSArPSBwaWVjZTtcbiAgICAgIHByZXZpb3VzUmlnaHRFZGdlID0gbm9kZS54ICsgbm9kZS53aWR0aDtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkTGluZSA9IGxpbmUudHJpbSgpO1xuICAgIGlmIChub3JtYWxpemVkTGluZSkge1xuICAgICAgbGluZXMucHVzaChub3JtYWxpemVkTGluZSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBub2RlIG9mIHNvcnRlZE5vZGVzKSB7XG4gICAgY29uc3QgcGFnZUNoYW5nZWQgPSBub2RlLnBhZ2UgIT09IGN1cnJlbnRQYWdlO1xuICAgIGNvbnN0IGxpbmVDaGFuZ2VkID0gTnVtYmVyLmlzTmFOKGN1cnJlbnRZKSB8fCBNYXRoLmFicyhub2RlLnkgLSBjdXJyZW50WSkgPiBQREZfTElORV9ZX1RPTEVSQU5DRTtcbiAgICBpZiAocGFnZUNoYW5nZWQgfHwgbGluZUNoYW5nZWQpIHtcbiAgICAgIGZsdXNoTGluZSgpO1xuICAgICAgY3VycmVudExpbmVOb2RlcyA9IFtub2RlXTtcbiAgICAgIGN1cnJlbnRQYWdlID0gbm9kZS5wYWdlO1xuICAgICAgY3VycmVudFkgPSBub2RlLnk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjdXJyZW50TGluZU5vZGVzLnB1c2gobm9kZSk7XG4gIH1cblxuICBmbHVzaExpbmUoKTtcbiAgcmV0dXJuIGxpbmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VLZXljYXJkRnJvbUxpbmVzKGxpbmVzOiBzdHJpbmdbXSk6IEtleWNhcmRFbnRyeVtdIHtcbiAgY29uc3Qgc2VjdGlvbnM6IEFycmF5PHtcbiAgICBzZWN0aW9uOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICB2YWx1ZXM6IHN0cmluZ1tdO1xuICAgIGlzQ2FwdHVyaW5nRGF0YTogYm9vbGVhbjtcbiAgICBvcGVuQ3VybHlDb3VudDogbnVtYmVyO1xuICB9PiA9IFtdO1xuICBsZXQgY3VycmVudFNlY3Rpb25JbmRleCA9IC0xO1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGNvbnN0IGxhYmVsTWF0Y2ggPSBsaW5lLm1hdGNoKHNlY3Rpb25IZWFkZXJSZWdleCk7XG4gICAgaWYgKGxhYmVsTWF0Y2gpIHtcbiAgICAgIGNvbnN0IHNlY3Rpb24gPSBsYWJlbE1hdGNoWzFdPy50b1VwcGVyQ2FzZSgpO1xuICAgICAgY29uc3QgdGl0bGUgPSBzYW5pdGl6ZVRleHQobGFiZWxNYXRjaFsyXSA/PyAnJyk7XG4gICAgICBpZiAoc2VjdGlvbiAmJiB0aXRsZSkge1xuICAgICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICBzZWN0aW9uLFxuICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgIHZhbHVlczogW10sXG4gICAgICAgICAgaXNDYXB0dXJpbmdEYXRhOiBmYWxzZSxcbiAgICAgICAgICBvcGVuQ3VybHlDb3VudDogMCxcbiAgICAgICAgfSk7XG4gICAgICAgIGN1cnJlbnRTZWN0aW9uSW5kZXggPSBzZWN0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFNlY3Rpb25JbmRleCA8IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uID0gc2VjdGlvbnNbY3VycmVudFNlY3Rpb25JbmRleF07XG4gICAgaWYgKCFjdXJyZW50U2VjdGlvbikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YUxpbmVNYXRjaCA9IGxpbmUubWF0Y2goZGF0YUxpbmVSZWdleCk7XG4gICAgaWYgKGRhdGFMaW5lTWF0Y2gpIHtcbiAgICAgIGN1cnJlbnRTZWN0aW9uLmlzQ2FwdHVyaW5nRGF0YSA9IHRydWU7XG4gICAgICBjb25zdCBpbmxpbmVWYWx1ZSA9IHNhbml0aXplVGV4dChkYXRhTGluZU1hdGNoWzFdID8/ICcnKTtcbiAgICAgIGlmIChpbmxpbmVWYWx1ZSkge1xuICAgICAgICBjdXJyZW50U2VjdGlvbi52YWx1ZXMucHVzaChpbmxpbmVWYWx1ZSk7XG4gICAgICAgIGN1cnJlbnRTZWN0aW9uLm9wZW5DdXJseUNvdW50ICs9IGNvdW50Q2hhcihpbmxpbmVWYWx1ZSwgJ3snKSAtIGNvdW50Q2hhcihpbmxpbmVWYWx1ZSwgJ30nKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50U2VjdGlvbi5pc0NhcHR1cmluZ0RhdGEpIHtcbiAgICAgIGlmIChmYXFIZWFkZXJSZWdleC50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGN1cnJlbnRTZWN0aW9uLmlzQ2FwdHVyaW5nRGF0YSA9IGZhbHNlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY3VycmVudFNlY3Rpb24udmFsdWVzLnB1c2gobGluZSk7XG5cbiAgICAgIC8vIEZvciBlbmNyeXB0ZWQgd2FsbGV0IHBhc3N3b3JkLCBkYXRhIGlzIGEgc2luZ2xlIEpTT04gb2JqZWN0LiBTdG9wIGFzXG4gICAgICAvLyBzb29uIGFzIHRoZSBvYmplY3QgY2xvc2VzIHNvIGZvb3Rlci9GQVEgY29udGVudCBpcyBub3QgYXBwZW5kZWQuXG4gICAgICBpZiAoaXNFbmNyeXB0ZWRXYWxsZXRQYXNzd29yZFNlY3Rpb25UaXRsZShjdXJyZW50U2VjdGlvbi50aXRsZSkpIHtcbiAgICAgICAgY3VycmVudFNlY3Rpb24ub3BlbkN1cmx5Q291bnQgKz0gY291bnRDaGFyKGxpbmUsICd7JykgLSBjb3VudENoYXIobGluZSwgJ30nKTtcbiAgICAgICAgaWYgKGN1cnJlbnRTZWN0aW9uLnZhbHVlcy5sZW5ndGggPiAwICYmIGN1cnJlbnRTZWN0aW9uLm9wZW5DdXJseUNvdW50IDw9IDApIHtcbiAgICAgICAgICBjdXJyZW50U2VjdGlvbi5pc0NhcHR1cmluZ0RhdGEgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWN0aW9uc1xuICAgIC5maWx0ZXIoKHsgc2VjdGlvbiwgdmFsdWVzIH0pID0+IFsnQScsICdCJywgJ0MnLCAnRCddLmluY2x1ZGVzKHNlY3Rpb24pICYmIHZhbHVlcy5sZW5ndGggPiAwKVxuICAgIC5tYXAoKHsgc2VjdGlvbiwgdGl0bGUsIHZhbHVlcyB9KSA9PiAoe1xuICAgICAgbGFiZWw6IGAke3NlY3Rpb259OiAke3RpdGxlfWAsXG4gICAgICB2YWx1ZTogbm9ybWFsaXplU2VjdGlvblZhbHVlKHZhbHVlcy5qb2luKCdcXG4nKSksXG4gICAgfSkpO1xufVxuIl19
@@ -0,0 +1,81 @@
1
+ import { EncryptionVersion, Keychain, KeychainsTriplet } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin, KeyCurve } from '@bitgo-beta/statics';
3
+ import type { SafeKeycardRoots, SafeRootKeyType } from '@bitgo-beta/sdk-lib-safes';
4
+ export type { SafeKeycardRoots, SafeRootKeyType };
5
+ export interface GenerateQrDataBaseParams {
6
+ activationCode?: string;
7
+ keyCardImage?: HTMLImageElement;
8
+ walletLabel: string;
9
+ }
10
+ export interface GenerateQrDataForKeychainParams {
11
+ bitgoKeychain: Keychain;
12
+ curve: KeyCurve;
13
+ }
14
+ export interface GenerateQrDataCoinParams {
15
+ coin: Readonly<BaseCoin>;
16
+ passcodeEncryptionCode?: string;
17
+ passphrase?: string;
18
+ /** @deprecated Ignored because Box D uses a high-entropy key. */
19
+ encryptionVersion?: EncryptionVersion;
20
+ }
21
+ export interface GenerateQrDataParams extends GenerateQrDataCoinParams {
22
+ backupKeychain: Keychain;
23
+ backupKeyProvider?: string;
24
+ backupMasterKey?: string;
25
+ /**
26
+ * @description The key used to derive the backup key using {@link backupMasterKey} as the seed.
27
+ */
28
+ backupMasterPublicKey?: string;
29
+ bitgoKeychain: Keychain;
30
+ userKeychain: Keychain;
31
+ userMasterKey?: string;
32
+ /**
33
+ * @description The key used to derive the user key using {@link userMasterKey} as the seed.
34
+ */
35
+ userMasterPublicKey?: string;
36
+ }
37
+ export interface GenerateLightningQrDataParams extends GenerateQrDataCoinParams {
38
+ userAuthKeychain: Keychain;
39
+ }
40
+ /**
41
+ * Fixed render/scan order of the four roots on the safe keycard. Kept stable so a
42
+ * generated keycard and a re-scanned one line up slot-for-slot.
43
+ */
44
+ export declare const SAFE_ROOT_ORDER: SafeRootKeyType[];
45
+ /** The product a keycard belongs to, used for user-facing wording (e.g. Box D copy). */
46
+ export type KeycardEntity = 'wallet' | 'safe';
47
+ export interface GenerateSafeQrDataParams extends GenerateQrDataCoinParams {
48
+ roots: Record<SafeRootKeyType, KeychainsTriplet>;
49
+ }
50
+ export type GenerateKeycardParams = GenerateQrDataBaseParams & (GenerateQrDataForKeychainParams | GenerateQrDataParams | GenerateLightningQrDataParams);
51
+ export interface IDrawKeyCard {
52
+ activationCode?: string;
53
+ keyCardImage?: HTMLImageElement;
54
+ qrData: QrData;
55
+ questions: FAQ[];
56
+ walletLabel?: string;
57
+ curve?: KeyCurve;
58
+ pageBreakBeforeIndices?: number[];
59
+ useQrPartHeaders?: boolean;
60
+ }
61
+ export interface FAQ {
62
+ question: string;
63
+ answer: string[];
64
+ }
65
+ export interface QrDataEntry {
66
+ data: string;
67
+ description: string;
68
+ title: string;
69
+ publicMasterKey?: string;
70
+ }
71
+ export type MasterPublicKeyQrDataEntry = Omit<QrDataEntry, 'publicMasterKey'>;
72
+ export interface QrData {
73
+ backup?: QrDataEntry;
74
+ backupMasterPublicKey?: MasterPublicKeyQrDataEntry;
75
+ bitgo?: QrDataEntry;
76
+ passcode?: QrDataEntry;
77
+ curve?: KeyCurve;
78
+ user: QrDataEntry;
79
+ userMasterPublicKey?: MasterPublicKeyQrDataEntry;
80
+ }
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SAFE_ROOT_ORDER = void 0;
4
+ const slotsInRenderOrder = {
5
+ secp256k1Multisig: true,
6
+ ecdsaMpc: true,
7
+ eddsaMpc: true,
8
+ ed25519Multisig: true,
9
+ };
10
+ /**
11
+ * Fixed render/scan order of the four roots on the safe keycard. Kept stable so a
12
+ * generated keycard and a re-scanned one line up slot-for-slot.
13
+ */
14
+ exports.SAFE_ROOT_ORDER = Object.keys(slotsInRenderOrder);
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBK0RBLE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixRQUFRLEVBQUUsSUFBSTtJQUNkLFFBQVEsRUFBRSxJQUFJO0lBQ2QsZUFBZSxFQUFFLElBQUk7Q0FDa0IsQ0FBQztBQUUxQzs7O0dBR0c7QUFDVSxRQUFBLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW5jcnlwdGlvblZlcnNpb24sIEtleWNoYWluLCBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4sIEtleUN1cnZlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgdHlwZSB7IFNhZmVLZXljYXJkUm9vdHMsIFNhZmVSb290S2V5VHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItc2FmZXMnO1xuXG4vLyBNb3ZlZCB0byBzZGstbGliLXNhZmVzOyByZS1leHBvcnRlZCBzbyBleGlzdGluZyBpbXBvcnRzIGZyb20gQGJpdGdvLWJldGEva2V5LWNhcmQga2VlcCB3b3JraW5nLlxuZXhwb3J0IHR5cGUgeyBTYWZlS2V5Y2FyZFJvb3RzLCBTYWZlUm9vdEtleVR5cGUgfTtcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVFyRGF0YUJhc2VQYXJhbXMge1xuICBhY3RpdmF0aW9uQ29kZT86IHN0cmluZztcbiAga2V5Q2FyZEltYWdlPzogSFRNTEltYWdlRWxlbWVudDtcbiAgd2FsbGV0TGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVFyRGF0YUZvcktleWNoYWluUGFyYW1zIHtcbiAgLy8gVGhlIEJpdEdvIGtleWNoYWluIGFzIGl0IGlzIHJldHVybmVkIGZyb20gdGhlIEJpdEdvIEFQSSB1cG9uIGNyZWF0aW9uXG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICAvLyBUaGUgY3VydmUgdXNlZCBmb3IgdGhlIGtleVxuICBjdXJ2ZTogS2V5Q3VydmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVRckRhdGFDb2luUGFyYW1zIHtcbiAgLy8gVGhlIGNvaW4gb2YgdGhlIHdhbGxldCB0aGF0IHdhcy8gaXMgYWJvdXQgdG8gYmUgY3JlYXRlZFxuICBjb2luOiBSZWFkb25seTxCYXNlQ29pbj47XG4gIC8vIEEgY29kZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIHdhbGxldCBwYXNzd29yZCB0by5cbiAgLy8gSWYgYm90aCB0aGUgcGFzc3BocmFzZSBhbmQgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSBhcmUgcGFzc2VkLCB0aGVuIHRoaXMgY29kZSBlbmNyeXB0cyB0aGUgcGFzc3BocmFzZSB3aXRoIHRoZVxuICAvLyBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFuZCBwdXRzIHRoZSByZXN1bHQgaW50byBCb3ggRC4gQWxsb3dzIHJlY292ZXJpZXMgb2YgdGhlIHdhbGxldCBwYXNzd29yZC5cbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgLy8gVGhlIHdhbGxldCBwYXNzd29yZFxuICAvLyBJZiBib3RoIHRoZSBwYXNzcGhyYXNlIGFuZCBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFyZSBwYXNzZWQsIHRoZW4gdGhpcyBjb2RlIGVuY3J5cHRzIHRoZSBwYXNzcGhyYXNlIHdpdGggdGhlXG4gIC8vIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbnRvIEJveCBELiBBbGxvd3MgcmVjb3ZlcmllcyBvZiB0aGUgd2FsbGV0IHBhc3N3b3JkLlxuICBwYXNzcGhyYXNlPzogc3RyaW5nO1xuICAvKiogQGRlcHJlY2F0ZWQgSWdub3JlZCBiZWNhdXNlIEJveCBEIHVzZXMgYSBoaWdoLWVudHJvcHkga2V5LiAqL1xuICBlbmNyeXB0aW9uVmVyc2lvbj86IEVuY3J5cHRpb25WZXJzaW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlUXJEYXRhUGFyYW1zIGV4dGVuZHMgR2VuZXJhdGVRckRhdGFDb2luUGFyYW1zIHtcbiAgLy8gVGhlIGJhY2t1cCBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIC8vIFRoZSBuYW1lIG9mIHRoZSAzcmQgcGFydHkgcHJvdmlkZXIgb2YgdGhlIGJhY2t1cCBrZXkgaWYgbmVpdGhlciB0aGUgdXNlciBub3IgQml0R28gc3RvcmVzIGl0XG4gIGJhY2t1cEtleVByb3ZpZGVyPzogc3RyaW5nO1xuICAvLyBUaGUga2V5IGlkIG9mIHRoZSBiYWNrdXAga2V5LCBvbmx5IHVzZWQgZm9yIGNvbGQga2V5c1xuICBiYWNrdXBNYXN0ZXJLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgYmFja3VwIGtleSB1c2luZyB7QGxpbmsgYmFja3VwTWFzdGVyS2V5fSBhcyB0aGUgc2VlZC5cbiAgICovXG4gIGJhY2t1cE1hc3RlclB1YmxpY0tleT86IHN0cmluZztcbiAgLy8gVGhlIEJpdEdvIGtleWNoYWluIGFzIGl0IGlzIHJldHVybmVkIGZyb20gdGhlIEJpdEdvIEFQSSB1cG9uIGNyZWF0aW9uXG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICAvLyBUaGUgdXNlciBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICB1c2VyS2V5Y2hhaW46IEtleWNoYWluO1xuICAvLyBUaGUga2V5IGlkIG9mIHRoZSB1c2VyIGtleSwgb25seSB1c2VkIGZvciBjb2xkIGtleXNcbiAgdXNlck1hc3RlcktleT86IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5IHVzZWQgdG8gZGVyaXZlIHRoZSB1c2VyIGtleSB1c2luZyB7QGxpbmsgdXNlck1hc3RlcktleX0gYXMgdGhlIHNlZWQuXG4gICAqL1xuICB1c2VyTWFzdGVyUHVibGljS2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhUGFyYW1zIGV4dGVuZHMgR2VuZXJhdGVRckRhdGFDb2luUGFyYW1zIHtcbiAgLy8gVGhlIHVzZXIgYXV0aGVudGljYXRpb24ga2V5Y2hhaW4sIHVzZWQgdG8gc2lnbiBwYXltZW50IHJlcXVlc3RzIGFuZCB3YWxsZXQgY29uZmlndXJhdGlvbiB1cGRhdGVzXG4gIHVzZXJBdXRoS2V5Y2hhaW46IEtleWNoYWluO1xufVxuXG5jb25zdCBzbG90c0luUmVuZGVyT3JkZXIgPSB7XG4gIHNlY3AyNTZrMU11bHRpc2lnOiB0cnVlLFxuICBlY2RzYU1wYzogdHJ1ZSxcbiAgZWRkc2FNcGM6IHRydWUsXG4gIGVkMjU1MTlNdWx0aXNpZzogdHJ1ZSxcbn0gc2F0aXNmaWVzIFJlY29yZDxTYWZlUm9vdEtleVR5cGUsIHRydWU+O1xuXG4vKipcbiAqIEZpeGVkIHJlbmRlci9zY2FuIG9yZGVyIG9mIHRoZSBmb3VyIHJvb3RzIG9uIHRoZSBzYWZlIGtleWNhcmQuIEtlcHQgc3RhYmxlIHNvIGFcbiAqIGdlbmVyYXRlZCBrZXljYXJkIGFuZCBhIHJlLXNjYW5uZWQgb25lIGxpbmUgdXAgc2xvdC1mb3Itc2xvdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNBRkVfUk9PVF9PUkRFUiA9IE9iamVjdC5rZXlzKHNsb3RzSW5SZW5kZXJPcmRlcikgYXMgU2FmZVJvb3RLZXlUeXBlW107XG5cbi8qKiBUaGUgcHJvZHVjdCBhIGtleWNhcmQgYmVsb25ncyB0bywgdXNlZCBmb3IgdXNlci1mYWNpbmcgd29yZGluZyAoZS5nLiBCb3ggRCBjb3B5KS4gKi9cbmV4cG9ydCB0eXBlIEtleWNhcmRFbnRpdHkgPSAnd2FsbGV0JyB8ICdzYWZlJztcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVNhZmVRckRhdGFQYXJhbXMgZXh0ZW5kcyBHZW5lcmF0ZVFyRGF0YUNvaW5QYXJhbXMge1xuICAvLyBUaGUgZm91ciByb290IHRyaXBsZXRzICh1c2VyL2JhY2t1cC9iaXRnbyBrZXljaGFpbnMpLCBrZXllZCBieSByb290S2V5VHlwZS5cbiAgcm9vdHM6IFJlY29yZDxTYWZlUm9vdEtleVR5cGUsIEtleWNoYWluc1RyaXBsZXQ+O1xufVxuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUtleWNhcmRQYXJhbXMgPSBHZW5lcmF0ZVFyRGF0YUJhc2VQYXJhbXMgJlxuICAoR2VuZXJhdGVRckRhdGFGb3JLZXljaGFpblBhcmFtcyB8IEdlbmVyYXRlUXJEYXRhUGFyYW1zIHwgR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXMpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEcmF3S2V5Q2FyZCB7XG4gIGFjdGl2YXRpb25Db2RlPzogc3RyaW5nO1xuICBrZXlDYXJkSW1hZ2U/OiBIVE1MSW1hZ2VFbGVtZW50O1xuICBxckRhdGE6IFFyRGF0YTtcbiAgcXVlc3Rpb25zOiBGQVFbXTtcbiAgd2FsbGV0TGFiZWw/OiBzdHJpbmc7XG4gIGN1cnZlPzogS2V5Q3VydmU7XG4gIC8vIEJveCBpbmRpY2VzIHRvIHN0YXJ0IGEgbmV3IHBhZ2UgYmVmb3JlLiBPbWl0IGZvciB0aGUgZGVmYXVsdCB3YWxsZXQgbGF5b3V0LlxuICBwYWdlQnJlYWtCZWZvcmVJbmRpY2VzPzogbnVtYmVyW107XG4gIC8vIFdoZW4gdHJ1ZSwgYSBzcGxpdCBrZXkncyBRUiBmcmFnbWVudHMgYXJlIHByZWZpeGVkIHdpdGggYSBcIjxpbmRleD4vPHRvdGFsPnxcIiBwYXJ0IGhlYWRlclxuICAvLyBzbyBhIHNjYW5uZXIgY2FuIHJlYXNzZW1ibGUgdGhlbS4gT3B0LWluICh1c2VkIGJ5IHRoZSBzYWZlIGtleWNhcmQpOyBvbWl0IHRvIGxlYXZlIFFSXG4gIC8vIHBheWxvYWRzIGFzIHJhdyBmcmFnbWVudHMsIGtlZXBpbmcgdGhlIHdhbGxldCBrZXljYXJkIG91dHB1dCB1bmNoYW5nZWQuXG4gIHVzZVFyUGFydEhlYWRlcnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZBUSB7XG4gIHF1ZXN0aW9uOiBzdHJpbmc7XG4gIC8vIHRoZSBhbnN3ZXIgdG8gdGhlIHF1ZXN0aW9uLCBhbHJlYWR5IHNwbGl0IGludG8gaW5kaXZpZHVhbCBsaW5lcyBvZiB0ZXh0XG4gIGFuc3dlcjogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXJEYXRhRW50cnkge1xuICBkYXRhOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpY01hc3RlcktleT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTWFzdGVyUHVibGljS2V5UXJEYXRhRW50cnkgPSBPbWl0PFFyRGF0YUVudHJ5LCAncHVibGljTWFzdGVyS2V5Jz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXJEYXRhIHtcbiAgYmFja3VwPzogUXJEYXRhRW50cnk7XG4gIGJhY2t1cE1hc3RlclB1YmxpY0tleT86IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5O1xuICBiaXRnbz86IFFyRGF0YUVudHJ5O1xuICBwYXNzY29kZT86IFFyRGF0YUVudHJ5O1xuICBjdXJ2ZT86IEtleUN1cnZlO1xuICB1c2VyOiBRckRhdGFFbnRyeTtcbiAgdXNlck1hc3RlclB1YmxpY0tleT86IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5O1xufVxuIl19
@@ -0,0 +1,27 @@
1
+ /**
2
+ * PDF-generation helpers for the wallet encryption upgrade flow.
3
+ *
4
+ * Orchestration (unlocking the session, re-encrypting keychains, PUT-ing to the server) lives on
5
+ * `Wallet.upgradeEncryption` in `@bitgo-beta/sdk-core`. This module contains only the pieces that
6
+ * depend on `jspdf`/`qrcode` — a factory that returns a `UpgradeEncryptionPdfGenerator` the
7
+ * caller can pass into that method, plus a Node-side coin-logo loader.
8
+ */
9
+ import * as https from 'https';
10
+ import { UpgradeEncryptionPdfGenerator } from '@bitgo-beta/sdk-core';
11
+ /**
12
+ * Fetch a coin logo image and return an HTMLImageElement-compatible object.
13
+ * jsPDF reads `.src` in Node.js; computeKeyCardImageDimensions reads `.width`/`.height`.
14
+ * Returns undefined on any failure — the keycard is generated without the logo in that case.
15
+ */
16
+ export declare function loadKeycardImage(url: string, httpGet?: typeof https.get): Promise<HTMLImageElement | undefined>;
17
+ export interface KeycardPdfGeneratorOptions {
18
+ /** Base URL for loading the coin logo (e.g. Environments[env].uri). Omit to skip the logo. */
19
+ imageBaseUrl?: string;
20
+ }
21
+ /**
22
+ * Build a {@link UpgradeEncryptionPdfGenerator} that regenerates the keycard PDF with the
23
+ * canonical `generateQrData` + `drawKeycard` flow. Pass the returned function into
24
+ * `Wallet.upgradeEncryption({ generatePdf })`.
25
+ */
26
+ export declare function createKeycardPdfGenerator(options?: KeycardPdfGeneratorOptions): UpgradeEncryptionPdfGenerator;
27
+ //# sourceMappingURL=upgradeWalletEncryption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradeWalletEncryption.d.ts","sourceRoot":"","sources":["../../src/upgradeWalletEncryption.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAKrE;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,KAAK,CAAC,GAAe,GACpC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAyBvC;AAED,MAAM,WAAW,0BAA0B;IACzC,8FAA8F;IAC9F,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,0BAA+B,GAAG,6BAA6B,CA0BjH"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * PDF-generation helpers for the wallet encryption upgrade flow.
4
+ *
5
+ * Orchestration (unlocking the session, re-encrypting keychains, PUT-ing to the server) lives on
6
+ * `Wallet.upgradeEncryption` in `@bitgo-beta/sdk-core`. This module contains only the pieces that
7
+ * depend on `jspdf`/`qrcode` — a factory that returns a `UpgradeEncryptionPdfGenerator` the
8
+ * caller can pass into that method, plus a Node-side coin-logo loader.
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.loadKeycardImage = loadKeycardImage;
45
+ exports.createKeycardPdfGenerator = createKeycardPdfGenerator;
46
+ const https = __importStar(require("https"));
47
+ const statics_1 = require("@bitgo-beta/statics");
48
+ const generateQrData_1 = require("./generateQrData");
49
+ const faq_1 = require("./faq");
50
+ const drawKeycard_1 = require("./drawKeycard");
51
+ /**
52
+ * Fetch a coin logo image and return an HTMLImageElement-compatible object.
53
+ * jsPDF reads `.src` in Node.js; computeKeyCardImageDimensions reads `.width`/`.height`.
54
+ * Returns undefined on any failure — the keycard is generated without the logo in that case.
55
+ */
56
+ async function loadKeycardImage(url, httpGet = https.get) {
57
+ return new Promise((resolve) => {
58
+ httpGet(url, (res) => {
59
+ if (res.statusCode !== 200) {
60
+ console.warn(`Warning: coin logo not loaded (HTTP ${res.statusCode}) — keycard will be generated without it`);
61
+ resolve(undefined);
62
+ return;
63
+ }
64
+ const chunks = [];
65
+ res.on('data', (chunk) => chunks.push(chunk));
66
+ res.on('end', () => {
67
+ const contentType = res.headers['content-type'] ?? 'image/png';
68
+ const dataUrl = `data:${contentType};base64,${Buffer.concat(chunks).toString('base64')}`;
69
+ const img = { src: dataUrl, width: 303, height: 40 };
70
+ resolve(img);
71
+ });
72
+ res.on('error', (err) => {
73
+ console.warn(`Warning: coin logo not loaded (${err.message}) — keycard will be generated without it`);
74
+ resolve(undefined);
75
+ });
76
+ }).on('error', (err) => {
77
+ console.warn(`Warning: coin logo not loaded (${err.message}) — keycard will be generated without it`);
78
+ resolve(undefined);
79
+ });
80
+ });
81
+ }
82
+ /**
83
+ * Build a {@link UpgradeEncryptionPdfGenerator} that regenerates the keycard PDF with the
84
+ * canonical `generateQrData` + `drawKeycard` flow. Pass the returned function into
85
+ * `Wallet.upgradeEncryption({ generatePdf })`.
86
+ */
87
+ function createKeycardPdfGenerator(options = {}) {
88
+ const { imageBaseUrl } = options;
89
+ return async ({ coinName, userKeychain, backupKeychain, bitgoKeychain, passphrase, passcodeEncryptionCode, walletLabel, }) => {
90
+ const staticsCoin = statics_1.coins.get(coinName);
91
+ const keyCardImage = imageBaseUrl
92
+ ? await loadKeycardImage(`${imageBaseUrl}/web/assets/keycards/${staticsCoin.family.toLowerCase()}.png`)
93
+ : undefined;
94
+ const qrData = await (0, generateQrData_1.generateQrData)({
95
+ coin: staticsCoin,
96
+ userKeychain,
97
+ backupKeychain,
98
+ bitgoKeychain,
99
+ passphrase,
100
+ passcodeEncryptionCode,
101
+ });
102
+ const questions = (0, faq_1.generateFaq)(staticsCoin.fullName);
103
+ return (0, drawKeycard_1.drawKeycard)({ qrData, questions, walletLabel, keyCardImage });
104
+ };
105
+ }
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZVdhbGxldEVuY3J5cHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXBncmFkZVdhbGxldEVuY3J5cHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0gsNENBNEJDO0FBWUQsOERBMEJDO0FBOUVELDZDQUErQjtBQUMvQixpREFBc0Q7QUFFdEQscURBQWtEO0FBQ2xELCtCQUFvQztBQUNwQywrQ0FBNEM7QUFFNUM7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsR0FBVyxFQUNYLFVBQTRCLEtBQUssQ0FBQyxHQUFHO0lBRXJDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUM3QixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxHQUFHLENBQUMsVUFBVSwwQ0FBMEMsQ0FBQyxDQUFDO2dCQUM5RyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25CLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1lBQzVCLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDOUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNqQixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLFdBQVcsQ0FBQztnQkFDL0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxXQUFXLFdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDekYsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBaUMsQ0FBQztnQkFDcEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLENBQUMsT0FBTywwQ0FBMEMsQ0FBQyxDQUFDO2dCQUN0RyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxDQUFDLE9BQU8sMENBQTBDLENBQUMsQ0FBQztZQUN0RyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFPRDs7OztHQUlHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsVUFBc0MsRUFBRTtJQUNoRixNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE9BQU8sS0FBSyxFQUFFLEVBQ1osUUFBUSxFQUNSLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLFVBQVUsRUFDVixzQkFBc0IsRUFDdEIsV0FBVyxHQUNaLEVBQUUsRUFBRTtRQUNILE1BQU0sV0FBVyxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFhLENBQUM7UUFDcEQsTUFBTSxZQUFZLEdBQUcsWUFBWTtZQUMvQixDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLFlBQVksd0JBQXdCLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQztZQUN2RyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLCtCQUFjLEVBQUM7WUFDbEMsSUFBSSxFQUFFLFdBQVc7WUFDakIsWUFBWTtZQUNaLGNBQWM7WUFDZCxhQUFhO1lBQ2IsVUFBVTtZQUNWLHNCQUFzQjtTQUN2QixDQUFDLENBQUM7UUFDSCxNQUFNLFNBQVMsR0FBRyxJQUFBLGlCQUFXLEVBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sSUFBQSx5QkFBVyxFQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQREYtZ2VuZXJhdGlvbiBoZWxwZXJzIGZvciB0aGUgd2FsbGV0IGVuY3J5cHRpb24gdXBncmFkZSBmbG93LlxuICpcbiAqIE9yY2hlc3RyYXRpb24gKHVubG9ja2luZyB0aGUgc2Vzc2lvbiwgcmUtZW5jcnlwdGluZyBrZXljaGFpbnMsIFBVVC1pbmcgdG8gdGhlIHNlcnZlcikgbGl2ZXMgb25cbiAqIGBXYWxsZXQudXBncmFkZUVuY3J5cHRpb25gIGluIGBAYml0Z28tYmV0YS9zZGstY29yZWAuIFRoaXMgbW9kdWxlIGNvbnRhaW5zIG9ubHkgdGhlIHBpZWNlcyB0aGF0XG4gKiBkZXBlbmQgb24gYGpzcGRmYC9gcXJjb2RlYCDigJQgYSBmYWN0b3J5IHRoYXQgcmV0dXJucyBhIGBVcGdyYWRlRW5jcnlwdGlvblBkZkdlbmVyYXRvcmAgdGhlXG4gKiBjYWxsZXIgY2FuIHBhc3MgaW50byB0aGF0IG1ldGhvZCwgcGx1cyBhIE5vZGUtc2lkZSBjb2luLWxvZ28gbG9hZGVyLlxuICovXG5cbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCB7IEJhc2VDb2luLCBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVXBncmFkZUVuY3J5cHRpb25QZGZHZW5lcmF0b3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZVFyRGF0YSB9IGZyb20gJy4vZ2VuZXJhdGVRckRhdGEnO1xuaW1wb3J0IHsgZ2VuZXJhdGVGYXEgfSBmcm9tICcuL2ZhcSc7XG5pbXBvcnQgeyBkcmF3S2V5Y2FyZCB9IGZyb20gJy4vZHJhd0tleWNhcmQnO1xuXG4vKipcbiAqIEZldGNoIGEgY29pbiBsb2dvIGltYWdlIGFuZCByZXR1cm4gYW4gSFRNTEltYWdlRWxlbWVudC1jb21wYXRpYmxlIG9iamVjdC5cbiAqIGpzUERGIHJlYWRzIGAuc3JjYCBpbiBOb2RlLmpzOyBjb21wdXRlS2V5Q2FyZEltYWdlRGltZW5zaW9ucyByZWFkcyBgLndpZHRoYC9gLmhlaWdodGAuXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCBvbiBhbnkgZmFpbHVyZSDigJQgdGhlIGtleWNhcmQgaXMgZ2VuZXJhdGVkIHdpdGhvdXQgdGhlIGxvZ28gaW4gdGhhdCBjYXNlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEtleWNhcmRJbWFnZShcbiAgdXJsOiBzdHJpbmcsXG4gIGh0dHBHZXQ6IHR5cGVvZiBodHRwcy5nZXQgPSBodHRwcy5nZXRcbik6IFByb21pc2U8SFRNTEltYWdlRWxlbWVudCB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBodHRwR2V0KHVybCwgKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiBjb2luIGxvZ28gbm90IGxvYWRlZCAoSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSkg4oCUIGtleWNhcmQgd2lsbCBiZSBnZW5lcmF0ZWQgd2l0aG91dCBpdGApO1xuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNodW5rczogQnVmZmVyW10gPSBbXTtcbiAgICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gY2h1bmtzLnB1c2goY2h1bmspKTtcbiAgICAgIHJlcy5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlcy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA/PyAnaW1hZ2UvcG5nJztcbiAgICAgICAgY29uc3QgZGF0YVVybCA9IGBkYXRhOiR7Y29udGVudFR5cGV9O2Jhc2U2NCwke0J1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZygnYmFzZTY0Jyl9YDtcbiAgICAgICAgY29uc3QgaW1nID0geyBzcmM6IGRhdGFVcmwsIHdpZHRoOiAzMDMsIGhlaWdodDogNDAgfSBhcyB1bmtub3duIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIHJlc29sdmUoaW1nKTtcbiAgICAgIH0pO1xuICAgICAgcmVzLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiBjb2luIGxvZ28gbm90IGxvYWRlZCAoJHtlcnIubWVzc2FnZX0pIOKAlCBrZXljYXJkIHdpbGwgYmUgZ2VuZXJhdGVkIHdpdGhvdXQgaXRgKTtcbiAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgICAgfSk7XG4gICAgfSkub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiBjb2luIGxvZ28gbm90IGxvYWRlZCAoJHtlcnIubWVzc2FnZX0pIOKAlCBrZXljYXJkIHdpbGwgYmUgZ2VuZXJhdGVkIHdpdGhvdXQgaXRgKTtcbiAgICAgIHJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Y2FyZFBkZkdlbmVyYXRvck9wdGlvbnMge1xuICAvKiogQmFzZSBVUkwgZm9yIGxvYWRpbmcgdGhlIGNvaW4gbG9nbyAoZS5nLiBFbnZpcm9ubWVudHNbZW52XS51cmkpLiBPbWl0IHRvIHNraXAgdGhlIGxvZ28uICovXG4gIGltYWdlQmFzZVVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCdWlsZCBhIHtAbGluayBVcGdyYWRlRW5jcnlwdGlvblBkZkdlbmVyYXRvcn0gdGhhdCByZWdlbmVyYXRlcyB0aGUga2V5Y2FyZCBQREYgd2l0aCB0aGVcbiAqIGNhbm9uaWNhbCBgZ2VuZXJhdGVRckRhdGFgICsgYGRyYXdLZXljYXJkYCBmbG93LiBQYXNzIHRoZSByZXR1cm5lZCBmdW5jdGlvbiBpbnRvXG4gKiBgV2FsbGV0LnVwZ3JhZGVFbmNyeXB0aW9uKHsgZ2VuZXJhdGVQZGYgfSlgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlS2V5Y2FyZFBkZkdlbmVyYXRvcihvcHRpb25zOiBLZXljYXJkUGRmR2VuZXJhdG9yT3B0aW9ucyA9IHt9KTogVXBncmFkZUVuY3J5cHRpb25QZGZHZW5lcmF0b3Ige1xuICBjb25zdCB7IGltYWdlQmFzZVVybCB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIGFzeW5jICh7XG4gICAgY29pbk5hbWUsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJhY2t1cEtleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZSxcbiAgICBwYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgIHdhbGxldExhYmVsLFxuICB9KSA9PiB7XG4gICAgY29uc3Qgc3RhdGljc0NvaW4gPSBjb2lucy5nZXQoY29pbk5hbWUpIGFzIEJhc2VDb2luO1xuICAgIGNvbnN0IGtleUNhcmRJbWFnZSA9IGltYWdlQmFzZVVybFxuICAgICAgPyBhd2FpdCBsb2FkS2V5Y2FyZEltYWdlKGAke2ltYWdlQmFzZVVybH0vd2ViL2Fzc2V0cy9rZXljYXJkcy8ke3N0YXRpY3NDb2luLmZhbWlseS50b0xvd2VyQ2FzZSgpfS5wbmdgKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcXJEYXRhID0gYXdhaXQgZ2VuZXJhdGVRckRhdGEoe1xuICAgICAgY29pbjogc3RhdGljc0NvaW4sXG4gICAgICB1c2VyS2V5Y2hhaW4sXG4gICAgICBiYWNrdXBLZXljaGFpbixcbiAgICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgICBwYXNzcGhyYXNlLFxuICAgICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9KTtcbiAgICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZUZhcShzdGF0aWNzQ29pbi5mdWxsTmFtZSk7XG4gICAgcmV0dXJuIGRyYXdLZXljYXJkKHsgcXJEYXRhLCBxdWVzdGlvbnMsIHdhbGxldExhYmVsLCBrZXlDYXJkSW1hZ2UgfSk7XG4gIH07XG59XG4iXX0=
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 = void 0;
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
- exports.splitKeys = splitKeys;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsU0FBUyxDQUFDLEdBQVcsRUFBRSxLQUFhO0lBQ2xELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUU7UUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7SUFFMUIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUU7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBZEQsOEJBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gc3BsaXRLZXlzKGtleTogc3RyaW5nLCBsaW1pdDogbnVtYmVyKTogc3RyaW5nW10ge1xuICBpZiAoa2V5Lmxlbmd0aCA8PSBsaW1pdCkge1xuICAgIHJldHVybiBba2V5XTtcbiAgfVxuXG4gIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG5cbiAgbGV0IHJpZ2h0SW5kZXggPSBsaW1pdDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyBpICs9IGxpbWl0KSB7XG4gICAga2V5cy5wdXNoKGtleS5zdWJzdHJpbmcoaSwgcmlnaHRJbmRleCkpO1xuICAgIHJpZ2h0SW5kZXggPSBNYXRoLm1pbihyaWdodEluZGV4ICsgbGltaXQsIGtleS5sZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4QkFjQztBQWRELFNBQWdCLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBYTtJQUNsRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztJQUUxQixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN4QyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHNwbGl0S2V5cyhrZXk6IHN0cmluZywgbGltaXQ6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgaWYgKGtleS5sZW5ndGggPD0gbGltaXQpIHtcbiAgICByZXR1cm4gW2tleV07XG4gIH1cblxuICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxldCByaWdodEluZGV4ID0gbGltaXQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSArPSBsaW1pdCkge1xuICAgIGtleXMucHVzaChrZXkuc3Vic3RyaW5nKGksIHJpZ2h0SW5kZXgpKTtcbiAgICByaWdodEluZGV4ID0gTWF0aC5taW4ocmlnaHRJbmRleCArIGxpbWl0LCBrZXkubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuIl19