axios-queue-js
Version:
axios-queue-js is a lightweight wrapper of axios that enables you to make requests using a queue
1 lines • 3.89 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("axios")):"function"==typeof define&&define.amd?define(["axios"],t):"object"==typeof exports?exports.AxiosQueueJS=t(require("axios")):e.AxiosQueueJS=t(e.axios)}(this,(e=>(()=>{"use strict";var t={699:function(e,t,s){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=i(s(300)),r=i(s(603));t.default=class{constructor({queueSize:e,client:t}={}){this.client=t||o.default,this.maxQueueSize=e||10,this.currentQueueSize=0,this.enqueuedTasks=[],this.makeRequests=this.makeRequests.bind(this),this.checkAndRunTasks=this.checkAndRunTasks.bind(this),this.createTask=this.createTask.bind(this),this.get=this.get.bind(this),this.delete=this.delete.bind(this),this.post=this.post.bind(this),this.patch=this.patch.bind(this),this.put=this.put.bind(this)}makeRequests(e){this.currentQueueSize+=e.length,e.forEach((e=>{e.makeRequest(this.client,(()=>{this.currentQueueSize-=1,this.checkAndRunTasks()}))}))}checkAndRunTasks(){const e=this.maxQueueSize-this.currentQueueSize;e>0&&this.enqueuedTasks.length>0&&this.makeRequests(this.enqueuedTasks.splice(0,e))}createTask({url:e,data:t,config:s,method:i,onResolve:o,onReject:a}){this.enqueuedTasks.push(r.default.create({url:e,data:t,config:s,method:i,onResolve:o,onReject:a})),this.checkAndRunTasks()}get(e,t){return new Promise(((s,i)=>{this.createTask({method:"get",url:e,config:t,onResolve:s,onReject:i})}))}delete(e,t){return new Promise(((s,i)=>{this.createTask({method:"delete",url:e,config:t,onResolve:s,onReject:i})}))}post(e,t,s){return new Promise(((i,o)=>{this.createTask({method:"post",data:t,url:e,config:s,onResolve:i,onReject:o})}))}patch(e,t,s){return new Promise(((i,o)=>{this.createTask({method:"patch",data:t,url:e,config:s,onResolve:i,onReject:o})}))}put(e,t,s){return new Promise(((i,o)=>{this.createTask({method:"put",data:t,url:e,config:s,onResolve:i,onReject:o})}))}}},607:function(e,t,s){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.InvalidAxiosMethodError=t.AxiosQueueManager=void 0;const o=i(s(699));t.AxiosQueueManager=o.default,t.default=new o.default;var r=s(603);Object.defineProperty(t,"InvalidAxiosMethodError",{enumerable:!0,get:function(){return r.InvalidAxiosMethodError}})},603:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.InvalidAxiosMethodError=void 0;class s extends Error{}t.InvalidAxiosMethodError=s;class i{constructor({url:e,method:t,data:s,config:i,onResolve:o,onReject:r}){this.requestData={url:e,method:t,data:s,config:i,onResolve:o,onReject:r},this.doRequestAndGetPromise=this.doRequestAndGetPromise.bind(this),this.makeRequest=this.makeRequest.bind(this)}doRequestAndGetPromise(e){switch(this.requestData.method){case"get":return e.get(this.requestData.url,this.requestData.config);case"delete":return e.delete(this.requestData.url,this.requestData.config);case"post":return e.post(this.requestData.url,this.requestData.data,this.requestData.config);case"patch":return e.patch(this.requestData.url,this.requestData.data,this.requestData.config);case"put":return e.put(this.requestData.url,this.requestData.data,this.requestData.config);default:throw new s(`Invalid method found for this request: ${this.requestData.method}`)}}makeRequest(e,t){this.doRequestAndGetPromise(e).then(this.requestData.onResolve).catch(this.requestData.onReject).finally((()=>t()))}get data(){return this.requestData}static create({url:e,method:t,data:s,config:o,onResolve:r,onReject:a}){return new i({url:e,method:t,data:s,config:o,onResolve:r,onReject:a})}}t.default=i},300:t=>{t.exports=e}},s={};return function e(i){var o=s[i];if(void 0!==o)return o.exports;var r=s[i]={exports:{}};return t[i].call(r.exports,r,r.exports,e),r.exports}(607)})()));