UNPKG

@mavrykdynamics/taquito-michel-codec

Version:

Michelson parser/validator/formatter

62 lines (61 loc) 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatError = exports.traceDumpFunc = exports.formatStack = void 0; const micheline_1 = require("./micheline"); const michelson_typecheck_1 = require("./michelson-typecheck"); const micheline_emitter_1 = require("./micheline-emitter"); const utils_1 = require("./utils"); function formatStack(s) { if ('failed' in s) { return `[FAILED: ${(0, micheline_emitter_1.emitMicheline)(s.failed)}]`; } return s .map((v, i) => { const ann = (0, utils_1.unpackAnnotations)(v); return `[${i}${ann.v ? '/' + ann.v[0] : ''}]: ${(0, micheline_emitter_1.emitMicheline)(v)}`; }) .join('\n'); } exports.formatStack = formatStack; function traceDumpFunc(blocks, cb) { return (v) => { var _a; if (Array.isArray(v) && !blocks) { return; } const macro = (_a = v.op[micheline_1.sourceReference]) === null || _a === void 0 ? void 0 : _a.macro; const msg = `${macro ? 'Macro' : 'Op'}: ${macro ? (0, micheline_emitter_1.emitMicheline)(macro, undefined, true) + ' / ' : ''}${(0, micheline_emitter_1.emitMicheline)(v.op)} Input: ${formatStack(v.in)} Output: ${formatStack(v.out)} `; cb(msg); }; } exports.traceDumpFunc = traceDumpFunc; function formatError(err) { var _a; if (err instanceof michelson_typecheck_1.MichelsonInstructionError) { const macro = (_a = err.val[micheline_1.sourceReference]) === null || _a === void 0 ? void 0 : _a.macro; return `${macro ? 'Macro' : 'Op'}: ${macro ? (0, micheline_emitter_1.emitMicheline)(macro, undefined, true) + ' / ' : ''}${(0, micheline_emitter_1.emitMicheline)(err.val)} Stack: ${formatStack(err.stackState)} `; } else if (err instanceof utils_1.MichelsonTypeError) { const type = Array.isArray(err.val) ? '[' + err.val.map((v, i) => `[${i}]: ${(0, micheline_emitter_1.emitMicheline)(v)}`).join('; ') + ']' : (0, micheline_emitter_1.emitMicheline)(err.val); return `Type: ${type} ${err.data ? `Data: ${(0, micheline_emitter_1.emitMicheline)(err.data)} ` : ''} `; } else { return `Value: ${(0, micheline_emitter_1.emitMicheline)(err.val)}`; } } exports.formatError = formatError;