return-fetch
Version:
A very light and simple library to extend fetch by implementing request, response interceptors.
3 lines (2 loc) • 2 kB
JavaScript
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e||self).returnFetch=r()}(this,function(){function e(){return e=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e},e.apply(this,arguments)}var r=function(){try{var e,r,n,t=function(){return[r,n]};e=[].slice.call(arguments);var o=function(){if(e[0]instanceof Request)return r=e[0].url,Promise.resolve(function(e,r){try{var n=new Request(e,r);return Promise.resolve(n.arrayBuffer()).then(function(e){return{method:n.method,headers:n.headers,body:e.byteLength?e:void 0,referrer:n.referrer,referrerPolicy:n.referrerPolicy,mode:n.mode,cache:n.cache,redirect:n.redirect,credentials:n.credentials,integrity:n.integrity,keepalive:n.keepalive,signal:n.signal,window:null==r?void 0:r.window}})}catch(e){return Promise.reject(e)}}(e[0],e[1])).then(function(e){n=e});r=e[0],n=e[1]}();return Promise.resolve(o&&o.then?o.then(t):t())}catch(e){return Promise.reject(e)}};return function(n){return function(){try{return Promise.resolve(r.apply(void 0,[].slice.call(arguments))).then(function(r){function t(){return Promise.resolve(u.apply(void 0,o)).then(function(e){var r;return(null==n||null==(r=n.interceptors)||null==r.response?void 0:r.response(e,o,u))||e})}var o,i=function(r,n){var t=r[0],o=r[1],i=new Headers(null==n?void 0:n.headers);new Headers(null==o?void 0:o.headers).forEach(function(e,r){i.set(r,e)});var u=t;return null!=n&&n.baseUrl&&(u=new URL(t,n.baseUrl)),[u,e({},o,{headers:i})]}(r,n),u=(null==n?void 0:n.fetch)||fetch,l=function(e){var r;if(null!=n&&null!=(e=n.interceptors)&&e.request)return Promise.resolve(null==n||null==(r=n.interceptors)||null==r.request?void 0:r.request(i,u)).then(function(e){o=e});o=i}();return l&&l.then?l.then(t):t()})}catch(e){return Promise.reject(e)}}}});
//# sourceMappingURL=index.umd.js.map