@fluent-wallet/hw-app-conflux
Version:
Ledger Hardware Wallet Conflux Application API
83 lines • 2.43 kB
JavaScript
export function defer() {
let resolve, reject;
const 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,
resolve,
reject,
};
}
// TODO use bip32-path library
export function splitPath(path) {
const result = [];
const components = path.split("/");
components.forEach((element) => {
let 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;
}
// TODO use async await
export function eachSeries(arr, fun) {
return arr.reduce((p, e) => p.then(() => fun(e)), Promise.resolve());
}
export 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(() => iterate(0, arr, []));
}
export function doIf(condition, callback) {
return Promise.resolve().then(() => {
if (condition) {
return callback();
}
});
}
export function asyncWhile(predicate, callback) {
function iterate(result) {
if (!predicate()) {
return result;
}
else {
return callback().then((res) => {
result.push(res);
return iterate(result);
});
}
}
return Promise.resolve([]).then(iterate);
}
export function isLegacyVersion(version) {
const parts = version.split(".");
if (parts.length !== 3) {
return false;
}
const major = Number.parseInt(parts[0], 10);
// the legacy version is 1.x.x
if (major === 1)
return true;
return false;
}
export function splitMessage(message, maxSize) {
return Array.from({ length: Math.ceil(message.length / maxSize) }, (_, i) => message.subarray(i * maxSize, (i + 1) * maxSize));
}
//# sourceMappingURL=utils.js.map