@bitgo-beta/utxo-bin 2.8.3-beta.99 → 2.8.3-beta.991

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 (138) hide show
  1. package/README.md +4 -4
  2. package/dist/bin/index.js +39 -4
  3. package/dist/src/AddressParser.d.ts +0 -1
  4. package/dist/src/AddressParser.d.ts.map +1 -1
  5. package/dist/src/AddressParser.js +48 -9
  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 +66 -23
  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 +52 -6
  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 +12 -5
  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 +41 -9
  18. package/dist/src/ScriptParser.d.ts +8 -6
  19. package/dist/src/ScriptParser.d.ts.map +1 -1
  20. package/dist/src/ScriptParser.js +60 -8
  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 +44 -11
  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 +108 -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 +153 -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 +64 -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 +56 -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 +78 -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 +153 -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 +100 -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 +122 -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 +57 -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 +99 -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 +60 -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 +1 -2
  91. package/dist/src/ecdsa.d.ts.map +1 -1
  92. package/dist/src/ecdsa.js +9 -9
  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 +77 -11
  96. package/dist/src/format.d.ts.map +1 -1
  97. package/dist/src/format.js +9 -8
  98. package/dist/src/generateAddress.d.ts +24 -9
  99. package/dist/src/generateAddress.d.ts.map +1 -1
  100. package/dist/src/generateAddress.js +99 -26
  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 +37 -5
  104. package/dist/src/parseUnknown.js +4 -5
  105. package/dist/test/args/stringToBuffer.d.ts.map +1 -0
  106. package/dist/test/args/stringToBuffer.js +49 -0
  107. package/dist/test/bip32.d.ts +2 -0
  108. package/dist/test/bip32.d.ts.map +1 -0
  109. package/dist/test/bip32.js +55 -0
  110. package/dist/test/bip32.util.d.ts +6 -0
  111. package/dist/test/bip32.util.d.ts.map +1 -0
  112. package/dist/test/bip32.util.js +46 -0
  113. package/dist/test/cmdPsbt.d.ts +2 -0
  114. package/dist/test/cmdPsbt.d.ts.map +1 -0
  115. package/dist/test/cmdPsbt.js +138 -0
  116. package/dist/test/fixtures.d.ts +4 -4
  117. package/dist/test/fixtures.d.ts.map +1 -1
  118. package/dist/test/fixtures.js +45 -13
  119. package/dist/test/generateAddress.js +63 -13
  120. package/dist/test/parseAddress.d.ts +1 -5
  121. package/dist/test/parseAddress.d.ts.map +1 -1
  122. package/dist/test/parseAddress.js +54 -22
  123. package/dist/test/parseScript.js +45 -9
  124. package/dist/test/parseTransaction.js +49 -12
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +9 -8
  127. package/dist/src/commands.d.ts +0 -78
  128. package/dist/src/commands.d.ts.map +0 -1
  129. package/dist/src/commands.js +0 -284
  130. package/dist/src/parseString.d.ts +0 -5
  131. package/dist/src/parseString.d.ts.map +0 -1
  132. package/dist/src/parseString.js +0 -29
  133. package/dist/src/readStdin.d.ts +0 -5
  134. package/dist/src/readStdin.d.ts.map +0 -1
  135. package/dist/src/readStdin.js +0 -42
  136. package/dist/test/stringToBuffer.d.ts.map +0 -1
  137. package/dist/test/stringToBuffer.js +0 -16
  138. /package/dist/test/{stringToBuffer.d.ts → args/stringToBuffer.d.ts} +0 -0
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.bitcoinRegtest = void 0;
37
+ exports.getNetworkForName = getNetworkForName;
38
+ exports.getNetworkName = getNetworkName;
39
+ exports.getNetworkList = getNetworkList;
40
+ exports.getNetwork = getNetwork;
41
+ exports.getNetworkOptions = getNetworkOptions;
42
+ exports.getNetworkOptionsDemand = getNetworkOptionsDemand;
43
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
44
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
45
+ exports.bitcoinRegtest = {
46
+ ...utxolib.networks.testnet,
47
+ bech32: 'bcrt',
48
+ };
49
+ function getNetworkForName(name) {
50
+ if (name === 'bitcoinRegtest') {
51
+ return exports.bitcoinRegtest;
52
+ }
53
+ const network = utxolib.networks[name];
54
+ if (!network) {
55
+ throw new Error(`invalid network ${name}`);
56
+ }
57
+ return network;
58
+ }
59
+ function getNetworkName(network) {
60
+ if (network === exports.bitcoinRegtest) {
61
+ return 'bitcoinRegtest';
62
+ }
63
+ return utxolib.getNetworkName(network);
64
+ }
65
+ const networkOrder = [
66
+ utxolib.networks.bitcoin,
67
+ utxolib.networks.bitcoincash,
68
+ utxolib.networks.bitcoingold,
69
+ utxolib.networks.bitcoinsv,
70
+ utxolib.networks.dash,
71
+ utxolib.networks.dogecoin,
72
+ utxolib.networks.ecash,
73
+ utxolib.networks.litecoin,
74
+ utxolib.networks.zcash,
75
+ ];
76
+ function getNetworkOrderIndex(network) {
77
+ if (network === exports.bitcoinRegtest) {
78
+ network = utxolib.networks.bitcoin;
79
+ }
80
+ network = (0, utxo_lib_1.getMainnet)(network);
81
+ const index = networkOrder.indexOf(network);
82
+ if (index === -1) {
83
+ throw new Error(`unknown network ${network}`);
84
+ }
85
+ return index;
86
+ }
87
+ function getNetworkList() {
88
+ return [...utxolib.getNetworkList(), exports.bitcoinRegtest].sort((a, b) => getNetworkOrderIndex(a) - getNetworkOrderIndex(b) || getNetworkName(a).localeCompare(getNetworkName(b)));
89
+ }
90
+ function getNetwork(argv) {
91
+ return getNetworkForName(argv.network);
92
+ }
93
+ function getNetworkOptions(defaultValue) {
94
+ return {
95
+ network: {
96
+ type: 'string',
97
+ description: 'network name',
98
+ default: defaultValue,
99
+ coerce: getNetworkForName,
100
+ },
101
+ };
102
+ }
103
+ function getNetworkOptionsDemand(defaultValue) {
104
+ return {
105
+ network: { ...getNetworkOptions(defaultValue).network, demandOption: true },
106
+ };
107
+ }
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VOZXR3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyZ3MvcGFyc2VOZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLDhDQVNDO0FBRUQsd0NBS0M7QUEwQkQsd0NBSUM7QUFFRCxnQ0FFQztBQVdELDhDQVdDO0FBRUQsMERBTUM7QUF4RkQsOERBQWdEO0FBQ2hELG1EQUFrRDtBQUVyQyxRQUFBLGNBQWMsR0FBb0I7SUFDN0MsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU87SUFDM0IsTUFBTSxFQUFFLE1BQU07Q0FDZixDQUFDO0FBRUYsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxJQUFJLElBQUksS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlCLE9BQU8sc0JBQWMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUEyQixDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxPQUF3QjtJQUNyRCxJQUFJLE9BQU8sS0FBSyxzQkFBYyxFQUFFLENBQUM7UUFDL0IsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBVyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFlBQVksR0FBRztJQUNuQixPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU87SUFDeEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO0lBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztJQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7SUFDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO0lBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUTtJQUN6QixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7SUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztDQUN2QixDQUFDO0FBRUYsU0FBUyxvQkFBb0IsQ0FBQyxPQUF3QjtJQUNwRCxJQUFJLE9BQU8sS0FBSyxzQkFBYyxFQUFFLENBQUM7UUFDL0IsT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxPQUFPLEdBQUcsSUFBQSxxQkFBVSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFnQixjQUFjO0lBQzVCLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxzQkFBYyxDQUFDLENBQUMsSUFBSSxDQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2xILENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLElBQXlCO0lBQ2xELE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFXRCxTQUFnQixpQkFBaUIsQ0FBQyxZQUFxQjtJQUdyRCxPQUFPO1FBQ0wsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQUUsY0FBYztZQUMzQixPQUFPLEVBQUUsWUFBWTtZQUNyQixNQUFNLEVBQUUsaUJBQWlCO1NBQzFCO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FBQyxZQUFxQjtJQUczRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtLQUM1RSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgZ2V0TWFpbm5ldCB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuZXhwb3J0IGNvbnN0IGJpdGNvaW5SZWd0ZXN0OiB1dHhvbGliLk5ldHdvcmsgPSB7XG4gIC4uLnV0eG9saWIubmV0d29ya3MudGVzdG5ldCxcbiAgYmVjaDMyOiAnYmNydCcsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV0d29ya0Zvck5hbWUobmFtZTogc3RyaW5nKTogdXR4b2xpYi5OZXR3b3JrIHtcbiAgaWYgKG5hbWUgPT09ICdiaXRjb2luUmVndGVzdCcpIHtcbiAgICByZXR1cm4gYml0Y29pblJlZ3Rlc3Q7XG4gIH1cbiAgY29uc3QgbmV0d29yayA9IHV0eG9saWIubmV0d29ya3NbbmFtZSBhcyB1dHhvbGliLk5ldHdvcmtOYW1lXTtcbiAgaWYgKCFuZXR3b3JrKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG5ldHdvcmsgJHtuYW1lfWApO1xuICB9XG4gIHJldHVybiBuZXR3b3JrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV0d29ya05hbWUobmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogc3RyaW5nIHtcbiAgaWYgKG5ldHdvcmsgPT09IGJpdGNvaW5SZWd0ZXN0KSB7XG4gICAgcmV0dXJuICdiaXRjb2luUmVndGVzdCc7XG4gIH1cbiAgcmV0dXJuIHV0eG9saWIuZ2V0TmV0d29ya05hbWUobmV0d29yaykgYXMgc3RyaW5nO1xufVxuXG5jb25zdCBuZXR3b3JrT3JkZXIgPSBbXG4gIHV0eG9saWIubmV0d29ya3MuYml0Y29pbixcbiAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaCxcbiAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luZ29sZCxcbiAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luc3YsXG4gIHV0eG9saWIubmV0d29ya3MuZGFzaCxcbiAgdXR4b2xpYi5uZXR3b3Jrcy5kb2dlY29pbixcbiAgdXR4b2xpYi5uZXR3b3Jrcy5lY2FzaCxcbiAgdXR4b2xpYi5uZXR3b3Jrcy5saXRlY29pbixcbiAgdXR4b2xpYi5uZXR3b3Jrcy56Y2FzaCxcbl07XG5cbmZ1bmN0aW9uIGdldE5ldHdvcmtPcmRlckluZGV4KG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IG51bWJlciB7XG4gIGlmIChuZXR3b3JrID09PSBiaXRjb2luUmVndGVzdCkge1xuICAgIG5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW47XG4gIH1cbiAgbmV0d29yayA9IGdldE1haW5uZXQobmV0d29yayk7XG4gIGNvbnN0IGluZGV4ID0gbmV0d29ya09yZGVyLmluZGV4T2YobmV0d29yayk7XG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gbmV0d29yayAke25ldHdvcmt9YCk7XG4gIH1cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV0d29ya0xpc3QoKTogdXR4b2xpYi5OZXR3b3JrW10ge1xuICByZXR1cm4gWy4uLnV0eG9saWIuZ2V0TmV0d29ya0xpc3QoKSwgYml0Y29pblJlZ3Rlc3RdLnNvcnQoXG4gICAgKGEsIGIpID0+IGdldE5ldHdvcmtPcmRlckluZGV4KGEpIC0gZ2V0TmV0d29ya09yZGVySW5kZXgoYikgfHwgZ2V0TmV0d29ya05hbWUoYSkubG9jYWxlQ29tcGFyZShnZXROZXR3b3JrTmFtZShiKSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5ldHdvcmsoYXJndjogeyBuZXR3b3JrOiBzdHJpbmcgfSk6IHV0eG9saWIuTmV0d29yayB7XG4gIHJldHVybiBnZXROZXR3b3JrRm9yTmFtZShhcmd2Lm5ldHdvcmspO1xufVxuXG50eXBlIERlbWFuZE9wdGlvbjxUPiA9IFQgJiB7IGRlbWFuZE9wdGlvbjogdHJ1ZSB9O1xuXG50eXBlIE5ldHdvcmtPcHRpb248VERlZmF1bHQ+ID0ge1xuICB0eXBlOiAnc3RyaW5nJztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZGVmYXVsdDogVERlZmF1bHQ7XG4gIGNvZXJjZTogKGFyZzogc3RyaW5nKSA9PiB1dHhvbGliLk5ldHdvcms7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV0d29ya09wdGlvbnMoZGVmYXVsdFZhbHVlPzogc3RyaW5nKToge1xuICBuZXR3b3JrOiBOZXR3b3JrT3B0aW9uPHR5cGVvZiBkZWZhdWx0VmFsdWU+O1xufSB7XG4gIHJldHVybiB7XG4gICAgbmV0d29yazoge1xuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBkZXNjcmlwdGlvbjogJ25ldHdvcmsgbmFtZScsXG4gICAgICBkZWZhdWx0OiBkZWZhdWx0VmFsdWUsXG4gICAgICBjb2VyY2U6IGdldE5ldHdvcmtGb3JOYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXR3b3JrT3B0aW9uc0RlbWFuZChkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiB7XG4gIG5ldHdvcms6IERlbWFuZE9wdGlvbjxOZXR3b3JrT3B0aW9uPHR5cGVvZiBkZWZhdWx0VmFsdWU+Pjtcbn0ge1xuICByZXR1cm4ge1xuICAgIG5ldHdvcms6IHsgLi4uZ2V0TmV0d29ya09wdGlvbnMoZGVmYXVsdFZhbHVlKS5uZXR3b3JrLCBkZW1hbmRPcHRpb246IHRydWUgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,40 @@
1
+ type Format = 'hex' | 'base64';
2
+ export declare function stringToBuffer(data: string, format: Format | Format[]): Buffer;
3
+ export declare const readStringOptions: {
4
+ readonly path: {
5
+ readonly type: "string";
6
+ readonly nargs: 1;
7
+ readonly default: "";
8
+ };
9
+ readonly stdin: {
10
+ readonly type: "boolean";
11
+ readonly default: false;
12
+ };
13
+ readonly data: {
14
+ readonly type: "string";
15
+ readonly description: "hex or base64";
16
+ readonly alias: "hex";
17
+ };
18
+ readonly clipboard: {
19
+ readonly type: "boolean";
20
+ readonly default: false;
21
+ };
22
+ };
23
+ export type ReadStringOptions = {
24
+ clipboard?: boolean;
25
+ path?: string;
26
+ data?: string;
27
+ stdin: boolean;
28
+ };
29
+ /**
30
+ * Reads from stdin until Ctrl-D is pressed.
31
+ */
32
+ export declare function readStdin(): Promise<string>;
33
+ /**
34
+ * @param argv
35
+ * @param input - optional input data. If set, this function just ensures that nothing else is set.
36
+ * @return string from specified source
37
+ */
38
+ export declare function argToString(argv: ReadStringOptions, input?: string): Promise<string | undefined>;
39
+ export {};
40
+ //# sourceMappingURL=parseString.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseString.d.ts","sourceRoot":"","sources":["../../../src/args/parseString.ts"],"names":[],"mappings":"AAGA,KAAK,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAC/B,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAyB9E;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;CASpB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAoCjD;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqCtG"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.readStringOptions = void 0;
37
+ exports.stringToBuffer = stringToBuffer;
38
+ exports.readStdin = readStdin;
39
+ exports.argToString = argToString;
40
+ const process = __importStar(require("process"));
41
+ const fs = __importStar(require("fs"));
42
+ function stringToBuffer(data, format) {
43
+ if (typeof format !== 'string') {
44
+ for (const f of format) {
45
+ try {
46
+ return stringToBuffer(data, f);
47
+ }
48
+ catch (err) {
49
+ // ignore, try next
50
+ }
51
+ }
52
+ throw new Error(`could not parse data, formats: ${format}`);
53
+ }
54
+ // strip all whitespace
55
+ data = data.replace(/\s*/g, '');
56
+ if (format === 'hex') {
57
+ data = data.toLowerCase();
58
+ }
59
+ const buf = Buffer.from(data, format);
60
+ // make sure there were no decoding errors
61
+ if (buf.toString(format) !== data) {
62
+ throw new Error(`invalid ${format}`);
63
+ }
64
+ return buf;
65
+ }
66
+ exports.readStringOptions = {
67
+ path: { type: 'string', nargs: 1, default: '' },
68
+ stdin: { type: 'boolean', default: false },
69
+ data: {
70
+ type: 'string',
71
+ description: 'hex or base64',
72
+ alias: 'hex',
73
+ },
74
+ clipboard: { type: 'boolean', default: false },
75
+ };
76
+ /**
77
+ * Reads from stdin until Ctrl-D is pressed.
78
+ */
79
+ async function readStdin() {
80
+ /*
81
+ * High-performance implementation of reading from stdin.
82
+ * Standard readline is extremely slow for long lines.
83
+ */
84
+ return new Promise((resolve, reject) => {
85
+ // Using readline is not an option because it is extremely slow for long lines.
86
+ // By enabling raw mode, we can read more than 4096 bytes, but it requires manual Ctrl-C/Ctrl-D handling
87
+ if (!process.stdin.setRawMode) {
88
+ throw new Error('stdin is not a tty');
89
+ }
90
+ process.stdin.setRawMode(true);
91
+ const buf = [];
92
+ process.stdin.on('data', (chunk) => {
93
+ if (chunk[0] === 0x03) {
94
+ // Ctrl-C
95
+ process.exit(130);
96
+ }
97
+ if (chunk[0] === 0x04) {
98
+ // Ctrl-D
99
+ process.stdin.emit('end');
100
+ return;
101
+ }
102
+ buf.push(chunk);
103
+ process.stdout.write(chunk);
104
+ });
105
+ process.stdin.on('end', () => {
106
+ resolve(Buffer.concat(buf).toString('utf8'));
107
+ });
108
+ process.stdin.on('error', (err) => {
109
+ reject(err);
110
+ });
111
+ });
112
+ }
113
+ /**
114
+ * @param argv
115
+ * @param input - optional input data. If set, this function just ensures that nothing else is set.
116
+ * @return string from specified source
117
+ */
118
+ async function argToString(argv, input) {
119
+ if (argv.stdin || argv.path === '-') {
120
+ if (input) {
121
+ throw new Error(`conflicting arguments`);
122
+ }
123
+ console.log('Reading from stdin. Please paste hex-encoded transaction data.');
124
+ console.log('After inserting data, press Ctrl-D to finish. Press Ctrl-C to cancel.');
125
+ if (process.stdin.isTTY) {
126
+ input = await readStdin();
127
+ }
128
+ else {
129
+ input = await fs.promises.readFile('/dev/stdin', 'utf8');
130
+ }
131
+ }
132
+ if (argv.clipboard) {
133
+ if (input) {
134
+ throw new Error(`conflicting arguments`);
135
+ }
136
+ const { default: clipboardy } = await import('clipboardy');
137
+ input = await clipboardy.read();
138
+ }
139
+ if (argv.path) {
140
+ if (input) {
141
+ throw new Error(`conflicting arguments`);
142
+ }
143
+ input = (await fs.promises.readFile(argv.path, 'utf8')).toString();
144
+ }
145
+ if (argv.data) {
146
+ if (input) {
147
+ throw new Error(`conflicting arguments`);
148
+ }
149
+ input = argv.data;
150
+ }
151
+ return input;
152
+ }
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VTdHJpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJncy9wYXJzZVN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSx3Q0F5QkM7QUF1QkQsOEJBb0NDO0FBT0Qsa0NBcUNDO0FBcElELGlEQUFtQztBQUNuQyx1Q0FBeUI7QUFHekIsU0FBZ0IsY0FBYyxDQUFDLElBQVksRUFBRSxNQUF5QjtJQUNwRSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDO2dCQUNILE9BQU8sY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixtQkFBbUI7WUFDckIsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRWhDLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLDBDQUEwQztJQUMxQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJ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Q0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0QsS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwcm9jZXNzIGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuXG50eXBlIEZvcm1hdCA9ICdoZXgnIHwgJ2Jhc2U2NCc7XG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nVG9CdWZmZXIoZGF0YTogc3RyaW5nLCBmb3JtYXQ6IEZvcm1hdCB8IEZvcm1hdFtdKTogQnVmZmVyIHtcbiAgaWYgKHR5cGVvZiBmb3JtYXQgIT09ICdzdHJpbmcnKSB7XG4gICAgZm9yIChjb25zdCBmIG9mIGZvcm1hdCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHN0cmluZ1RvQnVmZmVyKGRhdGEsIGYpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGlnbm9yZSwgdHJ5IG5leHRcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgcGFyc2UgZGF0YSwgZm9ybWF0czogJHtmb3JtYXR9YCk7XG4gIH1cblxuICAvLyBzdHJpcCBhbGwgd2hpdGVzcGFjZVxuICBkYXRhID0gZGF0YS5yZXBsYWNlKC9cXHMqL2csICcnKTtcblxuICBpZiAoZm9ybWF0ID09PSAnaGV4Jykge1xuICAgIGRhdGEgPSBkYXRhLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShkYXRhLCBmb3JtYXQpO1xuICAvLyBtYWtlIHN1cmUgdGhlcmUgd2VyZSBubyBkZWNvZGluZyBlcnJvcnNcbiAgaWYgKGJ1Zi50b1N0cmluZyhmb3JtYXQpICE9PSBkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkICR7Zm9ybWF0fWApO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5cbmV4cG9ydCBjb25zdCByZWFkU3RyaW5nT3B0aW9ucyA9IHtcbiAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgbmFyZ3M6IDEsIGRlZmF1bHQ6ICcnIH0sXG4gIHN0ZGluOiB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSxcbiAgZGF0YToge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIGRlc2NyaXB0aW9uOiAnaGV4IG9yIGJhc2U2NCcsXG4gICAgYWxpYXM6ICdoZXgnLFxuICB9LFxuICBjbGlwYm9hcmQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhZFN0cmluZ09wdGlvbnMgPSB7XG4gIGNsaXBib2FyZD86IGJvb2xlYW47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGRhdGE/OiBzdHJpbmc7XG4gIHN0ZGluOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBSZWFkcyBmcm9tIHN0ZGluIHVudGlsIEN0cmwtRCBpcyBwcmVzc2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFN0ZGluKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8qXG4gICAqIEhpZ2gtcGVyZm9ybWFuY2UgaW1wbGVtZW50YXRpb24gb2YgcmVhZGluZyBmcm9tIHN0ZGluLlxuICAgKiBTdGFuZGFyZCByZWFkbGluZSBpcyBleHRyZW1lbHkgc2xvdyBmb3IgbG9uZyBsaW5lcy5cbiAgICovXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gVXNpbmcgcmVhZGxpbmUgaXMgbm90IGFuIG9wdGlvbiBiZWNhdXNlIGl0IGlzIGV4dHJlbWVseSBzbG93IGZvciBsb25nIGxpbmVzLlxuICAgIC8vIEJ5IGVuYWJsaW5nIHJhdyBtb2RlLCB3ZSBjYW4gcmVhZCBtb3JlIHRoYW4gNDA5NiBieXRlcywgYnV0IGl0IHJlcXVpcmVzIG1hbnVhbCBDdHJsLUMvQ3RybC1EIGhhbmRsaW5nXG4gICAgaWYgKCFwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc3RkaW4gaXMgbm90IGEgdHR5Jyk7XG4gICAgfVxuICAgIHByb2Nlc3Muc3RkaW4uc2V0UmF3TW9kZSh0cnVlKTtcbiAgICBjb25zdCBidWY6IEJ1ZmZlcltdID0gW107XG5cbiAgICBwcm9jZXNzLnN0ZGluLm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgICBpZiAoY2h1bmtbMF0gPT09IDB4MDMpIHtcbiAgICAgICAgLy8gQ3RybC1DXG4gICAgICAgIHByb2Nlc3MuZXhpdCgxMzApO1xuICAgICAgfVxuICAgICAgaWYgKGNodW5rWzBdID09PSAweDA0KSB7XG4gICAgICAgIC8vIEN0cmwtRFxuICAgICAgICBwcm9jZXNzLnN0ZGluLmVtaXQoJ2VuZCcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBidWYucHVzaChjaHVuayk7XG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShjaHVuayk7XG4gICAgfSk7XG5cbiAgICBwcm9jZXNzLnN0ZGluLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICByZXNvbHZlKEJ1ZmZlci5jb25jYXQoYnVmKS50b1N0cmluZygndXRmOCcpKTtcbiAgICB9KTtcblxuICAgIHByb2Nlc3Muc3RkaW4ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEBwYXJhbSBhcmd2XG4gKiBAcGFyYW0gaW5wdXQgLSBvcHRpb25hbCBpbnB1dCBkYXRhLiBJZiBzZXQsIHRoaXMgZnVuY3Rpb24ganVzdCBlbnN1cmVzIHRoYXQgbm90aGluZyBlbHNlIGlzIHNldC5cbiAqIEByZXR1cm4gc3RyaW5nIGZyb20gc3BlY2lmaWVkIHNvdXJjZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXJnVG9TdHJpbmcoYXJndjogUmVhZFN0cmluZ09wdGlvbnMsIGlucHV0Pzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgaWYgKGFyZ3Yuc3RkaW4gfHwgYXJndi5wYXRoID09PSAnLScpIHtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY29uZmxpY3RpbmcgYXJndW1lbnRzYCk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdSZWFkaW5nIGZyb20gc3RkaW4uIFBsZWFzZSBwYXN0ZSBoZXgtZW5jb2RlZCB0cmFuc2FjdGlvbiBkYXRhLicpO1xuICAgIGNvbnNvbGUubG9nKCdBZnRlciBpbnNlcnRpbmcgZGF0YSwgcHJlc3MgQ3RybC1EIHRvIGZpbmlzaC4gUHJlc3MgQ3RybC1DIHRvIGNhbmNlbC4nKTtcbiAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgaW5wdXQgPSBhd2FpdCByZWFkU3RkaW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZSgnL2Rldi9zdGRpbicsICd1dGY4Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGFyZ3YuY2xpcGJvYXJkKSB7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbmZsaWN0aW5nIGFyZ3VtZW50c2ApO1xuICAgIH1cbiAgICBjb25zdCB7IGRlZmF1bHQ6IGNsaXBib2FyZHkgfSA9IGF3YWl0IGltcG9ydCgnY2xpcGJvYXJkeScpO1xuICAgIGlucHV0ID0gYXdhaXQgY2xpcGJvYXJkeS5yZWFkKCk7XG4gIH1cblxuICBpZiAoYXJndi5wYXRoKSB7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbmZsaWN0aW5nIGFyZ3VtZW50c2ApO1xuICAgIH1cbiAgICBpbnB1dCA9IChhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShhcmd2LnBhdGgsICd1dGY4JykpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBpZiAoYXJndi5kYXRhKSB7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbmZsaWN0aW5nIGFyZ3VtZW50c2ApO1xuICAgIH1cbiAgICBpbnB1dCA9IGFyZ3YuZGF0YTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dDtcbn1cbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export declare function isWalletKeyName(name: string): name is utxolib.bitgo.KeyName;
3
+ export declare const keyOptions: {
4
+ readonly userKey: {
5
+ readonly type: "string";
6
+ readonly demandOption: true;
7
+ };
8
+ readonly userKeyPrefix: {
9
+ readonly type: "string";
10
+ readonly default: "0/0";
11
+ };
12
+ readonly backupKey: {
13
+ readonly type: "string";
14
+ readonly demandOption: true;
15
+ };
16
+ readonly backupKeyPrefix: {
17
+ readonly type: "string";
18
+ readonly default: "0/0";
19
+ };
20
+ readonly bitgoKey: {
21
+ readonly type: "string";
22
+ readonly demandOption: true;
23
+ };
24
+ readonly bitgoKeyPrefix: {
25
+ readonly type: "string";
26
+ readonly default: "0/0";
27
+ };
28
+ };
29
+ export type KeyOptions = {
30
+ userKey: string;
31
+ userKeyPrefix?: string;
32
+ backupKey: string;
33
+ backupKeyPrefix?: string;
34
+ bitgoKey: string;
35
+ bitgoKeyPrefix?: string;
36
+ };
37
+ export declare function getRootWalletKeys(argv: KeyOptions): utxolib.bitgo.RootWalletKeys;
38
+ //# sourceMappingURL=walletKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletKeys.d.ts","sourceRoot":"","sources":["../../../src/args/walletKeys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAE3E;AAED,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;CAOb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAQhF"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.keyOptions = void 0;
40
+ exports.isWalletKeyName = isWalletKeyName;
41
+ exports.getRootWalletKeys = getRootWalletKeys;
42
+ const assert_1 = __importDefault(require("assert"));
43
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
44
+ function isWalletKeyName(name) {
45
+ return name === 'user' || name === 'backup' || name === 'bitgo';
46
+ }
47
+ exports.keyOptions = {
48
+ userKey: { type: 'string', demandOption: true },
49
+ userKeyPrefix: { type: 'string', default: '0/0' },
50
+ backupKey: { type: 'string', demandOption: true },
51
+ backupKeyPrefix: { type: 'string', default: '0/0' },
52
+ bitgoKey: { type: 'string', demandOption: true },
53
+ bitgoKeyPrefix: { type: 'string', default: '0/0' },
54
+ };
55
+ function getRootWalletKeys(argv) {
56
+ const xpubs = [argv.userKey, argv.backupKey, argv.bitgoKey].map((k) => utxolib.bip32.fromBase58(k));
57
+ (0, assert_1.default)(utxolib.bitgo.isTriple(xpubs));
58
+ return new utxolib.bitgo.RootWalletKeys(xpubs, [
59
+ argv.userKeyPrefix ?? utxolib.bitgo.RootWalletKeys.defaultPrefix,
60
+ argv.backupKeyPrefix ?? utxolib.bitgo.RootWalletKeys.defaultPrefix,
61
+ argv.bitgoKeyPrefix ?? utxolib.bitgo.RootWalletKeys.defaultPrefix,
62
+ ]);
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0S2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmdzL3dhbGxldEtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsMENBRUM7QUFvQkQsOENBUUM7QUFsQ0Qsb0RBQTRCO0FBRTVCLDhEQUFnRDtBQUVoRCxTQUFnQixlQUFlLENBQUMsSUFBWTtJQUMxQyxPQUFPLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssT0FBTyxDQUFDO0FBQ2xFLENBQUM7QUFFWSxRQUFBLFVBQVUsR0FBRztJQUN4QixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUU7SUFDL0MsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0lBQ2pELFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUNqRCxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7SUFDbkQsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFO0lBQ2hELGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtDQUMxQyxDQUFDO0FBV1gsU0FBZ0IsaUJBQWlCLENBQUMsSUFBZ0I7SUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRyxJQUFBLGdCQUFNLEVBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0QyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFO1FBQzdDLElBQUksQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYTtRQUNoRSxJQUFJLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWE7UUFDbEUsSUFBSSxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhO0tBQ2xFLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNXYWxsZXRLZXlOYW1lKG5hbWU6IHN0cmluZyk6IG5hbWUgaXMgdXR4b2xpYi5iaXRnby5LZXlOYW1lIHtcbiAgcmV0dXJuIG5hbWUgPT09ICd1c2VyJyB8fCBuYW1lID09PSAnYmFja3VwJyB8fCBuYW1lID09PSAnYml0Z28nO1xufVxuXG5leHBvcnQgY29uc3Qga2V5T3B0aW9ucyA9IHtcbiAgdXNlcktleTogeyB0eXBlOiAnc3RyaW5nJywgZGVtYW5kT3B0aW9uOiB0cnVlIH0sXG4gIHVzZXJLZXlQcmVmaXg6IHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6ICcwLzAnIH0sXG4gIGJhY2t1cEtleTogeyB0eXBlOiAnc3RyaW5nJywgZGVtYW5kT3B0aW9uOiB0cnVlIH0sXG4gIGJhY2t1cEtleVByZWZpeDogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJzAvMCcgfSxcbiAgYml0Z29LZXk6IHsgdHlwZTogJ3N0cmluZycsIGRlbWFuZE9wdGlvbjogdHJ1ZSB9LFxuICBiaXRnb0tleVByZWZpeDogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJzAvMCcgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEtleU9wdGlvbnMgPSB7XG4gIHVzZXJLZXk6IHN0cmluZztcbiAgdXNlcktleVByZWZpeD86IHN0cmluZztcbiAgYmFja3VwS2V5OiBzdHJpbmc7XG4gIGJhY2t1cEtleVByZWZpeD86IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbiAgYml0Z29LZXlQcmVmaXg/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFdhbGxldEtleXMoYXJndjogS2V5T3B0aW9ucyk6IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMge1xuICBjb25zdCB4cHVicyA9IFthcmd2LnVzZXJLZXksIGFyZ3YuYmFja3VwS2V5LCBhcmd2LmJpdGdvS2V5XS5tYXAoKGspID0+IHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OChrKSk7XG4gIGFzc2VydCh1dHhvbGliLmJpdGdvLmlzVHJpcGxlKHhwdWJzKSk7XG4gIHJldHVybiBuZXcgdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyh4cHVicywgW1xuICAgIGFyZ3YudXNlcktleVByZWZpeCA/PyB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzLmRlZmF1bHRQcmVmaXgsXG4gICAgYXJndi5iYWNrdXBLZXlQcmVmaXggPz8gdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cy5kZWZhdWx0UHJlZml4LFxuICAgIGFyZ3YuYml0Z29LZXlQcmVmaXggPz8gdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cy5kZWZhdWx0UHJlZml4LFxuICBdKTtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { ParserNode } from './Parser';
2
+ export declare function parseBip32(bip32Key: string, params: {
3
+ derive?: string;
4
+ }): ParserNode;
5
+ //# sourceMappingURL=bip32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bip32.d.ts","sourceRoot":"","sources":["../../src/bip32.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,UAAU,EAAE,MAAM,UAAU,CAAC;AAG9C,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAepF"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseBip32 = parseBip32;
37
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
38
+ const Parser_1 = require("./Parser");
39
+ const parseUnknown_1 = require("./parseUnknown");
40
+ function parseBip32(bip32Key, params) {
41
+ const parser = new Parser_1.Parser();
42
+ let bip32 = utxolib.bip32.fromBase58(bip32Key);
43
+ if (params.derive) {
44
+ bip32 = bip32.derivePath(params.derive);
45
+ }
46
+ const label = bip32.isNeutered() ? 'xpub' : 'xprv';
47
+ const node = (0, parseUnknown_1.parseUnknown)(parser, label, bip32, {
48
+ omit: ['network', '__Q', '__D', '__DEPTH', '__INDEX', '__PARENT_FINGERPRINT'],
49
+ });
50
+ if (!bip32.isNeutered()) {
51
+ node.nodes?.unshift(parser.node('xpub', bip32.neutered().toBase58()));
52
+ }
53
+ node.value = bip32.toBase58();
54
+ return node;
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmlwMzIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxnQ0FlQztBQXBCRCw4REFBZ0Q7QUFFaEQscUNBQThDO0FBQzlDLGlEQUE4QztBQUU5QyxTQUFnQixVQUFVLENBQUMsUUFBZ0IsRUFBRSxNQUEyQjtJQUN0RSxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sRUFBRSxDQUFDO0lBQzVCLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuRCxNQUFNLElBQUksR0FBRyxJQUFBLDJCQUFZLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDOUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQztLQUM5RSxDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCB7IHBhcnNlVW5rbm93biB9IGZyb20gJy4vcGFyc2VVbmtub3duJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQmlwMzIoYmlwMzJLZXk6IHN0cmluZywgcGFyYW1zOiB7IGRlcml2ZT86IHN0cmluZyB9KTogUGFyc2VyTm9kZSB7XG4gIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIoKTtcbiAgbGV0IGJpcDMyID0gdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KGJpcDMyS2V5KTtcbiAgaWYgKHBhcmFtcy5kZXJpdmUpIHtcbiAgICBiaXAzMiA9IGJpcDMyLmRlcml2ZVBhdGgocGFyYW1zLmRlcml2ZSk7XG4gIH1cbiAgY29uc3QgbGFiZWwgPSBiaXAzMi5pc05ldXRlcmVkKCkgPyAneHB1YicgOiAneHBydic7XG4gIGNvbnN0IG5vZGUgPSBwYXJzZVVua25vd24ocGFyc2VyLCBsYWJlbCwgYmlwMzIsIHtcbiAgICBvbWl0OiBbJ25ldHdvcmsnLCAnX19RJywgJ19fRCcsICdfX0RFUFRIJywgJ19fSU5ERVgnLCAnX19QQVJFTlRfRklOR0VSUFJJTlQnXSxcbiAgfSk7XG4gIGlmICghYmlwMzIuaXNOZXV0ZXJlZCgpKSB7XG4gICAgbm9kZS5ub2Rlcz8udW5zaGlmdChwYXJzZXIubm9kZSgneHB1YicsIGJpcDMyLm5ldXRlcmVkKCkudG9CYXNlNTgoKSkpO1xuICB9XG4gIG5vZGUudmFsdWUgPSBiaXAzMi50b0Jhc2U1OCgpO1xuICByZXR1cm4gbm9kZTtcbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { CommandModule } from 'yargs';
3
+ import { KeyOptions } from '../../args';
4
+ type IndexLimitOptions = {
5
+ index?: string[];
6
+ limit?: number;
7
+ };
8
+ type ArgsGenerateAddressFixedScript = KeyOptions & IndexLimitOptions & {
9
+ network: utxolib.Network;
10
+ chain?: number[];
11
+ format: string;
12
+ };
13
+ export declare const cmdGenerateFixedScript: CommandModule<unknown, ArgsGenerateAddressFixedScript>;
14
+ type ArgsGenerateDescriptorAddress = {
15
+ network: utxolib.Network;
16
+ descriptor: string;
17
+ format: string;
18
+ } & IndexLimitOptions;
19
+ export declare const cmdFromDescriptor: CommandModule<unknown, ArgsGenerateDescriptorAddress>;
20
+ export {};
21
+ //# sourceMappingURL=cmdGenerate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmdGenerate.d.ts","sourceRoot":"","sources":["../../../../src/commands/cmdAddress/cmdGenerate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAuC,UAAU,EAAE,MAAM,YAAY,CAAC;AAa7E,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAyBF,KAAK,8BAA8B,GAAG,UAAU,GAC9C,iBAAiB,GAAG;IAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEJ,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,OAAO,EAAE,8BAA8B,CA2BzF,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,iBAAiB,CAAC;AAEtB,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,OAAO,EAAE,6BAA6B,CA+BnF,CAAC"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cmdFromDescriptor = exports.cmdGenerateFixedScript = void 0;
4
+ const args_1 = require("../../args");
5
+ const generateAddress_1 = require("../../generateAddress");
6
+ const indexLimitOptions = {
7
+ index: {
8
+ type: 'string',
9
+ array: true,
10
+ description: 'Address index. Can be given as a range (e.g. 0-99). Takes precedence over --limit.',
11
+ },
12
+ limit: {
13
+ type: 'number',
14
+ description: 'Alias for --index with range starting at 0 to limit-1.',
15
+ default: 100,
16
+ },
17
+ };
18
+ function getIndexRangeFromArgv(argv) {
19
+ if (argv.index) {
20
+ return (0, generateAddress_1.parseIndexRange)(argv.index);
21
+ }
22
+ if (argv.limit) {
23
+ return (0, generateAddress_1.getRange)(0, argv.limit - 1);
24
+ }
25
+ throw new Error(`no index or limit`);
26
+ }
27
+ exports.cmdGenerateFixedScript = {
28
+ command: 'fromFixedScript',
29
+ describe: 'generate bitgo fixed-script addresses',
30
+ builder(b) {
31
+ return b
32
+ .options((0, args_1.getNetworkOptionsDemand)('bitcoin'))
33
+ .options(args_1.keyOptions)
34
+ .option('format', {
35
+ type: 'string',
36
+ default: '%p0\t%a',
37
+ description: `Format string.\nPlaceholders:\n${(0, generateAddress_1.getFixedScriptAddressPlaceholderDescription)()}`,
38
+ })
39
+ .option('chain', { type: 'number', array: true, description: 'Address chain' })
40
+ .options(indexLimitOptions);
41
+ },
42
+ handler(argv) {
43
+ for (const address of (0, generateAddress_1.generateFixedScriptAddress)({
44
+ ...argv,
45
+ index: getIndexRangeFromArgv(argv),
46
+ })) {
47
+ if (argv.format === 'tree') {
48
+ console.log((0, generateAddress_1.formatAddressTree)(address));
49
+ }
50
+ else {
51
+ console.log((0, generateAddress_1.formatFixedScriptAddress)(address, argv.format));
52
+ }
53
+ }
54
+ },
55
+ };
56
+ exports.cmdFromDescriptor = {
57
+ command: 'fromDescriptor [descriptor]',
58
+ describe: 'generate address from descriptor',
59
+ builder(b) {
60
+ return b
61
+ .options((0, args_1.getNetworkOptionsDemand)('bitcoin'))
62
+ .positional('descriptor', {
63
+ type: 'string',
64
+ demandOption: true,
65
+ })
66
+ .options({
67
+ format: {
68
+ type: 'string',
69
+ description: `Format string.\nPlaceholders:\n${(0, generateAddress_1.getDescriptorAddressPlaceholderDescription)()}`,
70
+ default: '%i\t%a',
71
+ },
72
+ })
73
+ .options(indexLimitOptions);
74
+ },
75
+ handler(argv) {
76
+ for (const address of (0, generateAddress_1.generateDescriptorAddress)({
77
+ ...argv,
78
+ index: getIndexRangeFromArgv(argv),
79
+ })) {
80
+ if (argv.format === 'tree') {
81
+ console.log((0, generateAddress_1.formatAddressTree)(address));
82
+ }
83
+ else {
84
+ console.log((0, generateAddress_1.formatDescriptorAddress)(address, argv.format));
85
+ }
86
+ }
87
+ },
88
+ };
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21kR2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbWFuZHMvY21kQWRkcmVzcy9jbWRHZW5lcmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxxQ0FBNkU7QUFDN0UsMkRBVStCO0FBTy9CLE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsSUFBSTtRQUNYLFdBQVcsRUFBRSxvRkFBb0Y7S0FDbEc7SUFDRCxLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSx3REFBd0Q7UUFDckUsT0FBTyxFQUFFLEdBQUc7S0FDYjtDQUNPLENBQUM7QUFFWCxTQUFTLHFCQUFxQixDQUFDLElBQXVCO0lBQ3BELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxJQUFBLGlDQUFlLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBQSwwQkFBUSxFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDdkMsQ0FBQztBQVNZLFFBQUEsc0JBQXNCLEdBQTJEO0lBQzVGLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsUUFBUSxFQUFFLHVDQUF1QztJQUNqRCxPQUFPLENBQUMsQ0FBQztRQUNQLE9BQU8sQ0FBQzthQUNMLE9BQU8sQ0FBQyxJQUFBLDhCQUF1QixFQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzNDLE9BQU8sQ0FBQyxpQkFBVSxDQUFDO2FBQ25CLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxFQUFFLFFBQVE7WUFDZCxPQUFPLEVBQUUsU0FBUztZQUNsQixXQUFXLEVBQUUsa0NBQWtDLElBQUEsNkRBQTJDLEdBQUUsRUFBRTtTQUMvRixDQUFDO2FBQ0QsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUM7YUFDOUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJO1FBQ1YsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFBLDRDQUEwQixFQUFDO1lBQy9DLEdBQUcsSUFBSTtZQUNQLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7U0FDbkMsQ0FBQyxFQUFFLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBQSxtQ0FBaUIsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUEsMENBQXdCLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzlELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGLENBQUM7QUFRVyxRQUFBLGlCQUFpQixHQUEwRDtJQUN0RixPQUFPLEVBQUUsNkJBQTZCO0lBQ3RDLFFBQVEsRUFBRSxrQ0FBa0M7SUFDNUMsT0FBTyxDQUFDLENBQUM7UUFDUCxPQUFPLENBQUM7YUFDTCxPQUFPLENBQUMsSUFBQSw4QkFBdUIsRUFBQyxTQUFTLENBQUMsQ0FBQzthQUMzQyxVQUFVLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksRUFBRSxRQUFRO1lBQ2QsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQzthQUNELE9BQU8sQ0FBQztZQUNQLE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsa0NBQWtDLElBQUEsNERBQTBDLEdBQUUsRUFBRTtnQkFDN0YsT0FBTyxFQUFFLFFBQVE7YUFDbEI7U0FDRixDQUFDO2FBQ0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJO1FBQ1YsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFBLDJDQUF5QixFQUFDO1lBQzlDLEdBQUcsSUFBSTtZQUNQLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7U0FDbkMsQ0FBQyxFQUFFLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBQSxtQ0FBaUIsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUEseUNBQXVCLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IENvbW1hbmRNb2R1bGUgfSBmcm9tICd5YXJncyc7XG5cbmltcG9ydCB7IGdldE5ldHdvcmtPcHRpb25zRGVtYW5kLCBrZXlPcHRpb25zLCBLZXlPcHRpb25zIH0gZnJvbSAnLi4vLi4vYXJncyc7XG5pbXBvcnQge1xuICBmb3JtYXRBZGRyZXNzVHJlZSxcbiAgZm9ybWF0RGVzY3JpcHRvckFkZHJlc3MsXG4gIGZvcm1hdEZpeGVkU2NyaXB0QWRkcmVzcyxcbiAgZ2VuZXJhdGVEZXNjcmlwdG9yQWRkcmVzcyxcbiAgZ2VuZXJhdGVGaXhlZFNjcmlwdEFkZHJlc3MsXG4gIGdldERlc2NyaXB0b3JBZGRyZXNzUGxhY2Vob2xkZXJEZXNjcmlwdGlvbixcbiAgZ2V0Rml4ZWRTY3JpcHRBZGRyZXNzUGxhY2Vob2xkZXJEZXNjcmlwdGlvbixcbiAgZ2V0UmFuZ2UsXG4gIHBhcnNlSW5kZXhSYW5nZSxcbn0gZnJvbSAnLi4vLi4vZ2VuZXJhdGVBZGRyZXNzJztcblxudHlwZSBJbmRleExpbWl0T3B0aW9ucyA9IHtcbiAgaW5kZXg/OiBzdHJpbmdbXTtcbiAgbGltaXQ/OiBudW1iZXI7XG59O1xuXG5jb25zdCBpbmRleExpbWl0T3B0aW9ucyA9IHtcbiAgaW5kZXg6IHtcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICBhcnJheTogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjogJ0FkZHJlc3MgaW5kZXguIENhbiBiZSBnaXZlbiBhcyBhIHJhbmdlIChlLmcuIDAtOTkpLiBUYWtlcyBwcmVjZWRlbmNlIG92ZXIgLS1saW1pdC4nLFxuICB9LFxuICBsaW1pdDoge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnQWxpYXMgZm9yIC0taW5kZXggd2l0aCByYW5nZSBzdGFydGluZyBhdCAwIHRvIGxpbWl0LTEuJyxcbiAgICBkZWZhdWx0OiAxMDAsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBnZXRJbmRleFJhbmdlRnJvbUFyZ3YoYXJndjogSW5kZXhMaW1pdE9wdGlvbnMpOiBudW1iZXJbXSB7XG4gIGlmIChhcmd2LmluZGV4KSB7XG4gICAgcmV0dXJuIHBhcnNlSW5kZXhSYW5nZShhcmd2LmluZGV4KTtcbiAgfVxuICBpZiAoYXJndi5saW1pdCkge1xuICAgIHJldHVybiBnZXRSYW5nZSgwLCBhcmd2LmxpbWl0IC0gMSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyBpbmRleCBvciBsaW1pdGApO1xufVxuXG50eXBlIEFyZ3NHZW5lcmF0ZUFkZHJlc3NGaXhlZFNjcmlwdCA9IEtleU9wdGlvbnMgJlxuICBJbmRleExpbWl0T3B0aW9ucyAmIHtcbiAgICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcms7XG4gICAgY2hhaW4/OiBudW1iZXJbXTtcbiAgICBmb3JtYXQ6IHN0cmluZztcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGNtZEdlbmVyYXRlRml4ZWRTY3JpcHQ6IENvbW1hbmRNb2R1bGU8dW5rbm93biwgQXJnc0dlbmVyYXRlQWRkcmVzc0ZpeGVkU2NyaXB0PiA9IHtcbiAgY29tbWFuZDogJ2Zyb21GaXhlZFNjcmlwdCcsXG4gIGRlc2NyaWJlOiAnZ2VuZXJhdGUgYml0Z28gZml4ZWQtc2NyaXB0IGFkZHJlc3NlcycsXG4gIGJ1aWxkZXIoYikge1xuICAgIHJldHVybiBiXG4gICAgICAub3B0aW9ucyhnZXROZXR3b3JrT3B0aW9uc0RlbWFuZCgnYml0Y29pbicpKVxuICAgICAgLm9wdGlvbnMoa2V5T3B0aW9ucylcbiAgICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHQ6ICclcDBcXHQlYScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgRm9ybWF0IHN0cmluZy5cXG5QbGFjZWhvbGRlcnM6XFxuJHtnZXRGaXhlZFNjcmlwdEFkZHJlc3NQbGFjZWhvbGRlckRlc2NyaXB0aW9uKCl9YCxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdjaGFpbicsIHsgdHlwZTogJ251bWJlcicsIGFycmF5OiB0cnVlLCBkZXNjcmlwdGlvbjogJ0FkZHJlc3MgY2hhaW4nIH0pXG4gICAgICAub3B0aW9ucyhpbmRleExpbWl0T3B0aW9ucyk7XG4gIH0sXG4gIGhhbmRsZXIoYXJndik6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiBnZW5lcmF0ZUZpeGVkU2NyaXB0QWRkcmVzcyh7XG4gICAgICAuLi5hcmd2LFxuICAgICAgaW5kZXg6IGdldEluZGV4UmFuZ2VGcm9tQXJndihhcmd2KSxcbiAgICB9KSkge1xuICAgICAgaWYgKGFyZ3YuZm9ybWF0ID09PSAndHJlZScpIHtcbiAgICAgICAgY29uc29sZS5sb2coZm9ybWF0QWRkcmVzc1RyZWUoYWRkcmVzcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coZm9ybWF0Rml4ZWRTY3JpcHRBZGRyZXNzKGFkZHJlc3MsIGFyZ3YuZm9ybWF0KSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxufTtcblxudHlwZSBBcmdzR2VuZXJhdGVEZXNjcmlwdG9yQWRkcmVzcyA9IHtcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrO1xuICBkZXNjcmlwdG9yOiBzdHJpbmc7XG4gIGZvcm1hdDogc3RyaW5nO1xufSAmIEluZGV4TGltaXRPcHRpb25zO1xuXG5leHBvcnQgY29uc3QgY21kRnJvbURlc2NyaXB0b3I6IENvbW1hbmRNb2R1bGU8dW5rbm93biwgQXJnc0dlbmVyYXRlRGVzY3JpcHRvckFkZHJlc3M+ID0ge1xuICBjb21tYW5kOiAnZnJvbURlc2NyaXB0b3IgW2Rlc2NyaXB0b3JdJyxcbiAgZGVzY3JpYmU6ICdnZW5lcmF0ZSBhZGRyZXNzIGZyb20gZGVzY3JpcHRvcicsXG4gIGJ1aWxkZXIoYikge1xuICAgIHJldHVybiBiXG4gICAgICAub3B0aW9ucyhnZXROZXR3b3JrT3B0aW9uc0RlbWFuZCgnYml0Y29pbicpKVxuICAgICAgLnBvc2l0aW9uYWwoJ2Rlc2NyaXB0b3InLCB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoe1xuICAgICAgICBmb3JtYXQ6IHtcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYEZvcm1hdCBzdHJpbmcuXFxuUGxhY2Vob2xkZXJzOlxcbiR7Z2V0RGVzY3JpcHRvckFkZHJlc3NQbGFjZWhvbGRlckRlc2NyaXB0aW9uKCl9YCxcbiAgICAgICAgICBkZWZhdWx0OiAnJWlcXHQlYScsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoaW5kZXhMaW1pdE9wdGlvbnMpO1xuICB9LFxuICBoYW5kbGVyKGFyZ3YpIHtcbiAgICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2YgZ2VuZXJhdGVEZXNjcmlwdG9yQWRkcmVzcyh7XG4gICAgICAuLi5hcmd2LFxuICAgICAgaW5kZXg6IGdldEluZGV4UmFuZ2VGcm9tQXJndihhcmd2KSxcbiAgICB9KSkge1xuICAgICAgaWYgKGFyZ3YuZm9ybWF0ID09PSAndHJlZScpIHtcbiAgICAgICAgY29uc29sZS5sb2coZm9ybWF0QWRkcmVzc1RyZWUoYWRkcmVzcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coZm9ybWF0RGVzY3JpcHRvckFkZHJlc3MoYWRkcmVzcywgYXJndi5mb3JtYXQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59O1xuIl19