@bitgo-beta/utxo-bin 2.8.3-beta.59 → 2.8.3-beta.591

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.
Files changed (139) hide show
  1. package/README.md +63 -4
  2. package/dist/bin/index.js +11 -2
  3. package/dist/src/AddressParser.d.ts +1 -1
  4. package/dist/src/AddressParser.d.ts.map +1 -1
  5. package/dist/src/AddressParser.js +19 -7
  6. package/dist/src/InputParser.d.ts +1 -2
  7. package/dist/src/InputParser.d.ts.map +1 -1
  8. package/dist/src/InputParser.js +29 -22
  9. package/dist/src/OutputParser.d.ts +3 -3
  10. package/dist/src/OutputParser.d.ts.map +1 -1
  11. package/dist/src/OutputParser.js +17 -4
  12. package/dist/src/Parser.d.ts +3 -3
  13. package/dist/src/Parser.d.ts.map +1 -1
  14. package/dist/src/Parser.js +15 -4
  15. package/dist/src/ParserTx.d.ts +3 -4
  16. package/dist/src/ParserTx.d.ts.map +1 -1
  17. package/dist/src/ParserTx.js +4 -5
  18. package/dist/src/ScriptParser.d.ts +20 -0
  19. package/dist/src/ScriptParser.d.ts.map +1 -0
  20. package/dist/src/ScriptParser.js +91 -0
  21. package/dist/src/TxParser.d.ts +3 -2
  22. package/dist/src/TxParser.d.ts.map +1 -1
  23. package/dist/src/TxParser.js +9 -7
  24. package/dist/src/args/format.d.ts +8 -0
  25. package/dist/src/args/format.d.ts.map +1 -0
  26. package/dist/src/args/format.js +15 -0
  27. package/dist/src/args/index.d.ts +5 -0
  28. package/dist/src/args/index.d.ts.map +1 -0
  29. package/dist/src/args/index.js +21 -0
  30. package/dist/src/args/parseNetwork.d.ts +25 -0
  31. package/dist/src/args/parseNetwork.d.ts.map +1 -0
  32. package/dist/src/args/parseNetwork.js +75 -0
  33. package/dist/src/args/parseString.d.ts +40 -0
  34. package/dist/src/args/parseString.d.ts.map +1 -0
  35. package/dist/src/args/parseString.js +120 -0
  36. package/dist/src/args/walletKeys.d.ts +38 -0
  37. package/dist/src/args/walletKeys.d.ts.map +1 -0
  38. package/dist/src/args/walletKeys.js +29 -0
  39. package/dist/src/bip32.d.ts +5 -0
  40. package/dist/src/bip32.d.ts.map +1 -0
  41. package/dist/src/bip32.js +24 -0
  42. package/dist/src/commands/cmdAddress/cmdGenerate.d.ts +21 -0
  43. package/dist/src/commands/cmdAddress/cmdGenerate.d.ts.map +1 -0
  44. package/dist/src/commands/cmdAddress/cmdGenerate.js +89 -0
  45. package/dist/src/commands/cmdAddress/cmdParse.d.ts +20 -0
  46. package/dist/src/commands/cmdAddress/cmdParse.d.ts.map +1 -0
  47. package/dist/src/commands/cmdAddress/cmdParse.js +28 -0
  48. package/dist/src/commands/cmdAddress/index.d.ts +3 -0
  49. package/dist/src/commands/cmdAddress/index.d.ts.map +1 -0
  50. package/dist/src/commands/cmdAddress/index.js +16 -0
  51. package/dist/src/commands/cmdBip32.d.ts +16 -0
  52. package/dist/src/commands/cmdBip32.d.ts.map +1 -0
  53. package/dist/src/commands/cmdBip32.js +45 -0
  54. package/dist/src/commands/cmdParseScript.d.ts +18 -0
  55. package/dist/src/commands/cmdParseScript.d.ts.map +1 -0
  56. package/dist/src/commands/cmdParseScript.js +27 -0
  57. package/dist/src/commands/cmdParseTx.d.ts +30 -0
  58. package/dist/src/commands/cmdParseTx.d.ts.map +1 -0
  59. package/dist/src/commands/cmdParseTx.js +120 -0
  60. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.d.ts +13 -0
  61. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.d.ts.map +1 -0
  62. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.js +67 -0
  63. package/dist/src/commands/cmdPsbt/cmdAddOutput.d.ts +11 -0
  64. package/dist/src/commands/cmdPsbt/cmdAddOutput.d.ts.map +1 -0
  65. package/dist/src/commands/cmdPsbt/cmdAddOutput.js +89 -0
  66. package/dist/src/commands/cmdPsbt/cmdCreate.d.ts +9 -0
  67. package/dist/src/commands/cmdPsbt/cmdCreate.d.ts.map +1 -0
  68. package/dist/src/commands/cmdPsbt/cmdCreate.js +23 -0
  69. package/dist/src/commands/cmdPsbt/cmdFinalize.d.ts +11 -0
  70. package/dist/src/commands/cmdPsbt/cmdFinalize.d.ts.map +1 -0
  71. package/dist/src/commands/cmdPsbt/cmdFinalize.js +43 -0
  72. package/dist/src/commands/cmdPsbt/cmdSign.d.ts +7 -0
  73. package/dist/src/commands/cmdPsbt/cmdSign.d.ts.map +1 -0
  74. package/dist/src/commands/cmdPsbt/cmdSign.js +24 -0
  75. package/dist/src/commands/cmdPsbt/index.d.ts +8 -0
  76. package/dist/src/commands/cmdPsbt/index.d.ts.map +1 -0
  77. package/dist/src/commands/cmdPsbt/index.js +27 -0
  78. package/dist/src/commands/cmdPsbt/withPsbt.d.ts +63 -0
  79. package/dist/src/commands/cmdPsbt/withPsbt.d.ts.map +1 -0
  80. package/dist/src/commands/cmdPsbt/withPsbt.js +66 -0
  81. package/dist/src/commands/cmdPsbt/wrap.d.ts +5 -0
  82. package/dist/src/commands/cmdPsbt/wrap.d.ts.map +1 -0
  83. package/dist/src/commands/cmdPsbt/wrap.js +27 -0
  84. package/dist/src/commands/formatString.d.ts +8 -0
  85. package/dist/src/commands/formatString.d.ts.map +1 -0
  86. package/dist/src/commands/formatString.js +14 -0
  87. package/dist/src/commands/index.d.ts +6 -0
  88. package/dist/src/commands/index.d.ts.map +1 -0
  89. package/dist/src/commands/index.js +22 -0
  90. package/dist/src/ecdsa.d.ts +0 -1
  91. package/dist/src/ecdsa.d.ts.map +1 -1
  92. package/dist/src/ecdsa.js +2 -3
  93. package/dist/src/fetch.d.ts +8 -1
  94. package/dist/src/fetch.d.ts.map +1 -1
  95. package/dist/src/fetch.js +42 -9
  96. package/dist/src/format.d.ts.map +1 -1
  97. package/dist/src/format.js +16 -8
  98. package/dist/src/generateAddress.d.ts +47 -0
  99. package/dist/src/generateAddress.d.ts.map +1 -0
  100. package/dist/src/generateAddress.js +143 -0
  101. package/dist/src/hollowSegwitSpend.d.ts +1 -1
  102. package/dist/src/hollowSegwitSpend.d.ts.map +1 -1
  103. package/dist/src/hollowSegwitSpend.js +3 -4
  104. package/dist/src/parseUnknown.d.ts +3 -1
  105. package/dist/src/parseUnknown.d.ts.map +1 -1
  106. package/dist/src/parseUnknown.js +5 -6
  107. package/dist/test/args/stringToBuffer.d.ts +2 -0
  108. package/dist/test/args/stringToBuffer.d.ts.map +1 -0
  109. package/dist/test/args/stringToBuffer.js +16 -0
  110. package/dist/test/bip32.d.ts +2 -0
  111. package/dist/test/bip32.d.ts.map +1 -0
  112. package/dist/test/bip32.js +22 -0
  113. package/dist/test/bip32.util.d.ts +6 -0
  114. package/dist/test/bip32.util.d.ts.map +1 -0
  115. package/dist/test/bip32.util.js +13 -0
  116. package/dist/test/cmdPsbt.d.ts +2 -0
  117. package/dist/test/cmdPsbt.d.ts.map +1 -0
  118. package/dist/test/cmdPsbt.js +102 -0
  119. package/dist/test/fixtures.d.ts +4 -4
  120. package/dist/test/fixtures.d.ts.map +1 -1
  121. package/dist/test/fixtures.js +20 -14
  122. package/dist/test/generateAddress.d.ts +2 -0
  123. package/dist/test/generateAddress.d.ts.map +1 -0
  124. package/dist/test/generateAddress.js +46 -0
  125. package/dist/test/parseAddress.d.ts +1 -5
  126. package/dist/test/parseAddress.d.ts.map +1 -1
  127. package/dist/test/parseAddress.js +20 -22
  128. package/dist/test/parseScript.d.ts +2 -0
  129. package/dist/test/parseScript.d.ts.map +1 -0
  130. package/dist/test/parseScript.js +38 -0
  131. package/dist/test/parseTransaction.js +14 -10
  132. package/dist/tsconfig.tsbuildinfo +1 -1
  133. package/package.json +9 -6
  134. package/dist/src/commands.d.ts +0 -48
  135. package/dist/src/commands.d.ts.map +0 -1
  136. package/dist/src/commands.js +0 -213
  137. package/dist/src/readStdin.d.ts +0 -5
  138. package/dist/src/readStdin.d.ts.map +0 -1
  139. package/dist/src/readStdin.js +0 -42
@@ -1,17 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatTree = exports.formatSat = void 0;
3
+ exports.formatSat = formatSat;
4
+ exports.formatTree = formatTree;
4
5
  const chalk_1 = require("chalk");
