UNPKG

azion

Version:

Azion Packages for Edge Computing.

2 lines (1 loc) 13.4 kB
function B(o){return o.replace(/^\//,"")}var h=async(o,t=1e3)=>{let r=0,s=12e4,e=Date.now();for(;Date.now()-e<s;)try{return await o()}catch{if(r===0&&console.warn("Attempting to synchronize. The content may not be synchronized on the edge yet."),Date.now()-e>=s)throw new Error("Max retry time reached");console.log(`Retry attempt ${r+1} failed. Retrying in ${t*Math.pow(2,r)} ms...`),await new Promise(i=>setTimeout(i,t*Math.pow(2,r))),r++}throw new Error("Max retry time reached")},P=async(o,t,r)=>{let e=await S(o,{page_size:1e6},r?.debug??!1,r?.env),n=e.results;return e.error?{error:e.error}:n?{data:n.find(a=>a.name===t)}:{error:{message:"Failed to retrieve buckets.",operation:"getBuckets"}}};async function u(o,t,r,s=!0){let e=await fetch(o,t);if(!e.ok)try{let n=await e.json();if(r&&console.log("Error response body:",n),n.detail||n.message)return n;let i=`HTTP error! Status: ${e.status} - ${e.statusText}`;throw r&&console.log(`Error in fetch: ${i}`),new Error(i)}catch{let i=`HTTP error! Status: ${e.status} - ${e.statusText}`;throw r&&console.log(`Error in fetch: ${i}`),new Error(i)}if(s){let n=e.headers.get("content-type");if(!n||!n.includes("application/json")){let c=`Expected JSON response, but got: ${await e.text()}`;throw r&&console.log(`Error in fetch: ${c}`),new Error(c)}return await e.json()}else return await e.text()}var l=(o="production")=>({production:"https://api.azion.com/v4/storage/buckets",development:"/v4/storage/buckets",staging:"https://stage-api.azion.com/v4/storage/buckets"})[o],w=(o,t={})=>{let r={Accept:"application/json",...t};return o?{...r,Authorization:`Token ${o}`}:r},T=(o,t,r)=>{let s={method:o,headers:t,credentials:"include"};return r&&(s.body=r),s},A=(o,t,r)=>{let s={message:"Error unknown",operation:r};return o.forEach(e=>{t[e]&&(s={message:Array.isArray(t[e])?t[e].join(", "):t[e],operation:r})}),s},S=async(o,t,r,s="production")=>{try{let{page_size:e=10,page:n=1}=t||{},i=new URLSearchParams({page_size:String(e),page:String(n)}),a=w(o,{Accept:"application/json; version=3"}),c=T("GET",a),C=l(s),b=await u(`${C}?${i.toString()}`,c,r);return b.results?(r&&console.log("Response:",b),b):(b.error=A(["detail"],b,"get all buckets"),{error:b.error??JSON.stringify(b)})}catch(e){return r&&console.error("Error getting all buckets:",e),{error:{message:e.toString(),operation:"get all buckets"}}}},v=async(o,t,r,s,e="production")=>{try{let n=l(e),i=await u(n,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json",Authorization:`Token ${o}`},body:JSON.stringify({name:t,edge_access:r})},s);return i?.state?(s&&console.log("Response:",i),i):(i.error=A(["name","edge_access","detail"],i,"create bucket"),{error:i.error??JSON.stringify(i)})}catch(n){return s&&console.error("Error creating bucket:",n),{error:{message:n.toString(),operation:"create bucket"}}}},_=async(o,t,r,s,e="production")=>{try{let n=l(e),i=await u(`${n}/${t}`,{method:"PATCH",headers:{Accept:"application/json","Content-Type":"application/json",Authorization:`Token ${o}`},body:JSON.stringify({edge_access:r})},s);return i?.state?(s&&console.log("Response:",i),i):(i.error=A(["name","edge_access","detail"],i,"update bucket"),{error:i.error??JSON.stringify(i)})}catch(n){return s&&console.error("Error updating bucket:",n),{error:{message:n.toString(),operation:"update bucket"}}}},$=async(o,t,r,s="production")=>{try{let e=l(s),n=await u(`${e}/${t}`,{method:"DELETE",headers:{Accept:"application/json",Authorization:`Token ${o}`}},r);return n?.state?(r&&console.log("Response Delete Bucket:",n),n):(n.error=A(["detail"],n,"delete bucket"),{error:n.error??JSON.stringify(n)})}catch(e){return r&&console.error("Error deleting bucket:",e),{error:{message:e.toString(),operation:"delete bucket"}}}},x=async(o,t,r,s,e="production")=>{try{let{max_object_count:n=1e4}=r||{},i=new URLSearchParams({max_object_count:String(n)}),a=l(e),c=await u(`${a}/${t}/objects?${i.toString()}`,{method:"GET",headers:{Accept:"application/json",Authorization:`Token ${o}`}},s);return c.results?(s&&console.log("Response:",c),c):(c.error=A(["detail"],c,"get all objects"),{error:c.error??JSON.stringify(c)})}catch(n){return s&&console.error("Error getting all objects:",n),{error:{message:n.toString(),operation:"get all objects"}}}},D=async(o,t,r,s,e,n="production")=>{try{let i=l(n),a=await u(`${i}/${t}/objects/${r}`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/octet-stream",Authorization:`Token ${o}`},body:s},e);return a?.state?(e&&console.log("Response:",a),a):(a.error=A(["detail"],a,"create object"),{error:a.error??JSON.stringify(a)})}catch(i){return e&&console.error("Error posting object:",i),{error:{message:i.toString(),operation:"create object"}}}},M=async(o,t,r,s,e="production")=>{try{let n=l(e),i=w(o),a=T("GET",i),c=await u(`${n}/${t}/objects/${r}`,a,s);return c.error?{error:A(["detail"],c,"get object by key")}:(s&&console.log("Response:",c),{data:c})}catch(n){return s&&console.error("Error getting object by name:",n),{error:{message:n.toString(),operation:"get object by key"}}}},L=async(o,t,r,s,e,n="production")=>{try{let i=l(n),a=await u(`${i}/${t}/objects/${r}`,{method:"PUT",headers:{Accept:"application/json","Content-Type":"application/octet-stream",Authorization:`Token ${o}`},body:s},e);return e&&console.log("Response:",a),a}catch(i){return e&&console.error("Error putting object:",i),{error:{message:i.toString(),operation:"put object"}}}},N=async(o,t,r,s,e="production")=>{try{let n=l(e),i=await u(`${n}/${t}/objects/${r}`,{method:"DELETE",headers:{Accept:"application/json",Authorization:`Token ${o}`}},s);return i?.state?(s&&console.log("Response:",i),i):(i.error=A(["detail"],i,"delete object"),{error:i.error??JSON.stringify(i)})}catch(n){return s&&console.error("Error deleting object:",n),{error:{message:n.toString(),operation:"delete object"}}}};var K=()=>globalThis.Azion?.Sql||null,d=class{constructor(t,r){this.token=t;this.debug=r}storage=null;initializeStorage(t){this.storage||(this.storage=new globalThis.Azion.Storage(t))}name="";edge_access="unknown";async getBucket({name:t}){return this.initializeStorage(t),this.storage?(this.name=t,{name:t,edge_access:"unknown",state:"executed-runtime",getObjects:this.getObjects.bind(this),getObjectByKey:this.getObjectByKey.bind(this),createObject:this.createObject.bind(this),updateObject:this.updateObject.bind(this),deleteObject:this.deleteObject.bind(this)}):null}async getObjects({params:t}){this.initializeStorage(this.name);try{let r=await h(()=>this.storage.list()),s=t?.max_object_count??r.entries.length,e=await Promise.all(r.entries.slice(0,s).map(async n=>({key:B(n.key),size:n.content_length,state:"executed-runtime"})));return{data:{objects:e,count:e.length}}}catch(r){return this.debug&&console.error("Error getting objects:",r),{error:{message:r?.message??"Error getting objects",operation:"getObjects"}}}}async getObjectByKey({key:t}){this.initializeStorage(this.name);try{let r=await h(()=>this.storage.get(t)),s=await r.arrayBuffer(),n=new TextDecoder().decode(s);return{data:{state:"executed-runtime",key:B(t),size:r.contentLength,content:n,content_type:r.metadata.get("content-type")}}}catch(r){return this.debug&&console.error("Error getting object by key:",r),{error:{message:r?.message??"Error getting object by key",operation:"getObjectByKey"}}}}async createObject({key:t,content:r,options:s}){this.initializeStorage(this.name);try{let e=new TextEncoder().encode(r);return await h(()=>this.storage.put(t,e,{"content-type":s?.content_type})),{data:{state:"executed-runtime",key:B(t),size:e.byteLength,content_type:s?.content_type,content:r}}}catch(e){return this.debug&&console.error("Error creating object:",e),{error:{message:e?.message??"Error creating object",operation:"createObject"}}}}async updateObject({key:t,content:r,options:s}){return this.createObject({key:t,content:r,options:s})}async deleteObject({key:t}){this.initializeStorage(this.name);try{return await h(()=>this.storage.delete(t)),{data:{key:B(t),state:"executed-runtime"}}}catch(r){return this.debug&&console.error("Error deleting object:",r),{error:{message:r?.message??"Error deleting object",operation:"deleteObject"}}}}};var E=()=>typeof window<"u"&&typeof window.document<"u",F=!E()&&process?.env.AZION_DEBUG==="true",g=o=>E()?o??"":o??process?.env.AZION_TOKEN??"",f=o=>o??!!F,R=o=>E()?o??"production":o??process?.env.AZION_ENV??"production",p=o=>({...o,debug:f(o?.debug),env:R(o?.env)}),k=(o,t)=>(...r)=>{let s=r[r.length-1];return p(s).external||!K()?t(...r):o(...r)},U=async(o,t,r,s)=>{let e=p(s),n=await v(g(o),t,r,e.debug,e.env);return n.data?{data:{...n.data,edge_access:n.data.edge_access,getObjects:({params:i})=>m(o,t,i,e),getObjectByKey:({key:i})=>z(o,t,i,e),createObject:({key:i,content:a})=>O(o,t,i,a,e),updateObject:({key:i,content:a})=>j(o,t,i,a,e),deleteObject:({key:i})=>y(o,t,i,e)}}:{error:n.error}},W=async(o,t,r)=>{let s=p(r),e=await $(g(o),t,s.debug,s.env);return e.data?{data:{name:e.data.name,state:e.state}}:{error:e.error}},I=async(o,t,r)=>{let s=p(r),e=await S(g(o),t,s.debug,s.env);if(e?.results&&e.results.length>0){let n=e.results?.map(i=>({...i,edge_access:i.edge_access,getObjects:({params:a})=>m(o,i.name,a,s),getObjectByKey:({key:a})=>z(o,i.name,a,s),createObject:({key:a,content:c})=>O(o,i.name,a,c,s),updateObject:({key:a,content:c})=>j(o,i.name,a,c,s),deleteObject:({key:a})=>y(o,i.name,a,s)}));return{data:{buckets:n,count:e.count??n.length}}}return{error:e.error}},J=k(async(o,t,r)=>{let s=p(r),e=await P(o,t,s);if(e.error||!e.data?.name)return{error:{message:e.error?.message??"Bucket not found",operation:"get bucket"}};let i=await new d(o,s.debug).getBucket({name:t});return i?{data:{...i,getObjects:({params:a})=>m(o,t,a,s),getObjectByKey:({key:a})=>z(o,t,a,s),createObject:({key:a,content:c})=>O(o,t,a,c,s),updateObject:({key:a,content:c})=>j(o,t,a,c,s),deleteObject:({key:a})=>y(o,t,a,s)}}:{error:{message:"Failed to retrieve bucket",operation:"get bucket"}}},async(o,t,r)=>{let s=p(r),e=await P(o,t,s);return e.error||!e.data?.name?{error:{message:e.error?.message??"Bucket not found",operation:"get bucket"}}:{data:{name:e.data.name,edge_access:e.data?.edge_access,getObjects:({params:n})=>m(o,t,n,s),getObjectByKey:({key:n})=>z(o,t,n,s),createObject:({key:n,content:i})=>O(o,t,n,i,s),updateObject:({key:n,content:i})=>j(o,t,n,i,s),deleteObject:({key:n})=>y(o,t,n,s)}}}),G=async(o,t,r,s)=>{let e=p(s),n=await _(g(o),t,r,e.debug,e.env);return n?.data?{data:{...n.data,edge_access:n.data.edge_access,getObjects:({params:i})=>m(o,t,i,e),getObjectByKey:({key:i})=>z(o,t,i,e),createObject:({key:i,content:a})=>O(o,t,i,a,e),updateObject:({key:i,content:a})=>j(o,t,i,a,e),deleteObject:({key:i})=>y(o,t,i,e)}}:{error:n.error}},m=k(async(o,t,r,s)=>{let e=new d(o,s?.debug);e.name=t;let n=await e.getObjects({params:r});return n.data?{data:n.data}:{error:{message:"Failed to retrieve objects",operation:"get objects"}}},async(o,t,r,s)=>{let e=await x(g(o),t,r,s?.debug,s?.env);return e.results?{data:{objects:e.results,count:e.results.length}}:{error:e?.error}}),z=k(async(o,t,r,s)=>{let e=new d(o,s?.debug);e.name=t;let n=await e.getObjectByKey({key:r});return n.data?{data:n.data}:{error:{message:"Failed to retrieve object",operation:"get object by key"}}},async(o,t,r,s)=>{let e=await M(g(o),t,r,f(s?.debug),R(s?.env));return e.data?{data:{key:r,content:e.data}}:{error:e.error}}),O=k(async(o,t,r,s,e)=>{let n=new d(o,e?.debug);n.name=t;let i=await n.createObject({key:r,content:s});return i?.data?{data:i.data}:{error:{message:"Failed to create object",operation:"create object"}}},async(o,t,r,s,e)=>{let n=await D(g(o),t,r,s,f(e?.debug),R(e?.env));return n.data?{data:{key:n.data.object_key,content:s,state:n.state}}:{error:n.error}}),j=k(async(o,t,r,s,e)=>{let n=new d(o,e?.debug);n.name=t;let i=await n.updateObject({key:r,content:s});return i?.data?{data:i.data}:{error:i.error}},async(o,t,r,s,e)=>{let n=await L(g(o),t,r,s,f(e?.debug),R(e?.env));return n.data?{data:{key:n.data.object_key,content:s,state:n.state}}:{error:n.error}}),y=k(async(o,t,r,s)=>{let e=new d(o,s?.debug);e.name=t;let n=await e.deleteObject({key:r});return n.data?{data:n.data}:{error:n.error}},async(o,t,r,s)=>{let e=await N(g(o),t,r,f(s?.debug),R(s?.env));return e.data?{data:{key:r,state:e.state}}:{error:e.error}}),re=({name:o,edge_access:t,options:r})=>U(g(),o,t,p(r)),ne=({name:o,options:t})=>W(g(),o,p(t)),se=({params:o,options:t})=>I(g(),o,p(t)),ie=({name:o,options:t})=>J(g(),o,p(t)),ae=({name:o,edge_access:t,options:r})=>G(g(),o,t,p(r)),ce=({bucket:o,params:t,options:r})=>m(g(),o,t,p(r)),ge=({bucket:o,key:t,content:r,options:s})=>O(g(),o,t,r,p(s)),pe=({bucket:o,key:t,options:r})=>z(g(),o,t,p(r)),ue=({bucket:o,key:t,content:r,options:s})=>j(g(),o,t,r,p(s)),le=({bucket:o,key:t,options:r})=>y(g(),o,t,p(r)),H=o=>{let t=g(o?.token),r=p(o?.options);return{getBuckets:e=>I(t,e?.params,r),createBucket:({name:e,edge_access:n})=>U(t,e,n,r),updateBucket:({name:e,edge_access:n})=>G(t,e,n,r),deleteBucket:({name:e})=>W(t,e,r),getBucket:({name:e})=>J(t,e,r)}};var de=H;export{re as createBucket,U as createBucketMethod,H as createClient,ge as createObject,de as default,ne as deleteBucket,W as deleteBucketMethod,le as deleteObject,ie as getBucket,se as getBuckets,I as getBucketsMethod,pe as getObjectByKey,ce as getObjects,ae as updateBucket,G as updateBucketMethod,ue as updateObject};