@bitgo-beta/utxo-bin 2.8.3-beta.3 → 2.8.3-beta.300
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 +25 -0
- package/dist/src/OutputParser.d.ts.map +1 -0
- package/dist/src/OutputParser.js +65 -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 +10 -6
- package/dist/src/TxParser.d.ts.map +1 -1
- package/dist/src/TxParser.js +25 -25
- 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 +176 -24
- package/dist/src/fetch.d.ts +4 -3
- package/dist/src/fetch.d.ts.map +1 -1
- package/dist/src/fetch.js +15 -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 -4635
- 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
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Parser, ParserNode } from './Parser';
|
|
3
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
4
|
+
export declare class ScriptParser extends Parser {
|
|
5
|
+
network?: utxolib.Network;
|
|
6
|
+
constructor({ network }?: {
|
|
7
|
+
network?: utxolib.Network;
|
|
8
|
+
});
|
|
9
|
+
static toASM(script: Buffer, { insertNewlines }?: {
|
|
10
|
+
insertNewlines?: boolean | undefined;
|
|
11
|
+
}): string | undefined;
|
|
12
|
+
static classify(script: Buffer | undefined, witness: Buffer[] | undefined): {
|
|
13
|
+
input: string | undefined;
|
|
14
|
+
output: string | undefined;
|
|
15
|
+
witness: string | undefined;
|
|
16
|
+
};
|
|
17
|
+
parsePayment(payment: utxolib.Payment): ParserNode;
|
|
18
|
+
parseBufferAsPayment(script: Buffer): ParserNode[];
|
|
19
|
+
parse(script: Buffer): ParserNode;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ScriptParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptParser.d.ts","sourceRoot":"","sources":["../../src/ScriptParser.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAqBhD,qBAAa,YAAa,SAAQ,MAAM;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;gBACd,EAAE,OAAO,EAAE,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAA;KAAO;IAK3D,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,cAAqB,EAAE;;KAAK,GAAG,MAAM,GAAG,SAAS;IAahF,MAAM,CAAC,QAAQ,CACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAC5B;QACD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B;IAQD,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,UAAU;IAMlD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAUlD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;CAclC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScriptParser = void 0;
|
|
4
|
+
const Parser_1 = require("./Parser");
|
|
5
|
+
const utxolib = require("@bitgo-beta/utxo-lib");
|
|
6
|
+
const parseUnknown_1 = require("./parseUnknown");
|
|
7
|
+
const paymentTypes = ['p2sh', 'p2pkh', 'p2wpkh', 'p2wsh', 'p2ms'];
|
|
8
|
+
function parsePaymentWithType(script, type, network) {
|
|
9
|
+
switch (type) {
|
|
10
|
+
case 'p2sh':
|
|
11
|
+
return utxolib.payments.p2sh({ redeem: { output: script }, network });
|
|
12
|
+
case 'p2pkh':
|
|
13
|
+
return utxolib.payments.p2pkh({ output: script, network });
|
|
14
|
+
case 'p2wpkh':
|
|
15
|
+
return utxolib.payments.p2wpkh({ output: script, network });
|
|
16
|
+
case 'p2wsh':
|
|
17
|
+
return utxolib.payments.p2wsh({ output: script, network });
|
|
18
|
+
case 'p2ms':
|
|
19
|
+
return utxolib.payments.p2ms({ output: script, network });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
class ScriptParser extends Parser_1.Parser {
|
|
23
|
+
constructor({ network } = {}) {
|
|
24
|
+
super();
|
|
25
|
+
this.network = network;
|
|
26
|
+
}
|
|
27
|
+
static toASM(script, { insertNewlines = true } = {}) {
|
|
28
|
+
let parsed;
|
|
29
|
+
try {
|
|
30
|
+
parsed = utxolib.script.toASM(script);
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
return 'error';
|
|
34
|
+
}
|
|
35
|
+
if (parsed) {
|
|
36
|
+
return insertNewlines ? ['', ...parsed.split(' ')].join('\n') : parsed;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
static classify(script, witness) {
|
|
40
|
+
return {
|
|
41
|
+
input: script ? utxolib.classify.input(script, /* allowIncomplete */ true) : undefined,
|
|
42
|
+
output: script ? utxolib.classify.output(script) : undefined,
|
|
43
|
+
witness: witness ? utxolib.classify.witness(witness) : undefined,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
parsePayment(payment) {
|
|
47
|
+
return (0, parseUnknown_1.parseUnknown)(this, `payment: ${payment.name}`, payment, {
|
|
48
|
+
omit: ['network', 'name'],
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
parseBufferAsPayment(script) {
|
|
52
|
+
return paymentTypes.flatMap((type) => {
|
|
53
|
+
try {
|
|
54
|
+
return [this.parsePayment(parsePaymentWithType(script, type, this.network))];
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
parse(script) {
|
|
62
|
+
const classification = ScriptParser.classify(script, undefined);
|
|
63
|
+
const decompiled = utxolib.script.decompile(script);
|
|
64
|
+
return this.node('script', `length ${script.length} bytes`, [
|
|
65
|
+
this.node('classification', undefined, [
|
|
66
|
+
this.node('input', classification.input),
|
|
67
|
+
this.node('output', classification.output),
|
|
68
|
+
this.node('witness', classification.witness),
|
|
69
|
+
]),
|
|
70
|
+
this.node('asm', ScriptParser.toASM(script)),
|
|
71
|
+
this.node('decompiled', undefined, decompiled ? decompiled.map((v, i) => this.node(i, v)) : undefined),
|
|
72
|
+
...this.parseBufferAsPayment(script),
|
|
73
|
+
]);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.ScriptParser = ScriptParser;
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NyaXB0UGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjcmlwdFBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBOEM7QUFDOUMsZ0RBQWdEO0FBQ2hELGlEQUE4QztBQUU5QyxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQVUsQ0FBQztBQUczRSxTQUFTLG9CQUFvQixDQUFDLE1BQWMsRUFBRSxJQUFpQixFQUFFLE9BQXlCO0lBQ3hGLFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSyxNQUFNO1lBQ1QsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLEtBQUssT0FBTztZQUNWLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDN0QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM5RCxLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdELEtBQUssTUFBTTtZQUNULE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDN0Q7QUFDSCxDQUFDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZUFBTTtJQUV0QyxZQUFZLEVBQUUsT0FBTyxLQUFv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QUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3RHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqRUQsb0NBaUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBwYXJzZVVua25vd24gfSBmcm9tICcuL3BhcnNlVW5rbm93bic7XG5cbmNvbnN0IHBheW1lbnRUeXBlcyA9IFsncDJzaCcsICdwMnBraCcsICdwMndwa2gnLCAncDJ3c2gnLCAncDJtcyddIGFzIGNvbnN0O1xudHlwZSBQYXltZW50VHlwZSA9ICh0eXBlb2YgcGF5bWVudFR5cGVzKVtudW1iZXJdO1xuXG5mdW5jdGlvbiBwYXJzZVBheW1lbnRXaXRoVHlwZShzY3JpcHQ6IEJ1ZmZlciwgdHlwZTogUGF5bWVudFR5cGUsIG5ldHdvcms/OiB1dHhvbGliLk5ldHdvcmspOiB1dHhvbGliLlBheW1lbnQge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdwMnNoJzpcbiAgICAgIHJldHVybiB1dHhvbGliLnBheW1lbnRzLnAyc2goeyByZWRlZW06IHsgb3V0cHV0OiBzY3JpcHQgfSwgbmV0d29yayB9KTtcbiAgICBjYXNlICdwMnBraCc6XG4gICAgICByZXR1cm4gdXR4b2xpYi5wYXltZW50cy5wMnBraCh7IG91dHB1dDogc2NyaXB0LCBuZXR3b3JrIH0pO1xuICAgIGNhc2UgJ3Ayd3BraCc6XG4gICAgICByZXR1cm4gdXR4b2xpYi5wYXltZW50cy5wMndwa2goeyBvdXRwdXQ6IHNjcmlwdCwgbmV0d29yayB9KTtcbiAgICBjYXNlICdwMndzaCc6XG4gICAgICByZXR1cm4gdXR4b2xpYi5wYXltZW50cy5wMndzaCh7IG91dHB1dDogc2NyaXB0LCBuZXR3b3JrIH0pO1xuICAgIGNhc2UgJ3AybXMnOlxuICAgICAgcmV0dXJuIHV0eG9saWIucGF5bWVudHMucDJtcyh7IG91dHB1dDogc2NyaXB0LCBuZXR3b3JrIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY3JpcHRQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrO1xuICBjb25zdHJ1Y3Rvcih7IG5ldHdvcmsgfTogeyBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrIH0gPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uZXR3b3JrID0gbmV0d29yaztcbiAgfVxuXG4gIHN0YXRpYyB0b0FTTShzY3JpcHQ6IEJ1ZmZlciwgeyBpbnNlcnROZXdsaW5lcyA9IHRydWUgfSA9IHt9KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgcGFyc2VkO1xuICAgIHRyeSB7XG4gICAgICBwYXJzZWQgPSB1dHhvbGliLnNjcmlwdC50b0FTTShzY3JpcHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnZXJyb3InO1xuICAgIH1cblxuICAgIGlmIChwYXJzZWQpIHtcbiAgICAgIHJldHVybiBpbnNlcnROZXdsaW5lcyA/IFsnJywgLi4ucGFyc2VkLnNwbGl0KCcgJyldLmpvaW4oJ1xcbicpIDogcGFyc2VkO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjbGFzc2lmeShcbiAgICBzY3JpcHQ6IEJ1ZmZlciB8IHVuZGVmaW5lZCxcbiAgICB3aXRuZXNzOiBCdWZmZXJbXSB8IHVuZGVmaW5lZFxuICApOiB7XG4gICAgaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBvdXRwdXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB3aXRuZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dDogc2NyaXB0ID8gdXR4b2xpYi5jbGFzc2lmeS5pbnB1dChzY3JpcHQsIC8qIGFsbG93SW5jb21wbGV0ZSAqLyB0cnVlKSA6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dDogc2NyaXB0ID8gdXR4b2xpYi5jbGFzc2lmeS5vdXRwdXQoc2NyaXB0KSA6IHVuZGVmaW5lZCxcbiAgICAgIHdpdG5lc3M6IHdpdG5lc3MgPyB1dHhvbGliLmNsYXNzaWZ5LndpdG5lc3Mod2l0bmVzcykgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIHBhcnNlUGF5bWVudChwYXltZW50OiB1dHhvbGliLlBheW1lbnQpOiBQYXJzZXJOb2RlIHtcbiAgICByZXR1cm4gcGFyc2VVbmtub3duKHRoaXMsIGBwYXltZW50OiAke3BheW1lbnQubmFtZX1gLCBwYXltZW50LCB7XG4gICAgICBvbWl0OiBbJ25ldHdvcmsnLCAnbmFtZSddLFxuICAgIH0pO1xuICB9XG5cbiAgcGFyc2VCdWZmZXJBc1BheW1lbnQoc2NyaXB0OiBCdWZmZXIpOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiBwYXltZW50VHlwZXMuZmxhdE1hcCgodHlwZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLnBhcnNlUGF5bWVudChwYXJzZVBheW1lbnRXaXRoVHlwZShzY3JpcHQsIHR5cGUsIHRoaXMubmV0d29yaykpXTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcGFyc2Uoc2NyaXB0OiBCdWZmZXIpOiBQYXJzZXJOb2RlIHtcbiAgICBjb25zdCBjbGFzc2lmaWNhdGlvbiA9IFNjcmlwdFBhcnNlci5jbGFzc2lmeShzY3JpcHQsIHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZGVjb21waWxlZCA9IHV0eG9saWIuc2NyaXB0LmRlY29tcGlsZShzY3JpcHQpO1xuICAgIHJldHVybiB0aGlzLm5vZGUoJ3NjcmlwdCcsIGBsZW5ndGggJHtzY3JpcHQubGVuZ3RofSBieXRlc2AsIFtcbiAgICAgIHRoaXMubm9kZSgnY2xhc3NpZmljYXRpb24nLCB1bmRlZmluZWQsIFtcbiAgICAgICAgdGhpcy5ub2RlKCdpbnB1dCcsIGNsYXNzaWZpY2F0aW9uLmlucHV0KSxcbiAgICAgICAgdGhpcy5ub2RlKCdvdXRwdXQnLCBjbGFzc2lmaWNhdGlvbi5vdXRwdXQpLFxuICAgICAgICB0aGlzLm5vZGUoJ3dpdG5lc3MnLCBjbGFzc2lmaWNhdGlvbi53aXRuZXNzKSxcbiAgICAgIF0pLFxuICAgICAgdGhpcy5ub2RlKCdhc20nLCBTY3JpcHRQYXJzZXIudG9BU00oc2NyaXB0KSksXG4gICAgICB0aGlzLm5vZGUoJ2RlY29tcGlsZWQnLCB1bmRlZmluZWQsIGRlY29tcGlsZWQgPyBkZWNvbXBpbGVkLm1hcCgodiwgaSkgPT4gdGhpcy5ub2RlKGksIHYpKSA6IHVuZGVmaW5lZCksXG4gICAgICAuLi50aGlzLnBhcnNlQnVmZmVyQXNQYXltZW50KHNjcmlwdCksXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/TxParser.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OutputSpend, TransactionStatus } from '@bitgo-beta/blockapis';
|
|
2
2
|
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
3
3
|
import { Parser, ParserNode } from './Parser';
|
|
4
|
+
import { ParserTx, ParserTxInput, ParserTxOutput } from './ParserTx';
|
|
4
5
|
export declare type TxParserArgs = {
|
|
5
6
|
parseScriptData: boolean;
|
|
6
7
|
parseScriptAsm: boolean;
|
|
@@ -10,24 +11,27 @@ export declare type TxParserArgs = {
|
|
|
10
11
|
ecdsa: boolean;
|
|
11
12
|
schnorr: boolean;
|
|
12
13
|
};
|
|
14
|
+
parseAsUnknown: boolean;
|
|
13
15
|
hide?: string[];
|
|
14
16
|
maxOutputs?: number;
|
|
15
17
|
vin?: number[];
|
|
18
|
+
vout?: number[];
|
|
19
|
+
parseError?: 'throw' | 'continue';
|
|
16
20
|
};
|
|
17
21
|
export declare type ChainInfo = {
|
|
18
22
|
status?: TransactionStatus;
|
|
19
23
|
outputSpends?: OutputSpend[];
|
|
20
|
-
prevOutputs?: utxolib.TxOutput[];
|
|
24
|
+
prevOutputs?: utxolib.TxOutput<bigint>[];
|
|
21
25
|
prevOutputSpends?: OutputSpend[];
|
|
22
26
|
};
|
|
23
27
|
export declare class TxParser extends Parser {
|
|
24
28
|
private params;
|
|
25
29
|
static PARSE_ALL: TxParserArgs;
|
|
26
30
|
constructor(params: TxParserArgs);
|
|
27
|
-
parseIns(ins:
|
|
28
|
-
parseOuts(outs:
|
|
29
|
-
parseStatus(
|
|
30
|
-
parseVersion(tx: utxolib.bitgo.UtxoTransaction): ParserNode;
|
|
31
|
-
parse(tx:
|
|
31
|
+
parseIns(ins: ParserTxInput[], tx: ParserTx, txid: string, outputInfo: ChainInfo): ParserNode[];
|
|
32
|
+
parseOuts(outs: ParserTxOutput[], tx: ParserTx, txid: string, params: ChainInfo): ParserNode[];
|
|
33
|
+
parseStatus(status?: TransactionStatus): ParserNode[];
|
|
34
|
+
parseVersion(tx: utxolib.bitgo.UtxoTransaction<bigint> | utxolib.bitgo.UtxoPsbt): ParserNode;
|
|
35
|
+
parse(tx: ParserTx, chainInfo?: ChainInfo): ParserNode;
|
|
32
36
|
}
|
|
33
37
|
//# sourceMappingURL=TxParser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TxParser.d.ts","sourceRoot":"","sources":["../../src/TxParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"TxParser.d.ts","sourceRoot":"","sources":["../../src/TxParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAyB,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAa5F,oBAAY,YAAY,GAAG;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CACnC,CAAC;AAEF,oBAAY,SAAS,GAAG;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IACzC,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC;CAClC,CAAC;AAEF,qBAAa,QAAS,SAAQ,MAAM;IAatB,OAAO,CAAC,MAAM;IAZ1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAU5B;gBAEkB,MAAM,EAAE,YAAY;IAIxC,QAAQ,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,UAAU,EAAE;IAQ/F,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,UAAU,EAAE;IAY9F,WAAW,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,UAAU,EAAE;IAsBrD,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;IAc5F,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,GAAE,SAAc,GAAG,UAAU;CAoC3D"}
|
package/dist/src/TxParser.js
CHANGED
|
@@ -4,7 +4,9 @@ exports.TxParser = void 0;
|
|
|
4
4
|
const utxolib = require("@bitgo-beta/utxo-lib");
|
|
5
5
|
const Parser_1 = require("./Parser");
|
|
6
6
|
const format_1 = require("./format");
|
|
7
|
-
const
|
|
7
|
+
const ParserTx_1 = require("./ParserTx");
|
|
8
|
+
const InputParser_1 = require("./InputParser");
|
|
9
|
+
const OutputParser_1 = require("./OutputParser");
|
|
8
10
|
function formatConsensusBranchId(branchId) {
|
|
9
11
|
var _a;
|
|
10
12
|
const map = {
|
|
@@ -16,26 +18,24 @@ function formatConsensusBranchId(branchId) {
|
|
|
16
18
|
}
|
|
17
19
|
class TxParser extends Parser_1.Parser {
|
|
18
20
|
constructor(params) {
|
|
19
|
-
super();
|
|
21
|
+
super(params);
|
|
20
22
|
this.params = params;
|
|
21
23
|
}
|
|
22
|
-
parseIns(ins, tx, outputInfo) {
|
|
23
|
-
const txid = tx.getId();
|
|
24
|
-
const ioParser = new InputOutputParser_1.InputOutputParser(this.params);
|
|
24
|
+
parseIns(ins, tx, txid, outputInfo) {
|
|
25
25
|
return ins.flatMap((input, i) => this.params.vin === undefined || this.params.vin.includes(i)
|
|
26
|
-
? [
|
|
26
|
+
? [new InputParser_1.InputParser(txid, tx, i, outputInfo, this.params).parseInput()]
|
|
27
27
|
: []);
|
|
28
28
|
}
|
|
29
|
-
parseOuts(outs, tx, params) {
|
|
29
|
+
parseOuts(outs, tx, txid, params) {
|
|
30
30
|
var _a;
|
|
31
|
-
if (outs.length > ((_a = this.params.maxOutputs) !== null && _a !== void 0 ? _a : 200)) {
|
|
31
|
+
if (this.params.vout === undefined && outs.length > ((_a = this.params.maxOutputs) !== null && _a !== void 0 ? _a : 200)) {
|
|
32
32
|
return [this.node('(omitted)', undefined)];
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
return outs.flatMap((o, i) => this.params.vout === undefined || this.params.vout.includes(i)
|
|
35
|
+
? [new OutputParser_1.OutputParser(tx.network, txid, i, o, params, this.params).parseOutput()]
|
|
36
|
+
: []);
|
|
37
37
|
}
|
|
38
|
-
parseStatus(
|
|
38
|
+
parseStatus(status) {
|
|
39
39
|
if (!status) {
|
|
40
40
|
return [this.node('status', 'unknown')];
|
|
41
41
|
}
|
|
@@ -59,26 +59,25 @@ class TxParser extends Parser_1.Parser {
|
|
|
59
59
|
: []);
|
|
60
60
|
}
|
|
61
61
|
parse(tx, chainInfo = {}) {
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
const vsize = tx.virtualSize();
|
|
65
|
-
const outputSum = tx.outs.reduce((sum, o) => sum + o.value, 0);
|
|
66
|
-
const inputSum = (_a = chainInfo.prevOutputs) === null || _a === void 0 ? void 0 : _a.reduce((sum, o) => sum + o.value, 0);
|
|
62
|
+
const { format, complete, id, weight, inputs, outputs, hasWitnesses, inputSum, outputSum } = (0, ParserTx_1.getParserTxProperties)(tx, chainInfo.prevOutputs);
|
|
63
|
+
const vsize = weight === undefined ? undefined : Math.ceil(weight / 4);
|
|
67
64
|
const fee = inputSum ? inputSum - outputSum : undefined;
|
|
68
|
-
const feeRate = fee ? fee / vsize : undefined;
|
|
69
|
-
return this.node('transaction',
|
|
65
|
+
const feeRate = fee && vsize ? Number(fee) / vsize : undefined;
|
|
66
|
+
return this.node('transaction', id, [
|
|
67
|
+
this.node('format', format),
|
|
68
|
+
this.node('complete', complete),
|
|
70
69
|
this.node('parsedAs', `${utxolib.getNetworkName(utxolib.getMainnet(tx.network))} ` +
|
|
71
70
|
`${utxolib.isMainnet(tx.network) ? 'mainnet' : 'testnet'}`),
|
|
72
71
|
this.parseVersion(tx),
|
|
73
72
|
this.node('locktime', tx.locktime),
|
|
74
|
-
this.node('hasWitnesses',
|
|
75
|
-
...this.parseStatus(
|
|
73
|
+
this.node('hasWitnesses', hasWitnesses),
|
|
74
|
+
...this.parseStatus(chainInfo.status),
|
|
76
75
|
this.node('vsize', `${vsize}vbytes (${weight}wu)`),
|
|
77
76
|
...(fee && feeRate
|
|
78
|
-
? [this.node('fee [btc]', format_1.formatSat(fee)), this.node('feeRate [sat/vbyte]', feeRate.toFixed(2))]
|
|
77
|
+
? [this.node('fee [btc]', (0, format_1.formatSat)(fee)), this.node('feeRate [sat/vbyte]', feeRate.toFixed(2))]
|
|
79
78
|
: []),
|
|
80
|
-
this.node(`inputs`, [
|
|
81
|
-
this.node(`outputs`, [
|
|
79
|
+
this.node(`inputs`, [inputs.length.toString()].concat(inputSum ? ['sum=' + (0, format_1.formatSat)(inputSum)] : []).join(' '), this.parseIns(inputs, tx, id, chainInfo)),
|
|
80
|
+
this.node(`outputs`, [outputs.length.toString(), 'sum=' + (0, format_1.formatSat)(outputSum)].join(' '), this.parseOuts(outputs, tx, id, chainInfo)),
|
|
82
81
|
]);
|
|
83
82
|
}
|
|
84
83
|
}
|
|
@@ -92,5 +91,6 @@ TxParser.PARSE_ALL = {
|
|
|
92
91
|
ecdsa: true,
|
|
93
92
|
schnorr: true,
|
|
94
93
|
},
|
|
94
|
+
parseAsUnknown: false,
|
|
95
95
|
};
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHhQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVHhQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsZ0RBQWdEO0FBQ2hELHFDQUE4QztBQUM5QyxxQ0FBcUM7QUFDckMsMkRBQXdEO0FBRXhELFNBQVMsdUJBQXVCLENBQUMsUUFBZ0I7O0lBQy9DLE1BQU0sR0FBRyxHQUEyQjtRQUNsQyxvQkFBb0IsRUFBRSxVQUFVO1FBQ2hDLGdCQUFnQixFQUFFLFVBQVU7UUFDNUIsYUFBYSxFQUFFLFVBQVU7S0FDMUIsQ0FBQztJQUNGLE9BQU8sTUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxtQ0FBSSxTQUFTLENBQUM7QUFDeEUsQ0FBQztBQXVCRCxNQUFhLFFBQVMsU0FBUSxlQUFNO0lBWWxDLFlBQW9CLE1BQW9CO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUV4QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQXNCLEVBQUUsRUFBaUMsRUFBRSxVQUFxQjtRQUN2RixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFF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ImltcG9ydCB7IE91dHB1dFNwZW5kLCBUcmFuc2FjdGlvblN0YXR1cyB9IGZyb20gJ0BiaXRnby1iZXRhL2Jsb2NrYXBpcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCB7IGZvcm1hdFNhdCB9IGZyb20gJy4vZm9ybWF0JztcbmltcG9ydCB7IElucHV0T3V0cHV0UGFyc2VyIH0gZnJvbSAnLi9JbnB1dE91dHB1dFBhcnNlcic7XG5cbmZ1bmN0aW9uIGZvcm1hdENvbnNlbnN1c0JyYW5jaElkKGJyYW5jaElkOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICAgT1ZFUldJTlRFUl9CUkFOQ0hfSUQ6IDB4NWJhODFiMTksXG4gICAgQ0FOT1BZX0JSQU5DSF9JRDogMHhlOWZmNzVhNixcbiAgICBOVTVfQlJBTkNIX0lEOiAweGMyZDZkMGI0LFxuICB9O1xuICByZXR1cm4gT2JqZWN0LmtleXMobWFwKS5maW5kKChrKSA9PiBtYXBba10gPT09IGJyYW5jaElkKSA/PyAndW5rbm93bic7XG59XG5cbmV4cG9ydCB0eXBlIFR4UGFyc2VyQXJncyA9IHtcbiAgcGFyc2VTY3JpcHREYXRhOiBib29sZWFuO1xuICBwYXJzZVNjcmlwdEFzbTogYm9vbGVhbjtcbiAgcGFyc2VPdXRwdXRTY3JpcHQ6IGJvb2xlYW47XG4gIHBhcnNlU2lnbmF0dXJlRGF0YToge1xuICAgIHNjcmlwdDogYm9vbGVhbjtcbiAgICBlY2RzYTogYm9vbGVhbjtcbiAgICBzY2hub3JyOiBib29sZWFuO1xuICB9O1xuICBoaWRlPzogc3RyaW5nW107XG4gIG1heE91dHB1dHM/OiBudW1iZXI7XG4gIHZpbj86IG51bWJlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhaW5JbmZvID0ge1xuICBzdGF0dXM/OiBUcmFuc2FjdGlvblN0YXR1cztcbiAgb3V0cHV0U3BlbmRzPzogT3V0cHV0U3BlbmRbXTtcbiAgcHJldk91dHB1dHM/OiB1dHhvbGliLlR4T3V0cHV0W107XG4gIHByZXZPdXRwdXRTcGVuZHM/OiBPdXRwdXRTcGVuZFtdO1xufTtcblxuZXhwb3J0IGNsYXNzIFR4UGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgc3RhdGljIFBBUlNFX0FMTDogVHhQYXJzZXJBcmdzID0ge1xuICAgIHBhcnNlU2NyaXB0RGF0YTogdHJ1ZSxcbiAgICBwYXJzZVNjcmlwdEFzbTogdHJ1ZSxcbiAgICBwYXJzZU91dHB1dFNjcmlwdDogdHJ1ZSxcbiAgICBwYXJzZVNpZ25hdHVyZURhdGE6IHtcbiAgICAgIHNjcmlwdDogdHJ1ZSxcbiAgICAgIGVjZHNhOiB0cnVlLFxuICAgICAgc2Nobm9ycjogdHJ1ZSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyYW1zOiBUeFBhcnNlckFyZ3MpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcGFyc2VJbnMoaW5zOiB1dHhvbGliLlR4SW5wdXRbXSwgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uLCBvdXRwdXRJbmZvOiBDaGFpbkluZm8pOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IHR4aWQgPSB0eC5nZXRJZCgpO1xuICAgIGNvbnN0IGlvUGFyc2VyID0gbmV3IElucHV0T3V0cHV0UGFyc2VyKHRoaXMucGFyYW1zKTtcbiAgICByZXR1cm4gaW5zLmZsYXRNYXAoKGlucHV0LCBpKSA9PlxuICAgICAgdGhpcy5wYXJhbXMudmluID09PSB1bmRlZmluZWQgfHwgdGhpcy5wYXJhbXMudmluLmluY2x1ZGVzKGkpXG4gICAgICAgID8gW2lvUGFyc2VyLnBhcnNlSW5wdXQodHhpZCwgdHgsIGksIHR4Lmluc1tpXSwgb3V0cHV0SW5mbyldXG4gICAgICAgIDogW11cbiAgICApO1xuICB9XG5cbiAgcGFyc2VPdXRzKG91dHM6IHV0eG9saWIuVHhPdXRwdXRbXSwgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uLCBwYXJhbXM6IENoYWluSW5mbyk6IFBhcnNlck5vZGVbXSB7XG4gICAgaWYgKG91dHMubGVuZ3RoID4gKHRoaXMucGFyYW1zLm1heE91dHB1dHMgPz8gMjAwKSkge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJyhvbWl0dGVkKScsIHVuZGVmaW5lZCldO1xuICAgIH1cblxuICAgIGNvbnN0IHR4aWQgPSB0eC5nZXRJZCgpO1xuICAgIGNvbnN0IGlvUGFyc2VyID0gbmV3IElucHV0T3V0cHV0UGFyc2VyKHRoaXMucGFyYW1zKTtcbiAgICByZXR1cm4gb3V0cy5tYXAoKG8sIGkpID0+IGlvUGFyc2VyLnBhcnNlT3V0cHV0KHR4aWQsIG8sIGksIHR4Lm5ldHdvcmssIHBhcmFtcykpO1xuICB9XG5cbiAgcGFyc2VTdGF0dXModHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uLCBzdGF0dXM/OiBUcmFuc2FjdGlvblN0YXR1cyk6IFBhcnNlck5vZGVbXSB7XG4gICAgaWYgKCFzdGF0dXMpIHtcbiAgICAgIHJldHVybiBbdGhpcy5ub2RlKCdzdGF0dXMnLCAndW5rbm93bicpXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMubm9kZShcbiAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgIHN0YXR1cy5mb3VuZCA/ICdmb3VuZCcgOiAnbm90IGZvdW5kJyxcbiAgICAgICAgc3RhdHVzLmZvdW5kXG4gICAgICAgICAgPyBzdGF0dXMuY29uZmlybWVkXG4gICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUoXG4gICAgICAgICAgICAgICAgICAnY29uZmlybWVkJyxcbiAgICAgICAgICAgICAgICAgIGBibG9jayAke3N0YXR1cy5ibG9ja0hlaWdodH1gICsgKHN0YXR1cy5kYXRlID8gYCBkYXRlPSR7c3RhdHVzLmRhdGUudG9JU09TdHJpbmcoKX1gIDogJycpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbdGhpcy5ub2RlKCdjb25maXJtZWQnLCBmYWxzZSldXG4gICAgICAgICAgOiBbXVxuICAgICAgKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2VWZXJzaW9uKHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbik6IFBhcnNlck5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAndmVyc2lvbicsXG4gICAgICB0eC52ZXJzaW9uLFxuICAgICAgdHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlpjYXNoVHJhbnNhY3Rpb25cbiAgICAgICAgPyBbXG4gICAgICAgICAgICB0aGlzLm5vZGUoJ2NvbnNlbnN1c0JyYW5jaElkIChpbmZlcnJlZCknLCB0eC5jb25zZW5zdXNCcmFuY2hJZC50b1N0cmluZygxNiksIFtcbiAgICAgICAgICAgICAgdGhpcy5ub2RlKCduYW1lJywgZm9ybWF0Q29uc2Vuc3VzQnJhbmNoSWQodHguY29uc2Vuc3VzQnJhbmNoSWQpKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXVxuICAgICk7XG4gIH1cblxuICBwYXJzZSh0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sIGNoYWluSW5mbzogQ2hhaW5JbmZvID0ge30pOiBQYXJzZXJOb2RlIHtcbiAgICBjb25zdCB3ZWlnaHQgPSB0eC53ZWlnaHQoKTtcbiAgICBjb25zdCB2c2l6ZSA9IHR4LnZpcnR1YWxTaXplKCk7XG4gICAgY29uc3Qgb3V0cHV0U3VtID0gdHgub3V0cy5yZWR1Y2UoKHN1bSwgbykgPT4gc3VtICsgby52YWx1ZSwgMCk7XG4gICAgY29uc3QgaW5wdXRTdW0gPSBjaGFpbkluZm8ucHJldk91dHB1dHM/LnJlZHVjZSgoc3VtLCBvKSA9PiBzdW0gKyBvLnZhbHVlLCAwKTtcbiAgICBjb25zdCBmZWUgPSBpbnB1dFN1bSA/IGlucHV0U3VtIC0gb3V0cHV0U3VtIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZlZVJhdGUgPSBmZWUgPyBmZWUgLyB2c2l6ZSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5ub2RlKCd0cmFuc2FjdGlvbicsIHR4LmdldElkKCksIFtcbiAgICAgIHRoaXMubm9kZShcbiAgICAgICAgJ3BhcnNlZEFzJyxcbiAgICAgICAgYCR7dXR4b2xpYi5nZXROZXR3b3JrTmFtZSh1dHhvbGliLmdldE1haW5uZXQodHgubmV0d29yaykpfSBgICtcbiAgICAgICAgICBgJHt1dHhvbGliLmlzTWFpbm5ldCh0eC5uZXR3b3JrKSA/ICdtYWlubmV0JyA6ICd0ZXN0bmV0J31gXG4gICAgICApLFxuICAgICAgdGhpcy5wYXJzZVZlcnNpb24odHgpLFxuICAgICAgdGhpcy5ub2RlKCdsb2NrdGltZScsIHR4LmxvY2t0aW1lKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzV2l0bmVzc2VzJywgdHguaGFzV2l0bmVzc2VzKCkpLFxuICAgICAgLi4udGhpcy5wYXJzZVN0YXR1cyh0eCwgY2hhaW5JbmZvLnN0YXR1cyksXG4gICAgICB0aGlzLm5vZGUoJ3ZzaXplJywgYCR7dnNpemV9dmJ5dGVzICgke3dlaWdodH13dSlgKSxcbiAgICAgIC4uLihmZWUgJiYgZmVlUmF0ZVxuICAgICAgICA/IFt0aGlzLm5vZGUoJ2ZlZSBbYnRjXScsIGZvcm1hdFNhdChmZWUpKSwgdGhpcy5ub2RlKCdmZWVSYXRlIFtzYXQvdmJ5dGVdJywgZmVlUmF0ZS50b0ZpeGVkKDIpKV1cbiAgICAgICAgOiBbXSksXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgIGBpbnB1dHNgLFxuICAgICAgICBbU3RyaW5nKHR4Lmlucy5sZW5ndGgpXS5jb25jYXQoaW5wdXRTdW0gPyBbJ3N1bT0nICsgZm9ybWF0U2F0KGlucHV0U3VtKV0gOiBbXSkuam9pbignICcpLFxuICAgICAgICB0aGlzLnBhcnNlSW5zKHR4LmlucywgdHgsIGNoYWluSW5mbylcbiAgICAgICksXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgIGBvdXRwdXRzYCxcbiAgICAgICAgW1N0cmluZyh0eC5vdXRzLmxlbmd0aCksICdzdW09JyArIGZvcm1hdFNhdChvdXRwdXRTdW0pXS5qb2luKCcgJyksXG4gICAgICAgIHRoaXMucGFyc2VPdXRzKHR4Lm91dHMsIHR4LCBjaGFpbkluZm8pXG4gICAgICApLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHhQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVHhQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsZ0RBQWdEO0FBQ2hELHFDQUE4QztBQUM5QyxxQ0FBcUM7QUFDckMseUNBQTRGO0FBQzVGLCtDQUE0QztBQUM1QyxpREFBOEM7QUFFOUMsU0FBUyx1QkFBdUIsQ0FBQyxRQUFnQjs7SUFDL0MsTUFBTSxHQUFHLEdBQTJCO1FBQ2xDLG9CQUFvQixFQUFFLFVBQVU7UUFDaEMsZ0JBQWdCLEVBQUUsVUFBVTtRQUM1QixhQUFhLEVBQUUsVUFBVTtLQUMxQixDQUFDO0lBQ0YsT0FBTyxNQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLG1DQUFJLFNBQVMsQ0FBQztBQUN4RSxDQUFDO0FBMEJELE1BQWEsUUFBUyxTQUFRLGVBQU07SUFhbEMsWUFBb0IsTUFBb0I7UUFDdEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBREksV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUV4QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQW9CLEVBQUUsRUFBWSxFQUFFLElBQVksRUFBRSxVQUFxQjtRQUM5RSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFvQixFQUFFLENBQVMsRUFBRSxFQUFFLENBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDLElBQUkseUJBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxD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LEVBQUUsS0FBSztDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3V0cHV0U3BlbmQsIFRyYW5zYWN0aW9uU3RhdHVzIH0gZnJvbSAnQGJpdGdvLWJldGEvYmxvY2thcGlzJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZm9ybWF0U2F0IH0gZnJvbSAnLi9mb3JtYXQnO1xuaW1wb3J0IHsgZ2V0UGFyc2VyVHhQcm9wZXJ0aWVzLCBQYXJzZXJUeCwgUGFyc2VyVHhJbnB1dCwgUGFyc2VyVHhPdXRwdXQgfSBmcm9tICcuL1BhcnNlclR4JztcbmltcG9ydCB7IElucHV0UGFyc2VyIH0gZnJvbSAnLi9JbnB1dFBhcnNlcic7XG5pbXBvcnQgeyBPdXRwdXRQYXJzZXIgfSBmcm9tICcuL091dHB1dFBhcnNlcic7XG5cbmZ1bmN0aW9uIGZvcm1hdENvbnNlbnN1c0JyYW5jaElkKGJyYW5jaElkOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICAgT1ZFUldJTlRFUl9CUkFOQ0hfSUQ6IDB4NWJhODFiMTksXG4gICAgQ0FOT1BZX0JSQU5DSF9JRDogMHhlOWZmNzVhNixcbiAgICBOVTVfQlJBTkNIX0lEOiAweGMyZDZkMGI0LFxuICB9O1xuICByZXR1cm4gT2JqZWN0LmtleXMobWFwKS5maW5kKChrKSA9PiBtYXBba10gPT09IGJyYW5jaElkKSA/PyAndW5rbm93bic7XG59XG5cbmV4cG9ydCB0eXBlIFR4UGFyc2VyQXJncyA9IHtcbiAgcGFyc2VTY3JpcHREYXRhOiBib29sZWFuO1xuICBwYXJzZVNjcmlwdEFzbTogYm9vbGVhbjtcbiAgcGFyc2VPdXRwdXRTY3JpcHQ6IGJvb2xlYW47XG4gIHBhcnNlU2lnbmF0dXJlRGF0YToge1xuICAgIHNjcmlwdDogYm9vbGVhbjtcbiAgICBlY2RzYTogYm9vbGVhbjtcbiAgICBzY2hub3JyOiBib29sZWFuO1xuICB9O1xuICBwYXJzZUFzVW5rbm93bjogYm9vbGVhbjtcbiAgaGlkZT86IHN0cmluZ1tdO1xuICBtYXhPdXRwdXRzPzogbnVtYmVyO1xuICB2aW4/OiBudW1iZXJbXTtcbiAgdm91dD86IG51bWJlcltdO1xuICBwYXJzZUVycm9yPzogJ3Rocm93JyB8ICdjb250aW51ZSc7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFpbkluZm8gPSB7XG4gIHN0YXR1cz86IFRyYW5zYWN0aW9uU3RhdHVzO1xuICBvdXRwdXRTcGVuZHM/OiBPdXRwdXRTcGVuZFtdO1xuICBwcmV2T3V0cHV0cz86IHV0eG9saWIuVHhPdXRwdXQ8YmlnaW50PltdO1xuICBwcmV2T3V0cHV0U3BlbmRzPzogT3V0cHV0U3BlbmRbXTtcbn07XG5cbmV4cG9ydCBjbGFzcyBUeFBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHN0YXRpYyBQQVJTRV9BTEw6IFR4UGFyc2VyQXJncyA9IHtcbiAgICBwYXJzZVNjcmlwdERhdGE6IHRydWUsXG4gICAgcGFyc2VTY3JpcHRBc206IHRydWUsXG4gICAgcGFyc2VPdXRwdXRTY3JpcHQ6IHRydWUsXG4gICAgcGFyc2VTaWduYXR1cmVEYXRhOiB7XG4gICAgICBzY3JpcHQ6IHRydWUsXG4gICAgICBlY2RzYTogdHJ1ZSxcbiAgICAgIHNjaG5vcnI6IHRydWUsXG4gICAgfSxcbiAgICBwYXJzZUFzVW5rbm93bjogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJhbXM6IFR4UGFyc2VyQXJncykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gIH1cblxuICBwYXJzZUlucyhpbnM6IFBhcnNlclR4SW5wdXRbXSwgdHg6IFBhcnNlclR4LCB0eGlkOiBzdHJpbmcsIG91dHB1dEluZm86IENoYWluSW5mbyk6IFBhcnNlck5vZGVbXSB7XG4gICAgcmV0dXJuIGlucy5mbGF0TWFwKChpbnB1dDogUGFyc2VyVHhJbnB1dCwgaTogbnVtYmVyKSA9PlxuICAgICAgdGhpcy5wYXJhbXMudmluID09PSB1bmRlZmluZWQgfHwgdGhpcy5wYXJhbXMudmluLmluY2x1ZGVzKGkpXG4gICAgICAgID8gW25ldyBJbnB1dFBhcnNlcih0eGlkLCB0eCwgaSwgb3V0cHV0SW5mbywgdGhpcy5wYXJhbXMpLnBhcnNlSW5wdXQoKV1cbiAgICAgICAgOiBbXVxuICAgICk7XG4gIH1cblxuICBwYXJzZU91dHMob3V0czogUGFyc2VyVHhPdXRwdXRbXSwgdHg6IFBhcnNlclR4LCB0eGlkOiBzdHJpbmcsIHBhcmFtczogQ2hhaW5JbmZvKTogUGFyc2VyTm9kZVtdIHtcbiAgICBpZiAodGhpcy5wYXJhbXMudm91dCA9PT0gdW5kZWZpbmVkICYmIG91dHMubGVuZ3RoID4gKHRoaXMucGFyYW1zLm1heE91dHB1dHMgPz8gMjAwKSkge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJyhvbWl0dGVkKScsIHVuZGVmaW5lZCldO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRzLmZsYXRNYXAoKG8sIGkpID0+XG4gICAgICB0aGlzLnBhcmFtcy52b3V0ID09PSB1bmRlZmluZWQgfHwgdGhpcy5wYXJhbXMudm91dC5pbmNsdWRlcyhpKVxuICAgICAgICA/IFtuZXcgT3V0cHV0UGFyc2VyKHR4Lm5ldHdvcmssIHR4aWQsIGksIG8sIHBhcmFtcywgdGhpcy5wYXJhbXMpLnBhcnNlT3V0cHV0KCldXG4gICAgICAgIDogW11cbiAgICApO1xuICB9XG5cbiAgcGFyc2VTdGF0dXMoc3RhdHVzPzogVHJhbnNhY3Rpb25TdGF0dXMpOiBQYXJzZXJOb2RlW10ge1xuICAgIGlmICghc3RhdHVzKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgnc3RhdHVzJywgJ3Vua25vd24nKV07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgICdzdGF0dXMnLFxuICAgICAgICBzdGF0dXMuZm91bmQgPyAnZm91bmQnIDogJ25vdCBmb3VuZCcsXG4gICAgICAgIHN0YXR1cy5mb3VuZFxuICAgICAgICAgID8gc3RhdHVzLmNvbmZpcm1lZFxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAgICAgICAgICAgJ2NvbmZpcm1lZCcsXG4gICAgICAgICAgICAgICAgICBgYmxvY2sgJHtzdGF0dXMuYmxvY2tIZWlnaHR9YCArIChzdGF0dXMuZGF0ZSA/IGAgZGF0ZT0ke3N0YXR1cy5kYXRlLnRvSVNPU3RyaW5nKCl9YCA6ICcnKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogW3RoaXMubm9kZSgnY29uZmlybWVkJywgZmFsc2UpXVxuICAgICAgICAgIDogW11cbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlVmVyc2lvbih0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248YmlnaW50PiB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnQpOiBQYXJzZXJOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlKFxuICAgICAgJ3ZlcnNpb24nLFxuICAgICAgdHgudmVyc2lvbixcbiAgICAgIHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5aY2FzaFRyYW5zYWN0aW9uXG4gICAgICAgID8gW1xuICAgICAgICAgICAgdGhpcy5ub2RlKCdjb25zZW5zdXNCcmFuY2hJZCAoaW5mZXJyZWQpJywgdHguY29uc2Vuc3VzQnJhbmNoSWQudG9TdHJpbmcoMTYpLCBbXG4gICAgICAgICAgICAgIHRoaXMubm9kZSgnbmFtZScsIGZvcm1hdENvbnNlbnN1c0JyYW5jaElkKHR4LmNvbnNlbnN1c0JyYW5jaElkKSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW11cbiAgICApO1xuICB9XG5cbiAgcGFyc2UodHg6IFBhcnNlclR4LCBjaGFpbkluZm86IENoYWluSW5mbyA9IHt9KTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3QgeyBmb3JtYXQsIGNvbXBsZXRlLCBpZCwgd2VpZ2h0LCBpbnB1dHMsIG91dHB1dHMsIGhhc1dpdG5lc3NlcywgaW5wdXRTdW0sIG91dHB1dFN1bSB9ID0gZ2V0UGFyc2VyVHhQcm9wZXJ0aWVzKFxuICAgICAgdHgsXG4gICAgICBjaGFpbkluZm8ucHJldk91dHB1dHNcbiAgICApO1xuICAgIGNvbnN0IHZzaXplID0gd2VpZ2h0ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBNYXRoLmNlaWwod2VpZ2h0IC8gNCk7XG4gICAgY29uc3QgZmVlID0gaW5wdXRTdW0gPyBpbnB1dFN1bSAtIG91dHB1dFN1bSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmZWVSYXRlID0gZmVlICYmIHZzaXplID8gTnVtYmVyKGZlZSkgLyB2c2l6ZSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5ub2RlKCd0cmFuc2FjdGlvbicsIGlkLCBbXG4gICAgICB0aGlzLm5vZGUoJ2Zvcm1hdCcsIGZvcm1hdCksXG4gICAgICB0aGlzLm5vZGUoJ2NvbXBsZXRlJywgY29tcGxldGUpLFxuICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAncGFyc2VkQXMnLFxuICAgICAgICBgJHt1dHhvbGliLmdldE5ldHdvcmtOYW1lKHV0eG9saWIuZ2V0TWFpbm5ldCh0eC5uZXR3b3JrKSl9IGAgK1xuICAgICAgICAgIGAke3V0eG9saWIuaXNNYWlubmV0KHR4Lm5ldHdvcmspID8gJ21haW5uZXQnIDogJ3Rlc3RuZXQnfWBcbiAgICAgICksXG4gICAgICB0aGlzLnBhcnNlVmVyc2lvbih0eCksXG4gICAgICB0aGlzLm5vZGUoJ2xvY2t0aW1lJywgdHgubG9ja3RpbWUpLFxuICAgICAgdGhpcy5ub2RlKCdoYXNXaXRuZXNzZXMnLCBoYXNXaXRuZXNzZXMpLFxuICAgICAgLi4udGhpcy5wYXJzZVN0YXR1cyhjaGFpbkluZm8uc3RhdHVzKSxcbiAgICAgIHRoaXMubm9kZSgndnNpemUnLCBgJHt2c2l6ZX12Ynl0ZXMgKCR7d2VpZ2h0fXd1KWApLFxuICAgICAgLi4uKGZlZSAmJiBmZWVSYXRlXG4gICAgICAgID8gW3RoaXMubm9kZSgnZmVlIFtidGNdJywgZm9ybWF0U2F0KGZlZSkpLCB0aGlzLm5vZGUoJ2ZlZVJhdGUgW3NhdC92Ynl0ZV0nLCBmZWVSYXRlLnRvRml4ZWQoMikpXVxuICAgICAgICA6IFtdKSxcbiAgICAgIHRoaXMubm9kZShcbiAgICAgICAgYGlucHV0c2AsXG4gICAgICAgIFtpbnB1dHMubGVuZ3RoLnRvU3RyaW5nKCldLmNvbmNhdChpbnB1dFN1bSA/IFsnc3VtPScgKyBmb3JtYXRTYXQoaW5wdXRTdW0pXSA6IFtdKS5qb2luKCcgJyksXG4gICAgICAgIHRoaXMucGFyc2VJbnMoaW5wdXRzLCB0eCwgaWQsIGNoYWluSW5mbylcbiAgICAgICksXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgIGBvdXRwdXRzYCxcbiAgICAgICAgW291dHB1dHMubGVuZ3RoLnRvU3RyaW5nKCksICdzdW09JyArIGZvcm1hdFNhdChvdXRwdXRTdW0pXS5qb2luKCcgJyksXG4gICAgICAgIHRoaXMucGFyc2VPdXRzKG91dHB1dHMsIHR4LCBpZCwgY2hhaW5JbmZvKVxuICAgICAgKSxcbiAgICBdKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bip32.d.ts","sourceRoot":"","sources":["../../src/bip32.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,UAAU,EAAE,MAAM,UAAU,CAAC;AAG9C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAc/E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseXpub = void 0;
|
|
4
|
+
const utxolib = require("@bitgo-beta/utxo-lib");
|
|
5
|
+
const Parser_1 = require("./Parser");
|
|
6
|
+
const parseUnknown_1 = require("./parseUnknown");
|
|
7
|
+
function parseXpub(xpub, params) {
|
|
8
|
+
if (!xpub.startsWith('xpub')) {
|
|
9
|
+
throw new Error('expected xpub');
|
|
10
|
+
}
|
|
11
|
+
const parser = new Parser_1.Parser();
|
|
12
|
+
let xpubObj = utxolib.bip32.fromBase58(xpub);
|
|
13
|
+
if (params.derive) {
|
|
14
|
+
xpubObj = xpubObj.derivePath(params.derive);
|
|
15
|
+
}
|
|
16
|
+
const node = (0, parseUnknown_1.parseUnknown)(parser, 'xpub', xpubObj, {
|
|
17
|
+
omit: ['network', '__Q', '__D', '__DEPTH', '__INDEX', '__PARENT_FINGERPRINT'],
|
|
18
|
+
});
|
|
19
|
+
node.value = xpubObj.toBase58();
|
|
20
|
+
return node;
|
|
21
|
+
}
|
|
22
|
+
exports.parseXpub = parseXpub;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmlwMzIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELHFDQUE4QztBQUM5QyxpREFBOEM7QUFFOUMsU0FBZ0IsU0FBUyxDQUFDLElBQVksRUFBRSxNQUEyQjtJQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ2xDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFNLEVBQUUsQ0FBQztJQUM1QixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDakIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzdDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQkFBWSxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1FBQ2pELElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLENBQUM7S0FDOUUsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBZEQsOEJBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCB7IHBhcnNlVW5rbm93biB9IGZyb20gJy4vcGFyc2VVbmtub3duJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWHB1Yih4cHViOiBzdHJpbmcsIHBhcmFtczogeyBkZXJpdmU/OiBzdHJpbmcgfSk6IFBhcnNlck5vZGUge1xuICBpZiAoIXhwdWIuc3RhcnRzV2l0aCgneHB1YicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCB4cHViJyk7XG4gIH1cbiAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcigpO1xuICBsZXQgeHB1Yk9iaiA9IHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OCh4cHViKTtcbiAgaWYgKHBhcmFtcy5kZXJpdmUpIHtcbiAgICB4cHViT2JqID0geHB1Yk9iai5kZXJpdmVQYXRoKHBhcmFtcy5kZXJpdmUpO1xuICB9XG4gIGNvbnN0IG5vZGUgPSBwYXJzZVVua25vd24ocGFyc2VyLCAneHB1YicsIHhwdWJPYmosIHtcbiAgICBvbWl0OiBbJ25ldHdvcmsnLCAnX19RJywgJ19fRCcsICdfX0RFUFRIJywgJ19fSU5ERVgnLCAnX19QQVJFTlRfRklOR0VSUFJJTlQnXSxcbiAgfSk7XG4gIG5vZGUudmFsdWUgPSB4cHViT2JqLnRvQmFzZTU4KCk7XG4gIHJldHVybiBub2RlO1xufVxuIl19
|
package/dist/src/commands.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import * as yargs from 'yargs';
|
|
2
2
|
import { TxParser, TxParserArgs } from './TxParser';
|
|
3
3
|
import { AddressParser } from './AddressParser';
|
|
4
|
+
import { ScriptParser } from './ScriptParser';
|
|
4
5
|
declare type OutputFormat = 'tree' | 'json';
|
|
5
6
|
declare type ArgsParseTransaction = {
|
|
6
7
|
network: string;
|
|
7
8
|
stdin: boolean;
|
|
9
|
+
clipboard: boolean;
|
|
8
10
|
path?: string;
|
|
9
11
|
txid?: string;
|
|
12
|
+
data?: string;
|
|
10
13
|
all: boolean;
|
|
11
14
|
cache: boolean;
|
|
12
15
|
format: OutputFormat;
|
|
@@ -14,7 +17,10 @@ declare type ArgsParseTransaction = {
|
|
|
14
17
|
fetchStatus: boolean;
|
|
15
18
|
fetchInputs: boolean;
|
|
16
19
|
fetchSpends: boolean;
|
|
20
|
+
finalize: boolean;
|
|
17
21
|
parseSignatureData: boolean;
|
|
22
|
+
parseAsUnknown: boolean;
|
|
23
|
+
parseError: 'throw' | 'continue';
|
|
18
24
|
} & Omit<TxParserArgs, 'parseSignatureData'>;
|
|
19
25
|
declare type ArgsParseAddress = {
|
|
20
26
|
network?: string;
|
|
@@ -23,12 +29,33 @@ declare type ArgsParseAddress = {
|
|
|
23
29
|
convert: boolean;
|
|
24
30
|
address: string;
|
|
25
31
|
};
|
|
32
|
+
declare type ArgsParseScript = {
|
|
33
|
+
network?: string;
|
|
34
|
+
format: OutputFormat;
|
|
35
|
+
all: boolean;
|
|
36
|
+
script: string;
|
|
37
|
+
};
|
|
38
|
+
export declare type ArgsGenerateAddress = {
|
|
39
|
+
network?: string;
|
|
40
|
+
userKey: string;
|
|
41
|
+
backupKey: string;
|
|
42
|
+
bitgoKey: string;
|
|
43
|
+
chain?: number[];
|
|
44
|
+
format: string;
|
|
45
|
+
index?: string[];
|
|
46
|
+
limit?: number;
|
|
47
|
+
};
|
|
48
|
+
declare type FormatStringArgs = {
|
|
49
|
+
format: OutputFormat;
|
|
50
|
+
all: boolean;
|
|
51
|
+
};
|
|
26
52
|
export declare function getTxParser(argv: yargs.Arguments<ArgsParseTransaction>): TxParser;
|
|
27
53
|
export declare function getAddressParser(argv: ArgsParseAddress): AddressParser;
|
|
54
|
+
export declare function getScriptParser(argv: ArgsParseScript): ScriptParser;
|
|
28
55
|
export declare const cmdParseTx: {
|
|
29
56
|
readonly command: "parseTx [path]";
|
|
30
57
|
readonly aliases: readonly ["parse", "tx"];
|
|
31
|
-
readonly describe:
|
|
58
|
+
readonly describe: string;
|
|
32
59
|
readonly builder: (b: yargs.Argv<unknown>) => yargs.Argv<ArgsParseTransaction>;
|
|
33
60
|
readonly handler: (argv: yargs.Arguments<ArgsParseTransaction>) => Promise<void>;
|
|
34
61
|
};
|
|
@@ -39,5 +66,29 @@ export declare const cmdParseAddress: {
|
|
|
39
66
|
readonly builder: (b: yargs.Argv<unknown>) => yargs.Argv<ArgsParseAddress>;
|
|
40
67
|
readonly handler: (argv: yargs.Arguments<ArgsParseAddress>) => void;
|
|
41
68
|
};
|
|
69
|
+
export declare const cmdParseScript: {
|
|
70
|
+
command: string;
|
|
71
|
+
describe: string;
|
|
72
|
+
builder(b: yargs.Argv<unknown>): yargs.Argv<ArgsParseScript>;
|
|
73
|
+
handler(argv: yargs.Arguments<ArgsParseScript>): void;
|
|
74
|
+
};
|
|
75
|
+
export declare const cmdGenerateAddress: {
|
|
76
|
+
command: string;
|
|
77
|
+
describe: string;
|
|
78
|
+
builder(b: yargs.Argv<unknown>): yargs.Argv<ArgsGenerateAddress>;
|
|
79
|
+
handler(argv: yargs.Arguments<ArgsGenerateAddress>): void;
|
|
80
|
+
};
|
|
81
|
+
export declare const cmdParseXpub: {
|
|
82
|
+
command: string;
|
|
83
|
+
describe: string;
|
|
84
|
+
builder(b: yargs.Argv<unknown>): yargs.Argv<{
|
|
85
|
+
xpub: string;
|
|
86
|
+
derive?: string;
|
|
87
|
+
} & FormatStringArgs>;
|
|
88
|
+
handler(argv: yargs.Arguments<{
|
|
89
|
+
xpub: string;
|
|
90
|
+
derive?: string;
|
|
91
|
+
} & FormatStringArgs>): void;
|
|
92
|
+
};
|
|
42
93
|
export {};
|
|
43
94
|
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"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"}
|