UNPKG

@radixdlt/tx-parser

Version:
44 lines 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Transaction = void 0; const neverthrow_1 = require("neverthrow"); const instruction_1 = require("./instruction"); const crypto_1 = require("@radixdlt/crypto"); const util_1 = require("@radixdlt/util"); const fromBuffer = (blob) => { const instructions = []; const bufferReader = util_1.BufferReader.create(blob); while (!bufferReader.finishedParsing()) { const instructionRes = instruction_1.Instruction.parseFromBufferReader(bufferReader); if (instructionRes.isErr()) { return (0, neverthrow_1.err)(instructionRes.error); } const instruction = instructionRes.value; instructions.push(instruction); } const reassembleBlob = () => instructions .map(i => i.toBuffer()) .reduce((a, i) => Buffer.concat([a, i]), Buffer.alloc(0)); const reassembledTxBlob = reassembleBlob(); if (reassembledTxBlob.toString('hex') !== blob.toString('hex')) { throw new Error(`Incorrect implementation, reasambled blob NEQ original blob.`); } const txID = () => (0, crypto_1.sha256Twice)(reassembledTxBlob).toString('hex'); const toString = () => [ 'Instructions:', instructions .map(i => `|- ${i.toString()}`) // .map(s => s.trimStart()) .join('\n'), ].join('\n'); return (0, neverthrow_1.ok)({ instructions, txID, toBuffer: () => reassembledTxBlob, toString, }); }; exports.Transaction = { fromBuffer, }; //# sourceMappingURL=transaction.js.map