@geoapify/request-rate-limiter
Version:
Easily throttle API requests to prevent 429 errors and manage traffic bursts
1 lines • 2.4 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("RequestRateLimiter",[],t):"object"==typeof exports?exports.RequestRateLimiter=t():e.RequestRateLimiter=t()}(this,(()=>(()=>{"use strict";var e={993:function(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};async function s(e,t,r,o){!function(e,t,r){if(e<1)throw new Error('"maxRequests" must be at least 1');if(t<=0)throw new Error('"interval" must be positive number');if(!r||0===r.length)throw new Error('"requests" must be an array of functions to execute')}(t,r,e);const n={batchItemsToFire:new Array(e.length),totalRequests:e.length,completedRequests:0},s=new Array(e.length),i=[];for(let u=0;u<e.length;u+=t){const c=Math.min(u+t,e.length),l=e.slice(u,c).map(((e,t)=>Promise.resolve(e()).then((e=>(s[u+t]=e,e)))));a(n,l,o,u,c),i.push(...l),c<e.length&&await new Promise((e=>setTimeout(e,r)))}return await Promise.all(i),s}function i(e,t,r){for(let o=t;o<r;o++)if(o<e.batchItemsToFire.length&&void 0===e.batchItemsToFire[o])return!1;return!0}function a(e,t,r,o,n){Promise.all(t).then((t=>{r&&r.batchSize&&r.onBatchComplete&&function(e,t,r,o,n,s){for(let n=r;n<o;n++)e.batchItemsToFire[n]=t[n-r];for(let t=0;t<e.batchItemsToFire.length;t+=n){let r=Math.min(t+n,e.batchItemsToFire.length);if(i(e,t,r)&&r-t===n){const o={startIndex:t,stopIndex:r-1,results:e.batchItemsToFire.slice(t,r)};for(let t=0;t<r;t++)e.batchItemsToFire[t]=void 0;s(o)}}}(e,t,o,n,r.batchSize,r.onBatchComplete),r&&r.onProgress&&function(e,t,r,o){e.completedRequests+=r-t,o({totalRequests:e.totalRequests,completedRequests:e.completedRequests})}(e,o,n,r.onProgress)}))}Object.defineProperty(t,"__esModule",{value:!0}),t.rateLimitedRequests=s,n(r(613),t),t.default={rateLimitedRequests:s}},613:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})}},t={};return function r(o){var n=t[o];if(void 0!==n)return n.exports;var s=t[o]={exports:{}};return e[o].call(s.exports,s,s.exports,r),s.exports}(993)})()));