send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
94 lines • 6.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.retryNTimes = exports.fallback = exports.onlyTestnet = exports.onlyMainnet = exports.extractError = exports.sleep = void 0;
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
exports.sleep = sleep;
const extractError = (error) => {
if (error && typeof error === "object") {
if (error.response) {
return (0, exports.extractError)(error.response);
}
if (error.error) {
return (0, exports.extractError)(error.error);
}
if (error.message) {
return (0, exports.extractError)(error.message);
}
if (error.data) {
return (0, exports.extractError)(error.data);
}
if (error.context) {
return (0, exports.extractError)(error.context);
}
if (error.statusText) {
return (0, exports.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);
};
exports.extractError = extractError;
const onlyMainnet = (x, testnet) => testnet ? undefined : x;
exports.onlyMainnet = onlyMainnet;
const onlyTestnet = (x, testnet) => testnet ? x : undefined;
exports.onlyTestnet = onlyTestnet;
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");
};
exports.fallback = fallback;
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 = (0, exports.extractError)(error);
if (errorMessage) {
// tslint:disable-next-line: no-object-mutation
error.message += ` (${errorMessage})`;
}
throw error;
}
}
await (0, exports.sleep)(500);
}
throw returnError;
};
exports.retryNTimes = retryNTimes;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFPLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FDaEMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUR6QyxRQUFBLEtBQUssU0FDb0M7QUFFL0MsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQVUsRUFBRTtJQUMvQyxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDcEMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU8sSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QztRQUNELElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtZQUNiLE9BQU8sSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNmLE9BQU8sSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNaLE9BQU8sSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNmLE9BQU8sSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNsQixPQUFPLElBQUEsb0JBQVksRUFBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDekM7UUFDRCxJQUFJO1lBQ0EsT0FBTyxJQUFJLENB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