@bitgo/utxo-bin 2.11.0 → 2.12.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/README.md +1 -1
- package/dist/src/InputParser.d.ts +44 -0
- package/dist/src/InputParser.d.ts.map +1 -0
- package/dist/src/InputParser.js +247 -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 +26 -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/TxParser.d.ts +9 -6
- package/dist/src/TxParser.d.ts.map +1 -1
- package/dist/src/TxParser.js +21 -23
- package/dist/src/commands.d.ts +4 -1
- package/dist/src/commands.d.ts.map +1 -1
- package/dist/src/commands.js +53 -13
- 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 +4 -3
- package/dist/src/parseUnknown.d.ts +3 -0
- package/dist/src/parseUnknown.d.ts.map +1 -0
- package/dist/src/parseUnknown.js +50 -0
- package/dist/test/fixtures.d.ts +24 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +88 -0
- package/dist/test/parseAddress.d.ts +10 -0
- package/dist/test/parseAddress.d.ts.map +1 -0
- package/dist/test/parseAddress.js +85 -0
- package/dist/test/parseTransaction.d.ts +2 -0
- package/dist/test/parseTransaction.d.ts.map +1 -0
- package/dist/test/parseTransaction.js +63 -0
- package/dist/tsconfig.tsbuildinfo +1 -5401
- package/package.json +6 -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/fetch.js
CHANGED
|
@@ -4,6 +4,14 @@ exports.fetchOutputSpends = exports.fetchPrevOutputSpends = exports.fetchPrevOut
|
|
|
4
4
|
const utxolib = require("@bitgo/utxo-lib");
|
|
5
5
|
const blockapis = require("@bitgo/blockapis");
|
|
6
6
|
const statics_1 = require("@bitgo/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTJDO0FBQzNDLDhDQUE4QztBQUM5Qyw0Q0FBaUQ7QUFJakQsU0FBUyxjQUFjLENBQUMsRUFBWTtJQUNsQyxJQUFJLEVBQUUsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtRQUMvQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDaEU7U0FBTTtRQUNMLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyRTtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxPQUF3QjtJQUMzQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXBELDhGQUE4RjtJQUM5RixRQUFRLFdBQVcsRUFBRTtRQUNuQixLQUFLLGFBQWE7WUFDaEIsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLG9CQUFvQjtZQUN2QixPQUFPLE1BQU0sQ0FBQztLQUNqQjtJQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxlQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUM5QyxJQUFJLFlBQVksa0JBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3hGLENBQUM7SUFDRixRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDdEIsS0FBSyxDQUFDO1lBQ0osTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUM7WUFDSixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFdBQVcsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3hFO0FBQ0gsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLFVBQXNCLEVBQUUsT0FBd0I7SUFDOUQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxNQUFNO1lBQ1QsT0FBTyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFO1lBQ0UsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsVUFBc0IsRUFDdEIsSUFBWSxFQUNaLE9BQXdCO0lBRXhCLE9BQU8sTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFORCxrREFNQztBQUVNLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsVUFBc0IsRUFDdEIsSUFBWSxFQUNaLE9BQXdCO0lBRXhCLE9BQU8sTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFORCx3REFNQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxVQUFzQixFQUFFLEVBQVk7SUFDekUsT0FBTyxDQUFDLE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLEdBQUcsQ0FBQztRQUNKLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztLQUN2QixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUFMRCw0Q0FLQztBQUVNLEtBQUssVUFBVSxxQkFBcUIsQ0FDekMsVUFBc0IsRUFDdEIsRUFBa0U7SUFFbEUsT0FBTyxNQUFNLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBTEQsc0RBS0M7QUFFTSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLFVBQXNCLEVBQ3RCLEVBQXlDO0lBRXpDLElBQUk7UUFDRixPQUFPLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDOUU7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sRUFBRSxDQUFDO0tBQ1g7QUFDSCxDQUFDO0FBVEQsOENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgKiBhcyBibG9ja2FwaXMgZnJvbSAnQGJpdGdvL2Jsb2NrYXBpcyc7XG5pbXBvcnQgeyBjb2lucywgVXR4b0NvaW4gfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGJpdGdvL2Jsb2NrYXBpcyc7XG5pbXBvcnQgeyBQYXJzZXJUeCB9IGZyb20gJy4vUGFyc2VyVHgnO1xuXG5mdW5jdGlvbiBnZXRUeE91dFBvaW50cyh0eDogUGFyc2VyVHgpOiB1dHhvbGliLmJpdGdvLlR4T3V0UG9pbnRbXSB7XG4gIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJuIHR4Lmlucy5tYXAoKGkpID0+IHV0eG9saWIuYml0Z28uZ2V0T3V0cHV0SWRGb3JJbnB1dChpKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHR4LnR4SW5wdXRzLm1hcCgoaSkgPT4gdXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KGkpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRDb2luTmFtZShuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBzdHJpbmcge1xuICBjb25zdCBuZXR3b3JrTmFtZSA9IHV0eG9saWIuZ2V0TmV0d29ya05hbWUobmV0d29yayk7XG5cbiAgLy8gdGhlIGJpdGNvaW5jYXNoIG5ldHdvcmsgYWN0dWFsbHkgaGFzIHR3byBjb2luczogYmNoIGFuZCBiY2hhIC0gaGFyZGNvZGUgYmNoIGJ5IGRlZmF1bHQgaGVyZVxuICBzd2l0Y2ggKG5ldHdvcmtOYW1lKSB7XG4gICAgY2FzZSAnYml0Y29pbmNhc2gnOlxuICAgICAgcmV0dXJuICdiY2gnO1xuICAgIGNhc2UgJ2JpdGNvaW5jYXNoVGVzdG5ldCc6XG4gICAgICByZXR1cm4gJ3RiY2gnO1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlcyA9IFsuLi5jb2luc10uZmxhdE1hcCgoWywgY29pbl0pID0+XG4gICAgY29pbiBpbnN0YW5jZW9mIFV0eG9Db2luICYmIGNvaW4ubmV0d29yay51dHhvbGliTmFtZSA9PT0gbmV0d29ya05hbWUgPyBbY29pbi5uYW1lXSA6IFtdXG4gICk7XG4gIHN3aXRjaCAobWF0Y2hlcy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGNvaW4gZm9yIG5ldHdvcmsgJHtuZXR3b3JrTmFtZX1gKTtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gbWF0Y2hlc1swXTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtb3JlIHRoYW4gb25lIGNvaW4gZm9yICR7bmV0d29ya05hbWV9OiAke21hdGNoZXN9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXBpKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IGJsb2NrYXBpcy5VdHhvQXBpIHtcbiAgY29uc3QgY29pbk5hbWUgPSBnZXRDb2luTmFtZShuZXR3b3JrKTtcbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ2J0Yyc6XG4gICAgY2FzZSAndGJ0Yyc6XG4gICAgICByZXR1cm4gYmxvY2thcGlzLkJsb2Nrc3RyZWFtQXBpLmZvckNvaW4oY29pbk5hbWUsIHsgaHR0cENsaWVudCB9KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGJsb2NrYXBpcy5CbG9ja2NoYWlyQXBpLmZvckNvaW4oY29pbk5hbWUsIHsgaHR0cENsaWVudCB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbkhleChcbiAgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgdHhpZDogc3RyaW5nLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBhd2FpdCBnZXRBcGkoaHR0cENsaWVudCwgbmV0d29yaykuZ2V0VHJhbnNhY3Rpb25IZXgodHhpZCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uU3RhdHVzKFxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICB0eGlkOiBzdHJpbmcsXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29ya1xuKTogUHJvbWlzZTxibG9ja2FwaXMuVHJhbnNhY3Rpb25TdGF0dXM+IHtcbiAgcmV0dXJuIGF3YWl0IGdldEFwaShodHRwQ2xpZW50LCBuZXR3b3JrKS5nZXRUcmFuc2FjdGlvblN0YXR1cyh0eGlkKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoUHJldk91dHB1dHMoaHR0cENsaWVudDogSHR0cENsaWVudCwgdHg6IFBhcnNlclR4KTogUHJvbWlzZTx1dHhvbGliLlR4T3V0cHV0PGJpZ2ludD5bXT4ge1xuICByZXR1cm4gKGF3YWl0IGJsb2NrYXBpcy5mZXRjaElucHV0cyhnZXRUeE91dFBvaW50cyh0eCksIGdldEFwaShodHRwQ2xpZW50LCB0eC5uZXR3b3JrKSwgdHgubmV0d29yaykpLm1hcCgodikgPT4gKHtcbiAgICAuLi52LFxuICAgIHZhbHVlOiBCaWdJbnQodi52YWx1ZSksXG4gIH0pKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoUHJldk91dHB1dFNwZW5kcyhcbiAgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD4gfCB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0XG4pOiBQcm9taXNlPGJsb2NrYXBpcy5PdXRwdXRTcGVuZFtdPiB7XG4gIHJldHVybiBhd2FpdCBibG9ja2FwaXMuZmV0Y2hUcmFuc2FjdGlvblNwZW5kcyhnZXRUeE91dFBvaW50cyh0eCksIGdldEFwaShodHRwQ2xpZW50LCB0eC5uZXR3b3JrKSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaE91dHB1dFNwZW5kcyhcbiAgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD5cbik6IFByb21pc2U8YmxvY2thcGlzLk91dHB1dFNwZW5kW10+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QXBpKGh0dHBDbGllbnQsIHR4Lm5ldHdvcmspLmdldFRyYW5zYWN0aW9uU3BlbmRzKHR4LmdldElkKCkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
|
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,CAqCR"}
|
package/dist/src/format.js
CHANGED
|
@@ -5,7 +5,7 @@ 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() } = {}) {
|
|
@@ -23,6 +23,7 @@ function formatTree(n, { hide = hideDefault, chalk = new chalk_1.Instance() } =
|
|
|
23
23
|
case 'boolean':
|
|
24
24
|
case 'number':
|
|
25
25
|
case 'string':
|
|
26
|
+
case 'bigint':
|
|
26
27
|
return String(v);
|
|
27
28
|
case 'object':
|
|
28
29
|
if (v === null) {
|
|
@@ -32,7 +33,7 @@ function formatTree(n, { hide = hideDefault, chalk = new chalk_1.Instance() } =
|
|
|
32
33
|
return v.length === 0 ? '[]' : v.toString('hex');
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
|
-
throw new Error(`could not get label from value`);
|
|
36
|
+
throw new Error(`could not get label from value ${typeof v}`);
|
|
36
37
|
}
|
|
37
38
|
function toArchy(n) {
|
|
38
39
|
return {
|
|
@@ -43,4 +44,4 @@ function formatTree(n, { hide = hideDefault, chalk = new chalk_1.Instance() } =
|
|
|
43
44
|
return archy(toArchy(n));
|
|
44
45
|
}
|
|
45
46
|
exports.formatTree = formatTree;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBd0M7QUFDeEMsK0JBQStCO0FBRy9CLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLFNBQWdCLFNBQVMsQ0FBQyxDQUFrQjtJQUMxQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsOEJBRUM7QUFFRCxTQUFnQixVQUFVLENBQ3hCLENBQWEsRUFDYixFQUFFLElBQUksR0FBRyxXQUFXLEVBQUUsS0FBSyxHQUFHLElBQUksZ0JBQVEsRUFBRSxLQUF5QyxFQUFFO0lBRXZGLFNBQVMsUUFBUSxDQUFDLEtBQXNCLEVBQUUsQ0FBVztRQUNuRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjtRQUNELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FBQyxDQUFrQjtRQUMzQyxRQUFRLE9BQU8sQ0FBQyxFQUFFO1lBQ2hCLEtBQUssV0FBVztnQkFDZCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDZCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEI7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN0QixPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2xEO1NBQ0o7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVMsT0FBTyxDQUFDLENBQWE7UUFDNUIsT0FBTztZQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2xHLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQXhDRCxnQ0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFsaywgSW5zdGFuY2UgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyBhcmNoeSBmcm9tICdhcmNoeSc7XG5pbXBvcnQgeyBQYXJzZXJOb2RlLCBQYXJzZXJOb2RlVmFsdWUgfSBmcm9tICcuL1BhcnNlcic7XG5cbmNvbnN0IGhpZGVEZWZhdWx0ID0gWydwdWJrZXlzJywgJ3NlcXVlbmNlJywgJ2xvY2t0aW1lJywgJ3NjcmlwdFNpZycsICd3aXRuZXNzJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTYXQodjogbnVtYmVyIHwgYmlnaW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIChOdW1iZXIodikgLyAxZTgpLnRvRml4ZWQoOCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUcmVlKFxuICBuOiBQYXJzZXJOb2RlLFxuICB7IGhpZGUgPSBoaWRlRGVmYXVsdCwgY2hhbGsgPSBuZXcgSW5zdGFuY2UoKSB9OiB7IGhpZGU/OiBzdHJpbmdbXTsgY2hhbGs/OiBDaGFsayB9ID0ge31cbik6IHN0cmluZyB7XG4gIGZ1bmN0aW9uIGdldExhYmVsKGxhYmVsOiBzdHJpbmcgfCBudW1iZXIsIHY/OiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcnIgPSBbY2hhbGsuYm9sZChsYWJlbCldO1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFyci5wdXNoKFN0cmluZyh2KSk7XG4gICAgfVxuICAgIHJldHVybiBhcnIuam9pbignOiAnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExhYmVsRnJvbVZhbHVlKHY6IFBhcnNlck5vZGVWYWx1ZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoICh0eXBlb2Ygdikge1xuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICdiaWdpbnQnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKHYgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodikpIHtcbiAgICAgICAgICByZXR1cm4gdi5sZW5ndGggPT09IDAgPyAnW10nIDogdi50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZ2V0IGxhYmVsIGZyb20gdmFsdWUgJHt0eXBlb2Ygdn1gKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvQXJjaHkobjogUGFyc2VyTm9kZSk6IGFyY2h5LkRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogZ2V0TGFiZWwobi5sYWJlbCwgZ2V0TGFiZWxGcm9tVmFsdWUobi52YWx1ZSkpLFxuICAgICAgbm9kZXM6IG4ubm9kZXMgPyBuLm5vZGVzLmZsYXRNYXAoKGUpID0+IChoaWRlLmluY2x1ZGVzKGUubGFiZWwpID8gW10gOiBbdG9BcmNoeShlKV0pKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGFyY2h5KHRvQXJjaHkobikpO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseUnknown.d.ts","sourceRoot":"","sources":["../../src/parseUnknown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,MAAM,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAgBlF,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,UAAU,CAwCxF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseUnknown = void 0;
|
|
4
|
+
const Parser_1 = require("./Parser");
|
|
5
|
+
function omitObject(v) {
|
|
6
|
+
return typeof v === 'function';
|
|
7
|
+
}
|
|
8
|
+
function getPrototypeKeys(obj) {
|
|
9
|
+
const keys = [];
|
|
10
|
+
let proto = obj;
|
|
11
|
+
while (proto && proto !== Object.prototype) {
|
|
12
|
+
keys.push(...Object.getOwnPropertyNames(proto));
|
|
13
|
+
proto = Object.getPrototypeOf(proto);
|
|
14
|
+
}
|
|
15
|
+
return keys;
|
|
16
|
+
}
|
|
17
|
+
function parseUnknown(p, label, obj) {
|
|
18
|
+
if (Parser_1.isParserNodeValue(obj)) {
|
|
19
|
+
if (typeof obj === 'string') {
|
|
20
|
+
obj = JSON.stringify(obj);
|
|
21
|
+
}
|
|
22
|
+
return p.node(label, obj);
|
|
23
|
+
}
|
|
24
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
25
|
+
throw new Error(`expected object, got ${typeof obj}`);
|
|
26
|
+
}
|
|
27
|
+
if (Array.isArray(obj)) {
|
|
28
|
+
return p.node(label, `length: ${obj.length}`, obj.filter((v) => !omitObject(v)).map((v, i) => parseUnknown(p, i, v)));
|
|
29
|
+
}
|
|
30
|
+
const allKeys = getPrototypeKeys(obj);
|
|
31
|
+
if (allKeys.length > 0) {
|
|
32
|
+
return p.node(label, undefined, allKeys.flatMap((k) => {
|
|
33
|
+
const objAsRecord = obj;
|
|
34
|
+
if (omitObject(objAsRecord[k])) {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
return [parseUnknown(p, k, objAsRecord[k])];
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
return [p.node(k, `Error: ${e.message}}`)];
|
|
42
|
+
}
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return p.node(label, '{}');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.parseUnknown = parseUnknown;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VVbmtub3duLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnNlVW5rbm93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBa0Y7QUFFbEYsU0FBUyxVQUFVLENBQUMsQ0FBVTtJQUM1QixPQUFPLE9BQU8sQ0FBQyxLQUFLLFVBQVUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFZO0lBQ3BDLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztJQUMxQixJQUFJLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDaEIsT0FBTyxLQUFLLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hELEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLENBQVMsRUFBRSxLQUFzQixFQUFFLEdBQVk7SUFDMUUsSUFBSSwwQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMzQixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQjtRQUNELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBc0IsQ0FBQyxDQUFDO0tBQzlDO0lBRUQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDdkQ7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDdEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNYLEtBQUssRUFDTCxXQUFXLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFDdkIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0tBQ0g7SUFFRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDWCxLQUFLLEVBQ0wsU0FBUyxFQUNULE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRyxHQUE4QixDQUFDO1lBQ25ELElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM5QixPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsSUFBSTtnQkFDRixPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3QztZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDNUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0tBQ0g7U0FBTTtRQUNMLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDNUI7QUFDSCxDQUFDO0FBeENELG9DQXdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGFyc2VyTm9kZVZhbHVlLCBQYXJzZXIsIFBhcnNlck5vZGUsIFBhcnNlck5vZGVWYWx1ZSB9IGZyb20gJy4vUGFyc2VyJztcblxuZnVuY3Rpb24gb21pdE9iamVjdCh2OiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlS2V5cyhvYmo6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBwcm90byA9IG9iajtcbiAgd2hpbGUgKHByb3RvICYmIHByb3RvICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAga2V5cy5wdXNoKC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBrZXlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVbmtub3duKHA6IFBhcnNlciwgbGFiZWw6IHN0cmluZyB8IG51bWJlciwgb2JqOiB1bmtub3duKTogUGFyc2VyTm9kZSB7XG4gIGlmIChpc1BhcnNlck5vZGVWYWx1ZShvYmopKSB7XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICBvYmogPSBKU09OLnN0cmluZ2lmeShvYmopO1xuICAgIH1cbiAgICByZXR1cm4gcC5ub2RlKGxhYmVsLCBvYmogYXMgUGFyc2VyTm9kZVZhbHVlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIG9iamVjdCwgZ290ICR7dHlwZW9mIG9ian1gKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICByZXR1cm4gcC5ub2RlKFxuICAgICAgbGFiZWwsXG4gICAgICBgbGVuZ3RoOiAke29iai5sZW5ndGh9YCxcbiAgICAgIG9iai5maWx0ZXIoKHYpID0+ICFvbWl0T2JqZWN0KHYpKS5tYXAoKHYsIGkpID0+IHBhcnNlVW5rbm93bihwLCBpLCB2KSlcbiAgICApO1xuICB9XG5cbiAgY29uc3QgYWxsS2V5cyA9IGdldFByb3RvdHlwZUtleXMob2JqKTtcbiAgaWYgKGFsbEtleXMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwLm5vZGUoXG4gICAgICBsYWJlbCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGFsbEtleXMuZmxhdE1hcCgoaykgPT4ge1xuICAgICAgICBjb25zdCBvYmpBc1JlY29yZCA9IG9iaiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgaWYgKG9taXRPYmplY3Qob2JqQXNSZWNvcmRba10pKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIFtwYXJzZVVua25vd24ocCwgaywgb2JqQXNSZWNvcmRba10pXTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiBbcC5ub2RlKGssIGBFcnJvcjogJHtlLm1lc3NhZ2V9fWApXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwLm5vZGUobGFiZWwsICd7fScpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo/utxo-lib';
|
|
2
|
+
import { ParserNode } from '../src/Parser';
|
|
3
|
+
export declare function formatTreeNoColor(n: ParserNode, { showAll }: {
|
|
4
|
+
showAll: boolean;
|
|
5
|
+
}): string;
|
|
6
|
+
export declare type ParsedFixture = {
|
|
7
|
+
transaction: utxolib.bitgo.UtxoTransaction<bigint>;
|
|
8
|
+
prevOutputs: utxolib.TxOutput<bigint>[];
|
|
9
|
+
} | {
|
|
10
|
+
transaction: utxolib.bitgo.UtxoPsbt;
|
|
11
|
+
prevOutputs: undefined;
|
|
12
|
+
};
|
|
13
|
+
declare type FixtureParams = {
|
|
14
|
+
fixtureType: 'psbtUnsigned' | 'psbtHalfSigned' | 'psbtFullSigned' | 'networkFullSigned';
|
|
15
|
+
scriptType: utxolib.bitgo.outputScripts.ScriptType2Of3;
|
|
16
|
+
spendType?: 'keyPath' | 'scriptPath';
|
|
17
|
+
};
|
|
18
|
+
export declare function getPsbt(network: utxolib.Network, params: FixtureParams, { writeFixture }?: {
|
|
19
|
+
writeFixture?: string;
|
|
20
|
+
}): Promise<ParsedFixture>;
|
|
21
|
+
export declare function getTransactionWithSpendType(network: utxolib.Network, params: FixtureParams): Promise<ParsedFixture>;
|
|
22
|
+
export declare function getFixtureString(path: string, defaultValue: string): Promise<string>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../test/fixtures.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAE1F;AAED,oBAAY,aAAa,GACrB;IACE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACnD,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;CACzC,GACD;IACE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;IACpC,WAAW,EAAE,SAAS,CAAC;CACxB,CAAC;AAEN,aAAK,aAAa,GAAG;IACnB,WAAW,EAAE,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;IACxF,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC;IACvD,SAAS,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;CACtC,CAAC;AAIF,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,MAAM,EAAE,aAAa,EACrB,EAAE,YAAY,EAAE,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC,aAAa,CAAC,CAmCxB;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CAsCxB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU1F"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFixtureString = exports.getTransactionWithSpendType = exports.getPsbt = exports.formatTreeNoColor = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const chalk_1 = require("chalk");
|
|
6
|
+
const utxolib = require("@bitgo/utxo-lib");
|
|
7
|
+
const format_1 = require("../src/format");
|
|
8
|
+
function formatTreeNoColor(n, { showAll }) {
|
|
9
|
+
return format_1.formatTree(n, { hide: showAll ? [] : undefined, chalk: new chalk_1.Instance({ level: 0 }) });
|
|
10
|
+
}
|
|
11
|
+
exports.formatTreeNoColor = formatTreeNoColor;
|
|
12
|
+
const walletKeys = utxolib.testutil.getDefaultWalletKeys();
|
|
13
|
+
async function getPsbt(network, params, { writeFixture } = {}) {
|
|
14
|
+
const inputs = [
|
|
15
|
+
{ scriptType: params.spendType === 'keyPath' ? 'taprootKeyPathSpend' : params.scriptType, value: BigInt(10000) },
|
|
16
|
+
];
|
|
17
|
+
const outputs = [{ scriptType: params.scriptType, value: BigInt(9000) }];
|
|
18
|
+
let stage = params.fixtureType;
|
|
19
|
+
if (stage.startsWith('psbt')) {
|
|
20
|
+
stage = stage.slice('psbt'.length).toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
if (stage !== 'unsigned' && stage !== 'halfsigned' && stage !== 'fullsigned') {
|
|
23
|
+
throw new Error(`invalid stage ${stage}`);
|
|
24
|
+
}
|
|
25
|
+
if (params.spendType === 'keyPath' && writeFixture === undefined) {
|
|
26
|
+
// because we currently cannot create deterministic signatures for taprootKeyPathSpend, we
|
|
27
|
+
// store a copy in fixtures/psbt and use that instead of creating a new one
|
|
28
|
+
const filename = `test/fixtures/psbt/${params.scriptType}.${params.spendType}.${stage}.json`;
|
|
29
|
+
try {
|
|
30
|
+
const psbtHex = JSON.parse(await fs_1.promises.readFile(filename, 'utf8'));
|
|
31
|
+
const transaction = utxolib.bitgo.createPsbtFromHex(psbtHex, network);
|
|
32
|
+
return { transaction, prevOutputs: undefined };
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
if (e.code === 'ENOENT') {
|
|
36
|
+
return await getPsbt(network, params, { writeFixture: filename });
|
|
37
|
+
}
|
|
38
|
+
throw e;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const transaction = utxolib.testutil.constructPsbt(inputs, outputs, network, walletKeys, stage);
|
|
42
|
+
if (writeFixture) {
|
|
43
|
+
await fs_1.promises.writeFile(writeFixture, JSON.stringify(transaction.toHex()), 'utf8');
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
transaction,
|
|
47
|
+
prevOutputs: undefined,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
exports.getPsbt = getPsbt;
|
|
51
|
+
async function getTransactionWithSpendType(network, params) {
|
|
52
|
+
if (params.fixtureType !== 'networkFullSigned') {
|
|
53
|
+
return await getPsbt(network, params);
|
|
54
|
+
}
|
|
55
|
+
if (params.scriptType === 'p2trMusig2' && !params.spendType) {
|
|
56
|
+
throw new Error('p2trMusig2 requires params');
|
|
57
|
+
}
|
|
58
|
+
const filename = `spend_${params.scriptType}${params.spendType ? `${params.spendType}` : ''}.json`;
|
|
59
|
+
const f = await JSON.parse(await fs_1.promises.readFile(`../utxo-lib/test/integration_local_rpc/fixtures/${utxolib.getNetworkName(network)}/v1/${filename}`, 'utf8'));
|
|
60
|
+
function getPrevOut(i) {
|
|
61
|
+
for (const t of inputTxs) {
|
|
62
|
+
if (t.getHash().equals(i.hash) && i.index in t.outs) {
|
|
63
|
+
return t.outs[i.index];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`missing input ${utxolib.bitgo.formatOutputId(utxolib.bitgo.getOutputIdForInput(i))}`);
|
|
67
|
+
}
|
|
68
|
+
const inputTxs = f.inputs.map((i) => utxolib.bitgo.createTransactionFromBuffer(Buffer.from(i.hex, 'hex'), network, { amountType: 'bigint' }));
|
|
69
|
+
const tx = utxolib.bitgo.createTransactionFromBuffer(Buffer.from(f.transaction.hex, 'hex'), network, {
|
|
70
|
+
amountType: 'bigint',
|
|
71
|
+
});
|
|
72
|
+
return { transaction: tx, prevOutputs: tx.ins.map((i) => getPrevOut(i)) };
|
|
73
|
+
}
|
|
74
|
+
exports.getTransactionWithSpendType = getTransactionWithSpendType;
|
|
75
|
+
async function getFixtureString(path, defaultValue) {
|
|
76
|
+
try {
|
|
77
|
+
return await fs_1.promises.readFile(path, 'utf8');
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
if (e.code === 'ENOENT') {
|
|
81
|
+
await fs_1.promises.writeFile(path, defaultValue, 'utf8');
|
|
82
|
+
throw new Error(`wrote default value for ${path}`);
|
|
83
|
+
}
|
|
84
|
+
throw e;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.getFixtureString = getFixtureString;
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L2ZpeHR1cmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUFvQztBQUVwQyxpQ0FBaUM7QUFDakMsMkNBQTJDO0FBRTNDLDBDQUEyQztBQUczQyxTQUFnQixpQkFBaUIsQ0FBQyxDQUFhLEVBQUUsRUFBRSxPQUFPLEVBQXdCO0lBQ2hGLE9BQU8sbUJBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxnQkFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlGLENBQUM7QUFGRCw4Q0FFQztBQWtCRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUM7QUFFcEQsS0FBSyxVQUFVLE9BQU8sQ0FDM0IsT0FBd0IsRUFDeEIsTUFBcUIsRUFDckIsRUFBRSxZQUFZLEtBQWdDLEVBQUU7SUFFaEQsTUFBTSxNQUFNLEdBQTZCO1FBQ3ZDLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQU0sQ0FBQyxFQUFFO0tBQ2xILENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUUsSUFBSSxLQUFLLEdBQVcsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUN2QyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFD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O1FBQ1YsSUFBSyxDQUFTLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsTUFBTSxDQUFDLENBQUM7S0FDVDtBQUNILENBQUM7QUFWRCw0Q0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuXG5pbXBvcnQgeyBJbnN0YW5jZSB9IGZyb20gJ2NoYWxrJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgZm9ybWF0VHJlZSB9IGZyb20gJy4uL3NyYy9mb3JtYXQnO1xuaW1wb3J0IHsgUGFyc2VyTm9kZSB9IGZyb20gJy4uL3NyYy9QYXJzZXInO1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VHJlZU5vQ29sb3IobjogUGFyc2VyTm9kZSwgeyBzaG93QWxsIH06IHsgc2hvd0FsbDogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRyZWUobiwgeyBoaWRlOiBzaG93QWxsID8gW10gOiB1bmRlZmluZWQsIGNoYWxrOiBuZXcgSW5zdGFuY2UoeyBsZXZlbDogMCB9KSB9KTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkRml4dHVyZSA9XG4gIHwge1xuICAgICAgdHJhbnNhY3Rpb246IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD47XG4gICAgICBwcmV2T3V0cHV0czogdXR4b2xpYi5UeE91dHB1dDxiaWdpbnQ+W107XG4gICAgfVxuICB8IHtcbiAgICAgIHRyYW5zYWN0aW9uOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0O1xuICAgICAgcHJldk91dHB1dHM6IHVuZGVmaW5lZDtcbiAgICB9O1xuXG50eXBlIEZpeHR1cmVQYXJhbXMgPSB7XG4gIGZpeHR1cmVUeXBlOiAncHNidFVuc2lnbmVkJyB8ICdwc2J0SGFsZlNpZ25lZCcgfCAncHNidEZ1bGxTaWduZWQnIHwgJ25ldHdvcmtGdWxsU2lnbmVkJztcbiAgc2NyaXB0VHlwZTogdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzO1xuICBzcGVuZFR5cGU/OiAna2V5UGF0aCcgfCAnc2NyaXB0UGF0aCc7XG59O1xuXG5jb25zdCB3YWxsZXRLZXlzID0gdXR4b2xpYi50ZXN0dXRpbC5nZXREZWZhdWx0V2FsbGV0S2V5cygpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UHNidChcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLFxuICBwYXJhbXM6IEZpeHR1cmVQYXJhbXMsXG4gIHsgd3JpdGVGaXh0dXJlIH06IHsgd3JpdGVGaXh0dXJlPzogc3RyaW5nIH0gPSB7fVxuKTogUHJvbWlzZTxQYXJzZWRGaXh0dXJlPiB7XG4gIGNvbnN0IGlucHV0czogdXR4b2xpYi50ZXN0dXRpbC5JbnB1dFtdID0gW1xuICAgIHsgc2NyaXB0VHlwZTogcGFyYW1zLnNwZW5kVHlwZSA9PT0gJ2tleVBhdGgnID8gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnIDogcGFyYW1zLnNjcmlwdFR5cGUsIHZhbHVlOiBCaWdJbnQoMTBfMDAwKSB9LFxuICBdO1xuICBjb25zdCBvdXRwdXRzID0gW3sgc2NyaXB0VHlwZTogcGFyYW1zLnNjcmlwdFR5cGUsIHZhbHVlOiBCaWdJbnQoOV8wMDApIH1dO1xuICBsZXQgc3RhZ2U6IHN0cmluZyA9IHBhcmFtcy5maXh0dXJlVHlwZTtcbiAgaWYgKHN0YWdlLnN0YXJ0c1dpdGgoJ3BzYnQnKSkge1xuICAgIHN0YWdlID0gc3RhZ2Uuc2xpY2UoJ3BzYnQnLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcbiAgfVxuICBpZiAoc3RhZ2UgIT09ICd1bnNpZ25lZCcgJiYgc3RhZ2UgIT09ICdoYWxmc2lnbmVkJyAmJiBzdGFnZSAhPT0gJ2Z1bGxzaWduZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHN0YWdlICR7c3RhZ2V9YCk7XG4gIH1cbiAgaWYgKHBhcmFtcy5zcGVuZFR5cGUgPT09ICdrZXlQYXRoJyAmJiB3cml0ZUZpeHR1cmUgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIGJlY2F1c2Ugd2UgY3VycmVudGx5IGNhbm5vdCBjcmVhdGUgZGV0ZXJtaW5pc3RpYyBzaWduYXR1cmVzIGZvciB0YXByb290S2V5UGF0aFNwZW5kLCB3ZVxuICAgIC8vIHN0b3JlIGEgY29weSBpbiBmaXh0dXJlcy9wc2J0IGFuZCB1c2UgdGhhdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZVxuICAgIGNvbnN0IGZpbGVuYW1lID0gYHRlc3QvZml4dHVyZXMvcHNidC8ke3BhcmFtcy5zY3JpcHRUeXBlfS4ke3BhcmFtcy5zcGVuZFR5cGV9LiR7c3RhZ2V9Lmpzb25gO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwc2J0SGV4ID0gSlNPTi5wYXJzZShhd2FpdCBmcy5yZWFkRmlsZShmaWxlbmFtZSwgJ3V0ZjgnKSk7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZyb21IZXgocHNidEhleCwgbmV0d29yayk7XG4gICAgICByZXR1cm4geyB0cmFuc2FjdGlvbiwgcHJldk91dHB1dHM6IHVuZGVmaW5lZCB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBnZXRQc2J0KG5ldHdvcmssIHBhcmFtcywgeyB3cml0ZUZpeHR1cmU6IGZpbGVuYW1lIH0pO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdHJhbnNhY3Rpb24gPSB1dHhvbGliLnRlc3R1dGlsLmNvbnN0cnVjdFBzYnQoaW5wdXRzLCBvdXRwdXRzLCBuZXR3b3JrLCB3YWxsZXRLZXlzLCBzdGFnZSk7XG4gIGlmICh3cml0ZUZpeHR1cmUpIHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUod3JpdGVGaXh0dXJlLCBKU09OLnN0cmluZ2lmeSh0cmFuc2FjdGlvbi50b0hleCgpKSwgJ3V0ZjgnKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHRyYW5zYWN0aW9uLFxuICAgIHByZXZPdXRwdXRzOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbldpdGhTcGVuZFR5cGUoXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayxcbiAgcGFyYW1zOiBGaXh0dXJlUGFyYW1zXG4pOiBQcm9taXNlPFBhcnNlZEZpeHR1cmU+IHtcbiAgaWYgKHBhcmFtcy5maXh0dXJlVHlwZSAhPT0gJ25ldHdvcmtGdWxsU2lnbmVkJykge1xuICAgIHJldHVybiBhd2FpdCBnZXRQc2J0KG5ldHdvcmssIHBhcmFtcyk7XG4gIH1cblxuICBpZiAocGFyYW1zLnNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJyAmJiAhcGFyYW1zLnNwZW5kVHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncDJ0ck11c2lnMiByZXF1aXJlcyBwYXJhbXMnKTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVuYW1lID0gYHNwZW5kXyR7cGFyYW1zLnNjcmlwdFR5cGV9JHtwYXJhbXMuc3BlbmRUeXBlID8gYCR7cGFyYW1zLnNwZW5kVHlwZX1gIDogJyd9Lmpzb25gO1xuICB0eXBlIEZpeHR1cmUgPSB7XG4gICAgdHJhbnNhY3Rpb246IHsgaGV4OiBzdHJpbmcgfTtcbiAgICBpbnB1dHM6IHsgaGV4OiBzdHJpbmcgfVtdO1xuICB9O1xuXG4gIGNvbnN0IGY6IEZpeHR1cmUgPSBhd2FpdCBKU09OLnBhcnNlKFxuICAgIGF3YWl0IGZzLnJlYWRGaWxlKFxuICAgICAgYC4uL3V0eG8tbGliL3Rlc3QvaW50ZWdyYXRpb25fbG9jYWxfcnBjL2ZpeHR1cmVzLyR7dXR4b2xpYi5nZXROZXR3b3JrTmFtZShuZXR3b3JrKX0vdjEvJHtmaWxlbmFtZX1gLFxuICAgICAgJ3V0ZjgnXG4gICAgKVxuICApO1xuXG4gIGZ1bmN0aW9uIGdldFByZXZPdXQoaTogdXR4b2xpYi5UeElucHV0KTogdXR4b2xpYi5UeE91dHB1dDxiaWdpbnQ+IHtcbiAgICBmb3IgKGNvbnN0IHQgb2YgaW5wdXRUeHMpIHtcbiAgICAgIGlmICh0LmdldEhhc2goKS5lcXVhbHMoaS5oYXNoKSAmJiBpLmluZGV4IGluIHQub3V0cykge1xuICAgICAgICByZXR1cm4gdC5vdXRzW2kuaW5kZXhdO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYG1pc3NpbmcgaW5wdXQgJHt1dHhvbGliLmJpdGdvLmZvcm1hdE91dHB1dElkKHV0eG9saWIuYml0Z28uZ2V0T3V0cHV0SWRGb3JJbnB1dChpKSl9YCk7XG4gIH1cblxuICBjb25zdCBpbnB1dFR4cyA9IGYuaW5wdXRzLm1hcCgoaSkgPT5cbiAgICB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShpLmhleCwgJ2hleCcpLCBuZXR3b3JrLCB7IGFtb3VudFR5cGU6ICdiaWdpbnQnIH0pXG4gICk7XG4gIGNvbnN0IHR4ID0gdXR4b2xpYi5iaXRnby5jcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIoQnVmZmVyLmZyb20oZi50cmFuc2FjdGlvbi5oZXgsICdoZXgnKSwgbmV0d29yaywge1xuICAgIGFtb3VudFR5cGU6ICdiaWdpbnQnLFxuICB9KTtcbiAgcmV0dXJuIHsgdHJhbnNhY3Rpb246IHR4LCBwcmV2T3V0cHV0czogdHguaW5zLm1hcCgoaSkgPT4gZ2V0UHJldk91dChpKSkgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZpeHR1cmVTdHJpbmcocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLnJlYWRGaWxlKHBhdGgsICd1dGY4Jyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoKGUgYXMgYW55KS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHBhdGgsIGRlZmF1bHRWYWx1ZSwgJ3V0ZjgnKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgd3JvdGUgZGVmYXVsdCB2YWx1ZSBmb3IgJHtwYXRofWApO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BIP32Interface } from 'bip32';
|
|
2
|
+
import * as utxolib from '@bitgo/utxo-lib';
|
|
3
|
+
declare type Triple<T> = [T, T, T];
|
|
4
|
+
declare type KeyTriple = Triple<BIP32Interface>;
|
|
5
|
+
declare const scriptTypes: readonly ["p2sh", "p2shP2wsh", "p2wsh", "p2tr", "p2trMusig2", "p2pkh", "p2wkh"];
|
|
6
|
+
declare type ScriptType = (typeof scriptTypes)[number];
|
|
7
|
+
export declare function getKeyTriple(seed: string): KeyTriple;
|
|
8
|
+
export declare function isSupportedDepositType(network: utxolib.Network, scriptType: ScriptType): boolean;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=parseAddress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseAddress.d.ts","sourceRoot":"","sources":["../../test/parseAddress.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAK3C,aAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE3B,aAAK,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAGxC,QAAA,MAAM,WAAW,iFAAqF,CAAC;AACvG,aAAK,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAK/C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAUhG"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSupportedDepositType = exports.getKeyTriple = void 0;
|
|
4
|
+
const assert = require("assert");
|
|
5
|
+
const crypto = require("crypto");
|
|
6
|
+
const yargs = require("yargs");
|
|
7
|
+
const utxolib = require("@bitgo/utxo-lib");
|
|
8
|
+
const commands_1 = require("../src/commands");
|
|
9
|
+
const fixtures_1 = require("./fixtures");
|
|
10
|
+
const scriptTypesSingleSig = ['p2pkh', 'p2wkh'];
|
|
11
|
+
const scriptTypes = [...utxolib.bitgo.outputScripts.scriptTypes2Of3, ...scriptTypesSingleSig];
|
|
12
|
+
function getKey(seed) {
|
|
13
|
+
return utxolib.bip32.fromSeed(crypto.createHash('sha256').update(seed).digest());
|
|
14
|
+
}
|
|
15
|
+
function getKeyTriple(seed) {
|
|
16
|
+
return [getKey(seed + '.0'), getKey(seed + '.1'), getKey(seed + '.2')];
|
|
17
|
+
}
|
|
18
|
+
exports.getKeyTriple = getKeyTriple;
|
|
19
|
+
function isSupportedDepositType(network, scriptType) {
|
|
20
|
+
if (scriptType === 'p2pkh') {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
if (scriptType === 'p2wkh') {
|
|
24
|
+
return utxolib.supportsSegwit(network);
|
|
25
|
+
}
|
|
26
|
+
return utxolib.bitgo.outputScripts.isSupportedScriptType(network, scriptType);
|
|
27
|
+
}
|
|
28
|
+
exports.isSupportedDepositType = isSupportedDepositType;
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @param keys - Pubkeys to use for generating the address.
|
|
32
|
+
* If scriptType is single-sig, the first key will be used.
|
|
33
|
+
* @param scriptType
|
|
34
|
+
* @param network
|
|
35
|
+
* @return {Buffer} scriptPubKey
|
|
36
|
+
*/
|
|
37
|
+
function createScriptPubKey(keys, scriptType, network) {
|
|
38
|
+
const pubkeys = keys.map((k) => k.publicKey);
|
|
39
|
+
switch (scriptType) {
|
|
40
|
+
case 'p2sh':
|
|
41
|
+
case 'p2shP2wsh':
|
|
42
|
+
case 'p2wsh':
|
|
43
|
+
case 'p2tr':
|
|
44
|
+
case 'p2trMusig2':
|
|
45
|
+
return utxolib.bitgo.outputScripts.createOutputScript2of3(pubkeys, scriptType).scriptPubKey;
|
|
46
|
+
case 'p2pkh':
|
|
47
|
+
return utxolib.payments.p2pkh({ pubkey: keys[0].publicKey }).output;
|
|
48
|
+
case 'p2wkh':
|
|
49
|
+
return utxolib.payments.p2wpkh({ pubkey: keys[0].publicKey }).output;
|
|
50
|
+
default:
|
|
51
|
+
throw new Error(`unsupported output type ${scriptType}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function getAddresses(n) {
|
|
55
|
+
const keys = getKeyTriple('parseAddress');
|
|
56
|
+
return scriptTypes
|
|
57
|
+
.filter((t) => isSupportedDepositType(n, t))
|
|
58
|
+
.flatMap((t) => utxolib.addressFormat.addressFormats
|
|
59
|
+
.filter((format) => utxolib.addressFormat.isSupportedAddressFormat(format, n))
|
|
60
|
+
.map((format) => [
|
|
61
|
+
format,
|
|
62
|
+
utxolib.addressFormat.fromOutputScriptWithFormat(createScriptPubKey(keys, t, n), format, n),
|
|
63
|
+
]));
|
|
64
|
+
}
|
|
65
|
+
function parse(address, args) {
|
|
66
|
+
return commands_1.getAddressParser(yargs.command(commands_1.cmdParseAddress).parseSync(args)).parse(address);
|
|
67
|
+
}
|
|
68
|
+
function testParseAddress(network, addressFormat, address, args, suffix) {
|
|
69
|
+
describe(`parse address ${address} with arguments ${args.join(' ')}`, function () {
|
|
70
|
+
it(`formats address`, async function () {
|
|
71
|
+
const formatted = fixtures_1.formatTreeNoColor(parse(address, args), { showAll: true });
|
|
72
|
+
const addrNoColon = address.replace(':', '_');
|
|
73
|
+
assert.strictEqual(await fixtures_1.getFixtureString(`test/fixtures/formatAddress_${utxolib.getNetworkName(network)}_${addressFormat}_${addrNoColon}${suffix}`, formatted), formatted);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
utxolib.getNetworkList().forEach((n) => {
|
|
78
|
+
getAddresses(n).forEach(([addressFormat, address], i) => {
|
|
79
|
+
testParseAddress(n, addressFormat, address, [], '.txt');
|
|
80
|
+
if ([utxolib.networks.bitcoin, utxolib.networks.bitcoincash, utxolib.networks.ecash].includes(n) && i === 0) {
|
|
81
|
+
testParseAddress(n, addressFormat, address, ['--all'], '.all.txt');
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VBZGRyZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9wYXJzZUFkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWlDO0FBQ2pDLGlDQUFpQztBQUNqQywrQkFBK0I7QUFFL0IsMkNBQTJDO0FBRTNDLDhDQUFvRTtBQUNwRSx5Q0FBaUU7QUFNakUsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQVUsQ0FBQztBQUN6RCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLEdBQUcsb0JBQW9CLENBQVUsQ0FBQztBQUd2RyxTQUFTLE1BQU0sQ0FBQyxJQUFZO0lBQzFCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBQ0QsU0FBZ0IsWUFBWSxDQUFDLElBQVk7SUFDdkMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsT0FBd0IsRUFBRSxVQUFzQjtJQUNyRixJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUU7UUFDMUIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELElBQUksVUFBVSxLQUFLLE9BQU8sRUFBRTtRQUMxQixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDeEM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHFCQUFx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MkJBQWdCLENBQ3BCLCtCQUErQixPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGFBQWEsSUFBSSxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQ3pHLFNBQVMsQ0FDVixFQUNELFNBQVMsQ0FDVixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDckMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RELGdCQUFnQixDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzRyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgY21kUGFyc2VBZGRyZXNzLCBnZXRBZGRyZXNzUGFyc2VyIH0gZnJvbSAnLi4vc3JjL2NvbW1hbmRzJztcbmltcG9ydCB7IGdldEZpeHR1cmVTdHJpbmcsIGZvcm1hdFRyZWVOb0NvbG9yIH0gZnJvbSAnLi9maXh0dXJlcyc7XG5cbnR5cGUgVHJpcGxlPFQ+ID0gW1QsIFQsIFRdO1xuXG50eXBlIEtleVRyaXBsZSA9IFRyaXBsZTxCSVAzMkludGVyZmFjZT47XG5cbmNvbnN0IHNjcmlwdFR5cGVzU2luZ2xlU2lnID0gWydwMnBraCcsICdwMndraCddIGFzIGNvbnN0O1xuY29uc3Qgc2NyaXB0VHlwZXMgPSBbLi4udXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLnNjcmlwdFR5cGVzMk9mMywgLi4uc2NyaXB0VHlwZXNTaW5nbGVTaWddIGFzIGNvbnN0O1xudHlwZSBTY3JpcHRUeXBlID0gKHR5cGVvZiBzY3JpcHRUeXBlcylbbnVtYmVyXTtcblxuZnVuY3Rpb24gZ2V0S2V5KHNlZWQ6IHN0cmluZyk6IEJJUDMySW50ZXJmYWNlIHtcbiAgcmV0dXJuIHV0eG9saWIuYmlwMzIuZnJvbVNlZWQoY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShzZWVkKS5kaWdlc3QoKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5VHJpcGxlKHNlZWQ6IHN0cmluZyk6IEtleVRyaXBsZSB7XG4gIHJldHVybiBbZ2V0S2V5KHNlZWQgKyAnLjAnKSwgZ2V0S2V5KHNlZWQgKyAnLjEnKSwgZ2V0S2V5KHNlZWQgKyAnLjInKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N1cHBvcnRlZERlcG9zaXRUeXBlKG5ldHdvcms6IHV0eG9saWIuTmV0d29yaywgc2NyaXB0VHlwZTogU2NyaXB0VHlwZSk6IGJvb2xlYW4ge1xuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AycGtoJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMndraCcpIHtcbiAgICByZXR1cm4gdXR4b2xpYi5zdXBwb3J0c1NlZ3dpdChuZXR3b3JrKTtcbiAgfVxuXG4gIHJldHVybiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuaXNTdXBwb3J0ZWRTY3JpcHRUeXBlKG5ldHdvcmssIHNjcmlwdFR5cGUpO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0ga2V5cyAtIFB1YmtleXMgdG8gdXNlIGZvciBnZW5lcmF0aW5nIHRoZSBhZGRyZXNzLlxuICogICAgICAgICAgICAgICBJZiBzY3JpcHRUeXBlIGlzIHNpbmdsZS1zaWcsIHRoZSBmaXJzdCBrZXkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIHNjcmlwdFR5cGVcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKiBAcmV0dXJuIHtCdWZmZXJ9IHNjcmlwdFB1YktleVxuICovXG5mdW5jdGlvbiBjcmVhdGVTY3JpcHRQdWJLZXkoa2V5czogS2V5VHJpcGxlLCBzY3JpcHRUeXBlOiBTY3JpcHRUeXBlLCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBCdWZmZXIge1xuICBjb25zdCBwdWJrZXlzID0ga2V5cy5tYXAoKGspID0+IGsucHVibGljS2V5KTtcblxuICBzd2l0Y2ggKHNjcmlwdFR5cGUpIHtcbiAgICBjYXNlICdwMnNoJzpcbiAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICBjYXNlICdwMnRyJzpcbiAgICBjYXNlICdwMnRyTXVzaWcyJzpcbiAgICAgIHJldHVybiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhwdWJrZXlzLCBzY3JpcHRUeXBlKS5zY3JpcHRQdWJLZXk7XG4gICAgY2FzZSAncDJwa2gnOlxuICAgICAgcmV0dXJuIHV0eG9saWIucGF5bWVudHMucDJwa2goeyBwdWJrZXk6IGtleXNbMF0ucHVibGljS2V5IH0pLm91dHB1dCBhcyBCdWZmZXI7XG4gICAgY2FzZSAncDJ3a2gnOlxuICAgICAgcmV0dXJuIHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHsgcHVia2V5OiBrZXlzWzBdLnB1YmxpY0tleSB9KS5vdXRwdXQgYXMgQnVmZmVyO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIG91dHB1dCB0eXBlICR7c2NyaXB0VHlwZX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBZGRyZXNzZXMobjogdXR4b2xpYi5OZXR3b3JrKTogW2Zvcm1hdDogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmddW10ge1xuICBjb25zdCBrZXlzID0gZ2V0S2V5VHJpcGxlKCdwYXJzZUFkZHJlc3MnKTtcbiAgcmV0dXJuIHNjcmlwdFR5cGVzXG4gICAgLmZpbHRlcigodCkgPT4gaXNTdXBwb3J0ZWREZXBvc2l0VHlwZShuLCB0KSlcbiAgICAuZmxhdE1hcCgodCkgPT5cbiAgICAgIHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5hZGRyZXNzRm9ybWF0c1xuICAgICAgICAuZmlsdGVyKChmb3JtYXQpID0+IHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5pc1N1cHBvcnRlZEFkZHJlc3NGb3JtYXQoZm9ybWF0LCBuKSlcbiAgICAgICAgLm1hcCgoZm9ybWF0KTogW3N0cmluZywgc3RyaW5nXSA9PiBbXG4gICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgIHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5mcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChjcmVhdGVTY3JpcHRQdWJLZXkoa2V5cywgdCwgbiksIGZvcm1hdCwgbiksXG4gICAgICAgIF0pXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gcGFyc2UoYWRkcmVzczogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSkge1xuICByZXR1cm4gZ2V0QWRkcmVzc1BhcnNlcih5YXJncy5jb21tYW5kKGNtZFBhcnNlQWRkcmVzcykucGFyc2VTeW5jKGFyZ3MpKS5wYXJzZShhZGRyZXNzKTtcbn1cblxuZnVuY3Rpb24gdGVzdFBhcnNlQWRkcmVzcyhcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLFxuICBhZGRyZXNzRm9ybWF0OiBzdHJpbmcsXG4gIGFkZHJlc3M6IHN0cmluZyxcbiAgYXJnczogc3RyaW5nW10sXG4gIHN1ZmZpeDogc3RyaW5nXG4pIHtcbiAgZGVzY3JpYmUoYHBhcnNlIGFkZHJlc3MgJHthZGRyZXNzfSB3aXRoIGFyZ3VtZW50cyAke2FyZ3Muam9pbignICcpfWAsIGZ1bmN0aW9uICgpIHtcbiAgICBpdChgZm9ybWF0cyBhZGRyZXNzYCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0VHJlZU5vQ29sb3IocGFyc2UoYWRkcmVzcywgYXJncyksIHsgc2hvd0FsbDogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IGFkZHJOb0NvbG9uID0gYWRkcmVzcy5yZXBsYWNlKCc6JywgJ18nKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgYXdhaXQgZ2V0Rml4dHVyZVN0cmluZyhcbiAgICAgICAgICBgdGVzdC9maXh0dXJlcy9mb3JtYXRBZGRyZXNzXyR7dXR4b2xpYi5nZXROZXR3b3JrTmFtZShuZXR3b3JrKX1fJHthZGRyZXNzRm9ybWF0fV8ke2FkZHJOb0NvbG9ufSR7c3VmZml4fWAsXG4gICAgICAgICAgZm9ybWF0dGVkXG4gICAgICAgICksXG4gICAgICAgIGZvcm1hdHRlZFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbnV0eG9saWIuZ2V0TmV0d29ya0xpc3QoKS5mb3JFYWNoKChuKSA9PiB7XG4gIGdldEFkZHJlc3NlcyhuKS5mb3JFYWNoKChbYWRkcmVzc0Zvcm1hdCwgYWRkcmVzc10sIGkpID0+IHtcbiAgICB0ZXN0UGFyc2VBZGRyZXNzKG4sIGFkZHJlc3NGb3JtYXQsIGFkZHJlc3MsIFtdLCAnLnR4dCcpO1xuICAgIGlmIChbdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5jYXNoLCB1dHhvbGliLm5ldHdvcmtzLmVjYXNoXS5pbmNsdWRlcyhuKSAmJiBpID09PSAwKSB7XG4gICAgICB0ZXN0UGFyc2VBZGRyZXNzKG4sIGFkZHJlc3NGb3JtYXQsIGFkZHJlc3MsIFsnLS1hbGwnXSwgJy5hbGwudHh0Jyk7XG4gICAgfVxuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseTransaction.d.ts","sourceRoot":"","sources":["../../test/parseTransaction.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const yargs = require("yargs");
|
|
4
|
+
const assert = require("assert");
|
|
5
|
+
const utxolib = require("@bitgo/utxo-lib");
|
|
6
|
+
const fixtures_1 = require("./fixtures");
|
|
7
|
+
const commands_1 = require("../src/commands");
|
|
8
|
+
function getArgs({ showAll }) {
|
|
9
|
+
return showAll ? ['--all'] : [];
|
|
10
|
+
}
|
|
11
|
+
function getParams() {
|
|
12
|
+
return ['psbtUnsigned', 'psbtHalfSigned', 'psbtFullSigned', 'networkFullSigned'].flatMap((fixtureType) => {
|
|
13
|
+
return [false, true].flatMap((showAll) => {
|
|
14
|
+
return utxolib.bitgo.outputScripts.scriptTypes2Of3.flatMap((scriptType) => {
|
|
15
|
+
if (scriptType === 'p2trMusig2') {
|
|
16
|
+
return [
|
|
17
|
+
{ scriptType, spendType: 'keyPath', showAll, fixtureType },
|
|
18
|
+
{ scriptType, spendType: 'scriptPath', showAll, fixtureType },
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
return [{ scriptType, spendType: undefined, showAll, fixtureType }];
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
getParams().forEach(({ scriptType, spendType, fixtureType, showAll }) => {
|
|
27
|
+
describe(`parse ${fixtureType} ${scriptType} ${spendType ? spendType : 'default'} spend [args=${getArgs({
|
|
28
|
+
showAll,
|
|
29
|
+
})}`, function () {
|
|
30
|
+
function parse(tx, prevOutputs) {
|
|
31
|
+
return commands_1.getTxParser(yargs.command(commands_1.cmdParseTx).parse([...getArgs({ showAll }), '--parseError=throw'])).parse(tx, {
|
|
32
|
+
prevOutputs,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
let fixture;
|
|
36
|
+
before(async function () {
|
|
37
|
+
fixture = await fixtures_1.getTransactionWithSpendType(utxolib.networks.testnet, {
|
|
38
|
+
scriptType,
|
|
39
|
+
spendType,
|
|
40
|
+
fixtureType,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
it(`parses`, function () {
|
|
44
|
+
parse(fixture.transaction);
|
|
45
|
+
if (fixture.prevOutputs) {
|
|
46
|
+
parse(fixture.transaction, fixture.prevOutputs);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
[false, true].forEach((usePrevOuts) => {
|
|
50
|
+
it(`formats [usePrevOuts=${usePrevOuts}]`, async function () {
|
|
51
|
+
if (usePrevOuts && !fixture.prevOutputs) {
|
|
52
|
+
this.skip();
|
|
53
|
+
}
|
|
54
|
+
const formatted = fixtures_1.formatTreeNoColor(parse(fixture.transaction, usePrevOuts ? fixture.prevOutputs : undefined), {
|
|
55
|
+
showAll,
|
|
56
|
+
});
|
|
57
|
+
const fixtureName = spendType ? `${scriptType}_${spendType}` : scriptType;
|
|
58
|
+
assert.strictEqual(formatted, await fixtures_1.getFixtureString(`test/fixtures/format_${fixtureName}_${fixtureType}${showAll ? '_all' : ''}${usePrevOuts ? '_prevOuts' : ''}.txt`, formatted));
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvcGFyc2VUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtCQUErQjtBQUMvQixpQ0FBaUM7QUFDakMsMkNBQTJDO0FBQzNDLHlDQUE2RztBQUU3Ryw4Q0FBMEQ7QUFVMUQsU0FBUyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQXdCO0lBQ2hELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQVMsU0FBUztJQUNoQixPQUFRLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixDQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDbEgsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQWdCLEVBQUU7Z0JBQ3RGLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRTtvQkFDL0IsT0FBTzt3QkFDTCxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7d0JBQzFELEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtxQkFDOUQsQ0FBQztpQkFDSDtnQkFDRCxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO0lBQ3RFLFFBQVEsQ0FBQyxTQUFTLFdBQVcsSUFBSSxVQUFVLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLE9BQU8sQ0FBQztRQUN0RyxPQUFPO0tBQ1IsQ0FBQyxFQUFFLEVBQUU7UUFDSixTQUFTLEtBQUssQ0FBQyxFQUFZLEVBQUUsV0FBd0M7WUFDbkUsT0FBTyxzQkFBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFRLENBQUMsQ0FBQyxLQUFLLENBQy9HLEVBQUUsRUFDRjtnQkFDRSxXQUFXO2FBQ1osQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksT0FBc0IsQ0FBQztRQUMzQixNQUFNLENBQUMsS0FBSztZQUNWLE9BQU8sR0FBRyxNQUFNLHNDQUEyQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUNwRSxVQUFVO2dCQUNWLFNBQVM7Z0JBQ1QsV0FBVzthQUNaLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUNYLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0IsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO2dCQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDakQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3BDLEVBQUUsQ0FBQyx3QkFBd0IsV0FBVyxHQUFHLEVBQUUsS0FBSztnQkFDOUMsSUFBSSxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO29CQUN2QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ2I7Z0JBQ0QsTUFBTSxTQUFTLEdBQUcsNEJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDN0csT0FBTztpQkFDUixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUMxRSxNQUFNLENBQUMsV0FBVyxDQUNoQixTQUFTLEVBQ1QsTUFBTSwyQkFBZ0IsQ0FDcEIsd0JBQXdCLFdBQVcsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FDeEUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQzlCLE1BQU0sRUFDTixTQUFTLENBQ1YsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb2NoYSBmcm9tICdtb2NoYSc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IGdldEZpeHR1cmVTdHJpbmcsIGdldFRyYW5zYWN0aW9uV2l0aFNwZW5kVHlwZSwgZm9ybWF0VHJlZU5vQ29sb3IsIFBhcnNlZEZpeHR1cmUgfSBmcm9tICcuL2ZpeHR1cmVzJztcbmltcG9ydCB7IFBhcnNlck5vZGUgfSBmcm9tICcuLi9zcmMvUGFyc2VyJztcbmltcG9ydCB7IGNtZFBhcnNlVHgsIGdldFR4UGFyc2VyIH0gZnJvbSAnLi4vc3JjL2NvbW1hbmRzJztcbmltcG9ydCB7IFBhcnNlclR4IH0gZnJvbSAnLi4vc3JjL1BhcnNlclR4JztcblxudHlwZSBUZXN0UGFyYW1zID0ge1xuICBzY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjM7XG4gIHNwZW5kVHlwZTogJ2tleVBhdGgnIHwgJ3NjcmlwdFBhdGgnIHwgdW5kZWZpbmVkO1xuICBmaXh0dXJlVHlwZTogJ3BzYnRVbnNpZ25lZCcgfCAncHNidEhhbGZTaWduZWQnIHwgJ3BzYnRGdWxsU2lnbmVkJyB8ICduZXR3b3JrRnVsbFNpZ25lZCc7XG4gIHNob3dBbGw6IGJvb2xlYW47XG59O1xuXG5mdW5jdGlvbiBnZXRBcmdzKHsgc2hvd0FsbCB9OiB7IHNob3dBbGw6IGJvb2xlYW4gfSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHNob3dBbGwgPyBbJy0tYWxsJ10gOiBbXTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1zKCk6IFRlc3RQYXJhbXNbXSB7XG4gIHJldHVybiAoWydwc2J0VW5zaWduZWQnLCAncHNidEhhbGZTaWduZWQnLCAncHNidEZ1bGxTaWduZWQnLCAnbmV0d29ya0Z1bGxTaWduZWQnXSBhcyBjb25zdCkuZmxhdE1hcCgoZml4dHVyZVR5cGUpID0+IHtcbiAgICByZXR1cm4gW2ZhbHNlLCB0cnVlXS5mbGF0TWFwKChzaG93QWxsKSA9PiB7XG4gICAgICByZXR1cm4gdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLnNjcmlwdFR5cGVzMk9mMy5mbGF0TWFwKChzY3JpcHRUeXBlKTogVGVzdFBhcmFtc1tdID0+IHtcbiAgICAgICAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IHNjcmlwdFR5cGUsIHNwZW5kVHlwZTogJ2tleVBhdGgnLCBzaG93QWxsLCBmaXh0dXJlVHlwZSB9LFxuICAgICAgICAgICAgeyBzY3JpcHRUeXBlLCBzcGVuZFR5cGU6ICdzY3JpcHRQYXRoJywgc2hvd0FsbCwgZml4dHVyZVR5cGUgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeyBzY3JpcHRUeXBlLCBzcGVuZFR5cGU6IHVuZGVmaW5lZCwgc2hvd0FsbCwgZml4dHVyZVR5cGUgfV07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmdldFBhcmFtcygpLmZvckVhY2goKHsgc2NyaXB0VHlwZSwgc3BlbmRUeXBlLCBmaXh0dXJlVHlwZSwgc2hvd0FsbCB9KSA9PiB7XG4gIGRlc2NyaWJlKGBwYXJzZSAke2ZpeHR1cmVUeXBlfSAke3NjcmlwdFR5cGV9ICR7c3BlbmRUeXBlID8gc3BlbmRUeXBlIDogJ2RlZmF1bHQnfSBzcGVuZCBbYXJncz0ke2dldEFyZ3Moe1xuICAgIHNob3dBbGwsXG4gIH0pfWAsIGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBwYXJzZSh0eDogUGFyc2VyVHgsIHByZXZPdXRwdXRzPzogdXR4b2xpYi5UeE91dHB1dDxiaWdpbnQ+W10pOiBQYXJzZXJOb2RlIHtcbiAgICAgIHJldHVybiBnZXRUeFBhcnNlcih5YXJncy5jb21tYW5kKGNtZFBhcnNlVHgpLnBhcnNlKFsuLi5nZXRBcmdzKHsgc2hvd0FsbCB9KSwgJy0tcGFyc2VFcnJvcj10aHJvdyddKSBhcyBhbnkpLnBhcnNlKFxuICAgICAgICB0eCxcbiAgICAgICAge1xuICAgICAgICAgIHByZXZPdXRwdXRzLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBmaXh0dXJlOiBQYXJzZWRGaXh0dXJlO1xuICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBmaXh0dXJlID0gYXdhaXQgZ2V0VHJhbnNhY3Rpb25XaXRoU3BlbmRUeXBlKHV0eG9saWIubmV0d29ya3MudGVzdG5ldCwge1xuICAgICAgICBzY3JpcHRUeXBlLFxuICAgICAgICBzcGVuZFR5cGUsXG4gICAgICAgIGZpeHR1cmVUeXBlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdChgcGFyc2VzYCwgZnVuY3Rpb24gKCkge1xuICAgICAgcGFyc2UoZml4dHVyZS50cmFuc2FjdGlvbik7XG4gICAgICBpZiAoZml4dHVyZS5wcmV2T3V0cHV0cykge1xuICAgICAgICBwYXJzZShmaXh0dXJlLnRyYW5zYWN0aW9uLCBmaXh0dXJlLnByZXZPdXRwdXRzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIFtmYWxzZSwgdHJ1ZV0uZm9yRWFjaCgodXNlUHJldk91dHMpID0+IHtcbiAgICAgIGl0KGBmb3JtYXRzIFt1c2VQcmV2T3V0cz0ke3VzZVByZXZPdXRzfV1gLCBhc3luYyBmdW5jdGlvbiAodGhpczogbW9jaGEuQ29udGV4dCkge1xuICAgICAgICBpZiAodXNlUHJldk91dHMgJiYgIWZpeHR1cmUucHJldk91dHB1dHMpIHtcbiAgICAgICAgICB0aGlzLnNraXAoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRUcmVlTm9Db2xvcihwYXJzZShmaXh0dXJlLnRyYW5zYWN0aW9uLCB1c2VQcmV2T3V0cyA/IGZpeHR1cmUucHJldk91dHB1dHMgOiB1bmRlZmluZWQpLCB7XG4gICAgICAgICAgc2hvd0FsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGZpeHR1cmVOYW1lID0gc3BlbmRUeXBlID8gYCR7c2NyaXB0VHlwZX1fJHtzcGVuZFR5cGV9YCA6IHNjcmlwdFR5cGU7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgICBmb3JtYXR0ZWQsXG4gICAgICAgICAgYXdhaXQgZ2V0Rml4dHVyZVN0cmluZyhcbiAgICAgICAgICAgIGB0ZXN0L2ZpeHR1cmVzL2Zvcm1hdF8ke2ZpeHR1cmVOYW1lfV8ke2ZpeHR1cmVUeXBlfSR7c2hvd0FsbCA/ICdfYWxsJyA6ICcnfSR7XG4gICAgICAgICAgICAgIHVzZVByZXZPdXRzID8gJ19wcmV2T3V0cycgOiAnJ1xuICAgICAgICAgICAgfS50eHRgLFxuICAgICAgICAgICAgZm9ybWF0dGVkXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|