bluzelle-binary-codec
Version:
bluzelle binary codec
53 lines (46 loc) • 2.38 kB
JavaScript
/* eslint-disable func-style */
var types = require('./types');var _require =
require('./hash-prefixes'),HashPrefix = _require.HashPrefix;var _require2 =
require('./serdes/binary-parser'),BinaryParser = _require2.BinaryParser;var _require3 =
require('./serdes/binary-serializer'),BinarySerializer = _require3.BinarySerializer,BytesList = _require3.BytesList;var _require4 =
require('./utils/bytes-utils'),bytesToHex = _require4.bytesToHex,slice = _require4.slice,parseBytes = _require4.parseBytes;var _require5 =
require('./hashes'),sha512Half = _require5.sha512Half,transactionID = _require5.transactionID;
var makeParser = function makeParser(bytes) {return new BinaryParser(bytes);};
var readJSON = function readJSON(parser) {return parser.readType(types.STObject).toJSON();};
var binaryToJSON = function binaryToJSON(bytes) {return readJSON(makeParser(bytes));};
function serializeObject(object) {var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};var
prefix = opts.prefix,suffix = opts.suffix,_opts$signingFieldsOn = opts.signingFieldsOnly,signingFieldsOnly = _opts$signingFieldsOn === undefined ? false : _opts$signingFieldsOn;
var bytesList = new BytesList();
if (prefix) {
bytesList.put(prefix);
}
var filter = signingFieldsOnly ? function (f) {return f.isSigningField;} : undefined;
types.STObject.from(object).toBytesSink(bytesList, filter);
if (suffix) {
bytesList.put(suffix);
}
return bytesList.toBytes();
}
function signingData(tx) {var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : HashPrefix.transactionSig;
return serializeObject(tx, { prefix: prefix, signingFieldsOnly: true });
}
function multiSigningData(tx, signingAccount) {
var prefix = HashPrefix.transactionMultiSig;
var suffix = types.AccountID.from(signingAccount).toBytes();
return serializeObject(tx, { prefix: prefix, suffix: suffix, signingFieldsOnly: true });
}
module.exports = {
BinaryParser: BinaryParser,
BinarySerializer: BinarySerializer,
BytesList: BytesList,
makeParser: makeParser,
serializeObject: serializeObject,
readJSON: readJSON,
bytesToHex: bytesToHex,
parseBytes: parseBytes,
multiSigningData: multiSigningData,
signingData: signingData,
binaryToJSON: binaryToJSON,
sha512Half: sha512Half,
transactionID: transactionID,
slice: slice };
;