@bitgo-beta/utxo-bin 2.8.3-beta.24 → 2.8.3-beta.240
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -86
- package/dist/bin/index.js +10 -2
- package/dist/src/AddressParser.d.ts +1 -0
- package/dist/src/AddressParser.d.ts.map +1 -1
- package/dist/src/AddressParser.js +7 -1
- package/dist/src/InputParser.d.ts +44 -0
- package/dist/src/InputParser.d.ts.map +1 -0
- package/dist/src/InputParser.js +239 -0
- package/dist/src/OutputParser.d.ts +24 -0
- package/dist/src/OutputParser.d.ts.map +1 -0
- package/dist/src/OutputParser.js +52 -0
- package/dist/src/Parser.d.ts +7 -1
- package/dist/src/Parser.d.ts.map +1 -1
- package/dist/src/Parser.js +29 -2
- package/dist/src/ParserTx.d.ts +28 -0
- package/dist/src/ParserTx.d.ts.map +1 -0
- package/dist/src/ParserTx.js +94 -0
- package/dist/src/ScriptParser.d.ts +21 -0
- package/dist/src/ScriptParser.d.ts.map +1 -0
- package/dist/src/ScriptParser.js +77 -0
- package/dist/src/TxParser.d.ts +9 -6
- package/dist/src/TxParser.d.ts.map +1 -1
- package/dist/src/TxParser.js +21 -23
- package/dist/src/bip32.d.ts +5 -0
- package/dist/src/bip32.d.ts.map +1 -0
- package/dist/src/bip32.js +23 -0
- package/dist/src/commands.d.ts +52 -1
- package/dist/src/commands.d.ts.map +1 -1
- package/dist/src/commands.js +169 -19
- package/dist/src/fetch.d.ts +4 -3
- package/dist/src/fetch.d.ts.map +1 -1
- package/dist/src/fetch.js +14 -3
- package/dist/src/format.d.ts +1 -1
- package/dist/src/format.d.ts.map +1 -1
- package/dist/src/format.js +17 -7
- package/dist/src/generateAddress.d.ts +35 -0
- package/dist/src/generateAddress.d.ts.map +1 -0
- package/dist/src/generateAddress.js +108 -0
- package/dist/src/parseString.d.ts +5 -0
- package/dist/src/parseString.d.ts.map +1 -0
- package/dist/src/parseString.js +29 -0
- package/dist/src/parseUnknown.d.ts +5 -0
- package/dist/src/parseUnknown.d.ts.map +1 -0
- package/dist/src/parseUnknown.js +50 -0
- package/dist/src/readStdin.d.ts +5 -0
- package/dist/src/readStdin.d.ts.map +1 -0
- package/dist/src/readStdin.js +42 -0
- package/dist/test/bip32.d.ts +2 -0
- package/dist/test/bip32.d.ts.map +1 -0
- package/dist/test/bip32.js +21 -0
- package/dist/test/bip32.util.d.ts +6 -0
- package/dist/test/bip32.util.d.ts.map +1 -0
- package/dist/test/bip32.util.js +14 -0
- package/dist/test/fixtures.d.ts +24 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +95 -0
- package/dist/test/generateAddress.d.ts +2 -0
- package/dist/test/generateAddress.d.ts.map +1 -0
- package/dist/test/generateAddress.js +29 -0
- package/dist/test/parseAddress.d.ts +6 -0
- package/dist/test/parseAddress.d.ts.map +1 -0
- package/dist/test/parseAddress.js +80 -0
- package/dist/test/parseScript.d.ts +2 -0
- package/dist/test/parseScript.d.ts.map +1 -0
- package/dist/test/parseScript.js +38 -0
- package/dist/test/parseTransaction.d.ts +2 -0
- package/dist/test/parseTransaction.d.ts.map +1 -0
- package/dist/test/parseTransaction.js +66 -0
- package/dist/test/stringToBuffer.d.ts +2 -0
- package/dist/test/stringToBuffer.d.ts.map +1 -0
- package/dist/test/stringToBuffer.js +16 -0
- package/dist/tsconfig.tsbuildinfo +1 -4675
- package/package.json +8 -6
- package/dist/src/InputOutputParser.d.ts +0 -35
- package/dist/src/InputOutputParser.d.ts.map +0 -1
- package/dist/src/InputOutputParser.js +0 -196
package/dist/src/commands.js
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cmdParseAddress = exports.cmdParseTx = exports.getAddressParser = exports.getTxParser = void 0;
|
|
3
|
+
exports.cmdParseXpub = exports.cmdGenerateAddress = exports.cmdParseScript = exports.cmdParseAddress = exports.cmdParseTx = exports.getScriptParser = exports.getAddressParser = exports.getTxParser = void 0;
|
|
4
4
|
const fs = require("fs");
|
|
5
5
|
const process = require("process");
|
|
6
6
|
const util_1 = require("util");
|
|
7
|
-
const
|
|
7
|
+
const clipboardy_cjs_1 = require("clipboardy-cjs");
|
|
8
8
|
const utxolib = require("@bitgo-beta/utxo-lib");
|
|
9
|
+
const Parser_1 = require("./Parser");
|
|
9
10
|
const format_1 = require("./format");
|
|
10
11
|
const fetch_1 = require("./fetch");
|
|
11
12
|
const TxParser_1 = require("./TxParser");
|
|
12
13
|
const AddressParser_1 = require("./AddressParser");
|
|
13
14
|
const blockapis_1 = require("@bitgo-beta/blockapis");
|
|
15
|
+
const readStdin_1 = require("./readStdin");
|
|
16
|
+
const parseUnknown_1 = require("./parseUnknown");
|
|
17
|
+
const ParserTx_1 = require("./ParserTx");
|
|
18
|
+
const ScriptParser_1 = require("./ScriptParser");
|
|
19
|
+
const parseString_1 = require("./parseString");
|
|
20
|
+
const generateAddress_1 = require("./generateAddress");
|
|
21
|
+
const bip32_1 = require("./bip32");
|
|
14
22
|
async function getClient({ cache }) {
|
|
15
23
|
if (cache) {
|
|
16
24
|
const mkdir = util_1.promisify(fs.mkdir);
|
|
@@ -23,7 +31,7 @@ async function getClient({ cache }) {
|
|
|
23
31
|
function getNetworkForName(name) {
|
|
24
32
|
const network = utxolib.networks[name];
|
|
25
33
|
if (!network) {
|
|
26
|
-
throw new Error(`invalid network ${
|
|
34
|
+
throw new Error(`invalid network ${name}`);
|
|
27
35
|
}
|
|
28
36
|
return network;
|
|
29
37
|
}
|
|
@@ -47,7 +55,7 @@ function resolveNetwork(args) {
|
|
|
47
55
|
}
|
|
48
56
|
function getTxParser(argv) {
|
|
49
57
|
if (argv.all) {
|
|
50
|
-
return new TxParser_1.TxParser(TxParser_1.TxParser.PARSE_ALL);
|
|
58
|
+
return new TxParser_1.TxParser({ ...argv, ...TxParser_1.TxParser.PARSE_ALL });
|
|
51
59
|
}
|
|
52
60
|
return new TxParser_1.TxParser({
|
|
53
61
|
...argv,
|
|
@@ -63,14 +71,23 @@ function getAddressParser(argv) {
|
|
|
63
71
|
return new AddressParser_1.AddressParser(resolveNetwork(argv));
|
|
64
72
|
}
|
|
65
73
|
exports.getAddressParser = getAddressParser;
|
|
74
|
+
function getScriptParser(argv) {
|
|
75
|
+
return new ScriptParser_1.ScriptParser(resolveNetwork(argv));
|
|
76
|
+
}
|
|
77
|
+
exports.getScriptParser = getScriptParser;
|
|
66
78
|
exports.cmdParseTx = {
|
|
67
79
|
command: 'parseTx [path]',
|
|
68
80
|
aliases: ['parse', 'tx'],
|
|
69
|
-
describe: '
|
|
81
|
+
describe: 'Display transaction components in human-readable form. ' +
|
|
82
|
+
'Supported formats are Partially Signed Bitcoin Transaction (PSBT), ' +
|
|
83
|
+
'bitcoinjs-lib encoding (Legacy) or fully signed transaction. ' +
|
|
84
|
+
'Bytes must be encoded in hex or base64 format.',
|
|
70
85
|
builder(b) {
|
|
71
86
|
return b
|
|
72
87
|
.option('path', { type: 'string', nargs: 1, default: '' })
|
|
73
88
|
.option('stdin', { type: 'boolean', default: false })
|
|
89
|
+
.option('data', { type: 'string', description: 'transaction bytes (hex or base64)', alias: 'hex' })
|
|
90
|
+
.option('clipboard', { type: 'boolean', default: false })
|
|
74
91
|
.option('txid', { type: 'string' })
|
|
75
92
|
.option('fetchAll', { type: 'boolean', default: false })
|
|
76
93
|
.option('fetchStatus', { type: 'boolean', default: false })
|
|
@@ -81,42 +98,87 @@ exports.cmdParseTx = {
|
|
|
81
98
|
.option('parseScriptData', { alias: 'scriptdata', type: 'boolean', default: false })
|
|
82
99
|
.option('parseSignatureData', { alias: 'sigdata', type: 'boolean', default: false })
|
|
83
100
|
.option('parseOutputScript', { type: 'boolean', default: false })
|
|
101
|
+
.option('parseAsUnknown', {
|
|
102
|
+
type: 'boolean',
|
|
103
|
+
default: false,
|
|
104
|
+
description: 'show plain Javascript object without any post-processing',
|
|
105
|
+
})
|
|
84
106
|
.option('maxOutputs', { type: 'number' })
|
|
85
107
|
.option('vin', { type: 'number' })
|
|
86
108
|
.array('vin')
|
|
109
|
+
.option('finalize', {
|
|
110
|
+
type: 'boolean',
|
|
111
|
+
default: false,
|
|
112
|
+
description: 'finalize PSBT and parse result instead of PSBT',
|
|
113
|
+
})
|
|
87
114
|
.option('all', { type: 'boolean', default: false })
|
|
88
|
-
.option('cache', {
|
|
89
|
-
|
|
115
|
+
.option('cache', {
|
|
116
|
+
type: 'boolean',
|
|
117
|
+
default: false,
|
|
118
|
+
description: 'use local cache for http responses',
|
|
119
|
+
})
|
|
120
|
+
.option('format', { choices: ['tree', 'json'], default: 'tree' })
|
|
121
|
+
.option('parseError', { choices: ['continue', 'throw'], default: 'continue' });
|
|
90
122
|
},
|
|
91
123
|
async handler(argv) {
|
|
92
124
|
const network = getNetwork(argv);
|
|
93
125
|
let data;
|
|
94
126
|
const httpClient = await getClient({ cache: argv.cache });
|
|
95
127
|
if (argv.txid) {
|
|
96
|
-
console.log('fetching txHex via blockapi...');
|
|
97
128
|
data = await fetch_1.fetchTransactionHex(httpClient, argv.txid, network);
|
|
98
129
|
}
|
|
99
130
|
if (argv.stdin || argv.path === '-') {
|
|
100
131
|
if (data) {
|
|
101
132
|
throw new Error(`conflicting arguments`);
|
|
102
133
|
}
|
|
103
|
-
console.log('
|
|
104
|
-
data
|
|
134
|
+
console.log('Reading from stdin. Please paste hex-encoded transaction data.');
|
|
135
|
+
console.log('After inserting data, press Ctrl-D to finish. Press Ctrl-C to cancel.');
|
|
136
|
+
if (process.stdin.isTTY) {
|
|
137
|
+
data = await readStdin_1.readStdin();
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
data = await fs.promises.readFile('/dev/stdin', 'utf8');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (argv.clipboard) {
|
|
144
|
+
if (data) {
|
|
145
|
+
throw new Error(`conflicting arguments`);
|
|
146
|
+
}
|
|
147
|
+
data = await clipboardy_cjs_1.default.read();
|
|
105
148
|
}
|
|
106
|
-
|
|
149
|
+
if (argv.path) {
|
|
107
150
|
if (data) {
|
|
108
151
|
throw new Error(`conflicting arguments`);
|
|
109
152
|
}
|
|
110
153
|
data = (await fs.promises.readFile(argv.path, 'utf8')).toString();
|
|
111
154
|
}
|
|
155
|
+
if (argv.data) {
|
|
156
|
+
if (data) {
|
|
157
|
+
throw new Error(`conflicting arguments`);
|
|
158
|
+
}
|
|
159
|
+
data = argv.data;
|
|
160
|
+
}
|
|
161
|
+
// strip whitespace
|
|
112
162
|
if (!data) {
|
|
113
163
|
throw new Error(`no txdata`);
|
|
114
164
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
165
|
+
const bytes = parseString_1.stringToBuffer(data, ['hex', 'base64']);
|
|
166
|
+
let tx = utxolib.bitgo.isPsbt(bytes)
|
|
167
|
+
? utxolib.bitgo.createPsbtFromBuffer(bytes, network)
|
|
168
|
+
: utxolib.bitgo.createTransactionFromBuffer(bytes, network, { amountType: 'bigint' });
|
|
169
|
+
const { id: txid } = ParserTx_1.getParserTxProperties(tx, undefined);
|
|
170
|
+
if (tx instanceof utxolib.bitgo.UtxoTransaction) {
|
|
171
|
+
if (argv.txid && txid !== argv.txid) {
|
|
172
|
+
throw new Error(`computed txid does not match txid argument`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else if (argv.finalize) {
|
|
176
|
+
tx.finalizeAllInputs();
|
|
177
|
+
tx = tx.extractTransaction();
|
|
178
|
+
}
|
|
179
|
+
if (argv.parseAsUnknown) {
|
|
180
|
+
console.log(formatString(parseUnknown_1.parseUnknown(new Parser_1.Parser(), 'tx', tx), argv));
|
|
181
|
+
return;
|
|
120
182
|
}
|
|
121
183
|
if (argv.fetchAll) {
|
|
122
184
|
argv.fetchStatus = true;
|
|
@@ -124,10 +186,12 @@ exports.cmdParseTx = {
|
|
|
124
186
|
argv.fetchSpends = true;
|
|
125
187
|
}
|
|
126
188
|
const parsed = getTxParser(argv).parse(tx, {
|
|
127
|
-
status: argv.fetchStatus ? await fetch_1.fetchTransactionStatus(httpClient, txid, network) : undefined,
|
|
189
|
+
status: argv.fetchStatus && txid ? await fetch_1.fetchTransactionStatus(httpClient, txid, network) : undefined,
|
|
128
190
|
prevOutputs: argv.fetchInputs ? await fetch_1.fetchPrevOutputs(httpClient, tx) : undefined,
|
|
129
191
|
prevOutputSpends: argv.fetchSpends ? await fetch_1.fetchPrevOutputSpends(httpClient, tx) : undefined,
|
|
130
|
-
outputSpends: argv.fetchSpends
|
|
192
|
+
outputSpends: argv.fetchSpends && tx instanceof utxolib.bitgo.UtxoTransaction
|
|
193
|
+
? await fetch_1.fetchOutputSpends(httpClient, tx)
|
|
194
|
+
: undefined,
|
|
131
195
|
});
|
|
132
196
|
console.log(formatString(parsed, argv));
|
|
133
197
|
},
|
|
@@ -149,4 +213,90 @@ exports.cmdParseAddress = {
|
|
|
149
213
|
console.log(formatString(parsed, argv));
|
|
150
214
|
},
|
|
151
215
|
};
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUNuQywrQkFBaUM7QUFFakMsTUFBTSxLQUFLLEdBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUVqQyxnREFBZ0Q7QUFHaEQscUNBQXNDO0FBQ3RDLG1DQU1pQjtBQUNqQix5Q0FBb0Q7QUFDcEQsbURBQWdEO0FBQ2hELHFEQUFzRjtBQTJCdEYsS0FBSyxVQUFVLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBc0I7SUFDcEQsSUFBSSxLQUFLLEVBQUU7UUFDVCxNQUFNLEtBQUssR0FBRyxnQkFBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxNQUFNLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxtQkFBbUIsQ0FBQztRQUNuRCxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0QyxPQUFPLElBQUksNkJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDbkM7SUFDRCxPQUFPLElBQUksMEJBQWMsRUFBRSxDQUFDO0FBQzlCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQVk7SUFDckMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUEyQixDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDL0M7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBMEM7SUFDNUQsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELFNB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QUNqQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDcEIsUUFBUSxFQUFFLGVBQWU7SUFDekIsT0FBTyxDQUFDLENBQXNCO1FBQzVCLE9BQU8sQ0FBQzthQUNMLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzthQUNqRCxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQVcsQ0FBQzthQUN6RSxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDdEQsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ2xELFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBdUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHByb2Nlc3MgZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcblxuY29uc3Qgc3RkaW46IGFueSA9IHByb2Nlc3Muc3RkaW47XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZm9ybWF0VHJlZSB9IGZyb20gJy4vZm9ybWF0JztcbmltcG9ydCB7XG4gIGZldGNoT3V0cHV0U3BlbmRzLFxuICBmZXRjaFByZXZPdXRwdXRzLFxuICBmZXRjaFByZXZPdXRwdXRTcGVuZHMsXG4gIGZldGNoVHJhbnNhY3Rpb25IZXgsXG4gIGZldGNoVHJhbnNhY3Rpb25TdGF0dXMsXG59IGZyb20gJy4vZmV0Y2gnO1xuaW1wb3J0IHsgVHhQYXJzZXIsIFR4UGFyc2VyQXJncyB9IGZyb20gJy4vVHhQYXJzZXInO1xuaW1wb3J0IHsgQWRkcmVzc1BhcnNlciB9IGZyb20gJy4vQWRkcmVzc1BhcnNlcic7XG5pbXBvcnQgeyBCYXNlSHR0cENsaWVudCwgQ2FjaGluZ0h0dHBDbGllbnQsIEh0dHBDbGllbnQgfSBmcm9tICdAYml0Z28tYmV0YS9ibG9ja2FwaXMnO1xuXG50eXBlIE91dHB1dEZvcm1hdCA9ICd0cmVlJyB8ICdqc29uJztcblxudHlwZSBBcmdzUGFyc2VUcmFuc2FjdGlvbiA9IHtcbiAgbmV0d29yazogc3RyaW5nO1xuICBzdGRpbjogYm9vbGVhbjtcbiAgcGF0aD86IHN0cmluZztcbiAgdHhpZD86IHN0cmluZztcbiAgYWxsOiBib29sZWFuO1xuICBjYWNoZTogYm9vbGVhbjtcbiAgZm9ybWF0OiBPdXRwdXRGb3JtYXQ7XG4gIGZldGNoQWxsOiBib29sZWFuO1xuICBmZXRjaFN0YXR1czogYm9vbGVhbjtcbiAgZmV0Y2hJbnB1dHM6IGJvb2xlYW47XG4gIGZldGNoU3BlbmRzOiBib29sZWFuO1xuICBwYXJzZVNpZ25hdHVyZURhdGE6IGJvb2xlYW47XG59ICYgT21pdDxUeFBhcnNlckFyZ3MsICdwYXJzZVNpZ25hdHVyZURhdGEnPjtcblxudHlwZSBBcmdzUGFyc2VBZGRyZXNzID0ge1xuICBuZXR3b3JrPzogc3RyaW5nO1xuICBhbGw6IGJvb2xlYW47XG4gIGZvcm1hdDogT3V0cHV0Rm9ybWF0O1xuICBjb252ZXJ0OiBib29sZWFuO1xuICBhZGRyZXNzOiBzdHJpbmc7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBnZXRDbGllbnQoeyBjYWNoZSB9OiB7IGNhY2hlOiBib29sZWFuIH0pOiBQcm9taXNlPEh0dHBDbGllbnQ+IHtcbiAgaWYgKGNhY2hlKSB7XG4gICAgY29uc3QgbWtkaXIgPSBwcm9taXNpZnkoZnMubWtkaXIpO1xuICAgIGNvbnN0IGRpciA9IGAke3Byb2Nlc3MuZW52LkhPTUV9Ly5jYWNoZS91dHhvLWJpbi9gO1xuICAgIGF3YWl0IG1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgcmV0dXJuIG5ldyBDYWNoaW5nSHR0cENsaWVudChkaXIpO1xuICB9XG4gIHJldHVybiBuZXcgQmFzZUh0dHBDbGllbnQoKTtcbn1cblxuZnVuY3Rpb24gZ2V0TmV0d29ya0Zvck5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IG5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzW25hbWUgYXMgdXR4b2xpYi5OZXR3b3JrTmFtZV07XG4gIGlmICghbmV0d29yaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBuZXR3b3JrICR7bmV0d29ya31gKTtcbiAgfVxuICByZXR1cm4gbmV0d29yaztcbn1cblxuZnVuY3Rpb24gZ2V0TmV0d29yayhhcmd2OiB5YXJncy5Bcmd1bWVudHM8eyBuZXR3b3JrOiBzdHJpbmcgfT4pOiB1dHhvbGliLk5ldHdvcmsge1xuICByZXR1cm4gZ2V0TmV0d29ya0Zvck5hbWUoYXJndi5uZXR3b3JrKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0U3RyaW5nKHBhcnNlZDogUGFyc2VyTm9kZSwgYXJndjogeWFyZ3MuQXJndW1lbnRzPHsgZm9ybWF0OiBPdXRwdXRGb3JtYXQ7IGFsbDogYm9vbGVhbiB9Pik6IHN0cmluZyB7XG4gIHN3aXRjaCAoYXJndi5mb3JtYXQpIHtcbiAgICBjYXNlICdqc29uJzpcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwYXJzZWQsIG51bGwsIDIpO1xuICAgIGNhc2UgJ3RyZWUnOlxuICAgICAgcmV0dXJuIGZvcm1hdFRyZWUocGFyc2VkLCB7IGhpZGU6IGFyZ3YuYWxsID8gW10gOiB1bmRlZmluZWQgfSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGZvcm1hdCAke2FyZ3YuZm9ybWF0fWApO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlTmV0d29yazxUIGV4dGVuZHMgeyBuZXR3b3JrPzogc3RyaW5nIH0+KGFyZ3M6IFQpOiBUICYgeyBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrIH0ge1xuICBpZiAoYXJncy5uZXR3b3JrKSB7XG4gICAgcmV0dXJuIHsgLi4uYXJncywgbmV0d29yazogZ2V0TmV0d29ya0Zvck5hbWUoYXJncy5uZXR3b3JrKSB9O1xuICB9XG4gIHJldHVybiB7IC4uLmFyZ3MsIG5ldHdvcms6IHVuZGVmaW5lZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHhQYXJzZXIoYXJndjogeWFyZ3MuQXJndW1lbnRzPEFyZ3NQYXJzZVRyYW5zYWN0aW9uPik6IFR4UGFyc2VyIHtcbiAgaWYgKGFyZ3YuYWxsKSB7XG4gICAgcmV0dXJuIG5ldyBUeFBhcnNlcihUeFBhcnNlci5QQVJTRV9BTEwpO1xuICB9XG4gIHJldHVybiBuZXcgVHhQYXJzZXIoe1xuICAgIC4uLmFyZ3YsXG4gICAgcGFyc2VTaWduYXR1cmVEYXRhOiB7XG4gICAgICBzY3JpcHQ6IGFyZ3YucGFyc2VTaWduYXR1cmVEYXRhLFxuICAgICAgZWNkc2E6IGFyZ3YucGFyc2VTaWduYXR1cmVEYXRhLFxuICAgICAgc2Nobm9ycjogYXJndi5wYXJzZVNpZ25hdHVyZURhdGEsXG4gICAgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRyZXNzUGFyc2VyKGFyZ3Y6IEFyZ3NQYXJzZUFkZHJlc3MpOiBBZGRyZXNzUGFyc2VyIHtcbiAgcmV0dXJuIG5ldyBBZGRyZXNzUGFyc2VyKHJlc29sdmVOZXR3b3JrKGFyZ3YpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNtZFBhcnNlVHggPSB7XG4gIGNvbW1hbmQ6ICdwYXJzZVR4IFtwYXRoXScsXG4gIGFsaWFzZXM6IFsncGFyc2UnLCAndHgnXSxcbiAgZGVzY3JpYmU6ICdkaXNwbGF5IHRyYW5zYWN0aW9uIGNvbXBvbmVudHMgaW4gaHVtYW4tcmVhZGFibGUgZm9ybScsXG5cbiAgYnVpbGRlcihiOiB5YXJncy5Bcmd2PHVua25vd24+KTogeWFyZ3MuQXJndjxBcmdzUGFyc2VUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiBiXG4gICAgICAub3B0aW9uKCdwYXRoJywgeyB0eXBlOiAnc3RyaW5nJywgbmFyZ3M6IDEsIGRlZmF1bHQ6ICcnIH0pXG4gICAgICAub3B0aW9uKCdzdGRpbicsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigndHhpZCcsIHsgdHlwZTogJ3N0cmluZycgfSlcbiAgICAgIC5vcHRpb24oJ2ZldGNoQWxsJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdmZXRjaFN0YXR1cycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignZmV0Y2hJbnB1dHMnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2ZldGNoU3BlbmRzJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCduZXR3b3JrJywgeyBhbGlhczogJ24nLCB0eXBlOiAnc3RyaW5nJywgZGVtYW5kT3B0aW9uOiB0cnVlIH0pXG4gICAgICAub3B0aW9uKCdwYXJzZVNjcmlwdEFzbScsIHsgYWxpYXM6ICdzY3JpcHRhc20nLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdwYXJzZVNjcmlwdERhdGEnLCB7IGFsaWFzOiAnc2NyaXB0ZGF0YScsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ3BhcnNlU2lnbmF0dXJlRGF0YScsIHsgYWxpYXM6ICdzaWdkYXRhJywgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VPdXRwdXRTY3JpcHQnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ21heE91dHB1dHMnLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gICAgICAub3B0aW9uKCd2aW4nLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gICAgICAuYXJyYXkoJ3ZpbicpXG4gICAgICAub3B0aW9uKCdhbGwnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2NhY2hlJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ3VzZSBsb2NhbCBjYWNoZSBmb3IgaHR0cCByZXNwb25zZXMnIH0pXG4gICAgICAub3B0aW9uKCdmb3JtYXQnLCB7IGNob2ljZXM6IFsndHJlZScsICdqc29uJ10sIGRlZmF1bHQ6ICd0cmVlJyB9IGFzIGNvbnN0KTtcbiAgfSxcblxuICBhc3luYyBoYW5kbGVyKGFyZ3Y6IHlhcmdzLkFyZ3VtZW50czxBcmdzUGFyc2VUcmFuc2FjdGlvbj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBuZXR3b3JrID0gZ2V0TmV0d29yayhhcmd2KTtcbiAgICBsZXQgZGF0YTtcblxuICAgIGNvbnN0IGh0dHBDbGllbnQgPSBhd2FpdCBnZXRDbGllbnQoeyBjYWNoZTogYXJndi5jYWNoZSB9KTtcblxuICAgIGlmIChhcmd2LnR4aWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdmZXRjaGluZyB0eEhleCB2aWEgYmxvY2thcGkuLi4nKTtcbiAgICAgIGRhdGEgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uSGV4KGh0dHBDbGllbnQsIGFyZ3YudHhpZCwgbmV0d29yayk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3Yuc3RkaW4gfHwgYXJndi5wYXRoID09PSAnLScpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29uZmxpY3RpbmcgYXJndW1lbnRzYCk7XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZygncmVhZGluZyBmcm9tIHN0ZGluJyk7XG4gICAgICBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHN0ZGluLmZkLCAndXRmOCcpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5wYXRoKSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbmZsaWN0aW5nIGFyZ3VtZW50c2ApO1xuICAgICAgfVxuICAgICAgZGF0YSA9IChhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShhcmd2LnBhdGgsICd1dGY4JykpLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIHR4ZGF0YWApO1xuICAgIH1cbiAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC9cXHMqL2csICcnKTtcblxuICAgIGNvbnN0IHR4ID0gdXR4b2xpYi5iaXRnby5jcmVhdGVUcmFuc2FjdGlvbkZyb21IZXgoZGF0YSwgbmV0d29yayk7XG4gICAgY29uc3QgdHhpZCA9IHR4LmdldElkKCk7XG4gICAgaWYgKGFyZ3YudHhpZCAmJiB0eGlkICE9PSBhcmd2LnR4aWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY29tcHV0ZWQgdHhpZCBkb2VzIG5vdCBtYXRjaCB0eGlkIGFyZ3VtZW50YCk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YuZmV0Y2hBbGwpIHtcbiAgICAgIGFyZ3YuZmV0Y2hTdGF0dXMgPSB0cnVlO1xuICAgICAgYXJndi5mZXRjaElucHV0cyA9IHRydWU7XG4gICAgICBhcmd2LmZldGNoU3BlbmRzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBnZXRUeFBhcnNlcihhcmd2KS5wYXJzZSh0eCwge1xuICAgICAgc3RhdHVzOiBhcmd2LmZldGNoU3RhdHVzID8gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvblN0YXR1cyhodHRwQ2xpZW50LCB0eGlkLCBuZXR3b3JrKSA6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZPdXRwdXRzOiBhcmd2LmZldGNoSW5wdXRzID8gYXdhaXQgZmV0Y2hQcmV2T3V0cHV0cyhodHRwQ2xpZW50LCB0eCkgOiB1bmRlZmluZWQsXG4gICAgICBwcmV2T3V0cHV0U3BlbmRzOiBhcmd2LmZldGNoU3BlbmRzID8gYXdhaXQgZmV0Y2hQcmV2T3V0cHV0U3BlbmRzKGh0dHBDbGllbnQsIHR4KSA6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dFNwZW5kczogYXJndi5mZXRjaFNwZW5kcyA/IGF3YWl0IGZldGNoT3V0cHV0U3BlbmRzKGh0dHBDbGllbnQsIHR4KSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKGZvcm1hdFN0cmluZyhwYXJzZWQsIGFyZ3YpKTtcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBjbWRQYXJzZUFkZHJlc3MgPSB7XG4gIGNvbW1hbmQ6ICdwYXJzZUFkZHJlc3MgW2FkZHJlc3NdJyxcbiAgYWxpYXNlczogWydhZGRyZXNzJ10sXG4gIGRlc2NyaWJlOiAncGFyc2UgYWRkcmVzcycsXG4gIGJ1aWxkZXIoYjogeWFyZ3MuQXJndjx1bmtub3duPik6IHlhcmdzLkFyZ3Y8QXJnc1BhcnNlQWRkcmVzcz4ge1xuICAgIHJldHVybiBiXG4gICAgICAub3B0aW9uKCduZXR3b3JrJywgeyBhbGlhczogJ24nLCB0eXBlOiAnc3RyaW5nJyB9KVxuICAgICAgLm9wdGlvbignZm9ybWF0JywgeyBjaG9pY2VzOiBbJ3RyZWUnLCAnanNvbiddLCBkZWZhdWx0OiAndHJlZScgfSBhcyBjb25zdClcbiAgICAgIC5vcHRpb24oJ2NvbnZlcnQnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2FsbCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLnBvc2l0aW9uYWwoJ2FkZHJlc3MnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSk7XG4gIH0sXG5cbiAgaGFuZGxlcihhcmd2OiB5YXJncy5Bcmd1bWVudHM8QXJnc1BhcnNlQWRkcmVzcz4pOiB2b2lkIHtcbiAgICBjb25zdCBwYXJzZWQgPSBnZXRBZGRyZXNzUGFyc2VyKGFyZ3YpLnBhcnNlKGFyZ3YuYWRkcmVzcyk7XG4gICAgY29uc29sZS5sb2coZm9ybWF0U3RyaW5nKHBhcnNlZCwgYXJndikpO1xuICB9LFxufSBhcyBjb25zdDtcbiJdfQ==
|
|
216
|
+
exports.cmdParseScript = {
|
|
217
|
+
command: 'parseScript [script]',
|
|
218
|
+
describe: 'parse script',
|
|
219
|
+
builder(b) {
|
|
220
|
+
return b
|
|
221
|
+
.option('network', { alias: 'n', type: 'string' })
|
|
222
|
+
.option('format', { choices: ['tree', 'json'], default: 'tree' })
|
|
223
|
+
.option('all', { type: 'boolean', default: false })
|
|
224
|
+
.positional('script', { type: 'string', demandOption: true });
|
|
225
|
+
},
|
|
226
|
+
handler(argv) {
|
|
227
|
+
const script = parseString_1.stringToBuffer(argv.script, 'hex');
|
|
228
|
+
const parsed = getScriptParser(argv).parse(script);
|
|
229
|
+
console.log(formatString(parsed, { ...argv, all: true }));
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
exports.cmdGenerateAddress = {
|
|
233
|
+
command: 'generateAddresses',
|
|
234
|
+
describe: 'generate addresses',
|
|
235
|
+
builder(b) {
|
|
236
|
+
return b
|
|
237
|
+
.option('network', { alias: 'n', type: 'string' })
|
|
238
|
+
.option('userKey', { type: 'string', demandOption: true })
|
|
239
|
+
.option('userKeyPrefix', { type: 'string', default: '0/0' })
|
|
240
|
+
.option('backupKey', { type: 'string', demandOption: true })
|
|
241
|
+
.option('backupKeyPrefix', { type: 'string', default: '0/0' })
|
|
242
|
+
.option('bitgoKey', { type: 'string', demandOption: true })
|
|
243
|
+
.option('bitgoKeyPrefix', { type: 'string', default: '0/0' })
|
|
244
|
+
.option('format', {
|
|
245
|
+
type: 'string',
|
|
246
|
+
default: '%p0\t%a',
|
|
247
|
+
description: `Format string. Placeholders: ${generateAddress_1.getAddressPlaceholderDescription()}`,
|
|
248
|
+
})
|
|
249
|
+
.option('chain', { type: 'number', description: 'Address chain' })
|
|
250
|
+
.array('chain')
|
|
251
|
+
.option('index', {
|
|
252
|
+
type: 'string',
|
|
253
|
+
description: 'Address index. Can be given as a range (e.g. 0-99). Takes precedence over --limit.',
|
|
254
|
+
})
|
|
255
|
+
.array('index')
|
|
256
|
+
.option('limit', {
|
|
257
|
+
type: 'number',
|
|
258
|
+
description: 'Alias for --index with range starting at 0 to limit-1.',
|
|
259
|
+
default: 100,
|
|
260
|
+
});
|
|
261
|
+
},
|
|
262
|
+
handler(argv) {
|
|
263
|
+
var _a;
|
|
264
|
+
let indexRange;
|
|
265
|
+
if (argv.index) {
|
|
266
|
+
indexRange = generateAddress_1.parseIndexRange(argv.index);
|
|
267
|
+
}
|
|
268
|
+
else if (argv.limit) {
|
|
269
|
+
indexRange = generateAddress_1.getRange(0, argv.limit - 1);
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
throw new Error(`no index or limit`);
|
|
273
|
+
}
|
|
274
|
+
for (const address of generateAddress_1.generateAddress({
|
|
275
|
+
...argv,
|
|
276
|
+
index: indexRange,
|
|
277
|
+
network: getNetworkForName((_a = argv.network) !== null && _a !== void 0 ? _a : 'bitcoin'),
|
|
278
|
+
})) {
|
|
279
|
+
if (argv.format === 'tree') {
|
|
280
|
+
console.log(generateAddress_1.formatAddressTree(address));
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
console.log(generateAddress_1.formatAddressWithFormatString(address, argv.format));
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
exports.cmdParseXpub = {
|
|
289
|
+
command: 'parseXpub [xpub]',
|
|
290
|
+
describe: 'show xpub info',
|
|
291
|
+
builder(b) {
|
|
292
|
+
return b
|
|
293
|
+
.positional('xpub', { type: 'string', demandOption: true })
|
|
294
|
+
.option('format', { choices: ['tree', 'json'], default: 'tree' })
|
|
295
|
+
.option('all', { type: 'boolean', default: false })
|
|
296
|
+
.option('derive', { type: 'string', description: 'show xpub derived with path' });
|
|
297
|
+
},
|
|
298
|
+
handler(argv) {
|
|
299
|
+
console.log(formatString(bip32_1.parseXpub(argv.xpub, { derive: argv.derive }), argv));
|
|
300
|
+
},
|
|
301
|
+
};
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUNuQywrQkFBaUM7QUFFakMsbURBQXdDO0FBQ3hDLGdEQUFnRDtBQUVoRCxxQ0FBOEM7QUFDOUMscUNBQXNDO0FBQ3RDLG1DQU1pQjtBQUNqQix5Q0FBb0Q7QUFDcEQsbURBQWdEO0FBQ2hELHFEQUFzRjtBQUN0RiwyQ0FBd0M7QUFDeEMsaURBQThDO0FBQzlDLHlDQUFtRDtBQUNuRCxpREFBOEM7QUFDOUMsK0NBQStDO0FBQy9DLHVEQU8yQjtBQUMzQixtQ0FBb0M7QUFrRHBDLEtBQUssVUFBVSxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQXNCO0lBQ3BELElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxLQUFLLEdBQUcsZ0JBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksbUJBQW1CLENBQUM7UUFDbkQsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLDZCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsT0FBTyxJQUFJLDBCQUFjLEVBQUUsQ0FBQztBQUM5QixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFZO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBMkIsQ0FBQyxDQUFDO0lBQzlELElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQzVDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQVMsVUFBVSxD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QUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcHJvY2VzcyBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuXG5pbXBvcnQgY2xpcGJvYXJkeSBmcm9tICdjbGlwYm9hcmR5LWNqcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZm9ybWF0VHJlZSB9IGZyb20gJy4vZm9ybWF0JztcbmltcG9ydCB7XG4gIGZldGNoT3V0cHV0U3BlbmRzLFxuICBmZXRjaFByZXZPdXRwdXRzLFxuICBmZXRjaFByZXZPdXRwdXRTcGVuZHMsXG4gIGZldGNoVHJhbnNhY3Rpb25IZXgsXG4gIGZldGNoVHJhbnNhY3Rpb25TdGF0dXMsXG59IGZyb20gJy4vZmV0Y2gnO1xuaW1wb3J0IHsgVHhQYXJzZXIsIFR4UGFyc2VyQXJncyB9IGZyb20gJy4vVHhQYXJzZXInO1xuaW1wb3J0IHsgQWRkcmVzc1BhcnNlciB9IGZyb20gJy4vQWRkcmVzc1BhcnNlcic7XG5pbXBvcnQgeyBCYXNlSHR0cENsaWVudCwgQ2FjaGluZ0h0dHBDbGllbnQsIEh0dHBDbGllbnQgfSBmcm9tICdAYml0Z28tYmV0YS9ibG9ja2FwaXMnO1xuaW1wb3J0IHsgcmVhZFN0ZGluIH0gZnJvbSAnLi9yZWFkU3RkaW4nO1xuaW1wb3J0IHsgcGFyc2VVbmtub3duIH0gZnJvbSAnLi9wYXJzZVVua25vd24nO1xuaW1wb3J0IHsgZ2V0UGFyc2VyVHhQcm9wZXJ0aWVzIH0gZnJvbSAnLi9QYXJzZXJUeCc7XG5pbXBvcnQgeyBTY3JpcHRQYXJzZXIgfSBmcm9tICcuL1NjcmlwdFBhcnNlcic7XG5pbXBvcnQgeyBzdHJpbmdUb0J1ZmZlciB9IGZyb20gJy4vcGFyc2VTdHJpbmcnO1xuaW1wb3J0IHtcbiAgZm9ybWF0QWRkcmVzc1RyZWUsXG4gIGZvcm1hdEFkZHJlc3NXaXRoRm9ybWF0U3RyaW5nLFxuICBnZW5lcmF0ZUFkZHJlc3MsXG4gIGdldEFkZHJlc3NQbGFjZWhvbGRlckRlc2NyaXB0aW9uLFxuICBnZXRSYW5nZSxcbiAgcGFyc2VJbmRleFJhbmdlLFxufSBmcm9tICcuL2dlbmVyYXRlQWRkcmVzcyc7XG5pbXBvcnQgeyBwYXJzZVhwdWIgfSBmcm9tICcuL2JpcDMyJztcblxudHlwZSBPdXRwdXRGb3JtYXQgPSAndHJlZScgfCAnanNvbic7XG5cbnR5cGUgQXJnc1BhcnNlVHJhbnNhY3Rpb24gPSB7XG4gIG5ldHdvcms6IHN0cmluZztcbiAgc3RkaW46IGJvb2xlYW47XG4gIGNsaXBib2FyZDogYm9vbGVhbjtcbiAgcGF0aD86IHN0cmluZztcbiAgdHhpZD86IHN0cmluZztcbiAgZGF0YT86IHN0cmluZztcbiAgYWxsOiBib29sZWFuO1xuICBjYWNoZTogYm9vbGVhbjtcbiAgZm9ybWF0OiBPdXRwdXRGb3JtYXQ7XG4gIGZldGNoQWxsOiBib29sZWFuO1xuICBmZXRjaFN0YXR1czogYm9vbGVhbjtcbiAgZmV0Y2hJbnB1dHM6IGJvb2xlYW47XG4gIGZldGNoU3BlbmRzOiBib29sZWFuO1xuICBmaW5hbGl6ZTogYm9vbGVhbjtcbiAgcGFyc2VTaWduYXR1cmVEYXRhOiBib29sZWFuO1xuICBwYXJzZUFzVW5rbm93bjogYm9vbGVhbjtcbiAgcGFyc2VFcnJvcjogJ3Rocm93JyB8ICdjb250aW51ZSc7XG59ICYgT21pdDxUeFBhcnNlckFyZ3MsICdwYXJzZVNpZ25hdHVyZURhdGEnPjtcblxudHlwZSBBcmdzUGFyc2VBZGRyZXNzID0ge1xuICBuZXR3b3JrPzogc3RyaW5nO1xuICBhbGw6IGJvb2xlYW47XG4gIGZvcm1hdDogT3V0cHV0Rm9ybWF0O1xuICBjb252ZXJ0OiBib29sZWFuO1xuICBhZGRyZXNzOiBzdHJpbmc7XG59O1xuXG50eXBlIEFyZ3NQYXJzZVNjcmlwdCA9IHtcbiAgbmV0d29yaz86IHN0cmluZztcbiAgZm9ybWF0OiBPdXRwdXRGb3JtYXQ7XG4gIGFsbDogYm9vbGVhbjtcbiAgc2NyaXB0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBcmdzR2VuZXJhdGVBZGRyZXNzID0ge1xuICBuZXR3b3JrPzogc3RyaW5nO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIGJhY2t1cEtleTogc3RyaW5nO1xuICBiaXRnb0tleTogc3RyaW5nO1xuICBjaGFpbj86IG51bWJlcltdO1xuICBmb3JtYXQ6IHN0cmluZztcbiAgaW5kZXg/OiBzdHJpbmdbXTtcbiAgbGltaXQ/OiBudW1iZXI7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBnZXRDbGllbnQoeyBjYWNoZSB9OiB7IGNhY2hlOiBib29sZWFuIH0pOiBQcm9taXNlPEh0dHBDbGllbnQ+IHtcbiAgaWYgKGNhY2hlKSB7XG4gICAgY29uc3QgbWtkaXIgPSBwcm9taXNpZnkoZnMubWtkaXIpO1xuICAgIGNvbnN0IGRpciA9IGAke3Byb2Nlc3MuZW52LkhPTUV9Ly5jYWNoZS91dHhvLWJpbi9gO1xuICAgIGF3YWl0IG1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgcmV0dXJuIG5ldyBDYWNoaW5nSHR0cENsaWVudChkaXIpO1xuICB9XG4gIHJldHVybiBuZXcgQmFzZUh0dHBDbGllbnQoKTtcbn1cblxuZnVuY3Rpb24gZ2V0TmV0d29ya0Zvck5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IG5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzW25hbWUgYXMgdXR4b2xpYi5OZXR3b3JrTmFtZV07XG4gIGlmICghbmV0d29yaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBuZXR3b3JrICR7bmFtZX1gKTtcbiAgfVxuICByZXR1cm4gbmV0d29yaztcbn1cblxuZnVuY3Rpb24gZ2V0TmV0d29yayhhcmd2OiB5YXJncy5Bcmd1bWVudHM8eyBuZXR3b3JrOiBzdHJpbmcgfT4pOiB1dHhvbGliLk5ldHdvcmsge1xuICByZXR1cm4gZ2V0TmV0d29ya0Zvck5hbWUoYXJndi5uZXR3b3JrKTtcbn1cblxudHlwZSBGb3JtYXRTdHJpbmdBcmdzID0ge1xuICBmb3JtYXQ6IE91dHB1dEZvcm1hdDtcbiAgYWxsOiBib29sZWFuO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0U3RyaW5nKHBhcnNlZDogUGFyc2VyTm9kZSwgYXJndjogeWFyZ3MuQXJndW1lbnRzPEZvcm1hdFN0cmluZ0FyZ3M+KTogc3RyaW5nIHtcbiAgc3dpdGNoIChhcmd2LmZvcm1hdCkge1xuICAgIGNhc2UgJ2pzb24nOlxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHBhcnNlZCwgbnVsbCwgMik7XG4gICAgY2FzZSAndHJlZSc6XG4gICAgICByZXR1cm4gZm9ybWF0VHJlZShwYXJzZWQsIHsgaGlkZTogYXJndi5hbGwgPyBbXSA6IHVuZGVmaW5lZCB9KTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZm9ybWF0ICR7YXJndi5mb3JtYXR9YCk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVOZXR3b3JrPFQgZXh0ZW5kcyB7IG5ldHdvcms/OiBzdHJpbmcgfT4oXG4gIGFyZ3M6IFRcbik6IFQgJiB7XG4gIG5ldHdvcms/OiB1dHhvbGliLk5ldHdvcms7XG59IHtcbiAgaWYgKGFyZ3MubmV0d29yaykge1xuICAgIHJldHVybiB7IC4uLmFyZ3MsIG5ldHdvcms6IGdldE5ldHdvcmtGb3JOYW1lKGFyZ3MubmV0d29yaykgfTtcbiAgfVxuICByZXR1cm4geyAuLi5hcmdzLCBuZXR3b3JrOiB1bmRlZmluZWQgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR4UGFyc2VyKGFyZ3Y6IHlhcmdzLkFyZ3VtZW50czxBcmdzUGFyc2VUcmFuc2FjdGlvbj4pOiBUeFBhcnNlciB7XG4gIGlmIChhcmd2LmFsbCkge1xuICAgIHJldHVybiBuZXcgVHhQYXJzZXIoeyAuLi5hcmd2LCAuLi5UeFBhcnNlci5QQVJTRV9BTEwgfSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBUeFBhcnNlcih7XG4gICAgLi4uYXJndixcbiAgICBwYXJzZVNpZ25hdHVyZURhdGE6IHtcbiAgICAgIHNjcmlwdDogYXJndi5wYXJzZVNpZ25hdHVyZURhdGEsXG4gICAgICBlY2RzYTogYXJndi5wYXJzZVNpZ25hdHVyZURhdGEsXG4gICAgICBzY2hub3JyOiBhcmd2LnBhcnNlU2lnbmF0dXJlRGF0YSxcbiAgICB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3NQYXJzZXIoYXJndjogQXJnc1BhcnNlQWRkcmVzcyk6IEFkZHJlc3NQYXJzZXIge1xuICByZXR1cm4gbmV3IEFkZHJlc3NQYXJzZXIocmVzb2x2ZU5ldHdvcmsoYXJndikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0UGFyc2VyKGFyZ3Y6IEFyZ3NQYXJzZVNjcmlwdCk6IFNjcmlwdFBhcnNlciB7XG4gIHJldHVybiBuZXcgU2NyaXB0UGFyc2VyKHJlc29sdmVOZXR3b3JrKGFyZ3YpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNtZFBhcnNlVHggPSB7XG4gIGNvbW1hbmQ6ICdwYXJzZVR4IFtwYXRoXScsXG4gIGFsaWFzZXM6IFsncGFyc2UnLCAndHgnXSxcbiAgZGVzY3JpYmU6XG4gICAgJ0Rpc3BsYXkgdHJhbnNhY3Rpb24gY29tcG9uZW50cyBpbiBodW1hbi1yZWFkYWJsZSBmb3JtLiAnICtcbiAgICAnU3VwcG9ydGVkIGZvcm1hdHMgYXJlIFBhcnRpYWxseSBTaWduZWQgQml0Y29pbiBUcmFuc2FjdGlvbiAoUFNCVCksICcgK1xuICAgICdiaXRjb2luanMtbGliIGVuY29kaW5nIChMZWdhY3kpIG9yIGZ1bGx5IHNpZ25lZCB0cmFuc2FjdGlvbi4gJyArXG4gICAgJ0J5dGVzIG11c3QgYmUgZW5jb2RlZCBpbiBoZXggb3IgYmFzZTY0IGZvcm1hdC4nLFxuXG4gIGJ1aWxkZXIoYjogeWFyZ3MuQXJndjx1bmtub3duPik6IHlhcmdzLkFyZ3Y8QXJnc1BhcnNlVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gYlxuICAgICAgLm9wdGlvbigncGF0aCcsIHsgdHlwZTogJ3N0cmluZycsIG5hcmdzOiAxLCBkZWZhdWx0OiAnJyB9KVxuICAgICAgLm9wdGlvbignc3RkaW4nLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2RhdGEnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RyYW5zYWN0aW9uIGJ5dGVzIChoZXggb3IgYmFzZTY0KScsIGFsaWFzOiAnaGV4JyB9KVxuICAgICAgLm9wdGlvbignY2xpcGJvYXJkJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCd0eGlkJywgeyB0eXBlOiAnc3RyaW5nJyB9KVxuICAgICAgLm9wdGlvbignZmV0Y2hBbGwnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2ZldGNoU3RhdHVzJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdmZXRjaElucHV0cycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignZmV0Y2hTcGVuZHMnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ25ldHdvcmsnLCB7IGFsaWFzOiAnbicsIHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSlcbiAgICAgIC5vcHRpb24oJ3BhcnNlU2NyaXB0QXNtJywgeyBhbGlhczogJ3NjcmlwdGFzbScsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ3BhcnNlU2NyaXB0RGF0YScsIHsgYWxpYXM6ICdzY3JpcHRkYXRhJywgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VTaWduYXR1cmVEYXRhJywgeyBhbGlhczogJ3NpZ2RhdGEnLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdwYXJzZU91dHB1dFNjcmlwdCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VBc1Vua25vd24nLCB7XG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnc2hvdyBwbGFpbiBKYXZhc2NyaXB0IG9iamVjdCB3aXRob3V0IGFueSBwb3N0LXByb2Nlc3NpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ21heE91dHB1dHMnLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gICAgICAub3B0aW9uKCd2aW4nLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gICAgICAuYXJyYXkoJ3ZpbicpXG4gICAgICAub3B0aW9uKCdmaW5hbGl6ZScsIHtcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdmaW5hbGl6ZSBQU0JUIGFuZCBwYXJzZSByZXN1bHQgaW5zdGVhZCBvZiBQU0JUJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdhbGwnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2NhY2hlJywge1xuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ3VzZSBsb2NhbCBjYWNoZSBmb3IgaHR0cCByZXNwb25zZXMnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHsgY2hvaWNlczogWyd0cmVlJywgJ2pzb24nXSwgZGVmYXVsdDogJ3RyZWUnIH0gYXMgY29uc3QpXG4gICAgICAub3B0aW9uKCdwYXJzZUVycm9yJywgeyBjaG9pY2VzOiBbJ2NvbnRpbnVlJywgJ3Rocm93J10sIGRlZmF1bHQ6ICdjb250aW51ZScgfSBhcyBjb25zdCk7XG4gIH0sXG5cbiAgYXN5bmMgaGFuZGxlcihhcmd2OiB5YXJncy5Bcmd1bWVudHM8QXJnc1BhcnNlVHJhbnNhY3Rpb24+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbmV0d29yayA9IGdldE5ldHdvcmsoYXJndik7XG4gICAgbGV0IGRhdGE7XG5cbiAgICBjb25zdCBodHRwQ2xpZW50ID0gYXdhaXQgZ2V0Q2xpZW50KHsgY2FjaGU6IGFyZ3YuY2FjaGUgfSk7XG5cbiAgICBpZiAoYXJndi50eGlkKSB7XG4gICAgICBkYXRhID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbkhleChodHRwQ2xpZW50LCBhcmd2LnR4aWQsIG5ldHdvcmspO1xuICAgIH1cblxuICAgIGlmIChhcmd2LnN0ZGluIHx8IGFyZ3YucGF0aCA9PT0gJy0nKSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbmZsaWN0aW5nIGFyZ3VtZW50c2ApO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ1JlYWRpbmcgZnJvbSBzdGRpbi4gUGxlYXNlIHBhc3RlIGhleC1lbmNvZGVkIHRyYW5zYWN0aW9uIGRhdGEuJyk7XG4gICAgICBjb25zb2xlLmxvZygnQWZ0ZXIgaW5zZXJ0aW5nIGRhdGEsIHByZXNzIEN0cmwtRCB0byBmaW5pc2guIFByZXNzIEN0cmwtQyB0byBjYW5jZWwuJyk7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBkYXRhID0gYXdhaXQgcmVhZFN0ZGluKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoJy9kZXYvc3RkaW4nLCAndXRmOCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmd2LmNsaXBib2FyZCkge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb25mbGljdGluZyBhcmd1bWVudHNgKTtcbiAgICAgIH1cbiAgICAgIGRhdGEgPSBhd2FpdCBjbGlwYm9hcmR5LnJlYWQoKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndi5wYXRoKSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbmZsaWN0aW5nIGFyZ3VtZW50c2ApO1xuICAgICAgfVxuICAgICAgZGF0YSA9IChhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShhcmd2LnBhdGgsICd1dGY4JykpLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YuZGF0YSkge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb25mbGljdGluZyBhcmd1bWVudHNgKTtcbiAgICAgIH1cbiAgICAgIGRhdGEgPSBhcmd2LmRhdGE7XG4gICAgfVxuXG4gICAgLy8gc3RyaXAgd2hpdGVzcGFjZVxuICAgIGlmICghZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBubyB0eGRhdGFgKTtcbiAgICB9XG5cbiAgICBjb25zdCBieXRlcyA9IHN0cmluZ1RvQnVmZmVyKGRhdGEsIFsnaGV4JywgJ2Jhc2U2NCddKTtcblxuICAgIGxldCB0eCA9IHV0eG9saWIuYml0Z28uaXNQc2J0KGJ5dGVzKVxuICAgICAgPyB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnRGcm9tQnVmZmVyKGJ5dGVzLCBuZXR3b3JrKVxuICAgICAgOiB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcihieXRlcywgbmV0d29yaywgeyBhbW91bnRUeXBlOiAnYmlnaW50JyB9KTtcblxuICAgIGNvbnN0IHsgaWQ6IHR4aWQgfSA9IGdldFBhcnNlclR4UHJvcGVydGllcyh0eCwgdW5kZWZpbmVkKTtcbiAgICBpZiAodHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbikge1xuICAgICAgaWYgKGFyZ3YudHhpZCAmJiB0eGlkICE9PSBhcmd2LnR4aWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb21wdXRlZCB0eGlkIGRvZXMgbm90IG1hdGNoIHR4aWQgYXJndW1lbnRgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFyZ3YuZmluYWxpemUpIHtcbiAgICAgIHR4LmZpbmFsaXplQWxsSW5wdXRzKCk7XG4gICAgICB0eCA9IHR4LmV4dHJhY3RUcmFuc2FjdGlvbigpO1xuICAgIH1cblxuICAgIGlmIChhcmd2LnBhcnNlQXNVbmtub3duKSB7XG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXRTdHJpbmcocGFyc2VVbmtub3duKG5ldyBQYXJzZXIoKSwgJ3R4JywgdHgpLCBhcmd2KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YuZmV0Y2hBbGwpIHtcbiAgICAgIGFyZ3YuZmV0Y2hTdGF0dXMgPSB0cnVlO1xuICAgICAgYXJndi5mZXRjaElucHV0cyA9IHRydWU7XG4gICAgICBhcmd2LmZldGNoU3BlbmRzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBnZXRUeFBhcnNlcihhcmd2KS5wYXJzZSh0eCwge1xuICAgICAgc3RhdHVzOiBhcmd2LmZldGNoU3RhdHVzICYmIHR4aWQgPyBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uU3RhdHVzKGh0dHBDbGllbnQsIHR4aWQsIG5ldHdvcmspIDogdW5kZWZpbmVkLFxuICAgICAgcHJldk91dHB1dHM6IGFyZ3YuZmV0Y2hJbnB1dHMgPyBhd2FpdCBmZXRjaFByZXZPdXRwdXRzKGh0dHBDbGllbnQsIHR4KSA6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZPdXRwdXRTcGVuZHM6IGFyZ3YuZmV0Y2hTcGVuZHMgPyBhd2FpdCBmZXRjaFByZXZPdXRwdXRTcGVuZHMoaHR0cENsaWVudCwgdHgpIDogdW5kZWZpbmVkLFxuICAgICAgb3V0cHV0U3BlbmRzOlxuICAgICAgICBhcmd2LmZldGNoU3BlbmRzICYmIHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb25cbiAgICAgICAgICA/IGF3YWl0IGZldGNoT3V0cHV0U3BlbmRzKGh0dHBDbGllbnQsIHR4KVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coZm9ybWF0U3RyaW5nKHBhcnNlZCwgYXJndikpO1xuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IGNtZFBhcnNlQWRkcmVzcyA9IHtcbiAgY29tbWFuZDogJ3BhcnNlQWRkcmVzcyBbYWRkcmVzc10nLFxuICBhbGlhc2VzOiBbJ2FkZHJlc3MnXSxcbiAgZGVzY3JpYmU6ICdwYXJzZSBhZGRyZXNzJyxcbiAgYnVpbGRlcihiOiB5YXJncy5Bcmd2PHVua25vd24+KTogeWFyZ3MuQXJndjxBcmdzUGFyc2VBZGRyZXNzPiB7XG4gICAgcmV0dXJuIGJcbiAgICAgIC5vcHRpb24oJ25ldHdvcmsnLCB7IGFsaWFzOiAnbicsIHR5cGU6ICdzdHJpbmcnIH0pXG4gICAgICAub3B0aW9uKCdmb3JtYXQnLCB7IGNob2ljZXM6IFsndHJlZScsICdqc29uJ10sIGRlZmF1bHQ6ICd0cmVlJyB9IGFzIGNvbnN0KVxuICAgICAgLm9wdGlvbignY29udmVydCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignYWxsJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAucG9zaXRpb25hbCgnYWRkcmVzcycsIHsgdHlwZTogJ3N0cmluZycsIGRlbWFuZE9wdGlvbjogdHJ1ZSB9KTtcbiAgfSxcblxuICBoYW5kbGVyKGFyZ3Y6IHlhcmdzLkFyZ3VtZW50czxBcmdzUGFyc2VBZGRyZXNzPik6IHZvaWQge1xuICAgIGNvbnN0IHBhcnNlZCA9IGdldEFkZHJlc3NQYXJzZXIoYXJndikucGFyc2UoYXJndi5hZGRyZXNzKTtcbiAgICBjb25zb2xlLmxvZyhmb3JtYXRTdHJpbmcocGFyc2VkLCBhcmd2KSk7XG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY21kUGFyc2VTY3JpcHQgPSB7XG4gIGNvbW1hbmQ6ICdwYXJzZVNjcmlwdCBbc2NyaXB0XScsXG4gIGRlc2NyaWJlOiAncGFyc2Ugc2NyaXB0JyxcbiAgYnVpbGRlcihiOiB5YXJncy5Bcmd2PHVua25vd24+KTogeWFyZ3MuQXJndjxBcmdzUGFyc2VTY3JpcHQ+IHtcbiAgICByZXR1cm4gYlxuICAgICAgLm9wdGlvbignbmV0d29yaycsIHsgYWxpYXM6ICduJywgdHlwZTogJ3N0cmluZycgfSlcbiAgICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHsgY2hvaWNlczogWyd0cmVlJywgJ2pzb24nXSwgZGVmYXVsdDogJ3RyZWUnIH0gYXMgY29uc3QpXG4gICAgICAub3B0aW9uKCdhbGwnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5wb3NpdGlvbmFsKCdzY3JpcHQnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSk7XG4gIH0sXG4gIGhhbmRsZXIoYXJndjogeWFyZ3MuQXJndW1lbnRzPEFyZ3NQYXJzZVNjcmlwdD4pOiB2b2lkIHtcbiAgICBjb25zdCBzY3JpcHQgPSBzdHJpbmdUb0J1ZmZlcihhcmd2LnNjcmlwdCwgJ2hleCcpO1xuICAgIGNvbnN0IHBhcnNlZCA9IGdldFNjcmlwdFBhcnNlcihhcmd2KS5wYXJzZShzY3JpcHQpO1xuICAgIGNvbnNvbGUubG9nKGZvcm1hdFN0cmluZyhwYXJzZWQsIHsgLi4uYXJndiwgYWxsOiB0cnVlIH0pKTtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBjbWRHZW5lcmF0ZUFkZHJlc3MgPSB7XG4gIGNvbW1hbmQ6ICdnZW5lcmF0ZUFkZHJlc3NlcycsXG4gIGRlc2NyaWJlOiAnZ2VuZXJhdGUgYWRkcmVzc2VzJyxcbiAgYnVpbGRlcihiOiB5YXJncy5Bcmd2PHVua25vd24+KTogeWFyZ3MuQXJndjxBcmdzR2VuZXJhdGVBZGRyZXNzPiB7XG4gICAgcmV0dXJuIGJcbiAgICAgIC5vcHRpb24oJ25ldHdvcmsnLCB7IGFsaWFzOiAnbicsIHR5cGU6ICdzdHJpbmcnIH0pXG4gICAgICAub3B0aW9uKCd1c2VyS2V5JywgeyB0eXBlOiAnc3RyaW5nJywgZGVtYW5kT3B0aW9uOiB0cnVlIH0pXG4gICAgICAub3B0aW9uKCd1c2VyS2V5UHJlZml4JywgeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJzAvMCcgfSlcbiAgICAgIC5vcHRpb24oJ2JhY2t1cEtleScsIHsgdHlwZTogJ3N0cmluZycsIGRlbWFuZE9wdGlvbjogdHJ1ZSB9KVxuICAgICAgLm9wdGlvbignYmFja3VwS2V5UHJlZml4JywgeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJzAvMCcgfSlcbiAgICAgIC5vcHRpb24oJ2JpdGdvS2V5JywgeyB0eXBlOiAnc3RyaW5nJywgZGVtYW5kT3B0aW9uOiB0cnVlIH0pXG4gICAgICAub3B0aW9uKCdiaXRnb0tleVByZWZpeCcsIHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6ICcwLzAnIH0pXG4gICAgICAub3B0aW9uKCdmb3JtYXQnLCB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0OiAnJXAwXFx0JWEnLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEZvcm1hdCBzdHJpbmcuIFBsYWNlaG9sZGVyczogJHtnZXRBZGRyZXNzUGxhY2Vob2xkZXJEZXNjcmlwdGlvbigpfWAsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignY2hhaW4nLCB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ0FkZHJlc3MgY2hhaW4nIH0pXG4gICAgICAuYXJyYXkoJ2NoYWluJylcbiAgICAgIC5vcHRpb24oJ2luZGV4Jywge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdBZGRyZXNzIGluZGV4LiBDYW4gYmUgZ2l2ZW4gYXMgYSByYW5nZSAoZS5nLiAwLTk5KS4gVGFrZXMgcHJlY2VkZW5jZSBvdmVyIC0tbGltaXQuJyxcbiAgICAgIH0pXG4gICAgICAuYXJyYXkoJ2luZGV4JylcbiAgICAgIC5vcHRpb24oJ2xpbWl0Jywge1xuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdBbGlhcyBmb3IgLS1pbmRleCB3aXRoIHJhbmdlIHN0YXJ0aW5nIGF0IDAgdG8gbGltaXQtMS4nLFxuICAgICAgICBkZWZhdWx0OiAxMDAsXG4gICAgICB9KTtcbiAgfSxcbiAgaGFuZGxlcihhcmd2OiB5YXJncy5Bcmd1bWVudHM8QXJnc0dlbmVyYXRlQWRkcmVzcz4pOiB2b2lkIHtcbiAgICBsZXQgaW5kZXhSYW5nZTogbnVtYmVyW107XG4gICAgaWYgKGFyZ3YuaW5kZXgpIHtcbiAgICAgIGluZGV4UmFuZ2UgPSBwYXJzZUluZGV4UmFuZ2UoYXJndi5pbmRleCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LmxpbWl0KSB7XG4gICAgICBpbmRleFJhbmdlID0gZ2V0UmFuZ2UoMCwgYXJndi5saW1pdCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGluZGV4IG9yIGxpbWl0YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiBnZW5lcmF0ZUFkZHJlc3Moe1xuICAgICAgLi4uYXJndixcbiAgICAgIGluZGV4OiBpbmRleFJhbmdlLFxuICAgICAgbmV0d29yazogZ2V0TmV0d29ya0Zvck5hbWUoYXJndi5uZXR3b3JrID8/ICdiaXRjb2luJyksXG4gICAgfSkpIHtcbiAgICAgIGlmIChhcmd2LmZvcm1hdCA9PT0gJ3RyZWUnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGZvcm1hdEFkZHJlc3NUcmVlKGFkZHJlc3MpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGZvcm1hdEFkZHJlc3NXaXRoRm9ybWF0U3RyaW5nKGFkZHJlc3MsIGFyZ3YuZm9ybWF0KSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGNtZFBhcnNlWHB1YiA9IHtcbiAgY29tbWFuZDogJ3BhcnNlWHB1YiBbeHB1Yl0nLFxuICBkZXNjcmliZTogJ3Nob3cgeHB1YiBpbmZvJyxcbiAgYnVpbGRlcihiOiB5YXJncy5Bcmd2PHVua25vd24+KTogeWFyZ3MuQXJndjx7IHhwdWI6IHN0cmluZzsgZGVyaXZlPzogc3RyaW5nIH0gJiBGb3JtYXRTdHJpbmdBcmdzPiB7XG4gICAgcmV0dXJuIGJcbiAgICAgIC5wb3NpdGlvbmFsKCd4cHViJywgeyB0eXBlOiAnc3RyaW5nJywgZGVtYW5kT3B0aW9uOiB0cnVlIH0pXG4gICAgICAub3B0aW9uKCdmb3JtYXQnLCB7IGNob2ljZXM6IFsndHJlZScsICdqc29uJ10sIGRlZmF1bHQ6ICd0cmVlJyB9IGFzIGNvbnN0KVxuICAgICAgLm9wdGlvbignYWxsJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdkZXJpdmUnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3Nob3cgeHB1YiBkZXJpdmVkIHdpdGggcGF0aCcgfSk7XG4gIH0sXG4gIGhhbmRsZXIoYXJndjogeWFyZ3MuQXJndW1lbnRzPHsgeHB1Yjogc3RyaW5nOyBkZXJpdmU/OiBzdHJpbmcgfSAmIEZvcm1hdFN0cmluZ0FyZ3M+KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coZm9ybWF0U3RyaW5nKHBhcnNlWHB1Yihhcmd2LnhwdWIsIHsgZGVyaXZlOiBhcmd2LmRlcml2ZSB9KSwgYXJndikpO1xuICB9LFxufTtcbiJdfQ==
|
package/dist/src/fetch.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
2
|
import * as blockapis from '@bitgo-beta/blockapis';
|
|
3
3
|
import { HttpClient } from '@bitgo-beta/blockapis';
|
|
4
|
+
import { ParserTx } from './ParserTx';
|
|
4
5
|
export declare function fetchTransactionHex(httpClient: HttpClient, txid: string, network: utxolib.Network): Promise<string>;
|
|
5
6
|
export declare function fetchTransactionStatus(httpClient: HttpClient, txid: string, network: utxolib.Network): Promise<blockapis.TransactionStatus>;
|
|
6
|
-
export declare function fetchPrevOutputs(httpClient: HttpClient, tx:
|
|
7
|
-
export declare function fetchPrevOutputSpends(httpClient: HttpClient, tx: utxolib.bitgo.UtxoTransaction): Promise<blockapis.OutputSpend[]>;
|
|
8
|
-
export declare function fetchOutputSpends(httpClient: HttpClient, tx: utxolib.bitgo.UtxoTransaction): Promise<blockapis.OutputSpend[]>;
|
|
7
|
+
export declare function fetchPrevOutputs(httpClient: HttpClient, tx: ParserTx): Promise<utxolib.TxOutput<bigint>[]>;
|
|
8
|
+
export declare function fetchPrevOutputSpends(httpClient: HttpClient, tx: utxolib.bitgo.UtxoTransaction<bigint> | utxolib.bitgo.UtxoPsbt): Promise<blockapis.OutputSpend[]>;
|
|
9
|
+
export declare function fetchOutputSpends(httpClient: HttpClient, tx: utxolib.bitgo.UtxoTransaction<bigint>): Promise<blockapis.OutputSpend[]>;
|
|
9
10
|
//# sourceMappingURL=fetch.d.ts.map
|
package/dist/src/fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA6CtC,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAEtC;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAKhH;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GACjE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAElC;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GACxC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAMlC"}
|
package/dist/src/fetch.js
CHANGED
|
@@ -4,6 +4,14 @@ exports.fetchOutputSpends = exports.fetchPrevOutputSpends = exports.fetchPrevOut
|
|
|
4
4
|
const utxolib = require("@bitgo-beta/utxo-lib");
|
|
5
5
|
const blockapis = require("@bitgo-beta/blockapis");
|
|
6
6
|
const statics_1 = require("@bitgo-beta/statics");
|
|
7
|
+
function getTxOutPoints(tx) {
|
|
8
|
+
if (tx instanceof utxolib.bitgo.UtxoTransaction) {
|
|
9
|
+
return tx.ins.map((i) => utxolib.bitgo.getOutputIdForInput(i));
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
return tx.txInputs.map((i) => utxolib.bitgo.getOutputIdForInput(i));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
7
15
|
function getCoinName(network) {
|
|
8
16
|
const networkName = utxolib.getNetworkName(network);
|
|
9
17
|
// the bitcoincash network actually has two coins: bch and bcha - hardcode bch by default here
|
|
@@ -42,11 +50,14 @@ async function fetchTransactionStatus(httpClient, txid, network) {
|
|
|
42
50
|
}
|
|
43
51
|
exports.fetchTransactionStatus = fetchTransactionStatus;
|
|
44
52
|
async function fetchPrevOutputs(httpClient, tx) {
|
|
45
|
-
return await blockapis.fetchInputs(tx
|
|
53
|
+
return (await blockapis.fetchInputs(getTxOutPoints(tx), getApi(httpClient, tx.network), tx.network)).map((v) => ({
|
|
54
|
+
...v,
|
|
55
|
+
value: BigInt(v.value),
|
|
56
|
+
}));
|
|
46
57
|
}
|
|
47
58
|
exports.fetchPrevOutputs = fetchPrevOutputs;
|
|
48
59
|
async function fetchPrevOutputSpends(httpClient, tx) {
|
|
49
|
-
return await blockapis.fetchTransactionSpends(tx
|
|
60
|
+
return await blockapis.fetchTransactionSpends(getTxOutPoints(tx), getApi(httpClient, tx.network));
|
|
50
61
|
}
|
|
51
62
|
exports.fetchPrevOutputSpends = fetchPrevOutputSpends;
|
|
52
63
|
async function fetchOutputSpends(httpClient, tx) {
|
|
@@ -58,4 +69,4 @@ async function fetchOutputSpends(httpClient, tx) {
|
|
|
58
69
|
}
|
|
59
70
|
}
|
|
60
71
|
exports.fetchOutputSpends = fetchOutputSpends;
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELG1EQUFtRDtBQUNuRCxpREFBc0Q7QUFJdEQsU0FBUyxjQUFjLENBQUMsRUFBWTtJQUNsQyxJQUFJLEVBQUUsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtRQUMvQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDaEU7U0FBTTtRQUNMLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyRTtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxPQUF3QjtJQUMzQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXBELDhGQUE4RjtJQUM5RixRQUFRLFdBQVcsRUFBRTtRQUNuQixLQUFLLGFBQWE7WUFDaEIsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLG9CQUFvQjtZQUN2QixPQUFPLE1BQU0sQ0FBQztLQUNqQjtJQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxlQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUM5QyxJQUFJLFlBQVksa0JBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3hGLENBQUM7SUFDRixRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDdEIsS0FBSyxDQUFDO1lBQ0osTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUM7WUFDSixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFdBQVcsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3hFO0FBQ0gsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLFVBQXNCLEVBQUUsT0FBd0I7SUFDOUQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxNQUFNO1lBQ1QsT0FBTyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFO1lBQ0UsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsVUFBc0IsRUFDdEIsSUFBWSxFQUNaLE9BQXdCO0lBRXhCLE9BQU8sTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFORCxrREFNQztBQUVNLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsVUFBc0IsRUFDdEIsSUFBWSxFQUNaLE9BQXdCO0lBRXhCLE9BQU8sTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFORCx3REFNQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxVQUFzQixFQUFFLEVBQVk7SUFDekUsT0FBTyxDQUFDLE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLEdBQUcsQ0FBQztRQUNKLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztLQUN2QixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUFMRCw0Q0FLQztBQUVNLEtBQUssVUFBVSxxQkFBcUIsQ0FDekMsVUFBc0IsRUFDdEIsRUFBa0U7SUFFbEUsT0FBTyxNQUFNLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBTEQsc0RBS0M7QUFFTSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLFVBQXNCLEVBQ3RCLEVBQXlDO0lBRXpDLElBQUk7UUFDRixPQUFPLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDOUU7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sRUFBRSxDQUFDO0tBQ1g7QUFDSCxDQUFDO0FBVEQsOENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIGJsb2NrYXBpcyBmcm9tICdAYml0Z28tYmV0YS9ibG9ja2FwaXMnO1xuaW1wb3J0IHsgY29pbnMsIFV0eG9Db2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGJpdGdvLWJldGEvYmxvY2thcGlzJztcbmltcG9ydCB7IFBhcnNlclR4IH0gZnJvbSAnLi9QYXJzZXJUeCc7XG5cbmZ1bmN0aW9uIGdldFR4T3V0UG9pbnRzKHR4OiBQYXJzZXJUeCk6IHV0eG9saWIuYml0Z28uVHhPdXRQb2ludFtdIHtcbiAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gdHguaW5zLm1hcCgoaSkgPT4gdXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KGkpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHgudHhJbnB1dHMubWFwKChpKSA9PiB1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQoaSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldENvaW5OYW1lKG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IHN0cmluZyB7XG4gIGNvbnN0IG5ldHdvcmtOYW1lID0gdXR4b2xpYi5nZXROZXR3b3JrTmFtZShuZXR3b3JrKTtcblxuICAvLyB0aGUgYml0Y29pbmNhc2ggbmV0d29yayBhY3R1YWxseSBoYXMgdHdvIGNvaW5zOiBiY2ggYW5kIGJjaGEgLSBoYXJkY29kZSBiY2ggYnkgZGVmYXVsdCBoZXJlXG4gIHN3aXRjaCAobmV0d29ya05hbWUpIHtcbiAgICBjYXNlICdiaXRjb2luY2FzaCc6XG4gICAgICByZXR1cm4gJ2JjaCc7XG4gICAgY2FzZSAnYml0Y29pbmNhc2hUZXN0bmV0JzpcbiAgICAgIHJldHVybiAndGJjaCc7XG4gIH1cblxuICBjb25zdCBtYXRjaGVzID0gWy4uLmNvaW5zXS5mbGF0TWFwKChbLCBjb2luXSkgPT5cbiAgICBjb2luIGluc3RhbmNlb2YgVXR4b0NvaW4gJiYgY29pbi5uZXR3b3JrLnV0eG9saWJOYW1lID09PSBuZXR3b3JrTmFtZSA/IFtjb2luLm5hbWVdIDogW11cbiAgKTtcbiAgc3dpdGNoIChtYXRjaGVzLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gY29pbiBmb3IgbmV0d29yayAke25ldHdvcmtOYW1lfWApO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBtYXRjaGVzWzBdO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1vcmUgdGhhbiBvbmUgY29pbiBmb3IgJHtuZXR3b3JrTmFtZX06ICR7bWF0Y2hlc31gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBcGkoaHR0cENsaWVudDogSHR0cENsaWVudCwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogYmxvY2thcGlzLlV0eG9BcGkge1xuICBjb25zdCBjb2luTmFtZSA9IGdldENvaW5OYW1lKG5ldHdvcmspO1xuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAnYnRjJzpcbiAgICBjYXNlICd0YnRjJzpcbiAgICAgIHJldHVybiBibG9ja2FwaXMuQmxvY2tzdHJlYW1BcGkuZm9yQ29pbihjb2luTmFtZSwgeyBodHRwQ2xpZW50IH0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYmxvY2thcGlzLkJsb2NrY2hhaXJBcGkuZm9yQ29pbihjb2luTmFtZSwgeyBodHRwQ2xpZW50IH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uSGV4KFxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICB0eGlkOiBzdHJpbmcsXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29ya1xuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGF3YWl0IGdldEFwaShodHRwQ2xpZW50LCBuZXR3b3JrKS5nZXRUcmFuc2FjdGlvbkhleCh0eGlkKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25TdGF0dXMoXG4gIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gIHR4aWQ6IHN0cmluZyxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBQcm9taXNlPGJsb2NrYXBpcy5UcmFuc2FjdGlvblN0YXR1cz4ge1xuICByZXR1cm4gYXdhaXQgZ2V0QXBpKGh0dHBDbGllbnQsIG5ldHdvcmspLmdldFRyYW5zYWN0aW9uU3RhdHVzKHR4aWQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQcmV2T3V0cHV0cyhodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCB0eDogUGFyc2VyVHgpOiBQcm9taXNlPHV0eG9saWIuVHhPdXRwdXQ8YmlnaW50PltdPiB7XG4gIHJldHVybiAoYXdhaXQgYmxvY2thcGlzLmZldGNoSW5wdXRzKGdldFR4T3V0UG9pbnRzKHR4KSwgZ2V0QXBpKGh0dHBDbGllbnQsIHR4Lm5ldHdvcmspLCB0eC5uZXR3b3JrKSkubWFwKCh2KSA9PiAoe1xuICAgIC4uLnYsXG4gICAgdmFsdWU6IEJpZ0ludCh2LnZhbHVlKSxcbiAgfSkpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQcmV2T3V0cHV0U3BlbmRzKFxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248YmlnaW50PiB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnRcbik6IFByb21pc2U8YmxvY2thcGlzLk91dHB1dFNwZW5kW10+IHtcbiAgcmV0dXJuIGF3YWl0IGJsb2NrYXBpcy5mZXRjaFRyYW5zYWN0aW9uU3BlbmRzKGdldFR4T3V0UG9pbnRzKHR4KSwgZ2V0QXBpKGh0dHBDbGllbnQsIHR4Lm5ldHdvcmspKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoT3V0cHV0U3BlbmRzKFxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248YmlnaW50PlxuKTogUHJvbWlzZTxibG9ja2FwaXMuT3V0cHV0U3BlbmRbXT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBcGkoaHR0cENsaWVudCwgdHgubmV0d29yaykuZ2V0VHJhbnNhY3Rpb25TcGVuZHModHguZ2V0SWQoKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/format.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Chalk } from 'chalk';
|
|
2
2
|
import { ParserNode } from './Parser';
|
|
3
|
-
export declare function formatSat(v: number): string;
|
|
3
|
+
export declare function formatSat(v: number | bigint): string;
|
|
4
4
|
export declare function formatTree(n: ParserNode, { hide, chalk }?: {
|
|
5
5
|
hide?: string[];
|
|
6
6
|
chalk?: Chalk;
|
package/dist/src/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAIvD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAIvD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,UAAU,CACxB,CAAC,EAAE,UAAU,EACb,EAAE,IAAkB,EAAE,KAAsB,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAO,GACtF,MAAM,CAgDR"}
|
package/dist/src/format.js
CHANGED
|
@@ -5,13 +5,18 @@ const chalk_1 = require("chalk");
|
|
|
5
5
|
const archy = require("archy");
|
|
6
6
|
const hideDefault = ['pubkeys', 'sequence', 'locktime', 'scriptSig', 'witness'];
|
|
7
7
|
function formatSat(v) {
|
|
8
|
-
return (v / 1e8).toFixed(8);
|
|
8
|
+
return (Number(v) / 1e8).toFixed(8);
|
|
9
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
|
|
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(': ');
|
|
@@ -23,24 +28,29 @@ function formatTree(n, { hide = hideDefault, chalk = new chalk_1.Instance() } =
|
|
|
23
28
|
case 'boolean':
|
|
24
29
|
case 'number':
|
|
25
30
|
case 'string':
|
|
31
|
+
case 'bigint':
|
|
26
32
|
return String(v);
|
|
27
33
|
case 'object':
|
|
28
34
|
if (v === null) {
|
|
29
35
|
return String(v);
|
|
30
36
|
}
|
|
31
37
|
if (Buffer.isBuffer(v)) {
|
|
32
|
-
return v.
|
|
38
|
+
return `${v.toString('hex')} ${chalk.dim(`(${v.length} bytes)`)}`;
|
|
39
|
+
}
|
|
40
|
+
if (v instanceof Uint8Array) {
|
|
41
|
+
return getLabelFromValue(Buffer.from(v));
|
|
33
42
|
}
|
|
34
43
|
}
|
|
35
|
-
throw new Error(`could not get label from value`);
|
|
44
|
+
throw new Error(`could not get label from value ${typeof v}`);
|
|
36
45
|
}
|
|
37
46
|
function toArchy(n) {
|
|
47
|
+
var _a;
|
|
38
48
|
return {
|
|
39
|
-
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) }),
|
|
40
50
|
nodes: n.nodes ? n.nodes.flatMap((e) => (hide.includes(e.label) ? [] : [toArchy(e)])) : undefined,
|
|
41
51
|
};
|
|
42
52
|
}
|
|
43
53
|
return archy(toArchy(n));
|
|
44
54
|
}
|
|
45
55
|
exports.formatTree = formatTree;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBd0M7QUFDeEMsK0JBQStCO0FBRy9CLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLFNBQWdCLFNBQVMsQ0FBQyxDQUFrQjtJQUMxQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsOEJBRUM7QUFFRCxTQUFnQixVQUFVLENBQ3hCLENBQWEsRUFDYixFQUFFLElBQUksR0FBRyxXQUFXLEVBQUUsS0FBSyxHQUFHLElBQUksZ0JBQVEsRUFBRSxLQUF5QyxFQUFFO0lBRXZGLFNBQVMsUUFBUSxDQUNmLEtBQXNCLEVBQ3RCLENBQVcsRUFDWCxFQUFFLGFBQWEsS0FBaUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFO1FBRXhFLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNuQixJQUFJLGFBQWEsRUFBRTtnQkFDakIsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDbEM7U0FDRjthQUFNO1lBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjtRQUNELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FBQyxDQUFrQjtRQUMzQyxRQUFRLE9BQU8sQ0FBQyxFQUFFO1lBQ2hCLEtBQUssV0FBVztnQkFDZCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDZCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEI7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN0QixPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sU0FBUyxDQUFDLEVBQUUsQ0FBQztpQkFDbkU7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksVUFBVSxFQUFFO29CQUMzQixPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDMUM7U0FDSjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsU0FBUyxPQUFPLENBQUMsQ0FBYTs7UUFDNUIsT0FBTztZQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBQSxDQUFDLENBQUMsS0FBSywwQ0FBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xHLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNsRyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFuREQsZ0NBbURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbGssIEluc3RhbmNlIH0gZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgYXJjaHkgZnJvbSAnYXJjaHknO1xuaW1wb3J0IHsgUGFyc2VyTm9kZSwgUGFyc2VyTm9kZVZhbHVlIH0gZnJvbSAnLi9QYXJzZXInO1xuXG5jb25zdCBoaWRlRGVmYXVsdCA9IFsncHVia2V5cycsICdzZXF1ZW5jZScsICdsb2NrdGltZScsICdzY3JpcHRTaWcnLCAnd2l0bmVzcyddO1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U2F0KHY6IG51bWJlciB8IGJpZ2ludCk6IHN0cmluZyB7XG4gIHJldHVybiAoTnVtYmVyKHYpIC8gMWU4KS50b0ZpeGVkKDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VHJlZShcbiAgbjogUGFyc2VyTm9kZSxcbiAgeyBoaWRlID0gaGlkZURlZmF1bHQsIGNoYWxrID0gbmV3IEluc3RhbmNlKCkgfTogeyBoaWRlPzogc3RyaW5nW107IGNoYWxrPzogQ2hhbGsgfSA9IHt9XG4pOiBzdHJpbmcge1xuICBmdW5jdGlvbiBnZXRMYWJlbChcbiAgICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIHY/OiB1bmtub3duLFxuICAgIHsgc2hvd1VuZGVmaW5lZCB9OiB7IHNob3dVbmRlZmluZWQ6IGJvb2xlYW4gfSA9IHsgc2hvd1VuZGVmaW5lZDogZmFsc2UgfVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGFyciA9IFtjaGFsay5ib2xkKGxhYmVsKV07XG4gICAgaWYgKHYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHNob3dVbmRlZmluZWQpIHtcbiAgICAgICAgYXJyLnB1c2goY2hhbGsuZGltKCd1bmRlZmluZWQnKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyci5wdXNoKFN0cmluZyh2KSk7XG4gICAgfVxuICAgIHJldHVybiBhcnIuam9pbignOiAnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExhYmVsRnJvbVZhbHVlKHY6IFBhcnNlck5vZGVWYWx1ZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoICh0eXBlb2Ygdikge1xuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICdiaWdpbnQnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKHYgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodikpIHtcbiAgICAgICAgICByZXR1cm4gYCR7di50b1N0cmluZygnaGV4Jyl9ICR7Y2hhbGsuZGltKGAoJHt2Lmxlbmd0aH0gYnl0ZXMpYCl9YDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0TGFiZWxGcm9tVmFsdWUoQnVmZmVyLmZyb20odikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IGdldCBsYWJlbCBmcm9tIHZhbHVlICR7dHlwZW9mIHZ9YCk7XG4gIH1cblxuICBmdW5jdGlvbiB0b0FyY2h5KG46IFBhcnNlck5vZGUpOiBhcmNoeS5EYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGdldExhYmVsKG4ubGFiZWwsIGdldExhYmVsRnJvbVZhbHVlKG4udmFsdWUpLCB7IHNob3dVbmRlZmluZWQ6ICFCb29sZWFuKG4ubm9kZXM/Lmxlbmd0aCkgfSksXG4gICAgICBub2Rlczogbi5ub2RlcyA/IG4ubm9kZXMuZmxhdE1hcCgoZSkgPT4gKGhpZGUuaW5jbHVkZXMoZS5sYWJlbCkgPyBbXSA6IFt0b0FyY2h5KGUpXSkpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gYXJjaHkodG9BcmNoeShuKSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
declare type AddressProperties = {
|
|
3
|
+
chain: utxolib.bitgo.ChainCode;
|
|
4
|
+
index: number;
|
|
5
|
+
type: utxolib.bitgo.outputScripts.ScriptType;
|
|
6
|
+
userPath: string;
|
|
7
|
+
backupPath: string;
|
|
8
|
+
bitgoPath: string;
|
|
9
|
+
userKey: string;
|
|
10
|
+
backupKey: string;
|
|
11
|
+
bitgoKey: string;
|
|
12
|
+
redeemScript?: string;
|
|
13
|
+
witnessScript?: string;
|
|
14
|
+
scriptPubKey: string;
|
|
15
|
+
address: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function getAddressPlaceholderDescription(): string;
|
|
18
|
+
export declare function formatAddressTree(props: AddressProperties): string;
|
|
19
|
+
export declare function formatAddressWithFormatString(props: AddressProperties, format: string): string;
|
|
20
|
+
export declare function getRange(start: number, end: number): number[];
|
|
21
|
+
export declare function parseIndexRange(ranges: string[]): number[];
|
|
22
|
+
export declare function generateAddress(argv: {
|
|
23
|
+
network?: utxolib.Network;
|
|
24
|
+
userKey: string;
|
|
25
|
+
userKeyPrefix?: string;
|
|
26
|
+
backupKey: string;
|
|
27
|
+
backupKeyPrefix?: string;
|
|
28
|
+
bitgoKey: string;
|
|
29
|
+
bitgoKeyPrefix?: string;
|
|
30
|
+
chain?: number[];
|
|
31
|
+
format: string;
|
|
32
|
+
index: number[];
|
|
33
|
+
}): Generator<AddressProperties>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=generateAddress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateAddress.d.ts","sourceRoot":"","sources":["../../src/generateAddress.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAYhD,aAAK,iBAAiB,GAAG;IACvB,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,gCAAgC,IAAI,MAAM,CAIzD;AA6BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAGlE;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAU9F;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,eAAe,CAAC,IAAI,EAAE;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAC1B,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;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAgB/B"}
|