azion
Version:
Azion Packages for Edge Computing.
2 lines (1 loc) • 13.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;var b=(r,a)=>_optionalChain([r, 'optionalAccess', _2 => _2.length])>a?r.slice(0,a):r;async function d(r,a,s,e=!0){let t=await fetch(r,a);if(!t.ok){let n=`HTTP error! Status: ${t.status} - ${t.statusText}`;throw s&&console.log(`Error in fetch: ${n}`),new Error(n)}if(e){let n=t.headers.get("content-type");if(!n||!n.includes("application/json")){let c=`Expected JSON response, but got: ${await t.text()}`;throw s&&console.log(`Error in fetch: ${c}`),new Error(c)}return await t.json()}else return await t.text()}var y=process.env.AZION_ENV==="stage"?"https://stage-api.azion.com/v4/edge_sql/databases":"https://api.azion.com/v4/edge_sql/databases",D=(r,a,s)=>{let e={message:"Error unknown",operation:s};return r.forEach(t=>{a[t]&&(e={message:Array.isArray(a[t])?a[t].join(", "):a[t],operation:s})}),e},C=async(r,a,s)=>{try{let e=await d(y,{method:"POST",headers:{Authorization:`Token ${r}`,"Content-Type":"application/json"},body:JSON.stringify({name:a})},s);return e.state?(s&&console.log("Response Post Database",JSON.stringify(e)),{state:e.state,data:{clientId:e.data.client_id,createdAt:e.data.created_at,deletedAt:e.data.deleted_at,id:e.data.id,isActive:e.data.is_active,name:e.data.name,status:e.data.status,updatedAt:e.data.updated_at}}):(e.error=D(["detail"],e,"post database"),{error:_nullishCoalesce(e.error, () => (JSON.stringify(e)))})}catch(e){return s&&console.error("Error creating EdgeDB:",e),{error:{message:e.toString(),operation:"post database"}}}},T=async(r,a,s)=>{try{let e=await d(`${y}/${a}`,{method:"DELETE",headers:{Authorization:`Token ${r}`}},s);return e.state?{state:e.state,data:{id:a}}:(e.error=D(["detail"],e,"delete database"),{error:_nullishCoalesce(e.error, () => (JSON.stringify(e)))})}catch(e){return s&&console.error("Error deleting EdgeDB:",e),{error:{message:e.toString(),operation:"delete database"}}}},x=async(r,a,s,e)=>{try{let t=await d(`${y}/${a}/query`,{method:"POST",headers:{Authorization:`Token ${r}`,"Content-Type":"application/json"},body:JSON.stringify({statements:s})},e);if(!t.data||!Array.isArray(t.data))return t.error=D(["detail"],t,"post query"),{error:_nullishCoalesce(t.error, () => (JSON.stringify(t)))};if(t.data[0].error)return{error:{message:t.data[0].error,operation:"post query"}};if(e){let n={...t,data:_optionalChain([t, 'optionalAccess', _3 => _3.data, 'optionalAccess', _4 => _4.map, 'call', _5 => _5(o=>({...o,results:{...o.results,rows:b(o.results.rows,10)}}))])};console.log("Response Query:",JSON.stringify(n))}return{state:t.state,data:t.data}}catch(t){return e&&console.error("Error querying EdgeDB:",t),{error:{message:t.toString(),operation:"post query"}}}};var m=async(r,a,s)=>{try{let e=new URL(y);a&&Object.entries(a).forEach(([n,o])=>{o!==void 0&&e.searchParams.append(n,o.toString())});let t=await d(_optionalChain([e, 'optionalAccess', _6 => _6.toString, 'call', _7 => _7()]),{method:"GET",headers:{Authorization:`Token ${r}`}},s);if(!t.results)return t.error=D(["detail"],t,"get databases"),{error:_nullishCoalesce(t.error, () => (JSON.stringify(t)))};if(s){let n={...t,results:b(t.results,10)};console.log("Response Databases:",JSON.stringify(n))}return{links:_optionalChain([t, 'optionalAccess', _8 => _8.links]),count:t.count,results:t.results.map(n=>({clientId:n.client_id,createdAt:n.created_at,deletedAt:n.deleted_at,id:n.id,isActive:n.is_active,name:n.name,status:n.status,updatedAt:n.updated_at}))}}catch(e){return s&&console.error("Error getting all EdgeDBs:",e),{error:{message:e.toString(),operation:"get databases"}}}};var R=({results:r})=>{let a=[];if(r instanceof Array){if(r.length===0)return{results:[]};let s=null;a=_optionalChain([r, 'optionalAccess', _9 => _9.map, 'call', _10 => _10(e=>(_optionalChain([e, 'optionalAccess', _11 => _11.rows])&&(s=e.rows.map(t=>{let n={};return _optionalChain([e, 'optionalAccess', _12 => _12.columns])&&e.columns.forEach((o,u)=>{n[o]=t[u]}),n})),{statement:e.statement,rows:s}))])}return{results:a}};var h=()=>_optionalChain([globalThis, 'access', _13 => _13.Azion, 'optionalAccess', _14 => _14.Sql])||null,z= (_class =class{__init() {this.database=null}constructor(){;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);this.database=_optionalChain([h, 'call', _31 => _31(), 'optionalAccess', _32 => _32.Database])||null}__init2() {this.mapperQuery=async a=>{let s=[];for(let e of a){let t=e.result.columnCount();if(t===0)continue;let n=[];for(let c=0;c<t;c++)n.push(e.result.columnName(c));let o=await e.result.next(),u=[];for(;o;){let c=[];for(let p=0;p<t;p++)c.push(o.getValue(p));u.push(c),o=await e.result.next()}s.push({statement:_optionalChain([e, 'optionalAccess', _33 => _33.statement, 'optionalAccess', _34 => _34.split, 'call', _35 => _35(" "), 'access', _36 => _36[0]]),columns:n,rows:u})}return Promise.resolve(s)}}__init3() {this.query=async(a,s,e)=>{if(_optionalChain([this, 'access', _37 => _37.database, 'optionalAccess', _38 => _38.open])){let t=await _optionalChain([this, 'access', _39 => _39.database, 'optionalAccess', _40 => _40.open, 'call', _41 => _41(a)]),n=s.map(async o=>{let u=await _optionalChain([t, 'optionalAccess', _42 => _42.query, 'call', _43 => _43(o)]);return{statement:o,result:u}});try{let o=await Promise.all(n);if(o.every(u=>_optionalChain([u, 'access', _44 => _44.result, 'optionalAccess', _45 => _45.columnCount, 'call', _46 => _46()])>0))return o}catch(o){throw _optionalChain([e, 'optionalAccess', _47 => _47.debug])&&console.error("Error querying:",_optionalChain([o, 'optionalAccess', _48 => _48.message])),o}}return[]}}}, _class);var E=async(r,a,s,e)=>{let t=await m(r,{search:a},_optionalChain([e, 'optionalAccess', _49 => _49.debug]));if(_optionalChain([t, 'optionalAccess', _50 => _50.error]))return{error:_optionalChain([t, 'optionalAccess', _51 => _51.error])};let n=_optionalChain([t, 'optionalAccess', _52 => _52.results]);if(!n||n.length===0)return{error:{message:`Database ${a} not found`,operation:"apiQuery"}};let o=n[0];if(!_optionalChain([o, 'optionalAccess', _53 => _53.id]))return{error:{message:`Database ${a} not found`,operation:"apiQuery"}};let{state:u,data:c,error:p}=await x(r,o.id,s,_optionalChain([e, 'optionalAccess', _54 => _54.debug]));if(c&&c.length>0){let O={state:u,results:c.map((g,$)=>({statement:_optionalChain([s, 'access', _55 => _55[$], 'optionalAccess', _56 => _56.split, 'call', _57 => _57(" "), 'access', _58 => _58[0]]),columns:_optionalChain([g, 'optionalAccess', _59 => _59.results, 'optionalAccess', _60 => _60.columns])&&_optionalChain([g, 'optionalAccess', _61 => _61.results, 'optionalAccess', _62 => _62.columns, 'access', _63 => _63.length])>0?_optionalChain([g, 'optionalAccess', _64 => _64.results, 'optionalAccess', _65 => _65.columns]):void 0,rows:_optionalChain([g, 'optionalAccess', _66 => _66.results, 'optionalAccess', _67 => _67.rows])&&_optionalChain([g, 'optionalAccess', _68 => _68.results, 'optionalAccess', _69 => _69.rows, 'access', _70 => _70.length])>0?_optionalChain([g, 'optionalAccess', _71 => _71.results, 'optionalAccess', _72 => _72.rows]):void 0})),toObject:()=>R(O)};return{data:O}}return{error:p}},P=async(r,a,s,e)=>{try{let t=new z,n=await t.query(a,s,e),o={results:[],toObject:()=>null},u=await t.mapperQuery(n);if(u&&u.length>0&&(o.state="executed-runtime",o.results=u),_optionalChain([e, 'optionalAccess', _73 => _73.debug])){let c={...o,results:o.results.map(p=>({...p,rows:b(_optionalChain([p, 'optionalAccess', _74 => _74.rows])||[],10)}))};console.log("Response Query:",JSON.stringify(c))}return{data:{...o,toObject:()=>R(o)}}}catch(t){return{error:{message:_optionalChain([t, 'optionalAccess', _75 => _75.message])||"Error executing query",operation:"executing query"}}}};var v=process.env.AZION_DEBUG&&process.env.AZION_DEBUG==="true",l=r=>_nullishCoalesce(_nullishCoalesce(r, () => (process.env.AZION_TOKEN)), () => ("")),i=r=>_nullishCoalesce(r, () => (!!v)),S=async(r,a,s)=>{let e=await C(l(r),a,i(_optionalChain([s, 'optionalAccess', _76 => _76.debug])));return e.data?{data:{state:e.state,...e.data,query:t=>A(l(r),a,t,{...s,debug:i(_optionalChain([s, 'optionalAccess', _77 => _77.debug]))}),execute:(t,n)=>f(l(r),a,t,{...n,debug:i(_optionalChain([n, 'optionalAccess', _78 => _78.debug]))}),getTables:t=>w(a,{...t,debug:i(_optionalChain([t, 'optionalAccess', _79 => _79.debug]))})}}:{error:e.error}},Q=async(r,a,s)=>{let e=await T(l(r),a,i(_optionalChain([s, 'optionalAccess', _80 => _80.debug])));return _optionalChain([e, 'optionalAccess', _81 => _81.data])?{data:{state:_nullishCoalesce(e.state, () => ("executed")),id:e.data.id}}:{error:e.error}},q=async(r,a,s)=>{if(!a||a==="")return{error:{message:"Database name is required",operation:"get database"}};let e=await m(l(r),{search:a},i(_optionalChain([s, 'optionalAccess', _82 => _82.debug])));if(!_optionalChain([e, 'optionalAccess', _83 => _83.results])||_optionalChain([e, 'optionalAccess', _84 => _84.results, 'optionalAccess', _85 => _85.length])===0)return{error:{message:`Database with name '${a}' not found`,operation:"get database"}};let t=_optionalChain([e, 'optionalAccess', _86 => _86.results, 'access', _87 => _87[0]]);return!t||t.id===void 0||t.name!==a?{error:{message:`Database with name '${a}' not found`,operation:"get database"}}:{data:{...t,query:n=>A(l(r),t.name,n,{...s,debug:i(_optionalChain([s, 'optionalAccess', _88 => _88.debug]))}),execute:(n,o)=>f(l(r),t.name,n,{...o,debug:i(_optionalChain([o, 'optionalAccess', _89 => _89.debug]))}),getTables:n=>w(t.name,{...n,debug:i(_optionalChain([n, 'optionalAccess', _90 => _90.debug]))})}}},N=async(r,a,s)=>{let e=await m(l(r),a,i(_optionalChain([s, 'optionalAccess', _91 => _91.debug])));if(_optionalChain([e, 'optionalAccess', _92 => _92.results])&&e.results.length>0){let t=e.results.map(n=>({...n,query:o=>A(l(r),n.name,o,{...s,debug:i(_optionalChain([s, 'optionalAccess', _93 => _93.debug]))}),execute:(o,u)=>f(l(r),n.name,o,{...u,debug:i(_optionalChain([u, 'optionalAccess', _94 => _94.debug]))}),getTables:o=>w(n.name,{...o,debug:i(_optionalChain([o, 'optionalAccess', _95 => _95.debug]))})}));return{data:{count:e.count,databases:t}}}return{error:e.error}},A=async(r,a,s,e)=>{if(!a||a==="")return{error:{message:"Database name is required",operation:"query database"}};if(_optionalChain([e, 'optionalAccess', _96 => _96.debug])&&console.log(`Executing statements on database ${a}: ${s}`),!Array.isArray(s)||s.length===0)return{error:{message:'No statements to execute. Please provide at least one statement. e.g ["SELECT * FROM users"]',operation:"query database"}};if(!s.some(n=>["SELECT","PRAGMA"].some(o=>n.trim().toUpperCase().startsWith(o))))throw new Error("Only read statements are allowed");return h()?P(l(r),a,s,{...e,debug:i(_optionalChain([e, 'optionalAccess', _97 => _97.debug]))}):E(l(r),a,s,{...e,debug:i(_optionalChain([e, 'optionalAccess', _98 => _98.debug]))})},f=async(r,a,s,e)=>{if(_optionalChain([e, 'optionalAccess', _99 => _99.debug])&&console.log(`Executing statements on database ${a}: ${s}`),!a||a==="")return{error:{message:"Database name is required",operation:"execute database"}};if(!Array.isArray(s)||s.length===0)return{error:{message:`No statements to execute. Please provide at least one statement. e.g ["INSERT INTO users (name) VALUES ('John')"]`,operation:"execute database"}};let t=s.some(o=>["INSERT","UPDATE","DELETE"].some(u=>o.trim().toUpperCase().startsWith(u))),n=s.some(o=>["CREATE","ALTER","DROP","TRUNCATE"].some(u=>o.trim().toUpperCase().startsWith(u)));return!n&&!t?{error:{message:"Only write statements are allowed",operation:"execute database"}}:n&&_optionalChain([e, 'optionalAccess', _100 => _100.force])===!1?{error:{message:"To admin statements, you need to set the force option to true",operation:"execute database"}}:E(r,a,s,e)},X= exports.createDatabase =async(r,a)=>await S(l(),r,{...a,debug:i(_optionalChain([a, 'optionalAccess', _101 => _101.debug]))}),Y= exports.deleteDatabase =(r,a)=>Q(l(),r,{...a,debug:i(_optionalChain([a, 'optionalAccess', _102 => _102.debug]))}),ee= exports.getDatabase =async(r,a)=>q(l(),r,{...a,debug:i(_optionalChain([a, 'optionalAccess', _103 => _103.debug]))}),te= exports.getDatabases =(r,a)=>N(l(),r,{...a,debug:i(_optionalChain([a, 'optionalAccess', _104 => _104.debug]))}),w= exports.getTables =async(r,a)=>A(l(),r,["PRAGMA table_list"],{...a,debug:i(_optionalChain([a, 'optionalAccess', _105 => _105.debug]))}),ae= exports.useQuery =(r,a,s)=>A(l(),r,a,{...s,debug:i(_optionalChain([s, 'optionalAccess', _106 => _106.debug]))}),se= exports.useExecute =async(r,a,s)=>f(l(),r,a,{...s,debug:i(_optionalChain([s, 'optionalAccess', _107 => _107.debug]))}),_= exports.createClient =r=>{let a=l(_optionalChain([r, 'optionalAccess', _108 => _108.token])),s=i(_optionalChain([r, 'optionalAccess', _109 => _109.options, 'optionalAccess', _110 => _110.debug]));return{createDatabase:t=>S(a,t,{...r,debug:s}),deleteDatabase:t=>Q(a,t,{...r,debug:s}),getDatabase:t=>q(a,t,{...r,debug:s}),getDatabases:t=>N(a,t,{...r,debug:s})}};var re=_;exports.createClient = _; exports.createDatabase = X; exports.default = re; exports.deleteDatabase = Y; exports.getDatabase = ee; exports.getDatabases = te; exports.getTables = w; exports.useExecute = se; exports.useQuery = ae;
;