UNPKG

axios-multi-api

Version:

[npm-url]: https://npmjs.org/package/axios-multi-api [npm-image]: http://img.shields.io/npm/v/axios-multi-api.svg

2 lines 5.72 kB
(()=>{var E=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var h=(s,e,t,r)=>{for(var o=r>1?void 0:r?w(e,t):e,n=s.length-1,i;n>=0;n--)(i=s[n])&&(o=(r?i(e,t,o):i(o))||o);return r&&o&&E(e,t,o),o};var C=Symbol("__get"),x=Symbol("__set"),S=Symbol("__has"),v=Symbol("__delete"),R=Symbol("__invoke"),_=!1;function y(s,e=!1){if(typeof s=="function"){if(e===!0)return g(s);let t=function(...o){if(typeof new.target>"u"){let n=s[R]||s.__invoke;if(n)return p(s,n,"__invoke"),n?n.apply(s,o):s(...o);let i=s.prototype;return n=i[R]||i.__invoke,n&&!_&&(_=!0,console.warn("applyMagic: using __invoke without 'static' modifier is deprecated")),p(s,n,"__invoke"),n?n(...o):s(...o)}else return Object.assign(this,new s(...o)),g(this)};return Object.setPrototypeOf(t,s),Object.setPrototypeOf(t.prototype,s.prototype),b(t,"name",s.name),b(t,"length",s.length),b(t,"toString",function(){let o=this===t?s:this;return Function.prototype.toString.call(o)},!0),t}else{if(typeof s=="object")return g(s);throw new TypeError("'target' must be a function or an object")}}function p(s,e,t,r=void 0){if(e!==void 0){if(typeof e!="function")throw new TypeError(`${s.name}.${t} must be a function`);if(r!==void 0&&e.length!==r)throw new SyntaxError(`${s.name}.${t} must have ${r} parameter${r===1?"":"s"}`)}}function b(s,e,t,r=!1){Object.defineProperty(s,e,{configurable:!0,enumerable:!1,writable:r,value:t})}function g(s){let e=s[C]||s.__get,t=s[x]||s.__set,r=s[S]||s.__has,o=s[v]||s.__delete;return p(new.target,e,"__get",1),p(new.target,t,"__set",2),p(new.target,r,"__has",1),p(new.target,o,"__delete",1),new Proxy(s,{get:(n,i)=>e?e.call(n,i):n[i],set:(n,i,l)=>(t?t.call(n,i,l):n[i]=l,!0),has:(n,i)=>r?r.call(n,i):i in n,deleteProperty:(n,i)=>(o?o.call(n,i):delete n[i],!0)})}var m=class{logger;requestErrorService;constructor(e,t){this.logger=e,this.requestErrorService=t}process(e){var r;(r=this.logger)!=null&&r.warn&&this.logger.warn("API ERROR",e);let t=e;typeof e=="string"&&(t=new Error(e)),this.requestErrorService&&(typeof this.requestErrorService.process<"u"?this.requestErrorService.process(t):typeof this.requestErrorService=="function"&&this.requestErrorService(t))}};var d=class{requestInstance;timeout=3e4;cancellable=!1;strategy="reject";flattenResponse=!0;defaultResponse=null;axios;logger;requestErrorService;requestsQueue;constructor({axios:e,baseURL:t="",timeout:r=null,cancellable:o=!1,strategy:n=null,flattenResponse:i=null,defaultResponse:l={},logger:u=null,onError:a=null,...c}){this.axios=e,this.timeout=r!==null?r:this.timeout,this.strategy=n!==null?n:this.strategy,this.cancellable=o||this.cancellable,this.flattenResponse=i!==null?i:this.flattenResponse,this.defaultResponse=l,this.logger=u||(globalThis?globalThis.console:null)||null,this.requestErrorService=a,this.requestsQueue=new Map,this.requestInstance=e.create({...c,baseURL:t,timeout:this.timeout})}getInstance(){return this.requestInstance}__get(e){return e in this?this[e]:this.prepareRequest.bind(this,e)}prepareRequest(e,t,r=null,o=null){return this.handleRequest({type:e,url:t,data:r,config:o})}buildRequestConfig(e,t,r,o){let n=e.toLowerCase();return{...o,url:t,method:n,[n==="get"||n==="head"?"params":"data"]:r||{}}}processRequestError(e,t){if(this.isRequestCancelled(e,t))return;t.onError&&typeof t.onError=="function"&&t.onError(e),new m(this.logger,this.requestErrorService).process(e)}async outputErrorResponse(e,t){let r=this.isRequestCancelled(e,t),o=t.strategy||this.strategy;return r&&!t.rejectCancelled?this.defaultResponse:o==="silent"?(await new Promise(()=>null),this.defaultResponse):o==="reject"||o==="throwError"?Promise.reject(e):this.defaultResponse}isRequestCancelled(e,t){return this.axios.isCancel(e)}addCancellationToken(e){if(!this.cancellable&&!e.cancellable)return{};if(typeof e.cancellable<"u"&&!e.cancellable)return{};if(typeof AbortController>"u")return console.error("AbortController is unavailable in your ENV."),{};let{method:t,baseURL:r,url:o,params:n,data:i}=e,l=JSON.stringify([t,r,o,n,i]).substring(0,55**5),u=this.requestsQueue.get(l);u&&u.abort();let a=new AbortController;return this.requestsQueue.set(l,a),{signal:a.signal}}async handleRequest({type:e,url:t,data:r=null,config:o=null}){let n=null,i=o||{},l=this.buildRequestConfig(e,t,r,i);l={...this.addCancellationToken(l),...l};try{n=await this.requestInstance.request(l)}catch(u){return this.processRequestError(u,l),this.outputErrorResponse(u,l)}return this.processResponseData(n)}processResponseData(e){return e.data?this.flattenResponse?typeof e.data=="object"&&typeof e.data.data<"u"&&Object.keys(e.data).length===1?e.data.data:e.data:e:this.defaultResponse}};d=h([y],d);var f=class{requestHandler;endpoints;logger;constructor({axios:e,apiUrl:t,endpoints:r,timeout:o=null,cancellable:n=!1,strategy:i=null,flattenResponse:l=null,defaultResponse:u={},logger:a=null,onError:c=null,...q}){this.endpoints=r,this.logger=a,this.requestHandler=new d({...q,baseURL:t,axios:e,timeout:o,cancellable:n,strategy:i,flattenResponse:l,defaultResponse:u,logger:a,onError:c})}getInstance(){return this.requestHandler.getInstance()}__get(e){return e in this?this[e]:this.endpoints[e]?this.handleRequest.bind(this,e):this.handleNonImplemented.bind(this,e)}async handleRequest(...e){let t=e[0],r=this.endpoints[t],o=e[1]||{},n=e[2]||{},i=e[3]||{},l=r.url.replace(/:[a-z]+/gi,c=>n[c.substring(1)]?n[c.substring(1)]:c),u=null,a={...r};return delete a.url,delete a.method,u=await this.requestHandler[(r.method||"get").toLowerCase()](l,o,{...i,...a}),u}handleNonImplemented(e){var t;return(t=this.logger)!=null&&t.log&&this.logger.log(`${e} endpoint not implemented.`),Promise.resolve(null)}};f=h([y],f);var Q=s=>new f(s);})(); //# sourceMappingURL=index.global.js.map