1"use strict"; 2Object.defineProperty(exports, "__esModule", { value: true }); 3var jitter_factory_1 = require("../jitter/jitter.factory"); 4var Delay = /** @class */ (function () { 5 function Delay(options) { 6 this.options = options; 7 this.attempt = 0; 8 } 9 Delay.prototype.apply = function () { 10 var _this = this; 11 return new Promise(function (resolve) { return setTimeout(resolve, _this.jitteredDelay); }); 12 }; 13 Delay.prototype.setAttemptNumber = function (attempt) { 14 this.attempt = attempt; 15 }; 16 Object.defineProperty(Delay.prototype, "jitteredDelay", { 17 get: function () { 18 var jitter = jitter_factory_1.JitterFactory(this.options); 19 return jitter(this.delay); 20 }, 21 enumerable: true, 22 configurable: true 23 }); 24 Object.defineProperty(Delay.prototype, "delay", { 25 get: function () { 26 var constant = this.options.startingDelay; 27 var base = this.options.timeMultiple; 28 var power = this.numOfDelayedAttempts; 29 var delay = constant * Math.pow(base, power); 30 return Math.min(delay, this.options.maxDelay); 31 }, 32 enumerable: true, 33 configurable: true 34 }); 35 Object.defineProperty(Delay.prototype, "numOfDelayedAttempts", { 36 get: function () { 37 return this.attempt; 38 }, 39 enumerable: true, 40 configurable: true 41 }); 42 return Delay; 43}()); 44exports.Delay = Delay; 45//# sourceMappingURL=delay.base.js.map