@gandlaf21/bc-ur
Version:
A JS implementation of the Uniform Resources (UR) specification from Blockchain Commons
72 lines (71 loc) • 3.05 kB
JavaScript
;
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var fountainEncoder_1 = __importDefault(require("./fountainEncoder"));
var bytewords_1 = __importDefault(require("./bytewords"));
var UREncoder = /** @class */ (function () {
function UREncoder(_ur, maxFragmentLength, firstSeqNum, minFragmentLength) {
this.ur = _ur;
this.fountainEncoder = new fountainEncoder_1.default(_ur.cbor, maxFragmentLength, firstSeqNum, minFragmentLength);
}
Object.defineProperty(UREncoder.prototype, "fragmentsLength", {
get: function () { return this.fountainEncoder.fragmentsLength; },
enumerable: false,
configurable: true
});
Object.defineProperty(UREncoder.prototype, "fragments", {
get: function () { return this.fountainEncoder.fragments; },
enumerable: false,
configurable: true
});
Object.defineProperty(UREncoder.prototype, "messageLength", {
get: function () { return this.fountainEncoder.messageLength; },
enumerable: false,
configurable: true
});
Object.defineProperty(UREncoder.prototype, "cbor", {
get: function () { return this.ur.cbor; },
enumerable: false,
configurable: true
});
UREncoder.prototype.encodeWhole = function () {
var _this = this;
return __spreadArrays(new Array(this.fragmentsLength)).map(function () { return _this.nextPart(); });
};
UREncoder.prototype.nextPart = function () {
var part = this.fountainEncoder.nextPart();
if (this.fountainEncoder.isSinglePart()) {
return UREncoder.encodeSinglePart(this.ur);
}
else {
return UREncoder.encodePart(this.ur.type, part);
}
};
UREncoder.encodeUri = function (scheme, pathComponents) {
var path = pathComponents.join('/');
return [scheme, path].join(':');
};
UREncoder.encodeUR = function (pathComponents) {
return UREncoder.encodeUri('ur', pathComponents);
};
UREncoder.encodePart = function (type, part) {
var seq = part.seqNum + "-" + part.seqLength;
var body = bytewords_1.default.encode(part.cbor().toString('hex'), bytewords_1.default.STYLES.MINIMAL);
return UREncoder.encodeUR([type, seq, body]);
};
UREncoder.encodeSinglePart = function (ur) {
var body = bytewords_1.default.encode(ur.cbor.toString('hex'), bytewords_1.default.STYLES.MINIMAL);
return UREncoder.encodeUR([ur.type, body]);
};
return UREncoder;
}());
exports.default = UREncoder;