@nextrope/xrpl
Version:
A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser
26 lines • 797 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const DEFAULT_MIN = 100;
const DEFAULT_MAX = 1000;
class ExponentialBackoff {
constructor(opts = {}) {
var _a, _b;
this.factor = 2;
this.numAttempts = 0;
this.ms = (_a = opts.min) !== null && _a !== void 0 ? _a : DEFAULT_MIN;
this.max = (_b = opts.max) !== null && _b !== void 0 ? _b : DEFAULT_MAX;
}
get attempts() {
return this.numAttempts;
}
duration() {
const ms = this.ms * Math.pow(this.factor, this.numAttempts);
this.numAttempts += 1;
return Math.floor(Math.min(ms, this.max));
}
reset() {
this.numAttempts = 0;
}
}
exports.default = ExponentialBackoff;
//# sourceMappingURL=ExponentialBackoff.js.map