@myria/airdrop-js
Version:
Airdrop in L1 with claim based approach
32 lines • 1.91 kB
JavaScript
;
/**
* Common module.
* @module Common
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.retry = void 0;
/**
* Attempts to execute a function that returns a promise and retries if the function throws an error.
*
* @param {Function} fn - A function that returns a promise to be executed.
* @param {RetryOptions} options - Configuration options for the retry behavior.
* @returns {Promise<void>} The result of the function execution if successful.
*/
async function retry(fn, options = {}) {
const { retries = 1, delay = 0 } = options;
let lastError = null;
for (let i = 0; i < retries; i++) {
try {
return await fn(i);
}
catch (error) {
lastError = error;
if (delay > 0) {
await new Promise((resolve) => setTimeout(resolve, delay));
}
}
}
throw lastError;
}
exports.retry = retry;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL1JldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUlIOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSxLQUFLLENBQ3ZCLEVBQXNDLEVBQ3RDLFVBQXdCLEVBQUU7SUFFMUIsTUFBTSxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUMzQyxJQUFJLFNBQVMsR0FBaUIsSUFBSSxDQUFDO0lBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDRCxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsU0FBUyxHQUFHLEtBQWMsQ0FBQztZQUMzQixJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDWixNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxTQUFTLENBQUM7QUFDcEIsQ0FBQztBQWpCRCxzQkFpQkMifQ==