UNPKG

@controlplane/cli

Version:

Control Plane Corporation CLI

68 lines 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.timeoutAsync = exports.retryFn = exports.pipe = exports.promiseOf = void 0; const errors_1 = require("./errors"); const time_1 = require("./time"); function promiseOf(f) { return new Promise((resolve, reject) => { f((err, result) => { if (err) { reject(err); } else { resolve(result); } }); }); } exports.promiseOf = promiseOf; const _pipe = (f, g) => (...args) => g(f(...args)); //https://vanslaars.io/blog/create-pipe-function/ function pipe(...fns) { return fns.reduce(_pipe); } exports.pipe = pipe; async function retryFn(fn, options) { const defaultIntervalSec = 5; const defaultRepeatTimes = 5; const defaultOptions = { intervalSec: defaultIntervalSec, repeatTimes: defaultRepeatTimes }; if (!options) options = defaultOptions; for (const [defaultKey, defaultValue] of Object.entries(defaultOptions)) { if (!options[defaultKey]) options[defaultKey] = defaultValue; } const { intervalSec: _intervalSec, repeatTimes: _repeatTimes, onSuccess, onFailure } = options; const intervalSec = _intervalSec; const repeatTimes = _repeatTimes; let counter = 0; while (counter < repeatTimes) { try { counter += 1; const res = await fn(counter); if (onSuccess) { await onSuccess(); } return res; } catch (e) { await (0, time_1.sleep)(intervalSec * 1000); } } if (onFailure) { await onFailure(); } return false; } exports.retryFn = retryFn; function timeoutAsync(ms) { let timeoutId; const timeoutPromise = new Promise((_, reject) => { timeoutId = setTimeout(() => { reject(new errors_1.TimeoutError()); }, ms); }); return { timeoutPromise, timeoutId }; } exports.timeoutAsync = timeoutAsync; //# sourceMappingURL=functions.js.map