dd-trace
Version:
Datadog APM tracing client for JavaScript
1 lines • 3.99 kB
JavaScript
(()=>{var t={"./retry/index.js"(t,e,r){t.exports=r("./retry/lib/retry.js")},"./retry/lib/retry.js"(t,e,r){var i=r("./retry/lib/retry_operation.js");e.operation=function(t){return new i(e.timeouts(t),{forever:t&&(t.forever||t.retries===1/0),unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})},e.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw Error("minTimeout is greater than maxTimeout");for(var i=[],o=0;o<e.retries;o++)i.push(this.createTimeout(o,e));return t&&t.forever&&!i.length&&i.push(this.createTimeout(o,e)),i.sort(function(t,e){return t-e}),i},e.createTimeout=function(t,e){var r=Math.round((e.randomize?Math.random()+1:1)*Math.max(e.minTimeout,1)*Math.pow(e.factor,t));return Math.min(r,e.maxTimeout)},e.wrap=function(t,r,i){if(r instanceof Array&&(i=r,r=null),!i)for(var o in i=[],t)"function"==typeof t[o]&&i.push(o);for(var n=0;n<i.length;n++){var s=i[n],a=t[s];t[s]=(function(i){var o=e.operation(r),n=Array.prototype.slice.call(arguments,1),s=n.pop();n.push(function(t){o.retry(t)||(t&&(arguments[0]=o.mainError()),s.apply(this,arguments))}),o.attempt(function(){i.apply(t,n)})}).bind(t,a),t[s].options=r}}},"./retry/lib/retry_operation.js"(t){function RetryOperation(t,e){"boolean"==typeof e&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}t.exports=RetryOperation,RetryOperation.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)},RetryOperation.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null},RetryOperation.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(t),this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(t);var r=this._timeouts.shift();if(void 0===r)if(!this._cachedTimeouts)return!1;else this._errors.splice(0,this._errors.length-1),r=this._cachedTimeouts.slice(-1);var i=this;return this._timer=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},r),this._options.unref&&this._timer.unref(),!0},RetryOperation.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},RetryOperation.prototype.try=function(t){console.log("Using RetryOperation.try() is deprecated"),this.attempt(t)},RetryOperation.prototype.start=function(t){console.log("Using RetryOperation.start() is deprecated"),this.attempt(t)},RetryOperation.prototype.start=RetryOperation.prototype.try,RetryOperation.prototype.errors=function(){return this._errors},RetryOperation.prototype.attempts=function(){return this._attempts},RetryOperation.prototype.mainError=function(){if(0===this._errors.length)return null;for(var t={},e=null,r=0,i=0;i<this._errors.length;i++){var o=this._errors[i],n=o.message,s=(t[n]||0)+1;t[n]=s,s>=r&&(e=o,r=s)}return e}}},e={};function __webpack_require__(r){var i=e[r];if(void 0!==i)return i.exports;var o=e[r]={exports:{}};return t[r](o,o.exports,__webpack_require__),o.exports}var r=__webpack_require__("./retry/index.js");module.exports=r})();