@bitgo-beta/utxo-bin 2.8.3-beta.40 → 2.8.3-beta.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/src/InputParser.d.ts +44 -0
  2. package/dist/src/InputParser.d.ts.map +1 -0
  3. package/dist/src/InputParser.js +247 -0
  4. package/dist/src/OutputParser.d.ts +24 -0
  5. package/dist/src/OutputParser.d.ts.map +1 -0
  6. package/dist/src/OutputParser.js +52 -0
  7. package/dist/src/Parser.d.ts +7 -1
  8. package/dist/src/Parser.d.ts.map +1 -1
  9. package/dist/src/Parser.js +26 -2
  10. package/dist/src/ParserTx.d.ts +28 -0
  11. package/dist/src/ParserTx.d.ts.map +1 -0
  12. package/dist/src/ParserTx.js +94 -0
  13. package/dist/src/TxParser.d.ts +9 -6
  14. package/dist/src/TxParser.d.ts.map +1 -1
  15. package/dist/src/TxParser.js +21 -23
  16. package/dist/src/commands.d.ts +5 -1
  17. package/dist/src/commands.d.ts.map +1 -1
  18. package/dist/src/commands.js +62 -14
  19. package/dist/src/fetch.d.ts +4 -3
  20. package/dist/src/fetch.d.ts.map +1 -1
  21. package/dist/src/fetch.js +14 -3
  22. package/dist/src/format.d.ts +1 -1
  23. package/dist/src/format.d.ts.map +1 -1
  24. package/dist/src/format.js +4 -3
  25. package/dist/src/parseUnknown.d.ts +3 -0
  26. package/dist/src/parseUnknown.d.ts.map +1 -0
  27. package/dist/src/parseUnknown.js +50 -0
  28. package/dist/test/fixtures.d.ts +24 -0
  29. package/dist/test/fixtures.d.ts.map +1 -0
  30. package/dist/test/fixtures.js +88 -0
  31. package/dist/test/parseAddress.d.ts +10 -0
  32. package/dist/test/parseAddress.d.ts.map +1 -0
  33. package/dist/test/parseAddress.js +85 -0
  34. package/dist/test/parseTransaction.d.ts +2 -0
  35. package/dist/test/parseTransaction.d.ts.map +1 -0
  36. package/dist/test/parseTransaction.js +63 -0
  37. package/dist/tsconfig.tsbuildinfo +211 -110
  38. package/package.json +6 -6
  39. package/dist/src/InputOutputParser.d.ts +0 -35
  40. package/dist/src/InputOutputParser.d.ts.map +0 -1
  41. 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-beta/utxo-lib");
5
5
  const blockapis = require("@bitgo-beta/blockapis");
6
6
  const statics_1 = require("@bitgo-beta/statics");
