mappersmith
Version:
It is a lightweight rest client for node.js and the browser
1 lines • 3.6 kB
Source Map (JSON)
{"version":3,"sources":["../../../../../src/middleware/retry/v1/index.js"],"sourcesContent":["import { assign } from '../../../utils'\nimport RetryMiddlewareV2, { defaultRetryConfigs } from '../v2'\n\nlet retryConfigs = assign({}, defaultRetryConfigs)\n\n/**\n * @deprecated The use of setRetryConfigs is deprecated as it sets a global config\n which may cause troubles if you need multiple different configurations.\n Use middleware/retry/v2 instead which supports passing in a configuration object.\n *\n * @param {Object} newConfigs\n * @param {String} newConfigs.headerRetryCount (default: 'X-Mappersmith-Retry-Count')\n * @param {String} newConfigs.headerRetryTime (default: 'X-Mappersmith-Retry-Time')\n * @param {Number} newConfigs.maxRetryTimeInSecs (default: 5)\n * @param {Number} newConfigs.initialRetryTimeInSecs (default: 1)\n * @param {Number} newConfigs.factor (default: 0.2) - randomization factor\n * @param {Number} newConfigs.multiplier (default: 2) - exponential factor\n * @param {Number} newConfigs.retries (default: 5) - max retries\n */\nexport const setRetryConfigs = (newConfigs) => {\n console.warn('The use of setRetryConfigs is deprecated - use RetryMiddleware v2 instead.')\n retryConfigs = assign({}, retryConfigs, newConfigs)\n middlewareInstance = RetryMiddlewareV2(retryConfigs)()\n}\n\n/**\n * This middleware will automatically retry GET requests up to the configured amount of\n * retries using a randomization function that grows exponentially. The retry count and\n * the time used will be included as a header in the response.\n *\n * The retry time is calculated using the following formula:\n * retryTime = min(\n * random(previousRetryTime - randomizedFactor, previousRetryTime + randomizedFactor) * multipler,\n * maxRetryTime\n * )\n *\n * Take a look at `calculateExponentialRetryTime` for more information.\n *\n * Parameters can be configured using the method `setRetryConfigs`.\n */\nlet middlewareInstance = RetryMiddlewareV2(retryConfigs)()\n\nexport default function RetryMiddleware() {\n return {\n request(request) {\n return middlewareInstance.request(request)\n },\n response(next) {\n return middlewareInstance.response(next)\n },\n }\n}\n\n/**\n * Increases the retry time for each attempt using a randomization function that grows exponentially.\n * The value is limited by `retryConfigs.maxRetryTimeInSecs`.\n * @param {Number} retryTime\n *\n * @return {Number}\n */\nexport const calculateExponentialRetryTime = (retryTime) =>\n Math.min(\n randomFromRetryTime(retryTime) * retryConfigs.multiplier,\n retryConfigs.maxRetryTimeInSecs * 1000\n )\n\nconst randomFromRetryTime = (retryTime) => {\n const delta = retryConfigs.factor * retryTime\n return random(retryTime - delta, retryTime + delta)\n}\n\nconst random = (min, max) => {\n return Math.random() * (max - min) + min\n}\n"],"mappings":";AAAA,SAAS,cAAc;AACvB,OAAO,qBAAqB,2BAA2B;AAEvD,IAAI,eAAe,OAAO,CAAC,GAAG,mBAAmB;AAgB1C,IAAM,kBAAkB,CAAC,eAAe;AAC7C,UAAQ,KAAK,4EAA4E;AACzF,iBAAe,OAAO,CAAC,GAAG,cAAc,UAAU;AAClD,uBAAqB,kBAAkB,YAAY,EAAE;AACvD;AAiBA,IAAI,qBAAqB,kBAAkB,YAAY,EAAE;AAE1C,SAAR,kBAAmC;AACxC,SAAO;AAAA,IACL,QAAQ,SAAS;AACf,aAAO,mBAAmB,QAAQ,OAAO;AAAA,IAC3C;AAAA,IACA,SAAS,MAAM;AACb,aAAO,mBAAmB,SAAS,IAAI;AAAA,IACzC;AAAA,EACF;AACF;AASO,IAAM,gCAAgC,CAAC,cAC5C,KAAK;AAAA,EACH,oBAAoB,SAAS,IAAI,aAAa;AAAA,EAC9C,aAAa,qBAAqB;AACpC;AAEF,IAAM,sBAAsB,CAAC,cAAc;AACzC,QAAM,QAAQ,aAAa,SAAS;AACpC,SAAO,OAAO,YAAY,OAAO,YAAY,KAAK;AACpD;AAEA,IAAM,SAAS,CAAC,KAAK,QAAQ;AAC3B,SAAO,KAAK,OAAO,KAAK,MAAM,OAAO;AACvC;","names":[]}