@bitgo/utxo-bin 1.0.0-rc.0
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/LICENSE +21 -0
- package/README.md +92 -0
- package/dist/bin/index.d.ts +3 -0
- package/dist/bin/index.d.ts.map +1 -0
- package/dist/bin/index.js +7 -0
- package/dist/package.json +46 -0
- package/dist/src/commands.d.ts +17 -0
- package/dist/src/commands.d.ts.map +1 -0
- package/dist/src/commands.js +52 -0
- package/dist/src/format.d.ts +4 -0
- package/dist/src/format.d.ts.map +1 -0
- package/dist/src/format.js +41 -0
- package/dist/src/parse.d.ts +32 -0
- package/dist/src/parse.d.ts.map +1 -0
- package/dist/src/parse.js +138 -0
- package/package.json +46 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2011-2017 bitcoinjs-lib contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# `utxo-bin`
|
|
2
|
+
|
|
3
|
+
This repository contains a CLI tool for parsing BitGo wallet transactions (withdrawals) and
|
|
4
|
+
formatting them for terminal output.
|
|
5
|
+
|
|
6
|
+
## Sample Usage
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
» jq -r '.transaction.hex' \
|
|
10
|
+
../utxo-lib/test/integration_local_rpc/fixtures/testnet/v1/spend_p2shP2wsh.json |
|
|
11
|
+
yarn ts-node bin/index.ts parse -n bitcoin -
|
|
12
|
+
|
|
13
|
+
reading from stdin
|
|
14
|
+
transaction
|
|
15
|
+
├── id: a7b64a92c6fb7e0c6ea0b95c0db8a3253347d22f76562df4dc187ed5d442767b
|
|
16
|
+
├── version: 1
|
|
17
|
+
├── hasWitnesses: true
|
|
18
|
+
├─┬ inputs: 2
|
|
19
|
+
│ ├─┬ 0: 61268e441d4078474679c063d1c268b5098163410553329dac0c8069f51bba97:0
|
|
20
|
+
│ │ ├── script: 2200201553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
|
|
21
|
+
│ │ ├── witness: witnessscripthash
|
|
22
|
+
│ │ └─┬ signature: p2shP2wsh
|
|
23
|
+
│ │ └── buffers: 72 72
|
|
24
|
+
│ └─┬ 1: 1761eea952ede40e9f363134f8ee4fb72658f02c4fbb13c882bb2f020a9e512e:1
|
|
25
|
+
│ ├── script: 2200201553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
|
|
26
|
+
│ ├── witness: witnessscripthash
|
|
27
|
+
│ └─┬ signature: p2shP2wsh
|
|
28
|
+
│ └── buffers: 72 71
|
|
29
|
+
└─┬ outputs: 2
|
|
30
|
+
└─┬ 0: 34qSMWWEvrKnykAwMYLyjsKUfD976EjRJL
|
|
31
|
+
└── value: 1.99999
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
With `--all`:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
» jq -r '.transaction.hex' \
|
|
38
|
+
../utxo-lib/test/integration_local_rpc/fixtures/testnet/v1/spend_p2shP2wsh.json |
|
|
39
|
+
yarn ts-node bin/index.ts parse --all -n bitcoin -
|
|
40
|
+
|
|
41
|
+
reading from stdin
|
|
42
|
+
transaction
|
|
43
|
+
├── id: a7b64a92c6fb7e0c6ea0b95c0db8a3253347d22f76562df4dc187ed5d442767b
|
|
44
|
+
├── version: 1
|
|
45
|
+
├── hasWitnesses: true
|
|
46
|
+
├─┬ inputs: 2
|
|
47
|
+
│ ├─┬ 0: 61268e441d4078474679c063d1c268b5098163410553329dac0c8069f51bba97:0
|
|
48
|
+
│ │ ├─┬ script: scripthash
|
|
49
|
+
│ │ │ └─┬ 0: 00201553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
|
|
50
|
+
│ │ │ └── asm:
|
|
51
|
+
│ │ │ OP_0
|
|
52
|
+
│ │ │ 1553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
|
|
53
|
+
│ │ ├─┬ witness: witnessscripthash
|
|
54
|
+
│ │ │ ├── 0: []
|
|
55
|
+
│ │ │ ├── 1: 3045022100cb6125485a4e9e2d98dafde8074a29d43ef28ffdd34f0d7f8048423f1fd54c01022065798d67d21f18383db7c4e9532e497b1b54d7e9c3676a079d9502cd0663963c01
|
|
56
|
+
│ │ │ ├── 2: 3045022100c3a36135223671fac881d4a48f16b2698500887ac91530b4145000ba4950967902200737c216d2cc705b3d6d88d8443870be168c9bfad2525795ac14ec4ea3598ca801
|
|
57
|
+
│ │ │ └─┬ 3: 5221028fedaf75b5b08cddf3bf4631c658b68ee6766a8e999467a641d7cb7aaaecec972103316bc27d95b96418349afc6298c259bb999c6e8f39a7217787ad53602be7c1472102e21c29b4a7eeace9c7a8cefb568ca00c86ff9bf5e79e07e5442c29d4a0950d0453ae
|
|
58
|
+
│ │ │ └── asm:
|
|
59
|
+
│ │ │ OP_2
|
|
60
|
+
│ │ │ 028fedaf75b5b08cddf3bf4631c658b68ee6766a8e999467a641d7cb7aaaecec97
|
|
61
|
+
│ │ │ 03316bc27d95b96418349afc6298c259bb999c6e8f39a7217787ad53602be7c147
|
|
62
|
+
│ │ │ 02e21c29b4a7eeace9c7a8cefb568ca00c86ff9bf5e79e07e5442c29d4a0950d04
|
|
63
|
+
│ │ │ OP_3
|
|
64
|
+
│ │ │ OP_CHECKMULTISIG
|
|
65
|
+
│ │ └─┬ signature: p2shP2wsh
|
|
66
|
+
│ │ ├── 0: 3045022100cb6125485a4e9e2d98dafde8074a29d43ef28ffdd34f0d7f8048423f1fd54c01022065798d67d21f18383db7c4e9532e497b1b54d7e9c3676a079d9502cd0663963c01
|
|
67
|
+
│ │ └── 1: 3045022100c3a36135223671fac881d4a48f16b2698500887ac91530b4145000ba4950967902200737c216d2cc705b3d6d88d8443870be168c9bfad2525795ac14ec4ea3598ca801
|
|
68
|
+
│ └─┬ 1: 1761eea952ede40e9f363134f8ee4fb72658f02c4fbb13c882bb2f020a9e512e:1
|
|
69
|
+
│ ├─┬ script: scripthash
|
|
70
|
+
│ │ └─┬ 0: 00201553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
|
|
71
|
+
│ │ └── asm:
|
|
72
|
+
│ │ OP_0
|
|
73
|
+
│ │ 1553f31a3e25e770b7bc857b82909e83734dbfe4bcdb5a5e6fc419b6920c398a
|
|
74
|
+
│ ├─┬ witness: witnessscripthash
|
|
75
|
+
│ │ ├── 0: []
|
|
76
|
+
│ │ ├── 1: 3045022100f0279fa27d0f85c4c3ee7ea3104963bd88ec02f62f23ae0b73d122293e58c7b8022024b8c9dca8d9d77bda69da70282a45422c2baf0d4a05ecbe57a48b65f92d950d01
|
|
77
|
+
│ │ ├── 2: 304402203bb213db0b4842ea5f8c1b9290c8b42dbe65f72bee29e4ad7e8d57e5f16390010220347df34c34a4df5fabe8571c7168c8111df7275a56672126f434bdc44fea6c5901
|
|
78
|
+
│ │ └─┬ 3: 5221028fedaf75b5b08cddf3bf4631c658b68ee6766a8e999467a641d7cb7aaaecec972103316bc27d95b96418349afc6298c259bb999c6e8f39a7217787ad53602be7c1472102e21c29b4a7eeace9c7a8cefb568ca00c86ff9bf5e79e07e5442c29d4a0950d0453ae
|
|
79
|
+
│ │ └── asm:
|
|
80
|
+
│ │ OP_2
|
|
81
|
+
│ │ 028fedaf75b5b08cddf3bf4631c658b68ee6766a8e999467a641d7cb7aaaecec97
|
|
82
|
+
│ │ 03316bc27d95b96418349afc6298c259bb999c6e8f39a7217787ad53602be7c147
|
|
83
|
+
│ │ 02e21c29b4a7eeace9c7a8cefb568ca00c86ff9bf5e79e07e5442c29d4a0950d04
|
|
84
|
+
│ │ OP_3
|
|
85
|
+
│ │ OP_CHECKMULTISIG
|
|
86
|
+
│ └─┬ signature: p2shP2wsh
|
|
87
|
+
│ ├── 0: 3045022100f0279fa27d0f85c4c3ee7ea3104963bd88ec02f62f23ae0b73d122293e58c7b8022024b8c9dca8d9d77bda69da70282a45422c2baf0d4a05ecbe57a48b65f92d950d01
|
|
88
|
+
│ └── 1: 304402203bb213db0b4842ea5f8c1b9290c8b42dbe65f72bee29e4ad7e8d57e5f16390010220347df34c34a4df5fabe8571c7168c8111df7275a56672126f434bdc44fea6c5901
|
|
89
|
+
└─┬ outputs: 2
|
|
90
|
+
└─┬ 0: 34qSMWWEvrKnykAwMYLyjsKUfD976EjRJL
|
|
91
|
+
└── value: 1.99999
|
|
92
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../bin/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const yargs = require("yargs");
|
|
5
|
+
const commands_1 = require("../src/commands");
|
|
6
|
+
yargs.command(commands_1.cmdParse).help().parse();
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQStCO0FBQy9CLDhDQUEyQztBQUMzQyxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IGNtZFBhcnNlIH0gZnJvbSAnLi4vc3JjL2NvbW1hbmRzJztcbnlhcmdzLmNvbW1hbmQoY21kUGFyc2UpLmhlbHAoKS5wYXJzZSgpO1xuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bitgo/utxo-bin",
|
|
3
|
+
"description": "Command-line utility for BitGo UTXO transactions",
|
|
4
|
+
"version": "1.0.0-rc.0",
|
|
5
|
+
"files": [
|
|
6
|
+
"dist/**/*"
|
|
7
|
+
],
|
|
8
|
+
"keywords": [
|
|
9
|
+
"bitgo",
|
|
10
|
+
"utxo",
|
|
11
|
+
"bitcoinjs",
|
|
12
|
+
"bitcoin"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"prepare": "npm run build",
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"lint": "eslint --quiet .",
|
|
18
|
+
"unit-test": "mocha",
|
|
19
|
+
"fmt": "prettier --write '{bin,src,test}/**/*.{ts,js}'"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "https://github.com/BitGo/BitGoJS.git",
|
|
24
|
+
"directory": "modules/utxo-bin"
|
|
25
|
+
},
|
|
26
|
+
"bin": "./dist/bin/index.js",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@bitgo/utxo-lib": "^2.2.1-rc.10",
|
|
29
|
+
"archy": "^1.0.0",
|
|
30
|
+
"chalk": "4",
|
|
31
|
+
"yargs": "^17.3.1"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/archy": "^0.0.32",
|
|
35
|
+
"@types/mocha": "^9.0.0",
|
|
36
|
+
"@types/yargs": "^17.0.8",
|
|
37
|
+
"mocha": "^9.1.4",
|
|
38
|
+
"ts-node": "^10.4.0",
|
|
39
|
+
"typescript": "^4.5.4"
|
|
40
|
+
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"license": "MIT",
|
|
45
|
+
"gitHead": "cc820eca80da39bf567f218143d7972b632bb937"
|
|
46
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as yargs from 'yargs';
|
|
2
|
+
import { Parser, ParserArgs } from './parse';
|
|
3
|
+
declare type Args = {
|
|
4
|
+
network: string;
|
|
5
|
+
path: string;
|
|
6
|
+
all: boolean;
|
|
7
|
+
format: 'tree' | 'json';
|
|
8
|
+
} & ParserArgs;
|
|
9
|
+
export declare function getParser(argv: yargs.Arguments<Args>): Parser;
|
|
10
|
+
export declare const cmdParse: {
|
|
11
|
+
command: string;
|
|
12
|
+
describe: string;
|
|
13
|
+
builder(b: yargs.Argv<unknown>): yargs.Argv<Args>;
|
|
14
|
+
handler(argv: yargs.Arguments<Args>): Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG7C,aAAK,IAAI,GAAG;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,GAAG,UAAU,CAAC;AAEf,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAE7D;AAED,eAAO,MAAM,QAAQ;;;eAIR,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;kBAW7B,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC;CAyB1D,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cmdParse = exports.getParser = void 0;
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const process = require("process");
|
|
6
|
+
const utxolib = require("@bitgo/utxo-lib");
|
|
7
|
+
const parse_1 = require("./parse");
|
|
8
|
+
const format_1 = require("./format");
|
|
9
|
+
function getParser(argv) {
|
|
10
|
+
return new parse_1.Parser(argv.all ? parse_1.Parser.PARSE_ALL : argv);
|
|
11
|
+
}
|
|
12
|
+
exports.getParser = getParser;
|
|
13
|
+
exports.cmdParse = {
|
|
14
|
+
command: 'parse <path>',
|
|
15
|
+
describe: 'display transaction components in human-readable form',
|
|
16
|
+
builder(b) {
|
|
17
|
+
return b
|
|
18
|
+
.option('path', { type: 'string', default: '-' })
|
|
19
|
+
.option('network', { alias: 'n', type: 'string', demandOption: true })
|
|
20
|
+
.option('parseScriptAsm', { alias: 'scriptasm', type: 'boolean', default: false })
|
|
21
|
+
.option('parseScriptData', { alias: 'scriptdata', type: 'boolean', default: false })
|
|
22
|
+
.option('parseSignatureData', { alias: 'sigdata', type: 'boolean', default: false })
|
|
23
|
+
.option('all', { type: 'boolean', default: false })
|
|
24
|
+
.option('format', { choices: ['tree', 'json'], default: 'tree' });
|
|
25
|
+
},
|
|
26
|
+
async handler(argv) {
|
|
27
|
+
let data;
|
|
28
|
+
const network = utxolib.networks[argv.network];
|
|
29
|
+
if (!network) {
|
|
30
|
+
throw new Error(`invalid network ${network}`);
|
|
31
|
+
}
|
|
32
|
+
if (argv.path === undefined || argv.path === '' || argv.path === '-') {
|
|
33
|
+
console.log('reading from stdin');
|
|
34
|
+
data = fs.readFileSync(process.stdin.fd, 'utf8');
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
data = (await fs.promises.readFile(argv.path, 'utf8')).toString();
|
|
38
|
+
}
|
|
39
|
+
data = data.replace(/\s*/g, '');
|
|
40
|
+
const tx = utxolib.bitgo.createTransactionFromHex(data, network);
|
|
41
|
+
const parsed = getParser(argv).parse(tx);
|
|
42
|
+
switch (argv.format) {
|
|
43
|
+
case 'json':
|
|
44
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
45
|
+
break;
|
|
46
|
+
case 'tree':
|
|
47
|
+
console.log((0, format_1.formatTree)(parsed));
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUVuQywyQ0FBMkM7QUFFM0MsbUNBQTZDO0FBQzdDLHFDQUFzQztBQVN0QyxTQUFnQixTQUFTLENBQUMsSUFBMkI7SUFDbkQsT0FBTyxJQUFJLGNBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRkQsOEJBRUM7QUFFWSxRQUFBLFFBQVEsR0FBRztJQUN0QixPQUFPLEVBQUUsY0FBYztJQUN2QixRQUFRLEVBQUUsdURBQXVEO0lBRWpFLE9BQU8sQ0FBQyxDQUFzQjtRQUM1QixPQUFPLENBQUM7YUFDTCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDaEQsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDckUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUNqRixNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ25GLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDbkYsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ2xELE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBVyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBMkI7UUFDdkMsSUFBSSxJQUFJLENBQUM7UUFDVCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUE4QixDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO1lBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNsQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNsRDthQUFNO1lBQ0wsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbkU7UUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFaEMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakUsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbkIsS0FBSyxNQUFNO2dCQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFBLG1CQUFVLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsTUFBTTtTQUNUO0lBQ0gsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwcm9jZXNzIGZyb20gJ3Byb2Nlc3MnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5cbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyQXJncyB9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IHsgZm9ybWF0VHJlZSB9IGZyb20gJy4vZm9ybWF0JztcblxudHlwZSBBcmdzID0ge1xuICBuZXR3b3JrOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgYWxsOiBib29sZWFuO1xuICBmb3JtYXQ6ICd0cmVlJyB8ICdqc29uJztcbn0gJiBQYXJzZXJBcmdzO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyc2VyKGFyZ3Y6IHlhcmdzLkFyZ3VtZW50czxBcmdzPik6IFBhcnNlciB7XG4gIHJldHVybiBuZXcgUGFyc2VyKGFyZ3YuYWxsID8gUGFyc2VyLlBBUlNFX0FMTCA6IGFyZ3YpO1xufVxuXG5leHBvcnQgY29uc3QgY21kUGFyc2UgPSB7XG4gIGNvbW1hbmQ6ICdwYXJzZSA8cGF0aD4nLFxuICBkZXNjcmliZTogJ2Rpc3BsYXkgdHJhbnNhY3Rpb24gY29tcG9uZW50cyBpbiBodW1hbi1yZWFkYWJsZSBmb3JtJyxcblxuICBidWlsZGVyKGI6IHlhcmdzLkFyZ3Y8dW5rbm93bj4pOiB5YXJncy5Bcmd2PEFyZ3M+IHtcbiAgICByZXR1cm4gYlxuICAgICAgLm9wdGlvbigncGF0aCcsIHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6ICctJyB9KVxuICAgICAgLm9wdGlvbignbmV0d29yaycsIHsgYWxpYXM6ICduJywgdHlwZTogJ3N0cmluZycsIGRlbWFuZE9wdGlvbjogdHJ1ZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VTY3JpcHRBc20nLCB7IGFsaWFzOiAnc2NyaXB0YXNtJywgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VTY3JpcHREYXRhJywgeyBhbGlhczogJ3NjcmlwdGRhdGEnLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdwYXJzZVNpZ25hdHVyZURhdGEnLCB7IGFsaWFzOiAnc2lnZGF0YScsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2FsbCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignZm9ybWF0JywgeyBjaG9pY2VzOiBbJ3RyZWUnLCAnanNvbiddLCBkZWZhdWx0OiAndHJlZScgfSBhcyBjb25zdCk7XG4gIH0sXG5cbiAgYXN5bmMgaGFuZGxlcihhcmd2OiB5YXJncy5Bcmd1bWVudHM8QXJncz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgZGF0YTtcbiAgICBjb25zdCBuZXR3b3JrID0gdXR4b2xpYi5uZXR3b3Jrc1thcmd2Lm5ldHdvcmsgYXMgdXR4b2xpYi5OZXR3b3JrTmFtZV07XG4gICAgaWYgKCFuZXR3b3JrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbmV0d29yayAke25ldHdvcmt9YCk7XG4gICAgfVxuICAgIGlmIChhcmd2LnBhdGggPT09IHVuZGVmaW5lZCB8fCBhcmd2LnBhdGggPT09ICcnIHx8IGFyZ3YucGF0aCA9PT0gJy0nKSB7XG4gICAgICBjb25zb2xlLmxvZygncmVhZGluZyBmcm9tIHN0ZGluJyk7XG4gICAgICBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHByb2Nlc3Muc3RkaW4uZmQsICd1dGY4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEgPSAoYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoYXJndi5wYXRoLCAndXRmOCcpKS50b1N0cmluZygpO1xuICAgIH1cbiAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC9cXHMqL2csICcnKTtcblxuICAgIGNvbnN0IHR4ID0gdXR4b2xpYi5iaXRnby5jcmVhdGVUcmFuc2FjdGlvbkZyb21IZXgoZGF0YSwgbmV0d29yayk7XG4gICAgY29uc3QgcGFyc2VkID0gZ2V0UGFyc2VyKGFyZ3YpLnBhcnNlKHR4KTtcbiAgICBzd2l0Y2ggKGFyZ3YuZm9ybWF0KSB7XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocGFyc2VkLCBudWxsLCAyKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHJlZSc6XG4gICAgICAgIGNvbnNvbGUubG9nKGZvcm1hdFRyZWUocGFyc2VkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSxcbn07XG4iXX0=
|
|
@@ -0,0 +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,MAAM,EAAe,MAAM,SAAS,CAAC;AAE9C,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,KAAsB,GAAG,MAAM,CAoC3E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatTree = void 0;
|
|
4
|
+
const chalk_1 = require("chalk");
|
|
5
|
+
const archy = require("archy");
|
|
6
|
+
function formatTree(n, chalk = new chalk_1.Instance()) {
|
|
7
|
+
function getLabel(label, v) {
|
|
8
|
+
const arr = [chalk.bold(label)];
|
|
9
|
+
if (v !== undefined) {
|
|
10
|
+
arr.push(String(v));
|
|
11
|
+
}
|
|
12
|
+
return arr.join(': ');
|
|
13
|
+
}
|
|
14
|
+
function getLabelFromValue(v) {
|
|
15
|
+
switch (typeof v) {
|
|
16
|
+
case 'undefined':
|
|
17
|
+
return undefined;
|
|
18
|
+
case 'boolean':
|
|
19
|
+
case 'number':
|
|
20
|
+
case 'string':
|
|
21
|
+
return String(v);
|
|
22
|
+
case 'object':
|
|
23
|
+
if (v === null) {
|
|
24
|
+
return String(v);
|
|
25
|
+
}
|
|
26
|
+
if (Buffer.isBuffer(v)) {
|
|
27
|
+
return v.length === 0 ? '[]' : v.toString('hex');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
throw new Error(`could not get lavel from value`);
|
|
31
|
+
}
|
|
32
|
+
function toArchy(n) {
|
|
33
|
+
return {
|
|
34
|
+
label: getLabel(n.label, getLabelFromValue(n.value)),
|
|
35
|
+
nodes: n.nodes ? n.nodes.map((e) => toArchy(e)) : undefined,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return archy(toArchy(n));
|
|
39
|
+
}
|
|
40
|
+
exports.formatTree = formatTree;
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBd0M7QUFDeEMsK0JBQStCO0FBRy9CLFNBQWdCLFVBQVUsQ0FBQyxDQUFTLEVBQUUsUUFBZSxJQUFJLGdCQUFRLEVBQUU7SUFDakUsU0FBUyxRQUFRLENBQUMsS0FBc0IsRUFBRSxDQUFXO1FBQ25ELE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUFDLENBQWM7UUFDdkMsUUFBUSxPQUFPLENBQUMsRUFBRTtZQUNoQixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUNkLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNsQjtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3RCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDbEQ7U0FDSjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsU0FBUyxPQUFPLENBQUMsQ0FBUztRQUN4QixPQUFPO1lBQ0wsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQzVELENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQXBDRCxnQ0FvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFsaywgSW5zdGFuY2UgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyBhcmNoeSBmcm9tICdhcmNoeSc7XG5pbXBvcnQgeyBUeE5vZGUsIFR4Tm9kZVZhbHVlIH0gZnJvbSAnLi9wYXJzZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUcmVlKG46IFR4Tm9kZSwgY2hhbGs6IENoYWxrID0gbmV3IEluc3RhbmNlKCkpOiBzdHJpbmcge1xuICBmdW5jdGlvbiBnZXRMYWJlbChsYWJlbDogc3RyaW5nIHwgbnVtYmVyLCB2PzogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgYXJyID0gW2NoYWxrLmJvbGQobGFiZWwpXTtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcnIucHVzaChTdHJpbmcodikpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyLmpvaW4oJzogJyk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRMYWJlbEZyb21WYWx1ZSh2OiBUeE5vZGVWYWx1ZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoICh0eXBlb2Ygdikge1xuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiBTdHJpbmcodik7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBpZiAodiA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcodik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2KSkge1xuICAgICAgICAgIHJldHVybiB2Lmxlbmd0aCA9PT0gMCA/ICdbXScgOiB2LnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCBnZXQgbGF2ZWwgZnJvbSB2YWx1ZWApO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9BcmNoeShuOiBUeE5vZGUpOiBhcmNoeS5EYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGdldExhYmVsKG4ubGFiZWwsIGdldExhYmVsRnJvbVZhbHVlKG4udmFsdWUpKSxcbiAgICAgIG5vZGVzOiBuLm5vZGVzID8gbi5ub2Rlcy5tYXAoKGUpID0+IHRvQXJjaHkoZSkpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gYXJjaHkodG9BcmNoeShuKSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as utxolib from '@bitgo/utxo-lib';
|
|
3
|
+
export declare type InputFormat = 'asm' | 'parseSignature';
|
|
4
|
+
export declare type TxNodeValue = number | string | Buffer | boolean | undefined | null;
|
|
5
|
+
export declare type TxNode = {
|
|
6
|
+
type: 'node';
|
|
7
|
+
label: string;
|
|
8
|
+
value: TxNodeValue | undefined;
|
|
9
|
+
nodes: TxNode[] | undefined;
|
|
10
|
+
};
|
|
11
|
+
export declare type ParserArgs = {
|
|
12
|
+
parseScriptData: boolean;
|
|
13
|
+
parseScriptAsm: boolean;
|
|
14
|
+
parseSignatureData: boolean;
|
|
15
|
+
hide?: string[];
|
|
16
|
+
};
|
|
17
|
+
export declare class Parser {
|
|
18
|
+
private params;
|
|
19
|
+
static PARSE_ALL: ParserArgs;
|
|
20
|
+
constructor(params: ParserArgs);
|
|
21
|
+
node(label: string | number, value: TxNodeValue, nodes?: TxNode[]): TxNode;
|
|
22
|
+
parseScriptAsm(type: string, part: Buffer, i: number, n: number): string | undefined;
|
|
23
|
+
parseScriptParts(type: string, parts: Array<Buffer | number>): TxNode[];
|
|
24
|
+
parseScript(buffer: Buffer): TxNode;
|
|
25
|
+
parseWitness(script: Buffer[]): TxNode;
|
|
26
|
+
parseSignatureContent(signatures: (Buffer | 0)[]): TxNode[];
|
|
27
|
+
parseSignature(input: utxolib.TxInput): TxNode;
|
|
28
|
+
parseIns(ins: utxolib.TxInput[]): TxNode[];
|
|
29
|
+
parseOuts(outs: utxolib.TxOutput[], network: utxolib.Network): TxNode[];
|
|
30
|
+
parse(tx: utxolib.bitgo.UtxoTransaction): TxNode;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/parse.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAE3C,oBAAY,WAAW,GAAG,KAAK,GAAG,gBAAgB,CAAC;AAEnD,oBAAY,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AAEhF,oBAAY,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,oBAAY,UAAU,GAAG;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAUF,qBAAa,MAAM;IAQL,OAAO,CAAC,MAAM;IAP1B,MAAM,CAAC,SAAS,EAAE,UAAU,CAK1B;gBAEkB,MAAM,EAAE,UAAU;IAEtC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,MAAM;IAS9E,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAmBpF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,EAAE;IAYvE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAiBnC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;IAQtC,qBAAqB,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE;IA0B3D,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM;IAgB9C,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE;IAW1C,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,EAAE;IAMvE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM;CAejD"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Parser = void 0;
|
|
4
|
+
const utxolib = require("@bitgo/utxo-lib");
|
|
5
|
+
function toBufferUInt32BE(n) {
|
|
6
|
+
const buf = Buffer.alloc(4);
|
|
7
|
+
buf.writeUInt32LE(n);
|
|
8
|
+
return buf;
|
|
9
|
+
}
|
|
10
|
+
const hideDefault = ['sequence', 'locktime'];
|
|
11
|
+
class Parser {
|
|
12
|
+
constructor(params) {
|
|
13
|
+
this.params = params;
|
|
14
|
+
}
|
|
15
|
+
node(label, value, nodes = []) {
|
|
16
|
+
return {
|
|
17
|
+
type: 'node',
|
|
18
|
+
label: String(label),
|
|
19
|
+
value,
|
|
20
|
+
nodes: nodes.filter((n) => { var _a; return !((_a = this.params.hide) !== null && _a !== void 0 ? _a : hideDefault).includes(n.label); }),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
parseScriptAsm(type, part, i, n) {
|
|
24
|
+
if ((type === 'taproot' && i === n - 2) ||
|
|
25
|
+
((type === 'scripthash' || type === 'witnessscripthash') && i === n - 1)) {
|
|
26
|
+
let parsed;
|
|
27
|
+
try {
|
|
28
|
+
parsed = utxolib.script.toASM(part);
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
return 'error';
|
|
32
|
+
}
|
|
33
|
+
if (parsed) {
|
|
34
|
+
return ['', ...parsed.split(' ')].join('\n');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
parseScriptParts(type, parts) {
|
|
39
|
+
return parts.map((v, i) => {
|
|
40
|
+
let asmNode;
|
|
41
|
+
if (this.params.parseScriptAsm && Buffer.isBuffer(v)) {
|
|
42
|
+
const parsed = this.parseScriptAsm(type, v, i, parts.length);
|
|
43
|
+
asmNode = parsed ? this.node('asm', parsed) : undefined;
|
|
44
|
+
}
|
|
45
|
+
return this.node(i, this.params.parseScriptData ? v : undefined, asmNode ? [asmNode] : undefined);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
parseScript(buffer) {
|
|
49
|
+
var _a;
|
|
50
|
+
let value;
|
|
51
|
+
let nodes;
|
|
52
|
+
if (buffer.length && this.params.parseSignatureData) {
|
|
53
|
+
const type = (_a = utxolib.classify.input(buffer, true)) !== null && _a !== void 0 ? _a : 'unknown';
|
|
54
|
+
const decompiled = utxolib.script.decompile(buffer);
|
|
55
|
+
if (decompiled) {
|
|
56
|
+
nodes = this.parseScriptParts(type, decompiled);
|
|
57
|
+
}
|
|
58
|
+
value = type;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
value = buffer;
|
|
62
|
+
}
|
|
63
|
+
return this.node('script', value, nodes);
|
|
64
|
+
}
|
|
65
|
+
parseWitness(script) {
|
|
66
|
+
var _a;
|
|
67
|
+
if (script.length === 0) {
|
|
68
|
+
return this.node('witness', '[]');
|
|
69
|
+
}
|
|
70
|
+
const type = (_a = utxolib.classify.witness(script, true)) !== null && _a !== void 0 ? _a : 'unknown';
|
|
71
|
+
return this.node('witness', type, this.params.parseScriptData ? this.parseScriptParts(type, script) : undefined);
|
|
72
|
+
}
|
|
73
|
+
parseSignatureContent(signatures) {
|
|
74
|
+
if (this.params.parseSignatureData) {
|
|
75
|
+
return signatures.map((sig, i) => this.node(i, Buffer.isBuffer(sig)
|
|
76
|
+
? sig.toString('hex')
|
|
77
|
+
: utxolib.bitgo.isPlaceholderSignature(sig)
|
|
78
|
+
? sig + ' (placeholder)'
|
|
79
|
+
: sig));
|
|
80
|
+
}
|
|
81
|
+
return [
|
|
82
|
+
this.node('buffers', signatures
|
|
83
|
+
.map((sig) => Buffer.isBuffer(sig) ? `${sig.length}` : utxolib.bitgo.isPlaceholderSignature(sig) ? '(placeholder)' : sig)
|
|
84
|
+
.join(' ')),
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
parseSignature(input) {
|
|
88
|
+
var _a;
|
|
89
|
+
const parsed = utxolib.bitgo.parseSignatureScript(input);
|
|
90
|
+
let nodes;
|
|
91
|
+
switch (parsed.scriptType) {
|
|
92
|
+
case undefined:
|
|
93
|
+
break;
|
|
94
|
+
case 'p2sh':
|
|
95
|
+
case 'p2shP2wsh':
|
|
96
|
+
case 'p2wsh':
|
|
97
|
+
case 'p2tr':
|
|
98
|
+
nodes = this.parseSignatureContent(parsed.signatures);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
return this.node('signature', (_a = parsed.scriptType) !== null && _a !== void 0 ? _a : 'unknown', nodes);
|
|
102
|
+
}
|
|
103
|
+
parseIns(ins) {
|
|
104
|
+
return ins.map((input, i) => {
|
|
105
|
+
return this.node(i, utxolib.bitgo.formatOutputId(utxolib.bitgo.getOutputIdForInput(input)), [
|
|
106
|
+
this.node('sequence', toBufferUInt32BE(input.sequence)),
|
|
107
|
+
this.parseScript(input.script),
|
|
108
|
+
this.parseWitness(input.witness),
|
|
109
|
+
this.parseSignature(input),
|
|
110
|
+
]);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
parseOuts(outs, network) {
|
|
114
|
+
return outs.map((o, i) => {
|
|
115
|
+
return this.node(i, utxolib.address.fromOutputScript(o.script, network), [this.node(`value`, o.value / 1e8)]);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
parse(tx) {
|
|
119
|
+
return this.node('transaction', tx.getId(), [
|
|
120
|
+
this.node('parsedAs', `${utxolib.getNetworkName(utxolib.getMainnet(tx.network))} ` +
|
|
121
|
+
`${utxolib.isMainnet(tx.network) ? 'mainnet' : 'testnet'}`),
|
|
122
|
+
this.node('version', tx.version),
|
|
123
|
+
this.node('locktime', tx.locktime),
|
|
124
|
+
this.node('hasWitnesses', tx.hasWitnesses()),
|
|
125
|
+
this.node('vsize', `${tx.virtualSize()}vbytes (${tx.weight()}wu)`),
|
|
126
|
+
this.node(`inputs`, tx.ins.length, this.parseIns(tx.ins)),
|
|
127
|
+
this.node(`outputs`, tx.outs.length, this.parseOuts(tx.outs, tx.network)),
|
|
128
|
+
]);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.Parser = Parser;
|
|
132
|
+
Parser.PARSE_ALL = {
|
|
133
|
+
parseScriptData: true,
|
|
134
|
+
parseScriptAsm: true,
|
|
135
|
+
parseSignatureData: true,
|
|
136
|
+
hide: [],
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTJDO0FBb0IzQyxTQUFTLGdCQUFnQixDQUFDLENBQVM7SUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRTdDLE1BQWEsTUFBTTtJQVFqQixZQUFvQixNQUFrQjtRQUFsQixXQUFNLEdBQU4sTUFBTSxDQUFZO0lBQUcsQ0FBQztJQUUxQyxJQUFJLENBQUMsS0FBc0IsRUFBRSxLQUFrQixFQUFFLFFBQWtCLEVBQUU7UUFDbkUsT0FBTztZQUNMLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDcEIsS0FBSztZQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBQyxPQUFBLENBQUMsQ0FBQyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxtQ0FBSSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBLEVBQUEsQ0FBQztTQUNqRixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLENBQVMsRUFBRSxDQUFTO1FBQzdELElBQ0UsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FB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QU8sQ0FBQyxDQUFDO1NBQzFFLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBcEpILHdCQXFKQztBQXBKUSxnQkFBUyxHQUFlO0lBQzdCLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsSUFBSSxFQUFFLEVBQUU7Q0FDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5leHBvcnQgdHlwZSBJbnB1dEZvcm1hdCA9ICdhc20nIHwgJ3BhcnNlU2lnbmF0dXJlJztcblxuZXhwb3J0IHR5cGUgVHhOb2RlVmFsdWUgPSBudW1iZXIgfCBzdHJpbmcgfCBCdWZmZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgVHhOb2RlID0ge1xuICB0eXBlOiAnbm9kZSc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBUeE5vZGVWYWx1ZSB8IHVuZGVmaW5lZDtcbiAgbm9kZXM6IFR4Tm9kZVtdIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUGFyc2VyQXJncyA9IHtcbiAgcGFyc2VTY3JpcHREYXRhOiBib29sZWFuO1xuICBwYXJzZVNjcmlwdEFzbTogYm9vbGVhbjtcbiAgcGFyc2VTaWduYXR1cmVEYXRhOiBib29sZWFuO1xuICBoaWRlPzogc3RyaW5nW107XG59O1xuXG5mdW5jdGlvbiB0b0J1ZmZlclVJbnQzMkJFKG46IG51bWJlcik6IEJ1ZmZlciB7XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgYnVmLndyaXRlVUludDMyTEUobik7XG4gIHJldHVybiBidWY7XG59XG5cbmNvbnN0IGhpZGVEZWZhdWx0ID0gWydzZXF1ZW5jZScsICdsb2NrdGltZSddO1xuXG5leHBvcnQgY2xhc3MgUGFyc2VyIHtcbiAgc3RhdGljIFBBUlNFX0FMTDogUGFyc2VyQXJncyA9IHtcbiAgICBwYXJzZVNjcmlwdERhdGE6IHRydWUsXG4gICAgcGFyc2VTY3JpcHRBc206IHRydWUsXG4gICAgcGFyc2VTaWduYXR1cmVEYXRhOiB0cnVlLFxuICAgIGhpZGU6IFtdLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyYW1zOiBQYXJzZXJBcmdzKSB7fVxuXG4gIG5vZGUobGFiZWw6IHN0cmluZyB8IG51bWJlciwgdmFsdWU6IFR4Tm9kZVZhbHVlLCBub2RlczogVHhOb2RlW10gPSBbXSk6IFR4Tm9kZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdub2RlJyxcbiAgICAgIGxhYmVsOiBTdHJpbmcobGFiZWwpLFxuICAgICAgdmFsdWUsXG4gICAgICBub2Rlczogbm9kZXMuZmlsdGVyKChuKSA9PiAhKHRoaXMucGFyYW1zLmhpZGUgPz8gaGlkZURlZmF1bHQpLmluY2x1ZGVzKG4ubGFiZWwpKSxcbiAgICB9O1xuICB9XG5cbiAgcGFyc2VTY3JpcHRBc20odHlwZTogc3RyaW5nLCBwYXJ0OiBCdWZmZXIsIGk6IG51bWJlciwgbjogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoXG4gICAgICAodHlwZSA9PT0gJ3RhcHJvb3QnICYmIGkgPT09IG4gLSAyKSB8fFxuICAgICAgKCh0eXBlID09PSAnc2NyaXB0aGFzaCcgfHwgdHlwZSA9PT0gJ3dpdG5lc3NzY3JpcHRoYXNoJykgJiYgaSA9PT0gbiAtIDEpXG4gICAgKSB7XG4gICAgICBsZXQgcGFyc2VkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSB1dHhvbGliLnNjcmlwdC50b0FTTShwYXJ0KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgcmV0dXJuIFsnJywgLi4ucGFyc2VkLnNwbGl0KCcgJyldLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2NyaXB0UGFydHModHlwZTogc3RyaW5nLCBwYXJ0czogQXJyYXk8QnVmZmVyIHwgbnVtYmVyPik6IFR4Tm9kZVtdIHtcbiAgICByZXR1cm4gcGFydHMubWFwKCh2LCBpKSA9PiB7XG4gICAgICBsZXQgYXNtTm9kZTogVHhOb2RlIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHRoaXMucGFyYW1zLnBhcnNlU2NyaXB0QXNtICYmIEJ1ZmZlci5pc0J1ZmZlcih2KSkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlU2NyaXB0QXNtKHR5cGUsIHYsIGksIHBhcnRzLmxlbmd0aCk7XG4gICAgICAgIGFzbU5vZGUgPSBwYXJzZWQgPyB0aGlzLm5vZGUoJ2FzbScsIHBhcnNlZCkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLm5vZGUoaSwgdGhpcy5wYXJhbXMucGFyc2VTY3JpcHREYXRhID8gdiA6IHVuZGVmaW5lZCwgYXNtTm9kZSA/IFthc21Ob2RlXSA6IHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH1cblxuICBwYXJzZVNjcmlwdChidWZmZXI6IEJ1ZmZlcik6IFR4Tm9kZSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIGxldCBub2RlcztcbiAgICBpZiAoYnVmZmVyLmxlbmd0aCAmJiB0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB1dHhvbGliLmNsYXNzaWZ5LmlucHV0KGJ1ZmZlciwgdHJ1ZSkgPz8gJ3Vua25vd24nO1xuICAgICAgY29uc3QgZGVjb21waWxlZCA9IHV0eG9saWIuc2NyaXB0LmRlY29tcGlsZShidWZmZXIpO1xuICAgICAgaWYgKGRlY29tcGlsZWQpIHtcbiAgICAgICAgbm9kZXMgPSB0aGlzLnBhcnNlU2NyaXB0UGFydHModHlwZSwgZGVjb21waWxlZCk7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gYnVmZmVyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoJ3NjcmlwdCcsIHZhbHVlLCBub2Rlcyk7XG4gIH1cblxuICBwYXJzZVdpdG5lc3Moc2NyaXB0OiBCdWZmZXJbXSk6IFR4Tm9kZSB7XG4gICAgaWYgKHNjcmlwdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3dpdG5lc3MnLCAnW10nKTtcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHV0eG9saWIuY2xhc3NpZnkud2l0bmVzcyhzY3JpcHQsIHRydWUpID8/ICd1bmtub3duJztcbiAgICByZXR1cm4gdGhpcy5ub2RlKCd3aXRuZXNzJywgdHlwZSwgdGhpcy5wYXJhbXMucGFyc2VTY3JpcHREYXRhID8gdGhpcy5wYXJzZVNjcmlwdFBhcnRzKHR5cGUsIHNjcmlwdCkgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcGFyc2VTaWduYXR1cmVDb250ZW50KHNpZ25hdHVyZXM6IChCdWZmZXIgfCAwKVtdKTogVHhOb2RlW10ge1xuICAgIGlmICh0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEpIHtcbiAgICAgIHJldHVybiBzaWduYXR1cmVzLm1hcCgoc2lnLCBpKSA9PlxuICAgICAgICB0aGlzLm5vZGUoXG4gICAgICAgICAgaSxcbiAgICAgICAgICBCdWZmZXIuaXNCdWZmZXIoc2lnKVxuICAgICAgICAgICAgPyBzaWcudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgICAgICA6IHV0eG9saWIuYml0Z28uaXNQbGFjZWhvbGRlclNpZ25hdHVyZShzaWcpXG4gICAgICAgICAgICA/IHNpZyArICcgKHBsYWNlaG9sZGVyKSdcbiAgICAgICAgICAgIDogc2lnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMubm9kZShcbiAgICAgICAgJ2J1ZmZlcnMnLFxuICAgICAgICBzaWduYXR1cmVzXG4gICAgICAgICAgLm1hcCgoc2lnKSA9PlxuICAgICAgICAgICAgQnVmZmVyLmlzQnVmZmVyKHNpZykgPyBgJHtzaWcubGVuZ3RofWAgOiB1dHhvbGliLmJpdGdvLmlzUGxhY2Vob2xkZXJTaWduYXR1cmUoc2lnKSA/ICcocGxhY2Vob2xkZXIpJyA6IHNpZ1xuICAgICAgICAgIClcbiAgICAgICAgICAuam9pbignICcpXG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICBwYXJzZVNpZ25hdHVyZShpbnB1dDogdXR4b2xpYi5UeElucHV0KTogVHhOb2RlIHtcbiAgICBjb25zdCBwYXJzZWQgPSB1dHhvbGliLmJpdGdvLnBhcnNlU2lnbmF0dXJlU2NyaXB0KGlucHV0KTtcbiAgICBsZXQgbm9kZXM6IFR4Tm9kZVtdIHwgdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAocGFyc2VkLnNjcmlwdFR5cGUpIHtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIGNhc2UgJ3AydHInOlxuICAgICAgICBub2RlcyA9IHRoaXMucGFyc2VTaWduYXR1cmVDb250ZW50KHBhcnNlZC5zaWduYXR1cmVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ25hdHVyZScsIHBhcnNlZC5zY3JpcHRUeXBlID8/ICd1bmtub3duJywgbm9kZXMpO1xuICB9XG5cbiAgcGFyc2VJbnMoaW5zOiB1dHhvbGliLlR4SW5wdXRbXSk6IFR4Tm9kZVtdIHtcbiAgICByZXR1cm4gaW5zLm1hcCgoaW5wdXQsIGkpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoaSwgdXR4b2xpYi5iaXRnby5mb3JtYXRPdXRwdXRJZCh1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQoaW5wdXQpKSwgW1xuICAgICAgICB0aGlzLm5vZGUoJ3NlcXVlbmNlJywgdG9CdWZmZXJVSW50MzJCRShpbnB1dC5zZXF1ZW5jZSkpLFxuICAgICAgICB0aGlzLnBhcnNlU2NyaXB0KGlucHV0LnNjcmlwdCksXG4gICAgICAgIHRoaXMucGFyc2VXaXRuZXNzKGlucHV0LndpdG5lc3MpLFxuICAgICAgICB0aGlzLnBhcnNlU2lnbmF0dXJlKGlucHV0KSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcGFyc2VPdXRzKG91dHM6IHV0eG9saWIuVHhPdXRwdXRbXSwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogVHhOb2RlW10ge1xuICAgIHJldHVybiBvdXRzLm1hcCgobywgaSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZShpLCB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChvLnNjcmlwdCwgbmV0d29yayksIFt0aGlzLm5vZGUoYHZhbHVlYCwgby52YWx1ZSAvIDFlOCldKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlKHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbik6IFR4Tm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZSgndHJhbnNhY3Rpb24nLCB0eC5nZXRJZCgpLCBbXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgICdwYXJzZWRBcycsXG4gICAgICAgIGAke3V0eG9saWIuZ2V0TmV0d29ya05hbWUodXR4b2xpYi5nZXRNYWlubmV0KHR4Lm5ldHdvcmspKX0gYCArXG4gICAgICAgICAgYCR7dXR4b2xpYi5pc01haW5uZXQodHgubmV0d29yaykgPyAnbWFpbm5ldCcgOiAndGVzdG5ldCd9YFxuICAgICAgKSxcbiAgICAgIHRoaXMubm9kZSgndmVyc2lvbicsIHR4LnZlcnNpb24pLFxuICAgICAgdGhpcy5ub2RlKCdsb2NrdGltZScsIHR4LmxvY2t0aW1lKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzV2l0bmVzc2VzJywgdHguaGFzV2l0bmVzc2VzKCkpLFxuICAgICAgdGhpcy5ub2RlKCd2c2l6ZScsIGAke3R4LnZpcnR1YWxTaXplKCl9dmJ5dGVzICgke3R4LndlaWdodCgpfXd1KWApLFxuICAgICAgdGhpcy5ub2RlKGBpbnB1dHNgLCB0eC5pbnMubGVuZ3RoLCB0aGlzLnBhcnNlSW5zKHR4LmlucykpLFxuICAgICAgdGhpcy5ub2RlKGBvdXRwdXRzYCwgdHgub3V0cy5sZW5ndGgsIHRoaXMucGFyc2VPdXRzKHR4Lm91dHMsIHR4Lm5ldHdvcmspKSxcbiAgICBdKTtcbiAgfVxufVxuIl19
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bitgo/utxo-bin",
|
|
3
|
+
"description": "Command-line utility for BitGo UTXO transactions",
|
|
4
|
+
"version": "1.0.0-rc.0",
|
|
5
|
+
"files": [
|
|
6
|
+
"dist/**/*"
|
|
7
|
+
],
|
|
8
|
+
"keywords": [
|
|
9
|
+
"bitgo",
|
|
10
|
+
"utxo",
|
|
11
|
+
"bitcoinjs",
|
|
12
|
+
"bitcoin"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"prepare": "npm run build",
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"lint": "eslint --quiet .",
|
|
18
|
+
"unit-test": "mocha",
|
|
19
|
+
"fmt": "prettier --write '{bin,src,test}/**/*.{ts,js}'"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "https://github.com/BitGo/BitGoJS.git",
|
|
24
|
+
"directory": "modules/utxo-bin"
|
|
25
|
+
},
|
|
26
|
+
"bin": "./dist/bin/index.js",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@bitgo/utxo-lib": "^2.2.1-rc.10",
|
|
29
|
+
"archy": "^1.0.0",
|
|
30
|
+
"chalk": "4",
|
|
31
|
+
"yargs": "^17.3.1"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/archy": "^0.0.32",
|
|
35
|
+
"@types/mocha": "^9.0.0",
|
|
36
|
+
"@types/yargs": "^17.0.8",
|
|
37
|
+
"mocha": "^9.1.4",
|
|
38
|
+
"ts-node": "^10.4.0",
|
|
39
|
+
"typescript": "^4.5.4"
|
|
40
|
+
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"license": "MIT",
|
|
45
|
+
"gitHead": "cc820eca80da39bf567f218143d7972b632bb937"
|
|
46
|
+
}
|