@bitgo/utxo-bin
Version:
Command-line utility for BitGo UTXO transactions
71 lines • 9.43 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatSat = formatSat;
exports.formatTree = formatTree;
exports.formatObjAsTree = formatObjAsTree;
const chalk_1 = require("chalk");
const archy_1 = __importDefault(require("archy"));
const Parser_1 = require("./Parser");
const parseUnknown_1 = require("./parseUnknown");
const hideDefault = ['pubkeys', 'sequence', 'locktime', 'scriptSig', 'witness'];
function formatSat(v) {
return (Number(v) / 1e8).toFixed(8);
}
function getDefaultChalk() {
if (process.env.NO_COLOR) {
return new chalk_1.Instance({ level: 0 });
}
return new chalk_1.Instance();
}
function formatTree(n, { hide = hideDefault, chalk = getDefaultChalk() } = {}) {
function getLabel(label, v, { showUndefined } = { showUndefined: false }) {
const arr = [chalk.bold(label)];
if (v === undefined) {
if (showUndefined) {
arr.push(chalk.dim('undefined'));
}
}
else {
arr.push(String(v));
}
return arr.join(': ');
}
function getLabelFromValue(v) {
switch (typeof v) {
case 'undefined':
return undefined;
case 'boolean':
case 'number':
case 'string':
case 'bigint':
return String(v);
case 'object':
if (v === null) {
return String(v);
}
if (Buffer.isBuffer(v)) {
return `${v.toString('hex')} ${chalk.dim(`(${v.length} bytes)`)}`;
}
if (v instanceof Uint8Array) {
return getLabelFromValue(Buffer.from(v));
}
}
throw new Error(`could not get label from value ${typeof v}`);
}
function toArchy(n) {
return {
label: getLabel(n.label, getLabelFromValue(n.value), { showUndefined: !Boolean(n.nodes?.length) }),
nodes: n.nodes ? n.nodes.flatMap((e) => (hide.includes(e.label) ? [] : [toArchy(e)])) : undefined,
};
}
return (0, archy_1.default)(toArchy(n));
}
function formatObjAsTree(label, obj, { hide = hideDefault, chalk = getDefaultChalk() } = {}) {
const p = new Parser_1.Parser({ parseError: 'continue' });
const node = (0, parseUnknown_1.parseUnknown)(p, label, obj, { omit: hide });
return formatTree(node, { hide, chalk });
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVFBLDhCQUVDO0FBY0QsZ0NBbURDO0FBRUQsMENBUUM7QUFyRkQsaUNBQXdDO0FBQ3hDLGtEQUEwQjtBQUUxQixxQ0FBK0Q7QUFDL0QsaURBQThDO0FBRTlDLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLFNBQWdCLFNBQVMsQ0FBQyxDQUFrQjtJQUMxQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBT0QsU0FBUyxlQUFlO0lBQ3RCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksZ0JBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxPQUFPLElBQUksZ0JBQVEsRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFnQixVQUFVLENBQ3hCLENBQWEsRUFDYixFQUFFLElBQUksR0FBRyxXQUFXLEVBQUUsS0FBSyxHQUFHLGVBQWUsRUFBRSxLQUFvQixFQUFFO0lBRXJFLFNBQVMsUUFBUSxDQUNmLEtBQXNCLEVBQ3RCLENBQVcsRUFDWCxFQUFFLGFBQWEsS0FBaUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFO1FBRXhFLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMs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IGFyY2h5IGZyb20gJ2FyY2h5JztcblxuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlLCBQYXJzZXJOb2RlVmFsdWUgfSBmcm9tICcuL1BhcnNlcic7XG5pbXBvcnQgeyBwYXJzZVVua25vd24gfSBmcm9tICcuL3BhcnNlVW5rbm93bic7XG5cbmNvbnN0IGhpZGVEZWZhdWx0ID0gWydwdWJrZXlzJywgJ3NlcXVlbmNlJywgJ2xvY2t0aW1lJywgJ3NjcmlwdFNpZycsICd3aXRuZXNzJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTYXQodjogbnVtYmVyIHwgYmlnaW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIChOdW1iZXIodikgLyAxZTgpLnRvRml4ZWQoOCk7XG59XG5cbnR5cGUgRm9ybWF0T3B0aW9ucyA9IHtcbiAgaGlkZT86IHN0cmluZ1tdO1xuICBjaGFsaz86IENoYWxrO1xufTtcblxuZnVuY3Rpb24gZ2V0RGVmYXVsdENoYWxrKCk6IENoYWxrIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PX0NPTE9SKSB7XG4gICAgcmV0dXJuIG5ldyBJbnN0YW5jZSh7IGxldmVsOiAwIH0pO1xuICB9XG4gIHJldHVybiBuZXcgSW5zdGFuY2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRyZWUoXG4gIG46IFBhcnNlck5vZGUsXG4gIHsgaGlkZSA9IGhpZGVEZWZhdWx0LCBjaGFsayA9IGdldERlZmF1bHRDaGFsaygpIH06IEZvcm1hdE9wdGlvbnMgPSB7fVxuKTogc3RyaW5nIHtcbiAgZnVuY3Rpb24gZ2V0TGFiZWwoXG4gICAgbGFiZWw6IHN0cmluZyB8IG51bWJlcixcbiAgICB2PzogdW5rbm93bixcbiAgICB7IHNob3dVbmRlZmluZWQgfTogeyBzaG93VW5kZWZpbmVkOiBib29sZWFuIH0gPSB7IHNob3dVbmRlZmluZWQ6IGZhbHNlIH1cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcnIgPSBbY2hhbGsuYm9sZChsYWJlbCldO1xuICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChzaG93VW5kZWZpbmVkKSB7XG4gICAgICAgIGFyci5wdXNoKGNoYWxrLmRpbSgndW5kZWZpbmVkJykpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhcnIucHVzaChTdHJpbmcodikpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyLmpvaW4oJzogJyk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRMYWJlbEZyb21WYWx1ZSh2OiBQYXJzZXJOb2RlVmFsdWUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAodHlwZW9mIHYpIHtcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAnYmlnaW50JzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2KTtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIGlmICh2ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHYpKSB7XG4gICAgICAgICAgcmV0dXJuIGAke3YudG9TdHJpbmcoJ2hleCcpfSAke2NoYWxrLmRpbShgKCR7di5sZW5ndGh9IGJ5dGVzKWApfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgICAgcmV0dXJuIGdldExhYmVsRnJvbVZhbHVlKEJ1ZmZlci5mcm9tKHYpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCBnZXQgbGFiZWwgZnJvbSB2YWx1ZSAke3R5cGVvZiB2fWApO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9BcmNoeShuOiBQYXJzZXJOb2RlKTogYXJjaHkuRGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBnZXRMYWJlbChuLmxhYmVsLCBnZXRMYWJlbEZyb21WYWx1ZShuLnZhbHVlKSwgeyBzaG93VW5kZWZpbmVkOiAhQm9vbGVhbihuLm5vZGVzPy5sZW5ndGgpIH0pLFxuICAgICAgbm9kZXM6IG4ubm9kZXMgPyBuLm5vZGVzLmZsYXRNYXAoKGUpID0+IChoaWRlLmluY2x1ZGVzKGUubGFiZWwpID8gW10gOiBbdG9BcmNoeShlKV0pKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGFyY2h5KHRvQXJjaHkobikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0T2JqQXNUcmVlKFxuICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyLFxuICBvYmo6IHVua25vd24sXG4gIHsgaGlkZSA9IGhpZGVEZWZhdWx0LCBjaGFsayA9IGdldERlZmF1bHRDaGFsaygpIH06IEZvcm1hdE9wdGlvbnMgPSB7fVxuKTogc3RyaW5nIHtcbiAgY29uc3QgcCA9IG5ldyBQYXJzZXIoeyBwYXJzZUVycm9yOiAnY29udGludWUnIH0pO1xuICBjb25zdCBub2RlID0gcGFyc2VVbmtub3duKHAsIGxhYmVsLCBvYmosIHsgb21pdDogaGlkZSB9KTtcbiAgcmV0dXJuIGZvcm1hdFRyZWUobm9kZSwgeyBoaWRlLCBjaGFsayB9KTtcbn1cbiJdfQ==