UNPKG

liferay-headless-rest-client

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