piral-fetch
Version:
Plugin for standardizing fetch in Piral.
2 lines (1 loc) • 1.61 kB
JavaScript
var piralFetch=(()=>{var u=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var I=(e,t)=>{for(var r in t)u(e,r,{get:t[r],enumerable:!0})},k=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of R(t))!H.call(e,o)&&o!==r&&u(e,o,{get:()=>t[o],enumerable:!(s=O(t,o))||s.enumerable});return e};var v=e=>k(u({},"__esModule",{value:!0}),e);var U={};I(U,{createFetchApi:()=>M,httpFetch:()=>F});var B="accept",g="content-type",J="application/json";function F(e,t,r={}){let s=(n,p)=>{let i=e.default||{},h=i.headers||{},m=e.base||location.origin,{method:d="get",body:c,headers:x={},cache:b=i.cache,mode:j=i.mode,result:y="auto",signal:T}=p,P=Array.isArray(c)||typeof c=="number"||typeof c=="object"&&!(c instanceof FormData)&&!(c instanceof Blob),w=new URL(n,m),l={...i,method:d,body:P?JSON.stringify(c):c,headers:{...h,...x},cache:b,mode:j,signal:T};return P&&(l.headers[g]="application/json",l.headers[B]=J),fetch(w.href,l).then(f=>{let A=f.headers.get(g);return(y==="json"||y==="auto"&&!!A&&A.indexOf("json")!==-1?f.json():f.text()).then(C=>({body:C,code:f.status,text:f.statusText}))})},o=[...e.middlewares||[],s],a;return a=o.map((n,p)=>{let i=(m,d)=>a[p+1](m,d);return(m,d)=>n(m,d,i)}),a[0](t,r)}function M(e={}){return t=>({fetch(r,s={}){let o=s.headers||{},a=[];return t.emit("before-fetch",{headers:o,method:s.method||"GET",target:r,setHeaders(n){n&&a.push(n)}}),Promise.all(a).then(n=>{let p=n.reduce((i,h)=>typeof h=="object"&&h?{...i,...h}:i,o);return{...s,headers:p}}).then(n=>F(e,r,n))}})}return v(U);})();