return-fetch
Version:
A very light and simple library to extend fetch by implementing request, response interceptors.
3 lines (2 loc) • 1.82 kB
JavaScript
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 i=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(i&&i.then?i.then(t):t())}catch(e){return Promise.reject(e)}};module.exports=function(n){return function(){try{return Promise.resolve(r.apply(void 0,[].slice.call(arguments))).then(function(r){function t(){return Promise.resolve(l.apply(void 0,i)).then(function(e){var r;return(null==n||null==(r=n.interceptors)||null==r.response?void 0:r.response(e,i,l))||e})}var i,o=function(r,n){var t=r[0],i=r[1],o=new Headers(null==n?void 0:n.headers);new Headers(null==i?void 0:i.headers).forEach(function(e,r){o.set(r,e)});var l=t;return null!=n&&n.baseUrl&&(l=new URL(t,n.baseUrl)),[l,e({},i,{headers:o})]}(r,n),l=(null==n?void 0:n.fetch)||fetch,u=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(o,l)).then(function(e){i=e});i=o}();return u&&u.then?u.then(t):t()})}catch(e){return Promise.reject(e)}}};
//# sourceMappingURL=index.cjs.map