orcaq 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{BJCrbji-.js → 5oARMrld.js} +1 -1
- package/.output/public/_nuxt/{kvtnkChG.js → 9sDqz0uT.js} +1 -1
- package/.output/public/_nuxt/{Bmgr9uz4.js → B-4cXhNx.js} +1 -1
- package/.output/public/_nuxt/{DpT8FO1Q.js → BC6CdfCG.js} +1 -1
- package/.output/public/_nuxt/{Ca0KO9Xq.js → BCAMWuzu.js} +1 -1
- package/.output/public/_nuxt/{Bq47tjcm.js → BG-rJefG.js} +1 -1
- package/.output/public/_nuxt/{BpvGVfME.js → BKFPmrcv.js} +1 -1
- package/.output/public/_nuxt/{COHOh4Oe.js → BMLhg7hE.js} +1 -1
- package/.output/public/_nuxt/{atdCACH-.js → BYOPXIhP.js} +1 -1
- package/.output/public/_nuxt/{B46blMXm.js → BYxQJ0gE.js} +1 -1
- package/.output/public/_nuxt/{BrNfge84.js → BZ4ThSRp.js} +1 -1
- package/.output/public/_nuxt/{Dq1JM9WZ.js → BZmDBfmV.js} +1 -1
- package/.output/public/_nuxt/{DHAL8jJG.js → B_ERKujF.js} +4 -4
- package/.output/public/_nuxt/{CycELG5y.js → BccuQbKA.js} +1 -1
- package/.output/public/_nuxt/{B6MkNyZd.js → BcyZ-eCi.js} +1 -1
- package/.output/public/_nuxt/{63YtjFEq.js → BdZsZgcB.js} +1 -1
- package/.output/public/_nuxt/{S1qa1a4x.js → BigePTMZ.js} +1 -1
- package/.output/public/_nuxt/{BL__uYa3.js → BkN-uAef.js} +1 -1
- package/.output/public/_nuxt/{BWZ7atse.js → BmAp-sfn.js} +1 -1
- package/.output/public/_nuxt/{BogEzQi9.js → BqHKqsJ5.js} +3 -3
- package/.output/public/_nuxt/{DpEV6S2O.js → BseVuOZ1.js} +1 -1
- package/.output/public/_nuxt/{B2IKcIj2.js → BtuY54_l.js} +1 -1
- package/.output/public/_nuxt/{B8TrrBEb.js → Buh0pI3n.js} +1 -1
- package/.output/public/_nuxt/{CAnr3OhD.js → BzVvHKKC.js} +1 -1
- package/.output/public/_nuxt/{DuCDilAk.js → BzywwPw6.js} +1 -1
- package/.output/public/_nuxt/BzzgEvr9.js +7 -0
- package/.output/public/_nuxt/{AymhMj9v.js → C-I81xfB.js} +1 -1
- package/.output/public/_nuxt/{DAr5YiBT.js → C-Pa1rIR.js} +1 -1
- package/.output/public/_nuxt/{CMkzSwnO.js → C-pX1zRI.js} +1 -1
- package/.output/public/_nuxt/{ioXB9E2w.js → C0vscAQB.js} +1 -1
- package/.output/public/_nuxt/C4FrpL8k.js +1 -0
- package/.output/public/_nuxt/{Cq-MDPLE.js → C4zYnWdF.js} +1 -1
- package/.output/public/_nuxt/{C_7gtl40.js → C9kgALYc.js} +1 -1
- package/.output/public/_nuxt/{Oe2GG0Lt.js → CCmd8DpQ.js} +1 -1
- package/.output/public/_nuxt/{DsmBazLf.js → CGq9Twnj.js} +1 -1
- package/.output/public/_nuxt/{BEyCol50.js → CHMlsxJw.js} +1 -1
- package/.output/public/_nuxt/{Y1gXUmjt.js → CLQzuV82.js} +1 -1
- package/.output/public/_nuxt/{BJVPtt2X.js → CL_1HDtg.js} +1 -1
- package/.output/public/_nuxt/{DVnDb6ua.js → CRqiHVA4.js} +1 -1
- package/.output/public/_nuxt/{ByibjLZn.js → CS4EJV3B.js} +1 -1
- package/.output/public/_nuxt/{Bf6Q3Zl5.js → CSExCj8O.js} +1 -1
- package/.output/public/_nuxt/{MeLWmO7R.js → CY_CG0AU.js} +1 -1
- package/.output/public/_nuxt/{D-9vaM6z.js → CbHZwHBV.js} +1 -1
- package/.output/public/_nuxt/{MW5K_zef.js → Cbo6GmdE.js} +1 -1
- package/.output/public/_nuxt/{dWu56FdP.js → Cf460dGA.js} +1 -1
- package/.output/public/_nuxt/{DcCF9IZB.js → CfseWBL0.js} +1 -1
- package/.output/public/_nuxt/{qzrMNYut.js → Ch0I4juX.js} +1 -1
- package/.output/public/_nuxt/Chvs1m1n.js +1 -0
- package/.output/public/_nuxt/{CHEpbbGc.js → Chx1IK9D.js} +1 -1
- package/.output/public/_nuxt/{ByiJDSw8.js → CjpXgncp.js} +1 -1
- package/.output/public/_nuxt/{BpUSbMUb.js → CkjXKCQH.js} +1 -1
- package/.output/public/_nuxt/{C3ZBsVV_.js → Ckry8tuC.js} +2 -2
- package/.output/public/_nuxt/{CsRSZpa6.js → CmOZ0DCP.js} +1 -1
- package/.output/public/_nuxt/{Bq7OeLM1.js → CmjR7OTc.js} +1 -1
- package/.output/public/_nuxt/{CDJKw_ak.js → Co7e2XML.js} +1 -1
- package/.output/public/_nuxt/{BzvSm28k.js → CqkctA6I.js} +1 -1
- package/.output/public/_nuxt/{DEZMnZ2r.js → CtB2-SFY.js} +1 -1
- package/.output/public/_nuxt/{dNPwafbq.js → CtCx-4nJ.js} +1 -1
- package/.output/public/_nuxt/{xOD4Ev56.js → CtkhwZY7.js} +1 -1
- package/.output/public/_nuxt/Cty7uMrC.js +1 -0
- package/.output/public/_nuxt/{C2XHqDOf.js → CvFjsYJZ.js} +1 -1
- package/.output/public/_nuxt/{D4pAW_0T.js → Czr647QE.js} +1 -1
- package/.output/public/_nuxt/{BcsKoAPU.js → D0lW43G8.js} +28 -28
- package/.output/public/_nuxt/{DDebxXP-.js → D28ykMUi.js} +1 -1
- package/.output/public/_nuxt/{Ci5B19-c.js → DA4Xn6lm.js} +1 -1
- package/.output/public/_nuxt/{BWebIWit.js → DChDHsIe.js} +1 -1
- package/.output/public/_nuxt/{DSaBCmOg.js → DJBO_9pO.js} +1 -1
- package/.output/public/_nuxt/{DPIEiNwW.js → DJXB1Li8.js} +1 -1
- package/.output/public/_nuxt/{DJH-4SVI.js → DKLk0T0H.js} +1 -1
- package/.output/public/_nuxt/{C6dIAdHr.js → DLBsdU7G.js} +1 -1
- package/.output/public/_nuxt/{BtyzMl9p.js → DOAixkpJ.js} +1 -1
- package/.output/public/_nuxt/{BoMjapT5.js → DPq8O9CC.js} +1 -1
- package/.output/public/_nuxt/{Bmx1kTaZ.js → DQdA5Twt.js} +1 -1
- package/.output/public/_nuxt/{DGvAu532.js → DRh-06Hb.js} +1 -1
- package/.output/public/_nuxt/{JOg_XIAv.js → DTvJImVU.js} +1 -1
- package/.output/public/_nuxt/{C7BQpy74.js → DVkCRFXi.js} +1 -1
- package/.output/public/_nuxt/{BjqbQLK3.js → DX8ecA59.js} +1 -1
- package/.output/public/_nuxt/DakKehZj.js +1 -0
- package/.output/public/_nuxt/{BoIj4dtd.js → Db3rTgnd.js} +1 -1
- package/.output/public/_nuxt/{BRFPdiIh.js → DfyynWBR.js} +1 -1
- package/.output/public/_nuxt/{B5WGo5x7.js → DgJOougY.js} +1 -1
- package/.output/public/_nuxt/DkQCknMw.js +1 -0
- package/.output/public/_nuxt/{Sf02B6Pt.js → DpBeiFQV.js} +1 -1
- package/.output/public/_nuxt/{sk7V7xQl.js → DrdbRRXx.js} +1 -1
- package/.output/public/_nuxt/{CS9hqyP3.js → Dtl3qje7.js} +1 -1
- package/.output/public/_nuxt/{DNoTlUiY.js → Du5Ka6uI.js} +1 -1
- package/.output/public/_nuxt/{B73IHAoF.js → Dunt8-TF.js} +1 -1
- package/.output/public/_nuxt/{CrNLwdoE.js → DvWEWtFg.js} +1 -1
- package/.output/public/_nuxt/{DkD29_YA.js → KynNdNgX.js} +1 -1
- package/.output/public/_nuxt/{BqU89KuH.js → MWrJVKEf.js} +2 -2
- package/.output/public/_nuxt/{DMmjWR_K.js → NYpsF1lW.js} +1 -1
- package/.output/public/_nuxt/{L2I3LmpB.js → Nof0nVJ6.js} +1 -1
- package/.output/public/_nuxt/{BTYBVtfa.js → Ohrg3hU7.js} +1 -1
- package/.output/public/_nuxt/{CerLmMsC.js → Rrce0BXL.js} +3 -3
- package/.output/public/_nuxt/{xp7rFxcm.js → VNOocds9.js} +1 -1
- package/.output/public/_nuxt/Y-MEKhtd.js +1 -0
- package/.output/public/_nuxt/{CSQ0xnqv.js → YdOCcCRS.js} +1 -1
- package/.output/public/_nuxt/bYQCSC5-.js +1 -0
- package/.output/public/_nuxt/{vhkvHdfO.js → bkzIFcLw.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/ad11b978-8fdd-4bb2-9b38-1d6fe93f994e.json +1 -0
- package/.output/public/_nuxt/{FDw04QOj.js → eOeO5uM0.js} +1 -1
- package/.output/public/_nuxt/{BPACuoI0.js → g9ZMnTLJ.js} +1 -1
- package/.output/public/_nuxt/{Cnfx1zWl.js → hIbRoJ89.js} +1 -1
- package/.output/public/_nuxt/{8tyEaimf.js → j23gQsG7.js} +1 -1
- package/.output/public/_nuxt/klVlxnpt.js +1 -0
- package/.output/public/_nuxt/{DWqOZJe7.js → qRiDKEr7.js} +1 -1
- package/.output/public/_nuxt/{iNy-Nl0_.js → syq5mCJi.js} +1 -1
- package/.output/public/_nuxt/{COq7mAG7.js → v41yYOa9.js} +1 -1
- package/.output/public/_nuxt/{B9uki8o2.js → vaJvtND9.js} +1 -1
- package/.output/public/_nuxt/{wRAs0MDn.js → wodl4bLW.js} +1 -1
- package/.output/server/chunks/build/client.manifest.mjs +675 -675
- package/.output/server/chunks/build/client.manifest.mjs.map +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +635 -635
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/BS-LtKx4.js +0 -1
- package/.output/public/_nuxt/BTheloyh.js +0 -1
- package/.output/public/_nuxt/Bj7ctTfH.js +0 -1
- package/.output/public/_nuxt/BpLDGvqy.js +0 -1
- package/.output/public/_nuxt/CtWq1MER.js +0 -7
- package/.output/public/_nuxt/Cww9dXBK.js +0 -1
- package/.output/public/_nuxt/DfNTLojg.js +0 -1
- package/.output/public/_nuxt/M6bBaUHa.js +0 -1
- package/.output/public/_nuxt/_qKPTuua.js +0 -1
- package/.output/public/_nuxt/builds/meta/7c171291-8bbd-4c4c-8904-0afae065b82e.json +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./
|
|
2
|
-
var ks=Object.defineProperty;var $s=(s,e,t)=>e in s?ks(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var ae=(s,e,t)=>$s(s,typeof e!="symbol"?e+"":e,t);import{a6 as Z,d as X,bV as zs,ae as As,ar as Ls,k as I,o as v,w as h,D as xe,g as l,p as ss,bU as Pt,bT as Ms,a9 as Ns,aa as Is,ab as Os,ac as Ps,es as qs,M as ns,et as rt,eu as Ds,c as P,bN as Fs,j as et,m as f,f as p,bO as Vs,df as wt,e as A,z as O,l as Q,a1 as _t,W as Et,X as Tt,Y as Rt,A as fe,Z as Bs,t as D,$ as os,a0 as Se,bk as kt,F as ee,s as ne,n as pe,a_ as ie,a$ as ue,aY as ce,r as K,i as Ae,ev as js,ew as Us,ex as as,ey as rs,ez as Hs,bl as ls,eA as Qs,eB as Ws,el as Ks,em as Gs,en as Ys,eC as Ue,dm as Js,au as de,av as $t,aQ as zt,aT as $e,q as Zs,aS as Fe,aR as Xs,aZ as Ve,az as en,ay as Ce,ci as is,am as us,eD as tn,ef as sn,aq as Ke,H as nn,bY as qt,bW as on,bm as an,bE as rn,bF as ln,bG as un,eE as cn,aP as Qe,aL as dn,P as cs,aC as mn,aH as pn,eF as Dt,ao as ds,eG as fn,eH as At,eI as hn,eJ as vn,eK as gn,eL as yn,eM as xn,eN as ms,ba as bn,bb as ut,eO as Cn,bd as Sn,bc as wn,eP as _n,be as En,bf as Tn,eQ as Rn,bg as kn,eR as ct,eS as $n,bi as zn,eT as An,bD as Ln,a8 as ps,eU as Mn,a3 as Nn,a as In,aK as On,b9 as Pn,cq as qn}from"./BcsKoAPU.js";import{_ as Dn,u as Fn}from"./xp7rFxcm.js";import{_ as Vn}from"./63YtjFEq.js";import{_ as Bn}from"./xOD4Ev56.js";import{_ as Lt}from"./AymhMj9v.js";import{c as fs,d as hs,e as vs,C as U,f as jn,g as tt,h as Un,i as Hn,j as Qn,k as Wn,_ as dt,a as mt,b as Kn}from"./C7BQpy74.js";import{_ as Gn,a as Yn,b as Jn}from"./DVnDb6ua.js";import{f as yt,a as We,b as Ye}from"./-lZvfnzr.js";import{M as Zn,_ as Ft,j as Vt,k as Bt}from"./B73IHAoF.js";import{p as Xn,D as eo,_ as to,a as pt,b as so}from"./vhkvHdfO.js";import{_ as jt}from"./BpUSbMUb.js";import{_ as no}from"./MW5K_zef.js";import{s as oo}from"./DDebxXP-.js";import{_ as ao}from"./COHOh4Oe.js";import{u as ro}from"./CsRSZpa6.js";import{_ as Mt,c as Ut,a as ft,e as Ht,b as Qt}from"./Ca0KO9Xq.js";import{i as lo}from"./dWu56FdP.js";import{_ as gs}from"./CS9hqyP3.js";import{r as io}from"./DsmBazLf.js";import{c as uo,m as co}from"./BRFPdiIh.js";import"./CSQ0xnqv.js";import"./D4pAW_0T.js";import"./CHEpbbGc.js";import"./DcCF9IZB.js";import"./BoIj4dtd.js";import"./DAr5YiBT.js";import"./CS5akSNT.js";class mo{constructor(e){this.rawError=e}get nomaltliztionErrror(){var t;const e=((t=this.rawError)==null?void 0:t.message)||"Error parsing SQL execution.";if(!this.rawError)return{message:e};switch(this.rawError.dbType){case Z.POSTGRES:return this.normalizePostgresError(e);case Z.MYSQL:return this.normalizeMysqlError(e);case Z.SQLITE3:return this.normalizeSqliteError(e);case Z.MARIADB:return this.normalizeMysqlError(e);case Z.ORACLE:return this.normalizeOracleError(e);default:return{message:e}}}normalizePostgresError(e){let t;return this.rawError.position&&(t=typeof this.rawError.position=="string"?Number(this.rawError.position):this.rawError.position,Number.isNaN(t)&&(t=void 0)),{message:this.rawError.message||e,position:t,hint:this.rawError.hint}}normalizeMysqlError(e){return{message:this.rawError.sqlMessage||this.rawError.message||e,hint:this.rawError.code?`Error Code: ${this.rawError.code}`:void 0}}normalizeSqliteError(e){return{message:this.rawError.message||e,hint:this.rawError.code?`Error Code: ${this.rawError.code}`:void 0}}normalizeOracleError(e){return{message:this.rawError.message||e,hint:this.rawError.errorNum?`ORA-${String(this.rawError.errorNum).padStart(5,"0")}`:void 0}}}var po=X({__name:"MenuCheckboxItem",props:{modelValue:{type:[Boolean,String],required:!1,default:!1},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select","update:modelValue"],setup(s,{emit:e}){const t=s,n=e,a=zs(t,["modelValue"]),o=As(a),r=Ls(t,"modelValue",n);return Xn({modelValue:r}),(i,u)=>(v(),I(Zn,ss({role:"menuitemcheckbox"},l(o),{"aria-checked":l(Pt)(l(r))?"mixed":l(r),"data-state":l(Ms)(l(r)),onSelect:u[0]||(u[0]=async c=>{n("select",c),l(Pt)(l(r))?r.value=!0:r.value=!l(r)})}),{default:h(()=>[xe(i.$slots,"default",{modelValue:l(r)})]),_:3},16,["aria-checked","data-state"]))}}),fo=po,ho=X({__name:"DropdownMenuCheckboxItem",props:{modelValue:{type:[Boolean,String],required:!1},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select","update:modelValue"],setup(s,{emit:e}){const t=s,a=Ns(e);return Is(),(o,r)=>(v(),I(l(fo),Os(Ps({...t,...l(a)})),{default:h(()=>[xe(o.$slots,"default")]),_:3},16))}}),vo=ho;function Nt(s,e){s.dispatch(qs(s.state,e))}function go(s){return s===Z.POSTGRES?"postgres-positional":s===Z.ORACLE?"oracle-positional":"question-mark"}function yo(s,e,t,n={}){if(!Object.keys(e).length)return s;const a=n.style??go(t);let o=n.startIndex??1,r="",i=0;for(;i<s.length;){const u=s[i];if(u==="'"){const c=i++;for(;i<s.length;)if(s[i]==="'"&&s[i+1]==="'")i+=2;else if(s[i]==="'"){i++;break}else i++;r+=s.slice(c,i);continue}if(u==='"'){const c=i++;for(;i<s.length&&s[i]!=='"';)i++;i++,r+=s.slice(c,i);continue}if(u===":"&&i+1<s.length&&/[a-zA-Z_]/.test(s[i+1])){const c=i++;let m="";for(;i<s.length&&/[a-zA-Z0-9_]/.test(s[i]);)m+=s[i++];m in e?a==="postgres-positional"?r+=`$${o++}`:a==="oracle-positional"?r+=`:${o++}`:r+="?":r+=s.slice(c,i);continue}r+=u,i++}return r}function xo(s,e,t){if(s===e)return t;let n=0,a=0;for(;a<t&&n<s.length;){const o=s[n],r=e[a],i=/\s/.test(o),u=/\s/.test(r);if(i&&u){n++,a++;continue}if(o===":"&&(r==="$"||r==="?"||r===":")){for(;n<s.length&&/[:a-zA-Z0-9_]/.test(s[n]);)n++;if(r==="$")for(;a<e.length&&/[$0-9]/.test(e[a]);)a++;else if(r===":")for(;a<e.length&&/[:0-9]/.test(e[a]);)a++;else a++;if(a>=t)return n;continue}o===r?(n++,a++):n++}return n}function Wt({editorView:s,originalSql:e,statementFrom:t,fileParameters:n={},errorDetail:a,clientType:o,queryPrefix:r}){if(!s||!a)return;const{message:i,position:u}=a.normalizeError||new mo(a).nomaltliztionErrror;if(!u){Co(s,t,e,i);return}const c=`${r}${e}`,m=yo(c,n,o),d=xo(c,m,u),y=Math.max(d-1,0)-((r==null?void 0:r.length)||0),{from:x,to:S}=bo(e,t,y);Nt(s,[{from:x,to:S,severity:"error",message:i}])}function bo(s,e,t){let n=t;for(;n<s.length&&!/[\s\n\r\t]/.test(s[n]);)n++;return{from:e+t,to:e+n}}function Co(s,e,t,n){const a=[{from:e,to:e+t.length,severity:"error",message:n}];Nt(s,a)}function So(s){Nt(s,[])}const wo=s=>ns.of([{key:"Mod-Enter",mac:"Cmd-Enter",run:e=>{const{currentStatements:t}=rt(e),n=Ds(e);return t.length&&s({currentStatements:t,treeNodes:n||[]}),!0},preventDefault:!0}]),_o={class:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center"},Eo=X({__name:"DropdownMenuCheckboxItem",props:{modelValue:{type:[Boolean,String]},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{}},emits:["select","update:modelValue"],setup(s,{emit:e}){const t=s,n=e,a=P(()=>{const{class:r,...i}=t;return i}),o=Fs(a,n);return(r,i)=>(v(),I(l(vo),ss({"data-slot":"dropdown-menu-checkbox-item"},l(o),{class:l(et)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t.class)}),{default:h(()=>[f("span",_o,[p(l(eo),null,{default:h(()=>[p(l(Vs),{class:"size-4"})]),_:1})]),xe(r.$slots,"default")]),_:3},16,["class"]))}}),To={},Ro={class:"p-4 flex flex-col items-center justify-center h-full text-center space-y-4"},ko={class:"text-muted-foreground space-y-3"},$o={class:"list-disc text-sm list-inside text-left space-y-2"};function zo(s,e){const t=Bn,n=Vn,a=Lt;return v(),A("div",Ro,[p(n,{class:"rounded-2xl size-20 shadow-md"},{default:h(()=>[p(t,{src:"/logo.png",alt:"@unovue"})]),_:1}),f("div",ko,[e[7]||(e[7]=f("h2",{class:"text-md font-normal text-foreground"},"Getting Started",-1)),f("ol",$o,[e[5]||(e[5]=f("li",null,[f("span",{class:"font-normal text-foreground"},"Write your query"),O(" in the editor. ")],-1)),e[6]||(e[6]=f("li",null,[f("span",{class:"font-normal text-foreground"},"Click inside your query"),O(" to select it. ")],-1)),f("li",null,[e[1]||(e[1]=O(" Click ")),e[2]||(e[2]=f("span",{class:"text-foreground font-normal"},"'Execute current'",-1)),e[3]||(e[3]=O(" or use shortcut ")),p(a,{class:"font-normal border rounded-md p-1 px-1.5 text-foreground"},{default:h(()=>e[0]||(e[0]=[O("⌘↵")])),_:1}),e[4]||(e[4]=O(" to run the query. "))])])])])}const Ao=wt(To,[["render",zo]]),Lo={class:"font-medium text-foreground"},Mo={class:"font-medium text-foreground"},No=X({__name:"RawQueryConnectionConfirmDialog",props:{open:{type:Boolean},targetConnectionName:{},currentConnectionName:{}},emits:["confirm","cancel"],setup(s,{emit:e}){const t=e,n=()=>{t("confirm")},a=()=>{t("cancel")};return(o,r)=>{const i=fe;return o.open?(v(),I(l(_t),{key:0,open:o.open,"onUpdate:open":r[0]||(r[0]=u=>!u&&a())},{default:h(()=>[p(l(Et),{class:"max-w-md"},{default:h(()=>[p(l(Tt),null,{default:h(()=>[p(l(Rt),{class:"flex items-center gap-2"},{default:h(()=>[p(i,{name:"hugeicons:alert-02",class:"size-5 text-amber-500"}),r[1]||(r[1]=O(" Confirm query execution "))]),_:1}),p(l(Bs),null,{default:h(()=>[r[2]||(r[2]=O(" This query will execute on ")),f("span",Lo,D(o.targetConnectionName),1),r[3]||(r[3]=O(" . The current connection is ")),f("span",Mo,D(o.currentConnectionName),1),r[4]||(r[4]=O(" . Make sure before executing. "))]),_:1})]),_:1}),p(l(os),null,{default:h(()=>[p(l(Se),{variant:"outline",onClick:a},{default:h(()=>r[5]||(r[5]=[O("Cancel")])),_:1}),p(l(Se),{class:"gap-1",onClick:n},{default:h(()=>[p(i,{name:"lucide:play",class:"size-4"}),r[6]||(r[6]=O(" Execute "))]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])):Q("",!0)}}}),Io={key:1,class:"text-xs text-muted-foreground ml-2"},Oo=X({__name:"RawQueryEditorContextMenu",props:{contextMenuItems:{}},emits:["update:open"],setup(s,{emit:e}){const t=e,n=o=>typeof o>"u"?!0:!!o,a=o=>{t("update:open",o)};return(o,r)=>{const i=hs,u=jn,c=fe,m=Lt,d=tt,y=Un,x=Qn,S=Wn,b=Hn,g=vs,C=fs;return v(),I(C,{"onUpdate:open":a},{default:h(()=>[p(i,{"as-child":""},{default:h(()=>[xe(o.$slots,"default")]),_:3}),p(g,{class:"min-w-56",onCloseAutoFocus:r[0]||(r[0]=kt(()=>{},["prevent"]))},{default:h(()=>[(v(!0),A(ee,null,ne(o.contextMenuItems,(E,$)=>(v(),A(ee,{key:$},[E.type===l(U).LABEL&&n(E.condition)?(v(),I(u,{key:0,class:"font-medium text-xs text-muted-foreground"},{default:h(()=>[O(D(E.title),1)]),_:2},1024)):E.type===l(U).ACTION&&n(E.condition)?(v(),I(d,{key:1,onSelect:E.select,disabled:E.disabled},{default:h(()=>[E.icon?(v(),I(c,{key:0,name:E.icon,class:"size-4! min-w-4 text-muted-foreground"},null,8,["name"])):Q("",!0),O(" "+D(E.title)+" ",1),E.shortcut?(v(),I(m,{key:1},{default:h(()=>[O(D(E.shortcut),1)]),_:2},1024)):Q("",!0)]),_:2},1032,["onSelect","disabled"])):E.type===l(U).SEPARATOR&&n(E.condition)?(v(),I(y,{key:2})):E.type===l(U).SUBMENU&&n(E.condition)?(v(),I(b,{key:3,disabled:!E.items||E.items.length===0},{default:h(()=>[p(x,null,{default:h(()=>[E.icon?(v(),I(c,{key:0,name:E.icon,class:"size-4! min-w-4 text-muted-foreground mr-2"},null,8,["name"])):Q("",!0),O(" "+D(E.title)+" ",1),E.desc?(v(),A("span",Io,D(E.desc),1)):Q("",!0)]),_:2},1024),p(S,{class:pe("min-w-52")},{default:h(()=>[(v(!0),A(ee,null,ne(E.items,(L,_)=>(v(),A(ee,{key:_},[L.type===l(U).ACTION&&n(L.condition)?(v(),I(d,{key:0,onSelect:L.select},{default:h(()=>[L.icon?(v(),I(c,{key:0,name:L.icon,class:"size-4! min-w-4 text-muted-foreground"},null,8,["name"])):Q("",!0),O(" "+D(L.title)+" ",1),L.shortcut?(v(),I(m,{key:1},{default:h(()=>[O(D(L.shortcut),1)]),_:2},1024)):Q("",!0)]),_:2},1032,["onSelect"])):L.type===l(U).LABEL&&n(L.condition)?(v(),I(u,{key:1,class:"font-medium text-xs text-muted-foreground"},{default:h(()=>[O(D(L.title),1)]),_:2},1024)):L.type===l(U).SEPARATOR&&n(L.condition)?(v(),I(y,{key:2})):Q("",!0)],64))),128))]),_:2},1024)]),_:2},1032,["disabled"])):Q("",!0)],64))),128))]),_:1})]),_:3})}}}),Po={},qo={class:"mb-2 flex items-center gap-1.5 text-sm font-semibold"};function Do(s,e){const t=fe,n=Se,a=Yn,o=ie,r=ue,i=Jn,u=Gn,c=ce;return v(),I(c,null,{default:h(()=>[p(u,null,{default:h(()=>[p(o,{"as-child":""},{default:h(()=>[p(a,{"as-child":""},{default:h(()=>[p(n,{size:"iconSm",variant:"ghost",class:"h-4 w-4 p-0 text-muted-foreground hover:text-foreground",title:"How to use query variables","aria-label":"How to use query variables"},{default:h(()=>[p(t,{name:"hugeicons:help-circle",class:"size-3.5!"})]),_:1})]),_:1})]),_:1}),p(r,null,{default:h(()=>e[0]||(e[0]=[f("p",null,"How to use query variables",-1)])),_:1}),p(i,{side:"top",align:"start",class:"w-[440px] p-4 text-xs"},{default:h(()=>[f("p",qo,[p(t,{name:"hugeicons:help-circle",class:"size-4!"}),e[1]||(e[1]=O(" Passing variables in queries "))]),e[2]||(e[2]=f("p",{class:"mb-3 text-muted-foreground"},[O(" Use "),f("code",{class:"rounded bg-muted px-1"},":variable_name"),O(" syntax to bind parameters. For array operators, cast to the correct type: ")],-1)),e[3]||(e[3]=f("div",{class:"space-y-3"},[f("div",null,[f("p",{class:"mb-1 font-medium text-foreground"},[f("code",{class:"rounded bg-muted px-1"},"= ANY()")]),f("pre",{class:"overflow-x-auto whitespace-pre-wrap break-all rounded bg-muted p-2 text-xs"},`WHERE id = ANY (ARRAY[:your_variable]::integer[])
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CjpXgncp.js","./D0lW43G8.js","./entry.DxCQuGXb.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var ks=Object.defineProperty;var $s=(s,e,t)=>e in s?ks(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var ae=(s,e,t)=>$s(s,typeof e!="symbol"?e+"":e,t);import{a6 as Z,d as X,bV as zs,ae as As,ar as Ls,k as I,o as v,w as h,D as xe,g as l,p as ss,bU as Pt,bT as Ms,a9 as Ns,aa as Is,ab as Os,ac as Ps,es as qs,M as ns,et as rt,eu as Ds,c as P,bN as Fs,j as et,m as f,f as p,bO as Vs,df as wt,e as A,z as O,l as Q,a1 as _t,W as Et,X as Tt,Y as Rt,A as fe,Z as Bs,t as D,$ as os,a0 as Se,bk as kt,F as ee,s as ne,n as pe,a_ as ie,a$ as ue,aY as ce,r as K,i as Ae,ev as js,ew as Us,ex as as,ey as rs,ez as Hs,bl as ls,eA as Qs,eB as Ws,el as Ks,em as Gs,en as Ys,eC as Ue,dm as Js,au as de,av as $t,aQ as zt,aT as $e,q as Zs,aS as Fe,aR as Xs,aZ as Ve,az as en,ay as Ce,ci as is,am as us,eD as tn,ef as sn,aq as Ke,H as nn,bY as qt,bW as on,bm as an,bE as rn,bF as ln,bG as un,eE as cn,aP as Qe,aL as dn,P as cs,aC as mn,aH as pn,eF as Dt,ao as ds,eG as fn,eH as At,eI as hn,eJ as vn,eK as gn,eL as yn,eM as xn,eN as ms,ba as bn,bb as ut,eO as Cn,bd as Sn,bc as wn,eP as _n,be as En,bf as Tn,eQ as Rn,bg as kn,eR as ct,eS as $n,bi as zn,eT as An,bD as Ln,a8 as ps,eU as Mn,a3 as Nn,a as In,aK as On,b9 as Pn,cq as qn}from"./D0lW43G8.js";import{_ as Dn,u as Fn}from"./VNOocds9.js";import{_ as Vn}from"./BdZsZgcB.js";import{_ as Bn}from"./CtkhwZY7.js";import{_ as Lt}from"./C-I81xfB.js";import{c as fs,d as hs,e as vs,C as U,f as jn,g as tt,h as Un,i as Hn,j as Qn,k as Wn,_ as dt,a as mt,b as Kn}from"./DVkCRFXi.js";import{_ as Gn,a as Yn,b as Jn}from"./CRqiHVA4.js";import{f as yt,a as We,b as Ye}from"./-lZvfnzr.js";import{M as Zn,_ as Ft,j as Vt,k as Bt}from"./Dunt8-TF.js";import{p as Xn,D as eo,_ as to,a as pt,b as so}from"./bkzIFcLw.js";import{_ as jt}from"./CkjXKCQH.js";import{_ as no}from"./Cbo6GmdE.js";import{s as oo}from"./D28ykMUi.js";import{_ as ao}from"./BMLhg7hE.js";import{u as ro}from"./CmOZ0DCP.js";import{_ as Mt,c as Ut,a as ft,e as Ht,b as Qt}from"./BCAMWuzu.js";import{i as lo}from"./Cf460dGA.js";import{_ as gs}from"./Dtl3qje7.js";import{r as io}from"./CGq9Twnj.js";import{c as uo,m as co}from"./DfyynWBR.js";import"./YdOCcCRS.js";import"./Czr647QE.js";import"./Chx1IK9D.js";import"./CfseWBL0.js";import"./Db3rTgnd.js";import"./C-Pa1rIR.js";import"./CS5akSNT.js";class mo{constructor(e){this.rawError=e}get nomaltliztionErrror(){var t;const e=((t=this.rawError)==null?void 0:t.message)||"Error parsing SQL execution.";if(!this.rawError)return{message:e};switch(this.rawError.dbType){case Z.POSTGRES:return this.normalizePostgresError(e);case Z.MYSQL:return this.normalizeMysqlError(e);case Z.SQLITE3:return this.normalizeSqliteError(e);case Z.MARIADB:return this.normalizeMysqlError(e);case Z.ORACLE:return this.normalizeOracleError(e);default:return{message:e}}}normalizePostgresError(e){let t;return this.rawError.position&&(t=typeof this.rawError.position=="string"?Number(this.rawError.position):this.rawError.position,Number.isNaN(t)&&(t=void 0)),{message:this.rawError.message||e,position:t,hint:this.rawError.hint}}normalizeMysqlError(e){return{message:this.rawError.sqlMessage||this.rawError.message||e,hint:this.rawError.code?`Error Code: ${this.rawError.code}`:void 0}}normalizeSqliteError(e){return{message:this.rawError.message||e,hint:this.rawError.code?`Error Code: ${this.rawError.code}`:void 0}}normalizeOracleError(e){return{message:this.rawError.message||e,hint:this.rawError.errorNum?`ORA-${String(this.rawError.errorNum).padStart(5,"0")}`:void 0}}}var po=X({__name:"MenuCheckboxItem",props:{modelValue:{type:[Boolean,String],required:!1,default:!1},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select","update:modelValue"],setup(s,{emit:e}){const t=s,n=e,a=zs(t,["modelValue"]),o=As(a),r=Ls(t,"modelValue",n);return Xn({modelValue:r}),(i,u)=>(v(),I(Zn,ss({role:"menuitemcheckbox"},l(o),{"aria-checked":l(Pt)(l(r))?"mixed":l(r),"data-state":l(Ms)(l(r)),onSelect:u[0]||(u[0]=async c=>{n("select",c),l(Pt)(l(r))?r.value=!0:r.value=!l(r)})}),{default:h(()=>[xe(i.$slots,"default",{modelValue:l(r)})]),_:3},16,["aria-checked","data-state"]))}}),fo=po,ho=X({__name:"DropdownMenuCheckboxItem",props:{modelValue:{type:[Boolean,String],required:!1},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select","update:modelValue"],setup(s,{emit:e}){const t=s,a=Ns(e);return Is(),(o,r)=>(v(),I(l(fo),Os(Ps({...t,...l(a)})),{default:h(()=>[xe(o.$slots,"default")]),_:3},16))}}),vo=ho;function Nt(s,e){s.dispatch(qs(s.state,e))}function go(s){return s===Z.POSTGRES?"postgres-positional":s===Z.ORACLE?"oracle-positional":"question-mark"}function yo(s,e,t,n={}){if(!Object.keys(e).length)return s;const a=n.style??go(t);let o=n.startIndex??1,r="",i=0;for(;i<s.length;){const u=s[i];if(u==="'"){const c=i++;for(;i<s.length;)if(s[i]==="'"&&s[i+1]==="'")i+=2;else if(s[i]==="'"){i++;break}else i++;r+=s.slice(c,i);continue}if(u==='"'){const c=i++;for(;i<s.length&&s[i]!=='"';)i++;i++,r+=s.slice(c,i);continue}if(u===":"&&i+1<s.length&&/[a-zA-Z_]/.test(s[i+1])){const c=i++;let m="";for(;i<s.length&&/[a-zA-Z0-9_]/.test(s[i]);)m+=s[i++];m in e?a==="postgres-positional"?r+=`$${o++}`:a==="oracle-positional"?r+=`:${o++}`:r+="?":r+=s.slice(c,i);continue}r+=u,i++}return r}function xo(s,e,t){if(s===e)return t;let n=0,a=0;for(;a<t&&n<s.length;){const o=s[n],r=e[a],i=/\s/.test(o),u=/\s/.test(r);if(i&&u){n++,a++;continue}if(o===":"&&(r==="$"||r==="?"||r===":")){for(;n<s.length&&/[:a-zA-Z0-9_]/.test(s[n]);)n++;if(r==="$")for(;a<e.length&&/[$0-9]/.test(e[a]);)a++;else if(r===":")for(;a<e.length&&/[:0-9]/.test(e[a]);)a++;else a++;if(a>=t)return n;continue}o===r?(n++,a++):n++}return n}function Wt({editorView:s,originalSql:e,statementFrom:t,fileParameters:n={},errorDetail:a,clientType:o,queryPrefix:r}){if(!s||!a)return;const{message:i,position:u}=a.normalizeError||new mo(a).nomaltliztionErrror;if(!u){Co(s,t,e,i);return}const c=`${r}${e}`,m=yo(c,n,o),d=xo(c,m,u),y=Math.max(d-1,0)-((r==null?void 0:r.length)||0),{from:x,to:S}=bo(e,t,y);Nt(s,[{from:x,to:S,severity:"error",message:i}])}function bo(s,e,t){let n=t;for(;n<s.length&&!/[\s\n\r\t]/.test(s[n]);)n++;return{from:e+t,to:e+n}}function Co(s,e,t,n){const a=[{from:e,to:e+t.length,severity:"error",message:n}];Nt(s,a)}function So(s){Nt(s,[])}const wo=s=>ns.of([{key:"Mod-Enter",mac:"Cmd-Enter",run:e=>{const{currentStatements:t}=rt(e),n=Ds(e);return t.length&&s({currentStatements:t,treeNodes:n||[]}),!0},preventDefault:!0}]),_o={class:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center"},Eo=X({__name:"DropdownMenuCheckboxItem",props:{modelValue:{type:[Boolean,String]},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{}},emits:["select","update:modelValue"],setup(s,{emit:e}){const t=s,n=e,a=P(()=>{const{class:r,...i}=t;return i}),o=Fs(a,n);return(r,i)=>(v(),I(l(vo),ss({"data-slot":"dropdown-menu-checkbox-item"},l(o),{class:l(et)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t.class)}),{default:h(()=>[f("span",_o,[p(l(eo),null,{default:h(()=>[p(l(Vs),{class:"size-4"})]),_:1})]),xe(r.$slots,"default")]),_:3},16,["class"]))}}),To={},Ro={class:"p-4 flex flex-col items-center justify-center h-full text-center space-y-4"},ko={class:"text-muted-foreground space-y-3"},$o={class:"list-disc text-sm list-inside text-left space-y-2"};function zo(s,e){const t=Bn,n=Vn,a=Lt;return v(),A("div",Ro,[p(n,{class:"rounded-2xl size-20 shadow-md"},{default:h(()=>[p(t,{src:"/logo.png",alt:"@unovue"})]),_:1}),f("div",ko,[e[7]||(e[7]=f("h2",{class:"text-md font-normal text-foreground"},"Getting Started",-1)),f("ol",$o,[e[5]||(e[5]=f("li",null,[f("span",{class:"font-normal text-foreground"},"Write your query"),O(" in the editor. ")],-1)),e[6]||(e[6]=f("li",null,[f("span",{class:"font-normal text-foreground"},"Click inside your query"),O(" to select it. ")],-1)),f("li",null,[e[1]||(e[1]=O(" Click ")),e[2]||(e[2]=f("span",{class:"text-foreground font-normal"},"'Execute current'",-1)),e[3]||(e[3]=O(" or use shortcut ")),p(a,{class:"font-normal border rounded-md p-1 px-1.5 text-foreground"},{default:h(()=>e[0]||(e[0]=[O("⌘↵")])),_:1}),e[4]||(e[4]=O(" to run the query. "))])])])])}const Ao=wt(To,[["render",zo]]),Lo={class:"font-medium text-foreground"},Mo={class:"font-medium text-foreground"},No=X({__name:"RawQueryConnectionConfirmDialog",props:{open:{type:Boolean},targetConnectionName:{},currentConnectionName:{}},emits:["confirm","cancel"],setup(s,{emit:e}){const t=e,n=()=>{t("confirm")},a=()=>{t("cancel")};return(o,r)=>{const i=fe;return o.open?(v(),I(l(_t),{key:0,open:o.open,"onUpdate:open":r[0]||(r[0]=u=>!u&&a())},{default:h(()=>[p(l(Et),{class:"max-w-md"},{default:h(()=>[p(l(Tt),null,{default:h(()=>[p(l(Rt),{class:"flex items-center gap-2"},{default:h(()=>[p(i,{name:"hugeicons:alert-02",class:"size-5 text-amber-500"}),r[1]||(r[1]=O(" Confirm query execution "))]),_:1}),p(l(Bs),null,{default:h(()=>[r[2]||(r[2]=O(" This query will execute on ")),f("span",Lo,D(o.targetConnectionName),1),r[3]||(r[3]=O(" . The current connection is ")),f("span",Mo,D(o.currentConnectionName),1),r[4]||(r[4]=O(" . Make sure before executing. "))]),_:1})]),_:1}),p(l(os),null,{default:h(()=>[p(l(Se),{variant:"outline",onClick:a},{default:h(()=>r[5]||(r[5]=[O("Cancel")])),_:1}),p(l(Se),{class:"gap-1",onClick:n},{default:h(()=>[p(i,{name:"lucide:play",class:"size-4"}),r[6]||(r[6]=O(" Execute "))]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])):Q("",!0)}}}),Io={key:1,class:"text-xs text-muted-foreground ml-2"},Oo=X({__name:"RawQueryEditorContextMenu",props:{contextMenuItems:{}},emits:["update:open"],setup(s,{emit:e}){const t=e,n=o=>typeof o>"u"?!0:!!o,a=o=>{t("update:open",o)};return(o,r)=>{const i=hs,u=jn,c=fe,m=Lt,d=tt,y=Un,x=Qn,S=Wn,b=Hn,g=vs,C=fs;return v(),I(C,{"onUpdate:open":a},{default:h(()=>[p(i,{"as-child":""},{default:h(()=>[xe(o.$slots,"default")]),_:3}),p(g,{class:"min-w-56",onCloseAutoFocus:r[0]||(r[0]=kt(()=>{},["prevent"]))},{default:h(()=>[(v(!0),A(ee,null,ne(o.contextMenuItems,(E,$)=>(v(),A(ee,{key:$},[E.type===l(U).LABEL&&n(E.condition)?(v(),I(u,{key:0,class:"font-medium text-xs text-muted-foreground"},{default:h(()=>[O(D(E.title),1)]),_:2},1024)):E.type===l(U).ACTION&&n(E.condition)?(v(),I(d,{key:1,onSelect:E.select,disabled:E.disabled},{default:h(()=>[E.icon?(v(),I(c,{key:0,name:E.icon,class:"size-4! min-w-4 text-muted-foreground"},null,8,["name"])):Q("",!0),O(" "+D(E.title)+" ",1),E.shortcut?(v(),I(m,{key:1},{default:h(()=>[O(D(E.shortcut),1)]),_:2},1024)):Q("",!0)]),_:2},1032,["onSelect","disabled"])):E.type===l(U).SEPARATOR&&n(E.condition)?(v(),I(y,{key:2})):E.type===l(U).SUBMENU&&n(E.condition)?(v(),I(b,{key:3,disabled:!E.items||E.items.length===0},{default:h(()=>[p(x,null,{default:h(()=>[E.icon?(v(),I(c,{key:0,name:E.icon,class:"size-4! min-w-4 text-muted-foreground mr-2"},null,8,["name"])):Q("",!0),O(" "+D(E.title)+" ",1),E.desc?(v(),A("span",Io,D(E.desc),1)):Q("",!0)]),_:2},1024),p(S,{class:pe("min-w-52")},{default:h(()=>[(v(!0),A(ee,null,ne(E.items,(L,_)=>(v(),A(ee,{key:_},[L.type===l(U).ACTION&&n(L.condition)?(v(),I(d,{key:0,onSelect:L.select},{default:h(()=>[L.icon?(v(),I(c,{key:0,name:L.icon,class:"size-4! min-w-4 text-muted-foreground"},null,8,["name"])):Q("",!0),O(" "+D(L.title)+" ",1),L.shortcut?(v(),I(m,{key:1},{default:h(()=>[O(D(L.shortcut),1)]),_:2},1024)):Q("",!0)]),_:2},1032,["onSelect"])):L.type===l(U).LABEL&&n(L.condition)?(v(),I(u,{key:1,class:"font-medium text-xs text-muted-foreground"},{default:h(()=>[O(D(L.title),1)]),_:2},1024)):L.type===l(U).SEPARATOR&&n(L.condition)?(v(),I(y,{key:2})):Q("",!0)],64))),128))]),_:2},1024)]),_:2},1032,["disabled"])):Q("",!0)],64))),128))]),_:1})]),_:3})}}}),Po={},qo={class:"mb-2 flex items-center gap-1.5 text-sm font-semibold"};function Do(s,e){const t=fe,n=Se,a=Yn,o=ie,r=ue,i=Jn,u=Gn,c=ce;return v(),I(c,null,{default:h(()=>[p(u,null,{default:h(()=>[p(o,{"as-child":""},{default:h(()=>[p(a,{"as-child":""},{default:h(()=>[p(n,{size:"iconSm",variant:"ghost",class:"h-4 w-4 p-0 text-muted-foreground hover:text-foreground",title:"How to use query variables","aria-label":"How to use query variables"},{default:h(()=>[p(t,{name:"hugeicons:help-circle",class:"size-3.5!"})]),_:1})]),_:1})]),_:1}),p(r,null,{default:h(()=>e[0]||(e[0]=[f("p",null,"How to use query variables",-1)])),_:1}),p(i,{side:"top",align:"start",class:"w-[440px] p-4 text-xs"},{default:h(()=>[f("p",qo,[p(t,{name:"hugeicons:help-circle",class:"size-4!"}),e[1]||(e[1]=O(" Passing variables in queries "))]),e[2]||(e[2]=f("p",{class:"mb-3 text-muted-foreground"},[O(" Use "),f("code",{class:"rounded bg-muted px-1"},":variable_name"),O(" syntax to bind parameters. For array operators, cast to the correct type: ")],-1)),e[3]||(e[3]=f("div",{class:"space-y-3"},[f("div",null,[f("p",{class:"mb-1 font-medium text-foreground"},[f("code",{class:"rounded bg-muted px-1"},"= ANY()")]),f("pre",{class:"overflow-x-auto whitespace-pre-wrap break-all rounded bg-muted p-2 text-xs"},`WHERE id = ANY (ARRAY[:your_variable]::integer[])
|
|
3
3
|
WHERE status = ANY (ARRAY[:statuses]::text[])`)]),f("div",null,[f("p",{class:"mb-1 font-medium text-foreground"},[f("code",{class:"rounded bg-muted px-1"},"IN()")]),f("pre",{class:"overflow-x-auto whitespace-pre-wrap break-all rounded bg-muted p-2 text-xs"},`WHERE id IN (:your_variable)
|
|
4
4
|
WHERE name IN (:names)`)]),f("div",null,[f("p",{class:"mb-1 font-medium text-foreground"},"Scalar variable"),f("pre",{class:"overflow-x-auto whitespace-pre-wrap break-all rounded bg-muted p-2 text-xs"},`WHERE created_at > :start_date
|
|
5
5
|
WHERE user_id = :user_id`)])],-1)),e[4]||(e[4]=f("p",{class:"mt-3 border-t pt-2 text-muted-foreground"},[O(" Replace "),f("code",{class:"rounded bg-muted px-1"},"alias_type"),O(" with the actual PostgreSQL type, e.g. "),f("code",{class:"rounded bg-muted px-1"},"integer"),O(", "),f("code",{class:"rounded bg-muted px-1"},"uuid"),O(", "),f("code",{class:"rounded bg-muted px-1"},"text"),O(". ")],-1))]),_:1})]),_:1})]),_:1})}const Fo=wt(Po,[["render",Do]]),Vo={class:"h-fit py-1 flex items-center justify-between px-2"},Bo={class:"flex items-center gap-2"},jo={class:"font-normal text-xs text-muted-foreground"},Uo={key:0,class:"font-normal text-xs text-muted-foreground"},Ho={key:0,class:"flex items-center gap-1"},Qo={key:1,class:"flex items-center gap-1"},Wo={key:2},Ko={key:0},Go={key:1},Yo={class:"flex gap-1"},Jo={class:"flex items-center"},Zo={class:"flex items-center"},Xo={key:0},ea={key:1},ta=X({__name:"RawQueryEditorFooter",props:{cursorInfo:{},isHaveOneExecute:{type:Boolean},executeLoading:{type:Boolean},executeErrors:{type:Boolean},isStreaming:{type:Boolean},streamingRowCount:{},queryTime:{},rawQueryResultsLength:{},isRawViewMode:{type:Boolean},explainAnalyzeOptionItems:{},serializeMode:{},isSupportFormat:{type:Boolean},isSupportVariable:{type:Boolean},isExplainSupported:{type:Boolean}},emits:["onFormatCurrentStatement","onFormatAll","onExplainAnalyzeCurrent","toggleExplainOption","update:serializeMode","onExecuteCurrent","update:isRawViewMode","onCancelQuery"],setup(s){const e=K(!1);return(t,n)=>{const a=Fo,o=fe,r=Lt,i=Se;return v(),A("div",Vo,[f("div",Bo,[f("div",jo," Ln "+D(t.cursorInfo.line)+", Col "+D(t.cursorInfo.column),1),t.isSupportVariable?(v(),I(a,{key:0})):Q("",!0)]),t.isHaveOneExecute?(v(),A("div",Uo,[t.isStreaming?(v(),A("span",Ho,[p(o,{name:"hugeicons:loading-03",class:"size-4! animate-spin"}),O(" Streaming... "+D(l(yt)(t.streamingRowCount))+" rows ",1)])):t.executeLoading?(v(),A("span",Qo,[n[9]||(n[9]=O("Processing ")),p(o,{name:"hugeicons:loading-03",class:"size-4! animate-spin"})])):(v(),A("span",Wo,[t.executeErrors?(v(),A("span",Ko," Query: 1 error in "+D(l(We)(t.queryTime)),1)):(v(),A("span",Go," Query success: "+D(l(yt)(t.rawQueryResultsLength))+" rows in "+D(l(We)(t.queryTime)),1))]))])):Q("",!0),f("div",Yo,[t.isSupportFormat?(v(),I(l(ce),{key:0},{default:h(()=>[p(l(ie),null,{default:h(()=>[f("div",Jo,[p(i,{onClick:n[0]||(n[0]=u=>t.$emit("onFormatCurrentStatement")),variant:"outline",size:"xxs",class:"rounded-r-none"},{default:h(()=>[p(o,{name:"hugeicons:magic-wand-01"}),n[11]||(n[11]=O(" Format ")),p(r,null,{default:h(()=>n[10]||(n[10]=[O("⌘S")])),_:1})]),_:1}),p(l(Ft),null,{default:h(()=>[p(l(Vt),{"as-child":""},{default:h(()=>[p(i,{variant:"outline",size:"iconSm",class:"rounded-l-none border-l-0 px-2"},{default:h(()=>[p(o,{name:"hugeicons:arrow-down-01",class:"size-4! min-w-4"})]),_:1})]),_:1}),p(l(Bt),{align:"end",class:"min-w-44"},{default:h(()=>[p(l(dt),{class:"py-0"},{default:h(()=>n[12]||(n[12]=[O("Format Options ")])),_:1}),p(l(mt)),p(l(jt),{onClick:n[1]||(n[1]=u=>t.$emit("onFormatCurrentStatement")),class:"h-6 cursor-pointer"},{default:h(()=>[n[14]||(n[14]=O(" Current Statement ")),p(r,null,{default:h(()=>n[13]||(n[13]=[O("⌘S")])),_:1})]),_:1}),p(l(jt),{onClick:n[2]||(n[2]=u=>t.$emit("onFormatAll")),class:"h-6 cursor-pointer"},{default:h(()=>[n[16]||(n[16]=O(" All Statement ")),p(r,null,{default:h(()=>n[15]||(n[15]=[O("⇧⌥F")])),_:1})]),_:1})]),_:1})]),_:1})])]),_:1}),p(l(ue),null,{default:h(()=>n[17]||(n[17]=[f("p",null,"Format current statement (⌘S)",-1)])),_:1})]),_:1})):Q("",!0),t.isExplainSupported?(v(),I(l(ce),{key:1},{default:h(()=>[p(l(ie),null,{default:h(()=>[f("div",Zo,[p(i,{onClick:n[3]||(n[3]=u=>t.$emit("onExplainAnalyzeCurrent")),variant:"outline",size:"xxs",class:"rounded-r-none"},{default:h(()=>[p(o,{name:"hugeicons:analytics-up"}),n[19]||(n[19]=O(" Explain ")),p(r,null,{default:h(()=>n[18]||(n[18]=[O("⌘E")])),_:1})]),_:1}),p(l(Ft),{open:l(e),"onUpdate:open":n[6]||(n[6]=u=>Ae(e)?e.value=u:null)},{default:h(()=>[p(l(Vt),{"as-child":""},{default:h(()=>[p(i,{variant:"outline",size:"iconSm",class:"rounded-l-none border-l-0 px-2"},{default:h(()=>[p(o,{name:"hugeicons:arrow-down-01",class:"size-4! min-w-4"})]),_:1})]),_:1}),p(l(Bt),{align:"end",class:"min-w-52"},{default:h(()=>[p(l(dt),{class:"py-0"},{default:h(()=>n[20]||(n[20]=[O("Explain Analyze Options")])),_:1}),p(l(mt)),(v(!0),A(ee,null,ne(t.explainAnalyzeOptionItems,u=>(v(),I(l(Eo),{key:u.key,"model-value":u.checked,onSelect:n[4]||(n[4]=kt(()=>{},["prevent"])),"onUpdate:modelValue":c=>t.$emit("toggleExplainOption",u.key),class:"h-6 cursor-pointer"},{default:h(()=>[O(D(u.label),1)]),_:2},1032,["model-value","onUpdate:modelValue"]))),128)),p(l(mt)),p(l(dt),{class:"py-0"},{default:h(()=>n[21]||(n[21]=[O("Serialize")])),_:1}),p(l(to),{"model-value":t.serializeMode,"onUpdate:modelValue":n[5]||(n[5]=u=>t.$emit("update:serializeMode",u))},{default:h(()=>[p(l(pt),{value:"NONE",class:"h-6 cursor-pointer"},{default:h(()=>n[22]||(n[22]=[O("None")])),_:1}),p(l(pt),{value:"TEXT",class:"h-6 cursor-pointer"},{default:h(()=>n[23]||(n[23]=[O("Text")])),_:1}),p(l(pt),{value:"BINARY",class:"h-6 cursor-pointer"},{default:h(()=>n[24]||(n[24]=[O("Binary")])),_:1})]),_:1},8,["model-value"])]),_:1})]),_:1},8,["open"])])]),_:1}),p(l(ue),null,{default:h(()=>n[25]||(n[25]=[f("p",null,"Run Explain Analyze (⌘E) or open options",-1)])),_:1})]),_:1})):Q("",!0),p(l(ce),null,{default:h(()=>[p(l(ie),{"as-child":""},{default:h(()=>[t.isStreaming||t.executeLoading?(v(),I(i,{key:0,onClick:n[7]||(n[7]=u=>t.$emit("onCancelQuery")),variant:"outline",size:"xxs"},{default:h(()=>[p(o,{name:"hugeicons:stop",class:"size-4! text-red-500"}),n[26]||(n[26]=O(" Cancel query "))]),_:1})):(v(),I(i,{key:1,onClick:n[8]||(n[8]=u=>t.$emit("onExecuteCurrent")),variant:"outline",size:"xxs"},{default:h(()=>[p(o,{name:"hugeicons:play"}),n[28]||(n[28]=O(" Execute current ")),p(r,null,{default:h(()=>n[27]||(n[27]=[O("⌘↵")])),_:1})]),_:1}))]),_:1}),p(l(ue),null,{default:h(()=>[t.isStreaming||t.executeLoading?(v(),A("p",Xo,"Cancel query")):(v(),A("p",ea,"Execute Query (⌘↵)"))]),_:1})]),_:1})])])}}}),ys=X({__name:"VariableEditor",props:{fileVariables:{}},emits:["updateVariables"],setup(s,{emit:e}){const t=e,n=K({line:1,column:1}),a=[js(`Please input your json variable
|
|
@@ -8,7 +8,7 @@ WHERE user_id = :user_id`)])],-1)),e[4]||(e[4]=f("p",{class:"mt-3 border-t pt-2
|
|
|
8
8
|
}`),oo(r=>{try{return Hs(r,{type:"space",size:2})}catch{return r}}),Us(),as(),rs(Qs())],o=r=>{t("updateVariables",r)};return(r,i)=>(v(),I(ls,{"onUpdate:modelValue":o,"onUpdate:cursorInfo":i[0]||(i[0]=u=>n.value=u),modelValue:r.fileVariables,extensions:a,disabled:!1,ref:"codeEditorRef"},null,8,["modelValue"]))}}),sa={class:"h-full flex flex-col overflow-y-auto"},na=X({__name:"AddVariableModal",props:{open:{},fileVariables:{}},emits:["update:open","updateVariables"],setup(s,{emit:e}){const t=e,n=async a=>{t("updateVariables",a)};return(a,o)=>(v(),I(l(_t),{class:"",open:!!a.open,"onUpdate:open":o[1]||(o[1]=r=>t("update:open",r))},{default:h(()=>[p(l(Et),{class:"w-[60vw] h-[50vh] flex flex-col justify-between min-w-[60vw]"},{default:h(()=>[p(l(Tt),null,{default:h(()=>[p(l(Rt),null,{default:h(()=>o[2]||(o[2]=[O(" Add Variable "),f("a",{class:"underline",href:"https://www.w3schools.com/js/js_json_syntax.asp",target:"_blank"}," (JSON format)",-1)])),_:1})]),_:1}),f("div",sa,[p(ys,{onUpdateVariables:n,fileVariables:a.fileVariables},null,8,["fileVariables"])]),p(l(os),{class:"mt-2"},{default:h(()=>[p(l(Se),{onClick:o[0]||(o[0]=r=>t("update:open",!1))},{default:h(()=>o[3]||(o[3]=[O(" Save ")])),_:1})]),_:1})]),_:1})]),_:1},8,["open"]))}}),oa=X({__name:"RawQueryConfigModal",props:{open:{}},emits:["update:open"],setup(s,{emit:e}){const t=e;return(n,a)=>(v(),I(l(_t),{class:"",open:!!n.open,"onUpdate:open":a[0]||(a[0]=o=>t("update:open",o))},{default:h(()=>[p(l(Et),{class:"w-[50vw] h-[70vh] flex flex-col justify-between min-w-[50vw]"},{default:h(()=>[p(l(Tt),null,{default:h(()=>[p(l(Rt),null,{default:h(()=>a[1]||(a[1]=[O(" Editor configs ")])),_:1})]),_:1}),p(Ws)]),_:1})]),_:1},8,["open"]))}}),aa={class:"flex items-center justify-between p-1 rounded-md bg-muted"},ra={class:"flex gap-2 items-center"},la={key:0},ia={key:1},ua=X({__name:"RawQueryEditorHeader",props:{currentFileInfo:{},fileVariables:{},workspaceId:{},selectedConnectionId:{},disableConnectionSwitch:{type:Boolean},connections:{},connection:{},isRedisConnection:{type:Boolean},isSupportVariable:{type:Boolean},redisDatabases:{},redisDatabaseIndex:{},codeEditorLayout:{}},emits:["update:connectionId","update:redisDatabaseIndex","update:updateFileVariables"],setup(s){const e=K(!1),t=K(!1),n=K(!1),a=()=>{e.value=!0},o=()=>{t.value=!0};return(r,i)=>{const u=fe,c=so,m=Ys,d=Gs,y=Ks,x=Se;return v(),A(ee,null,[p(na,{onUpdateVariables:i[0]||(i[0]=S=>r.$emit("update:updateFileVariables",S)),"file-variables":r.fileVariables,open:l(e),"onUpdate:open":i[1]||(i[1]=S=>Ae(e)?e.value=S:null)},null,8,["file-variables","open"]),p(oa,{open:l(t),"onUpdate:open":i[2]||(i[2]=S=>Ae(t)?t.value=S:null)},null,8,["open"]),f("div",aa,[f("div",null,[p(y,null,{default:h(()=>[p(d,{class:"gap-0!"},{default:h(()=>[p(m,null,{default:h(()=>[p(c,{class:"flex items-center gap-0.5"},{default:h(()=>{var S,b;return[p(u,{name:(S=r.currentFileInfo)==null?void 0:S.icon},null,8,["name"]),O(" "+D((b=r.currentFileInfo)==null?void 0:b.title),1)]}),_:1})]),_:1})]),_:1})]),_:1})]),f("div",ra,[r.isSupportVariable&&r.codeEditorLayout===l(Ue).horizontal?(v(),I(l(ce),{key:0},{default:h(()=>[p(l(ie),{"as-child":""},{default:h(()=>[p(x,{onClick:a,variant:"outline",size:"xxs",class:"relative"},{default:h(()=>[l(n)?(v(),I(u,{key:0,name:"lucide:triangle-alert",class:"absolute -top-1 -right-1 text-red-400"})):Q("",!0),p(u,{name:"hugeicons:absolute"}),i[5]||(i[5]=O(" Add variables "))]),_:1})]),_:1}),p(l(ue),null,{default:h(()=>i[6]||(i[6]=[f("p",null,"Add variables",-1)])),_:1})]),_:1})):Q("",!0),p(l(ce),null,{default:h(()=>[p(l(ie),{"as-child":""},{default:h(()=>[p(no,{connectionId:r.selectedConnectionId,"onUpdate:connectionId":i[3]||(i[3]=S=>r.$emit("update:connectionId",S)),connections:r.connections,connection:r.connection,disabled:r.disableConnectionSwitch,class:"w-fit h-6! px-1.5",workspaceId:r.workspaceId},null,8,["connectionId","connections","connection","disabled","workspaceId"])]),_:1}),p(l(ue),null,{default:h(()=>[r.disableConnectionSwitch?(v(),A("p",la," Connection switch is locked because the current connection has a strict mode tag ")):(v(),A("p",ia,"Select connection"))]),_:1})]),_:1}),r.isRedisConnection?(v(),I(Dn,{key:1,compact:"","trigger-id":"raw-query-redis-db-index","trigger-class":"bg-background",databases:r.redisDatabases||[],"database-index":r.redisDatabaseIndex??0,"onUpdate:databaseIndex":i[4]||(i[4]=S=>r.$emit("update:redisDatabaseIndex",S))},null,8,["databases","database-index"])):Q("",!0),p(l(ce),null,{default:h(()=>[p(l(ie),{"as-child":""},{default:h(()=>[p(x,{onClick:o,variant:"outline",size:"iconSm"},{default:h(()=>[p(u,{name:"hugeicons:dashboard-square-02"})]),_:1})]),_:1}),p(l(ue),null,{default:h(()=>i[7]||(i[7]=[f("p",null,"Query Settings",-1)])),_:1})]),_:1})])])],64)}}}),Je={__name:"splitpanes",props:{horizontal:{type:Boolean,default:!1},pushOtherPanes:{type:Boolean,default:!0},maximizePanes:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean,default:!1}},emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click","splitter-dblclick"],setup(s,{emit:e}){const t=e,n=s,a=Js(),o=K([]),r=P(()=>o.value.reduce((w,k)=>(w[~~k.id]=k)&&w,{})),i=P(()=>o.value.length),u=K(null),c=K(!1),m=K({mouseDown:!1,dragging:!1,activeSplitter:null,cursorOffset:0}),d=K({splitter:null,timeoutId:null}),y=P(()=>({[`splitpanes splitpanes--${n.horizontal?"horizontal":"vertical"}`]:!0,"splitpanes--dragging":m.value.dragging})),x=()=>{document.addEventListener("mousemove",g,{passive:!1}),document.addEventListener("mouseup",C),"ontouchstart"in window&&(document.addEventListener("touchmove",g,{passive:!1}),document.addEventListener("touchend",C))},S=()=>{document.removeEventListener("mousemove",g,{passive:!1}),document.removeEventListener("mouseup",C),"ontouchstart"in window&&(document.removeEventListener("touchmove",g,{passive:!1}),document.removeEventListener("touchend",C))},b=(w,k)=>{const M=w.target.closest(".splitpanes__splitter");if(M){const{left:z,top:N}=M.getBoundingClientRect(),{clientX:R,clientY:V}="ontouchstart"in window&&w.touches?w.touches[0]:w;m.value.cursorOffset=n.horizontal?V-N:R-z}x(),m.value.mouseDown=!0,m.value.activeSplitter=k},g=w=>{m.value.mouseDown&&(w.preventDefault(),m.value.dragging=!0,requestAnimationFrame(()=>{q(_(w)),oe("resize",{event:w},!0)}))},C=w=>{m.value.dragging&&(window.getSelection().removeAllRanges(),oe("resized",{event:w},!0)),m.value.mouseDown=!1,m.value.activeSplitter=null,setTimeout(()=>{m.value.dragging=!1,S()},100)},E=(w,k)=>{"ontouchstart"in window&&(w.preventDefault(),d.value.splitter===k?(clearTimeout(d.value.timeoutId),d.value.timeoutId=null,$(w,k),d.value.splitter=null):(d.value.splitter=k,d.value.timeoutId=setTimeout(()=>d.value.splitter=null,500))),m.value.dragging||oe("splitter-click",{event:w,index:k},!0)},$=(w,k)=>{if(oe("splitter-dblclick",{event:w,index:k},!0),n.maximizePanes){let M=0;o.value=o.value.map((z,N)=>(z.size=N===k?z.max:z.min,N!==k&&(M+=z.min),z)),o.value[k].size-=M,oe("pane-maximize",{event:w,index:k,pane:o.value[k]}),oe("resized",{event:w,index:k},!0)}},L=(w,k)=>{oe("pane-click",{event:w,index:r.value[k].index,pane:r.value[k]})},_=w=>{const k=u.value.getBoundingClientRect(),{clientX:M,clientY:z}="ontouchstart"in window&&w.touches?w.touches[0]:w;return{x:M-(n.horizontal?0:m.value.cursorOffset)-k.left,y:z-(n.horizontal?m.value.cursorOffset:0)-k.top}},B=w=>{w=w[n.horizontal?"y":"x"];const k=u.value[n.horizontal?"clientHeight":"clientWidth"];return n.rtl&&!n.horizontal&&(w=k-w),w*100/k},q=w=>{const k=m.value.activeSplitter;let M={prevPanesSize:H(k),nextPanesSize:W(k),prevReachedMinPanes:0,nextReachedMinPanes:0};const z=0+(n.pushOtherPanes?0:M.prevPanesSize),N=100-(n.pushOtherPanes?0:M.nextPanesSize),R=Math.max(Math.min(B(w),N),z);let V=[k,k+1],Y=o.value[V[0]]||null,se=o.value[V[1]]||null;const be=Y.max<100&&R>=Y.max+M.prevPanesSize,qe=se.max<100&&R<=100-(se.max+W(k+1));if(be||qe){be?(Y.size=Y.max,se.size=Math.max(100-Y.max-M.prevPanesSize-M.nextPanesSize,0)):(Y.size=Math.max(100-se.max-M.prevPanesSize-W(k+1),0),se.size=se.max);return}if(n.pushOtherPanes){const je=T(M,R);if(!je)return;({sums:M,panesToResize:V}=je),Y=o.value[V[0]]||null,se=o.value[V[1]]||null}Y!==null&&(Y.size=Math.min(Math.max(R-M.prevPanesSize-M.prevReachedMinPanes,Y.min),Y.max)),se!==null&&(se.size=Math.min(Math.max(100-R-M.nextPanesSize-M.nextReachedMinPanes,se.min),se.max))},T=(w,k)=>{const M=m.value.activeSplitter,z=[M,M+1];return k<w.prevPanesSize+o.value[z[0]].min&&(z[0]=F(M).index,w.prevReachedMinPanes=0,z[0]<M&&o.value.forEach((N,R)=>{R>z[0]&&R<=M&&(N.size=N.min,w.prevReachedMinPanes+=N.min)}),w.prevPanesSize=H(z[0]),z[0]===void 0)?(w.prevReachedMinPanes=0,o.value[0].size=o.value[0].min,o.value.forEach((N,R)=>{R>0&&R<=M&&(N.size=N.min,w.prevReachedMinPanes+=N.min)}),o.value[z[1]].size=100-w.prevReachedMinPanes-o.value[0].min-w.prevPanesSize-w.nextPanesSize,null):k>100-w.nextPanesSize-o.value[z[1]].min&&(z[1]=G(M).index,w.nextReachedMinPanes=0,z[1]>M+1&&o.value.forEach((N,R)=>{R>M&&R<z[1]&&(N.size=N.min,w.nextReachedMinPanes+=N.min)}),w.nextPanesSize=W(z[1]-1),z[1]===void 0)?(w.nextReachedMinPanes=0,o.value.forEach((N,R)=>{R<i.value-1&&R>=M+1&&(N.size=N.min,w.nextReachedMinPanes+=N.min)}),o.value[z[0]].size=100-w.prevPanesSize-W(z[0]-1),null):{sums:w,panesToResize:z}},H=w=>o.value.reduce((k,M,z)=>k+(z<w?M.size:0),0),W=w=>o.value.reduce((k,M,z)=>k+(z>w+1?M.size:0),0),F=w=>[...o.value].reverse().find(k=>k.index<w&&k.size>k.min)||{},G=w=>o.value.find(k=>k.index>w+1&&k.size>k.min)||{},j=()=>{var w;const k=Array.from(((w=u.value)==null?void 0:w.children)||[]);for(const M of k){const z=M.classList.contains("splitpanes__pane"),N=M.classList.contains("splitpanes__splitter");!z&&!N&&(M.remove(),console.warn("Splitpanes: Only <pane> elements are allowed at the root of <splitpanes>. One of your DOM nodes was removed."))}},te=(w,k,M=!1)=>{const z=w-1,N=document.createElement("div");N.classList.add("splitpanes__splitter"),M||(N.onmousedown=R=>b(R,z),typeof window<"u"&&"ontouchstart"in window&&(N.ontouchstart=R=>b(R,z)),N.onclick=R=>E(R,z+1)),N.ondblclick=R=>$(R,z+1),k.parentNode.insertBefore(N,k)},ge=w=>{w.onmousedown=void 0,w.onclick=void 0,w.ondblclick=void 0,w.remove()},he=()=>{var w;const k=Array.from(((w=u.value)==null?void 0:w.children)||[]);for(const z of k)z.className.includes("splitpanes__splitter")&&ge(z);let M=0;for(const z of k)z.className.includes("splitpanes__pane")&&(!M&&n.firstSplitter?te(M,z,!0):M&&te(M,z),M++)},Me=({uid:w,...k})=>{const M=r.value[w];for(const[z,N]of Object.entries(k))M[z]=N},Ne=w=>{var k;let M=-1;Array.from(((k=u.value)==null?void 0:k.children)||[]).some(z=>(z.className.includes("splitpanes__pane")&&M++,z.isSameNode(w.el))),o.value.splice(M,0,{...w,index:M}),o.value.forEach((z,N)=>z.index=N),c.value&&Ce(()=>{he(),_e({addedPane:o.value[M]}),oe("pane-add",{pane:o.value[M]})})},Ie=w=>{const k=o.value.findIndex(z=>z.id===w);o.value[k].el=null;const M=o.value.splice(k,1)[0];o.value.forEach((z,N)=>z.index=N),Ce(()=>{he(),oe("pane-remove",{pane:M}),_e({removedPane:{...M}})})},_e=(w={})=>{!w.addedPane&&!w.removedPane?me():o.value.some(k=>k.givenSize!==null||k.min||k.max<100)?Re(w):Oe(),c.value&&oe("resized")},Oe=()=>{const w=100/i.value;let k=0;const M=[],z=[];for(const N of o.value)N.size=Math.max(Math.min(w,N.max),N.min),k-=N.size,N.size>=N.max&&M.push(N.id),N.size<=N.min&&z.push(N.id);k>.1&&Ee(k,M,z)},me=()=>{let w=100;const k=[],M=[];let z=0;for(const R of o.value)w-=R.size,R.givenSize!==null&&z++,R.size>=R.max&&k.push(R.id),R.size<=R.min&&M.push(R.id);let N=100;if(w>.1){for(const R of o.value)R.givenSize===null&&(R.size=Math.max(Math.min(w/(i.value-z),R.max),R.min)),N-=R.size;N>.1&&Ee(N,k,M)}},Re=({addedPane:w,removedPane:k}={})=>{let M=100/i.value,z=0;const N=[],R=[];((w==null?void 0:w.givenSize)??null)!==null&&(M=(100-w.givenSize)/(i.value-1));for(const V of o.value)z-=V.size,V.size>=V.max&&N.push(V.id),V.size<=V.min&&R.push(V.id);if(!(Math.abs(z)<.1)){for(const V of o.value)(w==null?void 0:w.givenSize)!==null&&(w==null?void 0:w.id)===V.id||(V.size=Math.max(Math.min(M,V.max),V.min)),z-=V.size,V.size>=V.max&&N.push(V.id),V.size<=V.min&&R.push(V.id);z>.1&&Ee(z,N,R)}},Ee=(w,k,M)=>{let z;w>0?z=w/(i.value-k.length):z=w/(i.value-M.length),o.value.forEach((N,R)=>{if(w>0&&!k.includes(N.id)){const V=Math.max(Math.min(N.size+z,N.max),N.min),Y=V-N.size;w-=Y,N.size=V}else if(!M.includes(N.id)){const V=Math.max(Math.min(N.size+z,N.max),N.min),Y=V-N.size;w-=Y,N.size=V}}),Math.abs(w)>.1&&Ce(()=>{c.value&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})},oe=(w,k=void 0,M=!1)=>{const z=(k==null?void 0:k.index)??m.value.activeSplitter??null;t(w,{...k,...z!==null&&{index:z},...M&&z!==null&&{prevPane:o.value[z-(n.firstSplitter?1:0)],nextPane:o.value[z+(n.firstSplitter?0:1)]},panes:o.value.map(N=>({min:N.min,max:N.max,size:N.size}))})};de(()=>n.firstSplitter,()=>he()),$t(()=>{j(),he(),_e(),oe("ready"),c.value=!0}),zt(()=>c.value=!1);const Pe=()=>{var w;return en("div",{ref:u,class:y.value},(w=a.default)==null?void 0:w.call(a))};return $e("panes",o),$e("indexedPanes",r),$e("horizontal",P(()=>n.horizontal)),$e("requestUpdate",Me),$e("onPaneAdd",Ne),$e("onPaneRemove",Ie),$e("onPaneClick",L),(w,k)=>(v(),I(Zs(Pe)))}},ze={__name:"pane",props:{size:{type:[Number,String]},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},setup(s){var e;const t=s,n=Fe("requestUpdate"),a=Fe("onPaneAdd"),o=Fe("horizontal"),r=Fe("onPaneRemove"),i=Fe("onPaneClick"),u=(e=Xs())==null?void 0:e.uid,c=Fe("indexedPanes"),m=P(()=>c.value[u]),d=K(null),y=P(()=>{const g=isNaN(t.size)||t.size===void 0?0:parseFloat(t.size);return Math.max(Math.min(g,S.value),x.value)}),x=P(()=>{const g=parseFloat(t.minSize);return isNaN(g)?0:g}),S=P(()=>{const g=parseFloat(t.maxSize);return isNaN(g)?100:g}),b=P(()=>{var g;return`${o.value?"height":"width"}: ${(g=m.value)==null?void 0:g.size}%`});return de(()=>y.value,g=>n({uid:u,size:g})),de(()=>x.value,g=>n({uid:u,min:g})),de(()=>S.value,g=>n({uid:u,max:g})),$t(()=>{a({id:u,el:d.value,min:x.value,max:S.value,givenSize:t.size===void 0?null:y.value,size:y.value})}),zt(()=>r(u)),(g,C)=>(v(),A("div",{ref_key:"paneEl",ref:d,class:"splitpanes__pane",onClick:C[0]||(C[0]=E=>l(i)(E,g._.uid)),style:Ve(b.value)},[xe(g.$slots,"default")],4))}},ca={class:"w-full h-full"},da={class:"flex flex-col w-full h-full overflow-y-auto"},ma={class:"flex flex-col flex-1 h-full p-1"},pa={class:"flex flex-col flex-1 h-full p-1 pl-0 relative"},fa=X({__name:"RawQueryLayout",props:{layout:{},customLayout:{},showResultPanel:{type:Boolean}},setup(s){const e=s,t=is(),{editorLayoutSizes:n,editorLayoutInnerVariableSizes:a}=us(t),o=_=>{n.value=[_[0].size,_[1].size]},r=_=>{a.value=[_[0].size,_[1].size]},i=P(()=>n.value[0]),u=P(()=>a.value[0]),c=P(()=>a.value[1]),m=P(()=>n.value[1]),d=P(()=>e.layout===Ue.horizontalWithVariables||e.layout===Ue.vertical),y=P(()=>e.layout===Ue.horizontalWithVariables),x=P(()=>!!e.customLayout),S=P(()=>{var _;return((_=e.customLayout)==null?void 0:_.direction)==="vertical"}),b=P(()=>{var _,B;return((B=(_=e.customLayout)==null?void 0:_.innerSplit)==null?void 0:B.direction)==="vertical"}),g=_=>{var T,H,W,F,G;const B=(T=e.customLayout)==null?void 0:T.id;if(!B)return((W=(H=e.customLayout)==null?void 0:H.panels[_])==null?void 0:W.defaultSize)??50;const q=t.customLayoutSizes[B];return(q==null?void 0:q.panels[_])??((G=(F=e.customLayout)==null?void 0:F.panels[_])==null?void 0:G.defaultSize)??50},C=_=>{var T,H,W,F,G,j,te;const B=(T=e.customLayout)==null?void 0:T.id;if(!B)return((F=(W=(H=e.customLayout)==null?void 0:H.innerSplit)==null?void 0:W.panels[_])==null?void 0:F.defaultSize)??50;const q=t.customLayoutSizes[B];return(q==null?void 0:q.innerPanels[_])??((te=(j=(G=e.customLayout)==null?void 0:G.innerSplit)==null?void 0:j.panels[_])==null?void 0:te.defaultSize)??50},E=_=>{var q;const B=(q=e.customLayout)==null?void 0:q.id;B&&t.updateCustomLayoutSizes(B,_.map(T=>T.size))},$=_=>{var T,H,W;const B=(T=e.customLayout)==null?void 0:T.id;if(!B)return;const q=((H=t.customLayoutSizes[B])==null?void 0:H.panels)??((W=e.customLayout)==null?void 0:W.panels.map(F=>F.defaultSize))??[];t.updateCustomLayoutSizes(B,q,_.map(F=>F.size))},L={content:"flex flex-col w-full h-full overflow-y-auto",variables:"flex flex-col flex-1 h-full p-1",result:"flex flex-col flex-1 h-full p-1 pl-0 relative"};return(_,B)=>(v(),A("div",ca,[l(x)&&_.customLayout?(v(),I(l(Je),{key:0,class:"default-theme",horizontal:l(S),onResize:B[1]||(B[1]=q=>E(q.panes))},{default:h(()=>[(v(!0),A(ee,null,ne(_.customLayout.panels,(q,T)=>(v(),A(ee,{key:T},[_.customLayout.innerSplit&&_.customLayout.innerSplit.panelIndex===T?(v(),I(l(ze),{key:0,size:g(T),"min-size":q.minSize,"max-size":q.maxSize},{default:h(()=>[p(l(Je),{horizontal:l(b),class:"default-theme",onResize:B[0]||(B[0]=H=>$(H.panes))},{default:h(()=>[(v(!0),A(ee,null,ne(_.customLayout.innerSplit.panels,(H,W)=>(v(),I(l(ze),{key:`inner-${W}`,size:C(W),"min-size":H.minSize,"max-size":H.maxSize},{default:h(()=>[f("div",{class:pe(L[H.slot])},[xe(_.$slots,H.slot)],2)]),_:2},1032,["size","min-size","max-size"]))),128))]),_:3},8,["horizontal"])]),_:2},1032,["size","min-size","max-size"])):(v(),I(l(ze),{key:1,size:g(T),"min-size":q.minSize,"max-size":q.maxSize},{default:h(()=>[f("div",{class:pe(L[q.slot])},[xe(_.$slots,q.slot)],2)]),_:2},1032,["size","min-size","max-size"]))],64))),128))]),_:3},8,["horizontal"])):(v(),I(l(Je),{key:1,onResize:B[3]||(B[3]=q=>o(q.panes)),class:"default-theme",horizontal:_.layout===l(Ue).vertical},{default:h(()=>[p(l(ze),{size:l(i)},{default:h(()=>[p(l(Je),{horizontal:l(y),onResize:B[2]||(B[2]=q=>l(d)?r(q.panes):null)},{default:h(()=>[p(l(ze),{size:l(d)?l(u):100,"min-size":"30"},{default:h(()=>[f("div",da,[xe(_.$slots,"content")])]),_:3},8,["size"]),l(d)?(v(),I(l(ze),{key:0,size:l(c),"min-size":"0","max-size":"70"},{default:h(()=>[f("div",ma,[xe(_.$slots,"variables")])]),_:3},8,["size"])):Q("",!0)]),_:3},8,["horizontal"])]),_:3},8,["size"]),e.showResultPanel!==!1?(v(),I(l(ze),{key:0,size:l(m),"min-size":"0","max-size":"80"},{default:h(()=>[f("div",pa,[xe(_.$slots,"result")])]),_:3},8,["size"])):Q("",!0)]),_:3},8,["horizontal"]))]))}}),It={SELECT:"DML",INSERT:"DML",UPDATE:"DML",DELETE:"DML",MERGE:"DML",VALUES:"DML",TRUNCATE:"DML",COPY:"DML",CREATE:"DDL",ALTER:"DDL",DROP:"DDL",COMMENT:"DDL",ANALYZE:"DDL",VACUUM:"DDL",REINDEX:"DDL",CLUSTER:"DDL","REFRESH MATERIALIZED VIEW":"DDL","IMPORT FOREIGN SCHEMA":"DDL","SECURITY LABEL":"DDL",GRANT:"DCL",REVOKE:"DCL",BEGIN:"TCL",COMMIT:"TCL",ROLLBACK:"TCL",SAVEPOINT:"TCL","RELEASE SAVEPOINT":"TCL","ROLLBACK TO SAVEPOINT":"TCL","PREPARE TRANSACTION":"TCL","COMMIT PREPARED":"TCL","ROLLBACK PREPARED":"TCL","SET TRANSACTION":"TCL",SET:"SYSTEM",SHOW:"SYSTEM",RESET:"SYSTEM",DISCARD:"SYSTEM",EXPLAIN:"SYSTEM",LOAD:"SYSTEM",LOCK:"SYSTEM",MOVE:"SYSTEM",FETCH:"SYSTEM",CLOSE:"SYSTEM",DECLARE:"SYSTEM",DEALLOCATE:"SYSTEM",PREPARE:"SYSTEM",EXECUTE:"SYSTEM",LISTEN:"SYSTEM",UNLISTEN:"SYSTEM",NOTIFY:"SYSTEM",DO:"SYSTEM",ABORT:"SYSTEM",CHECKPOINT:"SYSTEM"},ha=Object.keys(It).sort((s,e)=>e.length-s.length),xs=s=>{const e=s.toUpperCase().trim().replace(/;$/,"");for(const t of ha)if(e===t||e.startsWith(`${t} `))return t;return e.split(/\s+/)[0]||e},va=s=>{const e=s.toUpperCase().trim(),t=xs(e);if(["SELECT","VALUES","SHOW","EXPLAIN","TABLE"].includes(t))return!1;const a=It[t];return!!(["INSERT","UPDATE","DELETE","TRUNCATE","COPY","MERGE","CALL","DO"].includes(t)||a==="DDL"||a==="DCL"||["SET","RESET","GRANT","REVOKE","COMMENT","ANALYZE","VACUUM","REINDEX","CLUSTER"].includes(t)||["CREATE","DROP","ALTER"].includes(t))},ga=(s,e)=>{const t=s||"Query",n=e??0;return["INSERT","UPDATE","DELETE"].includes(t.toUpperCase())?`${t} successful. ${n} rows affected.`:`${t} successful.`};class Be{constructor(e,t){ae(this,"cmd");ae(this,"commandKey");ae(this,"rowCount");this.cmd=e.toUpperCase().trim(),this.commandKey=xs(this.cmd),this.rowCount=t}isMutation(){return va(this.cmd)}getMessage(e){return e?ga(this.cmd,this.rowCount):""}getCategory(){return It[this.commandKey]??"UNKNOWN"}build(){const e=this.isMutation();return{isMutation:e,message:this.getMessage(e),category:this.getCategory()}}}class ya extends Be{isMutation(){return["VACUUM","ANALYZE","REINDEX","CLUSTER"].includes(this.commandKey)?!0:super.isMutation()}}class xt extends Be{isMutation(){return this.commandKey==="OPTIMIZE"?!0:super.isMutation()}getMessage(e){return this.commandKey==="TRUNCATE"?"TRUNCATE successful.":super.getMessage(e)}}class xa extends xt{}class bs extends Be{isMutation(){return this.commandKey==="TRUNCATE"?!0:super.isMutation()}getMessage(e){return this.commandKey==="INSERT"?`INSERT successful. ${this.rowCount} row(s) affected.`:super.getMessage(e)}}class ba extends bs{}class Kt extends Be{}class Ca extends Be{getMessage(e){return this.commandKey==="MERGE"?`MERGE successful. ${this.rowCount} rows affected.`:super.getMessage(e)}}class Sa extends Be{getMessage(e){return this.commandKey==="TRUNCATE"?"TRUNCATE successful.":this.commandKey==="MERGE"?`MERGE successful. ${this.rowCount} rows affected.`:super.getMessage(e)}}const wa={[Z.POSTGRES]:ya,[Z.MARIADB]:xt,[Z.MYSQL]:xt,[Z.MYSQL2]:xa,[Z.REDIS]:Kt,[Z.SQLITE3]:bs,[Z.SNOWFLAKE]:Kt,[Z.BETTER_SQLITE3]:ba,[Z.MSSQL]:Ca,[Z.ORACLE]:Sa},_a=(s,e=0,t=Z.POSTGRES)=>{const n=wa[t];if(!n)throw new Error(`Unsupported database client type: "${t}"`);return new n(s,e).build()};function Gt(s,e){return Object.prototype.hasOwnProperty.call(s,e)}function Ea(s,e){if(Array.isArray(s))return Object.fromEntries(e.map((o,r)=>[o.name,s[r]]));const t=s;if(!e.length)return{...t};const n={};let a=!1;return e.forEach((o,r)=>{if(Gt(t,o.name)){n[o.name]=t[o.name],a=!0;return}const i=String(r);Gt(t,i)&&(n[o.name]=t[i],a=!0)}),a?n:{...t}}function Ta(s,e){return s.map(t=>Ea(t,e))}const Ra={class:"h-full flex flex-col p-2"},ka={class:"flex items-center justify-between mb-2"},$a={class:"flex items-center gap-2 text-xs text-muted-foreground"},za={key:0,class:"mb-3 p-2 bg-muted/50 rounded-md border text-xs"},Aa={class:"text-muted-foreground mb-1 flex items-center gap-1"},La={class:"text-[11px] line-clamp-2"},Ma={key:1,class:"mb-3 p-3 bg-red-50 border border-red-200 rounded-md text-sm text-red-600"},Na={class:"flex items-center gap-2"},Ia={key:2,class:"flex-1 flex items-center justify-center text-muted-foreground"},Oa={class:"text-center"},Pa={class:"text-sm mb-1"},qa={class:"flex flex-wrap justify-center gap-2"},Da={key:0,class:"whitespace-pre-wrap"},Fa={key:1,class:"prose prose-sm dark:prose-invert max-w-none prose-pre:bg-muted prose-pre:text-foreground"},Va={key:0,class:"whitespace-pre-wrap"},Ba={key:1,class:"flex gap-3"},ja={class:"bg-muted rounded-lg p-3 text-sm"},Ua={class:"flex items-center gap-2"},Ha={key:4,class:"flex flex-col gap-2"},Qa=X({__name:"ResultTabAgentView",props:{activeTab:{}},setup(s){const e=s,t=P(()=>e.activeTab.metadata.statementQuery),{selectedProvider:n,selectedModel:a,isLoading:o,error:r,messages:i,hasApiKey:u,currentProvider:c,sendMessage:m,clearChat:d}=ro({body:()=>({sqlContext:t.value})}),{openSettings:y}=sn(),x=K(""),S=K(null),b=async E=>{if(E.preventDefault(),!x.value.trim()||o.value)return;const $=x.value;x.value="",await m($),await Ce(),g()},g=()=>{S.value&&(S.value.scrollTop=S.value.scrollHeight)};de(()=>i.value.length,()=>{Ce(()=>g())}),de(()=>{const E=i.value[i.value.length-1];return E!=null&&E.parts?E.parts.filter($=>$.type==="text").map($=>$.text).join(""):""},()=>{Ce(()=>g())});const C=async E=>{await m(E),await Ce(),g()};return(E,$)=>{var T,H,W;const L=fe,_=Se,B=Ke,q=ao;return v(),A("div",Ra,[f("div",ka,[f("div",$a,[p(L,{name:"hugeicons:chat-bot",class:"size-4"}),$[8]||($[8]=f("span",null,"SQL Assistant",-1)),f("div",null,[p(l(ce),null,{default:h(()=>[p(l(ie),{"as-child":""},{default:h(()=>[f("div",null,[p(tn,{provider:l(n),"onUpdate:provider":$[0]||($[0]=F=>Ae(n)?n.value=F:null),model:l(a),"onUpdate:model":$[1]||($[1]=F=>Ae(a)?a.value=F:null),class:"min-w-[160px] h-6!"},null,8,["provider","model"])])]),_:1}),p(l(ue),null,{default:h(()=>$[7]||($[7]=[f("p",null,"Select AI Model",-1)])),_:1})]),_:1})])]),p(l(ce),null,{default:h(()=>[p(l(ie),{"as-child":""},{default:h(()=>[p(_,{variant:"ghost",size:"xs",onClick:l(d),disabled:l(i).length===0},{default:h(()=>[p(L,{name:"lucide:trash-2",class:"size-3.5"})]),_:1},8,["onClick","disabled"])]),_:1}),p(l(ue),null,{default:h(()=>$[9]||($[9]=[f("p",null,"Clear chat history",-1)])),_:1})]),_:1})]),l(t)?(v(),A("div",za,[f("div",Aa,[p(L,{name:"hugeicons:sql",class:"size-3"}),$[10]||($[10]=O(" Current Query Context: "))]),f("code",La,D(l(t)),1)])):Q("",!0),l(r)?(v(),A("div",Ma,[f("div",Na,[p(L,{name:"lucide:alert-circle",class:"size-4"}),O(" "+D(l(r)),1)])])):Q("",!0),l(u)?(v(),A("div",{key:3,ref_key:"messagesContainer",ref:S,class:"flex-1 overflow-y-auto space-y-4 mb-4"},[l(i).length===0?(v(),I(B,{key:0,title:"Agent Chat",desc:"Ask me anything about your SQL query"},{default:h(()=>[f("div",qa,[p(_,{variant:"outline",size:"xs",onClick:$[3]||($[3]=F=>C("Explain this query"))},{default:h(()=>$[14]||($[14]=[O(" Explain this query ")])),_:1}),p(_,{variant:"outline",size:"xs",onClick:$[4]||($[4]=F=>C("How can I optimize this query?"))},{default:h(()=>$[15]||($[15]=[O(" Optimize query ")])),_:1}),p(_,{variant:"outline",size:"xs",onClick:$[5]||($[5]=F=>C("What are potential issues with this query?"))},{default:h(()=>$[16]||($[16]=[O(" Find issues ")])),_:1})])]),_:1})):Q("",!0),(v(!0),A(ee,null,ne(l(i),F=>(v(),A("div",{key:F.id,class:pe(["flex gap-3",F.role==="user"?"justify-end":"justify-start"])},[f("div",{class:pe(["max-w-[80%] rounded-lg p-3 text-sm",F.role==="user"?"bg-primary text-primary-foreground":"bg-muted"])},[F.role==="user"?(v(!0),A(ee,{key:0},ne(F.parts,(G,j)=>(v(),A(ee,{key:j},[G.type==="text"?(v(),A("span",Da,D(G.text),1)):Q("",!0)],64))),128)):(v(),A("div",Fa,[(v(!0),A(ee,null,ne(F.parts,(G,j)=>(v(),A(ee,{key:j},[G.type==="text"?(v(),A("span",Va,D(G.text),1)):Q("",!0)],64))),128))]))],2)],2))),128)),l(o)&&(!((T=l(i)[l(i).length-1])!=null&&T.parts)||((W=(H=l(i)[l(i).length-1])==null?void 0:H.parts)==null?void 0:W.length)===0)?(v(),A("div",Ba,[f("div",ja,[f("div",Ua,[p(L,{name:"hugeicons:loading-03",class:"size-4 animate-spin"}),$[17]||($[17]=f("span",{class:"text-muted-foreground"},"Thinking...",-1))])])])):Q("",!0)],512)):(v(),A("div",Ia,[f("div",Oa,[p(L,{name:"lucide:key",class:"size-12 mb-3 opacity-50 mx-auto"}),f("p",Pa," No API key configured for "+D(l(c).name),1),$[13]||($[13]=f("p",{class:"text-xs text-muted-foreground mb-3"}," Configure your API keys in Settings → Agent ",-1)),p(l(ce),null,{default:h(()=>[p(l(ie),{"as-child":""},{default:h(()=>[p(_,{variant:"outline",size:"sm",class:"text-xs",onClick:$[2]||($[2]=F=>l(y)("Agent"))},{default:h(()=>[p(L,{name:"lucide:settings",class:"size-4 mr-1"}),$[11]||($[11]=O(" Open Settings "))]),_:1})]),_:1}),p(l(ue),null,{default:h(()=>$[12]||($[12]=[f("p",null,"Open functionality settings",-1)])),_:1})]),_:1})])])),l(u)?(v(),A("div",Ha,[f("form",{onSubmit:b,class:"flex gap-2 relative"},[p(q,{modelValue:l(x),"onUpdate:modelValue":$[6]||($[6]=F=>Ae(x)?x.value=F:null),placeholder:"Ask about your SQL query...",disabled:l(o),class:"min-h-4!"},null,8,["modelValue","disabled"]),p(l(ce),null,{default:h(()=>[p(l(ie),{"as-child":""},{default:h(()=>[p(_,{type:"submit",size:"iconSm",class:"absolute right-2 top-1/2 -translate-y-1/2 rounded-full",disabled:!l(x).trim()||l(o)},{default:h(()=>[p(L,{name:l(o)?"hugeicons:loading-03":"lucide:arrow-up",class:pe(["size-4",l(o)?"animate-spin":""])},null,8,["name","class"])]),_:1},8,["disabled"])]),_:1}),p(l(ue),null,{default:h(()=>$[18]||($[18]=[f("p",null,"Send message",-1)])),_:1})]),_:1})],32)])):Q("",!0)])}}}),Wa={class:"h-full p-2 overflow-y-auto"},Ka={key:0,class:"space-y-2"},Ga={class:"flex items-center justify-between gap-2"},Ya={class:"flex items-center gap-1"},Ja={class:"text-sm pl-5 text-muted-foreground decoration-wavy underline decoration-red-600"},Za={key:0,class:"pl-5 mt-1 text-sm text-amber-600/90 font-medium"},Xa={class:"pt-2 border-t"},er={class:"error-query-container"},tr={key:0,class:"pt-2 border-t"},sr=X({__name:"ResultTabErrorView",props:{activeTab:{}},emits:["onChangeView"],setup(s,{emit:e}){const t=s,n=e,a=x=>!!x.metadata.executeErrors,o=P(()=>{var S,b;const x=(S=t.activeTab.metadata.executeErrors)==null?void 0:S.data;return((b=x==null?void 0:x.normalizeError)==null?void 0:b.position)||null}),r=P(()=>{var b;const x=t.activeTab.metadata.executeErrors,S=x==null?void 0:x.data;return((b=S==null?void 0:S.normalizeError)==null?void 0:b.message)||(x==null?void 0:x.message)||""}),i=P(()=>{var S,b;const x=(S=t.activeTab.metadata.executeErrors)==null?void 0:S.data;return((b=x==null?void 0:x.normalizeError)==null?void 0:b.hint)||null}),u=P(()=>{const x=t.activeTab.metadata.statementQuery;if(!x)return[];const S=o.value,b=[];if(S&&S>0){const g=S-1;let C=g;for(;C<x.length&&x[C]!==`
|
|
9
9
|
`&&x[C]!=="\r"&&x[C]!==" "&&x[C]!==" ";)C++;C<=g&&(C=Math.min(g+1,x.length)),b.push({start:g,end:C,properties:{class:"error-highlight"}})}return b}),c=async()=>{if(typeof window>"u")return;await Ce();const x=document.querySelector(".error-query-container .error-highlight");x&&x.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})};de(()=>u.value,()=>{c()},{flush:"post"});const m=P(()=>{var S;const x={...((S=t.activeTab.metadata.executeErrors)==null?void 0:S.data)||{}};return x==null||delete x.normalizeError,x?typeof x=="string"?x:JSON.stringify(x,null,2):""}),d=P(()=>t.activeTab.metadata.statementQuery||""),y=()=>{n("onChangeView","agent")};return(x,S)=>{var C;const b=fe,g=Mt;return v(),A("div",Wa,[a(x.activeTab)?(v(),A("div",Ka,[f("div",Ga,[f("div",null,[f("div",Ya,[p(b,{name:"hugeicons:alert-02",class:"size-4 text-red-500 mt-0.5"}),S[0]||(S[0]=f("div",{class:"font-medium text-red-600"},"Error Message",-1))]),f("span",Ja,D(r.value),1),i.value?(v(),A("div",Za," Hint: "+D(i.value),1)):Q("",!0)]),p(l(Se),{onClick:y,size:"xs",variant:"outline"},{default:h(()=>[p(b,{name:"hugeicons:ai-brain-04",class:"size-4"}),S[1]||(S[1]=O(" Ask AI to fix this error "))]),_:1})]),f("div",Xa,[S[2]||(S[2]=f("div",{class:"mb-2"},[f("span",{class:"font-normal text-sm text-muted-foreground flex items-center gap-1"}," View executed query : ")],-1)),f("div",er,[p(g,{code:d.value,decorations:u.value,"show-copy-button":""},null,8,["code","decorations"])])]),(C=x.activeTab.metadata.executeErrors)!=null&&C.data?(v(),A("div",tr,[S[3]||(S[3]=f("div",{class:"flex items-center justify-between mb-2"},[f("div",{class:"text-sm text-muted-foreground"},"Error Details:")],-1)),p(g,{code:m.value,language:"json"},null,8,["code"])])):Q("",!0)])):Q("",!0)])}}}),nr=wt(sr,[["__scopeId","data-v-d4daf140"]]),or={class:"h-full p-4 space-y-3 overflow-y-auto"},ar={class:"space-y-2"},rr={class:"flex items-center gap-2 text-sm"},lr={class:"font-medium"},ir={class:"flex items-center gap-2 text-sm"},ur={class:"font-medium"},cr={class:"flex items-center gap-2 text-sm"},dr={class:"font-medium"},mr={class:"flex items-center gap-2 text-sm"},pr={class:"font-medium"},fr={class:"flex items-center gap-2 text-sm"},hr={class:"font-medium"},vr={key:0,class:"flex items-center gap-2 text-sm"},gr={class:"font-medium"},yr={class:"pt-3 border-t"},xr={key:0,class:"pt-3 border-t"},br={class:"flex flex-wrap gap-1"},Cr=X({__name:"ResultTabInfoView",props:{activeTab:{}},setup(s){const e=s,t=typeof TextEncoder<"u"?new TextEncoder:null,n=P(()=>{var o;const a=((o=e.activeTab)==null?void 0:o.result)??[];if(!t)return{bytes:0,formatted:"N/A"};try{const r=JSON.stringify(a),i=r?t.encode(r).length:0;return{bytes:i,formatted:nn(i)}}catch{return{bytes:0,formatted:"N/A"}}});return(a,o)=>{var u,c,m,d;const r=fe,i=Mt;return v(),A("div",or,[f("div",ar,[f("div",rr,[p(r,{name:"hugeicons:clock-01",class:"size-4 text-muted-foreground"}),o[0]||(o[0]=f("span",{class:"text-muted-foreground"},"Query Time:",-1)),f("span",lr,D(l(We)(a.activeTab.metadata.queryTime)),1)]),f("div",ir,[p(r,{name:"hugeicons:summation-01",class:"size-4 text-muted-foreground"}),o[1]||(o[1]=f("span",{class:"text-muted-foreground"},"Rows:",-1)),f("span",ur,D(l(yt)(((u=a.activeTab.result)==null?void 0:u.length)||0)),1)]),f("div",cr,[p(r,{name:"hugeicons:file-02",class:"size-4 text-muted-foreground"}),o[2]||(o[2]=f("span",{class:"text-muted-foreground"},"Result Size:",-1)),f("span",dr,D(n.value.formatted),1)]),f("div",mr,[p(r,{name:"hugeicons:chart-column",class:"size-4 text-muted-foreground"}),o[3]||(o[3]=f("span",{class:"text-muted-foreground"},"Columns:",-1)),f("span",pr,D(((c=a.activeTab.metadata.fieldDefs)==null?void 0:c.length)||0),1)]),f("div",fr,[p(r,{name:"hugeicons:calendar-03",class:"size-4 text-muted-foreground"}),o[4]||(o[4]=f("span",{class:"text-muted-foreground"},"Executed At:",-1)),f("span",hr,D(((m=a.activeTab.metadata.executedAt)==null?void 0:m.toLocaleString())||"N/A"),1)]),a.activeTab.metadata.connection?(v(),A("div",vr,[p(r,{name:"hugeicons:plug-socket",class:"size-4 text-muted-foreground"}),o[5]||(o[5]=f("span",{class:"text-muted-foreground"},"Connection:",-1)),f("span",gr,D(a.activeTab.metadata.connection.name||"Unknown"),1)])):Q("",!0)]),f("div",yr,[o[6]||(o[6]=f("div",{class:"text-sm text-muted-foreground mb-2"},"Query:",-1)),p(i,{code:a.activeTab.metadata.statementQuery||""},null,8,["code"])]),(d=a.activeTab.metadata.fieldDefs)!=null&&d.length?(v(),A("div",xr,[o[7]||(o[7]=f("div",{class:"text-sm text-muted-foreground mb-2"},"Fields:",-1)),f("div",br,[(v(!0),A(ee,null,ne(a.activeTab.metadata.fieldDefs,y=>(v(),A("span",{key:y.name,class:"text-xs bg-muted px-2 py-1 rounded"},D(y.name),1))),128))])])):Q("",!0)])}}}),Sr={class:"h-full flex flex-col flex-1 overflow-hidden"},wr=X({__name:"ResultTabRawView",props:{formattedData:{},executeLoading:{type:Boolean},isStreaming:{type:Boolean}},setup(s){const e=s;return(t,n)=>{const a=Ke;return v(),A("div",Sr,[e.formattedData.length===0&&!t.executeLoading&&!t.isStreaming?(v(),I(a,{key:0,title:"No Raw Data",desc:"The query returned no records to display as JSON."})):(v(),I(l(lo),{key:1,modelValue:e.formattedData,mode:"text",readOnly:!0,navigationBar:!1,class:"h-full"},null,8,["modelValue"]))])}}}),_r=X({__name:"RawQueryContextMenu",props:{cellContextMenu:{},cellHeaderContextMenu:{},data:{},selectedRows:{},tableName:{},schemaName:{}},emits:["onClearContextMenu"],setup(s,{emit:e}){const t=s,n=e,a=P(()=>{var b,g,C,E;return((g=(b=t.cellContextMenu)==null?void 0:b.column)==null?void 0:g.getColId())??((E=(C=t.cellHeaderContextMenu)==null?void 0:C.column)==null?void 0:E.getColId())}),o=P(()=>{var b,g,C;return((b=t.cellContextMenu)==null?void 0:b.column.getColDef().headerName)??((C=(g=t.cellHeaderContextMenu)==null?void 0:g.column)==null?void 0:C.getColDef().headerName)??""}),r=b=>{Ut(t.selectedRows||[],o.value??"",b)},i=b=>{Ut(t.data||[],o.value??"",b)},u=b=>ft(t.selectedRows||[],t.tableName||"table_data",b,t.schemaName),c=b=>ft(t.data||[],t.tableName||"table_data",b,t.schemaName),m=b=>Ht(t.selectedRows||[],t.tableName||"table_data",b,"selected",t.schemaName),d=b=>Ht(t.data||[],t.tableName||"table_data",b,"all",t.schemaName),y=()=>{var g;const b=(g=t.cellContextMenu)==null?void 0:g.value;if(b!==void 0){if(typeof b=="object")return Qt(JSON.stringify(b));Qt(String(b))}},x=()=>{var b;if(t.cellContextMenu){const g=(b=t.cellContextMenu)==null?void 0:b.data;ft([g],t.tableName||"table_data","csv-no-header",t.schemaName)}},S=P(()=>{var q;const b=!!t.cellContextMenu,g=t.selectedRows.length>0,C=t.selectedRows.length,E=((q=t.data)==null?void 0:q.length)||0,$=!!a.value,L=[{type:U.LABEL,title:`${C} selected`,condition:g&&b},{type:U.ACTION,title:"Copy as text",icon:"hugeicons:file-01",select:()=>r("list"),condition:g&&b},{type:U.ACTION,title:"Copy as JSON",icon:"hugeicons:code",select:()=>r("json"),condition:g&&b},{type:U.SEPARATOR,condition:g&&b},{type:U.LABEL,title:"All data in column"},{type:U.ACTION,title:"Copy as text",icon:"hugeicons:file-01",select:()=>i("list")},{type:U.ACTION,title:"Copy as JSON",icon:"hugeicons:code",select:()=>i("json")}],_=[{type:U.LABEL,title:`${C} selected row(s)`,condition:g},{type:U.ACTION,title:"Copy as CSV/TSV",icon:"hugeicons:csv-02",select:()=>u("csv-no-header"),condition:g},{type:U.ACTION,title:"Copy as JSON",icon:"hugeicons:code",select:()=>u("json"),condition:g},{type:U.ACTION,title:"Copy as SQL",icon:"hugeicons:database",select:()=>u("sql"),condition:g},{type:U.SEPARATOR,condition:g},{type:U.LABEL,title:"All rows"},{type:U.ACTION,title:"Copy as CSV/TSV",icon:"hugeicons:csv-02",select:()=>c("csv-no-header")},{type:U.ACTION,title:"Copy as JSON",icon:"hugeicons:code",select:()=>c("json")},{type:U.ACTION,title:"Copy as SQL",icon:"hugeicons:database",select:()=>c("sql")}],B=[{type:U.LABEL,title:`${C} selected row${C>1?"s":""}`,condition:g},{type:U.ACTION,title:"Export as CSV",icon:"hugeicons:csv-01",select:()=>m("csv-no-header"),condition:g},{type:U.ACTION,title:"Export as CSV (have headers)",icon:"hugeicons:csv-01",select:()=>m("csv-with-header"),condition:g},{type:U.ACTION,title:"Export as JSON",icon:"hugeicons:code",select:()=>m("json"),condition:g},{type:U.ACTION,title:"Export as SQL",icon:"hugeicons:database",select:()=>m("sql"),condition:g},{type:U.SEPARATOR,condition:g},{type:U.LABEL,title:`All ${E.toLocaleString()} row${E!==1?"s":""}`},{type:U.ACTION,title:"Export as CSV",icon:"hugeicons:csv-01",select:()=>d("csv-no-header")},{type:U.ACTION,title:"Export as CSV (have headers)",icon:"hugeicons:csv-01",select:()=>d("csv-with-header")},{type:U.ACTION,title:"Export as JSON",icon:"hugeicons:code",select:()=>d("json")},{type:U.ACTION,title:"Export as SQL",icon:"hugeicons:database",select:()=>d("sql")}];return[{type:U.ACTION,title:"Copy current cell",icon:"hugeicons:copy-02",select:y,condition:b},{type:U.ACTION,title:"Copy current row",icon:"hugeicons:copy-02",select:x,condition:g&&b},{type:U.SEPARATOR,condition:b},{type:U.SUBMENU,title:"Copy column",icon:"hugeicons:layout-3-column",items:L,condition:$,desc:o.value||"Select a column"},{type:U.SUBMENU,title:"Copy row(s)",icon:"hugeicons:layout-3-row",items:_},{type:U.SEPARATOR},{type:U.SUBMENU,title:"Export",icon:"hugeicons:file-download",items:B}]});return(b,g)=>(v(),I(l(Kn),{contextMenuItems:l(S),onOnClearContextMenu:g[0]||(g[0]=C=>n("onClearContextMenu"))},{default:h(()=>[xe(b.$slots,"default")]),_:3},8,["contextMenuItems"]))}}),Er={class:"h-full w-full"},Tr=X({__name:"ResultTabResultView",props:{activeTab:{},activeTabColumns:{},formattedData:{},executeLoading:{type:Boolean},isStreaming:{type:Boolean}},setup(s){const e=s,t=K(),n=K([]),a=c=>{n.value=c},o=P(()=>n.value||[]),r=P(()=>{var c;return _a(e.activeTab.metadata.command||"",e.activeTab.metadata.rowCount||0,(c=e.activeTab.metadata.connection)==null?void 0:c.type)}),i=P(()=>r.value.isMutation),u=P(()=>r.value.message);return(c,m)=>{var x,S;const d=Ke,y=gs;return v(),A("div",Er,[c.activeTab.result.length===0&&l(i)&&!c.executeLoading&&!c.isStreaming?(v(),I(d,{key:0,desc:l(u),hiddenIcon:"",class:"h-full"},null,8,["desc"])):c.activeTab.result.length===0&&!c.executeLoading&&!c.isStreaming?(v(),I(d,{key:1,title:"No Results",desc:"The query returned no records.",class:"h-full"})):(v(),I(_r,{key:2,data:c.formattedData||[],selectedRows:l(o)||[],cellContextMenu:(x=l(t))==null?void 0:x.cellContextMenu,cellHeaderContextMenu:(S=l(t))==null?void 0:S.cellHeaderContextMenu,onOnClearContextMenu:m[0]||(m[0]=b=>{var g;return(g=l(t))==null?void 0:g.clearCellContextMenu()})},{default:h(()=>[p(y,{ref_key:"rawQueryTableRef",ref:t,columns:c.activeTabColumns,data:c.formattedData||[],selectedRows:l(n),onOnSelectedRows:a,class:"h-full","skip-re-column-size":"",columnKeyBy:"field"},null,8,["columns","data","selectedRows"])]),_:1},8,["data","selectedRows","cellContextMenu","cellHeaderContextMenu"]))])}}});var st=(s=>(s.GRID="grid",s.TIMELINE="time-line",s.RAW="raw",s))(st||{});const Rr=[{value:"time-line",label:"Timeline",icon:"hugeicons:chart-line-data-01"},{value:"grid",label:"Grid",icon:"hugeicons:grid-table"},{value:"raw",label:"Raw",icon:"hugeicons:3rd-bracket"}],kr={class:"flex items-center justify-between px-3 py-2 border-b shrink-0"},$r={class:"flex items-center gap-3 min-w-0"},zr={class:"flex items-center gap-2 flex-wrap"},Ar={class:"flex flex-col gap-1 max-w-[250px] sm:max-w-xs"},Lr={class:"text-[11px] text-muted-foreground list-disc pl-3 break-words whitespace-normal"},Mr={class:"flex flex-col gap-1 max-w-[250px] sm:max-w-xs"},Nr={class:"text-[11px] text-muted-foreground list-disc pl-3 break-words whitespace-normal"},Ir={class:"flex flex-col gap-1 max-w-[250px] sm:max-w-xs"},Or={class:"text-[11px] text-muted-foreground list-disc pl-3 break-words whitespace-normal"},Pr={class:"flex items-center gap-2 shrink-0"},qr=X({__name:"ExplainPlanHeader",props:qt({summaryStats:{},isExpanded:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:qt(["toggle-expand"],["update:modelValue"]),setup(s,{emit:e}){const t=e,n=on(s,"modelValue");return(a,o)=>{const r=fe,i=an,u=ie,c=ue,m=ce,d=un,y=ln,x=rn,S=Se;return v(),A("div",kr,[f("div",$r,[p(r,{name:"hugeicons:analytics-up",class:"size-4 text-muted-foreground"}),o[6]||(o[6]=f("span",{class:"text-sm font-medium"},"Execution Plan",-1)),f("div",zr,[a.summaryStats.executionTime!==void 0?(v(),I(i,{key:0,variant:"outline",class:"text-[11px] h-5 gap-1"},{default:h(()=>[p(r,{name:"hugeicons:clock-01",class:"size-3"}),O(" "+D(l(We)(a.summaryStats.executionTime)),1)]),_:1})):Q("",!0),a.summaryStats.planningTime!==void 0?(v(),I(i,{key:1,variant:"outline",class:"text-[11px] h-5 gap-1"},{default:h(()=>[O(" Planning: "+D(l(We)(a.summaryStats.planningTime)),1)]),_:1})):Q("",!0),a.summaryStats.nodeCount>0?(v(),I(m,{key:2},{default:h(()=>{var b;return[p(u,{"as-child":""},{default:h(()=>[p(i,{variant:"outline",class:"text-[11px] h-5 gap-1 cursor-help"},{default:h(()=>[O(D(a.summaryStats.nodeCount)+" nodes ",1)]),_:1})]),_:1}),(b=a.summaryStats.allNodes)!=null&&b.length?(v(),I(c,{key:0},{default:h(()=>[f("div",Ar,[o[2]||(o[2]=f("span",{class:"font-medium text-xs"},"Nodes:",-1)),f("ul",Lr,[(v(!0),A(ee,null,ne(a.summaryStats.allNodes,g=>(v(),A("li",{key:g.id},D(g.label),1))),128))])])]),_:1})):Q("",!0)]}),_:1})):(v(),I(i,{key:3,variant:"outline",class:"text-[11px] h-5 gap-1"},{default:h(()=>o[3]||(o[3]=[O(" 0 nodes ")])),_:1})),a.summaryStats.expensiveCount>0?(v(),I(m,{key:4},{default:h(()=>{var b;return[p(u,{"as-child":""},{default:h(()=>[p(i,{variant:"outline",class:"text-[11px] h-5 gap-1 border-amber-300 text-amber-700 dark:text-amber-400 cursor-help"},{default:h(()=>[O(D(a.summaryStats.expensiveCount)+" expensive ",1)]),_:1})]),_:1}),(b=a.summaryStats.expensiveNodes)!=null&&b.length?(v(),I(c,{key:0},{default:h(()=>[f("div",Mr,[o[4]||(o[4]=f("span",{class:"font-medium text-xs"},"Expensive Nodes:",-1)),f("ul",Nr,[(v(!0),A(ee,null,ne(a.summaryStats.expensiveNodes,g=>(v(),A("li",{key:g.id},D(g.label),1))),128))])])]),_:1})):Q("",!0)]}),_:1})):Q("",!0),a.summaryStats.slowCount>0?(v(),I(m,{key:5},{default:h(()=>{var b;return[p(u,{"as-child":""},{default:h(()=>[p(i,{variant:"outline",class:"text-[11px] h-5 gap-1 border-red-300 text-red-700 dark:text-red-400 cursor-help"},{default:h(()=>[O(D(a.summaryStats.slowCount)+" slowest ",1)]),_:1})]),_:1}),(b=a.summaryStats.slowNodes)!=null&&b.length?(v(),I(c,{key:0},{default:h(()=>[f("div",Ir,[o[5]||(o[5]=f("span",{class:"font-medium text-xs"},"Slowest Node(s):",-1)),f("ul",Or,[(v(!0),A(ee,null,ne(a.summaryStats.slowNodes,g=>(v(),A("li",{key:g.id},D(g.label),1))),128))])])]),_:1})):Q("",!0)]}),_:1})):Q("",!0)])]),f("div",Pr,[p(x,{modelValue:n.value,"onUpdate:modelValue":o[0]||(o[0]=b=>n.value=b),class:"gap-0"},{default:h(()=>[p(y,{class:"h-6"},{default:h(()=>[(v(!0),A(ee,null,ne(l(Rr),b=>(v(),I(d,{key:b.value,value:b.value,class:"text-xs px-1 rounded-sm cursor-pointer"},{default:h(()=>[p(r,{name:b.icon,class:"size-3.5!"},null,8,["name"]),O(" "+D(b.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"]),p(S,{variant:"outline",size:"iconSm",onClick:o[1]||(o[1]=b=>t("toggle-expand"))},{default:h(()=>[p(r,{name:a.isExpanded?"hugeicons:arrow-shrink":"hugeicons:arrow-expand",class:"size-3.5"},null,8,["name"])]),_:1})])])}}}),Dr={class:"flex items-center text-xs h-full w-full overflow-hidden whitespace-nowrap"},Fr={key:0,class:"text-muted-foreground shrink-0 whitespace-pre",style:{"font-family":"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace !important"}},Vr={key:1,class:"font-normal shrink-0"},Br={key:2,class:"text-xxs pl-0.5 text-muted-foreground truncate shrink min-w-0"},jr=X({__name:"ExplainOperationCell",props:{params:{}},setup(s){const e=s,t=P(()=>{var n;return((n=e.params)==null?void 0:n.data)??{}});return(n,a)=>(v(),A("div",Dr,[l(t).treePrefix?(v(),A("span",Fr,D(l(t).treePrefix),1)):Q("",!0),l(t).nodeType?(v(),A("span",Vr,D(l(t).nodeType),1)):Q("",!0),l(t).contextLabel?(v(),A("span",Br,D(l(t).contextLabel),1)):Q("",!0)]))}}),Yt={"Seq Scan":"scan","Index Scan":"scan","Index Only Scan":"scan","Bitmap Index Scan":"scan","Bitmap Heap Scan":"scan","CTE Scan":"scan","Function Scan":"scan","Values Scan":"scan","Subquery Scan":"scan",Aggregate:"agg",HashAggregate:"agg",GroupAggregate:"agg",Sort:"sort","Incremental Sort":"sort",Hash:"hash","Hash Join":"join","Merge Join":"join","Nested Loop":"join"},le=s=>s?String(s).replace(/^[\[]|[\]]$/g,"").replace(/"/g,"").trim():"",Ur=s=>s==="Seq Scan"?"bad":Yt[s]?Yt[s]:s.includes("Join")?"join":s.includes("Scan")?"scan":s.includes("Aggregate")?"agg":s.includes("Sort")?"sort":"other",Jt=(s,e,t)=>{for(let n=e+1;n<s.length;n++){const a=s[n].depth??0;if(a<t)return!1;if(a===t)return!0}return!1},Hr=(s,e)=>{const n=s[e].depth??0;if(n===0)return"";const a=[];for(let r=1;r<n;r++)a.push(Jt(s,e,r)?"│ ":" ");const o=!Jt(s,e,n);return a.push(o?"└─ ":"├─ "),a.join("")},Qr=s=>{const e=le(s.hashCond),t=le(s.mergeCond),n=le(s.joinFilter),a=le(s.joinType).toLowerCase();if(a||e||t||n){const b=e||t||n,g=a?`${a} `:"";return{label:b?`${g}on ${b}`.trim():`${g}join`.trim(),kind:"join"}}const o=le(s.indexCond),r=le(s.recheckCond),i=le(s.tidCond);if(o)return{label:`on ${o}`,kind:"relation"};if(r)return{label:`recheck: ${r}`,kind:"relation"};if(i)return{label:`tid: ${i}`,kind:"relation"};const u=le(s.sortKey);if(u)return{label:`by ${u}`,kind:"sort"};const c=le(s.groupKey),m=le(s.hashKey);if(c||m)return{label:`by ${c||m}`,kind:"group"};const d=le(s.oneTimeFilter);if(d)return{label:`one-time: ${d}`,kind:"relation"};const y=le(s.filter);if(y)return{label:`filter: ${y}`,kind:"relation"};const x=le(s.cteName);if(x)return{label:`cte: ${x}`,kind:"relation"};const S=le(s.subplanName);if(S)return{label:`subplan: ${S}`,kind:"relation"};if(s.relation){const b=s.alias&&s.alias!==s.relation?` (${s.alias})`:"";return{label:`on ${s.relation}${b}`,kind:"relation"}}return{label:"",kind:""}},Wr=s=>[...s].map(e=>{var c,m;const t=e["Plan Rows"]||0,n=e["Actual Rows"]||0,a=e.estimateRatio,o=e["Actual Startup Time"]||0,r=e["Plan Width"]||0,i=e.rowEstimateAccuracy||"accurate",u=[`Node: ${e["Node Type"]}`,e["Relation Name"]?`Relation: ${e["Relation Name"]}`:"",`Depth: ${e.depth}`,`Startup time: ${o.toFixed(3)} ms`,`Total time: ${(e["Actual Total Time"]||0).toFixed(3)} ms`,`Actual rows: ${n.toLocaleString()}`,`Plan rows: ${t.toLocaleString()}`,a!==void 0?`Estimate ratio: ${a}x (${i})`:"Estimate ratio: -",`Total cost: ${(e["Total Cost"]||0).toFixed(2)}`,`Plan width: ${r}`,`Loops: ${(e["Actual Loops"]||0).toLocaleString()}`,`Slowest: ${e.isSlowest?"yes":"no"}`,`Expensive: ${e.isExpensive?"yes":"no"}`].filter(Boolean).join(`
|
|
10
10
|
`);return{id:e.id,order:e.index,nodeType:e["Node Type"],relation:e["Relation Name"],alias:e.Alias,sortKey:((c=e["Sort Key"])==null?void 0:c.join(", "))??"",joinType:e["Join Type"]??"",groupKey:((m=e["Group Key"])==null?void 0:m.join(", "))??"",hashKey:"",filter:e.Filter??"",joinFilter:"",oneTimeFilter:"",indexCond:"",hashCond:e["Hash Cond"]??"",mergeCond:e["Merge Cond"]??"",recheckCond:"",tidCond:"",cteName:"",subplanName:"",timeMs:e["Actual Total Time"]||0,rows:n,planRows:t,estimateRatio:a,cost:e["Total Cost"]||0,width:r,loops:e["Actual Loops"]||0,depth:e.depth,indentPx:e.depth*16,hitReadRatio:e.hitReadRatio,isSlowest:e.isSlowest,isExpensive:e.isExpensive,tooltipLines:u}}),Kr=s=>{const e=s.reduce((t,n)=>t+(n.timeMs||0),0)||1;return s.map((t,n)=>{const a=Hr(s,n),{label:o,kind:r}=Qr(t),i=t.isSlowest?"slowest":t.isExpensive?"expensive":"normal";return{order:t.order,timeMs:t.timeMs,rows:t.rows,planRows:t.planRows,estimateRatioValue:t.estimateRatio,cost:t.cost,width:t.width,loops:t.loops,hitReadRatio:t.hitReadRatio,isSlowest:t.isSlowest,isExpensive:t.isExpensive,orderLabel:`${t.order}`,queryPercentLabel:`${(t.timeMs/e*100).toFixed(2)}%`,timeSpentLabel:`${t.timeMs.toFixed(3)} ms`,rowsLabel:t.rows.toLocaleString(),planRowsLabel:t.planRows.toLocaleString(),estimateLabel:t.estimateRatio!==void 0?`${t.estimateRatio}×`:"-",costLabel:t.cost.toFixed(2),widthLabel:t.width,loopsLabel:t.loops.toLocaleString(),hitReadRatioLabel:t.hitReadRatio!==void 0?`${(t.hitReadRatio*100).toFixed(2)}%`:"-",statusLabel:i,treePrefix:a,nodeType:t.nodeType,nodeTypeCategory:Ur(t.nodeType),contextLabel:o,contextKind:r}})},Gr={class:"h-full p-2"},Yr=X({__name:"ExplainGridPane",props:{nodes:{}},setup(s){const e=s,t=P(()=>Wr(e.nodes)),n=P(()=>Kr(t.value)),a=P(()=>[{headerName:"#",field:"orderLabel",width:30,sortable:!0,resizable:!0,filter:!1,cellClass:"cellCenter"},{headerName:"Operation",field:"operationLabel",width:350,sortable:!1,resizable:!0,filter:!0,cellRenderer:"ExplainOperationCell",cellClass:"operation-cell",valueGetter:r=>`${r.data.treePrefix}${r.data.nodeType} ${r.data.contextLabel}`},{headerName:"Status",field:"statusLabel",width:96,sortable:!0,resizable:!0,filter:!0,cellClass:r=>{const i=r.value;return i==="slowest"?"cellCenter bg-red-300! dark:bg-red-900":i==="expensive"?"cellCenter bg-orange-100! dark:bg-orange-900":"cellCenter"}},{headerName:"Time Spent",field:"timeSpentLabel",width:110,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"% of Query",field:"queryPercentLabel",width:96,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Actual Rows",field:"rowsLabel",width:96,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Plan Rows",field:"planRowsLabel",width:88,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Estim",field:"estimateLabel",width:76,sortable:!0,resizable:!0,filter:!0,cellClass:r=>{var u;const i=Number((u=r.data)==null?void 0:u.estimateRatioValue);return Number.isFinite(i)?i<.1||i>10?"cellCenter bg-red-200 dark:bg-red-900":i>=.1&&i<.5||i>2&&i<=10?"cellCenter bg-orange-100 dark:bg-orange-900":"cellCenter ":"cellCenter "}},{headerName:"Cost",field:"costLabel",width:88,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Hit Read Ratio",field:"hitReadRatioLabel",width:110,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Width",field:"widthLabel",width:72,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Loops",field:"loopsLabel",width:72,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "}]),o={ExplainOperationCell:jr};return(r,i)=>(v(),A("div",Gr,[p(l(gs),{class:"h-full",columns:[],data:[],"column-key-by":"index","skip-re-column-size":"","has-hash-index":!1,"override-column-defs":l(a),"override-row-data":l(n),"external-components":o},null,8,["override-column-defs","override-row-data"])]))}}),Jr={class:"h-full p-2"},Zr={class:"rounded-lg border p-2 flex flex-col h-full min-h-0"},Xr={class:"flex justify-between items-center mb-4"},el={class:"text-sm font-bold text-muted-foreground uppercase flex items-center gap-2"},tl={key:0,class:"h-full grid place-items-center text-sm text-muted-foreground"},sl={key:1,class:"flex-1 overflow-auto relative"},nl={class:"min-w-[680px] text-xs"},ol={class:"flex border-b pb-2 mb-2 sticky top-0 bg-background z-10 font-medium text-muted-foreground"},al={class:"flex-1 relative h-4"},rl={class:"absolute right-0"},ll={class:"pb-2"},il=["onMouseenter"],ul={class:"w-[28%] min-w-[190px] max-w-[260px] px-2 flex items-center overflow-hidden"},cl={class:"truncate flex items-center gap-1"},dl={class:"font-mono text-xxs text-right shrink-0 text-muted-foreground"},ml={class:"flex flex-col truncate"},pl=["title"],fl={key:0,class:"text-muted-foreground text-xxs truncate"},hl={key:0},vl={class:"flex-1 relative h-6 mx-2"},gl={class:"space-y-2 text-xs"},yl={class:"font-semibold flex items-center gap-1"},xl={class:"grid grid-cols-2 gap-x-3 gap-y-1 text-[11px]"},bl={class:"font-mono"},Cl={class:"font-mono"},Sl={class:"font-mono"},wl={class:"font-mono"},_l={class:"font-mono"},El={class:"font-mono"},Tl={class:"font-mono"},Rl={class:"font-mono"},kl={key:0,class:"text-[11px] text-muted-foreground"},$l={key:0},Ze=14,zl=X({__name:"ExplainTimelineChartPane",props:{nodes:{},totalTime:{}},setup(s){const e=s,t=K(null),n=P(()=>{const d=[...e.nodes].filter(x=>typeof x["Actual Startup Time"]=="number"&&typeof x["Actual Total Time"]=="number").map(x=>{const S=x["Actual Startup Time"]||0,b=x["Actual Total Time"]||0,g=Math.max(0,b-S);return{id:x.id,nodeType:x["Node Type"],relation:x["Relation Name"],alias:x.Alias,depth:x.depth,actualRows:x["Actual Rows"],actualLoops:x["Actual Loops"],planRows:x["Plan Rows"],totalCost:x["Total Cost"],start:S,end:b,duration:g}}),y=(x,S)=>{for(let b=x+1;b<d.length;b+=1){const g=d[b].depth;if(g<S)return!1;if(g===S)return!0}return!1};return d.map((x,S)=>{const b=[];for(let g=1;g<x.depth;g+=1)y(S,g)&&b.push(g);return{...x,continuationLevels:b,hasNextSibling:x.depth>0?y(S,x.depth):!1}})}),a=P(()=>{const d=n.value.length?Math.max(...n.value.map(y=>y.end)):0;return Math.max(e.totalTime||0,d,1)}),o=(d,y)=>{const x=a.value>0?a.value:1,S=d/x*100,b=Math.max(y/x*100,.5);return{left:`${S}%`,width:`${b}%`}},r=d=>{const y=a.value>0?a.value:1;return(d/y*100).toFixed(2)},i=d=>`${Math.max(d,0)*Ze}px`,u=d=>`${(d-1)*Ze+Ze/2}px`,c=`${Ze/2}px`,m=d=>d==="Seq Scan"?"bg-gray-400 dark:bg-gray-600":d.includes("Scan")?"bg-gray-300 dark:bg-gray-700":d.includes("Join")?"bg-gray-500 dark:bg-gray-500":d==="Sort"?"bg-gray-300 dark:bg-gray-600":(d.includes("Aggregate"),"bg-gray-400 dark:bg-gray-600");return(d,y)=>{const x=fe,S=ie,b=ue,g=ce;return v(),A("div",Jr,[f("div",Zr,[f("div",Xr,[f("h3",el,[p(x,{name:"hugeicons:clock-01",class:"size-4"}),y[1]||(y[1]=O(" Execution Plan Timeline "))]),y[2]||(y[2]=f("span",{class:"text-xs text-muted-foreground"},"Hover for details",-1))]),l(n).length===0?(v(),A("div",tl," No timeline data available ")):(v(),A("div",sl,[f("div",nl,[f("div",ol,[y[7]||(y[7]=f("div",{class:"w-[28%] min-w-[190px] max-w-[260px] pl-2"}," Node Hierarchy ",-1)),f("div",al,[y[3]||(y[3]=f("div",{class:"absolute left-0"},"0ms",-1)),f("div",rl,D(l(Ye)(l(a))),1),y[4]||(y[4]=f("div",{class:"absolute left-1/4 border-l h-full"},null,-1)),y[5]||(y[5]=f("div",{class:"absolute left-1/2 border-l h-full"},null,-1)),y[6]||(y[6]=f("div",{class:"absolute left-3/4 border-l h-full"},null,-1))])]),f("div",ll,[(v(!0),A(ee,null,ne(l(n),C=>(v(),A("div",{key:C.id,class:pe(["flex items-center group rounded transition-colors hover:bg-muted",l(t)===C.id?"bg-muted/40":""]),onMouseenter:E=>t.value=C.id,onMouseleave:y[0]||(y[0]=E=>t.value=null)},[f("div",ul,[f("div",{class:"relative shrink-0 h-7",style:Ve({width:i(C.depth)})},[(v(!0),A(ee,null,ne(C.continuationLevels,E=>(v(),A("div",{key:`${C.id}-v-${E}`,class:"absolute top-0 bottom-0 border-l border-dashed border-muted-foreground/35",style:Ve({left:u(E)})},null,4))),128)),C.depth>0?(v(),A(ee,{key:0},[f("div",{class:"absolute top-0 border-l border-dashed border-muted-foreground/45",style:Ve({left:u(C.depth),height:C.hasNextSibling?"100%":"50%"})},null,4),f("div",{class:"absolute top-1/2 -translate-y-1/2 border-t border-dashed border-muted-foreground/45",style:Ve({left:u(C.depth),width:c})},null,4)],64)):Q("",!0)],4),f("div",cl,[f("span",dl," #"+D(C.id.replace("ep-","")),1),f("div",ml,[f("span",{class:"truncate font-medium text-sm",title:C.nodeType},D(C.nodeType),9,pl),C.relation?(v(),A("span",fl,[O(D(C.relation)+" ",1),C.alias&&C.alias!==C.relation?(v(),A("span",hl,"("+D(C.alias)+")",1)):Q("",!0)])):Q("",!0)])])]),f("div",vl,[y[16]||(y[16]=cn('<div class="absolute top-0 bottom-0 left-0 w-px bg-muted"></div><div class="absolute top-0 bottom-0 right-0 w-px bg-muted"></div><div class="absolute top-0 bottom-0 left-1/4 w-px bg-muted"></div><div class="absolute top-0 bottom-0 left-1/2 w-px bg-muted"></div><div class="absolute top-0 bottom-0 left-3/4 w-px bg-muted"></div>',5)),p(g,null,{default:h(()=>[p(S,{"as-child":""},{default:h(()=>[f("div",{class:pe(["absolute top-1 bottom-1 rounded-sm transition-all shadow-sm opacity-90 cursor-default",[m(C.nodeType),l(t)===C.id?"brightness-105 ring-2 ring-border z-10":""]]),style:Ve(o(C.start,C.duration))},null,6)]),_:2},1024),p(b,{side:"top","side-offset":8,class:"max-w-[360px]"},{default:h(()=>{var E,$,L,_;return[f("div",gl,[f("div",yl,[p(x,{name:"hugeicons:flow-square",class:"size-3.5"}),O(" "+D(C.nodeType),1)]),f("div",xl,[y[8]||(y[8]=f("span",{class:"text-muted-foreground"},"Start",-1)),f("span",bl,D(l(Ye)(C.start)),1),y[9]||(y[9]=f("span",{class:"text-muted-foreground"},"End",-1)),f("span",Cl,D(l(Ye)(C.end)),1),y[10]||(y[10]=f("span",{class:"text-muted-foreground"},"Duration",-1)),f("span",Sl,D(l(Ye)(C.duration)),1),y[11]||(y[11]=f("span",{class:"text-muted-foreground"},"Share",-1)),f("span",wl,D(r(C.duration))+"%",1),y[12]||(y[12]=f("span",{class:"text-muted-foreground"},"Rows",-1)),f("span",_l,D(((E=C.actualRows)==null?void 0:E.toLocaleString())??"-"),1),y[13]||(y[13]=f("span",{class:"text-muted-foreground"},"Plan Rows",-1)),f("span",El,D((($=C.planRows)==null?void 0:$.toLocaleString())??"-"),1),y[14]||(y[14]=f("span",{class:"text-muted-foreground"},"Loops",-1)),f("span",Tl,D(((L=C.actualLoops)==null?void 0:L.toLocaleString())??"-"),1),y[15]||(y[15]=f("span",{class:"text-muted-foreground"},"Total Cost",-1)),f("span",Rl,D(((_=C.totalCost)==null?void 0:_.toFixed(2))??"-"),1)]),C.relation?(v(),A("div",kl,[O(" Relation: "+D(C.relation)+" ",1),C.alias&&C.alias!==C.relation?(v(),A("span",$l,"("+D(C.alias)+")",1)):Q("",!0)])):Q("",!0)])]}),_:2},1024)]),_:2},1024)])],42,il))),128))])])]))])])}}}),Al={class:"h-full overflow-auto p-2"},Ll=X({__name:"ExplainRawPane",props:{rawText:{}},setup(s){const e=s,t=P(()=>{const n=e.rawText.trim();return n.startsWith("{")||n.startsWith("[")?"json":"sql"});return(n,a)=>{const o=Mt;return v(),A("div",Al,[p(o,{code:n.rawText,language:t.value,"max-height":"100%"},null,8,["code","language"])])}}});let lt=0;const Ml=()=>(lt+=1,`ep-${lt}`),Zt=s=>s==null?"":typeof s=="string"?s:typeof s=="number"||typeof s=="boolean"?String(s):JSON.stringify(s),Nl=s=>{const e=(s["Shared Hit Blocks"]??0)+(s["Local Hit Blocks"]??0),t=(s["Shared Read Blocks"]??0)+(s["Local Read Blocks"]??0),n=e+t;if(!(n<=0))return Number((e/n).toFixed(4))},Il=(s,e)=>{const t=e["Plan Rows"],n=e["Actual Rows"];if(t!==void 0&&n!==void 0&&t>0&&n>=0){s.estimateRatio=Number((n/t).toFixed(2));const a=n/t;a>10?s.rowEstimateAccuracy="underestimate":a<.1?s.rowEstimateAccuracy="overestimate":s.rowEstimateAccuracy="accurate"}s.hitReadRatio=Nl(e),(e["Total Cost"]!==void 0&&e["Total Cost"]>1e3||e["Actual Total Time"]!==void 0&&e["Actual Total Time"]>100)&&(s.isExpensive=!0)},Ol=s=>{let e=0,t="";for(const a of s){const o=a.children.reduce((i,u)=>i+(u["Actual Total Time"]??0)*(u["Actual Loops"]??1),0)/(a["Actual Loops"]??1),r=Math.max(0,(a["Actual Total Time"]??0)-o);r>e&&(e=r,t=a.id)}const n=s.find(a=>a.id===t);n&&(n.isSlowest=!0)},Cs=(s,e,t)=>{const{Plans:n,...a}=s,o=s["Node Type"]||"Unknown Node",r=s["Relation Name"],i={...a,id:Ml(),index:lt,label:r?`${o} on ${r}`:o,estimateRatio:void 0,hitReadRatio:void 0,isExpensive:!1,isSlowest:!1,rowEstimateAccuracy:void 0,depth:e,children:(n??[]).map(u=>Cs(u,e+1,t))};return t.push(i),Il(i,s),i},Pl=(s,e)=>{lt=0;const t=[],n=Cs(s.Plan,0,t),a={"Planning Time":s["Planning Time"],"Execution Time":s["Execution Time"],totalCost:n["Total Cost"],triggersInfo:(s.Triggers??[]).map(Zt),jitInfo:[],settingsInfo:s.Settings?Object.entries(s.Settings).map(([r,i])=>`${r}: ${Zt(i)}`):[],rawText:e};Ol(t);const o=[...t].sort((r,i)=>r.index-i.index);return{root:n,summary:a,allNodes:o}},ql=s=>{const e={triggersInfo:[],jitInfo:[],settingsInfo:[],rawText:s},t=s.match(/Planning Time:\s*(\d+\.?\d*)\s*ms/i),n=s.match(/Execution Time:\s*(\d+\.?\d*)\s*ms/i);return t&&(e["Planning Time"]=Number.parseFloat(t[1])),n&&(e["Execution Time"]=Number.parseFloat(n[1])),{root:null,summary:e,allNodes:[]}},bt=s=>{if(!s)return null;if(typeof s=="string")try{return bt(JSON.parse(s))}catch{return null}return Array.isArray(s)?s.length?bt(s[0]):null:typeof s=="object"&&s!==null&&"Plan"in s&&typeof s.Plan=="object"?s:null},Ss=(s,e)=>{var t;if(!(s!=null&&s.length))return null;if(Array.isArray(s[0]))return s[0][0]??null;if(typeof s[0]=="object"&&s[0]!==null){const n=s[0],a=Object.keys(n).find(o=>o.toUpperCase()==="QUERY PLAN")||((t=e==null?void 0:e[0])==null?void 0:t.name)||Object.keys(n)[0];return a?n[a]??null:null}return s[0]??null},Dl=(s,e)=>{const t=Ss(s,e);return t==null?"":typeof t=="string"?t:JSON.stringify(t,null,2)},Fl=s=>{const e=typeof s=="string"?s:JSON.stringify(s,null,2),t=bt(s);return t?Pl(t,e):ql(e)},Vl={class:"h-full min-h-0"},Bl={key:0,class:"h-full flex flex-col items-center justify-center gap-2 text-muted-foreground"},jl=X({__name:"ResultTabExplainView",props:{activeTab:{}},setup(s){const e=s,t=K(st.GRID),n=K(!1),a=P(()=>Ss(e.activeTab.result,e.activeTab.metadata.fieldDefs)),o=P(()=>Dl(e.activeTab.result,e.activeTab.metadata.fieldDefs)),r=P(()=>Fl(a.value)),i=P(()=>{const u=r.value.allNodes,c=u.filter(d=>d.isExpensive),m=u.filter(d=>d.isSlowest);return{planningTime:r.value.summary["Planning Time"],executionTime:r.value.summary["Execution Time"],nodeCount:u.length,expensiveCount:c.length,slowCount:m.length,allNodes:u,expensiveNodes:c,slowNodes:m}});return(u,c)=>{const m=qr,d=fe,y=Yr,x=zl,S=Ll;return v(),A("div",Vl,[l(n)?(v(),A("div",{key:0,class:"fixed inset-0 z-40 bg-background/70 backdrop-blur-[1px]",onClick:c[0]||(c[0]=b=>n.value=!1)})):Q("",!0),f("div",{class:pe(["flex flex-col",l(n)?"fixed z-50 left-1/2 top-1/2 h-[90vh] w-[95vw] -translate-x-1/2 -translate-y-1/2 rounded-xl border bg-background shadow-2xl":"h-full min-h-0 overflow-hidden"])},[p(m,{modelValue:l(t),"onUpdate:modelValue":c[1]||(c[1]=b=>Ae(t)?t.value=b:null),"summary-stats":l(i),"is-expanded":l(n),onToggleExpand:c[2]||(c[2]=b=>n.value=!l(n))},null,8,["modelValue","summary-stats","is-expanded"]),f("div",{class:pe(["flex-1 min-h-0",l(n)?"overflow-hidden":"overflow-y-auto"])},[l(r).root?l(t)===l(st).GRID?(v(),I(y,{key:1,nodes:l(r).allNodes},null,8,["nodes"])):l(t)===l(st).TIMELINE?(v(),I(x,{key:2,nodes:l(r).allNodes,"total-time":l(i).executionTime},null,8,["nodes","total-time"])):(v(),I(S,{key:3,"raw-text":l(o)},null,8,["raw-text"])):(v(),A("div",Bl,[p(d,{name:"hugeicons:alert-02",class:"size-8 opacity-50"}),c[3]||(c[3]=f("p",{class:"text-sm"},"Could not parse execution plan",-1))]))],2)],2)])}}}),Ul={class:"h-full flex w-full"},Hl={key:0,class:"flex mt-7 [writing-mode:vertical-rl]"},Ql=["onClick"],Wl={class:"h-full w-full flex flex-col"},Kl={class:"flex items-end overflow-x-auto pt-0.5"},Gl=["onClick","onContextmenu"],Yl={class:"truncate text-xs font-medium"},Jl=["onClick"],Zl={class:"h-full w-full border rounded-md rounded-tl-none overflow-hidden"},Xl=X({__name:"RawQueryResultTabs",props:{executedResults:{},activeTabId:{},executeLoading:{type:Boolean},isStreaming:{type:Boolean}},emits:["update:activeTab","close-tab","close-other-tabs","close-tabs-to-right","update:view"],setup(s,{emit:e}){const t=s,n=e,a=K(null),o=P(()=>{if(!a.value)return!1;const g=Array.from(t.executedResults.keys()),C=g.indexOf(a.value);return C>=0&&C<g.length-1}),r=[{value:"result",label:"Result"},{value:"explain",label:"Explain"},{value:"raw",label:"Raw"},{value:"info",label:"Info"},{value:"error",label:"Errors"},{value:"agent",label:"Agent"}],i=new Map,u=Qe([]);let c=null;const m=P(()=>t.activeTabId&&t.executedResults.get(t.activeTabId)||null),d=P(()=>{var g;return((g=m.value)==null?void 0:g.view)||"result"}),y=P(()=>{var g;return(g=m.value)!=null&&g.metadata.fieldDefs?m.value.metadata.fieldDefs.map((C,E)=>{var $;return{index:E,originalName:C.name,aliasFieldName:C.name,queryFieldName:C.name,isPrimaryKey:!1,isForeignKey:!1,type:(($=C.dataTypeID)==null?void 0:$.toString())||"unknown",tableName:""}}):[]}),x=g=>{var _;const C=((_=g.result)==null?void 0:_.length)||0,E=`${g.id}_${C}`;if(i.has(E))return i.get(E);const $=g.metadata.fieldDefs||[],L=Ta(g.result||[],$);i.set(E,L);for(const B of i.keys())B.startsWith(`${g.id}_`)&&B!==E&&i.delete(B);return L};de(m,g=>{c&&cancelAnimationFrame(c),c=requestAnimationFrame(()=>{u.value=g?x(g):[],c=null})},{immediate:!0}),dn(()=>{c&&cancelAnimationFrame(c)});const S=g=>{t.activeTabId&&n("update:view",t.activeTabId,g)},b=g=>!!g.metadata.executeErrors;return(g,C)=>{const E=fe,$=ie,L=ue,_=ce,B=cs,q=Ke;return v(),A("div",Ul,[l(m)?(v(),A("div",Hl,[(v(),A(ee,null,ne(r,T=>f("div",{key:T.value,onClick:H=>b(l(m))&&(T.value==="result"||T.value==="raw")||T.value==="error"&&!b(l(m))?null:S(T.value),class:pe(l(et)("border px-1 text-xs font-normal transition-colors",l(d)===T.value?"bg-muted border-transparent border-r-border":"border-transparent",T.value==="error"&&b(l(m))?"hover:bg-muted cursor-pointer":T.value==="explain"&&!l(m).metadata.statementQuery.startsWith("EXPLAIN")?null:"",T.value==="error"&&!b(l(m))?"opacity-40 cursor-not-allowed":"",(T.value==="result"||T.value==="raw")&&b(l(m))?"opacity-40 cursor-not-allowed":"",T.value==="explain"&&!l(m).metadata.statementQuery.startsWith("EXPLAIN")?"opacity-40 cursor-not-allowed":"",T.value==="error"&&!b(l(m))||(T.value==="result"||T.value==="raw")&&b(l(m))||T.value==="explain"&&!l(m).metadata.statementQuery.startsWith("EXPLAIN")?"":"hover:bg-muted cursor-pointer"))},D(T.label),11,Ql)),64))])):Q("",!0),f("div",Wl,[f("div",Kl,[p(l(fs),null,{default:h(()=>[p(l(hs),{class:"flex items-end"},{default:h(()=>[(v(!0),A(ee,null,ne(g.executedResults,([T,H])=>(v(),I(_,{key:T},{default:h(()=>[p($,{"as-child":""},{default:h(()=>[f("div",{onClick:W=>g.$emit("update:activeTab",T),onContextmenu:W=>a.value=T,class:pe(l(et)("h-6! flex gap-0.5 rounded-t-md max-w-44 justify-start! items-center font-normal p-1! hover:[&>div]:opacity-100 transition-all duration-200 border rounded-b-none cursor-pointer relative",T===g.activeTabId?"border-b-transparent bg-background dark:bg-accent":"border-transparent bg-muted/30"))},[p(E,{name:b(H)?"hugeicons:alert-02":"hugeicons:sql",class:pe(l(et)("min-w-4",b(H)?"text-red-500":""))},null,8,["name","class"]),f("div",Yl," Query "+D(H.seqIndex)+" - "+D(H.metadata.statementQuery),1),f("div",{onClick:kt(W=>g.$emit("close-tab",T),["stop"]),class:"hover:bg-accent h-5 w-5 flex items-center justify-center rounded-full opacity-0"},[p(E,{name:"lucide:x",class:"stroke-[2.5]! size-3!"})],8,Jl)],42,Gl)]),_:2},1024),p(L,{class:"max-w-xl"},{default:h(()=>[f("p",null,D(H.metadata.statementQuery),1)]),_:2},1024)]),_:2},1024))),128))]),_:1}),l(a)?(v(),I(l(vs),{key:0,hideWhenDetached:"",class:"w-56"},{default:h(()=>[p(l(tt),{onSelect:C[0]||(C[0]=T=>g.$emit("close-tab",l(a)))},{default:h(()=>C[4]||(C[4]=[O(" Close ")])),_:1}),p(l(tt),{onSelect:C[1]||(C[1]=T=>g.$emit("close-other-tabs",l(a)))},{default:h(()=>C[5]||(C[5]=[O(" Close Others ")])),_:1}),p(l(tt),{disabled:!l(o),onSelect:C[2]||(C[2]=T=>g.$emit("close-tabs-to-right",l(a)))},{default:h(()=>C[6]||(C[6]=[O(" Close to the Right ")])),_:1},8,["disabled"])]),_:1})):Q("",!0)]),_:1})]),f("div",Zl,[g.executeLoading&&g.activeTabId?(v(),I(B,{key:0,visible:""})):Q("",!0),l(m)?l(m)&&l(d)==="result"?(v(),I(Tr,{"active-tab":l(m),"active-tab-columns":l(y),"formatted-data":l(u),"execute-loading":g.executeLoading,"is-streaming":g.isStreaming,key:l(m).id},null,8,["active-tab","active-tab-columns","formatted-data","execute-loading","is-streaming"])):l(m)&&l(d)==="explain"?(v(),I(jl,{key:3,"active-tab":l(m)},null,8,["active-tab"])):l(m)&&l(d)==="raw"?(v(),I(wr,{key:4,"formatted-data":l(u),"execute-loading":g.executeLoading,"is-streaming":g.isStreaming},null,8,["formatted-data","execute-loading","is-streaming"])):l(m)&&l(d)==="info"?(v(),I(Cr,{key:5,"active-tab":l(m)},null,8,["active-tab"])):l(m)&&l(d)==="error"?(v(),I(nr,{key:6,"active-tab":l(m),onOnChangeView:C[3]||(C[3]=T=>S(T))},null,8,["active-tab"])):l(m)&&l(d)==="agent"?(v(),I(Qa,{key:7,"active-tab":l(m)},null,8,["active-tab"])):Q("",!0):(v(),I(q,{key:1,title:"No results",desc:"Execute a query to see results"}))])])])}}});function ei({query:s,dbConnectionString:e,type:t,providerKind:n,managedSqlite:a,params:o,onMeta:r,onRows:i,onDone:u,onError:c}){const m=new AbortController;let d=0;return(async()=>{var x;try{const S=await fetch("/api/query/raw-execute-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:s,dbConnectionString:e,type:t,providerKind:n,managedSqlite:a,params:o||{}}),signal:m.signal});if(!S.ok){const E=await S.text();c==null||c(E||`HTTP ${S.status}`);return}const b=(x=S.body)==null?void 0:x.getReader();if(!b){c==null||c("No readable stream available");return}const g=new TextDecoder;let C="";for(;;){const{done:E,value:$}=await b.read();if(E)break;C+=g.decode($,{stream:!0});const L=C.split(`
|
|
11
|
-
`);C=L.pop()||"";for(const _ of L){const B=_.trim();if(B)try{const q=JSON.parse(B);switch(q.type){case"meta":r==null||r(q.fields,q.command);break;case"rows":d+=q.data.length,i==null||i(q.data,d);break;case"done":u==null||u(q.rowCount,q.queryTime);break;case"error":c==null||c(q.message,q.error);break}}catch{console.warn("[StreamingQuery] Malformed NDJSON line:",B)}}}if(C.trim())try{const E=JSON.parse(C.trim());E.type==="done"?u==null||u(E.rowCount,E.queryTime):E.type==="error"&&(c==null||c(E.message))}catch{}}catch(S){if(S.name==="AbortError")return;c==null||c(S.message||"Stream connection failed")}})(),{abort:()=>m.abort()}}const Xt=s=>{if(s===null||typeof s!="object")return!1;const e=Object.getPrototypeOf(s);return e===Object.prototype||e===null},Xe=s=>s.map(e=>({name:e})),ti=s=>{if(Array.isArray(s)){if(s.every(e=>Xt(e))){const e=s,t=Array.from(new Set(e.flatMap(n=>Object.keys(n))));return{rows:e,fields:Xe(t)}}return{rows:s.map((e,t)=>({index:t,value:e})),fields:Xe(["index","value"])}}return Xt(s)?{rows:[s],fields:Xe(Object.keys(s))}:{rows:[{value:s}],fields:Xe(["value"])}};function si({getEditorView:s,connection:e,redisDatabaseIndex:t,fileVariables:n,fieldDefs:a,resultTabs:o,buildExplainAnalyzePrefix:r,beforeExecute:i}){const u=Qe([]),c=Qe({}),m=Qe(0),d=mn({isHaveOneExecute:!1,executeLoading:!1,isStreaming:!1,streamingRowCount:0,queryTime:0,executeErrors:void 0,currentStatementQuery:""});let y=null;const x=async({currentStatements:C,queryPrefix:E})=>{var F,G,j,te,ge,he,Me,Ne,Ie,_e,Oe,me,Re,Ee,oe,Pe,w,k,M,z,N;if(!C.length)return;const $=C[0];if(i&&!await i())return;d.isHaveOneExecute=!0,d.currentStatementQuery=$.text;let L=$.text,_={};try{_=JSON.parse(n.value||"{}")}catch(R){console.log("fileParameters error::",R)}let B="result";const q=((F=e.value)==null?void 0:F.type)===Z.REDIS;E&&!q&&(L=`${E} ${L}`,E.startsWith("EXPLAIN")&&(B="explain")),a.value=[],u.value=[],c.value={},d.executeLoading=!0,d.isStreaming=!1,d.streamingRowCount=0,y&&(y(),y=null),m.value++;const T={id:pn(),metadata:{queryTime:0,statementQuery:L,executedAt:new Date,executeErrors:void 0,fieldDefs:void 0,connection:void 0},result:[],view:B,seqIndex:m.value};o.addResultTab(T),So(s());const H=[];if(q){try{const R=Date.now(),V=await $fetch("/api/redis/workbench/execute",{method:"POST",body:{method:(G=e.value)==null?void 0:G.method,stringConnection:(j=e.value)==null?void 0:j.connectionString,host:(te=e.value)==null?void 0:te.host,port:(ge=e.value)==null?void 0:ge.port,username:(he=e.value)==null?void 0:he.username,password:(Me=e.value)==null?void 0:Me.password,database:(Ne=e.value)==null?void 0:Ne.database,databaseIndex:t==null?void 0:t.value,ssl:(Ie=e.value)==null?void 0:Ie.ssl,ssh:(_e=e.value)==null?void 0:_e.ssh,command:L}}),Y=ti(V.result),se=Date.now()-R;a.value=Y.fields,T.metadata.fieldDefs=Y.fields,T.metadata.connection=e.value,T.metadata.command=((Oe=V.command)==null?void 0:Oe[0])||((me=L.trim().split(/\s+/)[0])==null?void 0:me.toUpperCase())||"REDIS",T.metadata.queryTime=se,T.metadata.rowCount=Y.rows.length,T.result=Y.rows,c.value={rows:Y.rows,fields:Y.fields,queryTime:se},u.value=Y.rows,d.executeLoading=!1,d.isStreaming=!1,d.streamingRowCount=Y.rows.length,d.queryTime=se,d.executeErrors=void 0,o.refreshResultTab(T.id,T)}catch(R){const V=((Re=R==null?void 0:R.data)==null?void 0:Re.message)||(R==null?void 0:R.message)||"Failed to execute Redis command.";d.executeLoading=!1,d.isStreaming=!1,d.executeErrors={message:V,data:(R==null?void 0:R.data)||{message:V}},T.metadata.executeErrors=d.executeErrors,T.view="error",o.refreshResultTab(T.id,T)}return}if(E&&B==="explain"){try{const R=await $fetch("/api/query/raw-execute",{method:"POST",body:{dbConnectionString:(Ee=e.value)==null?void 0:Ee.connectionString,type:(oe=e.value)==null?void 0:oe.type,providerKind:(Pe=e.value)==null?void 0:Pe.providerKind,managedSqlite:(w=e.value)==null?void 0:w.managedSqlite,query:L,params:_},onResponseError:({response:V})=>{var be,qe;const Y=(be=V._data)==null?void 0:be.data,se=s();se&&Y&&Wt({editorView:se,originalSql:$.text,statementFrom:Number($.from),fileParameters:_,errorDetail:Y,clientType:((qe=e.value)==null?void 0:qe.type)||Z.POSTGRES,queryPrefix:E})}});a.value=R.fields,T.metadata.fieldDefs=R.fields,T.result=R.rows,T.metadata.queryTime=R.queryTime||0,T.metadata.connection=e.value,c.value=R,u.value=R.rows,d.executeErrors=void 0,d.queryTime=R.queryTime||0}catch(R){d.executeErrors=R.data,T.metadata.executeErrors=R.data,T.view="error"}d.executeLoading=!1,o.refreshResultTab(T.id,T);return}d.isStreaming=!0,d.executeLoading=!1;const{abort:W}=ei({query:L,dbConnectionString:((k=e.value)==null?void 0:k.connectionString)||"",type:(M=e.value)==null?void 0:M.type,providerKind:(z=e.value)==null?void 0:z.providerKind,managedSqlite:(N=e.value)==null?void 0:N.managedSqlite,params:_,onMeta:(R,V)=>{a.value=R,T.metadata.fieldDefs=R,T.metadata.connection=e.value,T.metadata.command=V,o.refreshResultTab(T.id,T)},onRows:(R,V)=>{H.push(...R),d.streamingRowCount=V,T.result=H,T.metadata.rowCount=V,u.value=H,o.refreshResultTab(T.id,T)},onDone:(R,V)=>{d.executeLoading=!1,d.isStreaming=!1,d.queryTime=V,d.executeErrors=void 0,d.streamingRowCount=R,T.metadata.queryTime=V,T.metadata.rowCount=R,c.value={rows:T.result,fields:a.value,queryTime:V},o.refreshResultTab(T.id,T),y=null},onError:(R,V)=>{var be;const Y={message:R,data:V||{message:R}};d.executeLoading=!1,d.isStreaming=!1,d.executeErrors=Y,T.metadata.executeErrors=Y,T.view="error";const se=s();se&&V&&Wt({editorView:se,originalSql:$.text,statementFrom:Number($.from),fileParameters:_,errorDetail:V,clientType:((be=e.value)==null?void 0:be.type)||Z.POSTGRES}),o.refreshResultTab(T.id,T),y=null}});y=W};return{currentRawQueryResult:u,rawResponse:c,queryProcessState:d,executeCurrentStatement:x,onExecuteCurrent:()=>{const C=s();if(!C)return;const{currentStatements:E}=rt(C);x({currentStatements:E})},onExplainAnalyzeCurrent:()=>{const C=s();if(!C)return;const{currentStatements:E}=rt(C);x({currentStatements:E,queryPrefix:r()})},cancelStreamingQuery:()=>{y&&(y(),y=null,d.executeLoading=!1,d.isStreaming=!1)}}}function ni(){const s=K({BUFFERS:!0,COSTS:!0,GENERIC_PLAN:!1,MEMORY:!1,SETTINGS:!0,SUMMARY:!0,TIMING:!0,VERBOSE:!0,WAL:!0}),e=K("NONE"),t=r=>{s.value[r]=!s.value[r]},n=r=>{e.value=r};return{explainAnalyzeOptionItems:P(()=>Dt.filter(r=>r.key!=="SERIALIZE").map(r=>({key:r.key,label:r.label,checked:s.value[r.key]}))),serializeMode:e,toggleExplainOption:t,setSerializeMode:n,buildExplainAnalyzePrefix:()=>{const r=Dt.filter(c=>c.key!=="SERIALIZE"&&s.value[c.key]).map(c=>c.key).flatMap(c=>c==="GENERIC_PLAN"?[]:[c]),i=e.value==="NONE"?[]:[`SERIALIZE ${e.value}`];return`EXPLAIN (${["ANALYZE","FORMAT JSON",...r,...i].join(", ")})`}}}function oi(){const s=Qe(new Map),e=K(null),t=m=>{const d=new Map;d.set(m.id,m),s.value.forEach((y,x)=>{d.set(x,y)}),s.value=d,e.value=m.id},n=(m,d)=>{const y=new Map(s.value);y.set(m,{...d}),s.value=y};return{executedResults:s,activeResultTabId:e,addResultTab:t,refreshResultTab:n,setActiveResultTab:m=>{s.value.has(m)&&(e.value=m)},closeResultTab:m=>{const d=new Map(s.value);if(d.delete(m),s.value=d,e.value===m){const y=Array.from(d.keys());e.value=y.length>0?y[y.length-1]:null}},updateResultTabView:(m,d)=>{const y=s.value.get(m);y&&n(m,{...y,view:d})},closeOtherResultTabs:m=>{const d=s.value.get(m);if(!d)return;const y=new Map;y.set(m,d),s.value=y,e.value=m},closeResultTabsToRight:m=>{const d=Array.from(s.value.keys()),y=d.indexOf(m);if(y<0)return;const x=new Map;for(let S=0;S<=y;S++){const b=d[S],g=s.value.get(b);g&&x.set(b,g)}s.value=x,x.has(e.value||"")||(e.value=m)},updateResultTabResult:(m,d)=>{const x=new Map(s.value).get(m);x&&(x.result=d)}}}function He(s,...e){}const ai=s=>{let e;return async()=>(e||(e=s()),await e)};class Ot{constructor(e={}){ae(this,"opts");ae(this,"parser",null);ae(this,"offsetRecord",{});ae(this,"getParser",ai(async()=>{if(this.parser)return this.parser;const e=await ds(()=>import("./ByiJDSw8.js").then(n=>n.i),__vite__mapDeps([0,1,2]),import.meta.url),{Parser:t}=e.default||e;return this.parser=new t,this.parser}));this.opts=e}async parse(e,t){var o,r;this.offsetRecord={};const n=(r=(o=this.opts).getParserOptions)==null?void 0:r.call(o,t.state),a=await this.sanitizeSql(e,n);try{const i=await this.getParser();if((n==null?void 0:n.database)==="DuckDB")return this.parseWithDuckDBSupport(a,n);const u=i.astify(a,n);return{success:!0,errors:[],ast:u}}catch(i){return{success:!1,errors:[this.extractErrorInfo(i,a)]}}}async sanitizeSql(e,t){if(t!=null&&t.ignoreBrackets){const{sql:n,offsetRecord:a}=ii(e);return this.offsetRecord=a,n}return e}async parseWithDuckDBSupport(e,t){const n=await this.getParser(),a=ri(e).trimStart().toLowerCase();if(a.startsWith("from")||a.includes("macro"))return He(),{success:!0,errors:[]};let o=e;a.includes("create or replace table")&&(this.offsetRecord[e.indexOf("create or replace table")]=-11,o=e.replace(/create or replace table/i,"create table"));try{const r={...t,database:"PostgreSQL"},i=n.astify(o,r);return{success:!0,errors:[],ast:i}}catch(r){return{success:!1,errors:[this.extractErrorInfo(r,e)]}}}extractErrorInfo(e,t){var i,u,c;let n=1,a=1;const o=(e==null?void 0:e.message)||"SQL parsing error",r=e;if(r!=null&&r.location)n=((i=r.location.start)==null?void 0:i.line)||1,a=((u=r.location.start)==null?void 0:u.column)||1;else if(r!=null&&r.hash)n=r.hash.line||1,a=((c=r.hash.loc)==null?void 0:c.first_column)||1;else{const m=o.match(/line (\d+)/i),d=o.match(/column (\d+)/i);m!=null&&m[1]&&(n=parseInt(m[1],10)),d!=null&&d[1]&&(a=parseInt(d[1],10))}for(const[m,d]of Object.entries(this.offsetRecord))a>parseInt(m,10)&&(a-=d);return a>t.length&&(a=t.length),{message:this.cleanErrorMessage(o),line:Math.max(1,n),column:a,severity:"error"}}cleanErrorMessage(e){return e.replace(/^Error: /,"").replace(/Expected .* but .* found\./i,t=>t.replace(/but .* found/,"found unexpected token")).trim()}async validateSql(e,t){return(await this.parse(e,t)).errors}async extractTableReferences(e,t){var a,o;const n=t?(o=(a=this.opts).getParserOptions)==null?void 0:o.call(a,t.state):void 0;try{return(await this.getParser()).tableList(e,n).map(u=>{const c=u.split("::");return c[c.length-1]||u})}catch{return[]}}async extractColumnReferences(e,t){var a,o;const n=t!=null&&t.state?(o=(a=this.opts).getParserOptions)==null?void 0:o.call(a,t.state):void 0;try{return(await this.getParser()).columnList(e,n).map(c=>{const m=c.split("::");return m[m.length-1]||c})}catch{return[]}}}function ri(s,e=["/*","--"]){const t=[];if(e.includes("/*")&&t.push("/\\*[\\s\\S]*?\\*/"),e.includes("--")&&t.push("--[^\\n]*"),t.length===0)return s;const n=new RegExp(`^\\s*(${t.join("|")})\\s*`,"");let a=s,o="";for(;a!==o;)o=a,a=a.replace(n,"");return a}const li=2;function ii(s){const e={};return{sql:s.replace(/("(?:[^"\\]|\\.)*")|('(?:[^'\\]|\\.)*')|(\{[^}]*\})/g,(n,a,o,r,i)=>a||o?n:r?(e[i]=li,`'${r}'`):n),offsetRecord:e}}const ui=750;function ci(s,e){const n=e.line(s.line).from+Math.max(0,s.column-1),a=n+1;return{from:n,to:a,severity:s.severity,message:s.message,source:"sql-parser"}}function di(s={}){const e=s.parser||new Ot;return rs(async t=>{const n=t.state.doc,a=n.toString();return a.trim()?(await e.validateSql(a,{state:t.state})).map(r=>ci(r,n)):[]},{delay:s.delay||ui})}function Le(s){return typeof s=="object"&&!Array.isArray(s)&&!("self"in s)}function we(s){return typeof s=="object"&&!Array.isArray(s)&&"self"in s&&"children"in s}function ye(s){return Array.isArray(s)}function re(s,e,t,n){const a=s.length;if(e==="string"||e==="completion"&&n&&ye(n))return"column";if(e==="namespace"&&t){if(ye(t))return"table";if(Le(t))return Object.values(t).some(r=>ye(r)||we(r)&&ye(r.children))?a<=1?"database":"schema":a===0?"database":"namespace"}if(e==="completion"&&t)return ye(t)?"table":(Le(t)&&Object.values(t).some(r=>ye(r)||we(r)&&ye(r.children)),a<=1?"database":"schema");switch(a){case 0:return"database";case 1:return"schema";default:return"namespace"}}function ws(s,e,t={}){const{maxDepth:n=10}=t;if(e===""&&we(s)){const o=re([],"completion",s.children);return{completion:s.self,path:[],type:"completion",semanticType:o,namespace:s.children}}const a=e.split(".").filter(o=>o.length>0);return a.length===0||a.length>n?null:Ct(s,a,[],t)}function Ct(s,e,t,n,a){if(e.length===0){if(we(s)){const c=re(t,"completion",s.children,a);return{completion:s.self,path:t,type:"completion",semanticType:c,namespace:s.children}}const u=re(t,"namespace",s,a);return{path:t,type:"namespace",semanticType:u,namespace:s}}const[o,...r]=e,{caseSensitive:i=!1}=n;if(!o)return null;if(Le(s)){const u=i?Object.keys(s).find(c=>c===o):Object.keys(s).find(c=>c.toLowerCase()===o.toLowerCase());if(u){const c=s[u];if(c)return Ct(c,r,[...t,u],n,s)}}else{if(we(s))return Ct(s.children,e,t,n,s);if(ye(s)){for(const u of s)if(typeof u=="string"){if((i?u===o:u.toLowerCase()===o.toLowerCase())&&r.length===0){const m=re([...t,u],"string",void 0,s);return{value:u,path:[...t,u],type:"string",semanticType:m}}}else if((i?u.label===o:u.label.toLowerCase()===o.toLowerCase())&&r.length===0){const m=re([...t,u.label],"completion",void 0,s);return{completion:u,path:[...t,u.label],type:"completion",semanticType:m}}}}return null}function mi(s,e,t={}){const n=[];if(e.includes(".")){const a=e.lastIndexOf("."),o=e.substring(0,a),r=e.substring(a+1),i=ws(s,o,t);if(i!=null&&i.namespace)return St(i.namespace,r,i.path,t)}else return St(s,e,[],t);return n}function St(s,e,t,n){const a=[],{caseSensitive:o=!1,allowPartialMatch:r=!0}=n;if(Le(s)){for(const[i,u]of Object.entries(s))if(r?o?i.startsWith(e):i.toLowerCase().startsWith(e.toLowerCase()):o?i===e:i.toLowerCase()===e.toLowerCase())if(we(u)){const m=re([...t,i],"completion",u.children,s);a.push({completion:u.self,path:[...t,i],type:"completion",semanticType:m,namespace:u.children})}else{const m=re([...t,i],"namespace",u,s);a.push({path:[...t,i],type:"namespace",semanticType:m,namespace:u})}}else if(we(s)){if(r?o?s.self.label.startsWith(e):s.self.label.toLowerCase().startsWith(e.toLowerCase()):o?s.self.label===e:s.self.label.toLowerCase()===e.toLowerCase()){const u=re([...t,s.self.label],"completion",s.children);a.push({completion:s.self,path:[...t,s.self.label],type:"completion",semanticType:u,namespace:s.children})}a.push(...St(s.children,e,t,n))}else if(ye(s)){for(const i of s)if(typeof i=="string"){if(r?o?i.startsWith(e):i.toLowerCase().startsWith(e.toLowerCase()):o?i===e:i.toLowerCase()===e.toLowerCase()){const c=re([...t,i],"string",void 0,s);a.push({value:i,path:[...t,i],type:"string",semanticType:c})}}else if(r?o?i.label.startsWith(e):i.label.toLowerCase().startsWith(e.toLowerCase()):o?i.label===e:i.label.toLowerCase()===e.toLowerCase()){const c=re([...t,i.label],"completion",void 0,s);a.push({completion:i,path:[...t,i.label],type:"completion",semanticType:c})}}return a}function pi(s,e,t={}){const n=[],{maxDepth:a=10}=t;nt(s,[],n,a);const{caseSensitive:o=!1}=t;return n.filter(i=>i.path.some(u=>o?u===e:u.toLowerCase()===e.toLowerCase())).sort((i,u)=>{var d,y;const c=o?i.path[i.path.length-1]===e:((d=i.path[i.path.length-1])==null?void 0:d.toLowerCase())===e.toLowerCase(),m=o?u.path[u.path.length-1]===e:((y=u.path[u.path.length-1])==null?void 0:y.toLowerCase())===e.toLowerCase();return c&&!m?-1:!c&&m?1:i.path.length-u.path.length})}function nt(s,e,t,n){if(!(e.length>=n)){if(Le(s))for(const[a,o]of Object.entries(s)){const r=[...e,a];if(we(o)){const i=re(r,"completion",o.children,s);t.push({completion:o.self,path:r,type:"completion",semanticType:i,namespace:o.children}),nt(o.children,r,t,n)}else{const i=re(r,"namespace",o,s);t.push({path:r,type:"namespace",semanticType:i,namespace:o}),nt(o,r,t,n)}}else if(we(s)){const a=re(e,"completion",s.children);t.push({completion:s.self,path:e,type:"completion",semanticType:a,namespace:s.children}),nt(s.children,e,t,n)}else if(ye(s))for(const a of s)if(typeof a=="string"){const o=re([...e,a],"string",void 0,s);t.push({value:a,path:[...e,a],type:"string",semanticType:o})}else{const o=re([...e,a.label],"completion",void 0,s);t.push({completion:a,path:[...e,a.label],type:"completion",semanticType:o})}}}function es(s,e,t={}){const{enableFuzzySearch:n=!1}=t,a=ws(s,e,t);if(a)return a;const o=mi(s,e,t);if(o.length>0)return o[0]||null;if(n){const r=pi(s,e,t);if(r.length>0)return r[0]||null}return null}function _s(s,e){if(e.size===0)return{};if(Le(s)){const t={};for(const[n,a]of Object.entries(s))if(Array.from(e).some(r=>r.toLowerCase()===n.toLowerCase()))t[n]=a;else if(Le(a)){const r=_s(a,e);Object.keys(r).length>0&&(t[n]=r)}return t}return s}function fi(s={}){const{schema:e={},keywords:t={},hoverTime:n=300,enableKeywords:a=!0,enableTables:o=!0,enableColumns:r=!0,enableFuzzySearch:i=!0,parser:u=new Ot,tooltipRender:c,tooltipRenderers:m={}}=s;let d=null;return fn(async(y,x,S)=>{const{from:b,to:g,text:C}=y.state.doc.lineAt(x);let E=x,$=x;d===null&&(d=typeof t=="function"?t(y):Promise.resolve(t));const L=await d;for(;E>b&&/[\w.]/.test(C[E-b-1]??"");)E--;for(;$<g&&/[\w.]/.test(C[$-b]??"");)$++;if(E===x&&S<0||$===x&&S>0)return null;const _=C.slice(E-b,$-b).toLowerCase();if(!_||_.length===0)return null;const B=typeof e=="function"?e(y):e;let q=null;if(He(),!q&&a&&L[_]){He("keywordResult",_,L[_]);const T={keyword:_,info:L[_]};q={word:_,view:y,pos:x,tooltipType:"keyword",keywordData:T}}if(!q&&(o||r)&&B){const T=y.state.doc.toString(),H=await u.extractTableReferences(T),W=new Set(H.map(j=>j.toLowerCase())),F=_s(B,W);let G=es(F,_,{enableFuzzySearch:i});if(!G&&W.size===0&&(G=es(B,_,{enableFuzzySearch:i})),G){He("namespaceResult (query-aware)",_,G,"tableRefs:",Array.from(W));const j={item:G,word:_,resolvedSchema:W.size>0?F:B};q={word:_,view:y,pos:x,tooltipType:"namespace",namespaceData:j}}else He("No namespace item found for:",_)}return q?{pos:E,end:$,above:!0,create(T){if(c){const F=c(_,T,x);if(F)return{dom:F}}let H=null;if(q.tooltipType==="keyword"&&q.keywordData)H=m.keyword?m.keyword(q.keywordData):vi(q.keywordData);else if(q.tooltipType==="namespace"&&q.namespaceData){const F=q.namespaceData,{semanticType:G}=F.item;G==="table"&&m.table?H=m.table(F):G==="column"&&m.column?H=m.column(F):(G==="database"||G==="schema"||G==="namespace")&&m.namespace?H=m.namespace(F):H=hi(F.item)}if(!H)return{dom:document.createElement("div")};const W=document.createElement("div");return W.className="cm-sql-hover-tooltip",W.innerHTML=H,{dom:W}}}:null},{hoverTime:n})}function hi(s){var a,o,r,i,u,c,m;const e=s.path.join("."),t=((a=s.completion)==null?void 0:a.label)||s.value||s.path[s.path.length-1]||"unknown";let n=`<div class="sql-hover-${s.semanticType}">`;switch(n+=`<div class="sql-hover-header"><strong>${t}</strong> <span class="sql-hover-type">${s.semanticType}</span></div>`,s.semanticType){case"database":if(n+=`<div class="sql-hover-description">Database${(o=s.completion)!=null&&o.detail?`: ${s.completion.detail}`:""}</div>`,s.namespace){const d=ot(s.namespace);d>0&&(n+=`<div class="sql-hover-children">Contains ${d} schema${d!==1?"s":""}</div>`)}break;case"schema":if(n+=`<div class="sql-hover-description">Schema${(r=s.completion)!=null&&r.detail?`: ${s.completion.detail}`:""}</div>`,e&&(n+=`<div class="sql-hover-path"><strong>Path:</strong> <code>${e}</code></div>`),s.namespace){const d=ot(s.namespace);d>0&&(n+=`<div class="sql-hover-children">Contains ${d} table${d!==1?"s":""}</div>`)}break;case"table":if(n+=`<div class="sql-hover-description">Table${(i=s.completion)!=null&&i.detail?`: ${s.completion.detail}`:""}</div>`,e){const d=s.path;d.length>1&&(n+=`<div class="sql-hover-path"><strong>Schema:</strong> <code>${d.slice(0,-1).join(".")}</code></div>`)}if(s.namespace&&ye(s.namespace)){const d=s.namespace;if(d.length>0){n+=`<div class="sql-hover-columns"><strong>Columns (${d.length}):</strong><br>`;const x=d.slice(0,8).map(S=>typeof S=="string"?S:S.label);n+=x.map(S=>`<code>${S}</code>`).join(", "),d.length>8&&(n+=`, <em>and ${d.length-8} more...</em>`),n+="</div>"}}break;case"column":if(n+=`<div class="sql-hover-description">Column${(u=s.completion)!=null&&u.detail?`: ${s.completion.detail}`:""}</div>`,e){const d=s.path;d.length>1&&(n+=`<div class="sql-hover-path"><strong>Table:</strong> <code>${d.slice(0,-1).join(".")}</code></div>`)}break;default:if(n+=`<div class="sql-hover-description">Namespace${(c=s.completion)!=null&&c.detail?`: ${s.completion.detail}`:""}</div>`,e&&(n+=`<div class="sql-hover-path"><strong>Path:</strong> <code>${e}</code></div>`),s.namespace){const d=ot(s.namespace);d>0&&(n+=`<div class="sql-hover-children">Contains ${d} item${d!==1?"s":""}</div>`)}break}return(m=s.completion)!=null&&m.info&&typeof s.completion.info=="string"&&(n+=`<div class="sql-hover-info">${s.completion.info}</div>`),n+="</div>",n}function ot(s){return Array.isArray(s)?s.length:typeof s=="object"&&s!==null?"self"in s&&"children"in s?1+ot(s.children):Object.keys(s).length:0}function vi(s){const{keyword:e,info:t}=s;let n='<div class="sql-hover-keyword">';if(n+=`<div class="sql-hover-header"><strong>${e.toUpperCase()}</strong> <span class="sql-hover-type">keyword</span></div>`,n+=`<div class="sql-hover-description">${t.description}</div>`,t.syntax&&(n+=`<div class="sql-hover-syntax"><strong>Syntax:</strong> <code>${t.syntax}</code></div>`),t.example&&(n+=`<div class="sql-hover-example"><strong>Example:</strong><br><code>${t.example}</code></div>`),t.metadata&&typeof t.metadata=="object"&&Object.keys(t.metadata).length>0){n+='<div class="sql-hover-metadata">';for(const[a,o]of Object.entries(t.metadata))n+=`<span class="sql-hover-tag" title="${a}">${o}</span> `;n+="</div>"}return n+="</div>",n}const gi=(s="light")=>{const n=s==="dark"?{tooltipBg:"#1f2937",tooltipBorder:"#374151",tooltipText:"#f9fafb",tooltipTypeBg:"#374151",tooltipTypeText:"#9ca3af",tooltipChildren:"#9ca3af",codeBg:"#374151",codeText:"#f3f4f6",strong:"#ffffff",em:"#9ca3af",header:"#ffffff",info:"#d1d5db",related:"#d1d5db",path:"#d1d5db",example:"#d1d5db",columns:"#d1d5db",syntax:"#d1d5db"}:{tooltipBg:"#ffffff",tooltipBorder:"#e5e7eb",tooltipText:"#374151",tooltipTypeBg:"#f3f4f6",tooltipTypeText:"#6b7280",tooltipChildren:"#6b7280",codeBg:"#f9fafb",codeText:"#1f2937",strong:"#111827",em:"#6b7280",header:"#111827",info:"#374151",related:"#374151",path:"#374151",example:"#374151",columns:"#374151",syntax:"#374151"};return At.theme({".cm-sql-hover-tooltip":{padding:"8px 12px",backgroundColor:n.tooltipBg,border:`1px solid ${n.tooltipBorder}`,borderRadius:"6px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",fontSize:"13px",lineHeight:"1.4",maxWidth:"320px",fontFamily:"system-ui, -apple-system, sans-serif",color:n.tooltipText},".cm-sql-hover-tooltip .sql-hover-header":{marginBottom:"6px",display:"flex",alignItems:"center",gap:"6px",color:n.header},".cm-sql-hover-tooltip .sql-hover-type":{fontSize:"11px",padding:"2px 6px",backgroundColor:n.tooltipTypeBg,color:n.tooltipTypeText,borderRadius:"4px",fontWeight:"500"},".cm-sql-hover-tooltip .sql-hover-description":{color:n.info,marginBottom:"8px"},".cm-sql-hover-tooltip .sql-hover-syntax":{marginBottom:"8px",color:n.syntax},".cm-sql-hover-tooltip .sql-hover-example":{marginBottom:"4px",color:n.example},".cm-sql-hover-tooltip .sql-hover-columns":{marginBottom:"4px",color:n.columns},".cm-sql-hover-tooltip .sql-hover-related":{marginBottom:"4px",color:n.related},".cm-sql-hover-tooltip .sql-hover-path":{marginBottom:"4px",color:n.path},".cm-sql-hover-tooltip .sql-hover-info":{marginBottom:"4px",color:n.info},".cm-sql-hover-tooltip .sql-hover-children":{marginBottom:"4px",color:n.tooltipChildren,fontSize:"12px"},".cm-sql-hover-tooltip code":{backgroundColor:n.codeBg,padding:"1px 4px",borderRadius:"3px",fontSize:"12px",fontFamily:"ui-monospace, 'SF Mono', 'Monaco', 'Cascadia Code', 'Roboto Mono', monospace",color:n.codeText},".cm-sql-hover-tooltip strong":{fontWeight:"600",color:n.strong},".cm-sql-hover-tooltip em":{fontStyle:"italic",color:n.em}})};class yi{constructor(e){ae(this,"parser");ae(this,"cache",new Map);ae(this,"MAX_CACHE_SIZE",10);this.parser=e}async analyzeDocument(e){const t=e.doc.toString(),n=this.generateCacheKey(t),a=this.cache.get(n);if(a)return a;const o=await this.extractStatements(t,e);if(this.cache.set(n,o),this.cache.size>this.MAX_CACHE_SIZE){const r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}return o}async getStatementAtPosition(e,t){return(await this.analyzeDocument(e)).find(a=>t>=a.from&&t<=a.to)||null}async getStatementsInRange(e,t,n){return(await this.analyzeDocument(e)).filter(o=>o.from<=n&&o.to>=t)}async extractStatements(e,t){const n=[],a=this.splitByStatementSeparators(e);let o=0;for(const r of a){const i=r.trim();if(i.length===0){o+=r.length;continue}const u=o+r.indexOf(i),c=u+i.length,m=t.doc.lineAt(u),d=t.doc.lineAt(c),y=this.stripComments(i);if(y.trim().length===0||y.trim()===";"){o+=r.length;continue}const x=await this.parser.parse(y,{state:t}),S=this.determineStatementType(y),b=y.endsWith(";")?y.slice(0,-1).trim():y.trim();n.push({from:u,to:c,lineFrom:m.number,lineTo:d.number,content:b,type:S,isValid:x.success}),o+=r.length}return n}splitByStatementSeparators(e){const t=[];let n="",a=!1,o="",r=!1,i=!1,u=0;for(;u<e.length;){const c=e[u],m=e[u+1];if(!a&&!i&&c==="-"&&m==="-"){r=!0,n+=c+m,u+=2;continue}if(!a&&!r&&c==="/"&&m==="*"){i=!0,n+=c+m,u+=2;continue}if(i&&c==="*"&&m==="/"){i=!1,n+=c+m,u+=2;continue}if(r&&(c===`
|
|
11
|
+
`);C=L.pop()||"";for(const _ of L){const B=_.trim();if(B)try{const q=JSON.parse(B);switch(q.type){case"meta":r==null||r(q.fields,q.command);break;case"rows":d+=q.data.length,i==null||i(q.data,d);break;case"done":u==null||u(q.rowCount,q.queryTime);break;case"error":c==null||c(q.message,q.error);break}}catch{console.warn("[StreamingQuery] Malformed NDJSON line:",B)}}}if(C.trim())try{const E=JSON.parse(C.trim());E.type==="done"?u==null||u(E.rowCount,E.queryTime):E.type==="error"&&(c==null||c(E.message))}catch{}}catch(S){if(S.name==="AbortError")return;c==null||c(S.message||"Stream connection failed")}})(),{abort:()=>m.abort()}}const Xt=s=>{if(s===null||typeof s!="object")return!1;const e=Object.getPrototypeOf(s);return e===Object.prototype||e===null},Xe=s=>s.map(e=>({name:e})),ti=s=>{if(Array.isArray(s)){if(s.every(e=>Xt(e))){const e=s,t=Array.from(new Set(e.flatMap(n=>Object.keys(n))));return{rows:e,fields:Xe(t)}}return{rows:s.map((e,t)=>({index:t,value:e})),fields:Xe(["index","value"])}}return Xt(s)?{rows:[s],fields:Xe(Object.keys(s))}:{rows:[{value:s}],fields:Xe(["value"])}};function si({getEditorView:s,connection:e,redisDatabaseIndex:t,fileVariables:n,fieldDefs:a,resultTabs:o,buildExplainAnalyzePrefix:r,beforeExecute:i}){const u=Qe([]),c=Qe({}),m=Qe(0),d=mn({isHaveOneExecute:!1,executeLoading:!1,isStreaming:!1,streamingRowCount:0,queryTime:0,executeErrors:void 0,currentStatementQuery:""});let y=null;const x=async({currentStatements:C,queryPrefix:E})=>{var F,G,j,te,ge,he,Me,Ne,Ie,_e,Oe,me,Re,Ee,oe,Pe,w,k,M,z,N;if(!C.length)return;const $=C[0];if(i&&!await i())return;d.isHaveOneExecute=!0,d.currentStatementQuery=$.text;let L=$.text,_={};try{_=JSON.parse(n.value||"{}")}catch(R){console.log("fileParameters error::",R)}let B="result";const q=((F=e.value)==null?void 0:F.type)===Z.REDIS;E&&!q&&(L=`${E} ${L}`,E.startsWith("EXPLAIN")&&(B="explain")),a.value=[],u.value=[],c.value={},d.executeLoading=!0,d.isStreaming=!1,d.streamingRowCount=0,y&&(y(),y=null),m.value++;const T={id:pn(),metadata:{queryTime:0,statementQuery:L,executedAt:new Date,executeErrors:void 0,fieldDefs:void 0,connection:void 0},result:[],view:B,seqIndex:m.value};o.addResultTab(T),So(s());const H=[];if(q){try{const R=Date.now(),V=await $fetch("/api/redis/workbench/execute",{method:"POST",body:{method:(G=e.value)==null?void 0:G.method,stringConnection:(j=e.value)==null?void 0:j.connectionString,host:(te=e.value)==null?void 0:te.host,port:(ge=e.value)==null?void 0:ge.port,username:(he=e.value)==null?void 0:he.username,password:(Me=e.value)==null?void 0:Me.password,database:(Ne=e.value)==null?void 0:Ne.database,databaseIndex:t==null?void 0:t.value,ssl:(Ie=e.value)==null?void 0:Ie.ssl,ssh:(_e=e.value)==null?void 0:_e.ssh,command:L}}),Y=ti(V.result),se=Date.now()-R;a.value=Y.fields,T.metadata.fieldDefs=Y.fields,T.metadata.connection=e.value,T.metadata.command=((Oe=V.command)==null?void 0:Oe[0])||((me=L.trim().split(/\s+/)[0])==null?void 0:me.toUpperCase())||"REDIS",T.metadata.queryTime=se,T.metadata.rowCount=Y.rows.length,T.result=Y.rows,c.value={rows:Y.rows,fields:Y.fields,queryTime:se},u.value=Y.rows,d.executeLoading=!1,d.isStreaming=!1,d.streamingRowCount=Y.rows.length,d.queryTime=se,d.executeErrors=void 0,o.refreshResultTab(T.id,T)}catch(R){const V=((Re=R==null?void 0:R.data)==null?void 0:Re.message)||(R==null?void 0:R.message)||"Failed to execute Redis command.";d.executeLoading=!1,d.isStreaming=!1,d.executeErrors={message:V,data:(R==null?void 0:R.data)||{message:V}},T.metadata.executeErrors=d.executeErrors,T.view="error",o.refreshResultTab(T.id,T)}return}if(E&&B==="explain"){try{const R=await $fetch("/api/query/raw-execute",{method:"POST",body:{dbConnectionString:(Ee=e.value)==null?void 0:Ee.connectionString,type:(oe=e.value)==null?void 0:oe.type,providerKind:(Pe=e.value)==null?void 0:Pe.providerKind,managedSqlite:(w=e.value)==null?void 0:w.managedSqlite,query:L,params:_},onResponseError:({response:V})=>{var be,qe;const Y=(be=V._data)==null?void 0:be.data,se=s();se&&Y&&Wt({editorView:se,originalSql:$.text,statementFrom:Number($.from),fileParameters:_,errorDetail:Y,clientType:((qe=e.value)==null?void 0:qe.type)||Z.POSTGRES,queryPrefix:E})}});a.value=R.fields,T.metadata.fieldDefs=R.fields,T.result=R.rows,T.metadata.queryTime=R.queryTime||0,T.metadata.connection=e.value,c.value=R,u.value=R.rows,d.executeErrors=void 0,d.queryTime=R.queryTime||0}catch(R){d.executeErrors=R.data,T.metadata.executeErrors=R.data,T.view="error"}d.executeLoading=!1,o.refreshResultTab(T.id,T);return}d.isStreaming=!0,d.executeLoading=!1;const{abort:W}=ei({query:L,dbConnectionString:((k=e.value)==null?void 0:k.connectionString)||"",type:(M=e.value)==null?void 0:M.type,providerKind:(z=e.value)==null?void 0:z.providerKind,managedSqlite:(N=e.value)==null?void 0:N.managedSqlite,params:_,onMeta:(R,V)=>{a.value=R,T.metadata.fieldDefs=R,T.metadata.connection=e.value,T.metadata.command=V,o.refreshResultTab(T.id,T)},onRows:(R,V)=>{H.push(...R),d.streamingRowCount=V,T.result=H,T.metadata.rowCount=V,u.value=H,o.refreshResultTab(T.id,T)},onDone:(R,V)=>{d.executeLoading=!1,d.isStreaming=!1,d.queryTime=V,d.executeErrors=void 0,d.streamingRowCount=R,T.metadata.queryTime=V,T.metadata.rowCount=R,c.value={rows:T.result,fields:a.value,queryTime:V},o.refreshResultTab(T.id,T),y=null},onError:(R,V)=>{var be;const Y={message:R,data:V||{message:R}};d.executeLoading=!1,d.isStreaming=!1,d.executeErrors=Y,T.metadata.executeErrors=Y,T.view="error";const se=s();se&&V&&Wt({editorView:se,originalSql:$.text,statementFrom:Number($.from),fileParameters:_,errorDetail:V,clientType:((be=e.value)==null?void 0:be.type)||Z.POSTGRES}),o.refreshResultTab(T.id,T),y=null}});y=W};return{currentRawQueryResult:u,rawResponse:c,queryProcessState:d,executeCurrentStatement:x,onExecuteCurrent:()=>{const C=s();if(!C)return;const{currentStatements:E}=rt(C);x({currentStatements:E})},onExplainAnalyzeCurrent:()=>{const C=s();if(!C)return;const{currentStatements:E}=rt(C);x({currentStatements:E,queryPrefix:r()})},cancelStreamingQuery:()=>{y&&(y(),y=null,d.executeLoading=!1,d.isStreaming=!1)}}}function ni(){const s=K({BUFFERS:!0,COSTS:!0,GENERIC_PLAN:!1,MEMORY:!1,SETTINGS:!0,SUMMARY:!0,TIMING:!0,VERBOSE:!0,WAL:!0}),e=K("NONE"),t=r=>{s.value[r]=!s.value[r]},n=r=>{e.value=r};return{explainAnalyzeOptionItems:P(()=>Dt.filter(r=>r.key!=="SERIALIZE").map(r=>({key:r.key,label:r.label,checked:s.value[r.key]}))),serializeMode:e,toggleExplainOption:t,setSerializeMode:n,buildExplainAnalyzePrefix:()=>{const r=Dt.filter(c=>c.key!=="SERIALIZE"&&s.value[c.key]).map(c=>c.key).flatMap(c=>c==="GENERIC_PLAN"?[]:[c]),i=e.value==="NONE"?[]:[`SERIALIZE ${e.value}`];return`EXPLAIN (${["ANALYZE","FORMAT JSON",...r,...i].join(", ")})`}}}function oi(){const s=Qe(new Map),e=K(null),t=m=>{const d=new Map;d.set(m.id,m),s.value.forEach((y,x)=>{d.set(x,y)}),s.value=d,e.value=m.id},n=(m,d)=>{const y=new Map(s.value);y.set(m,{...d}),s.value=y};return{executedResults:s,activeResultTabId:e,addResultTab:t,refreshResultTab:n,setActiveResultTab:m=>{s.value.has(m)&&(e.value=m)},closeResultTab:m=>{const d=new Map(s.value);if(d.delete(m),s.value=d,e.value===m){const y=Array.from(d.keys());e.value=y.length>0?y[y.length-1]:null}},updateResultTabView:(m,d)=>{const y=s.value.get(m);y&&n(m,{...y,view:d})},closeOtherResultTabs:m=>{const d=s.value.get(m);if(!d)return;const y=new Map;y.set(m,d),s.value=y,e.value=m},closeResultTabsToRight:m=>{const d=Array.from(s.value.keys()),y=d.indexOf(m);if(y<0)return;const x=new Map;for(let S=0;S<=y;S++){const b=d[S],g=s.value.get(b);g&&x.set(b,g)}s.value=x,x.has(e.value||"")||(e.value=m)},updateResultTabResult:(m,d)=>{const x=new Map(s.value).get(m);x&&(x.result=d)}}}function He(s,...e){}const ai=s=>{let e;return async()=>(e||(e=s()),await e)};class Ot{constructor(e={}){ae(this,"opts");ae(this,"parser",null);ae(this,"offsetRecord",{});ae(this,"getParser",ai(async()=>{if(this.parser)return this.parser;const e=await ds(()=>import("./CjpXgncp.js").then(n=>n.i),__vite__mapDeps([0,1,2]),import.meta.url),{Parser:t}=e.default||e;return this.parser=new t,this.parser}));this.opts=e}async parse(e,t){var o,r;this.offsetRecord={};const n=(r=(o=this.opts).getParserOptions)==null?void 0:r.call(o,t.state),a=await this.sanitizeSql(e,n);try{const i=await this.getParser();if((n==null?void 0:n.database)==="DuckDB")return this.parseWithDuckDBSupport(a,n);const u=i.astify(a,n);return{success:!0,errors:[],ast:u}}catch(i){return{success:!1,errors:[this.extractErrorInfo(i,a)]}}}async sanitizeSql(e,t){if(t!=null&&t.ignoreBrackets){const{sql:n,offsetRecord:a}=ii(e);return this.offsetRecord=a,n}return e}async parseWithDuckDBSupport(e,t){const n=await this.getParser(),a=ri(e).trimStart().toLowerCase();if(a.startsWith("from")||a.includes("macro"))return He(),{success:!0,errors:[]};let o=e;a.includes("create or replace table")&&(this.offsetRecord[e.indexOf("create or replace table")]=-11,o=e.replace(/create or replace table/i,"create table"));try{const r={...t,database:"PostgreSQL"},i=n.astify(o,r);return{success:!0,errors:[],ast:i}}catch(r){return{success:!1,errors:[this.extractErrorInfo(r,e)]}}}extractErrorInfo(e,t){var i,u,c;let n=1,a=1;const o=(e==null?void 0:e.message)||"SQL parsing error",r=e;if(r!=null&&r.location)n=((i=r.location.start)==null?void 0:i.line)||1,a=((u=r.location.start)==null?void 0:u.column)||1;else if(r!=null&&r.hash)n=r.hash.line||1,a=((c=r.hash.loc)==null?void 0:c.first_column)||1;else{const m=o.match(/line (\d+)/i),d=o.match(/column (\d+)/i);m!=null&&m[1]&&(n=parseInt(m[1],10)),d!=null&&d[1]&&(a=parseInt(d[1],10))}for(const[m,d]of Object.entries(this.offsetRecord))a>parseInt(m,10)&&(a-=d);return a>t.length&&(a=t.length),{message:this.cleanErrorMessage(o),line:Math.max(1,n),column:a,severity:"error"}}cleanErrorMessage(e){return e.replace(/^Error: /,"").replace(/Expected .* but .* found\./i,t=>t.replace(/but .* found/,"found unexpected token")).trim()}async validateSql(e,t){return(await this.parse(e,t)).errors}async extractTableReferences(e,t){var a,o;const n=t?(o=(a=this.opts).getParserOptions)==null?void 0:o.call(a,t.state):void 0;try{return(await this.getParser()).tableList(e,n).map(u=>{const c=u.split("::");return c[c.length-1]||u})}catch{return[]}}async extractColumnReferences(e,t){var a,o;const n=t!=null&&t.state?(o=(a=this.opts).getParserOptions)==null?void 0:o.call(a,t.state):void 0;try{return(await this.getParser()).columnList(e,n).map(c=>{const m=c.split("::");return m[m.length-1]||c})}catch{return[]}}}function ri(s,e=["/*","--"]){const t=[];if(e.includes("/*")&&t.push("/\\*[\\s\\S]*?\\*/"),e.includes("--")&&t.push("--[^\\n]*"),t.length===0)return s;const n=new RegExp(`^\\s*(${t.join("|")})\\s*`,"");let a=s,o="";for(;a!==o;)o=a,a=a.replace(n,"");return a}const li=2;function ii(s){const e={};return{sql:s.replace(/("(?:[^"\\]|\\.)*")|('(?:[^'\\]|\\.)*')|(\{[^}]*\})/g,(n,a,o,r,i)=>a||o?n:r?(e[i]=li,`'${r}'`):n),offsetRecord:e}}const ui=750;function ci(s,e){const n=e.line(s.line).from+Math.max(0,s.column-1),a=n+1;return{from:n,to:a,severity:s.severity,message:s.message,source:"sql-parser"}}function di(s={}){const e=s.parser||new Ot;return rs(async t=>{const n=t.state.doc,a=n.toString();return a.trim()?(await e.validateSql(a,{state:t.state})).map(r=>ci(r,n)):[]},{delay:s.delay||ui})}function Le(s){return typeof s=="object"&&!Array.isArray(s)&&!("self"in s)}function we(s){return typeof s=="object"&&!Array.isArray(s)&&"self"in s&&"children"in s}function ye(s){return Array.isArray(s)}function re(s,e,t,n){const a=s.length;if(e==="string"||e==="completion"&&n&&ye(n))return"column";if(e==="namespace"&&t){if(ye(t))return"table";if(Le(t))return Object.values(t).some(r=>ye(r)||we(r)&&ye(r.children))?a<=1?"database":"schema":a===0?"database":"namespace"}if(e==="completion"&&t)return ye(t)?"table":(Le(t)&&Object.values(t).some(r=>ye(r)||we(r)&&ye(r.children)),a<=1?"database":"schema");switch(a){case 0:return"database";case 1:return"schema";default:return"namespace"}}function ws(s,e,t={}){const{maxDepth:n=10}=t;if(e===""&&we(s)){const o=re([],"completion",s.children);return{completion:s.self,path:[],type:"completion",semanticType:o,namespace:s.children}}const a=e.split(".").filter(o=>o.length>0);return a.length===0||a.length>n?null:Ct(s,a,[],t)}function Ct(s,e,t,n,a){if(e.length===0){if(we(s)){const c=re(t,"completion",s.children,a);return{completion:s.self,path:t,type:"completion",semanticType:c,namespace:s.children}}const u=re(t,"namespace",s,a);return{path:t,type:"namespace",semanticType:u,namespace:s}}const[o,...r]=e,{caseSensitive:i=!1}=n;if(!o)return null;if(Le(s)){const u=i?Object.keys(s).find(c=>c===o):Object.keys(s).find(c=>c.toLowerCase()===o.toLowerCase());if(u){const c=s[u];if(c)return Ct(c,r,[...t,u],n,s)}}else{if(we(s))return Ct(s.children,e,t,n,s);if(ye(s)){for(const u of s)if(typeof u=="string"){if((i?u===o:u.toLowerCase()===o.toLowerCase())&&r.length===0){const m=re([...t,u],"string",void 0,s);return{value:u,path:[...t,u],type:"string",semanticType:m}}}else if((i?u.label===o:u.label.toLowerCase()===o.toLowerCase())&&r.length===0){const m=re([...t,u.label],"completion",void 0,s);return{completion:u,path:[...t,u.label],type:"completion",semanticType:m}}}}return null}function mi(s,e,t={}){const n=[];if(e.includes(".")){const a=e.lastIndexOf("."),o=e.substring(0,a),r=e.substring(a+1),i=ws(s,o,t);if(i!=null&&i.namespace)return St(i.namespace,r,i.path,t)}else return St(s,e,[],t);return n}function St(s,e,t,n){const a=[],{caseSensitive:o=!1,allowPartialMatch:r=!0}=n;if(Le(s)){for(const[i,u]of Object.entries(s))if(r?o?i.startsWith(e):i.toLowerCase().startsWith(e.toLowerCase()):o?i===e:i.toLowerCase()===e.toLowerCase())if(we(u)){const m=re([...t,i],"completion",u.children,s);a.push({completion:u.self,path:[...t,i],type:"completion",semanticType:m,namespace:u.children})}else{const m=re([...t,i],"namespace",u,s);a.push({path:[...t,i],type:"namespace",semanticType:m,namespace:u})}}else if(we(s)){if(r?o?s.self.label.startsWith(e):s.self.label.toLowerCase().startsWith(e.toLowerCase()):o?s.self.label===e:s.self.label.toLowerCase()===e.toLowerCase()){const u=re([...t,s.self.label],"completion",s.children);a.push({completion:s.self,path:[...t,s.self.label],type:"completion",semanticType:u,namespace:s.children})}a.push(...St(s.children,e,t,n))}else if(ye(s)){for(const i of s)if(typeof i=="string"){if(r?o?i.startsWith(e):i.toLowerCase().startsWith(e.toLowerCase()):o?i===e:i.toLowerCase()===e.toLowerCase()){const c=re([...t,i],"string",void 0,s);a.push({value:i,path:[...t,i],type:"string",semanticType:c})}}else if(r?o?i.label.startsWith(e):i.label.toLowerCase().startsWith(e.toLowerCase()):o?i.label===e:i.label.toLowerCase()===e.toLowerCase()){const c=re([...t,i.label],"completion",void 0,s);a.push({completion:i,path:[...t,i.label],type:"completion",semanticType:c})}}return a}function pi(s,e,t={}){const n=[],{maxDepth:a=10}=t;nt(s,[],n,a);const{caseSensitive:o=!1}=t;return n.filter(i=>i.path.some(u=>o?u===e:u.toLowerCase()===e.toLowerCase())).sort((i,u)=>{var d,y;const c=o?i.path[i.path.length-1]===e:((d=i.path[i.path.length-1])==null?void 0:d.toLowerCase())===e.toLowerCase(),m=o?u.path[u.path.length-1]===e:((y=u.path[u.path.length-1])==null?void 0:y.toLowerCase())===e.toLowerCase();return c&&!m?-1:!c&&m?1:i.path.length-u.path.length})}function nt(s,e,t,n){if(!(e.length>=n)){if(Le(s))for(const[a,o]of Object.entries(s)){const r=[...e,a];if(we(o)){const i=re(r,"completion",o.children,s);t.push({completion:o.self,path:r,type:"completion",semanticType:i,namespace:o.children}),nt(o.children,r,t,n)}else{const i=re(r,"namespace",o,s);t.push({path:r,type:"namespace",semanticType:i,namespace:o}),nt(o,r,t,n)}}else if(we(s)){const a=re(e,"completion",s.children);t.push({completion:s.self,path:e,type:"completion",semanticType:a,namespace:s.children}),nt(s.children,e,t,n)}else if(ye(s))for(const a of s)if(typeof a=="string"){const o=re([...e,a],"string",void 0,s);t.push({value:a,path:[...e,a],type:"string",semanticType:o})}else{const o=re([...e,a.label],"completion",void 0,s);t.push({completion:a,path:[...e,a.label],type:"completion",semanticType:o})}}}function es(s,e,t={}){const{enableFuzzySearch:n=!1}=t,a=ws(s,e,t);if(a)return a;const o=mi(s,e,t);if(o.length>0)return o[0]||null;if(n){const r=pi(s,e,t);if(r.length>0)return r[0]||null}return null}function _s(s,e){if(e.size===0)return{};if(Le(s)){const t={};for(const[n,a]of Object.entries(s))if(Array.from(e).some(r=>r.toLowerCase()===n.toLowerCase()))t[n]=a;else if(Le(a)){const r=_s(a,e);Object.keys(r).length>0&&(t[n]=r)}return t}return s}function fi(s={}){const{schema:e={},keywords:t={},hoverTime:n=300,enableKeywords:a=!0,enableTables:o=!0,enableColumns:r=!0,enableFuzzySearch:i=!0,parser:u=new Ot,tooltipRender:c,tooltipRenderers:m={}}=s;let d=null;return fn(async(y,x,S)=>{const{from:b,to:g,text:C}=y.state.doc.lineAt(x);let E=x,$=x;d===null&&(d=typeof t=="function"?t(y):Promise.resolve(t));const L=await d;for(;E>b&&/[\w.]/.test(C[E-b-1]??"");)E--;for(;$<g&&/[\w.]/.test(C[$-b]??"");)$++;if(E===x&&S<0||$===x&&S>0)return null;const _=C.slice(E-b,$-b).toLowerCase();if(!_||_.length===0)return null;const B=typeof e=="function"?e(y):e;let q=null;if(He(),!q&&a&&L[_]){He("keywordResult",_,L[_]);const T={keyword:_,info:L[_]};q={word:_,view:y,pos:x,tooltipType:"keyword",keywordData:T}}if(!q&&(o||r)&&B){const T=y.state.doc.toString(),H=await u.extractTableReferences(T),W=new Set(H.map(j=>j.toLowerCase())),F=_s(B,W);let G=es(F,_,{enableFuzzySearch:i});if(!G&&W.size===0&&(G=es(B,_,{enableFuzzySearch:i})),G){He("namespaceResult (query-aware)",_,G,"tableRefs:",Array.from(W));const j={item:G,word:_,resolvedSchema:W.size>0?F:B};q={word:_,view:y,pos:x,tooltipType:"namespace",namespaceData:j}}else He("No namespace item found for:",_)}return q?{pos:E,end:$,above:!0,create(T){if(c){const F=c(_,T,x);if(F)return{dom:F}}let H=null;if(q.tooltipType==="keyword"&&q.keywordData)H=m.keyword?m.keyword(q.keywordData):vi(q.keywordData);else if(q.tooltipType==="namespace"&&q.namespaceData){const F=q.namespaceData,{semanticType:G}=F.item;G==="table"&&m.table?H=m.table(F):G==="column"&&m.column?H=m.column(F):(G==="database"||G==="schema"||G==="namespace")&&m.namespace?H=m.namespace(F):H=hi(F.item)}if(!H)return{dom:document.createElement("div")};const W=document.createElement("div");return W.className="cm-sql-hover-tooltip",W.innerHTML=H,{dom:W}}}:null},{hoverTime:n})}function hi(s){var a,o,r,i,u,c,m;const e=s.path.join("."),t=((a=s.completion)==null?void 0:a.label)||s.value||s.path[s.path.length-1]||"unknown";let n=`<div class="sql-hover-${s.semanticType}">`;switch(n+=`<div class="sql-hover-header"><strong>${t}</strong> <span class="sql-hover-type">${s.semanticType}</span></div>`,s.semanticType){case"database":if(n+=`<div class="sql-hover-description">Database${(o=s.completion)!=null&&o.detail?`: ${s.completion.detail}`:""}</div>`,s.namespace){const d=ot(s.namespace);d>0&&(n+=`<div class="sql-hover-children">Contains ${d} schema${d!==1?"s":""}</div>`)}break;case"schema":if(n+=`<div class="sql-hover-description">Schema${(r=s.completion)!=null&&r.detail?`: ${s.completion.detail}`:""}</div>`,e&&(n+=`<div class="sql-hover-path"><strong>Path:</strong> <code>${e}</code></div>`),s.namespace){const d=ot(s.namespace);d>0&&(n+=`<div class="sql-hover-children">Contains ${d} table${d!==1?"s":""}</div>`)}break;case"table":if(n+=`<div class="sql-hover-description">Table${(i=s.completion)!=null&&i.detail?`: ${s.completion.detail}`:""}</div>`,e){const d=s.path;d.length>1&&(n+=`<div class="sql-hover-path"><strong>Schema:</strong> <code>${d.slice(0,-1).join(".")}</code></div>`)}if(s.namespace&&ye(s.namespace)){const d=s.namespace;if(d.length>0){n+=`<div class="sql-hover-columns"><strong>Columns (${d.length}):</strong><br>`;const x=d.slice(0,8).map(S=>typeof S=="string"?S:S.label);n+=x.map(S=>`<code>${S}</code>`).join(", "),d.length>8&&(n+=`, <em>and ${d.length-8} more...</em>`),n+="</div>"}}break;case"column":if(n+=`<div class="sql-hover-description">Column${(u=s.completion)!=null&&u.detail?`: ${s.completion.detail}`:""}</div>`,e){const d=s.path;d.length>1&&(n+=`<div class="sql-hover-path"><strong>Table:</strong> <code>${d.slice(0,-1).join(".")}</code></div>`)}break;default:if(n+=`<div class="sql-hover-description">Namespace${(c=s.completion)!=null&&c.detail?`: ${s.completion.detail}`:""}</div>`,e&&(n+=`<div class="sql-hover-path"><strong>Path:</strong> <code>${e}</code></div>`),s.namespace){const d=ot(s.namespace);d>0&&(n+=`<div class="sql-hover-children">Contains ${d} item${d!==1?"s":""}</div>`)}break}return(m=s.completion)!=null&&m.info&&typeof s.completion.info=="string"&&(n+=`<div class="sql-hover-info">${s.completion.info}</div>`),n+="</div>",n}function ot(s){return Array.isArray(s)?s.length:typeof s=="object"&&s!==null?"self"in s&&"children"in s?1+ot(s.children):Object.keys(s).length:0}function vi(s){const{keyword:e,info:t}=s;let n='<div class="sql-hover-keyword">';if(n+=`<div class="sql-hover-header"><strong>${e.toUpperCase()}</strong> <span class="sql-hover-type">keyword</span></div>`,n+=`<div class="sql-hover-description">${t.description}</div>`,t.syntax&&(n+=`<div class="sql-hover-syntax"><strong>Syntax:</strong> <code>${t.syntax}</code></div>`),t.example&&(n+=`<div class="sql-hover-example"><strong>Example:</strong><br><code>${t.example}</code></div>`),t.metadata&&typeof t.metadata=="object"&&Object.keys(t.metadata).length>0){n+='<div class="sql-hover-metadata">';for(const[a,o]of Object.entries(t.metadata))n+=`<span class="sql-hover-tag" title="${a}">${o}</span> `;n+="</div>"}return n+="</div>",n}const gi=(s="light")=>{const n=s==="dark"?{tooltipBg:"#1f2937",tooltipBorder:"#374151",tooltipText:"#f9fafb",tooltipTypeBg:"#374151",tooltipTypeText:"#9ca3af",tooltipChildren:"#9ca3af",codeBg:"#374151",codeText:"#f3f4f6",strong:"#ffffff",em:"#9ca3af",header:"#ffffff",info:"#d1d5db",related:"#d1d5db",path:"#d1d5db",example:"#d1d5db",columns:"#d1d5db",syntax:"#d1d5db"}:{tooltipBg:"#ffffff",tooltipBorder:"#e5e7eb",tooltipText:"#374151",tooltipTypeBg:"#f3f4f6",tooltipTypeText:"#6b7280",tooltipChildren:"#6b7280",codeBg:"#f9fafb",codeText:"#1f2937",strong:"#111827",em:"#6b7280",header:"#111827",info:"#374151",related:"#374151",path:"#374151",example:"#374151",columns:"#374151",syntax:"#374151"};return At.theme({".cm-sql-hover-tooltip":{padding:"8px 12px",backgroundColor:n.tooltipBg,border:`1px solid ${n.tooltipBorder}`,borderRadius:"6px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",fontSize:"13px",lineHeight:"1.4",maxWidth:"320px",fontFamily:"system-ui, -apple-system, sans-serif",color:n.tooltipText},".cm-sql-hover-tooltip .sql-hover-header":{marginBottom:"6px",display:"flex",alignItems:"center",gap:"6px",color:n.header},".cm-sql-hover-tooltip .sql-hover-type":{fontSize:"11px",padding:"2px 6px",backgroundColor:n.tooltipTypeBg,color:n.tooltipTypeText,borderRadius:"4px",fontWeight:"500"},".cm-sql-hover-tooltip .sql-hover-description":{color:n.info,marginBottom:"8px"},".cm-sql-hover-tooltip .sql-hover-syntax":{marginBottom:"8px",color:n.syntax},".cm-sql-hover-tooltip .sql-hover-example":{marginBottom:"4px",color:n.example},".cm-sql-hover-tooltip .sql-hover-columns":{marginBottom:"4px",color:n.columns},".cm-sql-hover-tooltip .sql-hover-related":{marginBottom:"4px",color:n.related},".cm-sql-hover-tooltip .sql-hover-path":{marginBottom:"4px",color:n.path},".cm-sql-hover-tooltip .sql-hover-info":{marginBottom:"4px",color:n.info},".cm-sql-hover-tooltip .sql-hover-children":{marginBottom:"4px",color:n.tooltipChildren,fontSize:"12px"},".cm-sql-hover-tooltip code":{backgroundColor:n.codeBg,padding:"1px 4px",borderRadius:"3px",fontSize:"12px",fontFamily:"ui-monospace, 'SF Mono', 'Monaco', 'Cascadia Code', 'Roboto Mono', monospace",color:n.codeText},".cm-sql-hover-tooltip strong":{fontWeight:"600",color:n.strong},".cm-sql-hover-tooltip em":{fontStyle:"italic",color:n.em}})};class yi{constructor(e){ae(this,"parser");ae(this,"cache",new Map);ae(this,"MAX_CACHE_SIZE",10);this.parser=e}async analyzeDocument(e){const t=e.doc.toString(),n=this.generateCacheKey(t),a=this.cache.get(n);if(a)return a;const o=await this.extractStatements(t,e);if(this.cache.set(n,o),this.cache.size>this.MAX_CACHE_SIZE){const r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}return o}async getStatementAtPosition(e,t){return(await this.analyzeDocument(e)).find(a=>t>=a.from&&t<=a.to)||null}async getStatementsInRange(e,t,n){return(await this.analyzeDocument(e)).filter(o=>o.from<=n&&o.to>=t)}async extractStatements(e,t){const n=[],a=this.splitByStatementSeparators(e);let o=0;for(const r of a){const i=r.trim();if(i.length===0){o+=r.length;continue}const u=o+r.indexOf(i),c=u+i.length,m=t.doc.lineAt(u),d=t.doc.lineAt(c),y=this.stripComments(i);if(y.trim().length===0||y.trim()===";"){o+=r.length;continue}const x=await this.parser.parse(y,{state:t}),S=this.determineStatementType(y),b=y.endsWith(";")?y.slice(0,-1).trim():y.trim();n.push({from:u,to:c,lineFrom:m.number,lineTo:d.number,content:b,type:S,isValid:x.success}),o+=r.length}return n}splitByStatementSeparators(e){const t=[];let n="",a=!1,o="",r=!1,i=!1,u=0;for(;u<e.length;){const c=e[u],m=e[u+1];if(!a&&!i&&c==="-"&&m==="-"){r=!0,n+=c+m,u+=2;continue}if(!a&&!r&&c==="/"&&m==="*"){i=!0,n+=c+m,u+=2;continue}if(i&&c==="*"&&m==="/"){i=!1,n+=c+m,u+=2;continue}if(r&&(c===`
|
|
12
12
|
`||c==="\r")){r=!1,n+=c,u++;continue}if(r||i){n+=c,u++;continue}if(!a&&(c==="'"||c==='"'||c==="`"))a=!0,o=c,n+=c;else if(a&&c===o){if(m===o){n+=c+m,u+=2;continue}a=!1,o="",n+=c}else!a&&c===";"?(n+=c,t.push(n),n=""):n+=c;u++}return n.trim()&&t.push(n),t}determineStatementType(e){const t=e.trim().toLowerCase();return t.startsWith("select")?"select":t.startsWith("insert")?"insert":t.startsWith("update")?"update":t.startsWith("delete")?"delete":t.startsWith("create")?"create":t.startsWith("drop")?"drop":t.startsWith("alter")?"alter":t.startsWith("use")?"use":"other"}stripComments(e){let t="",n=!1,a="",o=!1,r=!1,i=0;for(;i<e.length;){const u=e[i],c=e[i+1];if(!n&&!r&&u==="-"&&c==="-"){o=!0,i+=2;continue}if(!n&&!o&&u==="/"&&c==="*"){r=!0,i+=2;continue}if(r&&u==="*"&&c==="/"){r=!1,i+=2;continue}if(o&&(u===`
|
|
13
13
|
`||u==="\r")){o=!1,t+=u,i++;continue}if(o||r){i++;continue}if(!n&&(u==="'"||u==='"'||u==="`"))n=!0,a=u,t+=u;else if(n&&u===a){if(c===a){t+=u+c,i+=2;continue}n=!1,a="",t+=u}else t+=u;i++}return t}generateCacheKey(e){let t=0;for(let n=0;n<e.length;n++){const a=e.charCodeAt(n);t=(t<<5)-t+a,t=t&t}return t.toString()}clearCache(){this.cache.clear()}}const Es=vn.define(),Ts=hn.define({create(){return{currentStatement:null,allStatements:[],cursorPosition:0,isFocused:!0}},update(s,e){for(const t of e.effects)if(t.is(Es))return t.value;return s}});class xi extends xn{constructor(t,n,a=!0,o=!0){super();ae(this,"config");ae(this,"isCurrent");ae(this,"isValid");ae(this,"isFocused");this.config=t,this.isCurrent=n,this.isValid=a,this.isFocused=o}toDOM(){const t=document.createElement("div");t.className="cm-sql-gutter-marker";let n=this.config.backgroundColor||"#3b82f6";!this.isValid&&this.config.showInvalid!==!1&&(n=this.config.errorBackgroundColor||"#ef4444");let a;return this.isFocused?a=this.isCurrent?"1":(this.config.inactiveOpacity||"0.3").toString():this.config.unfocusedOpacity!==void 0?a=this.config.unfocusedOpacity.toString():this.config.hideWhenNotFocused?a="0":a=this.isCurrent?"1":(this.config.inactiveOpacity||"0.3").toString(),t.style.cssText=`
|
|
14
14
|
background: ${n};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b1 as $,r as p,aP as O,c as m,K as E,aB as C,au as K,ap as _,d as F,e as V,o as R,n as P,k as N,l as U,f as B,w as D,z as A,t as w,g as x,bn as W,_ as j,h as q,m as g,x as z,F as L,s as H,B as M}from"./
|
|
1
|
+
import{b1 as $,r as p,aP as O,c as m,K as E,aB as C,au as K,ap as _,d as F,e as V,o as R,n as P,k as N,l as U,f as B,w as D,z as A,t as w,g as x,bn as W,_ as j,h as q,m as g,x as z,F as L,s as H,B as M}from"./D0lW43G8.js";var G=(a=>(a.Tree="tree",a.List="list",a))(G||{});const Y=(a,s=0)=>({connectionId:a,selectedDatabaseIndex:s,viewMode:"tree",keyPattern:"*",keyTypeFilter:[],selectedKey:null,activeTool:"browser"}),J=$("redis-workspace",()=>{const a=p({}),s=(d,n=0)=>(a.value[d]||(a.value[d]=Y(d,n)),a.value[d]);return{sessions:a,ensureSession:s,patchSession:(d,n)=>{Object.assign(s(d),n)}}}),Q=a=>{const s=Number.parseInt(a||"0",10);return Number.isFinite(s)?s:0},X=a=>{var s,t,d;if(typeof a=="string")return a;if(a&&typeof a=="object"){const n=a;return((s=n.data)==null?void 0:s.message)||((d=(t=n.response)==null?void 0:t._data)==null?void 0:d.message)||n.message||"Request failed."}return"Request failed."},Z=(a,s)=>{const t=X(a);return/READONLY/i.test(t)?"This Redis endpoint is read-only. Value updates are unavailable.":/NOPERM|NOAUTH|WRONGPASS|ACL/i.test(t)?"The connected Redis account does not have permission to edit values.":""},T=a=>({method:a.method,stringConnection:a.connectionString,host:a.host,port:a.port,username:a.username,password:a.password,database:a.database,ssl:a.ssl,ssh:a.ssh});function ee({connection:a,session:s,store:t}){const d=p([]),n=p([]),r=O(null),v=p(!1),f=p(!1),l=p(!1),o=p("");let e=0;const c=m(()=>!!r.value&&!o.value),y=async()=>{if(!a.value||!s.value){d.value=[],n.value=[],r.value=null;return}v.value=!0;try{const i=await $fetch("/api/redis/browser",{method:"POST",body:{...T(a.value),databaseIndex:s.value.selectedDatabaseIndex,keyPattern:s.value.keyPattern}});d.value=i.keys,n.value=i.databases,o.value=""}finally{v.value=!1}},b=async()=>{if(!a.value||!s.value){n.value=[];return}n.value=await $fetch("/api/redis/browser/databases",{method:"POST",body:{...T(a.value),databaseIndex:s.value.selectedDatabaseIndex}})},u=async(i=(k=>(k=s.value)==null?void 0:k.selectedKey)())=>{if(!a.value||!s.value||!i){r.value=null,o.value="",f.value=!1;return}const S=++e;r.value=null,f.value=!0;try{const I=await $fetch("/api/redis/browser/value",{method:"POST",body:{...T(a.value),databaseIndex:s.value.selectedDatabaseIndex,key:i}});if(S!==e)return;r.value=I,o.value=""}finally{S===e&&(f.value=!1)}},h=async i=>{s.value&&t.patchSession(s.value.connectionId,{selectedKey:i,activeTool:"browser"})};return{keys:d,databases:n,selectedKeyDetail:r,loadingKeys:v,loadingSelectedKeyDetail:f,savingValue:l,editUnavailableReason:o,canEditSelectedValue:c,refreshKeys:y,refreshDatabases:b,refreshSelectedKeyDetail:u,openKey:h,focusKey:async i=>{s.value&&(await h(i),await u(i))},saveSelectedValue:async i=>{var k;if(!(!a.value||!((k=s.value)!=null&&k.selectedKey))){l.value=!0;try{r.value=await $fetch("/api/redis/browser/value",{method:"PATCH",body:{...T(a.value),databaseIndex:s.value.selectedDatabaseIndex,key:s.value.selectedKey,previewKind:i.previewKind,stringFormat:i.stringFormat,tableKind:i.tableKind,ttlSeconds:i.ttlSeconds,value:i.value}}),o.value="",E.success("Redis key saved successfully",{description:`Updated ${s.value.selectedKey}`})}catch(S){const I=Z(S);if(I){o.value=I;return}console.error("[useRedisWorkspace] Failed to save Redis value",S)}finally{l.value=!1}}}}}function ue(a){const s=C(a.connection),t=a.tabInfo?C(a.tabInfo):void 0,d=a.mode??"browser",n=J(),r=m(()=>{var e;return(e=s.value)!=null&&e.id?n.ensureSession(s.value.id,Q(s.value.database)):null}),v=m({get:()=>{var e;return((e=r.value)==null?void 0:e.selectedDatabaseIndex)??0},set:e=>{r.value&&n.patchSession(r.value.connectionId,{selectedDatabaseIndex:e})}}),f=m({get:()=>{var e;return((e=r.value)==null?void 0:e.keyPattern)??"*"},set:e=>{r.value&&n.patchSession(r.value.connectionId,{keyPattern:e||"*"})}}),l=ee({connection:s,session:r,store:n}),o=p(!1);return K(()=>t==null?void 0:t.value,async e=>{var c,y,b,u;if(!(!r.value||!e)){if(e.type===_.RedisPubSub){n.patchSession(r.value.connectionId,{activeTool:"pubsub",selectedDatabaseIndex:typeof((c=e.metadata)==null?void 0:c.databaseIndex)=="number"?e.metadata.databaseIndex:r.value.selectedDatabaseIndex}),l.refreshDatabases();return}o.value=!0;try{n.patchSession(r.value.connectionId,{activeTool:"browser",selectedDatabaseIndex:typeof((y=e.metadata)==null?void 0:y.databaseIndex)=="number"?e.metadata.databaseIndex:r.value.selectedDatabaseIndex,keyPattern:typeof((b=e.metadata)==null?void 0:b.keyPattern)=="string"?e.metadata.keyPattern:r.value.keyPattern,selectedKey:typeof((u=e.metadata)==null?void 0:u.selectedKey)=="string"?e.metadata.selectedKey:r.value.selectedKey}),await l.refreshKeys(),l.refreshSelectedKeyDetail()}finally{o.value=!1}}},{immediate:!0}),K(()=>{var e,c;return[(e=r.value)==null?void 0:e.selectedDatabaseIndex,(c=r.value)==null?void 0:c.keyPattern]},([e,c],y)=>{if(!(t!=null&&t.value)||t.value.type!==_.RedisBrowser||o.value)return;const[b,u]=y??[];e===b&&c===u||l.refreshKeys()}),K(()=>{var e;return(e=r.value)==null?void 0:e.selectedKey},(e,c)=>{!(t!=null&&t.value)||t.value.type!==_.RedisBrowser||o.value||e===c||l.refreshSelectedKeyDetail(e)}),K(()=>{var e;return(e=r.value)==null?void 0:e.selectedDatabaseIndex},(e,c)=>{if(e!==c){if(t!=null&&t.value){t.value.type===_.RedisPubSub&&l.refreshDatabases();return}d==="meta"&&l.refreshDatabases()}}),K(()=>{var e;return(e=s.value)==null?void 0:e.id},e=>{if(!(!e||t!=null&&t.value)){if(d==="meta"){l.refreshDatabases();return}l.refreshKeys()}},{immediate:!0}),{session:r,keys:l.keys,databases:l.databases,selectedKeyDetail:l.selectedKeyDetail,loadingKeys:l.loadingKeys,loadingSelectedKeyDetail:l.loadingSelectedKeyDetail,savingValue:l.savingValue,selectedDatabaseIndex:v,keyPattern:f,canEditSelectedValue:l.canEditSelectedValue,editUnavailableReason:l.editUnavailableReason,refreshKeys:l.refreshKeys,openKey:l.openKey,focusKey:l.focusKey,saveSelectedValue:l.saveSelectedValue}}const ae={class:"flex min-w-0 items-center gap-1.5 pr-5 text-left"},te={class:"flex min-w-0 items-center gap-2"},se={class:"truncate"},le={class:"text-xxs text-muted-foreground"},ie=F({__name:"RedisDBSelector",props:{databases:{},databaseIndex:{},compact:{type:Boolean},label:{},triggerId:{},triggerClass:{}},emits:["update:databaseIndex"],setup(a,{emit:s}){const t=a,d=s,n=m(()=>t.databases.length>0?t.databases:[{index:t.databaseIndex,label:`DB ${t.databaseIndex}`,keyCount:0,expires:0,avgTtl:null}]),r=m(()=>t.triggerId||"redis-db-index"),v=m(()=>n.value.find(l=>l.index===t.databaseIndex)??n.value[0]),f=m(()=>t.compact?["h-6! w-fit gap-1 px-2 text-xs",t.triggerClass].filter(Boolean).join(" "):["w-full",t.triggerClass].filter(Boolean).join(" "));return(l,o)=>{const e=q,c=M,y=z,b=j;return R(),V("div",{class:P(l.compact?"w-[132px]":"space-y-1")},[l.compact?U("",!0):(R(),N(x(W),{key:0,for:x(r)},{default:D(()=>[A(w(l.label||"Databases"),1)]),_:1},8,["for"])),B(b,{"model-value":String(l.databaseIndex),"onUpdate:modelValue":o[0]||(o[0]=u=>d("update:databaseIndex",Number(u)||0))},{default:D(()=>[B(e,{id:x(r),size:"sm",class:P(x(f))},{default:D(()=>{var u,h;return[g("div",ae,[g("span",{class:P(l.compact?"truncate text-xs":"truncate text-sm")},w(((u=x(v))==null?void 0:u.label)||"Select DB"),3),g("span",{class:P(["shrink-0 text-muted-foreground",(l.compact,"text-xxs")])},w(((h=x(v))==null?void 0:h.keyCount)??0)+" keys ",3)])]}),_:1},8,["id","class"]),B(y,null,{default:D(()=>[(R(!0),V(L,null,H(x(n),u=>(R(),N(c,{key:u.index,value:String(u.index)},{default:D(()=>[g("div",te,[g("span",se,w(u.label),1),g("span",le,w(u.keyCount)+" keys ",1)])]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["model-value"])],2)}}});export{G as R,ie as _,ue as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as a,c as s,a as e,C as t}from"./Buh0pI3n.js";import{_ as i}from"./B_ERKujF.js";import"./DA4Xn6lm.js";import"./BG-rJefG.js";import"./9sDqz0uT.js";import"./DRh-06Hb.js";import"./D0lW43G8.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{U as a,D as n}from"./B_ERKujF.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d,aj as V,r as D,k as p,o as i,w as u,f as M,g as e,ak as h,bT as q,D as c,bU as P,ax as $,p as f,bV as w,ae as R,ar as k,ab as v,ac as y,as as z,c as B,aa as C,a9 as j,bN as I,n as S,j as b,m as E}from"./
|
|
1
|
+
import{d,aj as V,r as D,k as p,o as i,w as u,f as M,g as e,ak as h,bT as q,D as c,bU as P,ax as $,p as f,bV as w,ae as R,ar as k,ab as v,ac as y,as as z,c as B,aa as C,a9 as j,bN as I,n as S,j as b,m as E}from"./D0lW43G8.js";import{M as F}from"./Dunt8-TF.js";import{C as N}from"./YdOCcCRS.js";const[A,L]=V(["MenuCheckboxItem","MenuRadioItem"],"MenuItemIndicatorContext");var O=d({__name:"MenuItemIndicator",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(s){const t=A({modelValue:D(!1)});return(a,r)=>(i(),p(e($),{present:a.forceMount||e(P)(e(t).modelValue.value)||e(t).modelValue.value===!0},{default:u(()=>[M(e(h),{as:a.as,"as-child":a.asChild,"data-state":e(q)(e(t).modelValue.value)},{default:u(()=>[c(a.$slots,"default")]),_:3},8,["as","as-child","data-state"])]),_:3},8,["present"]))}}),T=O,U=d({__name:"MenuGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const t=s;return(a,r)=>(i(),p(e(h),f({role:"group"},t),{default:u(()=>[c(a.$slots,"default")]),_:3},16))}}),H=U;const[J,K]=V("MenuRadioGroup");var Q=d({__name:"MenuRadioGroup",props:{modelValue:{type:null,required:!1,default:""},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["update:modelValue"],setup(s,{emit:t}){const a=s,r=t,l=w(a,["modelValue"]),n=R(l),o=k(a,"modelValue",r);return K({modelValue:o,onValueChange:_=>{o.value=_}}),(_,m)=>(i(),p(H,v(y(e(n))),{default:u(()=>[c(_.$slots,"default",{modelValue:e(o)})]),_:3},16))}}),W=Q,X=d({__name:"MenuRadioItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(s,{emit:t}){const a=s,r=t,l=w(a,["value"]),n=R(l),{value:o}=z(a),_=J(),m=B(()=>_.modelValue.value===(o==null?void 0:o.value));return L({modelValue:m}),(x,g)=>(i(),p(F,f({role:"menuitemradio"},e(n),{"aria-checked":m.value,"data-state":e(q)(m.value),onSelect:g[0]||(g[0]=async G=>{r("select",G),e(_).onValueChange(e(o))})}),{default:u(()=>[c(x.$slots,"default")]),_:3},16,["aria-checked","data-state"]))}}),Y=X,Z=d({__name:"DropdownMenuItemIndicator",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const t=s;return C(),(a,r)=>(i(),p(e(T),v(y(t)),{default:u(()=>[c(a.$slots,"default")]),_:3},16))}}),ee=Z,ae=d({__name:"DropdownMenuRadioGroup",props:{modelValue:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["update:modelValue"],setup(s,{emit:t}){const a=s,l=j(t);return C(),(n,o)=>(i(),p(e(W),v(y({...a,...e(l)})),{default:u(()=>[c(n.$slots,"default")]),_:3},16))}}),te=ae,se=d({__name:"DropdownMenuRadioItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(s,{emit:t}){const l=I(s,t);return C(),(n,o)=>(i(),p(e(Y),v(y(e(l))),{default:u(()=>[c(n.$slots,"default")]),_:3},16))}}),oe=se;const de=d({__name:"BreadcrumbLink",props:{asChild:{type:Boolean},as:{default:"a"},class:{}},setup(s){const t=s;return(a,r)=>(i(),p(e(h),{"data-slot":"breadcrumb-link",as:a.as,"as-child":a.asChild,class:S(e(b)("hover:text-foreground transition-colors",t.class))},{default:u(()=>[c(a.$slots,"default")]),_:3},8,["as","as-child","class"]))}}),pe=d({__name:"DropdownMenuRadioGroup",props:{modelValue:{},asChild:{type:Boolean},as:{}},emits:["update:modelValue"],setup(s,{emit:t}){const l=I(s,t);return(n,o)=>(i(),p(e(te),f({"data-slot":"dropdown-menu-radio-group"},e(l)),{default:u(()=>[c(n.$slots,"default")]),_:3},16))}}),re={class:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center"},ie=d({__name:"DropdownMenuRadioItem",props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{}},emits:["select"],setup(s,{emit:t}){const a=s,r=t,l=B(()=>{const{class:o,..._}=a;return _}),n=I(l,r);return(o,_)=>(i(),p(e(oe),f({"data-slot":"dropdown-menu-radio-item"},e(n),{class:e(b)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",a.class)}),{default:u(()=>[E("span",re,[M(e(ee),null,{default:u(()=>[M(e(N),{class:"size-2 fill-current"})]),_:1})]),c(o.$slots,"default")]),_:3},16,["class"]))}});export{ee as D,pe as _,ie as a,de as b,L as p};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"ad11b978-8fdd-4bb2-9b38-1d6fe93f994e","timestamp":1777790752305}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"ad11b978-8fdd-4bb2-9b38-1d6fe93f994e","timestamp":1777790752305,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as a,l as s,L as o,e as i}from"./
|
|
1
|
+
import{_ as a,l as s,L as o,e as i}from"./B_ERKujF.js";import{p as g}from"./CY_CG0AU.js";import"./D0lW43G8.js";var p={parse:a(async r=>{const e=await g("info",r);s.debug(e)},"parse")},v={version:"11.13.0"},d=a(()=>v.version,"getVersion"),m={getVersion:d},c=a((r,e,n)=>{s.debug(`rendering info diagram
|
|
2
2
|
`+r);const t=o(e);i(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${n}`)},"draw"),l={draw:c},b={parser:p,db:m,renderer:l};export{b as diagram};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as f,k as d,o as $,w as e,f as a,W as g,X as w,Y as D,z as t,t as s,Z as k,$ as v,a0 as y,a1 as B}from"./
|
|
1
|
+
import{d as f,k as d,o as $,w as e,f as a,W as g,X as w,Y as D,z as t,t as s,Z as k,$ as v,a0 as y,a1 as B}from"./D0lW43G8.js";const Q=f({__name:"QuickQueryErrorPopup",props:{open:{type:Boolean},title:{default:"Query error!"},message:{},actionLabel:{default:"OK"}},emits:["update:open"],setup(C){return(o,n)=>{const i=D,p=w,_=k,c=y,r=v,m=g,u=B;return $(),d(u,{open:!!o.open,"onUpdate:open":n[1]||(n[1]=l=>o.$emit("update:open",l))},{default:e(()=>[a(m,{class:"w-[30vw] min-w-96"},{default:e(()=>[a(p,{class:"pb-0"},{default:e(()=>[a(i,null,{default:e(()=>[t(s(o.title),1)]),_:1})]),_:1}),a(_,{class:"decoration-wavy underline decoration-red-600 overflow-auto max-h-[30vh]"},{default:e(()=>[t(s(o.message),1)]),_:1}),a(r,{class:"pt-0"},{default:e(()=>[a(c,{onClick:n[0]||(n[0]=l=>o.$emit("update:open",!1)),class:"w-full"},{default:e(()=>[t(s(o.actionLabel),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])}}});export{Q as _};
|