@itokun99/http
Version:
Fetch util for better fetching api
2 lines (1 loc) • 2.25 kB
JavaScript
(function(c,i){typeof exports=="object"&&typeof module<"u"?i(exports):typeof define=="function"&&define.amd?define(["exports"],i):(c=typeof globalThis<"u"?globalThis:c||self,i(c["@hudoro/http"]={}))})(this,function(c){"use strict";const i=e=>{switch(e){case"url-enconded":return"application/x-www-form-urlencoded";case"json":return"application/json";default:return}},y=(e,t,n)=>{if(e!=="GET")return t==="form-data"?n:JSON.stringify(n)};function b(e){const t=new URLSearchParams(e),n={};for(const[r,a]of t)n[r]=a;return n}function h(e){if(!e||typeof e!="object"||Array.isArray(e))return"";const t=new URLSearchParams;return Object.keys(e).forEach(n=>{const r=e[n];(typeof r=="string"||typeof r=="number")&&t.append(n,r.toString())}),t.toString()}function l(e,t,n){if(!e)return"";let r=t?`${e}/${t}`:e;if(n){const a=h(n);r=`${r}${a?`?${a}`:""}`}return r}async function p(e){return typeof e=="function"?await e():e}const m={contentType:"json",path:"",withAppAuth:!0,responseContentType:"json"};async function T(e,t,n,r){let a={...m,...r};const s=i(a==null?void 0:a.contentType);let o={};s&&(o["Content-Type"]=s),a.bearerToken&&typeof a.bearerToken=="string"&&(o.Authorization=`Bearer ${a.bearerToken}`),a.headers&&(o={...o,...a.headers});const u=await fetch(e,{method:t,headers:o,...(a==null?void 0:a.signal)&&{signal:a.signal},body:y(t,a.contentType,n)});let f;if(!u.ok)throw await u.json();switch(a.responseContentType){case"json":f=await u.json();break;case"text":f=await u.text();break;case"blob":f=await u.blob();break;default:f=await u.json();break}return f}const d=async(e,t,n,r,a)=>{const s=await p(a),o=await p(r),u=l(e,(o==null?void 0:o.path)||(s==null?void 0:s.path)||"",{...s==null?void 0:s.metaParams,...s==null?void 0:s.params,...o==null?void 0:o.metaParams,...o==null?void 0:o.params}),f={...s,...o};return T(u,t,n,f)},w={get:(e,t)=>n=>d(e,"GET",void 0,n,t),post:(e,t)=>(n,r)=>d(e,"POST",n,r,t),put:(e,t)=>(n,r)=>d(e,"PUT",n,r,t),patch:(e,t)=>(n,r)=>d(e,"PATCH",n,r,t),delete:(e,t)=>n=>d(e,"DELETE",void 0,n,t)};c.createEndpoint=l,c.createRequest=d,c.getBody=y,c.getContentType=i,c.http=w,c.objectToSearchParams=h,c.request=T,c.resolveRequestOptions=p,c.searchParamsToObject=b,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});