@cardbrother/up-fetch
Version:
Advanced fetch client builder for typescript.
2 lines • 3.48 kB
JavaScript
;var u=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var k=(e,t)=>{for(var r in t)u(e,r,{get:t[r],enumerable:!0})},v=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of B(t))!V.call(e,s)&&s!==r&&u(e,s,{get:()=>t[s],enumerable:!(a=j(t,s))||a.enumerable});return e};var A=e=>v(u({},"__esModule",{value:!0}),e);var K={};k(K,{ResponseError:()=>c,isJsonifiable:()=>l,isResponseError:()=>O,isValidationError:()=>S,up:()=>P});module.exports=A(K);var c=class extends Error{constructor(t,r,a){super(`Request failed with status ${t.status}`),this.data=r,this.name="ResponseError",this.response=t,this.status=t.status,this.options=a}},O=e=>e instanceof c;var h=class extends Error{constructor(t,r){super("Validation error"),this.name="ValidationError",this.issues=t.issues,this.data=r}},S=e=>e instanceof h;var R=(...e)=>{let t={};return e.forEach(r=>{new Headers(r).forEach((a,s)=>{a==="null"||a==="undefined"?delete t[s]:t[s]=a})}),t},b=(e,t)=>"any"in AbortSignal?AbortSignal.any([e,t&&AbortSignal.timeout(t)].filter(Boolean)):e,w=(e,t,r)=>typeof t!="string"?{}:T({...F(e,[...new URL(t,"http://a").searchParams.keys()]),...r}),F=(e,t=[])=>{let r={...e};for(let a in r)t.includes(a)&&delete r[a];return r},T=e=>{let t={...e};for(let r in t)t[r]===void 0&&delete t[r];return t},l=e=>!e||typeof e!="object"||e instanceof FormData?!1:e?.constructor?.name==="Object"||Array.isArray(e)||typeof e?.toJSON=="function",m={};function x(e="",t,r){if(typeof t!="string")return t;let a=/^https?:\/\//.test(t)?t:!e||!t?e+t:e.replace(/\/$/,"")+"/"+t.replace(/^\//,"");return r&&(a+=(a.includes("?")?"&":"?")+r.replace(/^\?/,"")),a}async function g(e,t){let r=await e["~standard"].validate(t);if(r.issues)throw new h(r,t);return r.value}var f={parseResponse:e=>e.clone().json().catch(()=>e.text()).then(t=>t||null),parseRejected:async(e,t)=>new c(e,await f.parseResponse(e,t),t),serializeParams:e=>new URLSearchParams(JSON.parse(JSON.stringify(e))).toString(),serializeBody:e=>l(e)?JSON.stringify(e):e,reject:e=>!e.ok};var J=["onRequest","onSuccess","onError"],E=(e,t=m,r=m)=>{e=e?.href??e;let a={...f,...t,...r},s=r.body,o=w(t.params,e,r.params),n=s==null?s:a.serializeBody(s);return a.parseResponseError&&D("parseResponseError","parseRejected"),a.throwResponseError&&D("throwResponseError","reject"),T({...F(a,J),params:o,rawBody:s,body:n,signal:b(a.signal,a.timeout),headers:R(l(s)&&typeof n=="string"?{"content-type":"application/json"}:{},t.headers,r.headers),reject:r.reject??r.throwResponseError??t.reject??t.throwResponseError??f.reject,parseRejected:r.parseRejected??r.parseResponseError??t.parseRejected??t.parseResponseError??f.parseRejected,input:x(a.baseUrl,e,a.serializeParams(o))})};function D(e,t){console.warn(`Deprecation warning: \`${e}\` will be renamed \`${t}\` in v2.0`)}function P(e,t=()=>m){return async(r,a=m,s)=>{let o=t(r,a,s),n=E(r,o,a);return await o?.onRequest?.(n),e(n.input,n,s).catch(d=>{throw o.onError?.(d,n),d}).then(async d=>{if(await n.reject(d)){let i;try{i=await n.parseRejected(d,n)}catch(p){throw o.onError?.(p,n),p}throw o.onError?.(i,n),i}else{let i;try{i=await n.parseResponse(d,n)}catch(y){throw o.onError?.(y,n),y}let p;try{p=n.schema?await g(n.schema,i):i}catch(y){throw o.onError?.(y,n),y}return o.onSuccess?.(p,n),p}})}}0&&(module.exports={ResponseError,isJsonifiable,isResponseError,isValidationError,up});
//# sourceMappingURL=index.cjs.map