BlueWallet/blue_modules/bc-ur/dist/encodeUR.js
2020-06-24 12:56:35 +01:00

37 lines
1.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.encodeUR = void 0;
var miniCbor_1 = require("./miniCbor");
var bc_bech32_1 = require("bc-bech32");
var utils_1 = require("./utils");
var composeUR = function (payload, type) {
if (type === void 0) { type = 'bytes'; }
return "ur:" + type + "/" + payload;
};
var composeDigest = function (payload, digest) {
return digest + "/" + payload;
};
var composeSequencing = function (payload, index, total) {
return index + 1 + "of" + total + "/" + payload;
};
var composeHeadersToFragments = function (fragments, digest, type) {
if (type === void 0) { type = 'bytes'; }
if (fragments.length === 1) {
return [composeUR(fragments[0])];
}
else {
return fragments.map(function (f, index) {
return utils_1.compose3(function (payload) { return composeUR(payload, type); }, function (payload) { return composeSequencing(payload, index, fragments.length); }, function (payload) { return composeDigest(payload, digest); })(f);
});
}
};
exports.encodeUR = function (payload, fragmentCapacity) {
if (fragmentCapacity === void 0) { fragmentCapacity = 200; }
var cborPayload = miniCbor_1.encodeSimpleCBOR(payload);
var bc32Payload = bc_bech32_1.encodeBc32Data(cborPayload);
var digest = utils_1.sha256Hash(Buffer.from(cborPayload, 'hex')).toString('hex');
var bc32Digest = bc_bech32_1.encodeBc32Data(digest);
var fragments = bc32Payload.match(new RegExp('.{1,' + fragmentCapacity + '}', 'g'));
return composeHeadersToFragments(fragments, bc32Digest, 'bytes');
};
//# sourceMappingURL=encodeUR.js.map