UNPKG

liferay-headless-rest-client

Version:
2 lines (1 loc) 6.76 kB
var h=async(F,K)=>{let C=typeof K=="function"?await K(F):K;if(C)return F.scheme==="bearer"?`Bearer ${C}`:F.scheme==="basic"?`Basic ${btoa(C)}`:C},O=(F,K,C)=>{typeof C=="string"||C instanceof Blob?F.append(K,C):F.append(K,JSON.stringify(C))};var p={bodySerializer:(F)=>{let K=new FormData;return Object.entries(F).forEach(([C,Y])=>{Y!=null&&(Array.isArray(Y)?Y.forEach((X)=>O(K,C,X)):O(K,C,Y))}),K}},j={bodySerializer:(F)=>JSON.stringify(F,(K,C)=>typeof C=="bigint"?C.toString():C)};var m=(F)=>{switch(F){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},q=(F)=>{switch(F){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},w=(F)=>{switch(F){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},T=({allowReserved:F,explode:K,name:C,style:Y,value:X})=>{if(!K){let G=(F?X:X.map((k)=>encodeURIComponent(k))).join(q(Y));switch(Y){case"label":return`.${G}`;case"matrix":return`;${C}=${G}`;case"simple":return G;default:return`${C}=${G}`}}let Z=m(Y),V=X.map((G)=>Y==="label"||Y==="simple"?F?G:encodeURIComponent(G):M({allowReserved:F,name:C,value:G})).join(Z);return Y==="label"||Y==="matrix"?Z+V:V},M=({allowReserved:F,name:K,value:C})=>{if(C==null)return"";if(typeof C=="object")throw new Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${K}=${F?C:encodeURIComponent(C)}`},U=({allowReserved:F,explode:K,name:C,style:Y,value:X})=>{if(X instanceof Date)return`${C}=${X.toISOString()}`;if(Y!=="deepObject"&&!K){let G=[];Object.entries(X).forEach(([D,B])=>{G=[...G,D,F?B:encodeURIComponent(B)]});let k=G.join(",");switch(Y){case"form":return`${C}=${k}`;case"label":return`.${k}`;case"matrix":return`;${C}=${k}`;default:return k}}let Z=w(Y),V=Object.entries(X).map(([G,k])=>M({allowReserved:F,name:Y==="deepObject"?`${C}[${G}]`:G,value:k})).join(Z);return Y==="label"||Y==="matrix"?Z+V:V},z=/\{[^{}]+\}/g,A=({path:F,url:K})=>{let C=K,Y=K.match(z);if(Y)for(let X of Y){let Z=!1,V=X.substring(1,X.length-1),G="simple";V.endsWith("*")&&(Z=!0,V=V.substring(0,V.length-1)),V.startsWith(".")?(V=V.substring(1),G="label"):V.startsWith(";")&&(V=V.substring(1),G="matrix");let k=F[V];if(k==null)continue;if(Array.isArray(k)){C=C.replace(X,T({explode:Z,name:V,style:G,value:k}));continue}if(typeof k=="object"){C=C.replace(X,U({explode:Z,name:V,style:G,value:k}));continue}if(G==="matrix"){C=C.replace(X,`;${M({name:V,value:k})}`);continue}let D=encodeURIComponent(G==="label"?`.${k}`:k);C=C.replace(X,D)}return C},W=({allowReserved:F,array:K,object:C}={})=>(Y)=>{let X=[];if(Y&&typeof Y=="object")for(let Z in Y){let V=Y[Z];if(V!=null)if(Array.isArray(V)){let G=T({allowReserved:F,explode:!0,name:Z,style:"form",value:V,...K});G&&X.push(G)}else if(typeof V=="object"){let G=U({allowReserved:F,explode:!0,name:Z,style:"deepObject",value:V,...C});G&&X.push(G)}else{let G=M({allowReserved:F,name:Z,value:V});G&&X.push(G)}}return X.join("&")},I=(F)=>{if(!F)return"stream";let K=F.split(";")[0]?.trim();if(K){if(K.startsWith("application/json")||K.endsWith("+json"))return"json";if(K==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some((C)=>K.startsWith(C)))return"blob";if(K.startsWith("text/"))return"text"}},S=async({security:F,...K})=>{for(let C of F){let Y=await h(C,K.auth);if(!Y)continue;let X=C.name??"Authorization";switch(C.in){case"query":K.query||(K.query={}),K.query[X]=Y;break;case"cookie":K.headers.append("Cookie",`${X}=${Y}`);break;case"header":default:K.headers.set(X,Y);break}return}},P=(F)=>b({baseUrl:F.baseUrl,path:F.path,query:F.query,querySerializer:typeof F.querySerializer=="function"?F.querySerializer:W(F.querySerializer),url:F.url}),b=({baseUrl:F,path:K,query:C,querySerializer:Y,url:X})=>{let Z=X.startsWith("/")?X:`/${X}`,V=(F??"")+Z;K&&(V=A({path:K,url:V}));let G=C?Y(C):"";return G.startsWith("?")&&(G=G.substring(1)),G&&(V+=`?${G}`),V},Q=(F,K)=>{let C={...F,...K};return C.baseUrl?.endsWith("/")&&(C.baseUrl=C.baseUrl.substring(0,C.baseUrl.length-1)),C.headers=_(F.headers,K.headers),C},_=(...F)=>{let K=new Headers;for(let C of F){if(!C||typeof C!="object")continue;let Y=C instanceof Headers?C.entries():Object.entries(C);for(let[X,Z]of Y)if(Z===null)K.delete(X);else if(Array.isArray(Z))for(let V of Z)K.append(X,V);else Z!==void 0&&K.set(X,typeof Z=="object"?JSON.stringify(Z):Z)}return K},N=class{_fns;constructor(){this._fns=[]}clear(){this._fns=[]}getInterceptorIndex(F){return typeof F=="number"?this._fns[F]?F:-1:this._fns.indexOf(F)}exists(F){let K=this.getInterceptorIndex(F);return!!this._fns[K]}eject(F){let K=this.getInterceptorIndex(F);this._fns[K]&&(this._fns[K]=null)}update(F,K){let C=this.getInterceptorIndex(F);return this._fns[C]?(this._fns[C]=K,F):!1}use(F){return this._fns=[...this._fns,F],this._fns.length-1}},f=()=>({error:new N,request:new N,response:new N}),R=W({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),g={"Content-Type":"application/json"},y=(F={})=>({...j,headers:g,parseAs:"auto",querySerializer:R,...F}),d=(F={})=>{let K=Q(y(),F),C=()=>({...K}),Y=(V)=>(K=Q(K,V),C()),X=f(),Z=async(V)=>{let G={...K,...V,fetch:V.fetch??K.fetch??globalThis.fetch,headers:_(K.headers,V.headers)};G.security&&await S({...G,security:G.security}),G.body&&G.bodySerializer&&(G.body=G.bodySerializer(G.body)),(G.body===void 0||G.body==="")&&G.headers.delete("Content-Type");let k=P(G),D={redirect:"follow",...G},B=new Request(k,D);for(let x of X.request._fns)x&&(B=await x(B,G));let $=G.fetch,v=await $(B);for(let x of X.response._fns)x&&(v=await x(v,B,G));let J={request:B,response:v};if(v.ok){if(v.status===204||v.headers.get("Content-Length")==="0")return G.responseStyle==="data"?{}:{data:{},...J};let x=(G.parseAs==="auto"?I(v.headers.get("Content-Type")):G.parseAs)??"json";if(x==="stream")return G.responseStyle==="data"?v.body:{data:v.body,...J};let H=await v[x]();return x==="json"&&(G.responseValidator&&await G.responseValidator(H),G.responseTransformer&&(H=await G.responseTransformer(H))),G.responseStyle==="data"?H:{data:H,...J}}let L=await v.text();try{L=JSON.parse(L)}catch{}let E=L;for(let x of X.error._fns)x&&(E=await x(L,v,B,G));if(E=E||{},G.throwOnError)throw E;return G.responseStyle==="data"?void 0:{error:E,...J}};return{buildUrl:P,connect:(V)=>Z({...V,method:"CONNECT"}),delete:(V)=>Z({...V,method:"DELETE"}),get:(V)=>Z({...V,method:"GET"}),getConfig:C,head:(V)=>Z({...V,method:"HEAD"}),interceptors:X,options:(V)=>Z({...V,method:"OPTIONS"}),patch:(V)=>Z({...V,method:"PATCH"}),post:(V)=>Z({...V,method:"POST"}),put:(V)=>Z({...V,method:"PUT"}),request:Z,setConfig:Y,trace:(V)=>Z({...V,method:"TRACE"})}};export{d as createClient};