UNPKG

liferay-headless-rest-client

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