5
6
  const archy = require("archy");
6
7
  const hideDefault = ['pubkeys', 'sequence', 'locktime', 'scriptSig', 'witness'];
7
8
  function formatSat(v) {
8
9
  return (Number(v) / 1e8).toFixed(8);
9
10
  }
10
- exports.formatSat = formatSat;
11
11
  function formatTree(n, { hide = hideDefault, chalk = new chalk_1.Instance() } = {}) {
12
- function getLabel(label, v) {
12
+ function getLabel(label, v, { showUndefined } = { showUndefined: false }) {
13
13
  const arr = [chalk.bold(label)];
14
- if (v !== undefined) {
14
+ if (v === undefined) {
15
+ if (showUndefined) {
16
+ arr.push(chalk.dim('undefined'));
17
+ }
18
+ }
19
+ else {
15
20
  arr.push(String(v));
16
21
  }
17
22
  return arr.join(': ');
@@ -30,18 +35,21 @@ function formatTree(n, { hide = hideDefault, chalk = new chalk_1.Instance() } =
30
35
  return String(v);
31
36
  }
32
37
  if (Buffer.isBuffer(v)) {
33
- return v.length === 0 ? '[]' : v.toString('hex');
38
+ return `${v.toString('hex')} ${chalk.dim(`(${v.length} bytes)`)}`;
39
+ }
40
+ if (v instanceof Uint8Array) {
41
+ return getLabelFromValue(Buffer.from(v));
34
42
  }
35
43
  }
36
44
  throw new Error(`could not get label from value ${typeof v}`);
37
45
  }
38
46
  function toArchy(n) {
47
+ var _a;
39
48
  return {
40
- label: getLabel(n.label, getLabelFromValue(n.value)),
49
+ label: getLabel(n.label, getLabelFromValue(n.value), { showUndefined: !Boolean((_a = n.nodes) === null || _a === void 0 ? void 0 : _a.length) }),
41
50
  nodes: n.nodes ? n.nodes.flatMap((e) => (hide.includes(e.label) ? [] : [toArchy(e)])) : undefined,
42
51
  };
43
52
  }
44
53
  return archy(toArchy(n));
45
54
  }
46
- exports.formatTree = formatTree;
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBd0M7QUFDeEMsK0JBQStCO0FBRy9CLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLFNBQWdCLFNBQVMsQ0FBQyxDQUFrQjtJQUMxQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsOEJBRUM7QUFFRCxTQUFnQixVQUFVLENBQ3hCLENBQWEsRUFDYixFQUFFLElBQUksR0FBRyxXQUFXLEVBQUUsS0FBSyxHQUFHLElBQUksZ0JBQVEsRUFBRSxLQUF5QyxFQUFFO0lBRXZGLFNBQVMsUUFBUSxDQUFDLEtBQXNCLEVBQUUsQ0FBVztRQUNuRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjtRQUNELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FBQyxDQUFrQjtRQUMzQyxRQUFRLE9BQU8sQ0FBQyxFQUFFO1lBQ2hCLEtBQUssV0FBVztnQkFDZCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDZCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEI7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN0QixPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2xEO1NBQ0o7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVMsT0FBTyxDQUFDLENBQWE7UUFDNUIsT0FBTztZQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2xHLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQXhDRCxnQ0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFsaywgSW5zdGFuY2UgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyBhcmNoeSBmcm9tICdhcmNoeSc7XG5pbXBvcnQgeyBQYXJzZXJOb2RlLCBQYXJzZXJOb2RlVmFsdWUgfSBmcm9tICcuL1BhcnNlcic7XG5cbmNvbnN0IGhpZGVEZWZhdWx0ID0gWydwdWJrZXlzJywgJ3NlcXVlbmNlJywgJ2xvY2t0aW1lJywgJ3NjcmlwdFNpZycsICd3aXRuZXNzJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTYXQodjogbnVtYmVyIHwgYmlnaW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIChOdW1iZXIodikgLyAxZTgpLnRvRml4ZWQoOCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUcmVlKFxuICBuOiBQYXJzZXJOb2RlLFxuICB7IGhpZGUgPSBoaWRlRGVmYXVsdCwgY2hhbGsgPSBuZXcgSW5zdGFuY2UoKSB9OiB7IGhpZGU/OiBzdHJpbmdbXTsgY2hhbGs/OiBDaGFsayB9ID0ge31cbik6IHN0cmluZyB7XG4gIGZ1bmN0aW9uIGdldExhYmVsKGxhYmVsOiBzdHJpbmcgfCBudW1iZXIsIHY/OiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcnIgPSBbY2hhbGsuYm9sZChsYWJlbCldO1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFyci5wdXNoKFN0cmluZyh2KSk7XG4gICAgfVxuICAgIHJldHVybiBhcnIuam9pbignOiAnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExhYmVsRnJvbVZhbHVlKHY6IFBhcnNlck5vZGVWYWx1ZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoICh0eXBlb2Ygdikge1xuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICdiaWdpbnQnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKHYgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodikpIHtcbiAgICAgICAgICByZXR1cm4gdi5sZW5ndGggPT09IDAgPyAnW10nIDogdi50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZ2V0IGxhYmVsIGZyb20gdmFsdWUgJHt0eXBlb2Ygdn1gKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvQXJjaHkobjogUGFyc2VyTm9kZSk6IGFyY2h5LkRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogZ2V0TGFiZWwobi5sYWJlbCwgZ2V0TGFiZWxGcm9tVmFsdWUobi52YWx1ZSkpLFxuICAgICAgbm9kZXM6IG4ubm9kZXMgPyBuLm5vZGVzLmZsYXRNYXAoKGUpID0+IChoaWRlLmluY2x1ZGVzKGUubGFiZWwpID8gW10gOiBbdG9BcmNoeShlKV0pKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGFyY2h5KHRvQXJjaHkobikpO1xufVxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLDhCQUVDO0FBRUQsZ0NBbURDO0FBOURELGlDQUF3QztBQUN4QywrQkFBK0I7QUFJL0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFaEYsU0FBZ0IsU0FBUyxDQUFDLENBQWtCO0lBQzFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFnQixVQUFVLENBQ3hCLENBQWEsRUFDYixFQUFFLElBQUksR0FBRyxXQUFXLEVBQUUsS0FBSyxHQUFHLElBQUksZ0JBQVEsRUFBRSxLQUF5QyxFQUFFO0lBRXZGLFNBQVMsUUFBUSxDQUNmLEtBQXNCLEVBQ3RCLENBQVcsRUFDWCxFQUFFLGFBQWEsS0FBaUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFO1FBRXhFLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FBQyxDQUFrQjtRQUMzQyxRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDakIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ2YsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLENBQUM7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNwRSxDQUFDO2dCQUNELElBQUksQ0FBQyxZQUFZLFVBQVUsRUFBRSxDQUFDO29CQUM1QixPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVMsT0FBTyxDQUFDLENBQWE7O1FBQzVCLE9BQU87WUFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQUEsQ0FBQyxDQUFDLEtBQUssMENBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDbEcsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbGssIEluc3RhbmNlIH0gZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgYXJjaHkgZnJvbSAnYXJjaHknO1xuXG5pbXBvcnQgeyBQYXJzZXJOb2RlLCBQYXJzZXJOb2RlVmFsdWUgfSBmcm9tICcuL1BhcnNlcic7XG5cbmNvbnN0IGhpZGVEZWZhdWx0ID0gWydwdWJrZXlzJywgJ3NlcXVlbmNlJywgJ2xvY2t0aW1lJywgJ3NjcmlwdFNpZycsICd3aXRuZXNzJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTYXQodjogbnVtYmVyIHwgYmlnaW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIChOdW1iZXIodikgLyAxZTgpLnRvRml4ZWQoOCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUcmVlKFxuICBuOiBQYXJzZXJOb2RlLFxuICB7IGhpZGUgPSBoaWRlRGVmYXVsdCwgY2hhbGsgPSBuZXcgSW5zdGFuY2UoKSB9OiB7IGhpZGU/OiBzdHJpbmdbXTsgY2hhbGs/OiBDaGFsayB9ID0ge31cbik6IHN0cmluZyB7XG4gIGZ1bmN0aW9uIGdldExhYmVsKFxuICAgIGxhYmVsOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgdj86IHVua25vd24sXG4gICAgeyBzaG93VW5kZWZpbmVkIH06IHsgc2hvd1VuZGVmaW5lZDogYm9vbGVhbiB9ID0geyBzaG93VW5kZWZpbmVkOiBmYWxzZSB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgYXJyID0gW2NoYWxrLmJvbGQobGFiZWwpXTtcbiAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoc2hvd1VuZGVmaW5lZCkge1xuICAgICAgICBhcnIucHVzaChjaGFsay5kaW0oJ3VuZGVmaW5lZCcpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYXJyLnB1c2goU3RyaW5nKHYpKTtcbiAgICB9XG4gICAgcmV0dXJuIGFyci5qb2luKCc6ICcpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TGFiZWxGcm9tVmFsdWUodjogUGFyc2VyTm9kZVZhbHVlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiB2KSB7XG4gICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgICAgIHJldHVybiBTdHJpbmcodik7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBpZiAodiA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcodik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2KSkge1xuICAgICAgICAgIHJldHVybiBgJHt2LnRvU3RyaW5nKCdoZXgnKX0gJHtjaGFsay5kaW0oYCgke3YubGVuZ3RofSBieXRlcylgKX1gO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2IGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICAgIHJldHVybiBnZXRMYWJlbEZyb21WYWx1ZShCdWZmZXIuZnJvbSh2KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZ2V0IGxhYmVsIGZyb20gdmFsdWUgJHt0eXBlb2Ygdn1gKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvQXJjaHkobjogUGFyc2VyTm9kZSk6IGFyY2h5LkRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogZ2V0TGFiZWwobi5sYWJlbCwgZ2V0TGFiZWxGcm9tVmFsdWUobi52YWx1ZSksIHsgc2hvd1VuZGVmaW5lZDogIUJvb2xlYW4obi5ub2Rlcz8ubGVuZ3RoKSB9KSxcbiAgICAgIG5vZGVzOiBuLm5vZGVzID8gbi5ub2Rlcy5mbGF0TWFwKChlKSA9PiAoaGlkZS5pbmNsdWRlcyhlLmxhYmVsKSA/IFtdIDogW3RvQXJjaHkoZSldKSkgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBhcmNoeSh0b0FyY2h5KG4pKTtcbn1cbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { KeyOptions } from './args';
3
+ type FixedScriptAddressProperties = {
4
+ chain: utxolib.bitgo.ChainCode;
5
+ index: number;
6
+ type: utxolib.bitgo.outputScripts.ScriptType;
7
+ userPath: string;
8
+ backupPath: string;
9
+ bitgoPath: string;
10
+ userKey: string;
11
+ backupKey: string;
12
+ bitgoKey: string;
13
+ redeemScript?: string;
14
+ witnessScript?: string;
15
+ scriptPubKey: string;
16
+ address: string;
17
+ };
18
+ export declare function getAsPlaceholderDescription(v: Record<string, string>): string;
19
+ export declare function getFixedScriptAddressPlaceholderDescription(): string;
20
+ export declare function formatAddressTree(props: FixedScriptAddressProperties | DescriptorAddressProperties): string;
21
+ export declare function formatAddressWithFormatString(props: Record<string, unknown>, placeholders: Record<string, string>, format: string): string;
22
+ export declare function formatFixedScriptAddress(props: FixedScriptAddressProperties, format: string): string;
23
+ export declare function getRange(start: number, end: number): number[];
24
+ export declare function parseIndexRange(ranges: string[]): number[];
25
+ export declare function generateFixedScriptAddress(argv: KeyOptions & {
26
+ network?: utxolib.Network;
27
+ chain?: number[];
28
+ format: string;
29
+ index: number[];
30
+ }): Generator<FixedScriptAddressProperties>;
31
+ type DescriptorAddressProperties = {
32
+ descriptor: string;
33
+ index: number;
34
+ explicitScript: string;
35
+ scriptPubKey: string;
36
+ address: string;
37
+ };
38
+ export declare function getDescriptorAddressPlaceholderDescription(): string;
39
+ export declare function formatDescriptorAddress(props: DescriptorAddressProperties, format: string): string;
40
+ export declare function generateDescriptorAddress(argv: {
41
+ network: utxolib.Network;
42
+ descriptor: string;
43
+ format: string;
44
+ index: number[];
45
+ }): Generator<DescriptorAddressProperties>;
46
+ export {};
47
+ //# sourceMappingURL=generateAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateAddress.d.ts","sourceRoot":"","sources":["../../src/generateAddress.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAMhD,OAAO,EAAE,UAAU,EAAqB,MAAM,QAAQ,CAAC;AASvD,KAAK,4BAA4B,GAAG;IAClC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAmBF,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAI7E;AAED,wBAAgB,2CAA2C,IAAI,MAAM,CAEpE;AA6BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,4BAA4B,GAAG,2BAA2B,GAAG,MAAM,CAG3G;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,MAAM,EAAE,MAAM,GACb,MAAM,CAUR;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,4BAA4B,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpG;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ1D;AAED,wBAAiB,0BAA0B,CACzC,IAAI,EAAE,UAAU,GAAG;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,GACA,SAAS,CAAC,4BAA4B,CAAC,CAUzC;AAED,KAAK,2BAA2B,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAUF,wBAAgB,0CAA0C,IAAI,MAAM,CAEnE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAElG;AAED,wBAAiB,yBAAyB,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,GAAG,SAAS,CAAC,2BAA2B,CAAC,CAezC"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAsPlaceholderDescription = getAsPlaceholderDescription;
4
+ exports.getFixedScriptAddressPlaceholderDescription = getFixedScriptAddressPlaceholderDescription;
5
+ exports.formatAddressTree = formatAddressTree;
6
+ exports.formatAddressWithFormatString = formatAddressWithFormatString;
7
+ exports.formatFixedScriptAddress = formatFixedScriptAddress;
8
+ exports.getRange = getRange;
9
+ exports.parseIndexRange = parseIndexRange;
10
+ exports.generateFixedScriptAddress = generateFixedScriptAddress;
11
+ exports.getDescriptorAddressPlaceholderDescription = getDescriptorAddressPlaceholderDescription;
12
+ exports.formatDescriptorAddress = formatDescriptorAddress;
13
+ exports.generateDescriptorAddress = generateDescriptorAddress;
14
+ const assert = require("assert");
15
+ const utxolib = require("@bitgo-beta/utxo-lib");
16
+ const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
17
+ const Parser_1 = require("./Parser");
18
+ const parseUnknown_1 = require("./parseUnknown");
19
+ const format_1 = require("./format");
20
+ const args_1 = require("./args");
21
+ function getDefaultChainCodes() {
22
+ return utxolib.bitgo.chainCodes.filter(
23
+ // these are rare and show an annoying warning in stderr
24
+ (c) => utxolib.bitgo.scriptTypeForChain(c) !== 'p2tr' && utxolib.bitgo.scriptTypeForChain(c) !== 'p2trMusig2');
25
+ }
26
+ const fixedScriptPlaceholders = {
27
+ '%c': 'chain',
28
+ '%i': 'index',
29
+ '%p': 'userPath',
30
+ '%t': 'type',
31
+ '%p0': 'userPath',
32
+ '%p1': 'backupPath',
33
+ '%p2': 'bitgoPath',
34
+ '%k0': 'userKey',
35
+ '%k1': 'backupKey',
36
+ '%k2': 'bitgoKey',
37
+ '%s': 'scriptPubKey',
38
+ '%r': 'redeemScript',
39
+ '%w': 'witnessScript',
40
+ '%a': 'address',
41
+ };
42
+ function getAsPlaceholderDescription(v) {
43
+ return Object.entries(v)
44
+ .map(([placeholder, prop]) => `${placeholder} -> ${prop}`)
45
+ .join('\n');
46
+ }
47
+ function getFixedScriptAddressPlaceholderDescription() {
48
+ return getAsPlaceholderDescription(fixedScriptPlaceholders);
49
+ }
50
+ function getAddressProperties(keys, chain, index, network) {
51
+ var _a, _b;
52
+ const [userPath, backupPath, bitgoPath] = keys.triple.map((k) => keys.getDerivationPath(k, chain, index));
53
+ const scripts = utxolib.bitgo.getWalletOutputScripts(keys, chain, index);
54
+ const [userKey, backupKey, bitgoKey] = keys.triple.map((k) => k.derivePath(userPath).publicKey.toString('hex'));
55
+ const address = utxolib.address.fromOutputScript(scripts.scriptPubKey, network);
56
+ return {
57
+ chain,
58
+ index,
59
+ type: utxolib.bitgo.scriptTypeForChain(chain),
60
+ userPath,
61
+ backupPath,
62
+ bitgoPath,
63
+ userKey,
64
+ backupKey,
65
+ bitgoKey,
66
+ scriptPubKey: scripts.scriptPubKey.toString('hex'),
67
+ redeemScript: (_a = scripts.redeemScript) === null || _a === void 0 ? void 0 : _a.toString('hex'),
68
+ witnessScript: (_b = scripts.witnessScript) === null || _b === void 0 ? void 0 : _b.toString('hex'),
69
+ address,
70
+ };
71
+ }
72
+ function formatAddressTree(props) {
73
+ const parser = new Parser_1.Parser();
74
+ return (0, format_1.formatTree)((0, parseUnknown_1.parseUnknown)(parser, 'address', props));
75
+ }
76
+ function formatAddressWithFormatString(props, placeholders, format) {
77
+ // replace all patterns with a % prefix from format string with the corresponding property
78
+ // e.g. %p0 -> userPath, %k1 -> backupKey, etc.
79
+ return format.replace(/%[a-z0-9]+/gi, (match) => {
80
+ if (match in placeholders) {
81
+ const prop = placeholders[match];
82
+ return String(props[prop]);
83
+ }
84
+ return match;
85
+ });
86
+ }
87
+ function formatFixedScriptAddress(props, format) {
88
+ return formatAddressWithFormatString(props, fixedScriptPlaceholders, format);
89
+ }
90
+ function getRange(start, end) {
91
+ return Array.from({ length: end - start + 1 }, (_, i) => start + i);
92
+ }
93
+ function parseIndexRange(ranges) {
94
+ return ranges.flatMap((range) => {
95
+ const [start, end] = range.split('-');
96
+ if (end) {
97
+ return getRange(Number(start), Number(end));
98
+ }
99
+ return [Number(start)];
100
+ });
101
+ }
102
+ function* generateFixedScriptAddress(argv) {
103
+ var _a, _b;
104
+ const rootXpubs = (0, args_1.getRootWalletKeys)(argv);
105
+ const chains = (_a = argv.chain) !== null && _a !== void 0 ? _a : getDefaultChainCodes();
106
+ for (const i of argv.index) {
107
+ for (const chain of chains) {
108
+ assert(utxolib.bitgo.isChainCode(chain));
109
+ // yield formatAddress(rootXpubs, chain, i, argv.network ?? utxolib.networks.bitcoin, argv.format);
110
+ yield getAddressProperties(rootXpubs, chain, i, (_b = argv.network) !== null && _b !== void 0 ? _b : utxolib.networks.bitcoin);
111
+ }
112
+ }
113
+ }
114
+ const descriptorAddressPlaceholders = {
115
+ '%d': 'descriptor',
116
+ '%i': 'index',
117
+ '%e': 'explicitScript',
118
+ '%s': 'scriptPubKey',
119
+ '%a': 'address',
120
+ };
121
+ function getDescriptorAddressPlaceholderDescription() {
122
+ return getAsPlaceholderDescription(descriptorAddressPlaceholders);
123
+ }
124
+ function formatDescriptorAddress(props, format) {
125
+ return formatAddressWithFormatString(props, descriptorAddressPlaceholders, format);
126
+ }
127
+ function* generateDescriptorAddress(argv) {
128
+ const descriptor = wasm_miniscript_1.Descriptor.fromString(argv.descriptor, 'derivable');
129
+ for (const i of argv.index) {
130
+ const derived = descriptor.atDerivationIndex(i);
131
+ const explicitScript = Buffer.from(derived.encode());
132
+ const scriptPubKey = Buffer.from(derived.scriptPubkey());
133
+ const address = utxolib.address.fromOutputScript(scriptPubKey, argv.network);
134
+ yield {
135
+ descriptor: derived.toString(),
136
+ index: i,
137
+ address,
138
+ explicitScript: explicitScript.toString('hex'),
139
+ scriptPubKey: scriptPubKey.toString('hex'),
140
+ };
141
+ }
142
+ }
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVBZGRyZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRlQWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtEQSxrRUFJQztBQUVELGtHQUVDO0FBNkJELDhDQUdDO0FBRUQsc0VBY0M7QUFFRCw0REFFQztBQUVELDRCQUVDO0FBRUQsMENBUUM7QUFFRCxnRUFpQkM7QUFrQkQsZ0dBRUM7QUFFRCwwREFFQztBQUVELDhEQW9CQztBQTdMRCxpQ0FBaUM7QUFFakMsZ0RBQWdEO0FBQ2hELDREQUFvRDtBQUVwRCxxQ0FBa0M7QUFDbEMsaURBQThDO0FBQzlDLHFDQUFzQztBQUN0QyxpQ0FBdUQ7QUFFdkQsU0FBUyxvQkFBb0I7SUFDM0IsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNO0lBQ3BDLHdEQUF3RDtJQUN4RCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLENBQzlHLENBQUM7QUFDSixDQUFDO0FBa0JELE1BQU0sdUJBQXVCLEdBQUc7SUFDOUIsSUFBSSxFQUFFLE9BQU87SUFDYixJQUFJLEVBQUUsT0FBTztJQUNiLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLFVBQVU7SUFDakIsS0FBSyxFQUFFLFlBQVk7SUFDbkIsS0FBSyxFQUFFLFdBQVc7SUFDbEIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsS0FBSyxFQUFFLFdBQVc7SUFDbEIsS0FBSyxFQUFFLFVBQVU7SUFDakIsSUFBSSxFQUFFLGNBQWM7SUFDcEIsSUFBSSxFQUFFLGNBQWM7SUFDcEIsSUFBSSxFQUFFLGVBQWU7SUFDckIsSUFBSSxFQUFFLFNBQVM7Q0FDUCxD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QztRQUM3RSxNQUFNO1lBQ0osVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDOUIsS0FBSyxFQUFFLENBQUM7WUFDUixPQUFPO1lBQ1AsY0FBYyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzlDLFlBQVksRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCB7IHBhcnNlVW5rbm93biB9IGZyb20gJy4vcGFyc2VVbmtub3duJztcbmltcG9ydCB7IGZvcm1hdFRyZWUgfSBmcm9tICcuL2Zvcm1hdCc7XG5pbXBvcnQgeyBLZXlPcHRpb25zLCBnZXRSb290V2FsbGV0S2V5cyB9IGZyb20gJy4vYXJncyc7XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRDaGFpbkNvZGVzKCk6IG51bWJlcltdIHtcbiAgcmV0dXJuIHV0eG9saWIuYml0Z28uY2hhaW5Db2Rlcy5maWx0ZXIoXG4gICAgLy8gdGhlc2UgYXJlIHJhcmUgYW5kIHNob3cgYW4gYW5ub3lpbmcgd2FybmluZyBpbiBzdGRlcnJcbiAgICAoYykgPT4gdXR4b2xpYi5iaXRnby5zY3JpcHRUeXBlRm9yQ2hhaW4oYykgIT09ICdwMnRyJyAmJiB1dHhvbGliLmJpdGdvLnNjcmlwdFR5cGVGb3JDaGFpbihjKSAhPT0gJ3AydHJNdXNpZzInXG4gICk7XG59XG5cbnR5cGUgRml4ZWRTY3JpcHRBZGRyZXNzUHJvcGVydGllcyA9IHtcbiAgY2hhaW46IHV0eG9saWIuYml0Z28uQ2hhaW5Db2RlO1xuICBpbmRleDogbnVtYmVyO1xuICB0eXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTtcbiAgdXNlclBhdGg6IHN0cmluZztcbiAgYmFja3VwUGF0aDogc3RyaW5nO1xuICBiaXRnb1BhdGg6IHN0cmluZztcbiAgdXNlcktleTogc3RyaW5nO1xuICBiYWNrdXBLZXk6IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbiAgcmVkZWVtU2NyaXB0Pzogc3RyaW5nO1xuICB3aXRuZXNzU2NyaXB0Pzogc3RyaW5nO1xuICBzY3JpcHRQdWJLZXk6IHN0cmluZztcbiAgYWRkcmVzczogc3RyaW5nO1xufTtcblxuY29uc3QgZml4ZWRTY3JpcHRQbGFjZWhvbGRlcnMgPSB7XG4gICclYyc6ICdjaGFpbicsXG4gICclaSc6ICdpbmRleCcsXG4gICclcCc6ICd1c2VyUGF0aCcsXG4gICcldCc6ICd0eXBlJyxcbiAgJyVwMCc6ICd1c2VyUGF0aCcsXG4gICclcDEnOiAnYmFja3VwUGF0aCcsXG4gICclcDInOiAnYml0Z29QYXRoJyxcbiAgJyVrMCc6ICd1c2VyS2V5JyxcbiAgJyVrMSc6ICdiYWNrdXBLZXknLFxuICAnJWsyJzogJ2JpdGdvS2V5JyxcbiAgJyVzJzogJ3NjcmlwdFB1YktleScsXG4gICclcic6ICdyZWRlZW1TY3JpcHQnLFxuICAnJXcnOiAnd2l0bmVzc1NjcmlwdCcsXG4gICclYSc6ICdhZGRyZXNzJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBc1BsYWNlaG9sZGVyRGVzY3JpcHRpb24odjogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyh2KVxuICAgIC5tYXAoKFtwbGFjZWhvbGRlciwgcHJvcF0pID0+IGAke3BsYWNlaG9sZGVyfSAtPiAke3Byb3B9YClcbiAgICAuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXhlZFNjcmlwdEFkZHJlc3NQbGFjZWhvbGRlckRlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRBc1BsYWNlaG9sZGVyRGVzY3JpcHRpb24oZml4ZWRTY3JpcHRQbGFjZWhvbGRlcnMpO1xufVxuXG5mdW5jdGlvbiBnZXRBZGRyZXNzUHJvcGVydGllcyhcbiAga2V5czogdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyxcbiAgY2hhaW46IHV0eG9saWIuYml0Z28uQ2hhaW5Db2RlLFxuICBpbmRleDogbnVtYmVyLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IEZpeGVkU2NyaXB0QWRkcmVzc1Byb3BlcnRpZXMge1xuICBjb25zdCBbdXNlclBhdGgsIGJhY2t1cFBhdGgsIGJpdGdvUGF0aF0gPSBrZXlzLnRyaXBsZS5tYXAoKGspID0+IGtleXMuZ2V0RGVyaXZhdGlvblBhdGgoaywgY2hhaW4sIGluZGV4KSk7XG4gIGNvbnN0IHNjcmlwdHMgPSB1dHhvbGliLmJpdGdvLmdldFdhbGxldE91dHB1dFNjcmlwdHMoa2V5cywgY2hhaW4sIGluZGV4KTtcbiAgY29uc3QgW3VzZXJLZXksIGJhY2t1cEtleSwgYml0Z29LZXldID0ga2V5cy50cmlwbGUubWFwKChrKSA9PiBrLmRlcml2ZVBhdGgodXNlclBhdGgpLnB1YmxpY0tleS50b1N0cmluZygnaGV4JykpO1xuICBjb25zdCBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0cy5zY3JpcHRQdWJLZXksIG5ldHdvcmspO1xuICByZXR1cm4ge1xuICAgIGNoYWluLFxuICAgIGluZGV4LFxuICAgIHR5cGU6IHV0eG9saWIuYml0Z28uc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKSxcbiAgICB1c2VyUGF0aCxcbiAgICBiYWNrdXBQYXRoLFxuICAgIGJpdGdvUGF0aCxcbiAgICB1c2VyS2V5LFxuICAgIGJhY2t1cEtleSxcbiAgICBiaXRnb0tleSxcbiAgICBzY3JpcHRQdWJLZXk6IHNjcmlwdHMuc2NyaXB0UHViS2V5LnRvU3RyaW5nKCdoZXgnKSxcbiAgICByZWRlZW1TY3JpcHQ6IHNjcmlwdHMucmVkZWVtU2NyaXB0Py50b1N0cmluZygnaGV4JyksXG4gICAgd2l0bmVzc1NjcmlwdDogc2NyaXB0cy53aXRuZXNzU2NyaXB0Py50b1N0cmluZygnaGV4JyksXG4gICAgYWRkcmVzcyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEFkZHJlc3NUcmVlKHByb3BzOiBGaXhlZFNjcmlwdEFkZHJlc3NQcm9wZXJ0aWVzIHwgRGVzY3JpcHRvckFkZHJlc3NQcm9wZXJ0aWVzKTogc3RyaW5nIHtcbiAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcigpO1xuICByZXR1cm4gZm9ybWF0VHJlZShwYXJzZVVua25vd24ocGFyc2VyLCAnYWRkcmVzcycsIHByb3BzKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBZGRyZXNzV2l0aEZvcm1hdFN0cmluZyhcbiAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIGZvcm1hdDogc3RyaW5nXG4pOiBzdHJpbmcge1xuICAvLyByZXBsYWNlIGFsbCBwYXR0ZXJucyB3aXRoIGEgJSBwcmVmaXggZnJvbSBmb3JtYXQgc3RyaW5nIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHlcbiAgLy8gZS5nLiAlcDAgLT4gdXNlclBhdGgsICVrMSAtPiBiYWNrdXBLZXksIGV0Yy5cbiAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC8lW2EtejAtOV0rL2dpLCAobWF0Y2gpID0+IHtcbiAgICBpZiAobWF0Y2ggaW4gcGxhY2Vob2xkZXJzKSB7XG4gICAgICBjb25zdCBwcm9wID0gcGxhY2Vob2xkZXJzW21hdGNoXTtcbiAgICAgIHJldHVybiBTdHJpbmcocHJvcHNbcHJvcF0pO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Rml4ZWRTY3JpcHRBZGRyZXNzKHByb3BzOiBGaXhlZFNjcmlwdEFkZHJlc3NQcm9wZXJ0aWVzLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRBZGRyZXNzV2l0aEZvcm1hdFN0cmluZyhwcm9wcywgZml4ZWRTY3JpcHRQbGFjZWhvbGRlcnMsIGZvcm1hdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5nZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IG51bWJlcltdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGVuZCAtIHN0YXJ0ICsgMSB9LCAoXywgaSkgPT4gc3RhcnQgKyBpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW5kZXhSYW5nZShyYW5nZXM6IHN0cmluZ1tdKTogbnVtYmVyW10ge1xuICByZXR1cm4gcmFuZ2VzLmZsYXRNYXAoKHJhbmdlKSA9PiB7XG4gICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gcmFuZ2Uuc3BsaXQoJy0nKTtcbiAgICBpZiAoZW5kKSB7XG4gICAgICByZXR1cm4gZ2V0UmFuZ2UoTnVtYmVyKHN0YXJ0KSwgTnVtYmVyKGVuZCkpO1xuICAgIH1cbiAgICByZXR1cm4gW051bWJlcihzdGFydCldO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBnZW5lcmF0ZUZpeGVkU2NyaXB0QWRkcmVzcyhcbiAgYXJndjogS2V5T3B0aW9ucyAmIHtcbiAgICBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrO1xuICAgIGNoYWluPzogbnVtYmVyW107XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgaW5kZXg6IG51bWJlcltdO1xuICB9XG4pOiBHZW5lcmF0b3I8Rml4ZWRTY3JpcHRBZGRyZXNzUHJvcGVydGllcz4ge1xuICBjb25zdCByb290WHB1YnMgPSBnZXRSb290V2FsbGV0S2V5cyhhcmd2KTtcbiAgY29uc3QgY2hhaW5zID0gYXJndi5jaGFpbiA/PyBnZXREZWZhdWx0Q2hhaW5Db2RlcygpO1xuICBmb3IgKGNvbnN0IGkgb2YgYXJndi5pbmRleCkge1xuICAgIGZvciAoY29uc3QgY2hhaW4gb2YgY2hhaW5zKSB7XG4gICAgICBhc3NlcnQodXR4b2xpYi5iaXRnby5pc0NoYWluQ29kZShjaGFpbikpO1xuICAgICAgLy8geWllbGQgZm9ybWF0QWRkcmVzcyhyb290WHB1YnMsIGNoYWluLCBpLCBhcmd2Lm5ldHdvcmsgPz8gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luLCBhcmd2LmZvcm1hdCk7XG4gICAgICB5aWVsZCBnZXRBZGRyZXNzUHJvcGVydGllcyhyb290WHB1YnMsIGNoYWluLCBpLCBhcmd2Lm5ldHdvcmsgPz8gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luKTtcbiAgICB9XG4gIH1cbn1cblxudHlwZSBEZXNjcmlwdG9yQWRkcmVzc1Byb3BlcnRpZXMgPSB7XG4gIGRlc2NyaXB0b3I6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgZXhwbGljaXRTY3JpcHQ6IHN0cmluZztcbiAgc2NyaXB0UHViS2V5OiBzdHJpbmc7XG4gIGFkZHJlc3M6IHN0cmluZztcbn07XG5cbmNvbnN0IGRlc2NyaXB0b3JBZGRyZXNzUGxhY2Vob2xkZXJzID0ge1xuICAnJWQnOiAnZGVzY3JpcHRvcicsXG4gICclaSc6ICdpbmRleCcsXG4gICclZSc6ICdleHBsaWNpdFNjcmlwdCcsXG4gICclcyc6ICdzY3JpcHRQdWJLZXknLFxuICAnJWEnOiAnYWRkcmVzcycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckFkZHJlc3NQbGFjZWhvbGRlckRlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRBc1BsYWNlaG9sZGVyRGVzY3JpcHRpb24oZGVzY3JpcHRvckFkZHJlc3NQbGFjZWhvbGRlcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGVzY3JpcHRvckFkZHJlc3MocHJvcHM6IERlc2NyaXB0b3JBZGRyZXNzUHJvcGVydGllcywgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0QWRkcmVzc1dpdGhGb3JtYXRTdHJpbmcocHJvcHMsIGRlc2NyaXB0b3JBZGRyZXNzUGxhY2Vob2xkZXJzLCBmb3JtYXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24qIGdlbmVyYXRlRGVzY3JpcHRvckFkZHJlc3MoYXJndjoge1xuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcms7XG4gIGRlc2NyaXB0b3I6IHN0cmluZztcbiAgZm9ybWF0OiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXJbXTtcbn0pOiBHZW5lcmF0b3I8RGVzY3JpcHRvckFkZHJlc3NQcm9wZXJ0aWVzPiB7XG4gIGNvbnN0IGRlc2NyaXB0b3IgPSBEZXNjcmlwdG9yLmZyb21TdHJpbmcoYXJndi5kZXNjcmlwdG9yLCAnZGVyaXZhYmxlJyk7XG4gIGZvciAoY29uc3QgaSBvZiBhcmd2LmluZGV4KSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGRlc2NyaXB0b3IuYXREZXJpdmF0aW9uSW5kZXgoaSk7XG4gICAgY29uc3QgZXhwbGljaXRTY3JpcHQgPSBCdWZmZXIuZnJvbShkZXJpdmVkLmVuY29kZSgpKTtcbiAgICBjb25zdCBzY3JpcHRQdWJLZXkgPSBCdWZmZXIuZnJvbShkZXJpdmVkLnNjcmlwdFB1YmtleSgpKTtcbiAgICBjb25zdCBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0UHViS2V5LCBhcmd2Lm5ldHdvcmspO1xuICAgIHlpZWxkIHtcbiAgICAgIGRlc2NyaXB0b3I6IGRlcml2ZWQudG9TdHJpbmcoKSxcbiAgICAgIGluZGV4OiBpLFxuICAgICAgYWRkcmVzcyxcbiAgICAgIGV4cGxpY2l0U2NyaXB0OiBleHBsaWNpdFNjcmlwdC50b1N0cmluZygnaGV4JyksXG4gICAgICBzY3JpcHRQdWJLZXk6IHNjcmlwdFB1YktleS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -9,7 +9,7 @@ import * as utxolib from '@bitgo-beta/utxo-lib';
9
9
  *
10
10
  * See https://bitcoin.stackexchange.com/a/115850/137601 for more details.
11
11
  */
12
- export declare type HollowSegwitSpend =
12
+ export type HollowSegwitSpend =
13
13
  /** Wrapped Segwit Pay-To-Witness-Script-Hash */
14
14
  {
15
15
  scriptType: 'p2shP2wshHollow';
@@ -1 +1 @@
1
- {"version":3,"file":"hollowSegwitSpend.d.ts","sourceRoot":"","sources":["../../src/hollowSegwitSpend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD;;;;;;;;;GASG;AACH,oBAAY,iBAAiB;AAC3B,gDAAgD;AAC9C;IAAE,UAAU,EAAE,iBAAiB,CAAA;CAAE;AACnC,wCAAwC;GACtC;IAAE,UAAU,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAEvC;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,CAAC,OAAO,EACtB,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,iBAAiB,GAAG,SAAS,CAiC/B;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
1
+ {"version":3,"file":"hollowSegwitSpend.d.ts","sourceRoot":"","sources":["../../src/hollowSegwitSpend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB;AAC3B,gDAAgD;AAC9C;IAAE,UAAU,EAAE,iBAAiB,CAAA;CAAE;AACnC,wCAAwC;GACtC;IAAE,UAAU,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAEvC;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,CAAC,OAAO,EACtB,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,iBAAiB,GAAG,SAAS,CAiC/B;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getHollowSpendMessage = exports.parseHollowSegwitSpend = void 0;
3
+ exports.parseHollowSegwitSpend = parseHollowSegwitSpend;
4
+ exports.getHollowSpendMessage = getHollowSpendMessage;
4
5
  const utxolib = require("@bitgo-beta/utxo-lib");
5
6
  /**
6
7
  * @return HollowSegwitSpend if spend is a
@@ -32,9 +33,7 @@ function parseHollowSegwitSpend(input, network) {
32
33
  return { scriptType: 'p2shP2wshHollow' };
33
34
  }
34
35
  }
35
- exports.parseHollowSegwitSpend = parseHollowSegwitSpend;
36
36
  function getHollowSpendMessage() {
37
37
  return `This output was likely claimed by a miner. See https://bitcoin.stackexchange.com/a/115850/137601 for details.`;
38
38
  }
39
- exports.getHollowSpendMessage = getHollowSpendMessage;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sbG93U2Vnd2l0U3BlbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9sbG93U2Vnd2l0U3BlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBa0JoRDs7R0FFRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxLQUFzQixFQUN0QixPQUF3QjtJQUV4QixJQUNFLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO1FBQzVELE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQzFEO1FBQ0EsNENBQTRDO1FBQzVDLE9BQU87S0FDUjtJQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEQsSUFBSSxJQUFJLEtBQUssWUFBWSxFQUFFO1FBQ3pCLHVDQUF1QztRQUN2QyxPQUFPO0tBQ1I7SUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUM5QixPQUFPO0tBQ1I7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7UUFDM0IsT0FBTztLQUNSO0lBRUQsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDbkIsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7UUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0tBQzNDO0lBRUQsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7UUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0tBQzFDO0FBQ0gsQ0FBQztBQXBDRCx3REFvQ0M7QUFFRCxTQUFnQixxQkFBcUI7SUFDbkMsT0FBTywrR0FBK0csQ0FBQztBQUN6SCxDQUFDO0FBRkQsc0RBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuLyoqXG4gKiBVc2VycyBjYW4gbWlzdGFrZW5seSBjcmVhdGUgd3JhcHBlZCBzZWd3aXQgb3V0cHV0cyBvbiBjaGFpbnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBpdCAoYml0Y29pbmNhc2gsIGJpdGNvaW5TVikuXG4gKlxuICogVGhlc2UgZnVuZHMgY2FuIGJlIGNsYWltZWQgYnkgbWluZXJzIHRoYXQgbGVhcm4gdGhlIGhhc2ggcHJlaW1hZ2UsIHR5cGljYWxseSBieSBvYnNlcnZpbmcgYSBzcGVuZCBvbiB0aGUgYml0Y29pblxuICogY2hhaW4uXG4gKlxuICogU2luY2UgdGhlIHRyYW5zYWN0aW9uIGRvZXMgbm90IGhhdmUgYSBmdWxsIGlubmVyIHNjcmlwdCwgbGV0J3MgY2FsbCB0aGVtIFwiaG9sbG93XCIuXG4gKlxuICogU2VlIGh0dHBzOi8vYml0Y29pbi5zdGFja2V4Y2hhbmdlLmNvbS9hLzExNTg1MC8xMzc2MDEgZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IHR5cGUgSG9sbG93U2Vnd2l0U3BlbmQgPVxuICAvKiogV3JhcHBlZCBTZWd3aXQgUGF5LVRvLVdpdG5lc3MtU2NyaXB0LUhhc2ggKi9cbiAgfCB7IHNjcmlwdFR5cGU6ICdwMnNoUDJ3c2hIb2xsb3cnIH1cbiAgLyoqIFdyYXBwZWQgU2Vnd2l0IFBheS1Uby1QdWJrZXktSGFzaCAqL1xuICB8IHsgc2NyaXB0VHlwZTogJ3Ayc2hQMndwa2hIb2xsb3cnIH07XG5cbi8qKlxuICogQHJldHVybiBIb2xsb3dTZWd3aXRTcGVuZCBpZiBzcGVuZCBpcyBhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhvbGxvd1NlZ3dpdFNwZW5kKFxuICBpbnB1dDogdXR4b2xpYi5UeElucHV0LFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IEhvbGxvd1NlZ3dpdFNwZW5kIHwgdW5kZWZpbmVkIHtcbiAgaWYgKFxuICAgIHV0eG9saWIuZ2V0TWFpbm5ldChuZXR3b3JrKSAhPT0gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaCAmJlxuICAgIHV0eG9saWIuZ2V0TWFpbm5ldChuZXR3b3JrKSAhPT0gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luc3ZcbiAgKSB7XG4gICAgLy8gdGhpcyBjYW4gb25seSBoYXBwZW4gb24gdGhlIEJDSC9CU1YgZm9ya3NcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB0eXBlID0gdXR4b2xpYi5jbGFzc2lmeS5pbnB1dChpbnB1dC5zY3JpcHQsIHRydWUpO1xuICBpZiAodHlwZSAhPT0gJ3NjcmlwdGhhc2gnKSB7XG4gICAgLy8gdGhpcyBjYW4gb25seSBoYXBwZW4gZm9yIHAyc2ggc3BlbmRzXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYnVmcyA9IHV0eG9saWIuc2NyaXB0LmRlY29tcGlsZShpbnB1dC5zY3JpcHQpO1xuICBpZiAoIWJ1ZnMgfHwgYnVmcy5sZW5ndGggIT09IDEpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBidWYgPSBidWZzWzBdO1xuICBpZiAodHlwZW9mIGJ1ZiA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBbYSwgYl0gPSBidWY7XG4gIGlmIChhID09PSAweDAwICYmIGIgPT09IDB4MTQgJiYgYnVmLmxlbmd0aCA9PT0gMjIpIHtcbiAgICByZXR1cm4geyBzY3JpcHRUeXBlOiAncDJzaFAyd3BraEhvbGxvdycgfTtcbiAgfVxuXG4gIGlmIChhID09PSAweDAwICYmIGIgPT09IDB4MjAgJiYgYnVmLmxlbmd0aCA9PT0gMzQpIHtcbiAgICByZXR1cm4geyBzY3JpcHRUeXBlOiAncDJzaFAyd3NoSG9sbG93JyB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb2xsb3dTcGVuZE1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBUaGlzIG91dHB1dCB3YXMgbGlrZWx5IGNsYWltZWQgYnkgYSBtaW5lci4gU2VlIGh0dHBzOi8vYml0Y29pbi5zdGFja2V4Y2hhbmdlLmNvbS9hLzExNTg1MC8xMzc2MDEgZm9yIGRldGFpbHMuYDtcbn1cbiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sbG93U2Vnd2l0U3BlbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9sbG93U2Vnd2l0U3BlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxQkEsd0RBb0NDO0FBRUQsc0RBRUM7QUE3REQsZ0RBQWdEO0FBa0JoRDs7R0FFRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxLQUFzQixFQUN0QixPQUF3QjtJQUV4QixJQUNFLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO1FBQzVELE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQzFELENBQUM7UUFDRCw0Q0FBNEM7UUFDNUMsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELElBQUksSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQzFCLHVDQUF1QztRQUN2QyxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0IsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ25CLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHFCQUFxQjtJQUNuQyxPQUFPLCtHQUErRyxDQUFDO0FBQ3pILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuLyoqXG4gKiBVc2VycyBjYW4gbWlzdGFrZW5seSBjcmVhdGUgd3JhcHBlZCBzZWd3aXQgb3V0cHV0cyBvbiBjaGFpbnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBpdCAoYml0Y29pbmNhc2gsIGJpdGNvaW5TVikuXG4gKlxuICogVGhlc2UgZnVuZHMgY2FuIGJlIGNsYWltZWQgYnkgbWluZXJzIHRoYXQgbGVhcm4gdGhlIGhhc2ggcHJlaW1hZ2UsIHR5cGljYWxseSBieSBvYnNlcnZpbmcgYSBzcGVuZCBvbiB0aGUgYml0Y29pblxuICogY2hhaW4uXG4gKlxuICogU2luY2UgdGhlIHRyYW5zYWN0aW9uIGRvZXMgbm90IGhhdmUgYSBmdWxsIGlubmVyIHNjcmlwdCwgbGV0J3MgY2FsbCB0aGVtIFwiaG9sbG93XCIuXG4gKlxuICogU2VlIGh0dHBzOi8vYml0Y29pbi5zdGFja2V4Y2hhbmdlLmNvbS9hLzExNTg1MC8xMzc2MDEgZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IHR5cGUgSG9sbG93U2Vnd2l0U3BlbmQgPVxuICAvKiogV3JhcHBlZCBTZWd3aXQgUGF5LVRvLVdpdG5lc3MtU2NyaXB0LUhhc2ggKi9cbiAgfCB7IHNjcmlwdFR5cGU6ICdwMnNoUDJ3c2hIb2xsb3cnIH1cbiAgLyoqIFdyYXBwZWQgU2Vnd2l0IFBheS1Uby1QdWJrZXktSGFzaCAqL1xuICB8IHsgc2NyaXB0VHlwZTogJ3Ayc2hQMndwa2hIb2xsb3cnIH07XG5cbi8qKlxuICogQHJldHVybiBIb2xsb3dTZWd3aXRTcGVuZCBpZiBzcGVuZCBpcyBhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhvbGxvd1NlZ3dpdFNwZW5kKFxuICBpbnB1dDogdXR4b2xpYi5UeElucHV0LFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IEhvbGxvd1NlZ3dpdFNwZW5kIHwgdW5kZWZpbmVkIHtcbiAgaWYgKFxuICAgIHV0eG9saWIuZ2V0TWFpbm5ldChuZXR3b3JrKSAhPT0gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaCAmJlxuICAgIHV0eG9saWIuZ2V0TWFpbm5ldChuZXR3b3JrKSAhPT0gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luc3ZcbiAgKSB7XG4gICAgLy8gdGhpcyBjYW4gb25seSBoYXBwZW4gb24gdGhlIEJDSC9CU1YgZm9ya3NcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB0eXBlID0gdXR4b2xpYi5jbGFzc2lmeS5pbnB1dChpbnB1dC5zY3JpcHQsIHRydWUpO1xuICBpZiAodHlwZSAhPT0gJ3NjcmlwdGhhc2gnKSB7XG4gICAgLy8gdGhpcyBjYW4gb25seSBoYXBwZW4gZm9yIHAyc2ggc3BlbmRzXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYnVmcyA9IHV0eG9saWIuc2NyaXB0LmRlY29tcGlsZShpbnB1dC5zY3JpcHQpO1xuICBpZiAoIWJ1ZnMgfHwgYnVmcy5sZW5ndGggIT09IDEpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBidWYgPSBidWZzWzBdO1xuICBpZiAodHlwZW9mIGJ1ZiA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBbYSwgYl0gPSBidWY7XG4gIGlmIChhID09PSAweDAwICYmIGIgPT09IDB4MTQgJiYgYnVmLmxlbmd0aCA9PT0gMjIpIHtcbiAgICByZXR1cm4geyBzY3JpcHRUeXBlOiAncDJzaFAyd3BraEhvbGxvdycgfTtcbiAgfVxuXG4gIGlmIChhID09PSAweDAwICYmIGIgPT09IDB4MjAgJiYgYnVmLmxlbmd0aCA9PT0gMzQpIHtcbiAgICByZXR1cm4geyBzY3JpcHRUeXBlOiAncDJzaFAyd3NoSG9sbG93JyB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb2xsb3dTcGVuZE1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBUaGlzIG91dHB1dCB3YXMgbGlrZWx5IGNsYWltZWQgYnkgYSBtaW5lci4gU2VlIGh0dHBzOi8vYml0Y29pbi5zdGFja2V4Y2hhbmdlLmNvbS9hLzExNTg1MC8xMzc2MDEgZm9yIGRldGFpbHMuYDtcbn1cbiJdfQ==
@@ -1,3 +1,5 @@
1
1
  import { Parser, ParserNode } from './Parser';
2
- export declare function parseUnknown(p: Parser, label: string | number, obj: unknown): ParserNode;
2
+ export declare function parseUnknown(p: Parser, label: string | number, obj: unknown, { omit }?: {
3
+ omit?: string[];
4
+ }): ParserNode;
3
5
  //# sourceMappingURL=parseUnknown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseUnknown.d.ts","sourceRoot":"","sources":["../../src/parseUnknown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,MAAM,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAgBlF,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,UAAU,CAwCxF"}
1
+ {"version":3,"file":"parseUnknown.d.ts","sourceRoot":"","sources":["../../src/parseUnknown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,MAAM,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAgBlF,wBAAgB,YAAY,CAC1B,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,GAAG,EAAE,OAAO,EACZ,EAAE,IAAS,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACtC,UAAU,CAwCZ"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseUnknown = void 0;
3
+ exports.parseUnknown = parseUnknown;
4
4
  const Parser_1 = require("./Parser");
5
5
  function omitObject(v) {
6
6
  return typeof v === 'function';
@@ -14,8 +14,8 @@ function getPrototypeKeys(obj) {
14
14
  }
15
15
  return keys;
16
16
  }
17
- function parseUnknown(p, label, obj) {
18
- if (Parser_1.isParserNodeValue(obj)) {
17
+ function parseUnknown(p, label, obj, { omit = [] } = {}) {
18
+ if ((0, Parser_1.isParserNodeValue)(obj)) {
19
19
  if (typeof obj === 'string') {
20
20
  obj = JSON.stringify(obj);
21
21
  }
@@ -31,7 +31,7 @@ function parseUnknown(p, label, obj) {
31
31
  if (allKeys.length > 0) {
32
32
  return p.node(label, undefined, allKeys.flatMap((k) => {
33
33
  const objAsRecord = obj;
34
- if (omitObject(objAsRecord[k])) {
34
+ if (omitObject(objAsRecord[k]) || (omit === null || omit === void 0 ? void 0 : omit.includes(k))) {
35
35
  return [];
36
36
  }
37
37
  try {
@@ -46,5 +46,4 @@ function parseUnknown(p, label, obj) {
46
46
  return p.node(label, '{}');
47
47
  }
48
48
  }
49
- exports.parseUnknown = parseUnknown;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VVbmtub3duLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnNlVW5rbm93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBa0Y7QUFFbEYsU0FBUyxVQUFVLENBQUMsQ0FBVTtJQUM1QixPQUFPLE9BQU8sQ0FBQyxLQUFLLFVBQVUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFZO0lBQ3BDLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztJQUMxQixJQUFJLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDaEIsT0FBTyxLQUFLLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hELEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLENBQVMsRUFBRSxLQUFzQixFQUFFLEdBQVk7SUFDMUUsSUFBSSwwQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMzQixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQjtRQUNELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBc0IsQ0FBQyxDQUFDO0tBQzlDO0lBRUQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDdkQ7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDdEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNYLEtBQUssRUFDTCxXQUFXLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFDdkIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0tBQ0g7SUFFRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDWCxLQUFLLEVBQ0wsU0FBUyxFQUNULE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRyxHQUE4QixDQUFDO1lBQ25ELElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM5QixPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsSUFBSTtnQkFDRixPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3QztZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDNUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0tBQ0g7U0FBTTtRQUNMLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDNUI7QUFDSCxDQUFDO0FBeENELG9DQXdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGFyc2VyTm9kZVZhbHVlLCBQYXJzZXIsIFBhcnNlck5vZGUsIFBhcnNlck5vZGVWYWx1ZSB9IGZyb20gJy4vUGFyc2VyJztcblxuZnVuY3Rpb24gb21pdE9iamVjdCh2OiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlS2V5cyhvYmo6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBwcm90byA9IG9iajtcbiAgd2hpbGUgKHByb3RvICYmIHByb3RvICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAga2V5cy5wdXNoKC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBrZXlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVbmtub3duKHA6IFBhcnNlciwgbGFiZWw6IHN0cmluZyB8IG51bWJlciwgb2JqOiB1bmtub3duKTogUGFyc2VyTm9kZSB7XG4gIGlmIChpc1BhcnNlck5vZGVWYWx1ZShvYmopKSB7XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICBvYmogPSBKU09OLnN0cmluZ2lmeShvYmopO1xuICAgIH1cbiAgICByZXR1cm4gcC5ub2RlKGxhYmVsLCBvYmogYXMgUGFyc2VyTm9kZVZhbHVlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIG9iamVjdCwgZ290ICR7dHlwZW9mIG9ian1gKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICByZXR1cm4gcC5ub2RlKFxuICAgICAgbGFiZWwsXG4gICAgICBgbGVuZ3RoOiAke29iai5sZW5ndGh9YCxcbiAgICAgIG9iai5maWx0ZXIoKHYpID0+ICFvbWl0T2JqZWN0KHYpKS5tYXAoKHYsIGkpID0+IHBhcnNlVW5rbm93bihwLCBpLCB2KSlcbiAgICApO1xuICB9XG5cbiAgY29uc3QgYWxsS2V5cyA9IGdldFByb3RvdHlwZUtleXMob2JqKTtcbiAgaWYgKGFsbEtleXMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwLm5vZGUoXG4gICAgICBsYWJlbCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGFsbEtleXMuZmxhdE1hcCgoaykgPT4ge1xuICAgICAgICBjb25zdCBvYmpBc1JlY29yZCA9IG9iaiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgaWYgKG9taXRPYmplY3Qob2JqQXNSZWNvcmRba10pKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIFtwYXJzZVVua25vd24ocCwgaywgb2JqQXNSZWNvcmRba10pXTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiBbcC5ub2RlKGssIGBFcnJvcjogJHtlLm1lc3NhZ2V9fWApXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwLm5vZGUobGFiZWwsICd7fScpO1xuICB9XG59XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VVbmtub3duLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnNlVW5rbm93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdCQSxvQ0E2Q0M7QUE3REQscUNBQWtGO0FBRWxGLFNBQVMsVUFBVSxDQUFDLENBQVU7SUFDNUIsT0FBTyxPQUFPLENBQUMsS0FBSyxVQUFVLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsR0FBWTtJQUNwQyxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7SUFDMUIsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLE9BQU8sS0FBSyxJQUFJLEtBQUssS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hELEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQzFCLENBQVMsRUFDVCxLQUFzQixFQUN0QixHQUFZLEVBQ1osRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUEwQixFQUFFO0lBRXZDLElBQUksSUFBQSwwQkFBaUIsRUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzNCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBc0IsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ1gsS0FBSyxFQUNMLFdBQVcsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUN2QixHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDWCxLQUFLLEVBQ0wsU0FBUyxFQUNULE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRyxHQUE4QixDQUFDO1lBQ25ELElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFDO2dCQUNwRCxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGFyc2VyTm9kZVZhbHVlLCBQYXJzZXIsIFBhcnNlck5vZGUsIFBhcnNlck5vZGVWYWx1ZSB9IGZyb20gJy4vUGFyc2VyJztcblxuZnVuY3Rpb24gb21pdE9iamVjdCh2OiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlS2V5cyhvYmo6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBwcm90byA9IG9iajtcbiAgd2hpbGUgKHByb3RvICYmIHByb3RvICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAga2V5cy5wdXNoKC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBrZXlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVbmtub3duKFxuICBwOiBQYXJzZXIsXG4gIGxhYmVsOiBzdHJpbmcgfCBudW1iZXIsXG4gIG9iajogdW5rbm93bixcbiAgeyBvbWl0ID0gW10gfTogeyBvbWl0Pzogc3RyaW5nW10gfSA9IHt9XG4pOiBQYXJzZXJOb2RlIHtcbiAgaWYgKGlzUGFyc2VyTm9kZVZhbHVlKG9iaikpIHtcbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9iaiA9IEpTT04uc3RyaW5naWZ5KG9iaik7XG4gICAgfVxuICAgIHJldHVybiBwLm5vZGUobGFiZWwsIG9iaiBhcyBQYXJzZXJOb2RlVmFsdWUpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgb2JqZWN0LCBnb3QgJHt0eXBlb2Ygb2JqfWApO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBwLm5vZGUoXG4gICAgICBsYWJlbCxcbiAgICAgIGBsZW5ndGg6ICR7b2JqLmxlbmd0aH1gLFxuICAgICAgb2JqLmZpbHRlcigodikgPT4gIW9taXRPYmplY3QodikpLm1hcCgodiwgaSkgPT4gcGFyc2VVbmtub3duKHAsIGksIHYpKVxuICAgICk7XG4gIH1cblxuICBjb25zdCBhbGxLZXlzID0gZ2V0UHJvdG90eXBlS2V5cyhvYmopO1xuICBpZiAoYWxsS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHAubm9kZShcbiAgICAgIGxhYmVsLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYWxsS2V5cy5mbGF0TWFwKChrKSA9PiB7XG4gICAgICAgIGNvbnN0IG9iakFzUmVjb3JkID0gb2JqIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICBpZiAob21pdE9iamVjdChvYmpBc1JlY29yZFtrXSkgfHwgb21pdD8uaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gW3BhcnNlVW5rbm93bihwLCBrLCBvYmpBc1JlY29yZFtrXSldO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmV0dXJuIFtwLm5vZGUoaywgYEVycm9yOiAke2UubWVzc2FnZX19YCldO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHAubm9kZShsYWJlbCwgJ3t9Jyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stringToBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringToBuffer.d.ts","sourceRoot":"","sources":["../../../test/args/stringToBuffer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert = require("assert");
4
+ const parseString_1 = require("../../src/args/parseString");
5
+ describe('stringToBuffer', function () {
6
+ const bytes = Buffer.alloc(32, 42);
7
+ it('converts hex and base64', function () {
8
+ for (const e of ['hex', 'base64']) {
9
+ const str = bytes.toString(e);
10
+ assert.deepStrictEqual((0, parseString_1.stringToBuffer)(str, ['hex', 'base64']), bytes);
11
+ const strNl = [str.slice(0, 4), str.slice(4)].join('\n');
12
+ assert.deepStrictEqual((0, parseString_1.stringToBuffer)(strNl, ['hex', 'base64']), bytes);
13
+ }
14
+ });
15
+ });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nVG9CdWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2FyZ3Mvc3RyaW5nVG9CdWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFFakMsNERBQTREO0FBRTVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuQyxFQUFFLENBQUMseUJBQXlCLEVBQUU7UUFDNUIsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQXFCLEVBQUUsQ0FBQztZQUN0RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBQSw0QkFBYyxFQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXRFLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsNEJBQWMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBzdHJpbmdUb0J1ZmZlciB9IGZyb20gJy4uLy4uL3NyYy9hcmdzL3BhcnNlU3RyaW5nJztcblxuZGVzY3JpYmUoJ3N0cmluZ1RvQnVmZmVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBieXRlcyA9IEJ1ZmZlci5hbGxvYygzMiwgNDIpO1xuICBpdCgnY29udmVydHMgaGV4IGFuZCBiYXNlNjQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yIChjb25zdCBlIG9mIFsnaGV4JywgJ2Jhc2U2NCddIGFzIEJ1ZmZlckVuY29kaW5nW10pIHtcbiAgICAgIGNvbnN0IHN0ciA9IGJ5dGVzLnRvU3RyaW5nKGUpO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzdHJpbmdUb0J1ZmZlcihzdHIsIFsnaGV4JywgJ2Jhc2U2NCddKSwgYnl0ZXMpO1xuXG4gICAgICBjb25zdCBzdHJObCA9IFtzdHIuc2xpY2UoMCwgNCksIHN0ci5zbGljZSg0KV0uam9pbignXFxuJyk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHN0cmluZ1RvQnVmZmVyKHN0ck5sLCBbJ2hleCcsICdiYXNlNjQnXSksIGJ5dGVzKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bip32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bip32.d.ts","sourceRoot":"","sources":["../../test/bip32.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert = require("assert");
4
+ const bip32_1 = require("../src/bip32");
5
+ const fixtures_1 = require("./fixtures");
6
+ const bip32_util_1 = require("./bip32.util");
7
+ function runTest(bip32Key, args) {
8
+ describe(`parse bip32 ${JSON.stringify(args)}`, function () {
9
+ it('has expected output', async function () {
10
+ const formatted = (0, fixtures_1.formatTreeNoColor)((0, bip32_1.parseBip32)(bip32Key, args), { showAll: true });
11
+ const filename = [bip32Key];
12
+ if (args.derive) {
13
+ filename.push(args.derive.replace(/\//g, '_'));
14
+ }
15
+ assert.strictEqual(await (0, fixtures_1.getFixtureString)(`test/fixtures/bip32/${filename.join('_')}.txt`, formatted), formatted);
16
+ });
17
+ });
18
+ }
19
+ runTest((0, bip32_util_1.getKey)('bip32').toBase58(), {});
20
+ runTest((0, bip32_util_1.getKey)('bip32').toBase58(), { derive: 'm/0/0' });
21
+ runTest((0, bip32_util_1.getKey)('bip32').neutered().toBase58(), { derive: 'm/0/0' });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L2JpcDMyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQWlDO0FBRWpDLHdDQUEwQztBQUUxQyx5Q0FBaUU7QUFDakUsNkNBQXNDO0FBRXRDLFNBQVMsT0FBTyxDQUFDLFFBQWdCLEVBQUUsSUFBeUI7SUFDMUQsUUFBUSxDQUFDLGVBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1FBQzlDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLO1lBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUEsNEJBQWlCLEVBQUMsSUFBQSxrQkFBVSxFQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFBLDJCQUFnQixFQUFDLHVCQUF1QixRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxPQUFPLENBQUMsSUFBQSxtQkFBTSxFQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLE9BQU8sQ0FBQyxJQUFBLG1CQUFNLEVBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN6RCxPQUFPLENBQUMsSUFBQSxtQkFBTSxFQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgcGFyc2VCaXAzMiB9IGZyb20gJy4uL3NyYy9iaXAzMic7XG5cbmltcG9ydCB7IGZvcm1hdFRyZWVOb0NvbG9yLCBnZXRGaXh0dXJlU3RyaW5nIH0gZnJvbSAnLi9maXh0dXJlcyc7XG5pbXBvcnQgeyBnZXRLZXkgfSBmcm9tICcuL2JpcDMyLnV0aWwnO1xuXG5mdW5jdGlvbiBydW5UZXN0KGJpcDMyS2V5OiBzdHJpbmcsIGFyZ3M6IHsgZGVyaXZlPzogc3RyaW5nIH0pIHtcbiAgZGVzY3JpYmUoYHBhcnNlIGJpcDMyICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9YCwgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdoYXMgZXhwZWN0ZWQgb3V0cHV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0VHJlZU5vQ29sb3IocGFyc2VCaXAzMihiaXAzMktleSwgYXJncyksIHsgc2hvd0FsbDogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IGZpbGVuYW1lID0gW2JpcDMyS2V5XTtcbiAgICAgIGlmIChhcmdzLmRlcml2ZSkge1xuICAgICAgICBmaWxlbmFtZS5wdXNoKGFyZ3MuZGVyaXZlLnJlcGxhY2UoL1xcLy9nLCAnXycpKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhd2FpdCBnZXRGaXh0dXJlU3RyaW5nKGB0ZXN0L2ZpeHR1cmVzL2JpcDMyLyR7ZmlsZW5hbWUuam9pbignXycpfS50eHRgLCBmb3JtYXR0ZWQpLCBmb3JtYXR0ZWQpO1xuICAgIH0pO1xuICB9KTtcbn1cblxucnVuVGVzdChnZXRLZXkoJ2JpcDMyJykudG9CYXNlNTgoKSwge30pO1xucnVuVGVzdChnZXRLZXkoJ2JpcDMyJykudG9CYXNlNTgoKSwgeyBkZXJpdmU6ICdtLzAvMCcgfSk7XG5ydW5UZXN0KGdldEtleSgnYmlwMzInKS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksIHsgZGVyaXZlOiAnbS8wLzAnIH0pO1xuIl19
@@ -0,0 +1,6 @@
1
+ import { BIP32Interface } from 'bip32';
2
+ export type Triple<T> = [T, T, T];
3
+ export type KeyTriple = Triple<BIP32Interface>;
4
+ export declare function getKey(seed: string): BIP32Interface;
5
+ export declare function getKeyTriple(seed: string): KeyTriple;
6
+ //# sourceMappingURL=bip32.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bip32.util.d.ts","sourceRoot":"","sources":["../../test/bip32.util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAElC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEnD;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEpD"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getKey = getKey;
4
+ exports.getKeyTriple = getKeyTriple;
5
+ const crypto = require("crypto");
6
+ const utxolib = require("@bitgo-beta/utxo-lib");
7
+ function getKey(seed) {
8
+ return utxolib.bip32.fromSeed(crypto.createHash('sha256').update(seed).digest());
9
+ }
10
+ function getKeyTriple(seed) {
11
+ return [getKey(seed + '.0'), getKey(seed + '.1'), getKey(seed + '.2')];
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvYmlwMzIudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLHdCQUVDO0FBQ0Qsb0NBRUM7QUFiRCxpQ0FBaUM7QUFFakMsZ0RBQWdEO0FBTWhELFNBQWdCLE1BQU0sQ0FBQyxJQUFZO0lBQ2pDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBQ0QsU0FBZ0IsWUFBWSxDQUFDLElBQVk7SUFDdkMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnYmlwMzInO1xuXG5leHBvcnQgdHlwZSBUcmlwbGU8VD4gPSBbVCwgVCwgVF07XG5cbmV4cG9ydCB0eXBlIEtleVRyaXBsZSA9IFRyaXBsZTxCSVAzMkludGVyZmFjZT47XG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5KHNlZWQ6IHN0cmluZyk6IEJJUDMySW50ZXJmYWNlIHtcbiAgcmV0dXJuIHV0eG9saWIuYmlwMzIuZnJvbVNlZWQoY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShzZWVkKS5kaWdlc3QoKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5VHJpcGxlKHNlZWQ6IHN0cmluZyk6IEtleVRyaXBsZSB7XG4gIHJldHVybiBbZ2V0S2V5KHNlZWQgKyAnLjAnKSwgZ2V0S2V5KHNlZWQgKyAnLjEnKSwgZ2V0S2V5KHNlZWQgKyAnLjInKV07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cmdPsbt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmdPsbt.d.ts","sourceRoot":"","sources":["../../test/cmdPsbt.ts"],"names":[],"mappings":""}