planche 0.8.14 → 0.9.1
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/app/assets/7jD5h8Yx.js +4 -0
- package/app/assets/7jG9Xw-H.js +1 -0
- package/app/assets/84VwJAQi.js +1 -0
- package/app/assets/9gOj-Ty3.js +1 -0
- package/app/assets/B4S-lOKS.js +2 -0
- package/app/assets/B7zF7RU4.js +2 -0
- package/app/assets/{CjoKIEBz.js → B9dhM8vw.js} +1 -1
- package/app/assets/BDtsGuIR.js +4 -0
- package/app/assets/BEH9Jqkv.js +1 -0
- package/app/assets/BFw3KCAr.js +1 -0
- package/app/assets/BGuDcBB_.js +1 -0
- package/app/assets/BGvsBpIS.js +1 -0
- package/app/assets/BMBWoD5w.js +1 -0
- package/app/assets/BMFLhX-x.js +1 -0
- package/app/assets/BNB62Dfu.js +1 -0
- package/app/assets/BPPUDpI0.js +1 -0
- package/app/assets/BPmMKRmE.js +3 -0
- package/app/assets/BQ1Rcyw6.js +1 -0
- package/app/assets/BRZhVXRC.js +1 -0
- package/app/assets/BSziALTN.js +1 -0
- package/app/assets/BTaXXwBP.js +27 -0
- package/app/assets/BYvM8E39.js +1 -0
- package/app/assets/BbOETtQZ.js +7 -0
- package/app/assets/Bbx7_Uyd.js +1 -0
- package/app/assets/BhX9zWzC.js +1 -0
- package/app/assets/BixvbqFe.js +1 -0
- package/app/assets/BjwrN_ch.js +11 -0
- package/app/assets/BkXrfAoR.js +1 -0
- package/app/assets/BnJGrP6V.js +4 -0
- package/app/assets/BrVnzO7b.js +1 -0
- package/app/assets/ByKF67UY.js +1 -0
- package/app/assets/C1gqjEN3.js +1 -0
- package/app/assets/C1kpKIsO.js +1 -0
- package/app/assets/C6712dxU.js +1 -0
- package/app/assets/C77ZEZfM.js +1 -0
- package/app/assets/CExE8dKz.js +959 -0
- package/app/assets/CFUkTo-F.js +1 -0
- package/app/assets/CFu5QMhX.js +4 -0
- package/app/assets/CHx7zgT8.js +1 -0
- package/app/assets/CRnmOOqq.js +1 -0
- package/app/assets/{CoSpkBZh.js → CTnwm-29.js} +1 -1
- package/app/assets/{B1pia_Rg.js → CYz610vE.js} +1 -1
- package/app/assets/CaU3pCK6.js +1 -0
- package/app/assets/CgQ0qqq4.js +1 -0
- package/app/assets/CiL8zoYm.js +1 -0
- package/app/assets/CoZCOAph.js +3 -0
- package/app/assets/{ClQzFEcL.js → CrhJJH3f.js} +1 -1
- package/app/assets/CrlnxAGW.js +1 -0
- package/app/assets/Cu_sGzNJ.js +1 -0
- package/app/assets/D0Ya12SQ.js +1 -0
- package/app/assets/D1kyupCL.js +1 -0
- package/app/assets/D3lUezEb.js +1 -0
- package/app/assets/D8_hwGjG.js +1 -0
- package/app/assets/{CEtGUZGE.js → D8dVzi6I.js} +1 -1
- package/app/assets/D9QeXBOk.js +1 -0
- package/app/assets/DCHRj2vY.js +1 -0
- package/app/assets/DF7EZh_S.js +2 -0
- package/app/assets/DHZOxCSJ.js +1 -0
- package/app/assets/DNHPk-9r.js +4 -0
- package/app/assets/DPyLA6Dl.js +8 -0
- package/app/assets/DTkqO0Em.js +1 -0
- package/app/assets/DU-Eln5x.js +1 -0
- package/app/assets/DaBfnZOJ.js +1 -0
- package/app/assets/Djxg54qH.js +1 -0
- package/app/assets/Do7KpDxk.js +1 -0
- package/app/assets/DpEN2jyA.js +1 -0
- package/app/assets/DzRyVlxz.js +41 -0
- package/app/assets/DzdX4vRD.js +1 -0
- package/app/assets/G06qjCej.js +1 -0
- package/app/assets/Nro86Y63.js +1 -0
- package/app/assets/S7HbowYz.js +373 -0
- package/app/assets/Udlj1Cgf.js +1 -0
- package/app/assets/W7D4Svcn.js +1 -0
- package/app/assets/{C0bzfYFC.js → XCH_yrJ8.js} +1 -1
- package/app/assets/_zaonxnw.js +1 -0
- package/app/assets/aIFwnVFr.js +4 -0
- package/app/assets/kXDKfUfE.js +4 -0
- package/app/assets/qRIRkBN0.js +1 -0
- package/app/assets/tJkeLYCp.js +1 -0
- package/app/assets/w46wk7KI.css +2 -0
- package/app/index.html +35 -27
- package/app/landing.css +17 -0
- package/dist/{chunk-XAI7WLQN.js → chunk-SDRLD5PK.js} +995 -121
- package/dist/embed.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +6 -2
- package/app/assets/8RmjiG1u.js +0 -1
- package/app/assets/B6E7IbMa.js +0 -1
- package/app/assets/BBLekwhn.js +0 -1
- package/app/assets/BCmzDvBt.js +0 -1
- package/app/assets/BHsXOlR9.js +0 -2
- package/app/assets/BLPGwQub.js +0 -1
- package/app/assets/BO_H_8D-.js +0 -1
- package/app/assets/BUcTqhSL.js +0 -1
- package/app/assets/BX4n4TJQ.js +0 -1
- package/app/assets/BZ6aghND.js +0 -959
- package/app/assets/BbFio3pA.js +0 -1
- package/app/assets/BbdU8Zop.js +0 -2
- package/app/assets/Bdp1DKAx.js +0 -1
- package/app/assets/BgkATqP8.js +0 -1
- package/app/assets/Bpq2Whsw.js +0 -3
- package/app/assets/BuhEpB12.js +0 -1
- package/app/assets/BxW20weH.js +0 -1
- package/app/assets/C-8gMuEc.js +0 -1
- package/app/assets/C29gYFqD.js +0 -2
- package/app/assets/C3PpGnxB.js +0 -1
- package/app/assets/CF6jyexg.js +0 -41
- package/app/assets/CNC8pjhK.js +0 -1
- package/app/assets/CS2mpWDL.js +0 -1
- package/app/assets/CSYxJn5_.js +0 -1
- package/app/assets/CVpzA8TC.js +0 -8
- package/app/assets/CZoj-eMm.js +0 -1
- package/app/assets/Cf8o-5U6.js +0 -2
- package/app/assets/CkPnfgzt.js +0 -2
- package/app/assets/ClIJYMXh.js +0 -1
- package/app/assets/CxGlndnu.js +0 -1
- package/app/assets/D0jMUNSI.js +0 -2
- package/app/assets/D3ZaTPbf.js +0 -1
- package/app/assets/D6kbK-ng.js +0 -1
- package/app/assets/DEEGN6UG.js +0 -6
- package/app/assets/DF5d9evm.js +0 -1
- package/app/assets/DGpfJHer.js +0 -1
- package/app/assets/DOU2MWdA.js +0 -1
- package/app/assets/DPdwSUSw.js +0 -1
- package/app/assets/DXtaGfxh.js +0 -1
- package/app/assets/DbqogdCK.js +0 -356
- package/app/assets/DdHg_zlz.js +0 -1
- package/app/assets/DiIO0MJM.js +0 -1
- package/app/assets/DnZlL3PP.js +0 -1
- package/app/assets/H8HkC925.js +0 -1
- package/app/assets/KuSp3gJs.css +0 -2
- package/app/assets/VZqLr_d1.js +0 -7
- package/app/assets/_OOlglTI.js +0 -1
- package/app/assets/bgQ-QVd7.js +0 -1
- package/app/assets/mA5FXiEh.js +0 -2
- package/app/assets/mZyfO6B4.js +0 -1
- package/app/assets/p4yYbMPY.js +0 -2
- package/app/assets/pjlgs2cl.js +0 -1
- package/app/assets/pneb1la9.js +0 -1
- package/app/assets/uVZVQeN3.js +0 -27
- package/app/assets/zspOy9D_.js +0 -2
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,t as l}from"./DzRyVlxz.js";import{a as u,i as d,n as f,r as p,t as m}from"./G06qjCej.js";import{t as h}from"./S7HbowYz.js";import{n as g}from"./D8_hwGjG.js";import{n as _}from"./C1gqjEN3.js";import{C as v,a as y}from"./BkXrfAoR.js";import{r as b}from"./BRZhVXRC.js";import{o as x,r as S}from"./B9dhM8vw.js";import{c as C,vt as w}from"./CExE8dKz.js";import{t as T}from"./CnYBZPf9.js";var E=e(t(),1),D=i();function O(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function k(){let{t:e}=r(),{activeDialog:t,closeDialog:i}=g(),{activeConnectionId:k,activeConnections:A}=h(),{trees:j}=v(),M=_(),N=t===`export-html`,P=(0,E.useMemo)(()=>k?S(j[k]??[]):[],[k,j]),F=(0,E.useMemo)(()=>{if(!k)return``;let e=M.activeTabId[k];return(M.tabs[k]??[]).find(t=>t.id===e)?.database||``},[k,M.activeTabId,M.tabs]),[I,L]=(0,E.useState)(``),R=(0,E.useMemo)(()=>!k||!I?[]:x(j[k]??[],I),[k,I,j]),[z,B]=(0,E.useState)([]),[V,H]=(0,E.useState)(!0),[U,W]=(0,E.useState)(!0),[G,K]=(0,E.useState)(!0),[q,J]=(0,E.useState)(!1);(0,E.useEffect)(()=>{N&&F&&L(F)},[N,F]);function Y(e){e||(i(),L(``),B([]),H(!0),W(!0),K(!0))}function X(e){B(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}function Z(){B(R.length===z.length?[]:[...R])}async function Q(){if(z.length===0||!k)return;let t=A.find(e=>e.id===k);if(!t?.serverConnectionId)return;J(!0);let{introspect:n}=b(k),r=y(t.serverConnectionId),a=(e,t,n)=>{let r=`<h3>${O(e)}</h3>\n<table border="1" cellpadding="4" cellspacing="0">\n`;r+=`<tr>${t.map(e=>`<th>${O(e)}</th>`).join(``)}</tr>\n`;for(let e of n)r+=`<tr>${e.map(e=>`<td>${O(e==null?`NULL`:String(e))}</td>`).join(``)}</tr>\n`;return r+`</table>
|
|
2
|
+
`};try{let t=[];for(let i of z){let o=`<h2>${O(i)}</h2>\n`;if(V){let t=await n.listColumns(r,I,i);t.length>0&&(o+=a(e(`database.html.sectionColumns`),[`Field`,`Type`,`Null`,`Key`,`Default`,`Extra`,`Comment`],t.map(e=>[e.name,e.type,e.nullable?`YES`:`NO`,e.key,e.defaultValue,e.extra,e.comment])))}if(U){let t=await n.listIndexes(r,I,i);t.length>0&&(o+=a(e(`database.html.sectionIndexes`),[`Key_name`,`Type`,`Columns`],t.map(e=>[e.name,e.type,e.columns.join(`, `)])))}if(G){let t=await n.getTableInfo(r,I,i);t&&(o+=a(e(`database.html.sectionProperties`),[`Name`,`Engine`,`Collation`,`Rows`,`Data_length`,`Create_time`,`Update_time`,`Comment`],[[t.name,t.engine,t.collation,t.rows,t.dataLength,t.createTime,t.updateTime,t.comment]]))}t.push(o)}let i=`<!DOCTYPE html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<title>${O(e(`database.html.docTitle`,{database:I}))}</title>
|
|
7
|
+
<style>
|
|
8
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; margin: 20px; color: #333; }
|
|
9
|
+
h1 { border-bottom: 2px solid #333; padding-bottom: 8px; }
|
|
10
|
+
h2 { margin-top: 30px; color: #1a5276; border-bottom: 1px solid #ddd; padding-bottom: 4px; }
|
|
11
|
+
h3 { color: #555; margin-top: 12px; }
|
|
12
|
+
table { border-collapse: collapse; width: 100%; margin-bottom: 16px; font-size: 13px; }
|
|
13
|
+
th { background: #f0f0f0; text-align: left; }
|
|
14
|
+
td, th { padding: 6px 10px; border: 1px solid #ccc; }
|
|
15
|
+
tr:nth-child(even) { background: #fafafa; }
|
|
16
|
+
.footer { margin-top: 40px; font-size: 12px; color: #999; }
|
|
17
|
+
</style>
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
<h1>${O(e(`database.html.heading`,{database:I}))}</h1>
|
|
21
|
+
<p>${O(e(`database.html.summary`,{count:z.length,date:new Date().toLocaleString()}))}</p>
|
|
22
|
+
${t.join(`
|
|
23
|
+
<hr>
|
|
24
|
+
`)}
|
|
25
|
+
<div class="footer">${O(e(`database.html.footer`))}</div>
|
|
26
|
+
</body>
|
|
27
|
+
</html>`,o=new Blob([i],{type:`text/html;charset=utf-8;`}),s=URL.createObjectURL(o),c=document.createElement(`a`);c.href=s,c.download=T(`${I}_schema.html`),c.click(),URL.revokeObjectURL(s)}finally{J(!1),i()}}return(0,D.jsx)(l,{open:N,onOpenChange:Y,children:(0,D.jsxs)(s,{className:`sm:max-w-[500px]`,children:[(0,D.jsx)(a,{children:(0,D.jsx)(c,{children:e(`database.html.title`)})}),(0,D.jsxs)(`div`,{className:`space-y-4`,children:[(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(C,{children:e(`database.html.database`)}),(0,D.jsxs)(m,{value:I,onValueChange:e=>{L(e),B([])},children:[(0,D.jsx)(d,{className:`w-full`,children:(0,D.jsx)(u,{placeholder:e(`database.html.selectDatabase`)})}),(0,D.jsx)(f,{children:P.map(e=>(0,D.jsx)(p,{value:e,children:e},e))})]})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,D.jsx)(C,{children:e(`database.html.tables`)}),(0,D.jsx)(n,{variant:`ghost`,size:`sm`,className:`h-6 text-xs`,onClick:Z,children:z.length===R.length?e(`database.html.deselectAll`):e(`database.html.selectAll`)})]}),(0,D.jsx)(w,{className:`h-[200px] border rounded-md p-2`,children:R.length===0?(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`database.html.noTables`)}):(0,D.jsx)(`div`,{className:`space-y-1`,children:R.map(e=>(0,D.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer hover:bg-muted/50 rounded px-1 py-0.5`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:z.includes(e),onChange:()=>X(e)}),e]},e))})})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(C,{children:e(`database.html.include`)}),(0,D.jsxs)(`div`,{className:`space-y-1`,children:[(0,D.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:V,onChange:e=>H(e.target.checked)}),e(`database.html.includeColumns`)]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:U,onChange:e=>W(e.target.checked)}),e(`database.html.includeIndexes`)]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:G,onChange:e=>K(e.target.checked)}),e(`database.html.includeProperties`)]})]})]})]}),(0,D.jsxs)(o,{children:[(0,D.jsx)(n,{variant:`outline`,onClick:()=>Y(!1),children:e(`database.html.cancel`)}),(0,D.jsx)(n,{onClick:Q,disabled:z.length===0||q,children:e(q?`database.html.generating`:`database.html.generate`)})]})]})})}export{k as SchemaToHTMLDialog};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{r as n}from"./Cu_sGzNJ.js";import{a as r,o as i}from"./Udlj1Cgf.js";var a=e(t(),1),o=n();function s({access:e,value:t,onChange:n,disabled:s,version:c=0}){let[l,u]=(0,a.useState)([]);(0,a.useEffect)(()=>{let t=!1;return e.tryRead(`INFO keyspace`).then(e=>{t||typeof e!=`string`||u(Object.entries(r(e).keyspace??{}).map(([e,t])=>({db:e,keys:i(t).keys})))}),()=>{t=!0}},[e,c]);let d=l.some(e=>e.db===t)?l:[{db:t,keys:NaN},...l];return(0,o.jsx)(`select`,{value:t,disabled:s,onChange:e=>n(e.target.value),className:`h-7 rounded border bg-background px-1 text-xs`,children:d.map(e=>(0,o.jsxs)(`option`,{value:e.db,children:[e.db,Number.isFinite(e.keys)?` (${e.keys.toLocaleString()})`:``]},e.db))})}export{s as t};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{o as t,p as n}from"./CYz610vE.js";import{t as r}from"./CiL8zoYm.js";import{i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,t as u}from"./DzRyVlxz.js";import{a as d,i as f,n as p,r as m,t as h}from"./G06qjCej.js";import{t as g}from"./S7HbowYz.js";import{n as _,t as ee}from"./D8_hwGjG.js";import{a as v}from"./BkXrfAoR.js";import{r as y}from"./BRZhVXRC.js";import{t as te}from"./9gOj-Ty3.js";import{t as b}from"./Bs5VSn0X.js";import{c as x,dt as S,pt as ne}from"./CExE8dKz.js";var C=e(n(),1),w=[`VIEW`,`PROCEDURE`,`FUNCTION`,`TRIGGER`,`EVENT`];function T(e,t){return e.replace(/\bDEFINER\s*=\s*(?:`[^`]*`|'[^']*'|"[^"]*"|\w+)@(?:`[^`]*`|'[^']*'|"[^"]*"|[\w.%-]+)/gi,``).replace(/\bSQL SECURITY (?:DEFINER|INVOKER)\b/gi,``).replace(/\bALGORITHM\s*=\s*\w+/gi,``).replace(RegExp(`[\`"\\[]?${t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}[\`"\\]]?\\.`,`gi`),``).replace(/\s+/g,` `).replace(/;\s*$/,``).trim()}function E(e,t){let n=[];for(let r of w){let i=e.objects?.get(r),a=t.objects?.get(r);if(!i&&!a)continue;let o=[...new Set([...i?.keys()??[],...a?.keys()??[]])].sort();for(let s of o){let o=i?.get(s)??null,c=a?.get(s)??null,l;l=o?c?o.sql!==null&&c.sql!==null&&T(o.sql,e.database)===T(c.sql,t.database)?`identical`:`changed`:`missingInTarget`:`missingInSource`,n.push({type:r,name:s,status:l,source:o,target:c})}}return n}var D=e=>e.toLowerCase().replace(/\s+/g,` `).trim(),O=e=>e===null?null:e.trim().replace(/^'(.*)'(?:::\w+)?$/s,`$1`),k=e=>e.addedColumns.length+e.removedColumns.length+e.changedColumns.length+e.addedIndexes.length+e.removedIndexes.length+e.changedIndexes.length>0;function A(e,t){let n=[];return D(e.type)!==D(t.type)&&n.push(`type`),e.nullable!==t.nullable&&n.push(`nullable`),O(e.defaultValue)!==O(t.defaultValue)&&n.push(`default`),e.extra.toLowerCase()!==t.extra.toLowerCase()&&n.push(`extra`),n}var j=(e,t)=>e.type===t.type&&e.columns.length===t.columns.length&&e.columns.every((e,n)=>e===t.columns[n]);function M(e,t,n){let r=t.columns.get(e)??[],i=n.columns.get(e)??[],a=new Map(i.map(e=>[e.name,e])),o=new Map(r.map(e=>[e.name,e])),s={table:e,addedColumns:r.filter(e=>!a.has(e.name)),removedColumns:i.filter(e=>!o.has(e.name)),changedColumns:[],addedIndexes:[],removedIndexes:[],changedIndexes:[]};for(let e of r){let t=a.get(e.name);if(!t)continue;let n=A(e,t);n.length>0&&s.changedColumns.push({name:e.name,source:e,target:t,attributes:n})}let c=t.indexes.get(e)??[],l=n.indexes.get(e)??[],u=new Map(l.map(e=>[e.name,e])),d=new Map(c.map(e=>[e.name,e]));s.addedIndexes=c.filter(e=>!u.has(e.name)),s.removedIndexes=l.filter(e=>!d.has(e.name));for(let e of c){let t=u.get(e.name);t&&!j(e,t)&&s.changedIndexes.push({name:e.name,source:e,target:t})}return s}function N(e,t){let n=new Set(t.tables),r=new Set(e.tables),i={missingInTarget:[],missingInSource:[],changed:[],identical:[],objects:E(e,t)};for(let r of e.tables){if(!n.has(r)){i.missingInTarget.push(r);continue}let a=M(r,e,t);k(a)?i.changed.push(a):i.identical.push(r)}return i.missingInSource=t.tables.filter(e=>!r.has(e)),i}var P=e=>e.split(`
|
|
2
|
+
`).map(e=>`-- ${e}`).join(`
|
|
3
|
+
`);function F(e,t,n,r,i={}){let a=n.ddl,o=r.database,s=e=>i.includeDrops?e:P(e),c=[`-- Schema sync: ${t.database} -> ${o} (${n.label})`,`-- Review before running. Statements that drop data are commented out unless "Include DROP statements" was checked.`,``];for(let r of e.missingInTarget)c.push(`-- Table ${r} is missing in the target`),c.push(I(r,t,n,o)),c.push(``);for(let t of e.changed){c.push(`-- Table ${t.table}`);for(let e of t.removedIndexes)c.push(s(a.dropIndex(o,t.table,e.name)));for(let e of t.changedIndexes)c.push(s(a.dropIndex(o,t.table,e.name)));for(let e of t.addedColumns)c.push(a.addColumn(o,t.table,e));for(let e of t.changedColumns){let r=a.alterColumn(o,t.table,e.source);c.push(r??P(`${n.label} cannot alter column ${e.name} in place (${e.attributes.join(`, `)}): recreate the table`))}for(let e of t.removedColumns)c.push(s(a.dropColumn(o,t.table,e.name)));for(let e of t.addedIndexes)c.push(a.createIndex(o,t.table,e));for(let e of t.changedIndexes)c.push(a.createIndex(o,t.table,e.source));c.push(``)}for(let t of e.missingInSource)c.push(`-- Table ${t} exists only in the target`),c.push(s(`DROP TABLE ${n.qualify(o,t)};`)),c.push(``);for(let t of e.objects){if(t.status===`identical`)continue;let e=`${t.type.charAt(0)}${t.type.slice(1).toLowerCase()} ${t.name}`,r=R(n,o,t);t.status===`missingInSource`?(c.push(`-- ${e} exists only in the target`),c.push(s(r))):(c.push(t.status===`changed`?`-- ${e} differs; recreated from the source`:`-- ${e} is missing in the target`),t.status===`changed`&&c.push(s(r)),c.push(t.source?.sql?z(t.source.sql):P(`the source engine did not return a CREATE statement for ${e}`))),c.push(``)}return c.join(`
|
|
4
|
+
`).replace(/\n{3,}/g,`
|
|
5
|
+
|
|
6
|
+
`).trim()+`
|
|
7
|
+
`}function I(e,t,n,r){let i=b(r,e,t.columns.get(e)??[],t.indexes.get(e)??[],null);return n.ddl.createTable(i)}var L={VIEW:`DROP_VIEW`,PROCEDURE:`DROP_PROCEDURE`,FUNCTION:`DROP_FUNCTION`,TRIGGER:`DROP_TRIGGER`,EVENT:`DROP_EVENT`};function R(e,t,n){let r=L[n.type];if(!e.hasQuery(r))return`-- ${e.label} has no ${n.type} objects`;let i=n.target?.table??n.source?.table??``;return`${e.getQuery(r,t,n.name,``,i).replace(/\s{2,}/g,` `).trim()};`}function z(e){let t=e.trim();return/;\s*$/.test(t)?t:`${t};`}var B=a(),re=e=>e instanceof Error?e.message:String(e),V=e=>`${e.type}:${e.name}`,H=e=>e.hostName||e.host||e.file||e.id;function U({id:e,label:t,side:n,onChange:r,connections:a,disabled:o}){let{t:s}=i(),[c,l]=(0,C.useState)([]),u=a.find(e=>e.id===n.connectionId);return(0,C.useEffect)(()=>{if(!u?.serverConnectionId)return;let e=!1,t=y(u.id),i=v(u.serverConnectionId);return(async()=>{try{let a=await t.introspect.listDatabases(i);if(e)return;l(a),a.includes(n.database)||r({connectionId:u.id,database:a[0]??``})}catch{e||l([])}})(),()=>{e=!0}},[u?.id,u?.serverConnectionId]),(0,B.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3`,children:[(0,B.jsx)(x,{className:`font-medium`,children:t}),(0,B.jsxs)(h,{value:n.connectionId,onValueChange:e=>r({connectionId:e,database:``}),disabled:o,children:[(0,B.jsx)(f,{id:`${e}-conn`,className:`w-full`,children:(0,B.jsx)(d,{placeholder:s(`database.diff.pickConnection`)})}),(0,B.jsx)(p,{children:a.map(e=>(0,B.jsx)(m,{value:e.id,children:H(e)},e.id))})]}),(0,B.jsxs)(h,{value:n.database,onValueChange:e=>r({...n,database:e}),disabled:o||c.length===0,children:[(0,B.jsx)(f,{id:`${e}-db`,className:`w-full`,children:(0,B.jsx)(d,{placeholder:s(`database.diff.pickDatabase`)})}),(0,B.jsx)(p,{children:c.map(e=>(0,B.jsx)(m,{value:e,children:e},e))})]})]})}async function W(e){let t=g.getState().activeConnections.find(t=>t.id===e.connectionId);if(!t?.serverConnectionId)throw Error(`Not connected`);let n=y(t.id),r=v(t.serverConnectionId),[i,a,o,s]=await Promise.all([n.introspect.listTables(r,e.database),n.introspect.listAllColumns(r,e.database),n.introspect.listAllIndexes(r,e.database),G(n,r,e.database)]);return{database:e.database,tables:i.map(e=>e.name).sort(),columns:a,indexes:o,objects:s}}async function G(e,t,n){let{introspect:r,capabilities:i}=e,a={VIEW:async()=>(await r.listViews(t,n)).map(e=>({name:e}))};i.procedures&&(a.PROCEDURE=async()=>(await r.listProcedures(t,n)).map(e=>({name:e}))),i.functions&&(a.FUNCTION=async()=>(await r.listFunctions(t,n)).map(e=>({name:e}))),i.triggers&&(a.TRIGGER=async()=>r.listTriggerDetails?r.listTriggerDetails(t,n):(await r.listTriggers(t,n)).map(e=>({name:e}))),i.events&&(a.EVENT=async()=>(await r.listEvents(t,n)).map(e=>({name:e})));let o=new Map;for(let e of w){let i=a[e];if(!i)continue;let s=await i(),c=new Map;for(let i of s){let a=null;try{a=await r.getCreateStatement(t,n,e,i.name)}catch{}c.set(i.name,i.table?{sql:a,table:i.table}:{sql:a})}o.set(e,c)}return o}function ie({diff:e}){let{t}=i(),n=e=>(0,B.jsx)(`pre`,{className:`whitespace-pre-wrap break-all text-xs font-mono`,children:e?e.sql??t(`database.diff.noDefinition`):`—`});return(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:t(`database.diff.source`)}),n(e.source)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:t(`database.diff.target`)}),n(e.target)]})]})}var K=e=>`${e.type}${e.nullable?``:` NOT NULL`}${e.defaultValue===null?``:` DEFAULT ${e.defaultValue}`}${e.extra?` ${e.extra}`:``}`;function ae({diff:e}){let{t}=i(),n=[];for(let r of e.addedColumns)n.push({kind:t(`database.diff.column`),name:r.name,source:K(r),target:`—`,tone:`text-green-600 dark:text-green-400`});for(let r of e.removedColumns)n.push({kind:t(`database.diff.column`),name:r.name,source:`—`,target:K(r),tone:`text-destructive`});for(let r of e.changedColumns)n.push({kind:t(`database.diff.column`),name:`${r.name} (${r.attributes.join(`, `)})`,source:K(r.source),target:K(r.target),tone:`text-amber-600 dark:text-amber-400`});for(let r of e.addedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`${r.type} (${r.columns.join(`, `)})`,target:`—`,tone:`text-green-600 dark:text-green-400`});for(let r of e.removedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`—`,target:`${r.type} (${r.columns.join(`, `)})`,tone:`text-destructive`});for(let r of e.changedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`${r.source.type} (${r.source.columns.join(`, `)})`,target:`${r.target.type} (${r.target.columns.join(`, `)})`,tone:`text-amber-600 dark:text-amber-400`});return(0,B.jsxs)(`table`,{className:`w-full text-xs font-mono`,children:[(0,B.jsx)(`thead`,{className:`text-muted-foreground`,children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{className:`text-left font-normal pr-2`,children:t(`database.diff.object`)}),(0,B.jsx)(`th`,{className:`text-left font-normal pr-2`,children:t(`database.diff.source`)}),(0,B.jsx)(`th`,{className:`text-left font-normal`,children:t(`database.diff.target`)})]})}),(0,B.jsx)(`tbody`,{children:n.map((e,t)=>(0,B.jsxs)(`tr`,{className:e.tone,children:[(0,B.jsxs)(`td`,{className:`pr-2 align-top whitespace-nowrap`,children:[e.kind,` `,e.name]}),(0,B.jsx)(`td`,{className:`pr-2 align-top break-all`,children:e.source}),(0,B.jsx)(`td`,{className:`align-top break-all`,children:e.target})]},t))})]})}function q(){let{t:e}=i(),n=_(e=>e.activeDialog),a=_(e=>e.closeDialog),d=g(e=>e.activeConnections),f=(0,C.useMemo)(()=>d.filter(e=>e.serverConnectionId),[d]),p=g(e=>e.activeConnectionId),m=n===`schema-diff`,h=ee(`schema-diff`),[v,b]=(0,C.useState)(()=>h&&f.some(e=>e.id===h.connectionId)?{connectionId:h.connectionId,database:h.database}:{connectionId:p&&f.some(e=>e.id===p)?p:f[0]?.id??``,database:``}),[x,w]=(0,C.useState)(()=>({connectionId:f.find(e=>e.id!==v.connectionId)?.id??v.connectionId,database:``})),[T,E]=(0,C.useState)(null),[D,O]=(0,C.useState)(null),[k,A]=(0,C.useState)(null),[j,M]=(0,C.useState)(!1),[P,I]=(0,C.useState)(!1),[L,R]=(0,C.useState)(!1),[z,H]=(0,C.useState)(null),G=v.connectionId===x.connectionId&&v.database===x.database,K=!!v.connectionId&&!!v.database&&!!x.connectionId&&!!x.database&&!G,q=x.connectionId?y(x.connectionId):null,J=v.connectionId?y(v.connectionId):null,oe=!!J&&!!q&&J.id!==q.id;async function se(){R(!0),H(null),O(null),A(null);try{let[e,n]=await Promise.all([W(v),W(x)]),r=N(e,n);E({source:e,target:n}),O(r);let i=h?.focus,a=null;if(i?.type===`TABLE`)a=r.changed.some(e=>e.table===i.name)?i.name:r.missingInTarget.includes(i.name)?`+${i.name}`:r.missingInSource.includes(i.name)?`-${i.name}`:null,r.identical.includes(i.name)&&I(!0);else if(i){let e=r.objects.find(e=>e.type===i.type&&e.name===i.name);e&&(a=V(e),e.status===`identical`&&I(!0))}A(a??r.changed[0]?.table??null),te(`compare_schemas`),t(`schema_diff`,{source_dbms:J?.id??`unknown`,target_dbms:q?.id??`unknown`,changed:r.changed.length,missing:r.missingInTarget.length+r.missingInSource.length})}catch(e){H(re(e))}finally{R(!1)}}let Y=(0,C.useMemo)(()=>!D||!T||!q?``:F(D,T.source,q,{database:x.database},{includeDrops:j}),[D,T,q,x.database,j]);function ce(){Y&&(ne(x.connectionId,Y,x.database,e(`database.diff.tabTitle`,{database:x.database})),a())}let X=D?.changed.find(e=>e.table===k)??null,Z=D?.objects.find(e=>V(e)===k)??null,Q=D?.objects.filter(e=>e.status!==`identical`)??[],le=D?e(`database.diff.summary`,{changed:D.changed.length+Q.filter(e=>e.status===`changed`).length,missingTarget:D.missingInTarget.length+Q.filter(e=>e.status===`missingInTarget`).length,missingSource:D.missingInSource.length+Q.filter(e=>e.status===`missingInSource`).length,identical:D.identical.length+D.objects.filter(e=>e.status===`identical`).length}):``,$=!!D&&D.changed.length+D.missingInTarget.length+D.missingInSource.length+Q.length>0,ue=e=>e===`missingInTarget`?`text-green-600 dark:text-green-400`:e===`missingInSource`?`text-destructive`:e===`changed`?`text-amber-600 dark:text-amber-400`:`text-muted-foreground`,de=e=>e===`missingInTarget`?`+`:e===`missingInSource`?`-`:e===`changed`?`~`:`=`;return(0,B.jsx)(u,{open:m,onOpenChange:e=>{e||a()},children:(0,B.jsxs)(c,{className:`sm:max-w-[860px]`,children:[(0,B.jsx)(o,{children:(0,B.jsx)(l,{children:e(`database.diff.title`)})}),(0,B.jsxs)(`div`,{className:`space-y-3`,children:[(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,B.jsx)(U,{id:`diff-source`,label:e(`database.diff.source`),side:v,onChange:b,connections:f,disabled:L}),(0,B.jsx)(U,{id:`diff-target`,label:e(`database.diff.target`),side:x,onChange:w,connections:f,disabled:L})]}),oe&&(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.crossEngineHint`)}),G&&v.database&&(0,B.jsx)(`p`,{className:`text-xs text-destructive`,children:e(`database.diff.sameSide`)}),z&&(0,B.jsx)(`p`,{className:`text-sm text-destructive whitespace-pre-wrap`,children:z}),D&&(0,B.jsxs)(`div`,{className:`space-y-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:le}),(0,B.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:P,onChange:e=>I(e.target.checked)}),e(`database.diff.showIdentical`)]})]}),(0,B.jsxs)(`div`,{className:`grid grid-cols-[220px_1fr] gap-3 h-[300px]`,children:[(0,B.jsxs)(`ul`,{className:`overflow-auto rounded-md border text-sm`,children:[D.missingInTarget.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-green-600 dark:text-green-400 ${k===`+${e}`?`bg-accent`:``}`,onClick:()=>A(`+${e}`),children:[`+ `,e]},`mt-${e}`)),D.changed.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-amber-600 dark:text-amber-400 ${k===e.table?`bg-accent`:``}`,onClick:()=>A(e.table),children:[`~ `,e.table]},e.table)),D.missingInSource.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-destructive ${k===`-${e}`?`bg-accent`:``}`,onClick:()=>A(`-${e}`),children:[`- `,e]},`ms-${e}`)),P&&D.identical.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:[`= `,e]},`id-${e}`)),D.objects.filter(e=>P||e.status!==`identical`).map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer ${ue(e.status)} ${k===V(e)?`bg-accent`:``}`,onClick:()=>A(V(e)),children:[de(e.status),` `,(0,B.jsxs)(`span`,{className:`text-muted-foreground`,children:[`[`,S(e.type),`]`]}),` `,e.name]},V(e))),!$&&(0,B.jsx)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:e(`database.diff.identicalAll`)})]}),(0,B.jsx)(`div`,{className:`overflow-auto rounded-md border p-2`,children:X?(0,B.jsx)(ae,{diff:X}):Z?(0,B.jsx)(ie,{diff:Z}):k?.startsWith(`+`)?(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.missingInTarget`,{table:k.slice(1)})}):k?.startsWith(`-`)?(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.missingInSource`,{table:k.slice(1)})}):(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.selectTable`)})})]}),(0,B.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs cursor-pointer`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:j,onChange:e=>M(e.target.checked)}),(0,B.jsx)(`span`,{className:j?`text-destructive`:``,children:e(`database.diff.includeDrops`)})]})]})]}),(0,B.jsxs)(s,{children:[(0,B.jsx)(r,{variant:`outline`,onClick:a,children:e(`database.diff.close`)}),(0,B.jsx)(r,{variant:`secondary`,onClick:()=>{se()},disabled:!K||L,children:e(L?`database.diff.comparing`:`database.diff.compare`)}),(0,B.jsx)(r,{onClick:ce,disabled:!$,children:e(`database.diff.openScript`)})]})]})})}export{q as SchemaDiffDialog};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{a as r}from"./BDtsGuIR.js";import{i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,t as u}from"./DzRyVlxz.js";import{t as d}from"./S7HbowYz.js";import{n as f}from"./D8_hwGjG.js";import{l as p}from"./BkXrfAoR.js";import{t as m}from"./BRZhVXRC.js";import{C as h,S as g,T as _,b as v,l as y,vt as b,w as x,x as S}from"./CExE8dKz.js";var C=e(t(),1),w=a();function T(){let e=d.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function E(e){let t=T();if(!t)throw Error(r.t(`command.noActiveConnection`));let n=m().getQuery(e===`global`?`SHOW_GLOBAL_STATUS`:`SHOW_SESSION_STATUS`);return(await p(t,n)).records.map(e=>({Variable_name:e[0],Value:e[1]}))}function D(){let{t:e}=i(),{activeDialog:t,closeDialog:r,setFooterMessage:a}=f(),[d,p]=(0,C.useState)([]),[m,T]=(0,C.useState)(``),[D,O]=(0,C.useState)(`session`),k=t===`status`,A=(0,C.useCallback)(t=>E(t).then(p).catch(t=>a(e(`command.status.loadError`,{message:t instanceof Error?t.message:String(t)}))),[a,e]);(0,C.useEffect)(()=>{k&&A(D)},[k,D,A]);let j=(0,C.useMemo)(()=>{if(!m.trim())return d;let e=m.toLowerCase();return d.filter(t=>t.Variable_name.toLowerCase().includes(e)||t.Value.toLowerCase().includes(e))},[d,m]);function M(e){e||(T(``),r())}function N(e){O(e)}return(0,w.jsx)(u,{open:k,onOpenChange:M,children:(0,w.jsxs)(c,{className:`sm:max-w-[900px] max-h-[80vh] flex flex-col`,children:[(0,w.jsx)(o,{children:(0,w.jsx)(l,{children:e(`command.status.title`)})}),(0,w.jsxs)(`div`,{className:`flex items-center gap-3 pb-2`,children:[(0,w.jsxs)(`div`,{className:`flex gap-1`,children:[(0,w.jsx)(n,{variant:D===`session`?`default`:`outline`,size:`sm`,onClick:()=>N(`session`),children:e(`command.scope.session`)}),(0,w.jsx)(n,{variant:D===`global`?`default`:`outline`,size:`sm`,onClick:()=>N(`global`),children:e(`command.scope.global`)})]}),(0,w.jsx)(y,{placeholder:e(`command.status.filterPlaceholder`),value:m,onChange:e=>T(e.target.value),className:`max-w-xs`})]}),(0,w.jsx)(`div`,{className:`flex-1 border rounded-md overflow-hidden min-h-0`,children:(0,w.jsx)(b,{className:`h-[400px]`,children:(0,w.jsxs)(v,{children:[(0,w.jsx)(x,{children:(0,w.jsxs)(_,{children:[(0,w.jsx)(h,{className:`w-[300px]`,children:e(`command.variableName`)}),(0,w.jsx)(h,{children:e(`command.value`)})]})}),(0,w.jsx)(S,{children:j.length===0?(0,w.jsx)(_,{children:(0,w.jsx)(g,{colSpan:2,className:`text-center text-muted-foreground`,children:e(`command.status.empty`)})}):j.map(e=>(0,w.jsxs)(_,{children:[(0,w.jsx)(g,{className:`font-mono text-xs`,children:e.Variable_name}),(0,w.jsx)(g,{className:`font-mono text-xs`,children:e.Value})]},e.Variable_name))})]})})}),(0,w.jsx)(s,{children:(0,w.jsx)(n,{variant:`outline`,onClick:()=>M(!1),children:e(`command.close`)})})]})})}export{D as StatusDialog};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,t as l}from"./DzRyVlxz.js";import{a as u,i as d,n as f,r as p,t as m}from"./G06qjCej.js";import{t as h}from"./S7HbowYz.js";import{n as g}from"./D8_hwGjG.js";import{r as _}from"./BRZhVXRC.js";import{a as v,h as y}from"./BnJGrP6V.js";import{c as b,l as x}from"./CExE8dKz.js";var S=e(t(),1),C=i(),w=[`utf8mb4`,`utf8`,`latin1`,`ascii`,`binary`,`cp1251`,`euckr`,`gb2312`,`gbk`,`sjis`,`ucs2`,`utf16`,`utf32`],T={utf8mb4:[`utf8mb4_general_ci`,`utf8mb4_unicode_ci`,`utf8mb4_bin`,`utf8mb4_0900_ai_ci`],utf8:[`utf8_general_ci`,`utf8_unicode_ci`,`utf8_bin`],latin1:[`latin1_swedish_ci`,`latin1_general_ci`,`latin1_bin`],ascii:[`ascii_general_ci`,`ascii_bin`],binary:[`binary`],cp1251:[`cp1251_general_ci`,`cp1251_bin`],euckr:[`euckr_korean_ci`,`euckr_bin`],gb2312:[`gb2312_chinese_ci`,`gb2312_bin`],gbk:[`gbk_chinese_ci`,`gbk_bin`],sjis:[`sjis_japanese_ci`,`sjis_bin`],ucs2:[`ucs2_general_ci`,`ucs2_unicode_ci`,`ucs2_bin`],utf16:[`utf16_general_ci`,`utf16_unicode_ci`,`utf16_bin`],utf32:[`utf32_general_ci`,`utf32_unicode_ci`,`utf32_bin`]};function E(){let{t:e}=r(),{activeDialog:t,closeDialog:i}=g(),E=t===`create-database`,[D,O]=(0,S.useState)(``),[k,A]=(0,S.useState)(`utf8mb4`),[j,M]=(0,S.useState)(`utf8mb4_general_ci`),[N,P]=(0,S.useState)(!1),[F,I]=(0,S.useState)(null);function L(e){e||(i(),I(null),O(``),A(`utf8mb4`),M(`utf8mb4_general_ci`))}function R(e){A(e);let t=T[e];M(t?.[0]??``)}async function z(){let e=h.getState().activeConnectionId,t=D.trim();if(!(!e||!t)){I(null),P(!0);try{let n=_(e).getQuery(`CREATE_DATABASE`,t,k,j);await v(e,n),await y(e),L(!1)}catch(e){I(e instanceof Error?e.message:String(e))}finally{P(!1)}}}let B=T[k]??[];return(0,C.jsx)(l,{open:E,onOpenChange:L,children:(0,C.jsxs)(s,{className:`sm:max-w-[450px]`,children:[(0,C.jsx)(a,{children:(0,C.jsx)(c,{children:e(`database.create.title`)})}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(b,{htmlFor:`db-name`,children:e(`database.create.name`)}),(0,C.jsx)(x,{id:`db-name`,value:D,onChange:e=>O(e.target.value),placeholder:e(`database.create.namePlaceholder`)})]}),(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(b,{htmlFor:`db-charset`,children:e(`database.create.charset`)}),(0,C.jsxs)(m,{value:k,onValueChange:R,children:[(0,C.jsx)(d,{id:`db-charset`,className:`w-full`,children:(0,C.jsx)(u,{})}),(0,C.jsx)(f,{children:w.map(e=>(0,C.jsx)(p,{value:e,children:e},e))})]})]}),(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(b,{htmlFor:`db-collation`,children:e(`database.create.collation`)}),(0,C.jsxs)(m,{value:j,onValueChange:M,children:[(0,C.jsx)(d,{id:`db-collation`,className:`w-full`,children:(0,C.jsx)(u,{})}),(0,C.jsx)(f,{children:B.map(e=>(0,C.jsx)(p,{value:e,children:e},e))})]})]})]}),F&&(0,C.jsx)(`p`,{className:`px-1 text-xs text-destructive leading-relaxed`,children:F}),(0,C.jsxs)(o,{children:[(0,C.jsx)(n,{variant:`outline`,onClick:()=>L(!1),children:e(`database.create.cancel`)}),(0,C.jsx)(n,{onClick:()=>void z(),disabled:!D.trim()||N,children:e(`database.create.create`)})]})]})})}export{E as CreateDatabaseDialog};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./S7HbowYz.js";import{y as r}from"./BjwrN_ch.js";import{t as i}from"./_zaonxnw.js";var a=e(t(),1),o=2e3;function s(e,t){let s=n(t=>t.activeConnections.find(t=>t.id===e)?.serverConnectionId??null),[c,l]=(0,a.useState)([]),[u,d]=(0,a.useState)(!1),[f,p]=(0,a.useState)(0),[m,h]=(0,a.useState)(null),g=(0,a.useRef)(null),_=(0,a.useRef)(t);(0,a.useEffect)(()=>{_.current=t},[t]);let v=(0,a.useCallback)(()=>{g.current?.(),g.current=null,d(!1)},[]),y=(0,a.useCallback)(async e=>{if(s){v(),h(null);try{g.current=await r({...e,connectionId:s},e=>{if(e.type===`dropped`)p(t=>t+e.count);else if(e.type===`error`)h(e.message);else{let t=_.current(e);t!==null&&l(e=>[t,...e].slice(0,o))}},()=>{g.current=null,d(!1)}),d(!0)}catch(e){h(i(e))}}},[s,v]);return(0,a.useEffect)(()=>()=>g.current?.(),[]),{rows:c,running:u,dropped:f,error:m,start:y,stop:v,clear:()=>{l([]),p(0)},dismissError:()=>h(null),connected:s!==null}}export{s as n,o as t};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{a as e}from"./BDtsGuIR.js";import{t}from"./Nro86Y63.js";import{t as n}from"./Bit0Kfog.js";var r=`http://127.0.0.1:8888`,i=n(`tunnelAgent`,()=>({url:null,token:null}));function a(e){i.url=e.url?.replace(/\/+$/,``)||null,i.token=e.token?.trim()||null}var o=new Set([`127.0.0.1`,`localhost`,`[::1]`,`::1`]);function s(e){try{let t=new URL(e);return(t.protocol===`http:`||t.protocol===`https:`)&&o.has(t.hostname)}catch{return!1}}function c(e){try{return typeof window<`u`&&new URL(e).origin===window.location.origin}catch{return!1}}function l(e){return s(e)||c(e)}function u(){return i.url!==null&&i.url!==`/api`&&!l(i.url)}function d(){return i.url??r}function f(){let t=d();return t===`/api`?e.t(`services.agent.devProxyUrl`,{url:`http://localhost:8888`}):t}async function p(){let t=f(),n;try{let e={};i.token&&(e.Authorization=`Bearer ${i.token}`),n=await(await fetch(`${d()}/health`,{cache:`no-store`,headers:e})).json()}catch(e){return{state:`offline`,url:t,message:e instanceof Error?e.message:String(e)}}if(n.name!==`planche`||typeof n.version!=`string`||!/^[\w.+-]{1,32}$/.test(n.version))return{state:`offline`,url:t,message:e.t(`services.agent.notPlanche`)};let r=n.install===`standalone`?`standalone`:`npx`;return n.protocolVersion===2?n.authorized===!1||i.token===null&&n.authorized===void 0?{state:`unauthorized`,url:t,version:n.version,install:r}:{state:`online`,url:t,version:n.version,activeConnections:n.activeConnections??0,install:r,...n.gateway?{gateway:n.gateway}:{}}:{state:`outdated`,url:t,version:n.version,protocolVersion:n.protocolVersion??0,install:r}}async function m(){let t=await fetch(`${d()}/profiles`,{cache:`no-store`,headers:M()}),n=await t.json().catch(()=>null);if(!t.ok||!n||n.success!==!0)throw new N(n?.message??e.t(`services.agent.httpError`,{status:t.status,statusText:t.statusText}),t.status);return n}async function h(){return E(`/ai/config`,{method:`GET`})}async function g(e){return E(`/ai/config`,{method:`PUT`,body:JSON.stringify(e)})}async function _(){return E(`/ai/config`,{method:`DELETE`})}async function v(){try{return(await(await fetch(`${d()}/health`,{cache:`no-store`,headers:M()})).json()).ai?.tools===!0}catch{return!1}}async function y(e){await E(`/bridge/tools`,{method:`POST`,body:JSON.stringify({tools:e})})}async function b(e,t,n){await E(`/bridge/result`,{method:`POST`,body:JSON.stringify({id:e,content:t,isError:n})})}async function x(t,n){let r=new AbortController,i=await fetch(`${d()}/bridge/events`,{headers:M(),signal:r.signal,cache:`no-store`});if(!i.ok||!i.body)throw new N(e.t(`services.agent.httpError`,{status:i.status,statusText:i.statusText}),i.status);return(async()=>{let e=i.body.getReader(),r=new TextDecoder,a=``;try{for(;;){let{done:n,value:i}=await e.read();if(n)break;a+=r.decode(i,{stream:!0});let o=a.indexOf(`
|
|
2
|
+
|
|
3
|
+
`);for(;o!==-1;){let e=a.slice(0,o);a=a.slice(o+2);for(let n of e.split(`
|
|
4
|
+
`))n.startsWith(`data: `)&&t(n.slice(6));o=a.indexOf(`
|
|
5
|
+
|
|
6
|
+
`)}}}catch{}n()})(),()=>r.abort()}async function S(t,n,r){let i=new AbortController,a=await fetch(`${d()}/stream`,{method:`POST`,headers:M(k.get(t.connectionId)),body:JSON.stringify(t),signal:i.signal,cache:`no-store`});if(!a.ok||!a.body)throw new N((await a.json().catch(()=>null))?.message??e.t(`services.agent.httpError`,{status:a.status,statusText:a.statusText}),a.status);return(async()=>{let e=a.body.getReader(),t=new TextDecoder,i=``;try{for(;;){let{done:r,value:a}=await e.read();if(r)break;i+=t.decode(a,{stream:!0});let o=i.indexOf(`
|
|
7
|
+
|
|
8
|
+
`);for(;o!==-1;){let e=i.slice(0,o);i=i.slice(o+2);for(let t of e.split(`
|
|
9
|
+
`))if(t.startsWith(`data: `))try{n(JSON.parse(t.slice(6)))}catch{}o=i.indexOf(`
|
|
10
|
+
|
|
11
|
+
`)}}}catch{}r()})(),()=>i.abort()}async function C(){return E(`/mcp/setup`,{method:`POST`})}async function w(){await E(`/mcp/setup`,{method:`DELETE`})}async function T(e,t){return E(`/ai/run`,{method:`POST`,body:JSON.stringify(e),signal:t})}async function E(t,n){let r=await fetch(`${d()}${t}`,{cache:`no-store`,headers:M(),...n}),i=await r.json().catch(()=>null);if(!r.ok||!i||i.success!==!0)throw new N(i?.message??e.t(`services.agent.httpError`,{status:r.status,statusText:r.statusText}),r.status);return i}function D(e){let t=e.ssh;if(t?.enabled)return{host:t.host,port:t.port,user:t.user,auth:t.auth,password:t.auth===`password`?t.password??``:void 0,privateKey:t.auth===`key`?t.privateKey:void 0,passphrase:t.auth===`key`&&t.passphrase||void 0}}function O(e){return e.gatewayProfile?{profile:e.gatewayProfile}:e.dbms===`sqlite`?{driver:`sqlite`,file:e.file??``,createIfMissing:e.createIfMissing??!1,readonly:e.readOnly??!1}:e.dbms===`do`?{driver:`do`,devUrl:e.devUrl??``}:e.dbms===`d1`?e.devUrl?{driver:`d1`,devUrl:e.devUrl,databaseId:e.databaseId||void 0}:{driver:`d1`,accountId:e.accountId??``,databaseId:e.databaseId??``,apiToken:e.pass}:e.dbms===`postgres`?{driver:`postgres`,host:e.host,port:e.port,user:e.user,password:e.pass,database:e.database||`postgres`,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}:t.has(e.dbms)?{driver:`postgres`,host:e.host,port:e.port,user:e.user,password:e.pass,database:e.database||`postgres`,ssl:!0,sslVerify:e.dbms===`neon`}:e.dbms===`mssql`?{driver:`mssql`,host:e.host,port:e.port,user:e.user,password:e.pass,database:e.database||`master`,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}:e.dbms===`redis`?{driver:`redis`,host:e.host,port:e.port,user:e.user||void 0,password:e.pass,db:Number(/^(?:db)?(\d+)$/.exec(e.database??``)?.[1]??0),ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}:e.dbms===`elasticsearch`||e.dbms===`opensearch`?{driver:`elasticsearch`,host:e.host,port:e.port,user:e.user||void 0,password:e.pass,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}:e.dbms===`oracle`?{driver:`oracle`,host:e.host,port:e.port,user:e.user,password:e.pass,serviceName:e.database||`FREEPDB1`,ssh:D(e)}:{driver:`mysql`,host:e.host,port:e.port,user:e.user,password:e.pass,charset:e.charset===`utf8`?`utf8mb4`:e.charset,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}}var k=n(`tunnelAuthTokens`,()=>new Map);function A(e,t){let n=t?.trim();n?k.set(e,n):k.delete(e)}function j(e){return e?.trim()||i.token||void 0}function M(e){let t={"Content-Type":`application/json`},n=j(e);return n&&(t.Authorization=`Bearer ${n}`),t}var N=class extends Error{status;body;outdatedAgent=!1;constructor(e,t,n=null){super(e),this.status=t,this.body=n}},P=class extends Error{};function F(e){if(!(e instanceof N)||e.status!==409)return null;let t=e.body,n=t?.hostKey;if(t?.code!==`host-key-unknown`||!n)return null;let r=typeof n.host==`string`&&/^[A-Za-z0-9._:[\]-]{1,253}$/.test(n.host)?n.host:null,i=typeof n.type==`string`&&/^[\w.@-]{1,64}$/.test(n.type)?n.type:null,a=typeof n.fingerprint==`string`&&/^SHA256:[A-Za-z0-9+/]{43}$/.test(n.fingerprint)?n.fingerprint:null,o=Number.isInteger(n.port)&&n.port>0&&n.port<65536?n.port:null;return r&&i&&a&&o?{host:r,port:o,type:i,fingerprint:a}:null}async function I(t,n){let r;try{r=await fetch(`${t.replace(/\/+$/,``)}/pair`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:n})})}catch(e){throw new P(e instanceof Error?e.message:String(e))}let i=await r.json().catch(()=>null);if(!r.ok||!i?.success||typeof i.token!=`string`)throw new N(i?.message??e.t(`services.agent.httpError`,{status:r.status,statusText:r.statusText}),r.status);return i.token}async function L(t,n,r){let i;try{i=await fetch(`${d()}${t}`,{method:`POST`,headers:M(r),body:JSON.stringify(n)})}catch(t){throw new P(e.t(`services.agent.unreachable`,{url:f(),message:t instanceof Error?t.message:String(t)}))}let a=null;try{a=await i.json()}catch{a=null}if(!i.ok)throw new N(a?.message??e.t(`services.agent.httpError`,{status:i.status,statusText:i.statusText}),i.status,a);if(!a)throw Error(e.t(`services.agent.emptyResponse`));return a}async function R(t,n){try{return await n()}catch(n){if(n instanceof N&&n.status===400&&`driver`in t&&/^Unsupported driver/.test(n.message)){let n=new N(e.t(`services.agent.driverUnsupported`,{driver:t.driver}),400);throw n.outdatedAgent=!0,n}throw n}}async function z(e,t){let n=await R(e,()=>L(`/connect`,e,t));return n.success&&n.connectionId&&(A(n.connectionId,j(t)),G()),n}async function B(e){try{let t=await L(`/cancel`,{connectionId:e},k.get(e));return t.cancelled?t.abandoned?`abandoned`:`cancelled`:`unsupported`}catch(e){return e instanceof N&&e.status===404?`agent-outdated`:`failed`}}var V=new Set;async function H(e,t,n){let r=d();if(!V.has(r))try{return(await L(`/batch`,{connectionId:e,statements:t,database:n},k.get(e))).results}catch(e){if(!(e instanceof N&&e.status===404&&!/Connection not found/.test(e.message)))throw e;V.add(r)}let i=[];for(let r of t){let t=await W(e,r,n);i.push(t.success?{...t,success:!0}:{success:!1,message:t.message??`Query failed`})}return i}async function U(e,t,n){let r=performance.now(),i=await L(`/query`,{connectionId:e,sql:t,database:n},k.get(e));return i.execTime||=Math.round(performance.now()-r),i}async function W(e,t,n){let r=performance.now();try{return await U(e,t,n)}catch(e){return{success:!1,fields:[],records:[],affectedRows:0,insertId:0,isResultQuery:!1,execTime:Math.round(performance.now()-r),message:e instanceof Error?e.message:String(e)}}}function G(){if(typeof window>`u`)return;let e=n(`tunnelPageHide`,()=>({done:!1}));e.done||(e.done=!0,window.addEventListener(`pagehide`,()=>{for(let[e,t]of k)fetch(`${d()}/disconnect`,{method:`POST`,headers:M(t),body:JSON.stringify({connectionId:e}),keepalive:!0}).catch(()=>void 0)}))}async function K(e){try{await L(`/disconnect`,{connectionId:e},k.get(e))}finally{k.delete(e)}}async function q(e,t){return R(e,()=>L(`/test-connection`,e,t))}var J=0;function Y(e){J>=3||(async()=>{try{(await fetch(`${d()}/usage`,{method:`POST`,headers:M(),body:JSON.stringify({feature:e})})).ok?J=0:J+=1}catch{J+=1}})()}export{g as C,q as D,T as E,O,Y as S,w as T,l as _,B as a,I as b,z as c,H as d,U as f,F as g,C as h,v as i,_ as l,m,P as n,p as o,h as p,u as r,a as s,N as t,K as u,x as v,y as w,b as x,S as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e,t}from"./CYz610vE.js";import{a as n,i as r}from"./BDtsGuIR.js";import{i,n as a,r as o,t as s}from"./eFSiW0Lh.js";import{f as c,t as l}from"./S7HbowYz.js";import{t as u}from"./Bit0Kfog.js";import{D as d,O as f,a as p,c as ee,d as te,f as m,r as ne,t as re,u as ie}from"./BjwrN_ch.js";import{n as ae}from"./D8_hwGjG.js";import{n as oe}from"./C1gqjEN3.js";function h(e,t,n){return e.map(e=>e.id===t?n(e):e.children.length>0?{...e,children:h(e.children,t,n)}:e)}function se(e,t){for(let n of e){if(n.id===t)return n;let e=se(n.children,t);if(e)return e}return null}function g(e,t,n){let r=new Set(e??[]);if(n)r.add(t);else for(let e of r)(e===t||e.startsWith(`${t}/`))&&r.delete(e);return[...r]}var _=t()(i(e=>({trees:{},selectedNodeId:{},expandedIds:{},setTree:(t,n)=>e(e=>({trees:{...e.trees,[t]:n}})),setChildren:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:g(e.expandedIds[t],n,!0)},trees:{...e.trees,[t]:h(i,n,e=>({...e,children:r,isLoading:!1,isExpanded:!0,metadata:{...e.metadata,count:r.length}}))}}:e}),setNodeMetadata:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:h(i,n,e=>({...e,metadata:{...e.metadata,...r}}))}}:e}),toggleExpanded:(t,n)=>e(e=>{let r=e.trees[t];if(!r)return e;let i=!se(r,n)?.isExpanded;return{expandedIds:{...e.expandedIds,[t]:g(e.expandedIds[t],n,i)},trees:{...e.trees,[t]:h(r,n,e=>({...e,isExpanded:i}))}}}),setExpanded:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:g(e.expandedIds[t],n,r)},trees:{...e.trees,[t]:h(i,n,e=>({...e,isExpanded:r}))}}:e}),setSelected:(t,n)=>e(e=>({selectedNodeId:{...e.selectedNodeId,[t]:n}})),setLoading:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:h(i,n,e=>({...e,isLoading:r}))}}:e}),removeTree:t=>e(e=>{let n={...e.trees},r={...e.selectedNodeId};return delete n[t],delete r[t],{trees:n,selectedNodeId:r}})}),{name:`planche-schema`,storage:s(),partialize:e=>({selectedNodeId:e.selectedNodeId,expandedIds:e.expandedIds})})),v=32,y=24,ce=931071618,b=931071619,x=(e,t)=>(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0,le=(e,t)=>(e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t])>>>0;function S(e,t,n,r,i=0,a=0){let o=r?x:le;for(let r=t;r<t+n;r+=8)i=i+o(e,r)+a>>>0,a=a+o(e,r+4)+i>>>0;return[i,a]}function ue(e){if(e.byteLength<v)return null;let t=x(e,0);if(t!==ce&&t!==b)return null;let n=t===b,r=x(e,8);if(r<512||r>65536||r&r-1)return null;let i=x(e,16),a=x(e,20),[o,s]=S(e,0,24,n);if(o!==x(e,24)||s!==x(e,28))return null;let c=y+r,l=new Map,u=new Map,d=0,f=0,p=0;for(let t=v;t+c<=e.byteLength&&!(x(e,t+8)!==i||x(e,t+12)!==a||([o,s]=S(e,t,8,n,o,s),[o,s]=S(e,t+y,r,n,o,s),o!==x(e,t+16)||s!==x(e,t+20)));t+=c){let n=x(e,t),r=x(e,t+4);if(n===0)break;if(u.set(n,e.subarray(t+y,t+c)),p++,r>0){for(let[e,t]of u)l.set(e,t);u.clear(),d=r,f+=p,p=0}}return{pageSize:r,dbSizePages:d,pages:l,committedFrames:f}}function C(e,t){let n=ue(t);if(!n||n.committedFrames===0)return{bytes:e,appliedFrames:0};let{pageSize:r,dbSizePages:i,pages:a}=n,o=Math.max(i*r,e.byteLength-e.byteLength%r),s=new Uint8Array(o);s.set(e.subarray(0,Math.min(e.byteLength,o)));for(let[e,t]of a){let n=(e-1)*r;n+r<=o&&s.set(t,n)}return{bytes:i>0?s.subarray(0,i*r):s,appliedFrames:n.committedFrames}}var de=`planche-file-handles`,w=`handles`;function fe(){return new Promise((e,t)=>{if(typeof indexedDB>`u`){t(Error(`IndexedDB unavailable`));return}let n=indexedDB.open(de,1);n.onupgradeneeded=()=>n.result.createObjectStore(w),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}function T(e,t){return fe().then(n=>new Promise((r,i)=>{let a=t(n.transaction(w,e).objectStore(w));a.onsuccess=()=>r(a.result),a.onerror=()=>i(a.error)}))}var E=e=>`${e}:wal`;async function D(e,t){try{await T(`readwrite`,n=>n.put(t,e))}catch{}}async function O(e){try{return await T(`readonly`,t=>t.get(e))??null}catch{return null}}async function k(e){try{await T(`readwrite`,t=>t.delete(e))}catch{}}async function A(e,t){let n=e,r={mode:`readwrite`};try{if(n.queryPermission&&await n.queryPermission(r)===`granted`)return!0;if(t&&n.requestPermission)return await n.requestPermission(r)===`granted`}catch{}return!1}var j=e=>`dbcache-meta:${e}`,M=e=>`${e}.sqlite3`;async function pe(e){try{let t=await o.getItem(j(e));if(!t)return null;let n=JSON.parse(t),r=await a.get(M(e));return r?{bytes:new Uint8Array(r),meta:n}:null}catch{return null}}async function me(e,t,n){try{let r=t.slice().buffer;return await a.set(M(e),r)?(await o.setItem(j(e),JSON.stringify(n)),!0):!1}catch(e){return console.warn(`[db-cache] write failed:`,e),!1}}async function he(e,t){try{let n=await o.getItem(j(e));if(!n)return;await o.setItem(j(e),JSON.stringify({...JSON.parse(n),...t}))}catch{}}async function N(e){try{await a.remove(M(e)),await o.removeItem(j(e))}catch{}}var ge=`browser:`;function P(e){return typeof e==`string`&&e.startsWith(`browser:`)}var _e=750;function ve(e){let t=z.get(e);t?.profileId&&(t.flushTimer&&clearTimeout(t.flushTimer),t.flushTimer=setTimeout(()=>{t.flushTimer=null,F(e)},_e))}async function F(e){let t=z.get(e);if(t?.profileId)try{let n=await J(e);await me(t.profileId,n,I(t))}catch(e){console.warn(`[browser-sqlite] cache flush failed:`,e)}}function I(e){return{name:e.source.name,lastModified:e.fileMeta.lastModified,size:e.fileMeta.size,dirty:e.dirty,cachedAt:Date.now()}}var L=u(`browserSqliteVisibilityListener`,()=>({installed:!1}));typeof document<`u`&&!L.installed&&(L.installed=!0,document.addEventListener(`visibilitychange`,()=>{if(document.visibilityState===`hidden`)for(let[e,t]of z)t.flushTimer&&(clearTimeout(t.flushTimer),t.flushTimer=null,F(e))}));function R(e){return e.toLowerCase().endsWith(`-wal`)}var z=u(`browserSqliteDatabases`,()=>new Map),B=u(`browserSqliteModule`,()=>({promise:null}));async function V(){return B.promise||=r(()=>import(`./DD58tsa9.js`).then(e=>e.default()),[]),B.promise}function H(e){let t=z.get(e);if(!t)throw Error(`Browser connection not found: ${e}`);return t}function ye(e){if(!(e.byteLength>=100&&e[0]===83&&e[15]===0)||e[18]!==2&&e[19]!==2)return{bytes:e,wal:!1};let t=new Uint8Array(e);return t[18]=1,t[19]=1,{bytes:t,wal:!0}}var be=`SQLite format 3\0`;function xe(e){if(e.byteLength===0)return null;if(e.byteLength<100)return n.t(`services.sqliteFile.tooSmall`);if(String.fromCharCode(...e.subarray(0,16))!==be)return n.t(`services.sqliteFile.notSqlite`);let t=e[16]<<8|e[17],r=t===1?65536:t;return r<512||r&r-1?n.t(`services.sqliteFile.badPageSize`,{size:r}):null}async function Se(e){let t=xe(e);if(t)throw Error(t);let r=await V(),i=new r.oo1.DB;if(e.byteLength===0)return i;let a=r.wasm.allocFromTypedArray(e),o=r.capi,s=o.SQLITE_DESERIALIZE_FREEONCLOSE??1,c=o.SQLITE_DESERIALIZE_RESIZEABLE??2,l=r.capi.sqlite3_deserialize(i.pointer,`main`,a,e.byteLength,e.byteLength,s|c);i.checkRc(l);try{i.exec(`SELECT count(*) FROM sqlite_master`)}catch(e){throw i.close(),Error(n.t(`services.sqliteFile.unreadable`,{message:e instanceof Error?e.message:String(e)}))}return i}async function U(e){let t=window.showOpenFilePicker;if(t)try{let r=await t({multiple:e.multiple,types:e.sqliteOnly?[{description:n.t(`services.sqliteFile.pickerDescription`),accept:{"application/vnd.sqlite3":[`.sqlite`,`.sqlite3`,`.db`,`.db3`]}}]:void 0,excludeAcceptAllOption:!1});return Promise.all(r.map(async e=>({file:await e.getFile(),handle:e})))}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return[];throw e}return new Promise(t=>{let n=document.createElement(`input`);n.type=`file`,n.multiple=e.multiple,e.sqliteOnly&&(n.accept=`.sqlite,.sqlite3,.db,.db3,application/vnd.sqlite3`),n.onchange=()=>t(Array.from(n.files??[]).map(e=>({file:e}))),n.oncancel=()=>t([]),n.click()})}async function Ce(){let e=await U({multiple:!0,sqliteOnly:!1}),t=e.find(e=>!R(e.file.name));return t?{main:t,wal:e.find(e=>R(e.file.name)&&e.file.name.toLowerCase()===`${t.file.name.toLowerCase()}-wal`)??e.find(e=>R(e.file.name))}:null}async function we(){let[e]=await U({multiple:!1,sqliteOnly:!1});return e??null}async function W(e,t,n={}){let{bytes:r,wal:i}=ye(e),a=await Se(r),o=`${ge}${crypto.randomUUID()}`,s={...t,wal:i};return z.set(o,{db:a,source:s,rawBytes:e,profileId:n.profileId,fileMeta:n.fileMeta??{lastModified:0,size:e.byteLength},dirty:n.dirty??!1,flushTimer:null}),{connectionId:o,source:s}}async function G(e,t,n,r={}){let i=e?new Uint8Array(await e.arrayBuffer()):new Uint8Array,a=i,o=!1;n&&(a=C(i,new Uint8Array(await n.file.arrayBuffer())).bytes,o=!0);let s=await W(a,{name:e?.name??`:memory:`,handle:t,walApplied:o,walHandle:n?.handle},{profileId:r.profileId,fileMeta:{lastModified:Math.max(e?.lastModified??0,n?.file.lastModified??0),size:i.byteLength}});return z.get(s.connectionId).rawBytes=i,r.profileId&&F(s.connectionId),s}async function K(e,t,n,r){return await W(t,{name:n.name,handle:r,walApplied:!0},{profileId:e,fileMeta:{lastModified:n.lastModified,size:n.size},dirty:n.dirty})}function Te(e,t){let n=H(e);n.source={...n.source,handle:t}}function Ee(e){return z.get(e)?.dirty??!1}async function De(e,t){let n=H(e),r=C(n.rawBytes,new Uint8Array(await t.file.arrayBuffer())),i=await W(r.bytes,{...n.source,walApplied:!0,walHandle:t.handle},{profileId:n.profileId,fileMeta:n.fileMeta});return z.get(i.connectionId).rawBytes=n.rawBytes,Y(e),n.profileId&&F(i.connectionId),{...i,appliedFrames:r.appliedFrames}}function q(e){return z.get(e)?.source??null}function Oe(e){return e&&e.trim().toLowerCase().replace(/\(.*$/,``).trim()||null}function ke(e){return e==null?`null`:typeof e==`number`?Number.isInteger(e)?`integer`:`real`:typeof e==`bigint`?`bigint`:e instanceof Uint8Array?`blob`:`text`}function Ae(e){return typeof e==`bigint`?Number(e):e instanceof Uint8Array?{type:`Buffer`,data:Array.from(e)}:e}async function je(e,t){let{db:n}=H(e),r=await V(),i=performance.now(),a=H(e),o=Number(r.capi.sqlite3_total_changes(n.pointer)),s=n.prepare(t);try{if(s.columnCount===0){s.step();let c=Number(n.changes()),l=Number(r.capi.sqlite3_last_insert_rowid(n.pointer)),u=/^\s*(BEGIN|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(t);return(c>0||Number(r.capi.sqlite3_total_changes(n.pointer))!==o||!u)&&(a.dirty=!0,ve(e)),{success:!0,fields:[],records:[],affectedRows:c,insertId:l,isResultQuery:!1,execTime:Math.round(performance.now()-i)}}let c=[];for(;s.step();)c.push(s.get([]).map(Ae));let l=s.getColumnNames(),u=r.capi,d=s.pointer;return{success:!0,fields:l.map((e,t)=>{let n=Oe(u.sqlite3_column_decltype(d,t)),r=u.sqlite3_column_table_name(d,t)??``;return{name:e,orgName:u.sqlite3_column_origin_name(d,t)??e,type:n??ke(Me(c,t)),table:r,orgTable:r,db:u.sqlite3_column_database_name(d,t)??``,maxLength:0}}),records:c,affectedRows:0,insertId:0,isResultQuery:!0,execTime:Math.round(performance.now()-i)}}finally{s.finalize()}}function Me(e,t){for(let n of e){let e=n[t];if(e!=null)return e}return null}async function J(e){let{db:t}=H(e);return(await V()).capi.sqlite3_js_db_export(t.pointer)}function Ne(e){let t=z.get(e);if(!t?.source.handle)return null;let{source:r}=t;return r.wal&&!r.walApplied&&!r.walAcknowledged?n.t(`services.sqliteFile.walNotLoaded`):null}function Pe(e){let t=H(e);t.source={...t.source,walAcknowledged:!0}}async function Fe(e){let{source:t,fileMeta:r}=e;if(!t.handle)return;let i=await t.handle.getFile();if(r.lastModified&&(i.lastModified!==r.lastModified||i.size!==r.size))throw Error(n.t(`services.sqliteFile.changedOnDisk`,{name:t.name}));if(t.walHandle)try{let e=await t.walHandle.getFile();if(e.size>0&&!t.walApplied)throw Error(n.t(`services.sqliteFile.walHasChanges`,{name:t.name}));if(e.size>0&&t.walApplied&&e.lastModified>r.lastModified)throw Error(n.t(`services.sqliteFile.walChangedOnDisk`,{name:t.name}))}catch(e){if(e instanceof Error&&!(e instanceof DOMException))throw e}}async function Ie(e){let t=H(e),{source:r}=t,i=Ne(e);if(i)throw Error(i);r.handle&&await Fe(t);let a=await J(e);if(r.handle){if(!await A(r.handle,!0))throw Error(n.t(`services.sqliteFile.writeDenied`,{name:r.name}));let t=await r.handle.createWritable();await t.write(a),await t.close(),r.walHandle&&await(await r.walHandle.createWritable()).close();let i=H(e);i.dirty=!1;try{let e=await r.handle.getFile();i.fileMeta={lastModified:e.lastModified,size:e.size}}catch{i.fileMeta={lastModified:Date.now(),size:a.byteLength}}return i.profileId&&he(i.profileId,{...I(i)}),`in-place`}let o=new Blob([a],{type:`application/vnd.sqlite3`}),s=URL.createObjectURL(o),c=document.createElement(`a`);return c.href=s,c.download=r.name===`:memory:`?`database.sqlite`:r.name,c.click(),URL.revokeObjectURL(s),`download`}function Y(e){let t=z.get(e);t&&(t.flushTimer&&clearTimeout(t.flushTimer),t.db.close(),z.delete(e))}function X(e){return z.get(e)?.profileId}async function Le(e){await k(e),await k(E(e)),await N(e)}async function Re(e,t){let n=await O(e);if(!n)return null;if(!await A(n,t))return`denied`;try{return{handle:n,file:await n.getFile()}}catch(t){if(t instanceof DOMException&&(t.name===`NotFoundError`||t.name===`NotAllowedError`))return await k(e),null;throw t}}async function ze(e,t){let n=await O(E(e));if(!(!n||!await A(n,t)))try{return{file:await n.getFile(),handle:n}}catch{await k(E(e));return}}async function Be(e,t){let n={remembered:!0,fromCache:!1,restoredUnsaved:!1,fileDetached:!1,diskChanged:!1},r=await pe(e),i=await Re(e,t.interactive),a=i&&i!==`denied`?i.handle:void 0,o=i&&i!==`denied`?i.file:null;if(r?.meta.dirty){let{connectionId:t,source:i}=await K(e,r.bytes,r.meta,a),s=o?o.lastModified!==r.meta.lastModified||o.size!==r.meta.size:!1;return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,restoredUnsaved:!0,fileDetached:!a,diskChanged:s}}if(o&&a){let{connectionId:r,source:i}=await G(o,a,await ze(e,t.interactive),{profileId:e});return{...n,connectionId:r,fileName:i.name,wal:i.wal,walApplied:i.walApplied}}if(r){let{connectionId:t,source:i}=await K(e,r.bytes,r.meta);return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,fileDetached:!0}}if(!t.interactive)return null;let s=await Ce();if(!s)return null;let{connectionId:c,source:l}=await G(s.main.file,s.main.handle,s.wal,{profileId:e});return s.main.handle?await D(e,s.main.handle):await k(e),s.wal?.handle?await D(E(e),s.wal.handle):await k(E(e)),{...n,connectionId:c,fileName:l.name,wal:l.wal,walApplied:l.walApplied,remembered:!1}}var Ve=`SQLite format 3\0`;async function He(e){if(e.size===0)return!0;if(e.size<100)return!1;let t=new Uint8Array(await e.slice(0,16).arrayBuffer());return String.fromCharCode(...t)===Ve}async function Ue(e,t){try{let n=await O(e);return n?await n.isSameEntry(t):!1}catch{return!1}}async function We(t){let r=t.find(e=>!R(e.file.name));if(!r)return;if(!await He(r.file))throw Error(n.t(`app.dropNotSqlite`,{name:r.file.name}));let i=t.find(e=>R(e.file.name)&&e.file.name.toLowerCase()===`${r.file.name.toLowerCase()}-wal`),a=l.getState(),o;for(let e of a.savedConnections)if(!(e.dbms!==`sqlite`||(e.transport??`browser`)!==`browser`||e.sample||e.file!==r.file.name)&&r.handle&&await Ue(e.id,r.handle)){o=e;break}let s=o??{id:crypto.randomUUID(),hostName:r.file.name.replace(/\.(db|sqlite|sqlite3|db3)$/i,``),host:``,user:``,pass:``,charset:`utf8`,port:0,dbms:`sqlite`,transport:`browser`,file:r.file.name,autoConnection:!1,savePassword:!0,authToken:``};e(`sqlite_file_drop`,{reused:!!o,wal:!!i,handle:!!r.handle});let u=a.activeConnections.some(e=>e.id===s.id),d=a.activeConnections.find(e=>e.id===s.id)?.serverConnectionId,{connectionId:f}=await G(r.file,r.handle,i,{profileId:s.id});d&&d!==f&&P(d)&&Y(d),r.handle?await D(s.id,r.handle):await k(s.id),i?.handle?await D(E(s.id),i.handle):await k(E(s.id)),o||a.addSavedConnection(s),a.openConnection({...s,serverConnectionId:f}),a.setPendingReopen(s.id,!1),a.setFileDetached(s.id,!1),_.getState().removeTree(s.id),c(s.id),u||oe.getState().addQueryTab(s.id,{id:`tab-${Date.now()}`,title:n.t(`connection.dialog.firstQueryTab`),query:``,database:``,isExecuting:!1,results:[],error:null,executionTime:null}),ae.getState().setWelcomeVisible(!1)}async function Ge(e,t){let n=await Re(e,!0);return!n||n===`denied`?!1:(Te(t,n.handle),!0)}async function Ke(e){let t=X(e),n=q(e);return n&&!n.handle&&t&&await Ge(t,e),Ie(e)}function qe(e){let t=q(e);return t?t.name===`:memory:`?n.t(`services.save.inMemory`):typeof window<`u`&&!(`showOpenFilePicker`in window)?n.t(`services.save.noFileSystemAccess`):!t.handle&&!X(e)?n.t(`services.save.noWritableHandle`):null:n.t(`services.save.notBrowserSqlite`)}async function Je(e,t){let n=await we();if(!n)return null;let r=await De(t,n);return n.handle&&await D(E(e),n.handle),{connectionId:r.connectionId,appliedFrames:r.appliedFrames}}function Ye(e){if(!P(e))return null;let t=q(e);return t?{wal:t.wal,walApplied:t.walApplied,walAcknowledged:t.walAcknowledged??!1}:null}function Xe(e){return e.dbms===`sqlite`&&e.transport===`browser`?`browser`:`tunnel`}async function Ze(e,t){return ee(e,t)}async function Qe(e,t){return d(e,t)}async function Z(e,t,n){let r=e=>({success:!1,fields:[],records:[],affectedRows:0,insertId:0,isResultQuery:!1,execTime:0,message:e instanceof Error?e.message:String(e)});if(P(e))try{return await je(e,t)}catch(e){return r(e)}let i=Q.get(e)??e;try{return await m(i,t,n)}catch(e){if(!(e instanceof re)||e.status!==404)return r(e);let a=await $e(i);if(!a)return r(e);try{return await m(a,t,n)}catch(e){return r(e)}}}var Q=new Map,$=new Map;function $e(e){let t=$.get(e);if(t)return t;let r=(async()=>{let t=l.getState(),r=t.activeConnections.find(t=>t.serverConnectionId===e||Q.get(t.serverConnectionId??``)===e);if(!r||Xe(r)===`browser`||ne())return null;if(r.serverConnectionId&&r.serverConnectionId!==e&&!Q.has(r.serverConnectionId))return Q.set(e,r.serverConnectionId),r.serverConnectionId;let i=t.resolveCredentials(r),a=i.ssh?.enabled&&i.ssh.auth===`password`&&!i.ssh.password;if(!i.pass&&r.pass===``&&r.dbms!==`sqlite`||a)return null;try{let t=await ee(f(i),i.authToken||void 0);if(!t.success||!t.connectionId)return null;for(let[n,r]of Q)r===e&&Q.set(n,t.connectionId);return Q.set(e,t.connectionId),l.getState().updateServerConnectionId(r.id,t.connectionId),l.getState().setTransactionOpen(r.id,!1),ae.getState().setFooterMessage(n.t(`services.agent.reconnected`,{name:r.hostName||r.host||r.databaseId||r.file||r.id})),t.connectionId}catch{return null}})();return $.set(e,r),r.finally(()=>$.delete(e)),r}async function et(e){if(P(e)){let t=X(e);Y(e),t&&await N(t);return}return ie(e)}function tt(e){return e===`cancelled`?null:e===`abandoned`?n.t(`result.running.abandoned`):e===`agent-outdated`?n.t(`result.running.agentOutdated`):e===`unsupported`?n.t(`result.running.cannotCancel`):n.t(`result.running.cancelFailed`)}async function nt(e){if(P(e))return`unsupported`;let t=l.getState().activeConnections.find(t=>t.id===e)?.serverConnectionId;return t?p(t):`failed`}async function rt(e,t,n){if(P(e)){let r=[];for(let i of t){let t=await Z(e,i,n);r.push(t.success?{...t,success:!0}:{success:!1,message:t.message??`Query failed`})}return r}return te(e,t,n)}function it(e){return async(t,r)=>{let i=await Z(e,t,r);if(!i.success)throw Error(i.message??n.t(`services.query.failed`));return i}}export{_ as C,G as S,Qe as _,it as a,P as b,rt as c,Ye as d,Xe as f,Ke as g,Ge as h,Ze as i,Z as l,We as m,tt as n,qe as o,Je as p,Be as r,et as s,nt as t,Le as u,Pe as v,Ee as x,Ne as y};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CExE8dKz.js","assets/hePW80VL.js","assets/CYz610vE.js","assets/CiL8zoYm.js","assets/Cu_sGzNJ.js","assets/BDtsGuIR.js","assets/BGuDcBB_.js","assets/DzRyVlxz.js","assets/D8dVzi6I.js","assets/eFSiW0Lh.js","assets/Nro86Y63.js","assets/S7HbowYz.js","assets/DU-Eln5x.js","assets/BjwrN_ch.js","assets/Bit0Kfog.js","assets/D8_hwGjG.js","assets/C1gqjEN3.js","assets/BkXrfAoR.js","assets/BRZhVXRC.js","assets/DAFA-E1-.js","assets/B9dhM8vw.js","assets/DPyLA6Dl.js","assets/9gOj-Ty3.js","assets/Bs5VSn0X.js","assets/w46wk7KI.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e}from"./hePW80VL.js";import{o as t,p as n}from"./CYz610vE.js";import{a as r,i}from"./BDtsGuIR.js";import{n as a,r as o}from"./Nro86Y63.js";import{L as s,R as c,g as l,h as u,m as d,p as f,s as p,t as m}from"./S7HbowYz.js";import{n as h}from"./DU-Eln5x.js";import{t as g}from"./Bit0Kfog.js";import{n as _}from"./D8_hwGjG.js";import{n as v}from"./C1gqjEN3.js";import{C as y,a as b,l as x}from"./BkXrfAoR.js";import{i as ee,n as S,r as te}from"./BRZhVXRC.js";import{i as ne}from"./DAFA-E1-.js";import{n as re,t as ie}from"./B9dhM8vw.js";import{c as ae,d as C,f as w,l as oe,p as se,t as T}from"./DPyLA6Dl.js";function E(e){return m.getState().activeConnections.find(t=>t.id===e)?.database||ie(y.getState().trees[e]??[])}function ce(e,t,n,r){return S(e).tree.objectPath(t,n,r,E(e))}function D(e,t){return S(e).tree.namespacePath(t,E(e))}function O(e,t){for(let n of e){if(n.id===t)return n;let e=O(n.children,t);if(e)return e}return null}async function le(e,t,n){let r=y.getState;for(let i=0;i<t.length;i++){let a=r().trees[e];if(!a)return!1;let o=O(a,t[i]);if(!o)return!1;if(i===t.length-1)return r().setSelected(e,o.id),!0;o.children.length===0&&!o.isLeaf?await n(e,o):o.isExpanded||r().setExpanded(e,o.id,!0)}return!1}function k(e,t){for(let n of e){if(n.id===t)return n;let e=k(n.children,t);if(e)return e}return null}function A(e,t){let n=y.getState(),r=n.trees[e];if(!r||!t)return;let i=D(e,t),a=null;for(let t of i){let i=k(r,t);if(!i||(a=i,i.isLeaf))break;!i.isExpanded&&i.children.length>0&&n.setExpanded(e,i.id,!0)}!a||a.id!==i[i.length-1]||(n.setSelected(e,a.id),!a.isExpanded&&a.children.length>0&&n.setExpanded(e,a.id,!0))}var j=new Set;function M(e,n){let i=n.map(e=>e.metadata?.topology).find(e=>typeof e==`string`);if(!i||j.has(e))return;j.add(e);let a=m.getState().activeConnections.find(t=>t.id===e)?.dbms??`unknown`;t(`unsupported_topology`,{dbms:a,topology:i}),_.getState().setFooterMessage(r.t(`schema.topology.${i}`))}var N=e(n(),1);function ue(e,t,n){let r=[];function i(e){for(let n of e){if(r.push(n),n.id===t||n.children.length>0&&i(n.children))return!0;r.pop()}return!1}i(e);for(let e=r.length-1;e>=0;e--)if(r[e].type===n)return r[e];return null}function P(e,t){for(let n of e){if(n.id===t)return n;if(n.children.length>0){let e=P(n.children,t);if(e)return e}}return null}var F=g(`schemaTreeLoadingRoots`,()=>new Set);g(`schemaTreeCacheWriter`,()=>{let e={};return y.subscribe(t=>{if(t.trees!==e){for(let[n,r]of Object.entries(t.trees)){if(r===e[n])continue;let t=m.getState().activeConnections.find(e=>e.id===n);t&&f(t)&&u(n,l(t),r)}e=t.trees}})});function de(e,t,n){let r=e.tree,i={engine:e,run:t,database:n};return{loadRoot:()=>r.loadRoot(i),loadChildren:e=>r.loadChildren(i,e)}}function I(e){let t=m.getState().activeConnections.find(t=>t.id===e);return t?.serverConnectionId?de(S(e),b(t.serverConnectionId),t.database||void 0):null}function fe(){let{setTree:e,setChildren:t,setNodeMetadata:n,setLoading:i}=y(),a=(0,N.useCallback)(async t=>{let n=I(t);if(n&&!F.has(t)){F.add(t);try{let r=m.getState().activeConnections.find(e=>e.id===t),i=(r&&f(r)?await d(t,l(r)):null)??await n.loadRoot();e(t,i),M(t,i)}catch(n){let i=n instanceof Error?n.message:String(n);console.error(`Failed to load databases:`,n),_.getState().setFooterMessage(r.t(`schema.tree.loadDatabasesFailed`,{message:i})),e(t,[])}finally{F.delete(t)}}},[e]),o=(0,N.useCallback)(async(e,r)=>{if(!y.getState().trees[e])return;let a=I(e);if(a&&!r.isLeaf){i(e,r.id,!0);try{let i=await a.loadChildren(r);t(e,r.id,i),Promise.all(i.filter(e=>e.type===c.FOLDER&&e.metadata?.countable).map(async t=>{try{let r=await a.loadChildren(t);n(e,t.id,{count:r.length})}catch(e){console.error(`Failed to count ${t.text}:`,e)}}))}catch(t){console.error(`Failed to load children:`,t),i(e,r.id,!1)}}},[t,n,i]);return{loadDatabases:a,loadChildren:o,refreshNode:(0,N.useCallback)(async(e,t)=>{await o(e,t)},[o]),createNode:s,findNode:P,findAncestor:ue}}async function L(e,t){T(e,t);let n=y.getState().trees[e];if(!n||!t)return;let r=I(e);if(!r)return;let i=D(e,t),a=re(n,i[i.length-1]);!a||a.children.length===0||await Promise.all(a.children.filter(e=>e.type===c.FOLDER).map(async t=>{try{let n=await r.loadChildren(t),i=y.getState();(t.children.length>0||t.isExpanded)&&i.setChildren(e,t.id,n),t.metadata?.countable&&i.setNodeMetadata(e,t.id,{count:n.length})}catch(e){console.error(`Failed to refresh ${t.text}:`,e)}}))}async function R(e){T(e);let t=I(e);if(!t)return;let n=await z(t,y.getState().trees[e]??[],await t.loadRoot());y.getState().setTree(e,n),M(e,n)}async function z(e,t,n){let r=new Map(t.map(e=>[e.id,e]));return Promise.all(n.map(async t=>{let n=r.get(t.id);if(!n?.isExpanded||t.isLeaf)return t;try{let r=await e.loadChildren(t);return{...t,isExpanded:!0,children:await z(e,n.children,r)}}catch{return t}}))}var B=class extends Error{sql;constructor(e,t){super(e),this.name=`QueryError`,this.sql=t}},V=class extends Error{constructor(e=`Cancelled`){super(e),this.name=`ExecutionCancelled`}},pe=new Set([`SELECT`,`SHOW`,`EXPLAIN`,`DESCRIBE`,`DESC`,`HELP`,`VALUES`,`TABLE`,`WITH`,`USE`,`SET`,`CHECK`,`CHECKSUM`]);function H(e){return e.kind===`PRAGMA`?!e.sql.includes(`=`):!(!pe.has(e.kind)||e.destructive||e.kind===`SELECT`&&C(e,`INTO`))}var me=new Set([`INSERT`,`UPDATE`,`DELETE`,`REPLACE`,`MERGE`,`LOAD`]),he=new Set([`CREATE`,`ALTER`,`DROP`,`TRUNCATE`,`RENAME`,`GRANT`,`REVOKE`,`FLUSH`,`LOCK`,`UNLOCK`]),ge=new Set([`CREATE`,`ALTER`,`DROP`,`RENAME`]);function U(e){return me.has(e.kind)||!!e.destructive?.dataLoss}function W(e,t,n=`limit`){if(t<=0||e.kind!==`SELECT`||e.limit!==null||C(e,`LIMIT`)||C(e,`INTO`)||C(e,`FOR`)||C(e,`LOCK`))return{sql:e.sql,limited:!1};if(n===`top`){if(C(e,`TOP`)||C(e,`OFFSET`))return{sql:e.sql,limited:!1};let n=se(e);return n===-1?{sql:e.sql,limited:!1}:{sql:`${e.sql.slice(0,n)} TOP ${t}${e.sql.slice(n)}`,limited:!0}}return n===`fetch`?C(e,`FETCH`)||/\bROWNUM\b/i.test(e.sql)?{sql:e.sql,limited:!1}:{sql:`${e.sql} FETCH FIRST ${t} ROWS ONLY`,limited:!0}:{sql:`${e.sql} LIMIT ${t}`,limited:!0}}function _e(e){let t=e.destructive,n=t.names.length?t.names.join(`, `):r.t(`services.destructive.unknownTarget`);switch(t.action){case`DROP`:return`DROP ${t.objectType} ${n}`;case`TRUNCATE`:return`TRUNCATE ${n}`;case`DELETE_ALL`:return r.t(`services.destructive.deleteAll`,{target:n});case`UPDATE_ALL`:return r.t(`services.destructive.updateAll`,{target:n});case`ALTER_DROP`:return r.t(`services.destructive.alterDrop`,{target:n})}}function ve(e){return{text:e.sql,start:w(e),end:e.end,kind:e.kind,readOnly:H(e),dataLoss:e.destructive?.dataLoss?_e(e):null,stmt:e}}async function ye(e,t,n,r=ee(t),i){let o=new Set(e.fields.map(e=>e.orgTable).filter(Boolean));if(o.size!==1)return e;let s=[...o][0];try{let a=i??await r.introspect.getPrimaryKeys(b(t),n,s);a.length>0&&(e.primaryKeys=a)}catch{}return!e.primaryKeys?.length&&e.fields.some(e=>e.name===`_rowid_`)&&(e.primaryKeys=[a]),e}var be=50;function xe(e,t,n){return e.syntax.limitStyle===`top`?t.replace(/^SELECT\b/i,`SELECT TOP ${n}`):`${t} ${e.limitClause(n)}`}async function Se(e,t,n,r){let i=new Map;for(let a of n){let n=a.stmt;if(n.kind!==`UPDATE`&&n.kind!==`DELETE`)continue;let o=oe(n);if(!o)continue;let s=null,c=[],l=[],u,d=await x(t.serverConnId,o.count,r||void 0);if(d.success){let n=Number(d.records[0]?.[0]);s=Number.isFinite(n)?n:null;let i=await x(t.serverConnId,o.limited?o.select:xe(e,o.select,be),r||void 0);i.success?(c=i.fields.map(e=>e.name),l=i.records):u=i.message}else u=d.message;if(!await _.getState().requestDryRun({statement:n.sql,previewSql:o.select,count:s,fields:c,rows:l,truncated:s!==null&&l.length<s,error:u}))throw new V;s!==null&&i.set(a,s)}return i}function Ce(e){let t=new ae(e),n=()=>m.getState();return{statements(e){return t.statements(e).map(ve)},statementAtCursor(e,n){let r=t.statements(e);if(r.length===0)return null;let i=r.find(e=>n>=w(e)&&n<=e.end)??[...r].reverse().find(e=>e.end<=n)??r[0];return{sql:i.sql,start:w(i)}},async rewrite(e,t){if(!e.conn.scratchpad)return;let{materializeFederated:n}=await i(async()=>{let{materializeFederated:e}=await import(`./CExE8dKz.js`).then(e=>e.U);return{materializeFederated:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]));for(let r of t)r.stmt.sql=await n(e.connId,r.stmt.sql),r.text=r.stmt.sql},previewWrites(t,n,r){return Se(e,t,n,r)},limitForEditor(t,n){let{sql:r,limited:i}=W(t.stmt,n,e.syntax.limitStyle);return{text:r,limited:i}},async beforeStatement(t,i,a){if(t.conn.transactionMode===`manual`&&e.capabilities.transactions&&i&&U(i.stmt)&&!n().transactionOpen[t.connId]){let i=await x(t.serverConnId,e.getQuery(`START_TRANSACTION`),a||void 0);if(!i.success)throw new B(i.message??r.t(`services.transaction.startFailed`));n().setTransactionOpen(t.connId,!0),_.getState().setFooterMessage(r.t(`services.transaction.started`))}},afterStatement(t,i,a){let o=i?.kind??``;o===`COMMIT`||o===`ROLLBACK`?n().setTransactionOpen(t.connId,!1):o===`START`||o===`BEGIN`?n().setTransactionOpen(t.connId,!0):he.has(o)&&n().transactionOpen[t.connId]&&e.capabilities.implicitCommitDdl&&(n().setTransactionOpen(t.connId,!1),_.getState().setFooterMessage(r.t(`services.transaction.implicitCommit`,{kind:o}))),ge.has(o)&&L(t.connId,a)},async enrichResult(t,n,r,i){await ye(n,t.serverConnId,r,e,i)},databaseAfter(e,t,n){return n||t.fields.length===0?null:t.fields.find(e=>e.db)?.db||null},readStructures(e,t,n,r,a){i(async()=>{let{readStructures:e}=await import(`./CExE8dKz.js`).then(e=>e.at);return{readStructures:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])).then(({readStructures:i})=>i(e,t,n.length>0?n.map(e=>({sql:e.stmt.sql,start:a===null?null:a+e.start})):[{sql:r,start:a}]))}}}function G(e){let t=[0];for(let n=0;n<e.length;n++)e[n]===`
|
|
3
|
+
`&&t.push(n+1);return t}function we(e){let{console:t}=e;return{statements(e){let n=G(e);return t.split(e).map(({text:i,line:a})=>{let o;try{o=t.classify(i)}catch(e){throw new B(r.t(`services.console.unreadable`,{line:a,message:e instanceof Error?e.message:String(e)}),i)}let s=(n[a-1]??0)+Math.max(0,e.slice(n[a-1]??0).indexOf(i));return{text:i,start:s,end:s+i.length,kind:o.name,readOnly:o.readOnly,dataLoss:o.dataLoss?i:null}})},statementAtCursor(e,n){let r=t.split(e);if(r.length===0)return null;let i=e.slice(0,n).split(`
|
|
4
|
+
`).length,a=[...r].reverse().find(e=>e.line<=i)??r[0],o=G(e)[a.line-1]??0;return{sql:a.text,start:o+Math.max(0,e.slice(o).indexOf(a.text))}},afterStatement(e,n){n&&t.changesTree?.(n.text)&&R(e.connId)},databaseAfter(e){return e&&t.databaseAfter?t.databaseAfter(e.text):null}}}var K=new WeakMap;function q(e){let t=K.get(e);return t||(t=o(e)?Ce(e):we(e),K.set(e,t)),t}function Te(e){let t=e.fields??[],n=e.records??[];return{fields:t.map(e=>({name:e.name,type:e.type,orgTable:e.orgTable??e.table??``,orgName:e.orgName??e.name,db:e.db??``})),rows:n.map(e=>{let n={};return t.forEach((t,r)=>{n[t.name]=e[r]}),n}),affectedRows:e.affectedRows??0,insertId:e.insertId??0,message:e.message??(n.length>0?r.t(`services.query.rowsReturned`,{count:n.length}):r.t(`services.query.rowsAffected`,{count:e.affectedRows??0})),...e.reply===void 0?{}:{reply:e.reply}}}function Ee(e,t=0){let n=J();return n<=0?``:e.limitClause(n,t)}function J(){return h.getState().resultRowLimit}async function De(e){if(!h.getState().confirmDestructive)return!0;let t=e.filter(e=>e.dataLoss!==null);return t.length===0||_.getState().requestDestructiveConfirm({title:r.t(`services.destructive.title`,{count:t.length}),description:r.t(`services.destructive.description`),statements:t.map(e=>e.dataLoss),confirmLabel:r.t(`services.runAnyway`)})}async function Oe(e,t){if(!e.readOnly)return;let n=t.filter(e=>!e.readOnly);if(n.length===0)return;let i=`${e.hostName||e.host}`;if(!h.getState().allowReadOnlyOverride)throw new B(r.t(`services.readOnly.refused`,{label:i,count:n.length}));if(!await _.getState().requestDestructiveConfirm({title:r.t(`services.readOnly.title`,{label:i}),description:r.t(`services.readOnly.description`),statements:n.map(e=>e.text.length>120?e.text.slice(0,117)+`...`:e.text),confirmLabel:r.t(`services.runAnyway`)}))throw new V(`Cancelled: connection is read-only.`)}function Y(e,t){let n=m.getState(),i=n.activeConnections.find(t=>t.id===e);if(!i?.serverConnectionId)throw new B(r.t(`services.query.notConnected`));if(n.pendingReopen[e])throw new B(r.t(`services.query.fileNotOpen`));let a=S(e);return{ctx:{connId:e,serverConnId:i.serverConnectionId,conn:i,engine:a,tabId:t},adapter:q(a)}}async function X({ctx:e,adapter:t},n,r){let i=t.statements(n);if(await t.rewrite?.(e,i),await Oe(e.conn,i),!r.skipDestructiveConfirm&&!await De(i))throw new V;return i}async function Z({ctx:e,adapter:n},i,a){let{connId:o,serverConnId:s,tabId:c}=e,l=i.stmt?.kind??``;await n.beforeStatement?.(e,i.stmt,a);let u=await x(s,i.sql,a||void 0);if(!u.success){let n=u.message??r.t(`services.query.failed`);throw v.getState().recordExecution({connectionId:o,tabId:c,query:i.sql,database:a,executionTime:u.execTime,error:n,kind:l||void 0}),t(`query_execute`,{dbms:e.conn.dbms,kind:l||`unknown`,origin:c?`editor`:`app`,success:!1}),new B(n,i.sql)}let d=Te(u);return n.afterStatement?.(e,i.stmt,a),e.skipHistory||v.getState().recordExecution({connectionId:o,tabId:c,query:i.sql,database:a,executionTime:u.execTime,kind:l||void 0,...d.fields.length>0?{rowCount:d.rows.length}:{affectedRows:d.affectedRows}}),t(`query_execute`,{dbms:e.conn.dbms,kind:l||`unknown`,origin:c?`editor`:`app`,success:!0,exec_time_ms:Math.round(u.execTime??0)}),{qr:d,execTime:u.execTime}}async function ke(e,t,n={}){let i=Y(e,n.tabId??null),{ctx:a,adapter:o}=i;a.skipHistory=n.skipHistory;let s=t.trim();if(!s)throw new B(r.t(`services.query.nothingToExecute`));let c=await X(i,s,n),l=n.database??``;n.previewWrites&&h.getState().previewAffectedRows&&await o.previewWrites?.(a,c,l);let u=c.length>0?c.map(e=>({sql:e.text,stmt:e})):[{sql:s,stmt:null}],d=null;for(let e of u){let{qr:t}=await Z(i,e,l);n.primaryKeys&&t.fields.length>0&&l&&await o.enrichResult?.(a,t,l,Array.isArray(n.primaryKeys)?n.primaryKeys:void 0),d=t}return d}function Ae(e,t){return Q(e,t)?.sql??null}function Q(e,t){let n=v.getState().tabs[e]?.find(e=>e.id===t);if(!n)return null;let r=ne(e,t);if(r&&`selection`in r)return{sql:r.selection,start:r.start};let i=r&&`cursorOffset`in r?r.cursorOffset:n.query.length;return q(S(e)).statementAtCursor(n.query,i)}async function je(e,n,i={}){let a=()=>v.getState(),o=a().tabs[e]?.find(e=>e.id===n);if(!o)return;let s=(i.sql??o.query)?.trim();if(!s)return;let c,l;try{c=Y(e,n),l=await X(c,s,{})}catch(t){if(t instanceof V){t.message!==`Cancelled`&&a().setError(e,n,t.message);return}a().setError(e,n,t instanceof Error?t.message:String(t));return}let{ctx:u,adapter:d}=c,f=h.getState(),m=new Map;if(f.previewAffectedRows&&d.previewWrites)try{m=await d.previewWrites(u,l,o.database||``)}catch(e){if(e instanceof V)return;throw e}let g=m.size===1,_=l.length>0?l.map(e=>{let t=d.limitForEditor?.(e,f.resultRowLimit)??{text:e.text,limited:!1};return{sql:t.text,limited:t.limited,stmt:e}}):[{sql:s,limited:!1,stmt:null}];d.readStructures?.(e,n,l,s,i.sql?i.sqlOffset??null:0),a().captureRevision(e,n,`execute`),a().setExecuting(e,n,!0),a().setError(e,n,null);let y=[],b=o.database||``;try{for(let i of _){let{qr:o,execTime:s}=await Z(c,i,b);o.sql=i.stmt?.text??i.sql,o.executionTime=s,i.limited&&o.rows.length>=f.resultRowLimit&&(o.limited=!0,o.message=r.t(`services.query.rowsReturnedLimited`,{count:o.rows.length,limit:f.resultRowLimit}));let l=d.databaseAfter?.(i.stmt,o,b);l&&l!==b&&(b=l,a().setDatabase(e,n,b),A(e,b)),o.fields.length>0&&b&&await d.enrichResult?.(u,o,b);let p=g&&i.stmt?m.get(i.stmt):void 0;p!==void 0&&Number.isFinite(o.affectedRows)&&o.affectedRows!==p&&(o.warning=r.t(`services.query.dryRunMismatch`,{predicted:p,actual:o.affectedRows}),t(`dry_run_mismatch`,{dbms:u.conn.dbms,kind:i.stmt?.kind??`unknown`})),y.push(o)}a().setResults(e,n,y)}catch(t){y.length>0&&a().setResults(e,n,y),a().setError(e,n,t instanceof Error?t.message:String(t),t instanceof B?t.sql:null),t instanceof B&&p(`query_error`)}finally{a().setExecuting(e,n,!1)}}async function $(e,t){let n=m.getState(),i=n.activeConnections.find(t=>t.id===e);if(!i?.serverConnectionId)return;let a=te(e);try{let e=await x(i.serverConnectionId,a.getQuery(t));if(!e.success)throw new B(e.message??r.t(`services.transaction.commandFailed`,{name:t}));_.getState().setFooterMessage(t===`COMMIT`?r.t(`services.transaction.committed`):r.t(`services.transaction.rolledBack`))}catch(e){_.getState().setFooterMessage(r.t(`services.transaction.commandFailedWith`,{name:t,message:e instanceof Error?e.message:String(e)}))}finally{n.setTransactionOpen(e,!1)}}var Me=e=>$(e,`COMMIT`),Ne=e=>$(e,`ROLLBACK`);export{A as _,ke as a,Ee as c,H as d,V as f,fe as g,R as h,Ne as i,q as l,L as m,je as n,Q as o,B as p,Ae as r,J as s,Me as t,W as u,le as v,ce as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,r as l,t as u}from"./DzRyVlxz.js";import{a as d,i as f,n as p,r as m,t as h}from"./G06qjCej.js";import{n as g,s as _}from"./DU-Eln5x.js";import{C as v,l as y,p as b}from"./BjwrN_ch.js";import{n as x}from"./D8_hwGjG.js";import{D as S,c as C,l as w}from"./CExE8dKz.js";var T=e(t(),1),E=i(),D={autoComplete:`off`,"data-1p-ignore":!0,"data-lpignore":`true`,"data-bwignore":!0};function O(){let{t:e}=r(),[t,i]=(0,T.useState)(null),[a,o]=(0,T.useState)(!1),[s,c]=(0,T.useState)(`anthropic`),[l,u]=(0,T.useState)(``),[x,O]=(0,T.useState)(``),[k,A]=(0,T.useState)(``),[j,M]=(0,T.useState)(!1),[N,P]=(0,T.useState)([]),[F,I]=(0,T.useState)(!1),[L,R]=(0,T.useState)(!1),[z,B]=(0,T.useState)(null),V=g(e=>e.setAiPreferences),H=(0,T.useCallback)(()=>{b().then(e=>{i(e);let t=g.getState().aiPreferences,n=e.storage!==`none`;c(n?e.provider:t.provider),u(n?e.model:t.model),O((n?e.baseUrl:t.baseUrl)??``),M(n?e.storage===`file`:t.remember),P(e.clis??[]),I(e.anthropicProfile===!0)}).catch(()=>o(!0))},[]);(0,T.useEffect)(H,[H]);let U=(0,T.useCallback)(e=>{c(e),u(t=>_(t,e))},[]),W=(0,T.useCallback)(()=>{R(!0),B(null),v({provider:s,model:l.trim()||void 0,baseUrl:x.trim()||void 0,key:k,remember:j}).then(t=>{i(t),A(``),V({provider:s,model:l.trim()||t.model,baseUrl:x.trim(),remember:j}),B(e(`settings.ai.saved`)),S()}).catch(e=>B(e instanceof Error?e.message:String(e))).finally(()=>R(!1))},[s,l,x,k,j,V,e]),G=(0,T.useCallback)(()=>{R(!0),B(null),y().then(e=>{i(e),A(``),S()}).catch(e=>B(e instanceof Error?e.message:String(e))).finally(()=>R(!1))},[]);if(a)return(0,E.jsx)(`p`,{className:`rounded-md border p-3 text-xs text-muted-foreground`,children:e(`settings.ai.unreachable`)});if(!t)return null;let K=t.fromEnvironment,q=s===`cli`||s===`anthropic-profile`;return(0,E.jsxs)(`div`,{className:`grid gap-3 rounded-md border p-3`,children:[(0,E.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`settings.ai.intro`)}),(0,E.jsx)(`p`,{className:`text-xs`,children:t.storage===`environment`?e(`settings.ai.configuredEnv`):t.storage===`file`?e(t.provider===`cli`||t.provider===`anthropic-profile`?`settings.ai.configuredChoice`:`settings.ai.configuredFile`,{path:t.path,provider:t.provider===`cli`?t.model:e(`settings.ai.profile`)}):t.storage===`session`?e(`settings.ai.configuredSession`):e(`settings.ai.none`)}),!K&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`div`,{className:`grid grid-cols-[1fr_220px] items-center gap-3`,children:[(0,E.jsx)(C,{htmlFor:`ai-provider`,className:`text-sm font-medium`,children:e(`settings.ai.provider`)}),(0,E.jsxs)(h,{value:s,onValueChange:e=>U(e),children:[(0,E.jsx)(f,{id:`ai-provider`,children:(0,E.jsx)(d,{})}),(0,E.jsxs)(p,{children:[(0,E.jsx)(m,{value:`anthropic`,children:`Anthropic`}),(0,E.jsx)(m,{value:`anthropic-profile`,children:e(`settings.ai.profile`)}),(0,E.jsx)(m,{value:`openai`,children:e(`settings.ai.openaiCompatible`)}),(0,E.jsx)(m,{value:`gemini`,children:`Google Gemini`}),(0,E.jsx)(m,{value:`cli`,children:e(`settings.ai.cli`)})]})]})]}),s===`cli`?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`settings.ai.cliHint`)}),N.length===0?(0,E.jsx)(`p`,{className:`rounded-md border p-2 text-xs text-muted-foreground`,children:e(`settings.ai.cliNone`)}):(0,E.jsxs)(`div`,{className:`grid grid-cols-[1fr_220px] items-center gap-3`,children:[(0,E.jsx)(C,{htmlFor:`ai-cli`,className:`text-sm font-medium`,children:e(`settings.ai.cliCommand`)}),(0,E.jsxs)(h,{value:N.includes(l)?l:N[0],onValueChange:u,children:[(0,E.jsx)(f,{id:`ai-cli`,children:(0,E.jsx)(d,{})}),(0,E.jsx)(p,{children:N.map(e=>(0,E.jsx)(m,{value:e,children:e},e))})]})]})]}):(0,E.jsxs)(`div`,{className:`grid gap-3`,children:[s===`anthropic-profile`&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`settings.ai.profileHint`)}),!F&&(0,E.jsx)(`p`,{className:`rounded-md border p-2 text-xs text-muted-foreground`,children:e(`settings.ai.profileNone`)})]}),(0,E.jsxs)(`div`,{className:`grid grid-cols-[1fr_220px] items-center gap-3`,children:[(0,E.jsx)(C,{htmlFor:`ai-model`,className:`text-sm font-medium`,children:e(`settings.ai.model`)}),(0,E.jsx)(w,{id:`ai-model`,value:l,onChange:e=>u(e.target.value),spellCheck:!1,...D})]})]}),s===`openai`&&(0,E.jsxs)(`div`,{className:`grid grid-cols-[1fr_220px] items-center gap-3`,children:[(0,E.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,E.jsx)(C,{htmlFor:`ai-base-url`,className:`text-sm font-medium`,children:e(`settings.ai.baseUrl`)}),(0,E.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e(`settings.ai.baseUrlHint`)})]}),(0,E.jsx)(w,{id:`ai-base-url`,value:x,onChange:e=>O(e.target.value),placeholder:`https://api.openai.com/v1`,spellCheck:!1,...D})]}),q||(0,E.jsxs)(`div`,{className:`grid gap-1`,children:[(0,E.jsx)(C,{htmlFor:`ai-key`,className:`text-sm font-medium`,children:e(`settings.ai.key`)}),(0,E.jsx)(w,{id:`ai-key`,type:`password`,value:k,onChange:e=>A(e.target.value),spellCheck:!1,placeholder:t.configured?`••••••••`:``,...D,autoComplete:`new-password`}),(0,E.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e(`settings.ai.keyHint`)})]}),q||(0,E.jsxs)(`label`,{htmlFor:`ai-remember`,className:`flex cursor-pointer items-start gap-3 rounded-md border p-3 hover:bg-accent/40`,children:[(0,E.jsx)(`input`,{id:`ai-remember`,type:`checkbox`,checked:j,onChange:e=>M(e.target.checked),className:`mt-0.5 size-4 accent-primary`}),(0,E.jsxs)(`span`,{className:`grid flex-1 gap-0.5`,children:[(0,E.jsx)(`span`,{className:`text-sm font-medium`,children:e(`settings.ai.remember`)}),(0,E.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e(`settings.ai.rememberHint`,{path:t.path})})]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(n,{size:`sm`,onClick:W,disabled:L||(s===`cli`?N.length===0:!q&&!k.trim()),children:e(`settings.ai.save`)}),t.configured&&(0,E.jsx)(n,{size:`sm`,variant:`ghost`,onClick:G,disabled:L,children:e(`settings.ai.forget`)}),z&&(0,E.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:z})]})]})]})}function k(){let e=x(e=>e.activeDialog),t=x(e=>e.closeDialog),{t:i}=r();return(0,E.jsx)(u,{open:e===`ai-settings`,onOpenChange:e=>{e||t()},children:(0,E.jsxs)(s,{className:`sm:max-w-[560px]`,children:[(0,E.jsxs)(a,{children:[(0,E.jsx)(c,{children:i(`settings.ai.title`)}),(0,E.jsx)(l,{children:i(`settings.ai.description`)})]}),(0,E.jsx)(O,{}),(0,E.jsx)(o,{children:(0,E.jsx)(n,{onClick:t,children:i(`settings.done`)})})]})})}export{k as AiSettingsDialog};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{i as n,r}from"./Cu_sGzNJ.js";import{t as i}from"./84VwJAQi.js";import{a,n as o,o as s,r as c,t as l}from"./Udlj1Cgf.js";import{t as u}from"./BQ1Rcyw6.js";var d=e(t(),1),f=r();function p({title:e,rows:t}){return(0,f.jsxs)(`div`,{className:`rounded-lg border bg-card p-3`,children:[(0,f.jsx)(`h3`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:e}),(0,f.jsx)(`dl`,{className:`grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1 text-xs`,children:t.map(([e,t])=>(0,f.jsxs)(`div`,{className:`contents`,children:[(0,f.jsx)(`dt`,{className:`text-muted-foreground`,children:e}),(0,f.jsx)(`dd`,{className:`font-mono`,children:t??`—`})]},e))})]})}function m({connectionId:e,tabId:t}){let{t:r}=n(),m=i(e,t,``),[h,g]=(0,d.useState)(null),[_,v]=(0,d.useState)(null),[y,b]=(0,d.useState)(``),x=(0,d.useCallback)(async()=>{try{g(a(String(await m.read(`INFO`)))),v(null)}catch(e){v(e instanceof Error?e.message:String(e))}},[m]);(0,d.useEffect)(()=>{Promise.resolve().then(()=>x())},[x]);let S=e=>h?c(h,e):void 0,C=h?o(h):null,w=(0,d.useMemo)(()=>Object.entries(h?.keyspace??{}).map(([e,t])=>({db:e,...s(t)})),[h]),T=(0,d.useMemo)(()=>Object.entries(h??{}).flatMap(([e,t])=>Object.entries(t).map(([t,n])=>[e,t,n])).filter(([,e,t])=>!y||e.includes(y)||t.includes(y)),[h,y]);return(0,f.jsx)(u,{title:r(`tools.redis.server`),onRefresh:x,autoRefresh:!0,error:_,onDismissError:()=>v(null),children:h&&(0,f.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,f.jsxs)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(260px,1fr))] gap-3`,children:[(0,f.jsx)(p,{title:r(`tools.redis.cardServer`),rows:[[`version`,S(`redis_version`)??S(`valkey_version`)],[`mode`,S(`redis_mode`)],[`uptime`,S(`uptime_in_seconds`)?l(Number(S(`uptime_in_seconds`))):void 0],[`os`,S(`os`)]]}),(0,f.jsx)(p,{title:r(`tools.redis.cardMemory`),rows:[[`used`,S(`used_memory_human`)],[`peak`,S(`used_memory_peak_human`)],[`maxmemory`,S(`maxmemory_human`)===`0B`?r(`tools.redis.unlimited`):S(`maxmemory_human`)],[`policy`,S(`maxmemory_policy`)],[`fragmentation`,S(`mem_fragmentation_ratio`)]]}),(0,f.jsx)(p,{title:r(`tools.redis.cardActivity`),rows:[[`ops/sec`,S(`instantaneous_ops_per_sec`)],[`hit rate`,C===null?void 0:`${(C*100).toFixed(1)}%`],[`clients`,S(`connected_clients`)],[`blocked`,S(`blocked_clients`)],[`evicted keys`,S(`evicted_keys`)],[`expired keys`,S(`expired_keys`)]]}),(0,f.jsx)(p,{title:r(`tools.redis.cardPersistence`),rows:[[`role`,S(`role`)],[`replicas`,S(`connected_slaves`)],[`last save`,S(`rdb_last_save_time`)?new Date(Number(S(`rdb_last_save_time`))*1e3).toLocaleString():void 0],[`changes since save`,S(`rdb_changes_since_last_save`)],[`AOF`,S(`aof_enabled`)===`1`?`on`:S(`aof_enabled`)===`0`?`off`:void 0]]})]}),(0,f.jsxs)(`section`,{children:[(0,f.jsx)(`h3`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:r(`tools.redis.keyspace`)}),(0,f.jsxs)(`table`,{className:`w-full max-w-2xl border-collapse text-xs`,children:[(0,f.jsx)(`thead`,{children:(0,f.jsxs)(`tr`,{className:`text-left text-muted-foreground`,children:[(0,f.jsx)(`th`,{className:`border-b py-1`,children:`db`}),(0,f.jsx)(`th`,{className:`border-b py-1 text-right`,children:`keys`}),(0,f.jsx)(`th`,{className:`border-b py-1 text-right`,children:`expires`}),(0,f.jsx)(`th`,{className:`border-b py-1 text-right`,children:`avg ttl`})]})}),(0,f.jsx)(`tbody`,{children:w.map(e=>(0,f.jsxs)(`tr`,{className:`border-b border-border/50`,children:[(0,f.jsx)(`td`,{className:`py-1 font-mono`,children:e.db}),(0,f.jsx)(`td`,{className:`py-1 text-right tabular-nums`,children:e.keys.toLocaleString()}),(0,f.jsx)(`td`,{className:`py-1 text-right tabular-nums`,children:e.expires.toLocaleString()}),(0,f.jsx)(`td`,{className:`py-1 text-right`,children:e.avgTtl?l(e.avgTtl/1e3):`—`})]},e.db))})]})]}),(0,f.jsxs)(`section`,{children:[(0,f.jsxs)(`div`,{className:`mb-2 flex items-center gap-3`,children:[(0,f.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:r(`tools.redis.allFields`)}),(0,f.jsx)(`input`,{className:`h-7 w-56 rounded border bg-background px-2 text-xs`,placeholder:r(`tools.filter`),value:y,onChange:e=>b(e.target.value)})]}),(0,f.jsx)(`table`,{className:`w-full border-collapse text-xs`,children:(0,f.jsx)(`tbody`,{children:T.map(([e,t,n])=>(0,f.jsxs)(`tr`,{className:`border-b border-border/40`,children:[(0,f.jsx)(`td`,{className:`w-28 py-0.5 text-muted-foreground`,children:e}),(0,f.jsx)(`td`,{className:`w-72 py-0.5 font-mono`,children:t}),(0,f.jsx)(`td`,{className:`break-all py-0.5 font-mono`,children:n})]},`${e}.${t}`))})})]})]})})}export{m as ServerInfo};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./CYz610vE.js";import{i as t,t as n}from"./eFSiW0Lh.js";import{O as r,a as i,i as a,n as o,r as s}from"./S7HbowYz.js";import{n as c}from"./DU-Eln5x.js";var l=200,u=Object.freeze([]);function d(e,t,n){return e.map(e=>e.id===t?{...e,...n}:e)}function f(e){let t=e;if(delete t.erdOpen,delete t.erdDatabase,t.tabs&&typeof t.tabs==`object`){let e=t.tabs;for(let t of Object.keys(e))e[t]=e[t].map(e=>{if(!Array.isArray(e.results)){let t={...e};return delete t.result,{...t,results:[]}}return e})}return t}var p=e()(t((e,t)=>({tabs:{},activeTabId:{},history:[],addQueryTab:(t,n)=>e(e=>{let r=e.tabs[t]??[];return{tabs:{...e.tabs,[t]:[...r,n]},activeTabId:{...e.activeTabId,[t]:n.id}}}),removeQueryTab:(e,n)=>t().removeQueryTabs(e,[n]),removeQueryTabs:(n,r)=>{for(let e of r)t().captureRevision(n,e,`close`);e(e=>{let t=new Set(r),i=(e.tabs[n]??[]).filter(e=>!t.has(e.id)),a=e.activeTabId[n],o=a&&t.has(a)?i.length>0?i[i.length-1].id:null:a;return{tabs:{...e.tabs,[n]:i},activeTabId:{...e.activeTabId,[n]:o}}})},reorderQueryTab:(t,n,r)=>e(e=>({tabs:{...e.tabs,[t]:i(e.tabs[t]??[],n,r)}})),setActiveQueryTab:(t,n)=>e(e=>({activeTabId:{...e.activeTabId,[t]:n}})),setEditorContent:(n,r,i)=>{e(e=>{let t=e.tabs[n]??[];return{tabs:{...e.tabs,[n]:d(t,r,{query:i})}}});let a=t().tabs[n]?.find(e=>e.id===r);a&&s(n,{docId:r,title:a.title,text:i,database:a.database,reason:`edit`})},setResults:(t,n,r)=>e(e=>{let i=e.tabs[t]??[];return{tabs:{...e.tabs,[t]:d(i,n,{results:r,isExecuting:!1,error:null})}}}),setExecuting:(t,n,r)=>e(e=>{let i=e.tabs[t]??[];return{tabs:{...e.tabs,[t]:d(i,n,{isExecuting:r})}}}),setPlan:(t,n,r)=>e(e=>{let i=e.tabs[t]??[];return{tabs:{...e.tabs,[t]:d(i,n,{plan:r})}}}),setGraphs:(t,n,r)=>e(e=>{let i=e.tabs[t];return i?{tabs:{...e.tabs,[t]:d(i,n,{graphs:r})}}:e}),setError:(t,n,r,i=null)=>e(e=>{let a=e.tabs[t]??[];return{tabs:{...e.tabs,[t]:d(a,n,{error:r,errorSql:r?i:null,...r?{isExecuting:!1}:{}})}}}),setDatabase:(t,n,r)=>e(e=>{let i=e.tabs[t]??[];return{tabs:{...e.tabs,[t]:d(i,n,{database:r})}}}),setSourceItem:(t,n,r)=>e(e=>({tabs:{...e.tabs,[t]:d(e.tabs[t]??[],n,{sourceItem:r,title:r.name})}})),setExecutionTime:(t,n,r)=>e(e=>{let i=e.tabs[t]??[];return{tabs:{...e.tabs,[t]:d(i,n,{executionTime:r})}}}),addHistory:t=>e(e=>({history:[t,...e.history].slice(0,500)})),recordExecution:({connectionId:e,tabId:n,query:i,database:a,executionTime:o,error:s,kind:c,rowCount:l,affectedRows:u})=>t().addHistory({id:crypto.randomUUID(),query:r(i),database:a,timestamp:Date.now(),executionTime:o,success:!s,connectionId:e,tabId:n??void 0,...s?{error:s}:{},...c?{kind:c}:{},...l==null?{}:{rowCount:l},...u==null?{}:{affectedRows:u}}),clearHistory:()=>e({history:[]}),captureRevision:(e,n,r)=>{let i=t().tabs[e]?.find(e=>e.id===n);i&&(o(e,n),a.getState().capture(e,{docId:n,title:i.title,text:i.query,database:i.database,reason:r}))}}),{name:`planche-query`,storage:n(),version:2,migrate:f,partialize:e=>({tabs:Object.fromEntries(Object.entries(e.tabs).map(([e,t])=>[e,t.map(e=>({...e,isExecuting:!1,results:[],plan:null,graphs:null,error:null,errorSql:null,executionTime:null}))])),activeTabId:e.activeTabId,history:c.getState().persistQueryHistory?e.history.slice(0,l):[]})}));export{p as n,u as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{i as n,r}from"./Cu_sGzNJ.js";import{F as i}from"./S7HbowYz.js";import{ft as a,mt as o}from"./CExE8dKz.js";import{r as s}from"./B7zF7RU4.js";import{t as c}from"./84VwJAQi.js";import{t as l}from"./BYvM8E39.js";import{t as u}from"./BQ1Rcyw6.js";import{t as d}from"./_zaonxnw.js";var f=e(t(),1);function p(e){let t=e.indexOf(`:`);return t===-1?`(no prefix)`:e.slice(0,t+1)}function m(e){return e<0?`none`:e<36e5?`lt1h`:e<864e5?`lt1d`:e<6048e5?`lt1w`:`ge1w`}function h(){let e=()=>({count:0,bytes:0});return{analyzed:0,totalBytes:0,byType:{},byPrefix:{},ttl:{none:e(),lt1h:e(),lt1d:e(),lt1w:e(),ge1w:e()},top:[],missingSizes:0}}function g(e,t,n){let r=e[t]??={count:0,bytes:0};r.count+=1,r.bytes+=n}function _(e,t){let n={...e,byType:{...e.byType},byPrefix:{...e.byPrefix},ttl:{...e.ttl},top:[...e.top]};for(let e of Object.keys(n.byType))n.byType[e]={...n.byType[e]};for(let e of Object.keys(n.byPrefix))n.byPrefix[e]={...n.byPrefix[e]};for(let e of Object.keys(n.ttl))n.ttl[e]={...n.ttl[e]};for(let e of t){if(e.ttlMs===-2||e.type===`none`)continue;let t=e.bytes??0;e.bytes===null&&(n.missingSizes+=1),n.analyzed+=1,n.totalBytes+=t,g(n.byType,e.type,t),g(n.byPrefix,p(e.key),t);let r=n.ttl[m(e.ttlMs)];r.count+=1,r.bytes+=t,e.bytes!==null&&(n.top.length<50||t>n.top[n.top.length-1].bytes)&&(n.top.push({key:e.key,type:e.type,bytes:t}),n.top.sort((e,t)=>t.bytes-e.bytes),n.top.length>50&&(n.top.length=50))}return n}function v(e){return Object.entries(e).sort((e,t)=>t[1].bytes-e[1].bytes||t[1].count-e[1].count)}var y=r(),b=300,x=[1e4,1e5,1e6];function S({title:e,rows:t,onRow:n}){return(0,y.jsxs)(`section`,{className:`min-w-0`,children:[(0,y.jsx)(`h3`,{className:`mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:e}),(0,y.jsx)(`table`,{className:`w-full border-collapse text-xs`,children:(0,y.jsx)(`tbody`,{children:t.map(([e,t,r,i])=>(0,y.jsxs)(`tr`,{className:`border-b border-border/50 ${n?`cursor-pointer hover:bg-muted/50`:``}`,onClick:n?()=>n(e):void 0,children:[(0,y.jsx)(`td`,{className:`max-w-0 truncate py-1 pr-2 font-mono`,title:e,children:e}),(0,y.jsx)(`td`,{className:`w-20 py-1 text-right tabular-nums text-muted-foreground`,children:t}),(0,y.jsx)(`td`,{className:`w-24 py-1 text-right tabular-nums`,children:r}),(0,y.jsx)(`td`,{className:`w-14 py-1 text-right tabular-nums text-muted-foreground`,children:i??``})]},e))})})]})}function C({connectionId:e,tabId:t,input:r}){let{t:p}=n(),m=c(e,t,``),[g,C]=(0,f.useState)(r.trim().split(/\s+/)[0]||`db0`),[w,T]=(0,f.useState)(x[1]),[E,D]=(0,f.useState)(null),[O,k]=(0,f.useState)(null),[A,j]=(0,f.useState)(!1),[M,N]=(0,f.useState)(null),P=(0,f.useRef)(!1),[F,I]=(0,f.useState)(0),L=async()=>{P.current=!1,j(!0),N(null);let e=h();D(e);try{let t=Number(await m.read(`DBSIZE`,g));k({scanned:0,total:Number.isFinite(t)?t:null});let n=`0`,r=0;do{let a=await m.read(`SCAN ${n} COUNT ${b}`,g);n=String(a[0]);let o=a[1].slice(0,Math.max(0,w-r));if(o.length>0){let t=await m.readBatch(o.flatMap(e=>{let t=i(e);return[`MEMORY USAGE ${t}`,`TYPE ${t}`,`PTTL ${t}`]}),g),n=o.map((e,n)=>{let[r,i,a]=t.slice(n*3,n*3+3);return{key:e,type:typeof i==`string`?i:`unknown`,bytes:r instanceof Error||r==null?null:Number(r),ttlMs:a instanceof Error?-1:Number(a)}});e=_(e,n),D(e)}r+=o.length,k({scanned:r,total:Number.isFinite(t)?t:null})}while(n!==`0`&&r<w&&!P.current)}catch(e){N(d(e))}finally{j(!1),I(e=>e+1)}},R=e=>E&&E.totalBytes>0?`${(e/E.totalBytes*100).toFixed(1)}%`:``,z={none:p(`tools.redis.ttlNone`),lt1h:`< 1h`,lt1d:`< 1d`,lt1w:`< 1w`,ge1w:`≥ 1w`},B=O?.total?Math.min(100,Math.round(O.scanned/O.total*100)):null;return(0,y.jsx)(u,{title:p(`tools.redis.memory`),onRefresh:async()=>{A||await L()},error:M,onDismissError:()=>N(null),actions:(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(l,{access:m,value:g,onChange:C,disabled:A,version:F}),(0,y.jsx)(`select`,{value:w,disabled:A,onChange:e=>T(Number(e.target.value)),className:`h-7 rounded border bg-background px-1 text-xs`,children:x.map(e=>(0,y.jsx)(`option`,{value:e,children:p(`tools.redis.upTo`,{count:e.toLocaleString()})},e))}),A?(0,y.jsx)(`button`,{type:`button`,onClick:()=>{P.current=!0},className:`flex h-7 items-center rounded border bg-background px-2 text-muted-foreground hover:text-foreground`,children:p(`tools.stop`)}):(0,y.jsx)(`button`,{type:`button`,onClick:()=>void L(),className:`flex h-7 items-center rounded border border-primary/30 bg-primary/10 px-2 text-primary hover:bg-primary/20`,children:p(`tools.redis.analyze`)})]}),children:(0,y.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:p(`tools.redis.memoryNote`)}),O&&(0,y.jsxs)(`div`,{className:`space-y-1`,children:[(0,y.jsx)(`div`,{className:`h-1.5 w-full max-w-xl overflow-hidden rounded bg-muted`,children:(0,y.jsx)(`div`,{className:`h-full bg-primary transition-all`,style:{width:`${B??(A?30:100)}%`}})}),(0,y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[p(`tools.redis.scanned`,{scanned:O.scanned.toLocaleString(),total:O.total?.toLocaleString()??`?`}),!A&&O.total!==null&&O.scanned<O.total&&` · ${p(`tools.redis.partial`)}`]})]}),E&&E.analyzed===0&&!A&&(0,y.jsx)(`p`,{className:`rounded border border-dashed p-6 text-center text-sm text-muted-foreground`,children:p(`tools.redis.noKeys`,{database:g})}),E&&E.analyzed>0&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(`div`,{className:`flex flex-wrap gap-6 text-sm`,children:[(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:p(`tools.redis.keysAnalyzed`)}),(0,y.jsx)(`div`,{className:`font-semibold tabular-nums`,children:E.analyzed.toLocaleString()})]}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:p(`tools.redis.totalMemory`)}),(0,y.jsx)(`div`,{className:`font-semibold`,children:s(E.totalBytes)})]}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:p(`tools.redis.average`)}),(0,y.jsx)(`div`,{className:`font-semibold`,children:s(Math.round(E.totalBytes/E.analyzed))})]})]}),E.missingSizes>0&&(0,y.jsx)(`p`,{className:`text-xs text-catppuccin-yellow`,children:p(`tools.redis.missingSizes`,{count:E.missingSizes})}),(0,y.jsxs)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(320px,1fr))] gap-6`,children:[(0,y.jsx)(S,{title:p(`tools.redis.byType`),rows:v(E.byType).map(([e,t])=>[e,t.count.toLocaleString(),s(t.bytes),R(t.bytes)])}),(0,y.jsx)(S,{title:p(`tools.redis.byTtl`),rows:Object.keys(z).map(e=>[z[e],E.ttl[e].count.toLocaleString(),s(E.ttl[e].bytes),R(E.ttl[e].bytes)])}),(0,y.jsx)(S,{title:p(`tools.redis.byPrefix`),rows:v(E.byPrefix).slice(0,100).map(([e,t])=>[e,t.count.toLocaleString(),s(t.bytes),R(t.bytes)]),onRow:m.readOnly?void 0:t=>{t.endsWith(`:`)&&o(e,`redis-delete`,p(`tools.redis.delete`),`${g} ${t}*`)}}),(0,y.jsx)(S,{title:p(`tools.redis.largest`),rows:E.top.map(e=>[e.key,e.type,s(e.bytes)]),onRow:t=>a(e,{database:g,name:t})})]}),!m.readOnly&&(0,y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:p(`tools.redis.prefixHint`)})]})]})})}export{C as MemoryAnalysis};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{i as n,r}from"./Cu_sGzNJ.js";import{F as i}from"./S7HbowYz.js";import{n as a}from"./C1gqjEN3.js";import{h as o}from"./BnJGrP6V.js";import{t as s}from"./84VwJAQi.js";import{t as c}from"./BYvM8E39.js";import{t as l}from"./BQ1Rcyw6.js";import{t as u}from"./_zaonxnw.js";var d=e(t(),1),f=r(),p=1e5,m=500,h=20;function g({connectionId:e,tabId:t,input:r}){let{t:g}=n(),_=s(e,t,``),[v,...y]=r.trim().split(/\s+/),[b,x]=(0,d.useState)(v||`db0`),[S,C]=(0,d.useState)(y.join(` `)||``),[w,T]=(0,d.useState)(null),[E,D]=(0,d.useState)(``),[O,k]=(0,d.useState)(null),[A,j]=(0,d.useState)(null),[M,N]=(0,d.useState)(null),P=(0,d.useRef)(!1),[F,I]=(0,d.useState)(0),L=async()=>{if(S.trim()){k(`preview`),N(null),j(null),D(``),P.current=!1;try{let e=new Set,t=`0`;do{let n=await _.read(`SCAN ${t} MATCH ${i(S)} COUNT 1000`,b);t=String(n[0]);for(let t of n[1])e.add(t)}while(t!==`0`&&e.size<p&&!P.current);T({pattern:S,database:b,keys:[...e].slice(0,p),capped:t!==`0`})}catch(e){N(u(e))}finally{k(null)}}},R=async()=>{if(!w||E!==w.pattern)return;k(`delete`),N(null),P.current=!1;let n=0,r=performance.now();try{for(let e=0;e<w.keys.length&&!P.current;e+=m){let t=w.keys.slice(e,e+m);await _.write(`UNLINK ${t.map(i).join(` `)}`,{confirmed:!0,database:w.database,skipHistory:!0}),n+=t.length,j(n)}}catch(e){e instanceof Error&&e.name===`ExecutionCancelled`||N(u(e))}finally{a.getState().recordExecution({connectionId:e,tabId:t,query:`UNLINK <${n} keys matching ${w.pattern}>`,database:w.database,executionTime:Math.round(performance.now()-r),kind:`UNLINK`,affectedRows:n}),k(null),T(null),D(``),I(e=>e+1),o(e)}};return _.readOnly?(0,f.jsx)(l,{title:g(`tools.redis.delete`),onRefresh:async()=>{},error:null,onDismissError:()=>{},children:(0,f.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:g(`tools.redis.deleteReadOnly`)})}):(0,f.jsx)(l,{title:g(`tools.redis.delete`),onRefresh:async()=>{O||await L()},error:M,onDismissError:()=>N(null),children:(0,f.jsxs)(`div`,{className:`max-w-3xl space-y-4 p-4 text-xs`,children:[(0,f.jsx)(`p`,{className:`text-muted-foreground`,children:g(`tools.redis.deleteIntro`)}),(0,f.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,f.jsx)(c,{access:_,value:b,onChange:e=>{x(e),T(null)},disabled:O!==null,version:F}),(0,f.jsx)(`input`,{className:`h-7 w-80 rounded border bg-background px-2 font-mono`,placeholder:`session:*`,value:S,disabled:O!==null,onChange:e=>{C(e.target.value),T(null)},onKeyDown:e=>{e.key===`Enter`&&L()}}),O===`preview`?(0,f.jsx)(`button`,{type:`button`,onClick:()=>{P.current=!0},className:`h-7 rounded border bg-background px-2 text-muted-foreground`,children:g(`tools.stop`)}):(0,f.jsx)(`button`,{type:`button`,disabled:!S.trim()||O!==null,onClick:()=>void L(),className:`h-7 rounded border border-primary/30 bg-primary/10 px-2 text-primary hover:bg-primary/20 disabled:opacity-40`,children:g(`tools.redis.preview`)})]}),S.trim()===`*`&&(0,f.jsx)(`p`,{className:`text-catppuccin-yellow`,children:g(`tools.redis.deleteAllWarning`)}),w&&(0,f.jsxs)(`div`,{className:`space-y-3 rounded-lg border p-3`,children:[(0,f.jsxs)(`p`,{children:[(0,f.jsx)(`strong`,{children:g(`tools.redis.matchCount`,{count:w.keys.length.toLocaleString(),database:w.database})}),w.capped&&(0,f.jsx)(`span`,{className:`ml-2 text-catppuccin-yellow`,children:g(`tools.redis.matchCapped`,{cap:p.toLocaleString()})})]}),w.keys.length>0&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`ul`,{className:`max-h-48 overflow-auto rounded bg-muted/40 p-2 font-mono`,children:[w.keys.slice(0,h).map(e=>(0,f.jsx)(`li`,{className:`truncate`,children:e},e)),w.keys.length>h&&(0,f.jsxs)(`li`,{className:`text-muted-foreground`,children:[`… `,(w.keys.length-h).toLocaleString()]})]}),(0,f.jsx)(`p`,{className:`text-muted-foreground`,children:g(`tools.redis.deleteConfirm`,{pattern:w.pattern})}),(0,f.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,f.jsx)(`input`,{className:`h-7 w-80 rounded border bg-background px-2 font-mono`,value:E,onChange:e=>D(e.target.value),placeholder:w.pattern}),O===`delete`?(0,f.jsx)(`button`,{type:`button`,onClick:()=>{P.current=!0},className:`h-7 rounded border bg-background px-2 text-muted-foreground`,children:g(`tools.stop`)}):(0,f.jsx)(`button`,{type:`button`,disabled:E!==w.pattern,onClick:()=>void R(),className:`h-7 rounded bg-destructive px-3 text-white disabled:opacity-40`,children:g(`tools.redis.deleteKeys`,{count:w.keys.length.toLocaleString()})})]}),(0,f.jsx)(`p`,{className:`text-muted-foreground`,children:g(`tools.redis.deleteNote`)})]})]}),A!==null&&(0,f.jsx)(`p`,{className:`text-primary`,children:g(`tools.redis.deletedCount`,{count:A.toLocaleString()})})]})})}export{g as BulkDelete};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./hePW80VL.js";import{n as t,o as n,p as r}from"./CYz610vE.js";import{t as i}from"./CiL8zoYm.js";import{i as a,r as o}from"./Cu_sGzNJ.js";import{a as s,i as c,n as l,o as ee,r as u,t as d}from"./DzRyVlxz.js";import{i as f,t as p}from"./S7HbowYz.js";import{n as m}from"./DU-Eln5x.js";import{n as h}from"./D8_hwGjG.js";import{n as g,t as _}from"./C1gqjEN3.js";import{O as v,dn as y,jt as b,l as x,pt as S,tt as C,vt as w,wt as T}from"./CExE8dKz.js";var E=e(r(),1),D=o(),O={execute:`command.localHistory.reason.execute`,edit:`command.localHistory.reason.edit`,replaced:`command.localHistory.reason.replaced`,restore:`command.localHistory.reason.restore`,close:`command.localHistory.reason.close`},k=Object.freeze([]);function A(e){let t=(Date.now()-e)/36e5;return t<1?`<1h`:t<24?`1-24h`:t<168?`1-7d`:`7d+`}function j(){let{t:e}=a(),r=h(e=>e.activeDialog),o=h(e=>e.closeDialog),j=h(e=>e.setFooterMessage),M=p(e=>e.activeConnectionId),N=g(e=>M?e.activeTabId[M]:null),P=g(e=>M?e.tabs[M]??_:_),F=f(e=>M?e.revisions[M]??k:k),I=m(e=>e.persistQueryHistory),L=C(e=>e.themeId),R=v(L),[z,B]=(0,E.useState)(!0),[V,H]=(0,E.useState)(``),[U,W]=(0,E.useState)(null),[G,K]=(0,E.useState)(`current`),q=P.find(e=>e.id===N),J=r===`local-history`;(0,E.useEffect)(()=>{if(!J)return;let e=N?F.filter(e=>e.docId===N).length:0;n(`local_history_open`,{revisions:t(F.length),tab_revisions:t(e)})},[J]);let Y=(0,E.useMemo)(()=>{let e=V.trim().toLowerCase();return F.filter(t=>z&&N&&t.docId!==N?!1:!e||t.text.toLowerCase().includes(e)||t.title.toLowerCase().includes(e))},[F,V,z,N]),X=q?.query??``,Z=Y.find(e=>e.id===U)??Y.find(e=>e.text!==X)??Y[0],Q=(0,E.useMemo)(()=>{if(!Z)return;let e=F.filter(e=>e.docId===Z.docId);return e[e.findIndex(e=>e.id===Z.id)+1]},[F,Z]),te=G===`current`?X:Q?.text??``;function $(e,t){n(`local_history_recover`,{action:e,reason:t.reason,age:A(t.timestamp),same_tab:t.docId===N,compare:G})}function ne(){if(!M||!N||!Z)return;$(`restore`,Z);let t=g.getState();t.captureRevision(M,N,`restore`),t.setEditorContent(M,N,Z.text),j(e(`command.localHistory.restored`)),o()}function re(){!M||!Z||($(`new_tab`,Z),S(M,Z.text,Z.database,Z.title),j(e(`command.localHistory.openedInTab`)),o())}function ie(e){M&&(f.getState().removeRevision(M,e.id),U===e.id&&W(null))}function ae(){M&&(f.getState().clearRevisions(M),W(null))}return(0,D.jsx)(d,{open:J,onOpenChange:e=>{e||o()},children:(0,D.jsxs)(l,{className:`flex max-h-[85vh] flex-col sm:max-w-[1000px]`,children:[(0,D.jsxs)(s,{children:[(0,D.jsx)(ee,{children:e(`command.localHistory.title`)}),(0,D.jsx)(u,{children:e(`command.localHistory.description`)})]}),!I&&(0,D.jsx)(`p`,{className:`rounded-md border border-dashed px-3 py-2 text-xs text-muted-foreground`,children:e(`command.localHistory.notPersisted`)}),(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,D.jsxs)(`div`,{className:`relative min-w-[200px] flex-1`,children:[(0,D.jsx)(b,{className:`absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,D.jsx)(x,{value:V,onChange:e=>H(e.target.value),placeholder:e(`command.localHistory.searchPlaceholder`),className:`h-8 pl-7 text-xs`})]}),(0,D.jsxs)(`div`,{className:`flex overflow-hidden rounded-md border`,children:[(0,D.jsx)(`button`,{type:`button`,onClick:()=>B(!0),className:`px-2 py-1 text-xs ${z?`bg-accent`:`hover:bg-accent/50`}`,children:e(`command.localHistory.scopeTab`)}),(0,D.jsx)(`button`,{type:`button`,onClick:()=>B(!1),className:`border-l px-2 py-1 text-xs ${z?`hover:bg-accent/50`:`bg-accent`}`,children:e(`command.localHistory.scopeAll`)})]}),(0,D.jsxs)(`div`,{className:`flex overflow-hidden rounded-md border`,children:[(0,D.jsx)(`button`,{type:`button`,onClick:()=>K(`current`),className:`px-2 py-1 text-xs ${G===`current`?`bg-accent`:`hover:bg-accent/50`}`,children:e(`command.localHistory.compareCurrent`)}),(0,D.jsx)(`button`,{type:`button`,onClick:()=>K(`previous`),className:`border-l px-2 py-1 text-xs ${G===`previous`?`bg-accent`:`hover:bg-accent/50`}`,children:e(`command.localHistory.comparePrevious`)})]})]}),Y.length===0?(0,D.jsx)(`div`,{className:`py-10 text-center text-sm text-muted-foreground`,children:F.length===0?e(`command.localHistory.empty`):e(`command.localHistory.noMatch`)}):(0,D.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-[260px_1fr] gap-3`,children:[(0,D.jsx)(w,{className:`h-[440px] rounded-md border`,children:(0,D.jsx)(`ul`,{className:`divide-y`,children:Y.map(t=>(0,D.jsxs)(`li`,{className:`group relative`,children:[(0,D.jsxs)(`button`,{type:`button`,onClick:()=>W(t.id),className:`flex w-full flex-col items-start gap-0.5 px-3 py-2 pr-8 text-left text-xs hover:bg-accent ${t.id===Z?.id?`bg-accent`:``}`,children:[(0,D.jsx)(`span`,{className:`font-medium`,children:new Date(t.timestamp).toLocaleString()}),(0,D.jsxs)(`span`,{className:`w-full truncate text-muted-foreground`,children:[t.title,` · `,e(O[t.reason]),` · `,e(`command.localHistory.chars`,{count:t.text.length})]})]}),(0,D.jsx)(`button`,{type:`button`,onClick:()=>ie(t),title:e(`command.localHistory.delete`),className:`absolute right-1.5 top-1.5 rounded p-1 text-muted-foreground opacity-0 hover:bg-destructive/10 hover:text-destructive group-hover:opacity-100`,children:(0,D.jsx)(T,{className:`h-3.5 w-3.5`})})]},t.id))})}),(0,D.jsxs)(`div`,{className:`flex h-[440px] flex-col overflow-hidden rounded-md border`,children:[(0,D.jsx)(`div`,{className:`border-b bg-muted/40 px-3 py-1.5 text-xs text-muted-foreground`,children:G===`current`?e(`command.localHistory.diffAgainstCurrent`):Q?e(`command.localHistory.diffAgainstPrevious`,{time:new Date(Q.timestamp).toLocaleString()}):e(`command.localHistory.noPrevious`)}),(0,D.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,D.jsx)(y,{language:`sql`,theme:R,original:Z?.text??``,modified:te,options:{readOnly:!0,renderSideBySide:!1,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,renderOverviewRuler:!1}})})]})]}),(0,D.jsxs)(c,{className:`sm:justify-between`,children:[(0,D.jsx)(i,{variant:`ghost`,onClick:ae,disabled:F.length===0,children:e(`command.localHistory.clearAll`)}),(0,D.jsxs)(`div`,{className:`flex gap-2`,children:[(0,D.jsx)(i,{variant:`outline`,onClick:o,children:e(`command.close`)}),(0,D.jsx)(i,{variant:`outline`,onClick:re,disabled:!Z,children:e(`command.localHistory.openInNewTab`)}),(0,D.jsx)(i,{onClick:ne,disabled:!Z||!q,children:e(`command.localHistory.restore`)})]})]})]})})}export{j as LocalHistoryDialog};
|