@fluent-wallet/hw-app-conflux
Version:
Ledger Hardware Wallet Conflux Application API
96 lines • 2.94 kB
JavaScript
;
exports.__esModule = true;
exports.splitMessage = exports.isLegacyVersion = exports.asyncWhile = exports.doIf = exports.foreach = exports.eachSeries = exports.splitPath = exports.defer = void 0;
function defer() {
var resolve, reject;
var promise = new Promise(function (success, failure) {
resolve = success;
reject = failure;
});
if (!resolve || !reject)
throw "defer() error"; // this never happens and is just to make flow happy
return {
promise: promise,
resolve: resolve,
reject: reject
};
}
exports.defer = defer;
// TODO use bip32-path library
function splitPath(path) {
var result = [];
var components = path.split("/");
components.forEach(function (element) {
var number = parseInt(element, 10);
if (isNaN(number)) {
return; // FIXME shouldn't it throws instead?
}
if (element.length > 1 && element[element.length - 1] === "'") {
number += 0x80000000;
}
result.push(number);
});
return result;
}
exports.splitPath = splitPath;
// TODO use async await
function eachSeries(arr, fun) {
return arr.reduce(function (p, e) { return p.then(function () { return fun(e); }); }, Promise.resolve());
}
exports.eachSeries = eachSeries;
function foreach(arr, callback) {
function iterate(index, array, result) {
if (index >= array.length) {
return result;
}
else
return callback(array[index], index).then(function (res) {
result.push(res);
return iterate(index + 1, array, result);
});
}
return Promise.resolve().then(function () { return iterate(0, arr, []); });
}
exports.foreach = foreach;
function doIf(condition, callback) {
return Promise.resolve().then(function () {
if (condition) {
return callback();
}
});
}
exports.doIf = doIf;
function asyncWhile(predicate, callback) {
function iterate(result) {
if (!predicate()) {
return result;
}
else {
return callback().then(function (res) {
result.push(res);
return iterate(result);
});
}
}
return Promise.resolve([]).then(iterate);
}
exports.asyncWhile = asyncWhile;
function isLegacyVersion(version) {
var parts = version.split(".");
if (parts.length !== 3) {
return false;
}
var major = Number.parseInt(parts[0], 10);
// the legacy version is 1.x.x
if (major === 1)
return true;
return false;
}
exports.isLegacyVersion = isLegacyVersion;
function splitMessage(message, maxSize) {
return Array.from({ length: Math.ceil(message.length / maxSize) }, function (_, i) {
return message.subarray(i * maxSize, (i + 1) * maxSize);
});
}
exports.splitMessage = splitMessage;
//# sourceMappingURL=utils.js.map