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