UNPKG

@calljmp/cli

Version:
6 lines (5 loc) 2.11 kB
"use strict";var u=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var x=(e,t)=>{for(var n in t)u(e,n,{get:t[n],enumerable:!0})},b=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of S(t))!h.call(e,r)&&r!==n&&u(e,r,{get:()=>t[r],enumerable:!(s=p(t,r))||s.enumerable});return e};var C=e=>b(u({},"__esModule",{value:!0}),e);var N={};x(N,{default:()=>g,mayContainMultipleStatements:()=>d,mayContainTransaction:()=>c,trimSqlQuery:()=>m});module.exports=C(N);function m(e){if(!c(e))return e;const t=e.replace("BEGIN TRANSACTION;","").replace("COMMIT;","");if(c(t))throw new Error(`Calljmp could not process the provided SQL file, as it contains several transactions. D1 runs your SQL in a transaction for you. Please export an SQL file from your SQLite database and try again.`);return t}function c(e){return e.includes("BEGIN TRANSACTION")}function d(e){const t=e.trimEnd(),n=t.indexOf(";");return n!==-1&&n!==t.length-1}function g(e){const t=m(e);if(!d(t))return[t];const n=I(t);return n.length===0?[t]:n}function I(e){const t=[];let n="";const s=[],r=e[Symbol.iterator]();let o=r.next();for(;!o.done;){const i=o.value;switch(s[0]?.(n+i)&&s.shift(),i){case"'":case'"':case"`":n+=i+a(r,i);break;case"$":{const l="$"+f(r,k);n+=l,l.endsWith("$")&&(n+=a(r,l));break}case"-":if(o=r.next(),!o.done&&o.value==="-"){a(r,` `),n+=` `;break}else{n+=i;continue}case"/":if(o=r.next(),!o.done&&o.value==="*"){a(r,"*/");break}else{n+=i;continue}case";":s.length===0?(t.push(n),n=""):n+=i;break;default:n+=i;break}y(n)&&s.unshift(E),o=r.next()}return t.push(n),t.map(i=>i.trim()).filter(i=>i.length>0)}function f(e,t){let n=e.next(),s="";for(;!n.done&&(s+=n.value,!!t(s));)n=e.next();return s}function a(e,t){return f(e,n=>!n.endsWith(t))}function k(e){const t=e.slice(-1);return t!=="$"&&(/[0-9_]/i.test(t)||t.toLowerCase()!==t.toUpperCase())}function y(e){return/\s(BEGIN|CASE)\s$/i.test(e)}function E(e){return/\sEND[;\s]$/.test(e)}0&&(module.exports={mayContainMultipleStatements,mayContainTransaction,trimSqlQuery});