send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
85 lines • 5.77 kB
JavaScript
export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
export const extractError = (error) => {
if (error && typeof error === "object") {
if (error.response) {
return extractError(error.response);
}
if (error.error) {
return extractError(error.error);
}
if (error.message) {
return extractError(error.message);
}
if (error.data) {
return extractError(error.data);
}
if (error.context) {
return extractError(error.context);
}
if (error.statusText) {
return extractError(error.statusText);
}
try {
return JSON.stringify(error);
}
catch (error) {
// Ignore JSON error
}
}
// Remove `Error: ` prefix.
try {
if (typeof error === "string") {
if (error.slice(0, 7).toLowerCase() === "Error: ") {
// tslint:disable-next-line: no-parameter-reassignment
error = error.slice(7);
}
return error;
}
return JSON.stringify(error);
}
catch (error) {
// Ignore JSON error
}
return String(error);
};
export const onlyMainnet = (x, testnet) => testnet ? undefined : x;
export const onlyTestnet = (x, testnet) => testnet ? x : undefined;
export const fallback = async (fallbacks) => {
let firstError;
for (const fn of fallbacks) {
if (!fn) {
continue;
}
try {
return await fn();
}
catch (error) {
firstError = firstError || error;
}
}
throw firstError || new Error("No result returned");
};
export const retryNTimes = async (fnCall, retries) => {
let returnError;
for (let i = 0; i < retries; i++) {
try {
return await fnCall();
}
catch (error) {
if (String(error).match(/timeout of .* exceeded/)) {
returnError = error;
}
else {
const errorMessage = extractError(error);
if (errorMessage) {
// tslint:disable-next-line: no-object-mutation
error.message += ` (${errorMessage})`;
}
throw error;
}
}
await sleep(500);
}
throw returnError;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQ2hDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBVSxFQUFVLEVBQUU7SUFDL0MsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQ3BDLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNoQixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDYixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDZixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDWixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDZixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDbEIsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSTtZQUNBLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQztRQUFDLE9B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