7
+ function getTxOutPoints(tx) {
8
+ if (tx instanceof utxolib.bitgo.UtxoTransaction) {
9
+ return tx.ins.map((i) => utxolib.bitgo.getOutputIdForInput(i));
10
+ }
11
+ else {
12
+ return tx.txInputs.map((i) => utxolib.bitgo.getOutputIdForInput(i));
13
+ }
14
+ }
7
15
  function getCoinName(network) {
8
16
  const networkName = utxolib.getNetworkName(network);
9
17
  // the bitcoincash network actually has two coins: bch and bcha - hardcode bch by default here
@@ -42,11 +50,14 @@ async function fetchTransactionStatus(httpClient, txid, network) {
42
50
  }
43
51
  exports.fetchTransactionStatus = fetchTransactionStatus;
44
52
  async function fetchPrevOutputs(httpClient, tx) {
45
- return await blockapis.fetchInputs(tx.ins, getApi(httpClient, tx.network), tx.network);
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.ins.map((i) => utxolib.bitgo.getOutputIdForInput(i)), getApi(httpClient, tx.network));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELG1EQUFtRDtBQUNuRCxpREFBc0Q7QUFHdEQsU0FBUyxXQUFXLENBQUMsT0FBd0I7SUFDM0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVwRCw4RkFBOEY7SUFDOUYsUUFBUSxXQUFXLEVBQUU7UUFDbkIsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsS0FBSyxvQkFBb0I7WUFDdkIsT0FBTyxNQUFNLENBQUM7S0FDakI7SUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsZUFBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FDOUMsSUFBSSxZQUFZLGtCQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN4RixDQUFDO0lBQ0YsUUFBUSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ3RCLEtBQUssQ0FBQztZQUNKLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEQsS0FBSyxDQUFDO1lBQ0osT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEI7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixXQUFXLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQztLQUN4RTtBQUNILENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxVQUFzQixFQUFFLE9BQXdCO0lBQzlELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxRQUFRLFFBQVEsRUFBRTtRQUNoQixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssTUFBTTtZQUNULE9BQU8sU0FBUyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNwRTtZQUNFLE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztLQUNwRTtBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsbUJBQW1CLENBQ3ZDLFVBQXNCLEVBQ3RCLElBQVksRUFDWixPQUF3QjtJQUV4QixPQUFPLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBTkQsa0RBTUM7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLFVBQXNCLEVBQ3RCLElBQVksRUFDWixPQUF3QjtJQUV4QixPQUFPLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBTkQsd0RBTUM7QUFFTSxLQUFLLFVBQVUsZ0JBQWdCLENBQ3BDLFVBQXNCLEVBQ3RCLEVBQWlDO0lBRWpDLE9BQU8sTUFBTSxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUFMRCw0Q0FLQztBQUVNLEtBQUssVUFBVSxxQkFBcUIsQ0FDekMsVUFBc0IsRUFDdEIsRUFBaUM7SUFFakMsT0FBTyxNQUFNLFNBQVMsQ0FBQyxzQkFBc0IsQ0FDM0MsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDdkQsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQy9CLENBQUM7QUFDSixDQUFDO0FBUkQsc0RBUUM7QUFFTSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLFVBQXNCLEVBQ3RCLEVBQWlDO0lBRWpDLElBQUk7UUFDRixPQUFPLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDOUU7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sRUFBRSxDQUFDO0tBQ1g7QUFDSCxDQUFDO0FBVEQsOENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIGJsb2NrYXBpcyBmcm9tICdAYml0Z28tYmV0YS9ibG9ja2FwaXMnO1xuaW1wb3J0IHsgY29pbnMsIFV0eG9Db2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGJpdGdvLWJldGEvYmxvY2thcGlzJztcblxuZnVuY3Rpb24gZ2V0Q29pbk5hbWUobmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogc3RyaW5nIHtcbiAgY29uc3QgbmV0d29ya05hbWUgPSB1dHhvbGliLmdldE5ldHdvcmtOYW1lKG5ldHdvcmspO1xuXG4gIC8vIHRoZSBiaXRjb2luY2FzaCBuZXR3b3JrIGFjdHVhbGx5IGhhcyB0d28gY29pbnM6IGJjaCBhbmQgYmNoYSAtIGhhcmRjb2RlIGJjaCBieSBkZWZhdWx0IGhlcmVcbiAgc3dpdGNoIChuZXR3b3JrTmFtZSkge1xuICAgIGNhc2UgJ2JpdGNvaW5jYXNoJzpcbiAgICAgIHJldHVybiAnYmNoJztcbiAgICBjYXNlICdiaXRjb2luY2FzaFRlc3RuZXQnOlxuICAgICAgcmV0dXJuICd0YmNoJztcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZXMgPSBbLi4uY29pbnNdLmZsYXRNYXAoKFssIGNvaW5dKSA9PlxuICAgIGNvaW4gaW5zdGFuY2VvZiBVdHhvQ29pbiAmJiBjb2luLm5ldHdvcmsudXR4b2xpYk5hbWUgPT09IG5ldHdvcmtOYW1lID8gW2NvaW4ubmFtZV0gOiBbXVxuICApO1xuICBzd2l0Y2ggKG1hdGNoZXMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBubyBjb2luIGZvciBuZXR3b3JrICR7bmV0d29ya05hbWV9YCk7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIG1hdGNoZXNbMF07XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbW9yZSB0aGFuIG9uZSBjb2luIGZvciAke25ldHdvcmtOYW1lfTogJHttYXRjaGVzfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFwaShodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBibG9ja2FwaXMuVXR4b0FwaSB7XG4gIGNvbnN0IGNvaW5OYW1lID0gZ2V0Q29pbk5hbWUobmV0d29yayk7XG4gIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICBjYXNlICdidGMnOlxuICAgIGNhc2UgJ3RidGMnOlxuICAgICAgcmV0dXJuIGJsb2NrYXBpcy5CbG9ja3N0cmVhbUFwaS5mb3JDb2luKGNvaW5OYW1lLCB7IGh0dHBDbGllbnQgfSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBibG9ja2FwaXMuQmxvY2tjaGFpckFwaS5mb3JDb2luKGNvaW5OYW1lLCB7IGh0dHBDbGllbnQgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25IZXgoXG4gIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gIHR4aWQ6IHN0cmluZyxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gYXdhaXQgZ2V0QXBpKGh0dHBDbGllbnQsIG5ldHdvcmspLmdldFRyYW5zYWN0aW9uSGV4KHR4aWQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvblN0YXR1cyhcbiAgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgdHhpZDogc3RyaW5nLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IFByb21pc2U8YmxvY2thcGlzLlRyYW5zYWN0aW9uU3RhdHVzPiB7XG4gIHJldHVybiBhd2FpdCBnZXRBcGkoaHR0cENsaWVudCwgbmV0d29yaykuZ2V0VHJhbnNhY3Rpb25TdGF0dXModHhpZCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFByZXZPdXRwdXRzKFxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb25cbik6IFByb21pc2U8dXR4b2xpYi5UeE91dHB1dFtdPiB7XG4gIHJldHVybiBhd2FpdCBibG9ja2FwaXMuZmV0Y2hJbnB1dHModHguaW5zLCBnZXRBcGkoaHR0cENsaWVudCwgdHgubmV0d29yayksIHR4Lm5ldHdvcmspO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQcmV2T3V0cHV0U3BlbmRzKFxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb25cbik6IFByb21pc2U8YmxvY2thcGlzLk91dHB1dFNwZW5kW10+IHtcbiAgcmV0dXJuIGF3YWl0IGJsb2NrYXBpcy5mZXRjaFRyYW5zYWN0aW9uU3BlbmRzKFxuICAgIHR4Lmlucy5tYXAoKGkpID0+IHV0eG9saWIuYml0Z28uZ2V0T3V0cHV0SWRGb3JJbnB1dChpKSksXG4gICAgZ2V0QXBpKGh0dHBDbGllbnQsIHR4Lm5ldHdvcmspXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaE91dHB1dFNwZW5kcyhcbiAgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uXG4pOiBQcm9taXNlPGJsb2NrYXBpcy5PdXRwdXRTcGVuZFtdPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFwaShodHRwQ2xpZW50LCB0eC5uZXR3b3JrKS5nZXRUcmFuc2FjdGlvblNwZW5kcyh0eC5nZXRJZCgpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELG1EQUFtRDtBQUNuRCxpREFBc0Q7QUFJdEQsU0FBUyxjQUFjLENBQUMsRUFBWTtJQUNsQyxJQUFJLEVBQUUsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtRQUMvQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDaEU7U0FBTTtRQUNMLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyRTtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxPQUF3QjtJQUMzQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXBELDhGQUE4RjtJQUM5RixRQUFRLFdBQVcsRUFBRTtRQUNuQixLQUFLLGFBQWE7WUFDaEIsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLG9CQUFvQjtZQUN2QixPQUFPLE1BQU0sQ0FBQztLQUNqQjtJQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxlQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUM5QyxJQUFJLFlBQVksa0JBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3hGLENBQUM7SUFDRixRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDdEIsS0FBSyxDQUFDO1lBQ0osTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUM7WUFDSixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFdBQVcsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3hFO0FBQ0gsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLFVBQXNCLEVBQUUsT0FBd0I7SUFDOUQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxNQUFNO1lBQ1QsT0FBTyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFO1lBQ0UsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsVUFBc0IsRUFDdEIsSUFBWSxFQUNaLE9BQXdCO0lBRXhCLE9BQU8sTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFORCxrREFNQztBQUVNLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsVUFBc0IsRUFDdEIsSUFBWSxFQUNaLE9BQXdCO0lBRXhCLE9BQU8sTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFORCx3REFNQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxVQUFzQixFQUFFLEVBQVk7SUFDekUsT0FBTyxDQUFDLE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLEdBQUcsQ0FBQztRQUNKLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztLQUN2QixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUFMRCw0Q0FLQztBQUVNLEtBQUssVUFBVSxxQkFBcUIsQ0FDekMsVUFBc0IsRUFDdEIsRUFBa0U7SUFFbEUsT0FBTyxNQUFNLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBTEQsc0RBS0M7QUFFTSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLFVBQXNCLEVBQ3RCLEVBQXlDO0lBRXpDLElBQUk7UUFDRixPQUFPLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDOUU7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sRUFBRSxDQUFDO0tBQ1g7QUFDSCxDQUFDO0FBVEQsOENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIGJsb2NrYXBpcyBmcm9tICdAYml0Z28tYmV0YS9ibG9ja2FwaXMnO1xuaW1wb3J0IHsgY29pbnMsIFV0eG9Db2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGJpdGdvLWJldGEvYmxvY2thcGlzJztcbmltcG9ydCB7IFBhcnNlclR4IH0gZnJvbSAnLi9QYXJzZXJUeCc7XG5cbmZ1bmN0aW9uIGdldFR4T3V0UG9pbnRzKHR4OiBQYXJzZXJUeCk6IHV0eG9saWIuYml0Z28uVHhPdXRQb2ludFtdIHtcbiAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gdHguaW5zLm1hcCgoaSkgPT4gdXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KGkpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHgudHhJbnB1dHMubWFwKChpKSA9PiB1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQoaSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldENvaW5OYW1lKG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IHN0cmluZyB7XG4gIGNvbnN0IG5ldHdvcmtOYW1lID0gdXR4b2xpYi5nZXROZXR3b3JrTmFtZShuZXR3b3JrKTtcblxuICAvLyB0aGUgYml0Y29pbmNhc2ggbmV0d29yayBhY3R1YWxseSBoYXMgdHdvIGNvaW5zOiBiY2ggYW5kIGJjaGEgLSBoYXJkY29kZSBiY2ggYnkgZGVmYXVsdCBoZXJlXG4gIHN3aXRjaCAobmV0d29ya05hbWUpIHtcbiAgICBjYXNlICdiaXRjb2luY2FzaCc6XG4gICAgICByZXR1cm4gJ2JjaCc7XG4gICAgY2FzZSAnYml0Y29pbmNhc2hUZXN0bmV0JzpcbiAgICAgIHJldHVybiAndGJjaCc7XG4gIH1cblxuICBjb25zdCBtYXRjaGVzID0gWy4uLmNvaW5zXS5mbGF0TWFwKChbLCBjb2luXSkgPT5cbiAgICBjb2luIGluc3RhbmNlb2YgVXR4b0NvaW4gJiYgY29pbi5uZXR3b3JrLnV0eG9saWJOYW1lID09PSBuZXR3b3JrTmFtZSA/IFtjb2luLm5hbWVdIDogW11cbiAgKTtcbiAgc3dpdGNoIChtYXRjaGVzLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gY29pbiBmb3IgbmV0d29yayAke25ldHdvcmtOYW1lfWApO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBtYXRjaGVzWzBdO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1vcmUgdGhhbiBvbmUgY29pbiBmb3IgJHtuZXR3b3JrTmFtZX06ICR7bWF0Y2hlc31gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBcGkoaHR0cENsaWVudDogSHR0cENsaWVudCwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogYmxvY2thcGlzLlV0eG9BcGkge1xuICBjb25zdCBjb2luTmFtZSA9IGdldENvaW5OYW1lKG5ldHdvcmspO1xuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAnYnRjJzpcbiAgICBjYXNlICd0YnRjJzpcbiAgICAgIHJldHVybiBibG9ja2FwaXMuQmxvY2tzdHJlYW1BcGkuZm9yQ29pbihjb2luTmFtZSwgeyBodHRwQ2xpZW50IH0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYmxvY2thcGlzLkJsb2NrY2hhaXJBcGkuZm9yQ29pbihjb2luTmFtZSwgeyBodHRwQ2xpZW50IH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uSGV4KFxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICB0eGlkOiBzdHJpbmcsXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29ya1xuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGF3YWl0IGdldEFwaShodHRwQ2xpZW50LCBuZXR3b3JrKS5nZXRUcmFuc2FjdGlvbkhleCh0eGlkKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25TdGF0dXMoXG4gIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gIHR4aWQ6IHN0cmluZyxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBQcm9taXNlPGJsb2NrYXBpcy5UcmFuc2FjdGlvblN0YXR1cz4ge1xuICByZXR1cm4gYXdhaXQgZ2V0QXBpKGh0dHBDbGllbnQsIG5ldHdvcmspLmdldFRyYW5zYWN0aW9uU3RhdHVzKHR4aWQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQcmV2T3V0cHV0cyhodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCB0eDogUGFyc2VyVHgpOiBQcm9taXNlPHV0eG9saWIuVHhPdXRwdXQ8YmlnaW50PltdPiB7XG4gIHJldHVybiAoYXdhaXQgYmxvY2thcGlzLmZldGNoSW5wdXRzKGdldFR4T3V0UG9pbnRzKHR4KSwgZ2V0QXBpKGh0dHBDbGllbnQsIHR4Lm5ldHdvcmspLCB0eC5uZXR3b3JrKSkubWFwKCh2KSA9PiAoe1xuICAgIC4uLnYsXG4gICAgdmFsdWU6IEJpZ0ludCh2LnZhbHVlKSxcbiAgfSkpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQcmV2T3V0cHV0U3BlbmRzKFxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248YmlnaW50PiB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnRcbik6IFByb21pc2U8YmxvY2thcGlzLk91dHB1dFNwZW5kW10+IHtcbiAgcmV0dXJuIGF3YWl0IGJsb2NrYXBpcy5mZXRjaFRyYW5zYWN0aW9uU3BlbmRzKGdldFR4T3V0UG9pbnRzKHR4KSwgZ2V0QXBpKGh0dHBDbGllbnQsIHR4Lm5ldHdvcmspKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoT3V0cHV0U3BlbmRzKFxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248YmlnaW50PlxuKTogUHJvbWlzZTxibG9ja2FwaXMuT3V0cHV0U3BlbmRbXT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBcGkoaHR0cENsaWVudCwgdHgubmV0d29yaykuZ2V0VHJhbnNhY3Rpb25TcGVuZHModHguZ2V0SWQoKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn1cbiJdfQ==
@@ -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;
@@ -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,CAE3C;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,CAoCR"}
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"}
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBd0M7QUFDeEMsK0JBQStCO0FBRy9CLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLFNBQWdCLFNBQVMsQ0FBQyxDQUFTO0lBQ2pDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFGRCw4QkFFQztBQUVELFNBQWdCLFVBQVUsQ0FDeEIsQ0FBYSxFQUNiLEVBQUUsSUFBSSxHQUFHLFdBQVcsRUFBRSxLQUFLLEdBQUcsSUFBSSxnQkFBUSxFQUFFLEtBQXlDLEVBQUU7SUFFdkYsU0FBUyxRQUFRLENBQUMsS0FBc0IsRUFBRSxDQUFXO1FBQ25ELE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUFDLENBQWtCO1FBQzNDLFFBQVEsT0FBTyxDQUFDLEVBQUU7WUFDaEIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDZCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEI7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN0QixPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2xEO1NBQ0o7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFNBQVMsT0FBTyxDQUFDLENBQWE7UUFDNUIsT0FBTztZQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2xHLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQXZDRCxnQ0F1Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFsaywgSW5zdGFuY2UgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyBhcmNoeSBmcm9tICdhcmNoeSc7XG5pbXBvcnQgeyBQYXJzZXJOb2RlLCBQYXJzZXJOb2RlVmFsdWUgfSBmcm9tICcuL1BhcnNlcic7XG5cbmNvbnN0IGhpZGVEZWZhdWx0ID0gWydwdWJrZXlzJywgJ3NlcXVlbmNlJywgJ2xvY2t0aW1lJywgJ3NjcmlwdFNpZycsICd3aXRuZXNzJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTYXQodjogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuICh2IC8gMWU4KS50b0ZpeGVkKDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VHJlZShcbiAgbjogUGFyc2VyTm9kZSxcbiAgeyBoaWRlID0gaGlkZURlZmF1bHQsIGNoYWxrID0gbmV3IEluc3RhbmNlKCkgfTogeyBoaWRlPzogc3RyaW5nW107IGNoYWxrPzogQ2hhbGsgfSA9IHt9XG4pOiBzdHJpbmcge1xuICBmdW5jdGlvbiBnZXRMYWJlbChsYWJlbDogc3RyaW5nIHwgbnVtYmVyLCB2PzogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgYXJyID0gW2NoYWxrLmJvbGQobGFiZWwpXTtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcnIucHVzaChTdHJpbmcodikpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyLmpvaW4oJzogJyk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRMYWJlbEZyb21WYWx1ZSh2OiBQYXJzZXJOb2RlVmFsdWUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAodHlwZW9mIHYpIHtcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKHYgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodikpIHtcbiAgICAgICAgICByZXR1cm4gdi5sZW5ndGggPT09IDAgPyAnW10nIDogdi50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZ2V0IGxhYmVsIGZyb20gdmFsdWVgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvQXJjaHkobjogUGFyc2VyTm9kZSk6IGFyY2h5LkRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogZ2V0TGFiZWwobi5sYWJlbCwgZ2V0TGFiZWxGcm9tVmFsdWUobi52YWx1ZSkpLFxuICAgICAgbm9kZXM6IG4ubm9kZXMgPyBuLm5vZGVzLmZsYXRNYXAoKGUpID0+IChoaWRlLmluY2x1ZGVzKGUubGFiZWwpID8gW10gOiBbdG9BcmNoeShlKV0pKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGFyY2h5KHRvQXJjaHkobikpO1xufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBd0M7QUFDeEMsK0JBQStCO0FBRy9CLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLFNBQWdCLFNBQVMsQ0FBQyxDQUFrQjtJQUMxQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsOEJBRUM7QUFFRCxTQUFnQixVQUFVLENBQ3hCLENBQWEsRUFDYixFQUFFLElBQUksR0FBRyxXQUFXLEVBQUUsS0FBSyxHQUFHLElBQUksZ0JBQVEsRUFBRSxLQUF5QyxFQUFFO0lBRXZGLFNBQVMsUUFBUSxDQUFDLEtBQXNCLEVBQUUsQ0FBVztRQUNuRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjtRQUNELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FBQyxDQUFrQjtRQUMzQyxRQUFRLE9BQU8sQ0FBQyxFQUFFO1lBQ2hCLEtBQUssV0FBVztnQkFDZCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDZCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEI7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN0QixPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2xEO1NBQ0o7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVMsT0FBTyxDQUFDLENBQWE7UUFDNUIsT0FBTztZQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2xHLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQXhDRCxnQ0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFsaywgSW5zdGFuY2UgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyBhcmNoeSBmcm9tICdhcmNoeSc7XG5pbXBvcnQgeyBQYXJzZXJOb2RlLCBQYXJzZXJOb2RlVmFsdWUgfSBmcm9tICcuL1BhcnNlcic7XG5cbmNvbnN0IGhpZGVEZWZhdWx0ID0gWydwdWJrZXlzJywgJ3NlcXVlbmNlJywgJ2xvY2t0aW1lJywgJ3NjcmlwdFNpZycsICd3aXRuZXNzJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTYXQodjogbnVtYmVyIHwgYmlnaW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIChOdW1iZXIodikgLyAxZTgpLnRvRml4ZWQoOCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUcmVlKFxuICBuOiBQYXJzZXJOb2RlLFxuICB7IGhpZGUgPSBoaWRlRGVmYXVsdCwgY2hhbGsgPSBuZXcgSW5zdGFuY2UoKSB9OiB7IGhpZGU/OiBzdHJpbmdbXTsgY2hhbGs/OiBDaGFsayB9ID0ge31cbik6IHN0cmluZyB7XG4gIGZ1bmN0aW9uIGdldExhYmVsKGxhYmVsOiBzdHJpbmcgfCBudW1iZXIsIHY/OiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcnIgPSBbY2hhbGsuYm9sZChsYWJlbCldO1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFyci5wdXNoKFN0cmluZyh2KSk7XG4gICAgfVxuICAgIHJldHVybiBhcnIuam9pbignOiAnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExhYmVsRnJvbVZhbHVlKHY6IFBhcnNlck5vZGVWYWx1ZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoICh0eXBlb2Ygdikge1xuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICdiaWdpbnQnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKHYgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodikpIHtcbiAgICAgICAgICByZXR1cm4gdi5sZW5ndGggPT09IDAgPyAnW10nIDogdi50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZ2V0IGxhYmVsIGZyb20gdmFsdWUgJHt0eXBlb2Ygdn1gKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvQXJjaHkobjogUGFyc2VyTm9kZSk6IGFyY2h5LkRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogZ2V0TGFiZWwobi5sYWJlbCwgZ2V0TGFiZWxGcm9tVmFsdWUobi52YWx1ZSkpLFxuICAgICAgbm9kZXM6IG4ubm9kZXMgPyBuLm5vZGVzLmZsYXRNYXAoKGUpID0+IChoaWRlLmluY2x1ZGVzKGUubGFiZWwpID8gW10gOiBbdG9BcmNoeShlKV0pKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGFyY2h5KHRvQXJjaHkobikpO1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ import { Parser, ParserNode } from './Parser';
2
+ export declare function parseUnknown(p: Parser, label: string | number, obj: unknown): ParserNode;
3
+ //# sourceMappingURL=parseUnknown.d.ts.map
@@ -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-beta/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,sBAAsB,CAAC;AAGhD,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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L2ZpeHR1cmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUFvQztBQUVwQyxpQ0FBaUM7QUFDakMsZ0RBQWdEO0FBRWhELDBDQUEyQztBQUczQyxTQUFnQixpQkFBaUIsQ0FBQyxDQUFhLEVBQUUsRUFBRSxPQUFPLEVBQXdCO0lBQ2hGLE9BQU8sbUJBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxnQkFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlGLENBQUM7QUFGRCw4Q0FFQztBQWtCRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUM7QUFFcEQsS0FBSyxVQUFVLE9BQU8sQ0FDM0IsT0FBd0IsRUFDeEIsTUFBcUIsRUFDckIsRUFBRSxZQUFZLEtBQWdDLEVBQUU7SUFFaEQsTUFBTSxNQUFNLEdBQTZCO1FBQ3ZDLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQU0sQ0FBQyxFQUFFO0tBQ2xILENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUUsSUFBSSxLQUFLLEdBQVcsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUN2QyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFD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O1FBQ1YsSUFBSyxDQUFTLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsTUFBTSxDQUFDLENBQUM7S0FDVDtBQUNILENBQUM7QUFWRCw0Q0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuXG5pbXBvcnQgeyBJbnN0YW5jZSB9IGZyb20gJ2NoYWxrJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBmb3JtYXRUcmVlIH0gZnJvbSAnLi4vc3JjL2Zvcm1hdCc7XG5pbXBvcnQgeyBQYXJzZXJOb2RlIH0gZnJvbSAnLi4vc3JjL1BhcnNlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUcmVlTm9Db2xvcihuOiBQYXJzZXJOb2RlLCB7IHNob3dBbGwgfTogeyBzaG93QWxsOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0VHJlZShuLCB7IGhpZGU6IHNob3dBbGwgPyBbXSA6IHVuZGVmaW5lZCwgY2hhbGs6IG5ldyBJbnN0YW5jZSh7IGxldmVsOiAwIH0pIH0pO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWRGaXh0dXJlID1cbiAgfCB7XG4gICAgICB0cmFuc2FjdGlvbjogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248YmlnaW50PjtcbiAgICAgIHByZXZPdXRwdXRzOiB1dHhvbGliLlR4T3V0cHV0PGJpZ2ludD5bXTtcbiAgICB9XG4gIHwge1xuICAgICAgdHJhbnNhY3Rpb246IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG4gICAgICBwcmV2T3V0cHV0czogdW5kZWZpbmVkO1xuICAgIH07XG5cbnR5cGUgRml4dHVyZVBhcmFtcyA9IHtcbiAgZml4dHVyZVR5cGU6ICdwc2J0VW5zaWduZWQnIHwgJ3BzYnRIYWxmU2lnbmVkJyB8ICdwc2J0RnVsbFNpZ25lZCcgfCAnbmV0d29ya0Z1bGxTaWduZWQnO1xuICBzY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjM7XG4gIHNwZW5kVHlwZT86ICdrZXlQYXRoJyB8ICdzY3JpcHRQYXRoJztcbn07XG5cbmNvbnN0IHdhbGxldEtleXMgPSB1dHhvbGliLnRlc3R1dGlsLmdldERlZmF1bHRXYWxsZXRLZXlzKCk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQc2J0KFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssXG4gIHBhcmFtczogRml4dHVyZVBhcmFtcyxcbiAgeyB3cml0ZUZpeHR1cmUgfTogeyB3cml0ZUZpeHR1cmU/OiBzdHJpbmcgfSA9IHt9XG4pOiBQcm9taXNlPFBhcnNlZEZpeHR1cmU+IHtcbiAgY29uc3QgaW5wdXRzOiB1dHhvbGliLnRlc3R1dGlsLklucHV0W10gPSBbXG4gICAgeyBzY3JpcHRUeXBlOiBwYXJhbXMuc3BlbmRUeXBlID09PSAna2V5UGF0aCcgPyAndGFwcm9vdEtleVBhdGhTcGVuZCcgOiBwYXJhbXMuc2NyaXB0VHlwZSwgdmFsdWU6IEJpZ0ludCgxMF8wMDApIH0sXG4gIF07XG4gIGNvbnN0IG91dHB1dHMgPSBbeyBzY3JpcHRUeXBlOiBwYXJhbXMuc2NyaXB0VHlwZSwgdmFsdWU6IEJpZ0ludCg5XzAwMCkgfV07XG4gIGxldCBzdGFnZTogc3RyaW5nID0gcGFyYW1zLmZpeHR1cmVUeXBlO1xuICBpZiAoc3RhZ2Uuc3RhcnRzV2l0aCgncHNidCcpKSB7XG4gICAgc3RhZ2UgPSBzdGFnZS5zbGljZSgncHNidCcubGVuZ3RoKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIGlmIChzdGFnZSAhPT0gJ3Vuc2lnbmVkJyAmJiBzdGFnZSAhPT0gJ2hhbGZzaWduZWQnICYmIHN0YWdlICE9PSAnZnVsbHNpZ25lZCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc3RhZ2UgJHtzdGFnZX1gKTtcbiAgfVxuICBpZiAocGFyYW1zLnNwZW5kVHlwZSA9PT0gJ2tleVBhdGgnICYmIHdyaXRlRml4dHVyZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gYmVjYXVzZSB3ZSBjdXJyZW50bHkgY2Fubm90IGNyZWF0ZSBkZXRlcm1pbmlzdGljIHNpZ25hdHVyZXMgZm9yIHRhcHJvb3RLZXlQYXRoU3BlbmQsIHdlXG4gICAgLy8gc3RvcmUgYSBjb3B5IGluIGZpeHR1cmVzL3BzYnQgYW5kIHVzZSB0aGF0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lXG4gICAgY29uc3QgZmlsZW5hbWUgPSBgdGVzdC9maXh0dXJlcy9wc2J0LyR7cGFyYW1zLnNjcmlwdFR5cGV9LiR7cGFyYW1zLnNwZW5kVHlwZX0uJHtzdGFnZX0uanNvbmA7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBzYnRIZXggPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKGZpbGVuYW1lLCAndXRmOCcpKTtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdXR4b2xpYi5iaXRnby5jcmVhdGVQc2J0RnJvbUhleChwc2J0SGV4LCBuZXR3b3JrKTtcbiAgICAgIHJldHVybiB7IHRyYW5zYWN0aW9uLCBwcmV2T3V0cHV0czogdW5kZWZpbmVkIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldFBzYnQobmV0d29yaywgcGFyYW1zLCB7IHdyaXRlRml4dHVyZTogZmlsZW5hbWUgfSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuICBjb25zdCB0cmFuc2FjdGlvbiA9IHV0eG9saWIudGVzdHV0aWwuY29uc3RydWN0UHNidChpbnB1dHMsIG91dHB1dHMsIG5ldHdvcmssIHdhbGxldEtleXMsIHN0YWdlKTtcbiAgaWYgKHdyaXRlRml4dHVyZSkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh3cml0ZUZpeHR1cmUsIEpTT04uc3RyaW5naWZ5KHRyYW5zYWN0aW9uLnRvSGV4KCkpLCAndXRmOCcpO1xuICB9XG4gIHJldHVybiB7XG4gICAgdHJhbnNhY3Rpb24sXG4gICAgcHJldk91dHB1dHM6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uV2l0aFNwZW5kVHlwZShcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLFxuICBwYXJhbXM6IEZpeHR1cmVQYXJhbXNcbik6IFByb21pc2U8UGFyc2VkRml4dHVyZT4ge1xuICBpZiAocGFyYW1zLmZpeHR1cmVUeXBlICE9PSAnbmV0d29ya0Z1bGxTaWduZWQnKSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldFBzYnQobmV0d29yaywgcGFyYW1zKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuc2NyaXB0VHlwZSA9PT0gJ3AydHJNdXNpZzInICYmICFwYXJhbXMuc3BlbmRUeXBlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwMnRyTXVzaWcyIHJlcXVpcmVzIHBhcmFtcycpO1xuICB9XG5cbiAgY29uc3QgZmlsZW5hbWUgPSBgc3BlbmRfJHtwYXJhbXMuc2NyaXB0VHlwZX0ke3BhcmFtcy5zcGVuZFR5cGUgPyBgJHtwYXJhbXMuc3BlbmRUeXBlfWAgOiAnJ30uanNvbmA7XG4gIHR5cGUgRml4dHVyZSA9IHtcbiAgICB0cmFuc2FjdGlvbjogeyBoZXg6IHN0cmluZyB9O1xuICAgIGlucHV0czogeyBoZXg6IHN0cmluZyB9W107XG4gIH07XG5cbiAgY29uc3QgZjogRml4dHVyZSA9IGF3YWl0IEpTT04ucGFyc2UoXG4gICAgYXdhaXQgZnMucmVhZEZpbGUoXG4gICAgICBgLi4vdXR4by1saWIvdGVzdC9pbnRlZ3JhdGlvbl9sb2NhbF9ycGMvZml4dHVyZXMvJHt1dHhvbGliLmdldE5ldHdvcmtOYW1lKG5ldHdvcmspfS92MS8ke2ZpbGVuYW1lfWAsXG4gICAgICAndXRmOCdcbiAgICApXG4gICk7XG5cbiAgZnVuY3Rpb24gZ2V0UHJldk91dChpOiB1dHhvbGliLlR4SW5wdXQpOiB1dHhvbGliLlR4T3V0cHV0PGJpZ2ludD4ge1xuICAgIGZvciAoY29uc3QgdCBvZiBpbnB1dFR4cykge1xuICAgICAgaWYgKHQuZ2V0SGFzaCgpLmVxdWFscyhpLmhhc2gpICYmIGkuaW5kZXggaW4gdC5vdXRzKSB7XG4gICAgICAgIHJldHVybiB0Lm91dHNbaS5pbmRleF07XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgbWlzc2luZyBpbnB1dCAke3V0eG9saWIuYml0Z28uZm9ybWF0T3V0cHV0SWQodXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KGkpKX1gKTtcbiAgfVxuXG4gIGNvbnN0IGlucHV0VHhzID0gZi5pbnB1dHMubWFwKChpKSA9PlxuICAgIHV0eG9saWIuYml0Z28uY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyKEJ1ZmZlci5mcm9tKGkuaGV4LCAnaGV4JyksIG5ldHdvcmssIHsgYW1vdW50VHlwZTogJ2JpZ2ludCcgfSlcbiAgKTtcbiAgY29uc3QgdHggPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShmLnRyYW5zYWN0aW9uLmhleCwgJ2hleCcpLCBuZXR3b3JrLCB7XG4gICAgYW1vdW50VHlwZTogJ2JpZ2ludCcsXG4gIH0pO1xuICByZXR1cm4geyB0cmFuc2FjdGlvbjogdHgsIHByZXZPdXRwdXRzOiB0eC5pbnMubWFwKChpKSA9PiBnZXRQcmV2T3V0KGkpKSB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Rml4dHVyZVN0cmluZyhwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZnMucmVhZEZpbGUocGF0aCwgJ3V0ZjgnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICgoZSBhcyBhbnkpLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aCwgZGVmYXVsdFZhbHVlLCAndXRmOCcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB3cm90ZSBkZWZhdWx0IHZhbHVlIGZvciAke3BhdGh9YCk7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { BIP32Interface } from 'bip32';
2
+ import * as utxolib from '@bitgo-beta/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,sBAAsB,CAAC;AAKhD,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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VBZGRyZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9wYXJzZUFkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWlDO0FBQ2pDLGlDQUFpQztBQUNqQywrQkFBK0I7QUFFL0IsZ0RBQWdEO0FBRWhELDhDQUFvRTtBQUNwRSx5Q0FBaUU7QUFNakUsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQVUsQ0FBQztBQUN6RCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLEdBQUcsb0JBQW9CLENBQVUsQ0FBQztBQUd2RyxTQUFTLE1BQU0sQ0FBQyxJQUFZO0lBQzFCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBQ0QsU0FBZ0IsWUFBWSxDQUFDLElBQVk7SUFDdkMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsT0FBd0IsRUFBRSxVQUFzQjtJQUNyRixJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUU7UUFDMUIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELElBQUksVUFBVSxLQUFLLE9BQU8sRUFBRTtRQUMxQixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDeEM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHFCQUFx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MkJBQWdCLENBQ3BCLCtCQUErQixPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGFBQWEsSUFBSSxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQ3pHLFNBQVMsQ0FDVixFQUNELFNBQVMsQ0FDVixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDckMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RELGdCQUFnQixDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzRyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBjbWRQYXJzZUFkZHJlc3MsIGdldEFkZHJlc3NQYXJzZXIgfSBmcm9tICcuLi9zcmMvY29tbWFuZHMnO1xuaW1wb3J0IHsgZ2V0Rml4dHVyZVN0cmluZywgZm9ybWF0VHJlZU5vQ29sb3IgfSBmcm9tICcuL2ZpeHR1cmVzJztcblxudHlwZSBUcmlwbGU8VD4gPSBbVCwgVCwgVF07XG5cbnR5cGUgS2V5VHJpcGxlID0gVHJpcGxlPEJJUDMySW50ZXJmYWNlPjtcblxuY29uc3Qgc2NyaXB0VHlwZXNTaW5nbGVTaWcgPSBbJ3AycGtoJywgJ3Ayd2toJ10gYXMgY29uc3Q7XG5jb25zdCBzY3JpcHRUeXBlcyA9IFsuLi51dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuc2NyaXB0VHlwZXMyT2YzLCAuLi5zY3JpcHRUeXBlc1NpbmdsZVNpZ10gYXMgY29uc3Q7XG50eXBlIFNjcmlwdFR5cGUgPSAodHlwZW9mIHNjcmlwdFR5cGVzKVtudW1iZXJdO1xuXG5mdW5jdGlvbiBnZXRLZXkoc2VlZDogc3RyaW5nKTogQklQMzJJbnRlcmZhY2Uge1xuICByZXR1cm4gdXR4b2xpYi5iaXAzMi5mcm9tU2VlZChjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHNlZWQpLmRpZ2VzdCgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXlUcmlwbGUoc2VlZDogc3RyaW5nKTogS2V5VHJpcGxlIHtcbiAgcmV0dXJuIFtnZXRLZXkoc2VlZCArICcuMCcpLCBnZXRLZXkoc2VlZCArICcuMScpLCBnZXRLZXkoc2VlZCArICcuMicpXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3VwcG9ydGVkRGVwb3NpdFR5cGUobmV0d29yazogdXR4b2xpYi5OZXR3b3JrLCBzY3JpcHRUeXBlOiBTY3JpcHRUeXBlKTogYm9vbGVhbiB7XG4gIGlmIChzY3JpcHRUeXBlID09PSAncDJwa2gnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3Ayd2toJykge1xuICAgIHJldHVybiB1dHhvbGliLnN1cHBvcnRzU2Vnd2l0KG5ldHdvcmspO1xuICB9XG5cbiAgcmV0dXJuIHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5pc1N1cHBvcnRlZFNjcmlwdFR5cGUobmV0d29yaywgc2NyaXB0VHlwZSk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBrZXlzIC0gUHVia2V5cyB0byB1c2UgZm9yIGdlbmVyYXRpbmcgdGhlIGFkZHJlc3MuXG4gKiAgICAgICAgICAgICAgIElmIHNjcmlwdFR5cGUgaXMgc2luZ2xlLXNpZywgdGhlIGZpcnN0IGtleSB3aWxsIGJlIHVzZWQuXG4gKiBAcGFyYW0gc2NyaXB0VHlwZVxuICogQHBhcmFtIG5ldHdvcmtcbiAqIEByZXR1cm4ge0J1ZmZlcn0gc2NyaXB0UHViS2V5XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVNjcmlwdFB1YktleShrZXlzOiBLZXlUcmlwbGUsIHNjcmlwdFR5cGU6IFNjcmlwdFR5cGUsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IEJ1ZmZlciB7XG4gIGNvbnN0IHB1YmtleXMgPSBrZXlzLm1hcCgoaykgPT4gay5wdWJsaWNLZXkpO1xuXG4gIHN3aXRjaCAoc2NyaXB0VHlwZSkge1xuICAgIGNhc2UgJ3Ayc2gnOlxuICAgIGNhc2UgJ3Ayc2hQMndzaCc6XG4gICAgY2FzZSAncDJ3c2gnOlxuICAgIGNhc2UgJ3AydHInOlxuICAgIGNhc2UgJ3AydHJNdXNpZzInOlxuICAgICAgcmV0dXJuIHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5jcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHB1YmtleXMsIHNjcmlwdFR5cGUpLnNjcmlwdFB1YktleTtcbiAgICBjYXNlICdwMnBraCc6XG4gICAgICByZXR1cm4gdXR4b2xpYi5wYXltZW50cy5wMnBraCh7IHB1YmtleToga2V5c1swXS5wdWJsaWNLZXkgfSkub3V0cHV0IGFzIEJ1ZmZlcjtcbiAgICBjYXNlICdwMndraCc6XG4gICAgICByZXR1cm4gdXR4b2xpYi5wYXltZW50cy5wMndwa2goeyBwdWJrZXk6IGtleXNbMF0ucHVibGljS2V5IH0pLm91dHB1dCBhcyBCdWZmZXI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgb3V0cHV0IHR5cGUgJHtzY3JpcHRUeXBlfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFkZHJlc3NlcyhuOiB1dHhvbGliLk5ldHdvcmspOiBbZm9ybWF0OiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZ11bXSB7XG4gIGNvbnN0IGtleXMgPSBnZXRLZXlUcmlwbGUoJ3BhcnNlQWRkcmVzcycpO1xuICByZXR1cm4gc2NyaXB0VHlwZXNcbiAgICAuZmlsdGVyKCh0KSA9PiBpc1N1cHBvcnRlZERlcG9zaXRUeXBlKG4sIHQpKVxuICAgIC5mbGF0TWFwKCh0KSA9PlxuICAgICAgdXR4b2xpYi5hZGRyZXNzRm9ybWF0LmFkZHJlc3NGb3JtYXRzXG4gICAgICAgIC5maWx0ZXIoKGZvcm1hdCkgPT4gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LmlzU3VwcG9ydGVkQWRkcmVzc0Zvcm1hdChmb3JtYXQsIG4pKVxuICAgICAgICAubWFwKChmb3JtYXQpOiBbc3RyaW5nLCBzdHJpbmddID0+IFtcbiAgICAgICAgICBmb3JtYXQsXG4gICAgICAgICAgdXR4b2xpYi5hZGRyZXNzRm9ybWF0LmZyb21PdXRwdXRTY3JpcHRXaXRoRm9ybWF0KGNyZWF0ZVNjcmlwdFB1YktleShrZXlzLCB0LCBuKSwgZm9ybWF0LCBuKSxcbiAgICAgICAgXSlcbiAgICApO1xufVxuXG5mdW5jdGlvbiBwYXJzZShhZGRyZXNzOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdKSB7XG4gIHJldHVybiBnZXRBZGRyZXNzUGFyc2VyKHlhcmdzLmNvbW1hbmQoY21kUGFyc2VBZGRyZXNzKS5wYXJzZVN5bmMoYXJncykpLnBhcnNlKGFkZHJlc3MpO1xufVxuXG5mdW5jdGlvbiB0ZXN0UGFyc2VBZGRyZXNzKFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssXG4gIGFkZHJlc3NGb3JtYXQ6IHN0cmluZyxcbiAgYWRkcmVzczogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgc3VmZml4OiBzdHJpbmdcbikge1xuICBkZXNjcmliZShgcGFyc2UgYWRkcmVzcyAke2FkZHJlc3N9IHdpdGggYXJndW1lbnRzICR7YXJncy5qb2luKCcgJyl9YCwgZnVuY3Rpb24gKCkge1xuICAgIGl0KGBmb3JtYXRzIGFkZHJlc3NgLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRUcmVlTm9Db2xvcihwYXJzZShhZGRyZXNzLCBhcmdzKSwgeyBzaG93QWxsOiB0cnVlIH0pO1xuICAgICAgY29uc3QgYWRkck5vQ29sb24gPSBhZGRyZXNzLnJlcGxhY2UoJzonLCAnXycpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICBhd2FpdCBnZXRGaXh0dXJlU3RyaW5nKFxuICAgICAgICAgIGB0ZXN0L2ZpeHR1cmVzL2Zvcm1hdEFkZHJlc3NfJHt1dHhvbGliLmdldE5ldHdvcmtOYW1lKG5ldHdvcmspfV8ke2FkZHJlc3NGb3JtYXR9XyR7YWRkck5vQ29sb259JHtzdWZmaXh9YCxcbiAgICAgICAgICBmb3JtYXR0ZWRcbiAgICAgICAgKSxcbiAgICAgICAgZm9ybWF0dGVkXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn1cblxudXR4b2xpYi5nZXROZXR3b3JrTGlzdCgpLmZvckVhY2goKG4pID0+IHtcbiAgZ2V0QWRkcmVzc2VzKG4pLmZvckVhY2goKFthZGRyZXNzRm9ybWF0LCBhZGRyZXNzXSwgaSkgPT4ge1xuICAgIHRlc3RQYXJzZUFkZHJlc3MobiwgYWRkcmVzc0Zvcm1hdCwgYWRkcmVzcywgW10sICcudHh0Jyk7XG4gICAgaWYgKFt1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4sIHV0eG9saWIubmV0d29ya3MuYml0Y29pbmNhc2gsIHV0eG9saWIubmV0d29ya3MuZWNhc2hdLmluY2x1ZGVzKG4pICYmIGkgPT09IDApIHtcbiAgICAgIHRlc3RQYXJzZUFkZHJlc3MobiwgYWRkcmVzc0Zvcm1hdCwgYWRkcmVzcywgWyctLWFsbCddLCAnLmFsbC50eHQnKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parseTransaction.d.ts.map
@@ -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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvcGFyc2VUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtCQUErQjtBQUMvQixpQ0FBaUM7QUFDakMsZ0RBQWdEO0FBQ2hELHlDQUE2RztBQUU3Ryw4Q0FBMEQ7QUFVMUQsU0FBUyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQXdCO0lBQ2hELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQVMsU0FBUztJQUNoQixPQUFRLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixDQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDbEgsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQWdCLEVBQUU7Z0JBQ3RGLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRTtvQkFDL0IsT0FBTzt3QkFDTCxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7d0JBQzFELEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtxQkFDOUQsQ0FBQztpQkFDSDtnQkFDRCxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO0lBQ3RFLFFBQVEsQ0FBQyxTQUFTLFdBQVcsSUFBSSxVQUFVLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLE9BQU8sQ0FBQztRQUN0RyxPQUFPO0tBQ1IsQ0FBQyxFQUFFLEVBQUU7UUFDSixTQUFTLEtBQUssQ0FBQyxFQUFZLEVBQUUsV0FBd0M7WUFDbkUsT0FBTyxzQkFBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFRLENBQUMsQ0FBQyxLQUFLLENBQy9HLEVBQUUsRUFDRjtnQkFDRSxXQUFXO2FBQ1osQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksT0FBc0IsQ0FBQztRQUMzQixNQUFNLENBQUMsS0FBSztZQUNWLE9BQU8sR0FBRyxNQUFNLHNDQUEyQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUNwRSxVQUFVO2dCQUNWLFNBQVM7Z0JBQ1QsV0FBVzthQUNaLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUNYLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0IsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO2dCQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDakQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3BDLEVBQUUsQ0FBQyx3QkFBd0IsV0FBVyxHQUFHLEVBQUUsS0FBSztnQkFDOUMsSUFBSSxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO29CQUN2QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ2I7Z0JBQ0QsTUFBTSxTQUFTLEdBQUcsNEJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDN0csT0FBTztpQkFDUixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUMxRSxNQUFNLENBQUMsV0FBVyxDQUNoQixTQUFTLEVBQ1QsTUFBTSwyQkFBZ0IsQ0FDcEIsd0JBQXdCLFdBQVcsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FDeEUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQzlCLE1BQU0sRUFDTixTQUFTLENBQ1YsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb2NoYSBmcm9tICdtb2NoYSc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgZ2V0Rml4dHVyZVN0cmluZywgZ2V0VHJhbnNhY3Rpb25XaXRoU3BlbmRUeXBlLCBmb3JtYXRUcmVlTm9Db2xvciwgUGFyc2VkRml4dHVyZSB9IGZyb20gJy4vZml4dHVyZXMnO1xuaW1wb3J0IHsgUGFyc2VyTm9kZSB9IGZyb20gJy4uL3NyYy9QYXJzZXInO1xuaW1wb3J0IHsgY21kUGFyc2VUeCwgZ2V0VHhQYXJzZXIgfSBmcm9tICcuLi9zcmMvY29tbWFuZHMnO1xuaW1wb3J0IHsgUGFyc2VyVHggfSBmcm9tICcuLi9zcmMvUGFyc2VyVHgnO1xuXG50eXBlIFRlc3RQYXJhbXMgPSB7XG4gIHNjcmlwdFR5cGU6IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mMztcbiAgc3BlbmRUeXBlOiAna2V5UGF0aCcgfCAnc2NyaXB0UGF0aCcgfCB1bmRlZmluZWQ7XG4gIGZpeHR1cmVUeXBlOiAncHNidFVuc2lnbmVkJyB8ICdwc2J0SGFsZlNpZ25lZCcgfCAncHNidEZ1bGxTaWduZWQnIHwgJ25ldHdvcmtGdWxsU2lnbmVkJztcbiAgc2hvd0FsbDogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIGdldEFyZ3MoeyBzaG93QWxsIH06IHsgc2hvd0FsbDogYm9vbGVhbiB9KTogc3RyaW5nW10ge1xuICByZXR1cm4gc2hvd0FsbCA/IFsnLS1hbGwnXSA6IFtdO1xufVxuXG5mdW5jdGlvbiBnZXRQYXJhbXMoKTogVGVzdFBhcmFtc1tdIHtcbiAgcmV0dXJuIChbJ3BzYnRVbnNpZ25lZCcsICdwc2J0SGFsZlNpZ25lZCcsICdwc2J0RnVsbFNpZ25lZCcsICduZXR3b3JrRnVsbFNpZ25lZCddIGFzIGNvbnN0KS5mbGF0TWFwKChmaXh0dXJlVHlwZSkgPT4ge1xuICAgIHJldHVybiBbZmFsc2UsIHRydWVdLmZsYXRNYXAoKHNob3dBbGwpID0+IHtcbiAgICAgIHJldHVybiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuc2NyaXB0VHlwZXMyT2YzLmZsYXRNYXAoKHNjcmlwdFR5cGUpOiBUZXN0UGFyYW1zW10gPT4ge1xuICAgICAgICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHJNdXNpZzInKSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgc2NyaXB0VHlwZSwgc3BlbmRUeXBlOiAna2V5UGF0aCcsIHNob3dBbGwsIGZpeHR1cmVUeXBlIH0sXG4gICAgICAgICAgICB7IHNjcmlwdFR5cGUsIHNwZW5kVHlwZTogJ3NjcmlwdFBhdGgnLCBzaG93QWxsLCBmaXh0dXJlVHlwZSB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt7IHNjcmlwdFR5cGUsIHNwZW5kVHlwZTogdW5kZWZpbmVkLCBzaG93QWxsLCBmaXh0dXJlVHlwZSB9XTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZ2V0UGFyYW1zKCkuZm9yRWFjaCgoeyBzY3JpcHRUeXBlLCBzcGVuZFR5cGUsIGZpeHR1cmVUeXBlLCBzaG93QWxsIH0pID0+IHtcbiAgZGVzY3JpYmUoYHBhcnNlICR7Zml4dHVyZVR5cGV9ICR7c2NyaXB0VHlwZX0gJHtzcGVuZFR5cGUgPyBzcGVuZFR5cGUgOiAnZGVmYXVsdCd9IHNwZW5kIFthcmdzPSR7Z2V0QXJncyh7XG4gICAgc2hvd0FsbCxcbiAgfSl9YCwgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHBhcnNlKHR4OiBQYXJzZXJUeCwgcHJldk91dHB1dHM/OiB1dHhvbGliLlR4T3V0cHV0PGJpZ2ludD5bXSk6IFBhcnNlck5vZGUge1xuICAgICAgcmV0dXJuIGdldFR4UGFyc2VyKHlhcmdzLmNvbW1hbmQoY21kUGFyc2VUeCkucGFyc2UoWy4uLmdldEFyZ3MoeyBzaG93QWxsIH0pLCAnLS1wYXJzZUVycm9yPXRocm93J10pIGFzIGFueSkucGFyc2UoXG4gICAgICAgIHR4LFxuICAgICAgICB7XG4gICAgICAgICAgcHJldk91dHB1dHMsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGZpeHR1cmU6IFBhcnNlZEZpeHR1cmU7XG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZpeHR1cmUgPSBhd2FpdCBnZXRUcmFuc2FjdGlvbldpdGhTcGVuZFR5cGUodXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0LCB7XG4gICAgICAgIHNjcmlwdFR5cGUsXG4gICAgICAgIHNwZW5kVHlwZSxcbiAgICAgICAgZml4dHVyZVR5cGUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KGBwYXJzZXNgLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwYXJzZShmaXh0dXJlLnRyYW5zYWN0aW9uKTtcbiAgICAgIGlmIChmaXh0dXJlLnByZXZPdXRwdXRzKSB7XG4gICAgICAgIHBhcnNlKGZpeHR1cmUudHJhbnNhY3Rpb24sIGZpeHR1cmUucHJldk91dHB1dHMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgW2ZhbHNlLCB0cnVlXS5mb3JFYWNoKCh1c2VQcmV2T3V0cykgPT4ge1xuICAgICAgaXQoYGZvcm1hdHMgW3VzZVByZXZPdXRzPSR7dXNlUHJldk91dHN9XWAsIGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBtb2NoYS5Db250ZXh0KSB7XG4gICAgICAgIGlmICh1c2VQcmV2T3V0cyAmJiAhZml4dHVyZS5wcmV2T3V0cHV0cykge1xuICAgICAgICAgIHRoaXMuc2tpcCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdFRyZWVOb0NvbG9yKHBhcnNlKGZpeHR1cmUudHJhbnNhY3Rpb24sIHVzZVByZXZPdXRzID8gZml4dHVyZS5wcmV2T3V0cHV0cyA6IHVuZGVmaW5lZCksIHtcbiAgICAgICAgICBzaG93QWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZml4dHVyZU5hbWUgPSBzcGVuZFR5cGUgPyBgJHtzY3JpcHRUeXBlfV8ke3NwZW5kVHlwZX1gIDogc2NyaXB0VHlwZTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICAgIGZvcm1hdHRlZCxcbiAgICAgICAgICBhd2FpdCBnZXRGaXh0dXJlU3RyaW5nKFxuICAgICAgICAgICAgYHRlc3QvZml4dHVyZXMvZm9ybWF0XyR7Zml4dHVyZU5hbWV9XyR7Zml4dHVyZVR5cGV9JHtzaG93QWxsID8gJ19hbGwnIDogJyd9JHtcbiAgICAgICAgICAgICAgdXNlUHJldk91dHMgPyAnX3ByZXZPdXRzJyA6ICcnXG4gICAgICAgICAgICB9LnR4dGAsXG4gICAgICAgICAgICBmb3JtYXR0ZWRcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==