UNPKG

azion

Version:

Azion Packages for Edge Computing.

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