planche 0.7.13 → 0.7.15
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/{AboutDialog-CxhMAbHE.js → AboutDialog-DJ1xTjQa.js} +1 -1
- package/app/assets/ConnectDialog-CsyQZTfv.js +1 -0
- package/app/assets/CopyDatabaseDialog-DVaHAD1q.js +1 -0
- package/app/assets/{CopyTableDialog-y2yVCEoe.js → CopyTableDialog-BGaxEeFf.js} +1 -1
- package/app/assets/CreateDatabaseDialog-DiwtxqWI.js +1 -0
- package/app/assets/CreateSchemaDialog-CPhHOdED.js +1 -0
- package/app/assets/{DataDiffDialog-BQvHEwN1.js → DataDiffDialog-BQzfzN_-.js} +1 -1
- package/app/assets/DownloadToCSVDialog-CMQ_k6oK.js +3 -0
- package/app/assets/EditSchemaDialog-e9w9yyIn.js +2 -0
- package/app/assets/FindReplaceDialog-BbbQS-3c.js +1 -0
- package/app/assets/{FlushDialog-DgeG-OGF.js → FlushDialog-D_tK375i.js} +1 -1
- package/app/assets/{LinkColumnDialog-DBbb55b5.js → LinkColumnDialog-Df-_8K5T.js} +1 -1
- package/app/assets/{LocalHistoryDialog-BZcsP3oj.js → LocalHistoryDialog-B3Yww-nk.js} +1 -1
- package/app/assets/{ProcessListDialog-DpH-Mybn.js → ProcessListDialog-6YJn364S.js} +1 -1
- package/app/assets/{QuickCommandPalette-CjZVdpv1.js → QuickCommandPalette-Cvvri_sm.js} +1 -1
- package/app/assets/{RowFormDialog-Cb8MAzWF.js → RowFormDialog-B5yd3Kv7.js} +1 -1
- package/app/assets/{SafetySettingsDialog-fO9X1PFB.js → SafetySettingsDialog-ce5eqfIE.js} +1 -1
- package/app/assets/{SchemaDiffDialog-DdRHijgZ.js → SchemaDiffDialog-CAU4Tko1.js} +1 -1
- package/app/assets/{SchemaToHTMLDialog-HbVvnUOc.js → SchemaToHTMLDialog-Bp8NQ4S0.js} +1 -1
- package/app/assets/{StatusDialog-B2pVC65w.js → StatusDialog-CT8E2pK0.js} +1 -1
- package/app/assets/{TermsDialog-B8Ehf7Ck.js → TermsDialog-BzlyiBiw.js} +1 -1
- package/app/assets/{UserAddDialog-CzmcUU7I.js → UserAddDialog-CyK4YAvW.js} +1 -1
- package/app/assets/UserManagerDialog-oRNIMr07.js +1 -0
- package/app/assets/{VariablesDialog-Dg5CDmWn.js → VariablesDialog-bHfrRqC3.js} +1 -1
- package/app/assets/app-storage-C_1RLCyI.js +1 -0
- package/app/assets/{connection-store-CAPTzFtT.js → connection-store-DjSajhjh.js} +1 -1
- package/app/assets/database-BUN6Jvbi.js +1 -0
- package/app/assets/{dbms-Bsjvyvsp.js → dbms-B9Zk7nEm.js} +8 -8
- package/app/assets/de-sebDJePc.js +2 -0
- package/app/assets/editor-registry-C_yarsyY.js +1 -0
- package/app/assets/{engine-DWYEiSZM.js → engine-C2ZJalx5.js} +1 -1
- package/app/assets/fr-CIPqitfo.js +2 -0
- package/app/assets/hmr-singleton-Bit0Kfog.js +1 -0
- package/app/assets/{i18n-NLG6supM.js → i18n-BBdlx4Gw.js} +2 -2
- package/app/assets/ja-Bf1tvh4M.js +2 -0
- package/app/assets/ko-D8httUGO.js +2 -0
- package/app/assets/main-BjGObGVl.js +940 -0
- package/app/assets/main-DaPLBcIe.css +2 -0
- package/app/assets/pro-usage-dBNmC2gt.js +1 -0
- package/app/assets/query-execution-DqpMGs8z.js +7 -0
- package/app/assets/{query-store-CRp9AQS5.js → query-store-Bz1pmp4E.js} +1 -1
- package/app/assets/{schema-nodes-D3-cz2Xk.js → schema-nodes-XgnUaB2x.js} +1 -1
- package/app/assets/{select-DAm5iaPc.js → select-BFa0--sE.js} +1 -1
- package/app/assets/{settings-store-CYHWBgNo.js → settings-store-CSRx4hwh.js} +1 -1
- package/app/assets/table-copy-W19HZGKM.js +1 -0
- package/app/assets/use-engine-C_C2qpfD.js +1 -0
- package/app/assets/zh-DAWEX6ju.js +2 -0
- package/app/index.html +21 -17
- package/app/landing.css +13 -6
- package/dist/index.js +611 -23
- package/package.json +9 -4
- package/app/assets/ConnectDialog-Dk5tee_2.js +0 -1
- package/app/assets/CopyDatabaseDialog-BwviLOYR.js +0 -1
- package/app/assets/CreateDatabaseDialog-v63m43WC.js +0 -1
- package/app/assets/DownloadToCSVDialog-DGQnI5eb.js +0 -3
- package/app/assets/EditSchemaDialog-DhC0D6ws.js +0 -1
- package/app/assets/FindReplaceDialog-CluDq2uv.js +0 -1
- package/app/assets/UserManagerDialog-YBOODqbg.js +0 -1
- package/app/assets/app-storage-B6v72zLH.js +0 -1
- package/app/assets/database-ezjCHdX9.js +0 -1
- package/app/assets/de-DP-iF2aJ.js +0 -2
- package/app/assets/fr-DFtpsn6X.js +0 -2
- package/app/assets/ja--An7okvc.js +0 -2
- package/app/assets/ko-C-OjtONK.js +0 -2
- package/app/assets/main-Cs_AF7Zo.js +0 -940
- package/app/assets/main-pmntwMQg.css +0 -2
- package/app/assets/pro-usage-VlZJ74Cl.js +0 -1
- package/app/assets/query-execution-BZE0rVpK.js +0 -7
- package/app/assets/table-copy-93YWKupe.js +0 -1
- package/app/assets/use-engine-DSWrApw6.js +0 -1
- package/app/assets/zh-C4dUMxzb.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{h as e,n as t,t as n,v as r}from"./ui-store-DfspmPOn.js";import{_t as i,ct as a,f as o,ft as s,h as c,m as l,ot as u,p as d,pt as f}from"./main-
|
|
1
|
+
import{h as e,n as t,t as n,v as r}from"./ui-store-DfspmPOn.js";import{_t as i,ct as a,f as o,ft as s,h as c,m as l,ot as u,p as d,pt as f}from"./main-BjGObGVl.js";import{a as p,l as m,m as h,t as g}from"./button--s6nUzD8.js";import{t as _}from"./connection-store-DjSajhjh.js";import{n as v}from"./settings-store-CSRx4hwh.js";import{i as y}from"./database-BUN6Jvbi.js";import{c as b,t as x}from"./query-execution-DqpMGs8z.js";import{n as S}from"./use-engine-C_C2qpfD.js";import{a as C,i as w,n as T,o as E,r as D,t as ee}from"./dialog-CJoWJzRo.js";var O=p(`wand-sparkles`,[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`,key:`ul74o6`}],[`path`,{d:`m14 7 3 3`,key:`1r5n42`}],[`path`,{d:`M5 6v4`,key:`ilb8ba`}],[`path`,{d:`M19 14v4`,key:`blhpug`}],[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M7 8H3`,key:`zfb6yr`}],[`path`,{d:`M21 16h-4`,key:`1cnmox`}],[`path`,{d:`M11 3H9`,key:`1obp7u`}]]),k=r(e(),1);function A(e){let t=e.slice(e.indexOf(`(`)+1,e.lastIndexOf(`)`)),n=[],r=/'((?:[^']|'')*)'/g,i;for(;i=r.exec(t);)n.push(i[1].replaceAll(`''`,`'`));return n}function j(e,t={}){let{oracleDate:n=!1}=t,r=e.type.trim(),i=r.toLowerCase(),a=/\bunsigned\b/.test(i);if(/^enum\(/.test(i))return{kind:`enum`,options:A(r)};if(/^set\(/.test(i))return{kind:`set`,options:A(r)};if(/^(tinyint\(1\)|bool|boolean|bit\(1\)|bit)(?![\w(])/.test(i))return{kind:`boolean`};let o=/^number(?:\((\d+|\*)(?:,\s*(-?\d+))?\))?$/.exec(i);if(o)return o[2]&&Number(o[2])>0?{kind:`decimal`}:o[1]?{kind:`integer`}:{kind:`decimal`};if(/^(tinyint|smallint|mediumint|int|integer|bigint|int2|int4|int8|serial|bigserial|smallserial)\b/.test(i))return{kind:`integer`,unsigned:a};if(/^(decimal|numeric|float|double|real|money|float4|float8|double precision)\b/.test(i))return{kind:`decimal`,unsigned:a};if(/^(datetime2|datetime|timestamp|smalldatetime|datetimeoffset)\b/.test(i))return{kind:`datetime`};if(/^date\b/.test(i))return{kind:n?`datetime`:`date`};if(/^(time|timetz)\b/.test(i))return{kind:`time`};if(/^(json|jsonb)\b/.test(i))return{kind:`json`};if(/^(uuid|uniqueidentifier)\b/.test(i))return{kind:`uuid`};if(/^(blob|tinyblob|mediumblob|longblob|binary|varbinary|bytea|raw|image|bfile)\b/.test(i))return{kind:`binary`};if(/^(text|ntext|tinytext|mediumtext|longtext|clob|nclob|long)\b/.test(i)||/^n?(?:var)?char2?\(max\)/.test(i))return{kind:`text`};let s=/^n?(?:var)?char2?(?:acter)?(?:\s+varying)?\((\d+)(?:\s+(?:char|byte))?\)/.exec(i);return s?{kind:`string`,maxLength:Number(s[1])}:{kind:`string`}}var M=/auto_increment|identity|generated/i;function N(e){return M.test(e.extra)||/^(serial|bigserial|smallserial)\b/i.test(e.type)?{mode:`auto`,text:``}:e.defaultValue===null?e.nullable?{mode:`null`,text:``}:{mode:`value`,text:``}:{mode:`default`,text:``}}function P(e){return e==null?{mode:`keep`,text:``}:{mode:`keep`,text:F(e)}}function F(e){if(e==null)return``;if(typeof e==`object`){if(ArrayBuffer.isView(e))return``;if(e instanceof Date)return e.toISOString();try{return JSON.stringify(e,null,2)}catch{return String(e)}}return String(e)}function I(e,t){let n=t.trim();switch(e.kind){case`integer`:{if(!/^[+-]?\d+$/.test(n))return{error:`integer`};if(e.unsigned&&n.startsWith(`-`))return{error:`unsigned`};let t=Number(n);return{value:Number.isSafeInteger(t)?t:BigInt(n)}}case`decimal`:return n===``||Number.isNaN(Number(n))?{error:`number`}:{value:Number(n)};case`boolean`:return{value:n===`true`||n===`1`};case`json`:try{return{value:JSON.parse(n===``?`null`:n)}}catch{return{error:`json`}}case`set`:return{value:n};case`date`:return n&&!/^\d{4}-\d{2}-\d{2}$/.test(n)?{error:`date`}:{value:n};case`datetime`:return n&&!/^\d{4}-\d{2}-\d{2}([ T]\d{2}:\d{2}(:\d{2}(\.\d+)?)?)?([+-]\d{2}:?\d{2}|Z)?$/.test(n)?{error:`datetime`}:{value:n};case`time`:return n&&!/^-?\d{1,3}:\d{2}(:\d{2}(\.\d+)?)?$/.test(n)?{error:`time`}:{value:n};default:return{value:t}}}var L=m(),R={integer:`result.rowForm.invalid.integer`,unsigned:`result.rowForm.invalid.unsigned`,number:`result.rowForm.invalid.number`,json:`result.rowForm.invalid.json`,date:`result.rowForm.invalid.date`,datetime:`result.rowForm.invalid.datetime`,time:`result.rowForm.invalid.time`};function z(e){return String(e).padStart(2,`0`)}function B(e){let t=new Date,n=`${t.getFullYear()}-${z(t.getMonth()+1)}-${z(t.getDate())}`,r=`${z(t.getHours())}:${z(t.getMinutes())}:${z(t.getSeconds())}`;return e===`date`?n:e===`time`?r:`${n} ${r}`}function V(e){let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e.trim());if(!t)return;let n=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isNaN(n.getTime())?void 0:n}function H({spec:e,state:t,disabled:n,onText:r}){let{t:a}=h(),u=`w-full rounded border bg-background px-2 py-1 text-sm font-mono outline-none focus:ring-1 focus:ring-primary disabled:opacity-50`;switch(e.kind){case`boolean`:return(0,L.jsxs)(`select`,{className:u,value:t.text===`true`||t.text===`1`?`true`:`false`,onChange:e=>r(e.target.value),disabled:n,children:[(0,L.jsx)(`option`,{value:`true`,children:`TRUE`}),(0,L.jsx)(`option`,{value:`false`,children:`FALSE`})]});case`enum`:return(0,L.jsxs)(`select`,{className:u,value:t.text,onChange:e=>r(e.target.value),disabled:n,children:[!e.options?.includes(t.text)&&(0,L.jsx)(`option`,{value:t.text,children:t.text||`—`}),e.options?.map(e=>(0,L.jsx)(`option`,{value:e,children:e},e))]});case`set`:{let i=new Set(t.text.split(`,`).map(e=>e.trim()).filter(Boolean));return(0,L.jsx)(`div`,{className:`flex flex-wrap gap-x-3 gap-y-1 rounded border bg-background px-2 py-1.5`,children:e.options?.map(t=>(0,L.jsxs)(`label`,{className:`flex items-center gap-1 text-xs font-mono`,children:[(0,L.jsx)(`input`,{type:`checkbox`,className:`accent-primary`,checked:i.has(t),disabled:n,onChange:n=>{let a=new Set(i);n.target.checked?a.add(t):a.delete(t),r(e.options.filter(e=>a.has(e)).join(`,`))}}),t]},t))})}case`integer`:case`decimal`:return(0,L.jsx)(`input`,{className:`${u} tabular-nums`,inputMode:`decimal`,value:t.text,onChange:e=>r(e.target.value),disabled:n,placeholder:e.kind===`integer`?`0`:`0.00`});case`date`:case`datetime`:{let[f,p]=t.text.trim().split(/[ T]/);return(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`input`,{className:`${u} flex-1`,value:t.text,onChange:e=>r(e.target.value),disabled:n,placeholder:e.kind===`date`?`YYYY-MM-DD`:`YYYY-MM-DD HH:MM:SS`}),(0,L.jsxs)(d,{children:[(0,L.jsx)(c,{asChild:!0,children:(0,L.jsx)(`button`,{type:`button`,className:`rounded border bg-background p-1.5 text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n,title:a(`result.rowForm.pickDate`),children:(0,L.jsx)(i,{className:`size-3.5`})})}),(0,L.jsx)(l,{className:`w-auto p-0`,align:`end`,children:(0,L.jsx)(o,{mode:`single`,selected:V(f??``),defaultMonth:V(f??``),onSelect:t=>{if(!t)return;let n=`${t.getFullYear()}-${z(t.getMonth()+1)}-${z(t.getDate())}`;r(e.kind===`date`?n:`${n} ${p||`00:00:00`}`)}})})]}),(0,L.jsx)(`button`,{type:`button`,className:`rounded border bg-background px-1.5 py-1 text-[10px] text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n,onClick:()=>r(B(e.kind)),title:a(`result.rowForm.now`),children:(0,L.jsx)(s,{className:`size-3.5`})})]})}case`time`:return(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`input`,{className:`${u} flex-1`,value:t.text,onChange:e=>r(e.target.value),disabled:n,placeholder:`HH:MM:SS`}),(0,L.jsx)(`button`,{type:`button`,className:`rounded border bg-background px-1.5 py-1 text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n,onClick:()=>r(B(`time`)),title:a(`result.rowForm.now`),children:(0,L.jsx)(s,{className:`size-3.5`})})]});case`json`:{let e=!0;try{t.text.trim()&&JSON.parse(t.text)}catch{e=!1}return(0,L.jsxs)(`div`,{className:`space-y-1`,children:[(0,L.jsx)(`textarea`,{className:`${u} min-h-[96px] resize-y text-xs ${e?``:`border-destructive`}`,value:t.text,onChange:e=>r(e.target.value),disabled:n,spellCheck:!1,placeholder:`{}`}),(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 rounded border bg-background px-1.5 py-0.5 text-[10px] text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n||!e||!t.text.trim(),onClick:()=>{try{r(JSON.stringify(JSON.parse(t.text),null,2))}catch{}},children:[(0,L.jsx)(O,{className:`size-3`}),a(`result.rowForm.formatJson`)]}),!e&&(0,L.jsx)(`span`,{className:`text-[10px] text-destructive`,children:a(`result.rowForm.invalid.json`)})]})]})}case`text`:return(0,L.jsx)(`textarea`,{className:`${u} min-h-[72px] resize-y`,value:t.text,onChange:e=>r(e.target.value),disabled:n,spellCheck:!1});case`binary`:return(0,L.jsx)(`div`,{className:`rounded border bg-muted/40 px-2 py-1 text-xs italic text-muted-foreground`,children:a(`result.rowForm.binaryUnsupported`)});case`uuid`:return(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`input`,{className:`${u} flex-1`,value:t.text,onChange:e=>r(e.target.value),disabled:n,placeholder:`00000000-0000-0000-0000-000000000000`}),(0,L.jsx)(`button`,{type:`button`,className:`rounded border bg-background px-1.5 py-1 text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n,onClick:()=>r(crypto.randomUUID()),title:a(`result.rowForm.generateUuid`),children:(0,L.jsx)(O,{className:`size-3.5`})})]});default:{let i=t.text.length>80||t.text.includes(`
|
|
2
2
|
`);return(0,L.jsxs)(`div`,{className:`space-y-0.5`,children:[i?(0,L.jsx)(`textarea`,{className:`${u} min-h-[56px] resize-y`,value:t.text,onChange:e=>r(e.target.value),disabled:n,spellCheck:!1}):(0,L.jsx)(`input`,{className:u,value:t.text,onChange:e=>r(e.target.value),disabled:n,maxLength:e.maxLength}),e.maxLength&&(0,L.jsxs)(`div`,{className:`text-right text-[10px] tabular-nums ${t.text.length>e.maxLength?`text-destructive`:`text-muted-foreground`}`,children:[t.text.length,`/`,e.maxLength]})]})}}}function U(){let{t:e}=h(),r=n(`row-form`),i=t(e=>e.closeDialog),o=t(e=>e.setFooterMessage),s=S(r?.connectionId??``),c=_(e=>r?e.transactionOpen[r.connectionId]:!1),[l,d]=(0,k.useState)(null),[p,m]=(0,k.useState)(null),[O,A]=(0,k.useState)({}),[M,F]=(0,k.useState)({}),[z,B]=(0,k.useState)(null),[V,U]=(0,k.useState)(!1),W=r?.mode===`edit`;(0,k.useEffect)(()=>{if(!r)return;let e=!1,t=y(r.serverConnectionId);return s.introspect.listColumns(t,r.database,r.table).then(t=>{if(e)return;d(t);let n={};for(let e of t)if(r.mode===`edit`){let t=r.fields.find(t=>t.orgName===e.name);n[e.name]=P(t?r.row?.[t.name]:void 0)}else n[e.name]=N(e);A(n)}).catch(t=>{e||m(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[r?.serverConnectionId,r?.database,r?.table,r?.mode]);let G=(0,k.useMemo)(()=>new Map((l??[]).map(e=>[e.name,j(e,{oracleDate:s.id===`oracle`})])),[l,s.id]),K=(0,k.useCallback)((e,t)=>{A(n=>({...n,[e]:{...n[e],mode:t}})),F(t=>{let n={...t};return delete n[e],n})},[]),q=(0,k.useCallback)((e,t)=>{A(n=>({...n,[e]:{mode:`value`,text:t}})),F(t=>{let n={...t};return delete n[e],n})},[]),J=(0,k.useMemo)(()=>({__default:!0}),[]),Y=(0,k.useCallback)(()=>{if(!l)return null;let t=new Map,n={};for(let r of l){let i=O[r.name],a=G.get(r.name);if(!i||i.mode===`auto`||i.mode===`keep`)continue;if(i.mode===`null`){t.set(r.name,null);continue}if(i.mode==="default"){t.set(r.name,J);continue}let o=I(a,i.text);if(`error`in o){n[r.name]=e(R[o.error]??`result.rowForm.invalid.number`);continue}if(a.maxLength&&typeof o.value==`string`&&o.value.length>a.maxLength){n[r.name]=e(`result.rowForm.invalid.length`,{max:a.maxLength});continue}t.set(r.name,o.value)}return F(n),Object.keys(n).length>0?null:{values:t}},[l,O,G,e,J]),X=(0,k.useCallback)(e=>{if(!r)return null;let t=e=>e===J?`DEFAULT`:s.quoteLiteral(e);if(r.mode===`insert`){let n=[...e];return n.length===0?s.getQuery(`INSERT_DEFAULT_VALUES`,r.database,r.table):s.getQuery(`INSERT_TABLE`,r.database,r.table,n.map(([e])=>s.quoteIdentifier(e)).join(`, `),n.map(([,e])=>t(e)).join(`, `))}return!r.where||e.size===0?null:s.getQuery(`UPDATE_TABLE`,r.database,r.table,[...e].map(([e,n])=>`${s.quoteIdentifier(e)} = ${t(n)}`).join(`, `),r.where)},[r,s,J]),Z=(0,k.useMemo)(()=>{if(!l)return``;let e=new Map;for(let t of l){let n=O[t.name];if(!(!n||n.mode===`auto`||n.mode===`keep`)){if(n.mode===`null`)e.set(t.name,null);else if(n.mode==="default")e.set(t.name,J);else{let r=I(G.get(t.name),n.text);e.set(t.name,`error`in r?n.text:r.value)}}}return X(e)??``},[l,O,G,X,J]),Q=e=>{let t={};for(let[n,i]of e){if(i===J)continue;let e=r?.fields.find(e=>e.orgName===n);t[e?.name??n]=typeof i==`bigint`?i.toString():i}return t},te=()=>{let e=Y();!e||!r||(r.onStage?.(r.mode,Q(e.values)),i())},ne=async()=>{let n=Y();if(!n||!r)return;let a=X(n.values);if(!a){B(e(`result.rowForm.nothingToWrite`));return}U(!0),B(null);try{if(v.getState().previewGridCommit&&!await t.getState().requestDestructiveConfirm({title:e(W?`result.rowForm.confirmUpdateTitle`:`result.rowForm.confirmInsertTitle`,{table:`${r.database}.${r.table}`}),statements:[a],confirmLabel:e(W?`result.rowForm.update`:`result.rowForm.insert`)}))return;await b(r.connectionId,a,{database:r.database,skipDestructiveConfirm:!0}),o(e(W?`result.rowForm.updated`:`result.rowForm.inserted`,{table:`${r.database}.${r.table}`})),r.onCommitted?.(r.mode,Q(n.values)),i()}catch(e){if(e instanceof x)return;B(e instanceof Error?e.message:String(e))}finally{U(!1)}};if(!r)return null;let $=(e,t,n,r)=>(0,L.jsx)(`button`,{type:`button`,className:`rounded px-1.5 py-0.5 text-[10px] font-medium ${r===t?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted hover:text-foreground`}`,onClick:()=>K(e,t),children:n});return(0,L.jsx)(ee,{open:!0,onOpenChange:e=>{e||i()},children:(0,L.jsxs)(T,{className:`flex max-h-[90vh] flex-col sm:max-w-[860px]`,children:[(0,L.jsxs)(C,{children:[(0,L.jsx)(E,{children:e(W?`result.rowForm.editTitle`:`result.rowForm.insertTitle`)}),(0,L.jsxs)(D,{className:`font-mono text-xs`,children:[r.database,`.`,r.table]})]}),(0,L.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto rounded-md border`,children:[p&&(0,L.jsx)(`div`,{className:`rounded border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:p}),!l&&!p&&(0,L.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-10 text-sm text-muted-foreground`,children:[(0,L.jsx)(u,{className:`size-4 animate-spin`}),e(`result.rowForm.loading`)]}),l&&(0,L.jsxs)(`table`,{className:`w-full border-separate border-spacing-0 text-sm`,children:[(0,L.jsx)(`thead`,{className:`sticky top-0 z-10 bg-background`,children:(0,L.jsxs)(`tr`,{className:`text-left text-[10px] uppercase tracking-wide text-muted-foreground`,children:[(0,L.jsx)(`th`,{className:`w-[38%] border-b px-2 py-1.5 font-medium`,children:e(`result.rowForm.colColumn`)}),(0,L.jsx)(`th`,{className:`border-b px-2 py-1.5 font-medium`,children:e(`result.rowForm.colValue`)})]})}),(0,L.jsx)(`tbody`,{children:l.map(t=>{let n=O[t.name]??{mode:`value`,text:``},i=G.get(t.name),o=n.mode===`auto`,s=M[t.name],c=t.key===`PRI`,l=r.fields.find(e=>e.orgName===t.name),u=!!l&&!!r.row&&r.row[l.name]===null;return(0,L.jsxs)(`tr`,{className:`align-top ${s?`bg-destructive/5`:`hover:bg-muted/30`}`,children:[(0,L.jsxs)(`td`,{className:`border-b border-border/60 px-2 py-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,L.jsx)(`span`,{className:`truncate font-mono text-sm font-medium`,title:t.name,children:t.name}),c&&(0,L.jsxs)(`span`,{className:`flex shrink-0 items-center gap-0.5 rounded border border-catppuccin-yellow/50 px-1 text-[9px] font-semibold text-catppuccin-yellow`,children:[(0,L.jsx)(a,{className:`size-2.5`}),`PK`]})]}),(0,L.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-[10px] text-muted-foreground`,children:[(0,L.jsx)(`span`,{className:`rounded bg-muted px-1 py-px font-mono`,children:t.type}),!t.nullable&&(0,L.jsx)(`span`,{children:`NOT NULL`}),t.defaultValue!==null&&(0,L.jsxs)(`span`,{className:`font-mono`,title:e(`result.rowForm.defaultValue`),children:[`= `,t.defaultValue]}),t.extra&&(0,L.jsx)(`span`,{children:t.extra})]}),t.comment&&(0,L.jsx)(`div`,{className:`mt-0.5 text-[10px] text-muted-foreground/80`,children:t.comment})]}),(0,L.jsx)(`td`,{className:`border-b border-border/60 px-2 py-2`,children:(0,L.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,L.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[n.mode===`keep`?(0,L.jsx)(`div`,{className:`cursor-text truncate rounded border border-dashed bg-muted/30 px-2 py-1 font-mono text-xs text-muted-foreground`,onClick:()=>K(t.name,`value`),title:e(`result.rowForm.clickToChange`),children:u?(0,L.jsx)(`span`,{className:`italic`,children:`NULL`}):n.text||(0,L.jsx)(`span`,{className:`italic`,children:e(`result.rowForm.empty`)})}):n.mode===`value`?(0,L.jsx)(H,{spec:i,state:n,disabled:!1,onText:e=>q(t.name,e)}):(0,L.jsx)(`div`,{className:`rounded border border-dashed bg-muted/30 px-2 py-1 font-mono text-xs italic text-muted-foreground`,children:n.mode===`null`?`NULL`:n.mode==="default"?`DEFAULT (${t.defaultValue??``})`:e(`result.rowForm.autoHint`)}),s&&(0,L.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 text-[11px] text-destructive`,children:[(0,L.jsx)(f,{className:`size-3`}),s]})]}),(0,L.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 rounded border bg-background p-0.5`,children:[W&&$(t.name,`keep`,e(`result.rowForm.mode.keep`),n.mode),(o||!W&&/auto_increment|identity/i.test(t.extra))&&$(t.name,`auto`,e(`result.rowForm.mode.auto`),n.mode),$(t.name,`value`,e(`result.rowForm.mode.value`),n.mode),t.nullable&&$(t.name,`null`,`NULL`,n.mode),t.defaultValue!==null&&$(t.name,`default`,`DEFAULT`,n.mode)]})]})})]},t.name)})})]})]}),l&&(0,L.jsxs)(`div`,{className:`shrink-0 rounded-md border bg-muted/30`,children:[(0,L.jsx)(`div`,{className:`border-b px-3 py-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e(`result.rowForm.preview`)}),(0,L.jsx)(`pre`,{className:`max-h-24 overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-xs`,children:Z||(0,L.jsx)(`span`,{className:`italic text-muted-foreground`,children:e(`result.rowForm.nothingToWrite`)})})]}),z&&(0,L.jsx)(`div`,{className:`shrink-0 rounded border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:z}),(0,L.jsxs)(w,{className:`items-center`,children:[c&&(0,L.jsx)(`span`,{className:`mr-auto text-[11px] text-catppuccin-yellow`,children:e(`result.rowForm.inTransaction`)}),(0,L.jsx)(g,{variant:`outline`,onClick:()=>i(),disabled:V,children:e(`command.close`)}),r.onStage&&(0,L.jsx)(g,{variant:`outline`,onClick:te,disabled:V||!l,title:e(`result.rowForm.stageHint`),children:e(W?`result.rowForm.stageEdit`:`result.rowForm.stageInsert`)}),(0,L.jsxs)(g,{onClick:()=>void ne(),disabled:V||!l,children:[V&&(0,L.jsx)(u,{className:`mr-1 size-3.5 animate-spin`}),e(W?`result.rowForm.update`:`result.rowForm.insert`)]})]})]})})}export{U as RowFormDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,n as t}from"./ui-store-DfspmPOn.js";import{l as n,u as r}from"./main-
|
|
1
|
+
import{a as e,n as t}from"./ui-store-DfspmPOn.js";import{l as n,u as r}from"./main-BjGObGVl.js";import{l as i,m as a,t as o}from"./button--s6nUzD8.js";import{r as s,t as c}from"./i18n-BBdlx4Gw.js";import{a as l,i as u,n as d,r as f,t as p}from"./select-BFa0--sE.js";import{n as m,t as h}from"./settings-store-CSRx4hwh.js";import{a as g,i as _,n as v,o as y,r as b,t as x}from"./dialog-CJoWJzRo.js";var S=i();function C({id:e,checked:t,onChange:n,label:r,hint:i}){return(0,S.jsxs)(`label`,{htmlFor:e,className:`flex cursor-pointer items-start gap-3 rounded-md border p-3 hover:bg-accent/40`,children:[(0,S.jsx)(`input`,{id:e,type:`checkbox`,checked:t,onChange:e=>n(e.target.checked),className:`mt-0.5 size-4 accent-primary`}),(0,S.jsxs)(`span`,{className:`grid gap-0.5`,children:[(0,S.jsx)(`span`,{className:`text-sm font-medium`,children:r}),(0,S.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:i})]})]})}function w(){let i=t(e=>e.activeDialog),w=t(e=>e.closeDialog),T=m(),E=T.update,{t:D}=a();return(0,S.jsx)(x,{open:i===`safety-settings`,onOpenChange:e=>{e||w()},children:(0,S.jsxs)(v,{className:`sm:max-w-[560px]`,children:[(0,S.jsxs)(g,{children:[(0,S.jsx)(y,{children:D(`settings.title`)}),(0,S.jsx)(b,{children:D(`settings.description`)})]}),(0,S.jsxs)(`div`,{className:`grid gap-2`,children:[(0,S.jsx)(C,{id:`s-history`,checked:T.persistQueryHistory,onChange:e=>T.setPersistQueryHistory(e),label:D(`settings.persistHistory`),hint:D(`settings.persistHistoryHint`)}),(0,S.jsx)(C,{id:`s-confirm`,checked:T.confirmDestructive,onChange:e=>E({confirmDestructive:e}),label:`Confirm destructive statements`,hint:`Ask before DROP TABLE/DATABASE, TRUNCATE, DELETE or UPDATE without WHERE, and ALTER … DROP COLUMN.`}),(0,S.jsx)(C,{id:`s-dryrun`,checked:T.previewAffectedRows,onChange:e=>E({previewAffectedRows:e}),label:`Preview affected rows before UPDATE / DELETE`,hint:`Runs the statement's WHERE (joins included) as a SELECT first and shows the count and a sample of the rows; you confirm before anything is written.`}),(0,S.jsx)(C,{id:`s-warn`,checked:T.warnInEditor,onChange:e=>E({warnInEditor:e}),label:`Warn in the editor`,hint:`Underline destructive statements and statements a read-only connection would refuse.`}),(0,S.jsx)(C,{id:`s-override`,checked:T.allowReadOnlyOverride,onChange:e=>E({allowReadOnlyOverride:e}),label:`Allow "Run anyway" on read-only connections`,hint:`When off, writes on a read-only connection are refused with no override.`}),(0,S.jsx)(C,{id:`s-preview`,checked:T.previewGridCommit,onChange:e=>E({previewGridCommit:e}),label:`Preview SQL before committing grid edits`,hint:`Show the generated UPDATE statements and ask for confirmation.`}),(0,S.jsxs)(`div`,{className:`grid grid-cols-[1fr_140px] items-center gap-3 rounded-md border p-3`,children:[(0,S.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,S.jsx)(n,{htmlFor:`s-limit`,className:`text-sm font-medium`,children:`Result row limit`}),(0,S.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`LIMIT appended to SELECTs that have none. 0 disables.`})]}),(0,S.jsx)(r,{id:`s-limit`,type:`number`,min:0,step:100,value:T.resultRowLimit,onChange:e=>E({resultRowLimit:Math.max(0,Number(e.target.value)||0)})})]}),(0,S.jsxs)(`div`,{className:`grid grid-cols-[1fr_200px] items-center gap-3 rounded-md border p-3`,children:[(0,S.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,S.jsx)(`span`,{className:`text-sm font-medium`,children:`F9 / Run button executes`}),(0,S.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Ctrl+Enter always runs the statement at the cursor; Ctrl+Shift+Enter the whole script.`})]}),(0,S.jsxs)(p,{value:T.executeScope,onValueChange:e=>E({executeScope:e}),children:[(0,S.jsx)(u,{children:(0,S.jsx)(l,{})}),(0,S.jsxs)(d,{children:[(0,S.jsx)(f,{value:`script`,children:`Whole script`}),(0,S.jsx)(f,{value:`statement`,children:`Statement at cursor`})]})]})]}),(0,S.jsxs)(`div`,{className:`grid grid-cols-[1fr_200px] items-center gap-3 rounded-md border p-3`,children:[(0,S.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,S.jsx)(`span`,{className:`text-sm font-medium`,children:D(`settings.language`)}),(0,S.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:D(`settings.languageHint`)})]}),(0,S.jsxs)(p,{value:T.locale,onValueChange:e=>T.setLocale(e),children:[(0,S.jsx)(u,{children:(0,S.jsx)(l,{})}),(0,S.jsxs)(d,{children:[(0,S.jsx)(f,{value:`auto`,children:D(`language.auto`,{name:D(`language.${s()}`)})}),c.map(e=>(0,S.jsx)(f,{value:e,children:D(`language.${e}`)},e))]})]})]}),(0,S.jsx)(C,{id:`s-analytics`,checked:T.analyticsEnabled,onChange:T.setAnalyticsEnabled,label:D(`settings.analytics`),hint:e()?D(`settings.analyticsHint`):D(`settings.analyticsUnavailableHint`)})]}),(0,S.jsxs)(_,{children:[(0,S.jsx)(o,{variant:`ghost`,onClick:()=>E(h),children:D(`settings.resetDefaults`)}),(0,S.jsx)(o,{onClick:w,children:D(`settings.done`)})]})]})})}export{w as SafetySettingsDialog};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as e,h as t,n,t as r,v as i}from"./ui-store-DfspmPOn.js";import{A as a,k as o,l as s}from"./main-
|
|
1
|
+
import{c as e,h as t,n,t as r,v as i}from"./ui-store-DfspmPOn.js";import{A as a,k as o,l as s}from"./main-BjGObGVl.js";import{l as c,m as l,t as u}from"./button--s6nUzD8.js";import{a as d,i as f,n as p,r as m,t as h}from"./select-BFa0--sE.js";import{t as g}from"./connection-store-DjSajhjh.js";import{i as _}from"./database-BUN6Jvbi.js";import{n as v}from"./engine-C2ZJalx5.js";import{t as ee}from"./pro-usage-dBNmC2gt.js";import{t as y}from"./table-definition-Bs5VSn0X.js";import{a as b,i as te,n as ne,o as re,t as ie}from"./dialog-CJoWJzRo.js";var x=i(t(),1),S=[`VIEW`,`PROCEDURE`,`FUNCTION`,`TRIGGER`,`EVENT`];function C(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 w(e,t){let n=[];for(let r of S){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&&C(o.sql,e.database)===C(c.sql,t.database)?`identical`:`changed`:`missingInTarget`:`missingInSource`,n.push({type:r,name:s,status:l,source:o,target:c})}}return n}var T=e=>e.toLowerCase().replace(/\s+/g,` `).trim(),E=e=>e===null?null:e.trim().replace(/^'(.*)'(?:::\w+)?$/s,`$1`),D=e=>e.addedColumns.length+e.removedColumns.length+e.changedColumns.length+e.addedIndexes.length+e.removedIndexes.length+e.changedIndexes.length>0;function O(e,t){let n=[];return T(e.type)!==T(t.type)&&n.push(`type`),e.nullable!==t.nullable&&n.push(`nullable`),E(e.defaultValue)!==E(t.defaultValue)&&n.push(`default`),e.extra.toLowerCase()!==t.extra.toLowerCase()&&n.push(`extra`),n}var k=(e,t)=>e.type===t.type&&e.columns.length===t.columns.length&&e.columns.every((e,n)=>e===t.columns[n]);function A(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=O(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&&!k(e,t)&&s.changedIndexes.push({name:e.name,source:e,target:t})}return s}function j(e,t){let n=new Set(t.tables),r=new Set(e.tables),i={missingInTarget:[],missingInSource:[],changed:[],identical:[],objects:w(e,t)};for(let r of e.tables){if(!n.has(r)){i.missingInTarget.push(r);continue}let a=A(r,e,t);D(a)?i.changed.push(a):i.identical.push(r)}return i.missingInSource=t.tables.filter(e=>!r.has(e)),i}var M=e=>e.split(`
|
|
2
2
|
`).map(e=>`-- ${e}`).join(`
|
|
3
3
|
`);function ae(e,t,n,r,i={}){let a=n.ddl,o=r.database,s=e=>i.includeDrops?e:M(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(N(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??M(`${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=F(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?I(t.source.sql):M(`the source engine did not return a CREATE statement for ${e}`))),c.push(``)}return c.join(`
|
|
4
4
|
`).replace(/\n{3,}/g,`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{h as e,n as t,v as n}from"./ui-store-DfspmPOn.js";import{j as r,l as i}from"./main-
|
|
1
|
+
import{h as e,n as t,v as n}from"./ui-store-DfspmPOn.js";import{j as r,l as i}from"./main-BjGObGVl.js";import{l as a,m as o,t as s}from"./button--s6nUzD8.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-BFa0--sE.js";import{t as p}from"./connection-store-DjSajhjh.js";import{n as m}from"./query-store-Bz1pmp4E.js";import{i as h,x as g}from"./database-BUN6Jvbi.js";import{n as _}from"./engine-C2ZJalx5.js";import{o as v,r as y}from"./schema-nodes-XgnUaB2x.js";import{a as b,i as x,n as S,o as C,t as w}from"./dialog-CJoWJzRo.js";import{t as T}from"./file-name-CnYBZPf9.js";var E=n(e(),1),D=a();function O(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function k(){let{t:e}=o(),{activeDialog:n,closeDialog:a}=t(),{activeConnectionId:k,activeConnections:A}=p(),{trees:j}=g(),M=m(),N=n===`export-html`,P=(0,E.useMemo)(()=>k?y(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?[]:v(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||(a(),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}=_(k),r=h(t.serverConnectionId),i=(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
2
|
`};try{let t=[];for(let a of z){let o=`<h2>${O(a)}</h2>\n`;if(V){let t=await n.listColumns(r,I,a);t.length>0&&(o+=i(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,a);t.length>0&&(o+=i(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,a);t&&(o+=i(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 a=`<!DOCTYPE html>
|
|
3
3
|
<html lang="en">
|
|
4
4
|
<head>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e,n as t,v as n}from"./ui-store-DfspmPOn.js";import{C as r,S as i,b as a,j as o,u as s,w as c,x as l,y as u}from"./main-
|
|
1
|
+
import{h as e,n as t,v as n}from"./ui-store-DfspmPOn.js";import{C as r,S as i,b as a,j as o,u as s,w as c,x as l,y as u}from"./main-BjGObGVl.js";import{l as d,m as f,t as p}from"./button--s6nUzD8.js";import{a as m}from"./i18n-BBdlx4Gw.js";import{t as h}from"./connection-store-DjSajhjh.js";import{s as g}from"./database-BUN6Jvbi.js";import{t as _}from"./engine-C2ZJalx5.js";import{a as v,i as y,n as b,o as x,t as S}from"./dialog-CJoWJzRo.js";var C=n(e(),1),w=d();function T(){let e=h.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function E(e){let t=T();if(!t)throw Error(m.t(`command.noActiveConnection`));let n=_().getQuery(e===`global`?`SHOW_GLOBAL_STATUS`:`SHOW_SESSION_STATUS`);return(await g(t,n)).records.map(e=>({Variable_name:e[0],Value:e[1]}))}function D(){let{t:e}=f(),{activeDialog:n,closeDialog:d,setFooterMessage:m}=t(),[h,g]=(0,C.useState)([]),[_,T]=(0,C.useState)(``),[D,O]=(0,C.useState)(`session`),k=n===`status`,A=(0,C.useCallback)(t=>E(t).then(g).catch(t=>m(e(`command.status.loadError`,{message:t instanceof Error?t.message:String(t)}))),[m,e]);(0,C.useEffect)(()=>{k&&A(D)},[k,D,A]);let j=(0,C.useMemo)(()=>{if(!_.trim())return h;let e=_.toLowerCase();return h.filter(t=>t.Variable_name.toLowerCase().includes(e)||t.Value.toLowerCase().includes(e))},[h,_]);function M(e){e||(T(``),d())}function N(e){O(e)}return(0,w.jsx)(S,{open:k,onOpenChange:M,children:(0,w.jsxs)(b,{className:`sm:max-w-[900px] max-h-[80vh] flex flex-col`,children:[(0,w.jsx)(v,{children:(0,w.jsx)(x,{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)(p,{variant:D===`session`?`default`:`outline`,size:`sm`,onClick:()=>N(`session`),children:e(`command.scope.session`)}),(0,w.jsx)(p,{variant:D===`global`?`default`:`outline`,size:`sm`,onClick:()=>N(`global`),children:e(`command.scope.global`)})]}),(0,w.jsx)(s,{placeholder:e(`command.status.filterPlaceholder`),value:_,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)(o,{className:`h-[400px]`,children:(0,w.jsxs)(u,{children:[(0,w.jsx)(r,{children:(0,w.jsxs)(c,{children:[(0,w.jsx)(i,{className:`w-[300px]`,children:e(`command.variableName`)}),(0,w.jsx)(i,{children:e(`command.value`)})]})}),(0,w.jsx)(a,{children:j.length===0?(0,w.jsx)(c,{children:(0,w.jsx)(l,{colSpan:2,className:`text-center text-muted-foreground`,children:e(`command.status.empty`)})}):j.map(e=>(0,w.jsxs)(c,{children:[(0,w.jsx)(l,{className:`font-mono text-xs`,children:e.Variable_name}),(0,w.jsx)(l,{className:`font-mono text-xs`,children:e.Value})]},e.Variable_name))})]})})}),(0,w.jsx)(y,{children:(0,w.jsx)(p,{variant:`outline`,onClick:()=>M(!1),children:e(`command.close`)})})]})})}export{D as StatusDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./ui-store-DfspmPOn.js";import{l as t,m as n,t as r}from"./button--s6nUzD8.js";import"./settings-store-
|
|
1
|
+
import{n as e}from"./ui-store-DfspmPOn.js";import{l as t,m as n,t as r}from"./button--s6nUzD8.js";import"./settings-store-CSRx4hwh.js";import{a as i,i as a,n as o,o as s,r as c,t as l}from"./dialog-CJoWJzRo.js";var u=t(),d=[{title:`1. Acceptance`,body:`By using Planche (the "Software"), whether at planche.dev or through the local agent published as the "planche" npm package, you agree to these Terms of Use. If you do not agree, do not use the Software.`},{title:`2. What the Software does`,body:`Planche is a database client. It sends the SQL statements you write, and the statements generated from your actions (editing rows in the grid, dropping or truncating objects from the schema tree, and similar), to the databases you connect to. Statements are executed as-is with the privileges of the credentials you provide. You are solely responsible for every statement executed through the Software and for its effects on your data.`},{title:`3. Safeguards`,body:`The Software includes safeguards such as confirmation prompts for destructive statements, read-only connections, environment colors, manual transaction mode, and previews of generated UPDATE statements. These are conveniences, not guarantees. They can be disabled, bypassed, or fail to recognize a statement as destructive. Keep independent backups of any data you care about before running statements against it.`},{title:`4. Local processing and privacy`,body:`Database credentials, queries, and results are handled by the local agent on your machine and by your browser. They are not transmitted to the authors of the Software. Profiles, history, and settings are stored in your browser's local storage; you may remove them at any time by clearing site data.`},{title:`5. No warranty`,body:`THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, AND NON-INFRINGEMENT. The authors do not warrant that the Software will be error-free, that it will correctly parse or classify every statement, or that it will be available without interruption.`},{title:`6. Limitation of liability`,body:`TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE AUTHORS SHALL NOT BE LIABLE FOR ANY LOSS OF DATA, LOSS OF PROFITS, BUSINESS INTERRUPTION, OR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES ARISING OUT OF OR RELATED TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Where liability cannot be excluded, it is limited to the amount you paid for the Software in the twelve months preceding the claim. Nothing in these terms limits liability that cannot be limited under applicable law, including for wilful misconduct or gross negligence.`},{title:`7. Your responsibilities`,body:`You are responsible for having the right to access each database you connect to, for the safekeeping of your credentials, and for complying with the laws and policies that apply to the data you work with.`},{title:`8. Changes`,body:`These terms may be updated. When they change materially, you will be asked to accept the new version before continuing to use the Software. Continued use after acceptance constitutes agreement to the updated terms.`}];function f(){let t=e(e=>e.activeDialog),f=e(e=>e.closeDialog),{t:p}=n();return(0,u.jsx)(l,{open:t===`terms`,onOpenChange:e=>{e||f()},children:(0,u.jsxs)(o,{className:`flex max-h-[85vh] flex-col sm:max-w-[640px]`,children:[(0,u.jsxs)(i,{children:[(0,u.jsx)(s,{children:p(`terms.title`)}),(0,u.jsx)(c,{children:p(`terms.version`,{version:1})})]}),(0,u.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-md border bg-muted/40 p-4 text-sm`,children:[(0,u.jsx)(`p`,{className:`mb-3 text-xs text-muted-foreground`,children:p(`terms.englishOnly`)}),d.map(e=>(0,u.jsxs)(`section`,{className:`mb-4 last:mb-0`,children:[(0,u.jsx)(`h3`,{className:`mb-1 font-semibold`,children:e.title}),(0,u.jsx)(`p`,{className:`leading-relaxed text-muted-foreground`,children:e.body})]},e.title))]}),(0,u.jsx)(a,{children:(0,u.jsx)(r,{onClick:f,children:p(`settings.done`)})})]})})}export{f as TermsDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e,n as t,v as n}from"./ui-store-DfspmPOn.js";import{l as r,u as i}from"./main-
|
|
1
|
+
import{h as e,n as t,v as n}from"./ui-store-DfspmPOn.js";import{l as r,u as i}from"./main-BjGObGVl.js";import{l as a,m as o,t as s}from"./button--s6nUzD8.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-BFa0--sE.js";import{t as p}from"./connection-store-DjSajhjh.js";import{a as m,i as h,n as g,o as _,t as v}from"./dialog-CJoWJzRo.js";import{n as y}from"./user-store-l9ZslFwK.js";var b=n(e(),1),x=a();function S(){let{t:e}=o(),{activeDialog:n,closeDialog:a,setFooterMessage:S}=t(),C=p(e=>e.activeConnectionId)??``,w=y(e=>e.addUser),[T,E]=(0,b.useState)(``),[D,O]=(0,b.useState)(`%`),[k,A]=(0,b.useState)(``),[j,M]=(0,b.useState)(``),[N,P]=(0,b.useState)(`caching_sha2_password`),F=n===`user-add`;function I(e){e||(L(),a())}function L(){E(``),O(`%`),A(``),M(``),P(`caching_sha2_password`)}function R(){if(!T.trim()){S(e(`user.add.usernameRequired`));return}if(k!==j){S(e(`user.add.passwordMismatch`));return}w(C,{user:T.trim(),host:D.trim()||`%`,privileges:[],maxQuestions:0,maxUpdates:0,maxConnections:0,maxUserConnections:0,plugin:N,authenticationString:``,passwordExpired:!1,accountLocked:!1}),S(e(`user.add.added`,{user:T,host:D})),L(),a()}return(0,x.jsx)(v,{open:F,onOpenChange:I,children:(0,x.jsxs)(g,{className:`sm:max-w-[450px]`,children:[(0,x.jsx)(m,{children:(0,x.jsx)(_,{children:e(`user.add.title`)})}),(0,x.jsxs)(`div`,{className:`space-y-4 py-2`,children:[(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(r,{htmlFor:`user-add-username`,children:e(`user.add.username`)}),(0,x.jsx)(i,{id:`user-add-username`,value:T,onChange:e=>E(e.target.value),placeholder:e(`user.add.usernamePlaceholder`)})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(r,{htmlFor:`user-add-host`,children:e(`user.add.host`)}),(0,x.jsx)(i,{id:`user-add-host`,value:D,onChange:e=>O(e.target.value),placeholder:`%`})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(r,{htmlFor:`user-add-password`,children:e(`user.add.password`)}),(0,x.jsx)(i,{id:`user-add-password`,type:`password`,value:k,onChange:e=>A(e.target.value),placeholder:e(`user.add.passwordPlaceholder`)})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(r,{htmlFor:`user-add-confirm-password`,children:e(`user.add.confirmPassword`)}),(0,x.jsx)(i,{id:`user-add-confirm-password`,type:`password`,value:j,onChange:e=>M(e.target.value),placeholder:e(`user.add.confirmPasswordPlaceholder`)})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(r,{children:e(`user.add.plugin`)}),(0,x.jsxs)(f,{value:N,onValueChange:P,children:[(0,x.jsx)(l,{className:`w-full`,children:(0,x.jsx)(c,{})}),(0,x.jsxs)(u,{children:[(0,x.jsx)(d,{value:`mysql_native_password`,children:`mysql_native_password`}),(0,x.jsx)(d,{value:`caching_sha2_password`,children:`caching_sha2_password`})]})]})]})]}),(0,x.jsxs)(h,{children:[(0,x.jsx)(s,{variant:`outline`,onClick:()=>I(!1),children:e(`user.add.cancel`)}),(0,x.jsx)(s,{onClick:R,children:e(`user.add.add`)})]})]})})}export{S as UserAddDialog};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{h as e,n as t,v as n}from"./ui-store-DfspmPOn.js";import{Q as r,X as i,j as a,l as o,mt as s,ut as c}from"./main-BjGObGVl.js";import{a as l,l as u,m as d,o as f,t as p}from"./button--s6nUzD8.js";import{t as m}from"./connection-store-DjSajhjh.js";import{i as h}from"./database-BUN6Jvbi.js";import{i as g}from"./dbms-B9Zk7nEm.js";import{n as _}from"./engine-C2ZJalx5.js";import{c as v}from"./query-execution-DqpMGs8z.js";import{a as y,i as b,n as x,o as S,t as C}from"./dialog-CJoWJzRo.js";import{n as w,t as T}from"./user-store-l9ZslFwK.js";var E=l(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),D=l(`user-plus`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]),O=n(e(),1),k=u();function A({databases:e,tables:t,onSelectScope:n}){let{t:i}=d(),[o,l]=(0,O.useState)(new Set),[u,p]=(0,O.useState)(`global`),m=(0,O.useCallback)(e=>{l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=[{id:`global`,text:i(`user.grantTree.globalPrivileges`),type:`global`,children:e.map(e=>({id:`db:${e}`,text:e,type:`database`,database:e,children:(t[e]??[]).map(t=>({id:`tbl:${e}.${t}`,text:t,type:`table`,database:e,table:t}))}))}];function g(e){p(e.id),n({level:e.type,database:e.database,table:e.table})}function _(e,t){let n=e.children&&e.children.length>0,i=o.has(e.id),a=u===e.id,l=E;return e.type===`database`&&(l=c),e.type===`table`&&(l=r),(0,k.jsxs)(`div`,{children:[(0,k.jsxs)(`div`,{className:f(`flex items-center gap-1 px-2 py-0.5 cursor-pointer text-sm hover:bg-accent rounded-sm`,a&&`bg-accent text-accent-foreground`),style:{paddingLeft:`${t*16+4}px`},onClick:()=>{g(e),n&&m(e.id)},children:[n?(0,k.jsx)(s,{className:f(`h-3 w-3 transition-transform shrink-0`,i&&`rotate-90`)}):(0,k.jsx)(`span`,{className:`w-3 shrink-0`}),(0,k.jsx)(l,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,k.jsx)(`span`,{className:`truncate`,children:e.text})]}),i&&e.children?.map(e=>_(e,t+1))]},e.id)}return(0,k.jsx)(a,{className:`h-full`,children:(0,k.jsx)(`div`,{className:`py-1`,children:h.map(e=>_(e,0))})})}var j={Data:[`SELECT`,`INSERT`,`UPDATE`,`DELETE`],Structure:[`CREATE`,`ALTER`,`DROP`,`INDEX`,`REFERENCES`],Administration:[`GRANT OPTION`,`SUPER`,`PROCESS`,`RELOAD`,`SHUTDOWN`,`SHOW DATABASES`,`LOCK TABLES`,`EXECUTE`,`REPLICATION SLAVE`,`REPLICATION CLIENT`,`CREATE VIEW`,`SHOW VIEW`,`CREATE ROUTINE`,`ALTER ROUTINE`,`CREATE USER`,`EVENT`,`TRIGGER`,`CREATE TABLESPACE`]},M={Data:[`SELECT`,`INSERT`,`UPDATE`,`DELETE`],Structure:[`CREATE`,`ALTER`,`DROP`,`INDEX`,`REFERENCES`],Administration:[`GRANT OPTION`,`LOCK TABLES`,`EXECUTE`,`CREATE VIEW`,`SHOW VIEW`,`CREATE ROUTINE`,`ALTER ROUTINE`,`EVENT`,`TRIGGER`]},N={Data:[`SELECT`,`INSERT`,`UPDATE`,`DELETE`],Structure:[`CREATE`,`ALTER`,`DROP`,`INDEX`,`REFERENCES`],Administration:[`GRANT OPTION`,`TRIGGER`]},P={global:`user.privileges.globalTitle`,database:`user.privileges.databaseTitle`,table:`user.privileges.tableTitle`},F={Data:`user.privileges.categoryData`,Structure:`user.privileges.categoryStructure`,Administration:`user.privileges.categoryAdministration`};function I({scope:e,privileges:t,onChange:n}){let{t:r}=d(),i=(0,O.useMemo)(()=>e===`global`?j:e===`database`?M:N,[e]),s=(0,O.useMemo)(()=>Object.values(i).flat(),[i]);function c(e){n({...t,[e]:!t[e]})}function l(){let e={...t};for(let t of s)e[t]=!0;n(e)}function u(){let e={...t};for(let t of s)e[t]=!1;n(e)}return(0,k.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b`,children:[(0,k.jsx)(`span`,{className:`text-sm font-medium`,children:r(P[e])}),(0,k.jsxs)(`div`,{className:`ml-auto flex gap-1`,children:[(0,k.jsx)(p,{variant:`outline`,size:`sm`,onClick:l,children:r(`user.privileges.checkAll`)}),(0,k.jsx)(p,{variant:`outline`,size:`sm`,onClick:u,children:r(`user.privileges.uncheckAll`)})]})]}),(0,k.jsx)(a,{className:`flex-1`,children:(0,k.jsx)(`div`,{className:`p-3 space-y-4`,children:Object.entries(i).map(([e,n])=>(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h4`,{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2`,children:F[e]?r(F[e]):e}),(0,k.jsx)(`div`,{className:`grid grid-cols-2 gap-1`,children:n.map(e=>(0,k.jsxs)(o,{className:`flex items-center gap-2 text-sm font-normal cursor-pointer py-1`,children:[(0,k.jsx)(`input`,{type:`checkbox`,checked:t[e]??!1,onChange:()=>c(e),className:`rounded border-input`}),e]},e))})]},e))})})]})}var L={SELECT:`Select_priv`,INSERT:`Insert_priv`,UPDATE:`Update_priv`,DELETE:`Delete_priv`,CREATE:`Create_priv`,ALTER:`Alter_priv`,DROP:`Drop_priv`,INDEX:`Index_priv`,REFERENCES:`References_priv`,"GRANT OPTION":`Grant_priv`,SUPER:`Super_priv`,PROCESS:`Process_priv`,RELOAD:`Reload_priv`,SHUTDOWN:`Shutdown_priv`,"SHOW DATABASES":`Show_db_priv`,"LOCK TABLES":`Lock_tables_priv`,EXECUTE:`Execute_priv`,"REPLICATION SLAVE":`Repl_slave_priv`,"REPLICATION CLIENT":`Repl_client_priv`,"CREATE VIEW":`Create_view_priv`,"SHOW VIEW":`Show_view_priv`,"CREATE ROUTINE":`Create_routine_priv`,"ALTER ROUTINE":`Alter_routine_priv`,"CREATE USER":`Create_user_priv`,EVENT:`Event_priv`,TRIGGER:`Trigger_priv`,"CREATE TABLESPACE":`Create_tablespace_priv`,"CREATE TEMPORARY TABLES":`Create_tmp_table_priv`,FILE:`File_priv`};function R(e){let t={};for(let n of e.split(`,`)){let e=n.trim().toUpperCase();e&&(t[e]=!0)}return t}function z(e){let t={};for(let[n,r]of Object.entries(L)){let i=e[r];i!==void 0&&(t[n]=String(i).toUpperCase()===`Y`)}return t}function B(e,t){let n=t=>e.quoteIdentifier(t);return t.level===`global`?`*.*`:t.level===`database`?`${n(t.database??``)}.*`:`${n(t.database??``)}.${n(t.table??``)}`}async function V(e,t,n,r,i){if(i.level===`global`){let i=await e(t.getQuery(`USER_PRIV`,n,r)),a=g(i)[0];return a?z(a):{}}if(i.level===`database`){let a=await e(t.getQuery(`USER_DATABASE_PRIV`,n,r)),o=g(a).find(e=>String(e.Db)===i.database);return o?z(o):{}}let a=await e(t.getQuery(`USER_TABLE_PRIV`,n,r)),o=g(a).find(e=>String(e.Db)===i.database&&String(e.Table_name)===i.table);return o?R(String(o.Table_priv??``)):{}}function H(e,t,n,r,i,a){let o=B(e,r),s=[],c=[],l=null;for(let e of new Set([...Object.keys(i),...Object.keys(a)])){let t=i[e]===!0,n=a[e]===!0;if(t!==n){if(e===`GRANT OPTION`){l=n;continue}(n?s:c).push(e)}}let u=[];if(s.length>0||l===!0){let r=s.length>0?s.join(`, `):`USAGE`;u.push(e.getQuery(`GRANT`,r,t,n,o,l===!0?`WITH GRANT OPTION`:``))}return c.length>0&&u.push(e.getQuery(`REVOKE`,c.join(`, `),t,n,o)),l===!1&&u.push(e.getQuery(`REVOKE`,`GRANT OPTION`,t,n,o)),u}function U(e){return m.getState().activeConnections.find(t=>t.id===e)?.serverConnectionId??null}function W(){let{t:e}=d(),{activeDialog:n,closeDialog:r,openDialog:o,setFooterMessage:s}=t(),c=m(e=>e.activeConnectionId)??``,l=w(e=>e.users[c]??T),u=w(e=>e.selectedUser[c]??null),g=w(e=>e.setSelectedUser),E=w(e=>e.removeUser),j=e=>g(c,e),M=(e,t)=>E(c,e,t),[N,P]=(0,O.useState)({level:`global`}),[F,L]=(0,O.useState)({}),[R,z]=(0,O.useState)([]),[B,W]=(0,O.useState)({}),[G,K]=(0,O.useState)({}),[q,J]=(0,O.useState)(!1),Y=n===`user-manager`;(0,O.useEffect)(()=>{if(!Y||!c)return;let e=U(c);if(!e)return;let t=!1;return _(c).introspect.listDatabases(h(e)).then(e=>{t||z(e)}).catch(()=>{t||z([])}),()=>{t=!0}},[Y,c]),(0,O.useEffect)(()=>{let e=N.database;if(!Y||!c||!e||B[e])return;let t=U(c);if(!t)return;let n=!1;return _(c).introspect.listTables(h(t),e).then(t=>{n||W(n=>({...n,[e]:t.map(e=>e.name)}))}).catch(()=>void 0),()=>{n=!0}},[Y,c,N.database,B]),(0,O.useEffect)(()=>{if(!Y||!c||!u){K({}),L({});return}let e=U(c);if(!e)return;let t=!1;return V(h(e),_(c),u.user,u.host,N).then(e=>{t||(K(e),L(e))}).catch(()=>{t||(K({}),L({}))}),()=>{t=!0}},[Y,c,u,N]);function X(e){e||(r(),j(null),P({level:`global`}),L({}))}let Z=(0,O.useCallback)(e=>{P(e),L({})},[]);function Q(){o(`user-add`)}async function $(){if(!u||!c)return;let{user:t,host:n}=u;J(!0);try{await v(c,_(c).getQuery(`DELETE_USER`,t,n)),M(n,t),j(null),s(e(`user.manager.removed`,{user:t,host:n}))}catch(e){s(e instanceof Error?e.message:String(e))}finally{J(!1)}}async function ee(){if(!u||!c){s(e(`user.manager.selectUserFirst`));return}let t=H(_(c),u.user,u.host,N,G,F);if(t.length===0){s(e(`user.manager.noChanges`));return}J(!0);try{for(let e of t)await v(c,e);K(F),s(e(`user.manager.applied`))}catch(e){s(e instanceof Error?e.message:String(e))}finally{J(!1)}}return(0,k.jsx)(C,{open:Y,onOpenChange:X,children:(0,k.jsxs)(x,{className:`sm:max-w-[80vw] max-h-[70vh] flex flex-col`,children:[(0,k.jsx)(y,{children:(0,k.jsx)(S,{children:e(`user.manager.title`)})}),(0,k.jsxs)(`div`,{className:`flex flex-1 gap-0 overflow-hidden min-h-0 border rounded-md`,children:[(0,k.jsxs)(`div`,{className:`w-[200px] shrink-0 border-r flex flex-col`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-1 p-2 border-b`,children:[(0,k.jsx)(p,{variant:`ghost`,size:`sm`,onClick:Q,title:e(`user.manager.addUser`),children:(0,k.jsx)(D,{className:`h-4 w-4`})}),(0,k.jsx)(p,{variant:`ghost`,size:`sm`,onClick:()=>void $(),disabled:!u||q,title:e(`user.manager.removeUser`),children:(0,k.jsx)(i,{className:`h-4 w-4`})})]}),(0,k.jsx)(a,{className:`flex-1`,children:(0,k.jsx)(`div`,{className:`py-1`,children:l.length===0?(0,k.jsx)(`div`,{className:`px-3 py-4 text-sm text-muted-foreground text-center`,children:e(`user.manager.noUsers`)}):l.map(e=>{let t=u?.user===e.user&&u?.host===e.host;return(0,k.jsx)(`div`,{className:f(`flex items-center gap-2 px-3 py-1.5 cursor-pointer text-sm hover:bg-accent`,t&&`bg-accent text-accent-foreground`),onClick:()=>j(e),children:(0,k.jsxs)(`span`,{className:`truncate`,children:[e.user,`@`,e.host]})},`${e.user}@${e.host}`)})})})]}),(0,k.jsxs)(`div`,{className:`w-[250px] shrink-0 border-r`,children:[(0,k.jsx)(`div`,{className:`p-2 border-b text-sm font-medium`,children:e(`user.manager.grantScope`)}),(0,k.jsx)(A,{connectionId:``,databases:R,tables:B,onSelectScope:Z})]}),(0,k.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,k.jsx)(I,{scope:N.level,privileges:F,onChange:L})})]}),(0,k.jsxs)(b,{children:[(0,k.jsx)(p,{onClick:()=>void ee(),disabled:q,children:e(`user.manager.apply`)}),(0,k.jsx)(p,{variant:`outline`,onClick:()=>X(!1),children:e(`user.manager.close`)})]})]})})}export{W as UserManagerDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e,n as t,v as n}from"./ui-store-DfspmPOn.js";import{C as r,S as i,b as a,j as o,u as s,w as c,x as l,y as u}from"./main-
|
|
1
|
+
import{h as e,n as t,v as n}from"./ui-store-DfspmPOn.js";import{C as r,S as i,b as a,j as o,u as s,w as c,x as l,y as u}from"./main-BjGObGVl.js";import{l as d,m as f,t as p}from"./button--s6nUzD8.js";import{a as m}from"./i18n-BBdlx4Gw.js";import{t as h}from"./connection-store-DjSajhjh.js";import{s as g}from"./database-BUN6Jvbi.js";import{t as _}from"./engine-C2ZJalx5.js";import{a as v,i as y,n as b,o as x,t as S}from"./dialog-CJoWJzRo.js";var C=n(e(),1),w=d();function T(){let e=h.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function E(e){let t=T();if(!t)throw Error(m.t(`command.noActiveConnection`));let n=_().getQuery(e===`global`?`SHOW_GLOBAL_VARIABLES`:`SHOW_SESSION_VARIABLES`);return(await g(t,n)).records.map(e=>({Variable_name:e[0],Value:e[1]}))}function D(){let{t:e}=f(),{activeDialog:n,closeDialog:d,setFooterMessage:m}=t(),[h,g]=(0,C.useState)([]),[_,T]=(0,C.useState)(``),[D,O]=(0,C.useState)(`session`),k=n===`variables`,A=(0,C.useCallback)(t=>E(t).then(g).catch(t=>m(e(`command.variables.loadError`,{message:t instanceof Error?t.message:String(t)}))),[m,e]);(0,C.useEffect)(()=>{k&&A(D)},[k,D,A]);let j=(0,C.useMemo)(()=>{if(!_.trim())return h;let e=_.toLowerCase();return h.filter(t=>t.Variable_name.toLowerCase().includes(e)||t.Value.toLowerCase().includes(e))},[h,_]);function M(e){e||(T(``),d())}function N(e){O(e)}return(0,w.jsx)(S,{open:k,onOpenChange:M,children:(0,w.jsxs)(b,{className:`sm:max-w-[900px] max-h-[80vh] flex flex-col`,children:[(0,w.jsx)(v,{children:(0,w.jsx)(x,{children:e(`command.variables.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)(p,{variant:D===`session`?`default`:`outline`,size:`sm`,onClick:()=>N(`session`),children:e(`command.scope.session`)}),(0,w.jsx)(p,{variant:D===`global`?`default`:`outline`,size:`sm`,onClick:()=>N(`global`),children:e(`command.scope.global`)})]}),(0,w.jsx)(s,{placeholder:e(`command.variables.filterPlaceholder`),value:_,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)(o,{className:`h-[400px]`,children:(0,w.jsxs)(u,{children:[(0,w.jsx)(r,{children:(0,w.jsxs)(c,{children:[(0,w.jsx)(i,{className:`w-[300px]`,children:e(`command.variableName`)}),(0,w.jsx)(i,{children:e(`command.value`)})]})}),(0,w.jsx)(a,{children:j.length===0?(0,w.jsx)(c,{children:(0,w.jsx)(l,{colSpan:2,className:`text-center text-muted-foreground`,children:e(`command.variables.empty`)})}):j.map(e=>(0,w.jsxs)(c,{children:[(0,w.jsx)(l,{className:`font-mono text-xs`,children:e.Variable_name}),(0,w.jsx)(l,{className:`font-mono text-xs`,children:e.Value})]},e.Variable_name))})]})})}),(0,w.jsx)(y,{children:(0,w.jsx)(p,{variant:`outline`,onClick:()=>M(!1),children:e(`command.close`)})})]})})}export{D as VariablesDialog};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var t=e=>n=>{try{let r=e(n);return r instanceof Promise?r:{then(e){return t(e)(r)},catch(e){return this}}}catch(e){return{then(e){return this},catch(n){return t(n)(e)}}}},n=(n,r)=>(i,a,o)=>{let s={storage:e(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...r},c=!1,l=0,u=new Set,d=new Set,f=s.storage;if(!f)return n((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),i(...e)},a,o);let p=()=>{let e=s.partialize({...a()});return f.setItem(s.name,{state:e,version:s.version})},m=o.setState;o.setState=(e,t)=>(m(e,t),p());let h=n((...e)=>(i(...e),p()),a,o);o.getInitialState=()=>h;let g,_=()=>{if(!f)return;let e=++l;c=!1,u.forEach(e=>e(a()??h));let n=s.onRehydrateStorage?.call(s,a()??h)||void 0;return t(f.getItem.bind(f))(s.name).then(e=>{if(e){if(typeof e.version==`number`&&e.version!==s.version){if(s.migrate){let t=s.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state]}return[!1,void 0]}).then(t=>{if(e!==l)return;let[n,r]=t;if(g=s.merge(r,a()??h),i(g,!0),n)return p()}).then(()=>{e===l&&(n?.(a(),void 0),g=a(),c=!0,d.forEach(e=>e(g)))}).catch(t=>{e===l&&n?.(void 0,t)})};return o.persist={setOptions:e=>{s={...s,...e},e.storage&&(f=e.storage)},clearStorage:()=>{++l,f?.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>_(),hasHydrated:()=>c,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},s.skipHydration||_(),g||h},r=[`planche-connections`,`planche-query`,`planche-schema`,`planche-settings`,`planche-theme`,`planche-erd`,`planche-layout`],i=5e3,a=class{worker=null;nextId=1;pending=new Map;ready;constructor(){this.ready=this.start()}start(){return typeof Worker>`u`||typeof navigator>`u`||!(`storage`in navigator)?Promise.resolve(!1):new Promise(e=>{let t;try{t=new Worker(new URL(`/assets/storage-worker-DEIYmjYK.js`,``+import.meta.url),{type:`module`})}catch(t){console.warn(`[app-storage] worker unavailable, using localStorage:`,t),e(!1);return}let n,r=r=>{clearTimeout(n),console.warn(`[app-storage] OPFS storage unavailable, using localStorage: ${r}`),t.terminate(),e(!1)};n=setTimeout(()=>r(`no reply in ${i} ms`),i),t.onerror=e=>r(e.message),t.onmessage=i=>{let a=i.data;if(`type`in a){a.type===`ready`?(clearTimeout(n),this.worker=t,t.onmessage=e=>this.handle(e.data),t.onerror=e=>console.error(`[app-storage]`,e.message),e(!0)):r(a.error);return}this.handle(a)}})}handle(e){if(`type`in e)return;let t=this.pending.get(e.id);t&&(this.pending.delete(e.id),e.ok?t.resolve({value:e.value,bytes:e.bytes}):t.reject(Error(e.error)))}send(e,t=[]){let n=this.worker;return n?new Promise((r,i)=>{this.pending.set(e.id,{resolve:r,reject:i}),n.postMessage(e,t)}):Promise.reject(Error(`storage worker not ready`))}get(e){return this.send({id:this.nextId++,op:`get`,name:e}).then(e=>e.value??null)}set(e,t){return this.send({id:this.nextId++,op:`set`,name:e,value:t}).then(()=>void 0)}remove(e){return this.send({id:this.nextId++,op:`remove`,name:e}).then(()=>void 0)}blobGet(e){return this.send({id:this.nextId++,op:`blob-get`,name:e}).then(e=>e.bytes??null)}blobSet(e,t){return this.send({id:this.nextId++,op:`blob-set`,name:e,bytes:t},[t]).then(()=>void 0)}blobRemove(e){return this.send({id:this.nextId++,op:`blob-remove`,name:e}).then(()=>void 0)}},o={getItem:e=>{try{return localStorage.getItem(e)}catch{return null}},setItem:(e,t)=>{try{localStorage.setItem(e,t)}catch(n){console.warn(`[app-storage] could not persist "${e}" (${Math.round(t.length/1024)} KB): ${n instanceof Error?n.message:String(n)}`)}},removeItem:e=>{try{localStorage.removeItem(e)}catch{}}},s=new a,c=s.ready.then(async e=>{if(!e)return!1;for(let e of r){let t=await o.getItem(e);if(t!=null)try{await s.get(e)===null&&await s.set(e,t),o.removeItem(e)}catch(t){console.warn(`[app-storage] could not migrate "${e}":`,t)}}return!0}),l={getItem:async e=>await c?s.get(e):o.getItem(e),setItem:async(e,t)=>{if(await c)try{await s.set(e,t);return}catch(t){console.error(`[app-storage] write failed for "${e}":`,t)}o.setItem(e,t)},removeItem:async e=>await c?s.remove(e):o.removeItem(e)};c.then(e=>e?`sqlite-opfs`:`localStorage`);var u={available:()=>c,get:async e=>await c?s.blobGet(e):null,set:async(e,t)=>await c?(await s.blobSet(e,t),!0):!1,remove:async e=>{await c&&await s.blobRemove(e)}},d=()=>e(()=>l);export{n as i,u as n,l as r,d as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,h as t,i as n,l as r,r as i,s as a,v as o}from"./ui-store-DfspmPOn.js";import{i as s,t as c}from"./app-storage-
|
|
1
|
+
import{c as e,h as t,i as n,l as r,r as i,s as a,v as o}from"./ui-store-DfspmPOn.js";import{i as s,t as c}from"./app-storage-C_1RLCyI.js";var l=()=>new Date().toISOString().slice(0,7);function u(e,t){let n=e?.month===t;return{total:(e?.total??0)+1,month:t,monthTotal:n?e.monthTotal+1:1}}var d=i()(s((e,t)=>({features:{},countFeatureUse:n=>{let r=u(t().features[n],l());return e(e=>({features:{...e.features,[n]:r}})),r}}),{name:`planche-usage`,storage:c()}));function f(t){let i=d.getState().countFeatureUse(t);e(`pro_feature_use`,{feature:t,uses:r(i.total),uses_this_month:r(i.monthTotal),first_use:i.total===1}),i.total===1&&a({pro_features:n(Object.keys(d.getState().features).length)})}var p=`planche-session-credentials`;function m(){try{let e=sessionStorage.getItem(p);return e?JSON.parse(e):{}}catch{return{}}}function h(e){try{sessionStorage.setItem(p,JSON.stringify(e))}catch{}}function g(e){return{pass:e.pass||void 0,sshPassword:e.ssh?.password||void 0,sshPassphrase:e.ssh?.passphrase||void 0,sshPrivateKey:e.ssh?.privateKey||void 0,authToken:e.authToken||void 0}}function _(e){let t={...e,pass:``,authToken:``};return e.ssh&&(t.ssh={...e.ssh,password:void 0,passphrase:void 0,privateKey:void 0}),t}function v(e,t){let n={...e,pass:e.pass||t.pass||``,authToken:e.authToken||t.authToken||``};return e.ssh&&(n.ssh={...e.ssh,password:e.ssh.password||t.sshPassword,passphrase:e.ssh.passphrase||t.sshPassphrase,privateKey:e.ssh.privateKey||t.sshPrivateKey}),n}function y(e,t){let n=m(),r=Object.fromEntries(Object.entries(t).filter(([,e])=>e));Object.keys(r).length?n[e]=r:delete n[e],h(n)}function b(e){let t=m()[e];if(t!==void 0)return typeof t==`string`?{pass:t}:t}function x(e){let t=m();delete t[e],h(t)}var S=o(t(),1);function C(e,t){let n=(0,S.useRef)(null),[r,i]=(0,S.useState)(null),a=(0,S.useCallback)(()=>{n.current=null,i(null)},[]),o=e=>{let t=e.currentTarget.getBoundingClientRect();return{before:e.clientX<t.left+t.width/2}};return{dragProps:(0,S.useCallback)(r=>({draggable:!0,onDragStart:e=>{n.current=r,e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,r)},onDragOver:t=>{if(!n.current||n.current===r)return;t.preventDefault(),t.dataTransfer.dropEffect=`move`;let{before:a}=o(t),s=e.indexOf(r),c=a?r:e[s+1]??`end`;i(e=>e===c?e:c)},onDrop:i=>{let s=n.current;if(!s||s===r)return a();i.preventDefault();let{before:c}=o(i),l=e.filter(e=>e!==s).indexOf(r);c||(l+=1),t(s,l),a()},onDragEnd:a}),[e,t,a]),dropIndicator:r,isDragging:()=>n.current!==null}}function w(e,t,n){let r=e.find(e=>e.id===t);if(!r)return e;let i=e.filter(e=>e.id!==t),a=Math.max(0,Math.min(n,i.length));return[...i.slice(0,a),r,...i.slice(a)]}function T(e){return e.savePassword===!1?_(e):e}function E(e){return _(e)}var D=i()(s((t,n)=>({savedConnections:[],activeConnections:[],activeConnectionId:null,transactionOpen:{},pendingReopen:{},fileDetached:{},addSavedConnection:e=>{e.savePassword===!1&&y(e.id,g(e)),t(t=>({savedConnections:[...t.savedConnections,e]}))},updateSavedConnection:(e,r)=>{let i={...n().savedConnections.find(t=>t.id===e),...r};i.savePassword===!1&&y(e,g(i)),t(t=>({savedConnections:t.savedConnections.map(t=>t.id===e?{...t,...r}:t)}))},deleteSavedConnection:e=>{x(e),t(t=>({savedConnections:t.savedConnections.filter(t=>t.id!==e)}))},openConnection:n=>t(t=>{let r=t.activeConnections.some(e=>e.id===n.id),i={...t.pendingReopen};return delete i[n.id],r?{activeConnections:t.activeConnections.map(e=>e.id===n.id?{...e,...n}:e),activeConnectionId:n.id,pendingReopen:i}:(e(`connection_open`,{dbms:n.dbms,transport:n.transport??`tunnel`,sample:!!n.sample,ssh:!!n.ssh?.enabled}),n.ssh?.enabled&&f(`ssh_tunnel`),{activeConnections:[...t.activeConnections,n],activeConnectionId:n.id,pendingReopen:i})}),closeConnection:e=>t(t=>{let n=t.activeConnections.filter(t=>t.id!==e),r=t.activeConnectionId===e?n.length>0?n[n.length-1].id:null:t.activeConnectionId,i={...t.transactionOpen},a={...t.pendingReopen},o={...t.fileDetached};return delete i[e],delete a[e],delete o[e],{activeConnections:n,activeConnectionId:r,transactionOpen:i,pendingReopen:a,fileDetached:o}}),reorderActiveConnection:(e,n)=>t(t=>({activeConnections:w(t.activeConnections,e,n)})),setActiveConnection:e=>t({activeConnectionId:e}),updateServerConnectionId:(e,n)=>t(t=>({activeConnections:t.activeConnections.map(t=>t.id===e?{...t,serverConnectionId:n}:t)})),updateProfile:(e,n)=>t(t=>({savedConnections:t.savedConnections.map(t=>t.id===e?{...t,...n}:t),activeConnections:t.activeConnections.map(t=>t.id===e?{...t,...n}:t)})),setTransactionOpen:(e,n)=>t(t=>({transactionOpen:{...t.transactionOpen,[e]:n}})),setPendingReopen:(e,n)=>t(t=>({pendingReopen:{...t.pendingReopen,[e]:n}})),setFileDetached:(e,n)=>t(t=>({fileDetached:{...t.fileDetached,[e]:n}})),resolveCredentials:e=>{let t=n().savedConnections.find(t=>t.id===e.id);return v(t?v(e,g(t)):e,b(e.id)??{})}}),{name:`planche-connections`,storage:c(),version:1,migrate:e=>{let t=e;return Array.isArray(t.savedConnections)&&(t.savedConnections=t.savedConnections.map(e=>({...e,savePassword:e.savePassword??!0}))),t},partialize:e=>({savedConnections:e.savedConnections.map(T),activeConnections:e.activeConnections.map(E),activeConnectionId:e.activeConnectionId})}));export{d as a,f as i,w as n,C as r,D as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,n as t,r as n}from"./ui-store-DfspmPOn.js";import{a as r,i}from"./i18n-BBdlx4Gw.js";import{i as a,n as o,r as s,t as c}from"./app-storage-C_1RLCyI.js";import{t as l}from"./connection-store-DjSajhjh.js";import{n as u}from"./query-store-Bz1pmp4E.js";import{t as d}from"./hmr-singleton-Bit0Kfog.js";var f=new Set([`neon`,`supabase`]);function p(e){return e===`postgres`||f.has(e)}var ee=`_rowid_`,te=`http://127.0.0.1:8888`,m=d(`tunnelAgent`,()=>({url:null,token:null}));function ne(e){m.url=e.url?.replace(/\/+$/,``)||null,m.token=e.token?.trim()||null}var re=new Set([`127.0.0.1`,`localhost`,`[::1]`,`::1`]);function ie(e){try{let t=new URL(e);return(t.protocol===`http:`||t.protocol===`https:`)&&re.has(t.hostname)}catch{return!1}}function ae(e){try{return typeof window<`u`&&new URL(e).origin===window.location.origin}catch{return!1}}function oe(e){return ie(e)||ae(e)}function se(){return m.url!==null&&m.url!==`/api`&&!oe(m.url)}function h(){return m.url??te}function ce(){let e=h();return e===`/api`?r.t(`services.agent.devProxyUrl`,{url:`http://localhost:8888`}):e}async function le(){let e=ce(),t;try{let e={};m.token&&(e.Authorization=`Bearer ${m.token}`),t=await(await fetch(`${h()}/health`,{cache:`no-store`,headers:e})).json()}catch(t){return{state:`offline`,url:e,message:t instanceof Error?t.message:String(t)}}return t.name!==`planche`||typeof t.version!=`string`||!/^[\w.+-]{1,32}$/.test(t.version)?{state:`offline`,url:e,message:r.t(`services.agent.notPlanche`)}:t.protocolVersion===2?t.authorized===!1||m.token===null&&t.authorized===void 0?{state:`unauthorized`,url:e,version:t.version}:{state:`online`,url:e,version:t.version,activeConnections:t.activeConnections??0,...t.gateway?{gateway:t.gateway}:{}}:{state:`outdated`,url:e,version:t.version,protocolVersion:t.protocolVersion??0,install:t.install===`standalone`?`standalone`:`npx`}}async function ue(){let e=await fetch(`${h()}/profiles`,{cache:`no-store`,headers:y()}),t=await e.json().catch(()=>null);if(!e.ok||!t||t.success!==!0)throw new b(t?.message??r.t(`services.agent.httpError`,{status:e.status,statusText:e.statusText}),e.status);return t}function g(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 _(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`?{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:g(e)}:f.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:g(e)}:e.dbms===`oracle`?{driver:`oracle`,host:e.host,port:e.port,user:e.user,password:e.pass,serviceName:e.database||`FREEPDB1`,ssh:g(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:g(e)}}var v=d(`tunnelAuthTokens`,()=>new Map);function de(e,t){let n=t?.trim();n?v.set(e,n):v.delete(e)}function fe(e){return e?.trim()||m.token||void 0}function y(e){let t={"Content-Type":`application/json`},n=fe(e);return n&&(t.Authorization=`Bearer ${n}`),t}var b=class extends Error{status;body;constructor(e,t,n=null){super(e),this.status=t,this.body=n}};function pe(e){if(!(e instanceof b)||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 me(e,t){let n=await fetch(`${e.replace(/\/+$/,``)}/pair`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:t})}),i=await n.json().catch(()=>null);if(!n.ok||!i?.success||typeof i.token!=`string`)throw Error(i?.message??r.t(`services.agent.httpError`,{status:n.status,statusText:n.statusText}));return i.token}async function x(e,t,n){let i;try{i=await fetch(`${h()}${e}`,{method:`POST`,headers:y(n),body:JSON.stringify(t)})}catch(e){throw Error(r.t(`services.agent.unreachable`,{url:ce(),message:e instanceof Error?e.message:String(e)}))}let a=null;try{a=await i.json()}catch{a=null}if(!i.ok)throw new b(a?.message??r.t(`services.agent.httpError`,{status:i.status,statusText:i.statusText}),i.status,a);if(!a)throw Error(r.t(`services.agent.emptyResponse`));return a}async function he(e,t){let n=await x(`/connect`,e,t);return n.success&&n.connectionId&&(de(n.connectionId,fe(t)),ve()),n}async function ge(e){try{return(await x(`/cancel`,{connectionId:e},v.get(e))).cancelled}catch{return!1}}async function _e(e,t,n){let r=performance.now(),i=await x(`/query`,{connectionId:e,sql:t,database:n},v.get(e));return i.execTime||=Math.round(performance.now()-r),i}function ve(){if(typeof window>`u`)return;let e=d(`tunnelPageHide`,()=>({done:!1}));e.done||(e.done=!0,window.addEventListener(`pagehide`,()=>{for(let[e,t]of v)fetch(`${h()}/disconnect`,{method:`POST`,headers:y(t),body:JSON.stringify({connectionId:e}),keepalive:!0}).catch(()=>void 0)}))}async function ye(e){try{await x(`/disconnect`,{connectionId:e},v.get(e))}finally{v.delete(e)}}async function be(e,t){return x(`/test-connection`,e,t)}var S=0;function xe(e){S>=3||(async()=>{try{(await fetch(`${h()}/usage`,{method:`POST`,headers:y(),body:JSON.stringify({feature:e})})).ok?S=0:S+=1}catch{S+=1}})()}function C(e,t,n){return e.map(e=>e.id===t?n(e):e.children.length>0?{...e,children:C(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 w(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 Ce=n()(a(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]:w(e.expandedIds[t],n,!0)},trees:{...e.trees,[t]:C(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]:C(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]:w(e.expandedIds[t],n,i)},trees:{...e.trees,[t]:C(r,n,e=>({...e,isExpanded:i}))}}}),setExpanded:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:w(e.expandedIds[t],n,r)},trees:{...e.trees,[t]:C(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]:C(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:c(),partialize:e=>({selectedNodeId:e.selectedNodeId,expandedIds:e.expandedIds})})),T=32,E=24,we=931071618,D=931071619,O=(e,t)=>(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0,Te=(e,t)=>(e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t])>>>0;function k(e,t,n,r,i=0,a=0){let o=r?O:Te;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 Ee(e){if(e.byteLength<T)return null;let t=O(e,0);if(t!==we&&t!==D)return null;let n=t===D,r=O(e,8);if(r<512||r>65536||r&r-1)return null;let i=O(e,16),a=O(e,20),[o,s]=k(e,0,24,n);if(o!==O(e,24)||s!==O(e,28))return null;let c=E+r,l=new Map,u=new Map,d=0,f=0,p=0;for(let t=T;t+c<=e.byteLength&&!(O(e,t+8)!==i||O(e,t+12)!==a||([o,s]=k(e,t,8,n,o,s),[o,s]=k(e,t+E,r,n,o,s),o!==O(e,t+16)||s!==O(e,t+20)));t+=c){let n=O(e,t),r=O(e,t+4);if(n===0)break;if(u.set(n,e.subarray(t+E,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 A(e,t){let n=Ee(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`,j=`handles`;function Oe(){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(j),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}function M(e,t){return Oe().then(n=>new Promise((r,i)=>{let a=t(n.transaction(j,e).objectStore(j));a.onsuccess=()=>r(a.result),a.onerror=()=>i(a.error)}))}var N=e=>`${e}:wal`;async function P(e,t){try{await M(`readwrite`,n=>n.put(t,e))}catch{}}async function F(e){try{return await M(`readonly`,t=>t.get(e))??null}catch{return null}}async function I(e){try{await M(`readwrite`,t=>t.delete(e))}catch{}}async function L(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 R=e=>`dbcache-meta:${e}`,z=e=>`${e}.sqlite3`;async function ke(e){try{let t=await s.getItem(R(e));if(!t)return null;let n=JSON.parse(t),r=await o.get(z(e));return r?{bytes:new Uint8Array(r),meta:n}:null}catch{return null}}async function Ae(e,t,n){try{let r=t.slice().buffer;return await o.set(z(e),r)?(await s.setItem(R(e),JSON.stringify(n)),!0):!1}catch(e){return console.warn(`[db-cache] write failed:`,e),!1}}async function je(e,t){try{let n=await s.getItem(R(e));if(!n)return;await s.setItem(R(e),JSON.stringify({...JSON.parse(n),...t}))}catch{}}async function Me(e){try{await o.remove(z(e)),await s.removeItem(R(e))}catch{}}var Ne=`browser:`;function B(e){return typeof e==`string`&&e.startsWith(`browser:`)}var Pe=750;function Fe(e){let t=W.get(e);t?.profileId&&(t.flushTimer&&clearTimeout(t.flushTimer),t.flushTimer=setTimeout(()=>{t.flushTimer=null,V(e)},Pe))}async function V(e){let t=W.get(e);if(t?.profileId)try{let n=await et(e);await Ae(t.profileId,n,H(t))}catch(e){console.warn(`[browser-sqlite] cache flush failed:`,e)}}function H(e){return{name:e.source.name,lastModified:e.fileMeta.lastModified,size:e.fileMeta.size,dirty:e.dirty,cachedAt:Date.now()}}var Ie=d(`browserSqliteVisibilityListener`,()=>({installed:!1}));typeof document<`u`&&!Ie.installed&&(Ie.installed=!0,document.addEventListener(`visibilitychange`,()=>{if(document.visibilityState===`hidden`)for(let[e,t]of W)t.flushTimer&&(clearTimeout(t.flushTimer),t.flushTimer=null,V(e))}));function U(e){return e.toLowerCase().endsWith(`-wal`)}var W=d(`browserSqliteDatabases`,()=>new Map),Le=d(`browserSqliteModule`,()=>({promise:null}));async function G(){return Le.promise||=i(()=>import(`./dist-Roudme38.js`).then(e=>e.default()),[]),Le.promise}function K(e){let t=W.get(e);if(!t)throw Error(`Browser connection not found: ${e}`);return t}function Re(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 ze=`SQLite format 3\0`;function Be(e){if(e.byteLength===0)return null;if(e.byteLength<100)return r.t(`services.sqliteFile.tooSmall`);if(String.fromCharCode(...e.subarray(0,16))!==ze)return r.t(`services.sqliteFile.notSqlite`);let t=e[16]<<8|e[17],n=t===1?65536:t;return n<512||n&n-1?r.t(`services.sqliteFile.badPageSize`,{size:n}):null}async function Ve(e){let t=Be(e);if(t)throw Error(t);let n=await G(),i=new n.oo1.DB;if(e.byteLength===0)return i;let a=n.wasm.allocFromTypedArray(e),o=n.capi,s=o.SQLITE_DESERIALIZE_FREEONCLOSE??1,c=o.SQLITE_DESERIALIZE_RESIZEABLE??2,l=n.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(r.t(`services.sqliteFile.unreadable`,{message:e instanceof Error?e.message:String(e)}))}return i}async function He(e){let t=window.showOpenFilePicker;if(t)try{let n=await t({multiple:e.multiple,types:e.sqliteOnly?[{description:r.t(`services.sqliteFile.pickerDescription`),accept:{"application/vnd.sqlite3":[`.sqlite`,`.sqlite3`,`.db`,`.db3`]}}]:void 0,excludeAcceptAllOption:!1});return Promise.all(n.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 Ue(){let e=await He({multiple:!0,sqliteOnly:!1}),t=e.find(e=>!U(e.file.name));return t?{main:t,wal:e.find(e=>U(e.file.name)&&e.file.name.toLowerCase()===`${t.file.name.toLowerCase()}-wal`)??e.find(e=>U(e.file.name))}:null}async function We(){let[e]=await He({multiple:!1,sqliteOnly:!1});return e??null}async function q(e,t,n={}){let{bytes:r,wal:i}=Re(e),a=await Ve(r),o=`${Ne}${crypto.randomUUID()}`,s={...t,wal:i};return W.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 J(e,t,n,r={}){let i=e?new Uint8Array(await e.arrayBuffer()):new Uint8Array,a=i,o=!1;n&&(a=A(i,new Uint8Array(await n.file.arrayBuffer())).bytes,o=!0);let s=await q(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 W.get(s.connectionId).rawBytes=i,r.profileId&&V(s.connectionId),s}async function Ge(e,t,n,r){return await q(t,{name:n.name,handle:r,walApplied:!0},{profileId:e,fileMeta:{lastModified:n.lastModified,size:n.size},dirty:n.dirty})}function Ke(e,t){let n=K(e);n.source={...n.source,handle:t}}function qe(e){return W.get(e)?.dirty??!1}async function Je(e,t){let n=K(e),r=A(n.rawBytes,new Uint8Array(await t.file.arrayBuffer())),i=await q(r.bytes,{...n.source,walApplied:!0,walHandle:t.handle},{profileId:n.profileId,fileMeta:n.fileMeta});return W.get(i.connectionId).rawBytes=n.rawBytes,X(e),n.profileId&&V(i.connectionId),{...i,appliedFrames:r.appliedFrames}}function Y(e){return W.get(e)?.source??null}function Ye(e){return e&&e.trim().toLowerCase().replace(/\(.*$/,``).trim()||null}function Xe(e){return e==null?`null`:typeof e==`number`?Number.isInteger(e)?`integer`:`real`:typeof e==`bigint`?`bigint`:e instanceof Uint8Array?`blob`:`text`}function Ze(e){return typeof e==`bigint`?Number(e):e instanceof Uint8Array?{type:`Buffer`,data:Array.from(e)}:e}async function Qe(e,t){let{db:n}=K(e),r=await G(),i=performance.now(),a=K(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,Fe(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(Ze));let l=s.getColumnNames(),u=r.capi,d=s.pointer;return{success:!0,fields:l.map((e,t)=>{let n=Ye(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??Xe($e(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 $e(e,t){for(let n of e){let e=n[t];if(e!=null)return e}return null}async function et(e){let{db:t}=K(e);return(await G()).capi.sqlite3_js_db_export(t.pointer)}function tt(e){let t=W.get(e);if(!t?.source.handle)return null;let{source:n}=t;return n.wal&&!n.walApplied&&!n.walAcknowledged?r.t(`services.sqliteFile.walNotLoaded`):null}function nt(e){let t=K(e);t.source={...t.source,walAcknowledged:!0}}async function rt(e){let{source:t,fileMeta:n}=e;if(!t.handle)return;let i=await t.handle.getFile();if(n.lastModified&&(i.lastModified!==n.lastModified||i.size!==n.size))throw Error(r.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(r.t(`services.sqliteFile.walHasChanges`,{name:t.name}));if(e.size>0&&t.walApplied&&e.lastModified>n.lastModified)throw Error(r.t(`services.sqliteFile.walChangedOnDisk`,{name:t.name}))}catch(e){if(e instanceof Error&&!(e instanceof DOMException))throw e}}async function it(e){let t=K(e),{source:n}=t,i=tt(e);if(i)throw Error(i);n.handle&&await rt(t);let a=await et(e);if(n.handle){if(!await L(n.handle,!0))throw Error(r.t(`services.sqliteFile.writeDenied`,{name:n.name}));let t=await n.handle.createWritable();await t.write(a),await t.close(),n.walHandle&&await(await n.walHandle.createWritable()).close();let i=K(e);i.dirty=!1;try{let e=await n.handle.getFile();i.fileMeta={lastModified:e.lastModified,size:e.size}}catch{i.fileMeta={lastModified:Date.now(),size:a.byteLength}}return i.profileId&&je(i.profileId,{...H(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=n.name===`:memory:`?`database.sqlite`:n.name,c.click(),URL.revokeObjectURL(s),`download`}function X(e){let t=W.get(e);t&&(t.flushTimer&&clearTimeout(t.flushTimer),t.db.close(),W.delete(e))}function Z(e){return W.get(e)?.profileId}async function at(e){await I(e),await I(N(e)),await Me(e)}async function ot(e,t){let n=await F(e);if(!n)return null;if(!await L(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 I(e),null;throw t}}async function st(e,t){let n=await F(N(e));if(!(!n||!await L(n,t)))try{return{file:await n.getFile(),handle:n}}catch{await I(N(e));return}}async function ct(e,t){let n={remembered:!0,fromCache:!1,restoredUnsaved:!1,fileDetached:!1,diskChanged:!1},r=await ke(e),i=await ot(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 Ge(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 J(o,a,await st(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 Ge(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 Ue();if(!s)return null;let{connectionId:c,source:l}=await J(s.main.file,s.main.handle,s.wal,{profileId:e});return s.main.handle?await P(e,s.main.handle):await I(e),s.wal?.handle?await P(N(e),s.wal.handle):await I(N(e)),{...n,connectionId:c,fileName:l.name,wal:l.wal,walApplied:l.walApplied,remembered:!1}}var lt=`SQLite format 3\0`;async function ut(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)===lt}async function dt(e,t){try{let n=await F(e);return n?await n.isSameEntry(t):!1}catch{return!1}}async function ft(n){let i=n.find(e=>!U(e.file.name));if(!i)return;if(!await ut(i.file))throw Error(r.t(`app.dropNotSqlite`,{name:i.file.name}));let a=n.find(e=>U(e.file.name)&&e.file.name.toLowerCase()===`${i.file.name.toLowerCase()}-wal`),o=l.getState(),s;for(let e of o.savedConnections)if(!(e.dbms!==`sqlite`||(e.transport??`browser`)!==`browser`||e.sample||e.file!==i.file.name)&&i.handle&&await dt(e.id,i.handle)){s=e;break}let c=s??{id:crypto.randomUUID(),hostName:i.file.name.replace(/\.(db|sqlite|sqlite3|db3)$/i,``),host:``,user:``,pass:``,charset:`utf8`,port:0,dbms:`sqlite`,transport:`browser`,file:i.file.name,autoConnection:!1,savePassword:!0,authToken:``};e(`sqlite_file_drop`,{reused:!!s,wal:!!a,handle:!!i.handle});let d=o.activeConnections.some(e=>e.id===c.id),f=o.activeConnections.find(e=>e.id===c.id)?.serverConnectionId,{connectionId:p}=await J(i.file,i.handle,a,{profileId:c.id});f&&f!==p&&B(f)&&X(f),i.handle?await P(c.id,i.handle):await I(c.id),a?.handle?await P(N(c.id),a.handle):await I(N(c.id)),s||o.addSavedConnection(c),o.openConnection({...c,serverConnectionId:p}),o.setPendingReopen(c.id,!1),o.setFileDetached(c.id,!1),d?Ce.getState().removeTree(c.id):u.getState().addQueryTab(c.id,{id:`tab-${Date.now()}`,title:r.t(`connection.dialog.firstQueryTab`),query:``,database:``,isExecuting:!1,results:[],error:null,executionTime:null}),t.getState().setWelcomeVisible(!1)}async function pt(e,t){let n=await ot(e,!0);return!n||n===`denied`?!1:(Ke(t,n.handle),!0)}async function mt(e){let t=Z(e),n=Y(e);return n&&!n.handle&&t&&await pt(t,e),it(e)}function ht(e){let t=Y(e);return t?t.name===`:memory:`?r.t(`services.save.inMemory`):typeof window<`u`&&!(`showOpenFilePicker`in window)?r.t(`services.save.noFileSystemAccess`):!t.handle&&!Z(e)?r.t(`services.save.noWritableHandle`):null:r.t(`services.save.notBrowserSqlite`)}async function gt(e,t){let n=await We();if(!n)return null;let r=await Je(t,n);return n.handle&&await P(N(e),n.handle),{connectionId:r.connectionId,appliedFrames:r.appliedFrames}}function _t(e){if(!B(e))return null;let t=Y(e);return t?{wal:t.wal,walApplied:t.walApplied,walAcknowledged:t.walAcknowledged??!1}:null}function vt(e){return e.dbms===`sqlite`&&e.transport===`browser`?`browser`:`tunnel`}async function yt(e,t){return he(e,t)}async function bt(e,t){return be(e,t)}async function xt(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(B(e))try{return await Qe(e,t)}catch(e){return r(e)}let i=Q.get(e)??e;try{return await _e(i,t,n)}catch(e){if(!(e instanceof b)||e.status!==404)return r(e);let a=await St(i);if(!a)return r(e);try{return await _e(a,t,n)}catch(e){return r(e)}}}var Q=new Map,$=new Map;function St(e){let n=$.get(e);if(n)return n;let i=(async()=>{let n=l.getState(),i=n.activeConnections.find(t=>t.serverConnectionId===e||Q.get(t.serverConnectionId??``)===e);if(!i||vt(i)===`browser`||se())return null;if(i.serverConnectionId&&i.serverConnectionId!==e&&!Q.has(i.serverConnectionId))return Q.set(e,i.serverConnectionId),i.serverConnectionId;let a=n.resolveCredentials(i),o=a.ssh?.enabled&&a.ssh.auth===`password`&&!a.ssh.password;if(!a.pass&&i.pass===``&&i.dbms!==`sqlite`||o)return null;try{let n=await he(_(a),a.authToken||void 0);if(!n.success||!n.connectionId)return null;for(let[t,r]of Q)r===e&&Q.set(t,n.connectionId);return Q.set(e,n.connectionId),l.getState().updateServerConnectionId(i.id,n.connectionId),l.getState().setTransactionOpen(i.id,!1),t.getState().setFooterMessage(r.t(`services.agent.reconnected`,{name:i.hostName||i.host||i.databaseId||i.file||i.id})),n.connectionId}catch{return null}})();return $.set(e,i),i.finally(()=>$.delete(e)),i}async function Ct(e){if(B(e)){let t=Z(e);X(e),t&&await Me(t);return}return ye(e)}async function wt(e){if(B(e))return!1;let t=l.getState().activeConnections.find(t=>t.id===e)?.serverConnectionId;return t?ge(t):!1}function Tt(e){return async(t,n)=>{let i=await xt(e,t,n);if(!i.success)throw Error(i.message??r.t(`services.query.failed`));return i}}export{_ as A,le as C,oe as D,pe as E,ee as M,p as N,me as O,se as S,ue as T,tt as _,ht as a,J as b,at as c,gt as d,ft as f,nt as g,bt as h,Tt as i,f as j,xe as k,_t as l,mt as m,ct as n,Ct as o,pt as p,yt as r,xt as s,wt as t,vt as u,B as v,ne as w,Ce as x,qe as y};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var e=/^(?:-?\d+(?:\.\d+)?|null|true|false|current_(?:timestamp|date|time)(?:\(\d*\))?|now\(\)|b'[01]+'|x'[0-9a-f]*')$/i;function t(t,n){let r=t.trim();return r===``?n(``):e.test(r)||/^'.*'$/s.test(r)||/^".*"$/s.test(r)||r.includes(`(`)||r.includes(`::`)?r:n(r)}function n(e,n,r){let i=n.upperCaseTypes?e.type.toUpperCase():e.type;return e.nullable?n.modify===`mssql`&&(i+=` NULL`):i+=` NOT NULL`,e.defaultValue!==null&&!/auto_increment|identity/i.test(e.extra)&&(i+=` DEFAULT ${t(e.defaultValue,r)}`),n.mysqlAttributes&&(/auto_increment/i.test(e.extra)&&(i+=` AUTO_INCREMENT`),e.comment&&(i+=` COMMENT ${r(e.comment)}`)),i}function r({quoteIdentifier:e,quoteLiteral:r,qualify:i},a){let o=e=>n(e,a,r),s=(t,n)=>a.qualifiedIndexNames?i(t,n):e(n);return{addColumn(t,n,r){let s=`${e(r.name)} ${o(r)}`;return a.addColumn===`ADD (`?`ALTER TABLE ${i(t,n)} ADD (${s});`:`ALTER TABLE ${i(t,n)} ${a.addColumn} ${s};`},alterColumn(n,s,c){let l=i(n,s),u=e(c.name);switch(a.modify){case`mysql`:return`ALTER TABLE ${l} MODIFY COLUMN ${u} ${o(c)};`;case`oracle`:return`ALTER TABLE ${l} MODIFY (${u} ${o(c)});`;case`mssql`:return`ALTER TABLE ${l} ALTER COLUMN ${u} ${c.type}${c.nullable?` NULL`:` NOT NULL`};`;case`postgres`:return`ALTER TABLE ${l}\n ${[`ALTER COLUMN ${u} TYPE ${c.type}`,c.nullable?`ALTER COLUMN ${u} DROP NOT NULL`:`ALTER COLUMN ${u} SET NOT NULL`,c.defaultValue===null||/auto_increment|identity/i.test(c.extra)?`ALTER COLUMN ${u} DROP DEFAULT`:`ALTER COLUMN ${u} SET DEFAULT ${t(c.defaultValue,r)}`].join(`,
|
|
2
|
-
`)};`;case`none`:return null}},dropColumn(t,n,r){return`ALTER TABLE ${i(t,n)} DROP COLUMN ${e(r)};`},createIndex(t,n,r){let o=r.columns.map(e).join(`, `);if(r.type===`PRIMARY`)return`ALTER TABLE ${i(t,n)} ADD PRIMARY KEY (${o});`;let c=r.type===`UNIQUE`?`UNIQUE `:r.type===`FULLTEXT`&&a.fulltext?`FULLTEXT `:``,l=a.unqualifiedIndexTarget?e(n):i(t,n);return`CREATE ${c}INDEX ${s(t,r.name)} ON ${l} (${o});`},dropIndex(t,n,r){return a.dropIndexOnTable?`DROP INDEX ${e(r)} ON ${i(t,n)};`:`DROP INDEX ${s(t,r)};`},insertRows(t,n,o,s){let c=i(t,n),l=o.map(e).join(`, `),u=s.map(e=>`(${e.map(r).join(`, `)})`);return a.multiRowInsert?`INSERT INTO ${c} (${l}) VALUES\n${u.join(`,
|
|
2
|
+
`)};`;case`none`:return null}},dropColumn(t,n,r){return`ALTER TABLE ${i(t,n)} DROP COLUMN ${e(r)};`},renameColumn(t,n,o,s){return a.renameColumn===`sp_rename`?`EXEC sp_rename ${r(`${t}.${n}.${o}`)}, ${r(s)}, 'COLUMN';`:`ALTER TABLE ${i(t,n)} RENAME COLUMN ${e(o)} TO ${e(s)};`},createIndex(t,n,r){let o=r.columns.map(e).join(`, `);if(r.type===`PRIMARY`)return`ALTER TABLE ${i(t,n)} ADD PRIMARY KEY (${o});`;let c=r.type===`UNIQUE`?`UNIQUE `:r.type===`FULLTEXT`&&a.fulltext?`FULLTEXT `:``,l=a.unqualifiedIndexTarget?e(n):i(t,n);return`CREATE ${c}INDEX ${s(t,r.name)} ON ${l} (${o});`},dropIndex(t,n,r){return a.dropIndexOnTable?`DROP INDEX ${e(r)} ON ${i(t,n)};`:`DROP INDEX ${s(t,r)};`},insertRows(t,n,o,s){let c=i(t,n),l=o.map(e).join(`, `),u=s.map(e=>`(${e.map(r).join(`, `)})`);return a.multiRowInsert?`INSERT INTO ${c} (${l}) VALUES\n${u.join(`,
|
|
3
3
|
`)};`:`INSERT ALL\n${u.map(e=>` INTO ${c} (${l}) VALUES ${e}`).join(`
|
|
4
4
|
`)}\nSELECT 1 FROM DUAL;`}}}var i={DATABASE:`database`,SCHEMA:`schema`,TABLE:`table`,VIEW:`view`,COLUMN:`column`,INDEX:`index`,PROCEDURE:`procedure`,FUNCTION:`function`,TRIGGER:`trigger`,EVENT:`event`,FOLDER:`folder`,USER:`user`};function a(e,t,n){let r=`${t}:${n.replaceAll(`/`,`⁄`)}`;return e?`${e}/${r}`:r}function o(e,t,n,r,i){return{id:a(e,t,n),type:t,text:n,isLeaf:r,isExpanded:!1,isLoading:!1,children:[],metadata:i}}var s=[{text:`Tables`,type:`TABLE`},{text:`Views`,type:`VIEW`},{text:`Procedures`,type:`PROCEDURE`,capability:`procedures`},{text:`Functions`,type:`FUNCTION`,capability:`functions`},{text:`Triggers`,type:`TRIGGER`,capability:`triggers`},{text:`Events`,type:`EVENT`,capability:`events`}],c=[`Columns`,`Indexes`],l={TABLE:i.TABLE,VIEW:i.VIEW,PROCEDURE:i.PROCEDURE,FUNCTION:i.FUNCTION,TRIGGER:i.TRIGGER,EVENT:i.EVENT};function u(e){return s.find(t=>t.type===e).text}function ee(e){return s.filter(t=>!t.capability||e.capabilities[t.capability]).map(e=>e.text)}function te(e,t,n){return ee(e).map(e=>o(t,i.FOLDER,e,!1,{...n,countable:!0}))}async function ne({engine:e,run:t},n){let{introspect:r}=e,a=n.metadata?.database??``,s={database:a,catalog:n.metadata?.catalog},c=(e,t,r)=>o(n.id,l[e],t,!0,{...s,...r});switch(n.text){case`Tables`:return(await r.listTables(t,a)).map(e=>o(n.id,i.TABLE,e.name,!1,{...s,table:e.name}));case`Views`:return(await r.listViews(t,a)).map(e=>c(`VIEW`,e));case`Procedures`:return(await r.listProcedures(t,a)).map(e=>c(`PROCEDURE`,e));case`Functions`:return(await r.listFunctions(t,a)).map(e=>c(`FUNCTION`,e));case`Triggers`:return r.listTriggerDetails?(await r.listTriggerDetails(t,a)).map(e=>c(`TRIGGER`,e.name,{table:e.table})):(await r.listTriggers(t,a)).map(e=>c(`TRIGGER`,e));case`Events`:return(await r.listEvents(t,a)).map(e=>c(`EVENT`,e));default:return[]}}function re(e){let t={database:e.metadata?.database,catalog:e.metadata?.catalog,table:e.text};return c.map(n=>o(e.id,i.FOLDER,n,!1,t))}async function ie({engine:e,run:t},n){let r=n.metadata?.database??``,a=n.metadata?.table;if(!a)return null;let s={database:r,catalog:n.metadata?.catalog,table:a};switch(n.text){case`Columns`:return(await e.introspect.listColumns(t,r,a)).map(e=>{let t=e.extra?` [${e.extra}]`:``;return o(n.id,i.COLUMN,`${e.name} ${e.type}${t}`,!0,{...s,column:e.name,key:e.key})});case`Indexes`:return(await e.introspect.listIndexes(t,r,a)).map(e=>o(n.id,i.INDEX,`${e.name} (${e.columns.join(`, `)})`,!0,{...s,index:e.name}));default:return null}}async function ae(e,t){switch(t.type){case i.FOLDER:return await ie(e,t)??ne(e,t);case i.TABLE:return re(t);default:return null}}function oe(e,t,n){let r=a(e,i.FOLDER,u(t));return[e,r,a(r,l[t],n)]}var se={async loadRoot({engine:e,run:t}){return(await e.introspect.listDatabases(t)).map(e=>o(null,i.DATABASE,e,!1,{database:e}))},async loadChildren(e,t){return t.type===i.DATABASE?te(e.engine,t.id,{database:t.text}):await ae(e,t)??[]},objectPath(e,t,n){return oe(a(null,i.DATABASE,e),t,n)},namespacePath(e){return[a(null,i.DATABASE,e)]}},ce=class extends Error{constructor(e,t){super(`${e} does not support ${t}`),this.name=`UnsupportedQueryError`}};function le(e,t,...n){let r=t.identifierQuote,i=t.identifierQuoteClose??r;return e.replace(/(.?)\{(\d+)\}(.?)/gs,(e,a,o,s)=>{let c=parseInt(o,10);if(c>=n.length)return e;let l=n[c];return a===r&&s===i?`${a}${l.replaceAll(i,i+i)}${s}`:a&&a===s&&t.stringQuotes.includes(a)?`${a}${d(l,a,t.backslashEscapes)}${s}`:`${a}${l}${s}`})}function d(e,t,n){let r=n?e.replaceAll(`\\`,`\\\\`):e;return r=r.replaceAll(t,t+t),r}function f(e){return String(e).padStart(2,`0`)}function ue(e){return`${e.getFullYear()}-${f(e.getMonth()+1)}-${f(e.getDate())} ${f(e.getHours())}:${f(e.getMinutes())}:${f(e.getSeconds())}`}var de=/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})/,fe=e=>Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``),pe=e=>`X'${e}'`;function me(e,t,n=!1,r=pe){if(e==null)return`NULL`;if(e instanceof Uint8Array)return r(fe(e));if(typeof e==`number`)return Number.isFinite(e)?String(e):`NULL`;if(typeof e==`bigint`)return e.toString();if(typeof e==`boolean`)return n?e?`TRUE`:`FALSE`:e?`1`:`0`;if(e instanceof Date)return`'${ue(e)}'`;let i;if(typeof e==`object`)try{i=JSON.stringify(e)}catch{i=String(e)}else{i=String(e);let t=i.match(de);t&&(i=`${t[1]} ${t[2]}`)}return`'${d(i,`'`,t)}'`}function p(e){let t=e.fields.map(e=>e.name);return e.records.map(e=>{let n={};return t.forEach((t,r)=>{n[t]=e[r]}),n})}function m(e,t=``){return e==null?t:String(e)}function h(e){return e==null?null:String(e)}function g(e){if(e==null||e===``)return null;let t=Number(e);return Number.isFinite(t)?t:null}function _(e,t){return e.trim()||t}function v(e){let t=e.identifierQuote,n=e.identifierQuoteClose??t,r=e=>`${t}${e.replaceAll(n,n+n)}${n}`,i=t=>me(t,e.syntax.backslashEscapes,e.booleanKeywords??!1,e.binaryLiteral),a=(e,t)=>e?`${r(e)}.${r(t)}`:r(t),o={identifierQuote:t,identifierQuoteClose:n,stringQuotes:e.syntax.doubleQuoteIsIdentifier?[`'`]:[`'`,`"`],backslashEscapes:e.syntax.backslashEscapes};return{id:e.id,label:e.label,capabilities:e.capabilities,introspect:e.introspect,tree:e.tree??se,defaultPort:e.defaultPort,syntax:e.syntax,limitClause:(t,n=0)=>e.syntax.limitStyle===`top`?`OFFSET ${n} ROWS FETCH NEXT ${t} ROWS ONLY`:e.syntax.limitStyle===`fetch`?n>0?`OFFSET ${n} ROWS FETCH NEXT ${t} ROWS ONLY`:`FETCH FIRST ${t} ROWS ONLY`:n>0?`LIMIT ${t} OFFSET ${n}`:`LIMIT ${t}`,quoteIdentifier:r,quoteLiteral:i,qualify:a,ddl:e.ddl({quoteIdentifier:r,quoteLiteral:i,qualify:a}),rowIdExpression:e.rowIdExpression,hasQuery(t){return e.queries[t]!==void 0},getQuery(t,...n){let r=e.queries[t];if(r===void 0)throw new ce(e.label,t);return le(r,o,...n)},getDataTypes:()=>e.dataTypes,getDataTypesToJSON:()=>e.dataTypes.map(e=>[e,e]),getFunctions:()=>e.functions,getReservedWords:()=>e.reservedWords}}var y=e=>`\`${e.replaceAll("`","``")}\``,b=(e,t)=>`${y(e)}.${y(t)}`,x=e=>`'${e.replace(/\\/g,`\\\\`).replace(/'/g,`''`)}'`;function he(e){let t=m(e).toUpperCase();return t===`PRI`||t===`UNI`||t===`MUL`?t:``}function ge(e,t,n){if(e===`PRIMARY`)return`PRIMARY`;let r=m(n).toUpperCase();return r===`FULLTEXT`?`FULLTEXT`:r===`SPATIAL`?`SPATIAL`:Number(t)===0?`UNIQUE`:`INDEX`}function _e(e){return{name:m(e.Name??e.TABLE_NAME),engine:h(e.Engine??e.ENGINE),rows:g(e.Rows??e.TABLE_ROWS),collation:h(e.Collation??e.TABLE_COLLATION),autoIncrement:h(e.Auto_increment??e.AUTO_INCREMENT),comment:m(e.Comment??e.TABLE_COMMENT),createTime:h(e.Create_time??e.CREATE_TIME),updateTime:h(e.Update_time??e.UPDATE_TIME),dataLength:g(e.Data_length??e.DATA_LENGTH)}}function ve(e){return{name:m(e.Field??e.COLUMN_NAME),type:m(e.Type??e.COLUMN_TYPE),nullable:m(e.Null??e.IS_NULLABLE).toUpperCase()===`YES`,key:he(e.Key??e.COLUMN_KEY),defaultValue:h(e.Default??e.COLUMN_DEFAULT),extra:m(e.Extra??e.EXTRA),comment:m(e.Comment??e.COLUMN_COMMENT),collation:h(e.Collation??e.COLLATION_NAME)}}function ye(e){let t=new Map;for(let n of e){let e=m(n.Table??n.TABLE_NAME),r=m(n.Key_name??n.INDEX_NAME),i=m(n.Column_name??n.COLUMN_NAME),a=t.get(e);a||(a=new Map,t.set(e,a));let o=a.get(r);o?o.columns.push(i):a.set(r,{name:r,type:ge(r,n.Non_unique??n.NON_UNIQUE,n.Index_type??n.INDEX_TYPE),columns:[i]})}return new Map(Array.from(t,([e,t])=>[e,Array.from(t.values())]))}var be={TABLE:`TABLE`,VIEW:`VIEW`,PROCEDURE:`PROCEDURE`,FUNCTION:`FUNCTION`,TRIGGER:`TRIGGER`,EVENT:`EVENT`},xe={async listDatabases(e){return(await e(`SHOW DATABASES`)).records.map(e=>m(e[0]))},async listTables(e,t){return p(await e(`SHOW TABLE STATUS FROM ${y(t)} WHERE ENGINE IS NOT NULL`,t)).map(_e)},async listViews(e,t){return(await e(`SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = ${x(t)} ORDER BY TABLE_NAME`,t)).records.map(e=>m(e[0]))},async listProcedures(e,t){return p(await e(`SHOW PROCEDURE STATUS WHERE DB = ${x(t)}`,t)).map(e=>m(e.Name))},async listFunctions(e,t){return p(await e(`SHOW FUNCTION STATUS WHERE DB = ${x(t)}`,t)).map(e=>m(e.Name))},async listTriggers(e,t){return p(await e(`SHOW TRIGGERS FROM ${y(t)}`,t)).map(e=>m(e.Trigger))},async listEvents(e,t){return(await e(`SELECT EVENT_NAME FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA = ${x(t)} ORDER BY EVENT_NAME`,t)).records.map(e=>m(e[0]))},async listColumns(e,t,n){return p(await e(`SHOW FULL COLUMNS FROM ${b(t,n)}`,t)).map(ve)},async listIndexes(e,t,n){return ye(p(await e(`SHOW INDEX FROM ${b(t,n)}`,t))).get(n)??[]},async listAllColumns(e,t){let n=await e(`SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT,
|
|
5
5
|
EXTRA, COLUMN_COMMENT, COLLATION_NAME
|
|
@@ -99,7 +99,7 @@ USE \`{0}\`$$
|
|
|
99
99
|
DROP EVENT IF EXISTS \`{1}\`$$
|
|
100
100
|
{2}$$
|
|
101
101
|
DELIMITER;`,SHOW_PROCESS_LIST:`SHOW FULL PROCESSLIST`,SHOW_VARIABLES:`SHOW VARIABLES`,SHOW_STATUS:`SHOW STATUS`,SHOW_GLOBAL_STATUS:`SHOW GLOBAL STATUS`,SHOW_SESSION_STATUS:`SHOW SESSION STATUS`,CREATE_DATABASE:"CREATE DATABASE `{0}` CHARACTER SET {1} COLLATE {2}",ALTER_DATABASE:"ALTER DATABASE `{0}` CHARACTER SET {1} COLLATE {2}",DROP_DATABASE:"DROP DATABASE `{0}`",CREATE_SCHEMA:"CREATE SCHEMA `{0}`",DROP_SCHEMA:"DROP SCHEMA `{0}`",SHOW_CHARSET:`SHOW CHARSET`,SHOW_COLLATION:`SHOW COLLATION`,SHOW_COLUMNS:"SHOW FULL COLUMNS FROM `{0}`.`{1}`",CHARSET_DATABASE:`SHOW VARIABLES LIKE 'character_set_database'`,COLLATION_DATABASE:`SHOW VARIABLES LIKE 'collation_database'`,KILL_QUERY:`KILL {0}`,SHOW_DATABASES:`SHOW DATABASES`,COPY_TABLE_STRUCTURE:"CREATE TABLE `{2}`.`{3}` LIKE `{0}`.`{1}`",COPY_TABLE_DATA:"INSERT `{2}`.`{3}` SELECT * FROM `{0}`.`{1}`",UPDATE_TABLE_SINGLE:"UPDATE `{0}`.`{1}` SET {2} WHERE {3} LIMIT 1",START_TRANSACTION:`START TRANSACTION`,COMMIT:`COMMIT`,ROLLBACK:`ROLLBACK`,SHOW_GLOBAL_VARIABLES:`SHOW GLOBAL VARIABLES`,SHOW_SESSION_VARIABLES:`SHOW SESSION VARIABLES`,DISABLE_FK_CHECKS:`SET FOREIGN_KEY_CHECKS = 0`,ENABLE_FK_CHECKS:`SET FOREIGN_KEY_CHECKS = 1`},Ce=`ASCII.BIN.BIT_LENGTH.CHAR.CHAR_LENGTH.CHARACTER_LENGTH.CONCAT.CONCAT_WS.ELT.EXPORT_SET.FIELD.FIND_IN_SET.FORMAT.FROM_BASE64.HEX.INSERT.INSTR.LCASE.LEFT.LENGTH.LOAD_FILE.LOCATE.LOWER.LPAD.LTRIM.MAKE_SET.MID.OCT.OCTET_LENGTH.ORD.POSITION.QUOTE.REGEXP_INSTR.REGEXP_LIKE.REGEXP_REPLACE.REGEXP_SUBSTR.REPEAT.REPLACE.REVERSE.RIGHT.RPAD.RTRIM.SOUNDEX.SPACE.STRCMP.SUBSTR.SUBSTRING.SUBSTRING_INDEX.TO_BASE64.TRIM.UCASE.UNHEX.UPPER.WEIGHT_STRING.ABS.ACOS.ASIN.ATAN.ATAN2.CEIL.CEILING.CONV.COS.COT.CRC32.DEGREES.EXP.FLOOR.LN.LOG.LOG10.LOG2.MOD.PI.POW.POWER.RADIANS.RAND.ROUND.SIGN.SIN.SQRT.TAN.TRUNCATE.ADDDATE.ADDTIME.CONVERT_TZ.CURDATE.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURTIME.DATE.DATE_ADD.DATE_FORMAT.DATE_SUB.DATEDIFF.DAY.DAYNAME.DAYOFMONTH.DAYOFWEEK.DAYOFYEAR.EXTRACT.FROM_DAYS.FROM_UNIXTIME.GET_FORMAT.HOUR.LAST_DAY.LOCALTIME.LOCALTIMESTAMP.MAKEDATE.MAKETIME.MICROSECOND.MINUTE.MONTH.MONTHNAME.NOW.PERIOD_ADD.PERIOD_DIFF.QUARTER.SEC_TO_TIME.SECOND.STR_TO_DATE.SUBDATE.SUBTIME.SYSDATE.TIME.TIME_FORMAT.TIME_TO_SEC.TIMEDIFF.TIMESTAMP.TIMESTAMPADD.TIMESTAMPDIFF.TO_DAYS.TO_SECONDS.UNIX_TIMESTAMP.UTC_DATE.UTC_TIME.UTC_TIMESTAMP.WEEK.WEEKDAY.WEEKOFYEAR.YEAR.YEARWEEK.BINARY.CAST.COALESCE.CONVERT.GREATEST.IF.IFNULL.INTERVAL.ISNULL.LEAST.NULLIF.AVG.BIT_AND.BIT_OR.BIT_XOR.COUNT.GROUP_CONCAT.JSON_ARRAYAGG.JSON_OBJECTAGG.MAX.MIN.STD.STDDEV.STDDEV_POP.STDDEV_SAMP.SUM.VAR_POP.VAR_SAMP.VARIANCE.CUME_DIST.DENSE_RANK.FIRST_VALUE.LAG.LAST_VALUE.LEAD.NTH_VALUE.NTILE.PERCENT_RANK.RANK.ROW_NUMBER.JSON_ARRAY.JSON_ARRAY_APPEND.JSON_ARRAY_INSERT.JSON_CONTAINS.JSON_CONTAINS_PATH.JSON_DEPTH.JSON_EXTRACT.JSON_INSERT.JSON_KEYS.JSON_LENGTH.JSON_MERGE_PATCH.JSON_MERGE_PRESERVE.JSON_OBJECT.JSON_OVERLAPS.JSON_PRETTY.JSON_QUOTE.JSON_REMOVE.JSON_REPLACE.JSON_SCHEMA_VALID.JSON_SCHEMA_VALIDATION_REPORT.JSON_SEARCH.JSON_SET.JSON_STORAGE_FREE.JSON_STORAGE_SIZE.JSON_TABLE.JSON_TYPE.JSON_UNQUOTE.JSON_VALID.JSON_VALUE.AES_DECRYPT.AES_ENCRYPT.COMPRESS.MD5.RANDOM_BYTES.SHA.SHA1.SHA2.STATEMENT_DIGEST.STATEMENT_DIGEST_TEXT.UNCOMPRESS.UNCOMPRESSED_LENGTH.VALIDATE_PASSWORD_STRENGTH.BENCHMARK.CHARSET.COERCIBILITY.COLLATION.CONNECTION_ID.CURRENT_ROLE.CURRENT_USER.DATABASE.FOUND_ROWS.ICU_VERSION.LAST_INSERT_ID.ROLES_GRAPHML.ROW_COUNT.SCHEMA.SESSION_USER.SYSTEM_USER.USER.VERSION.ANY_VALUE.BIN_TO_UUID.DEFAULT.FORMAT_BYTES.FORMAT_PICO_TIME.GET_LOCK.GROUPING.GTID_SUBSET.GTID_SUBTRACT.INET_ATON.INET_NTOA.INET6_ATON.INET6_NTOA.IS_FREE_LOCK.IS_IPV4.IS_IPV4_COMPAT.IS_IPV4_MAPPED.IS_IPV6.IS_USED_LOCK.IS_UUID.NAME_CONST.PS_CURRENT_THREAD_ID.PS_THREAD_ID.RELEASE_ALL_LOCKS.RELEASE_LOCK.SLEEP.SOURCE_POS_WAIT.UUID.UUID_SHORT.UUID_TO_BIN.VALUES.WAIT_FOR_EXECUTED_GTID_SET.EXTRACTVALUE.UPDATEXML.GEOMETRYCOLLECTION.LINESTRING.MULTILINESTRING.MULTIPOINT.MULTIPOLYGON.POINT.POLYGON.MBRCONTAINS.MBRCOVEREDBY.MBRCOVERS.MBRDISJOINT.MBREQUALS.MBRINTERSECTS.MBROVERLAPS.MBRTOUCHES.MBRWITHIN.ST_AREA.ST_ASBINARY.ST_ASGEOJSON.ST_ASTEXT.ST_BUFFER.ST_CENTROID.ST_CONTAINS.ST_CROSSES.ST_DIFFERENCE.ST_DIMENSION.ST_DISJOINT.ST_DISTANCE.ST_DISTANCE_SPHERE.ST_ENDPOINT.ST_ENVELOPE.ST_EQUALS.ST_EXTERIORRING.ST_GEOHASH.ST_GEOMCOLLFROMTEXT.ST_GEOMETRYN.ST_GEOMETRYTYPE.ST_GEOMFROMGEOJSON.ST_GEOMFROMTEXT.ST_GEOMFROMWKB.ST_INTERIORRINGN.ST_INTERSECTION.ST_INTERSECTS.ST_ISCLOSED.ST_ISEMPTY.ST_ISSIMPLE.ST_ISVALID.ST_LATITUDE.ST_LENGTH.ST_LINEFROMTEXT.ST_LONGITUDE.ST_MAKEENVELOPE.ST_NUMGEOMETRIES.ST_NUMINTERIORRING.ST_NUMPOINTS.ST_OVERLAPS.ST_POINTFROMTEXT.ST_POINTN.ST_POLYFROMTEXT.ST_SIMPLIFY.ST_SRID.ST_STARTPOINT.ST_SWAPXY.ST_SYMDIFFERENCE.ST_TOUCHES.ST_TRANSFORM.ST_UNION.ST_VALIDATE.ST_WITHIN.ST_X.ST_Y`.split(`.`),we=`ACCESSIBLE.ADD.ALL.ALTER.ANALYZE.AND.AS.ASC.ASENSITIVE.BEFORE.BETWEEN.BIGINT.BINARY.BLOB.BOTH.BY.CALL.CASCADE.CASE.CHANGE.CHAR.CHARACTER.CHECK.COLLATE.COLUMN.CONDITION.CONSTRAINT.CONTINUE.CONVERT.CREATE.CROSS.CUBE.CUME_DIST.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURSOR.DATABASE.DATABASES.DAY_HOUR.DAY_MICROSECOND.DAY_MINUTE.DAY_SECOND.DEC.DECIMAL.DECLARE.DEFAULT.DELAYED.DELETE.DENSE_RANK.DESC.DESCRIBE.DETERMINISTIC.DISTINCT.DISTINCTROW.DIV.DOUBLE.DROP.DUAL.EACH.ELSE.ELSEIF.EMPTY.ENCLOSED.ESCAPED.EXCEPT.EXISTS.EXIT.EXPLAIN.FALSE.FETCH.FIRST_VALUE.FLOAT.FLOAT4.FLOAT8.FOR.FORCE.FOREIGN.FROM.FULLTEXT.FUNCTION.GENERATED.GET.GRANT.GROUP.GROUPING.GROUPS.HAVING.HIGH_PRIORITY.HOUR_MICROSECOND.HOUR_MINUTE.HOUR_SECOND.IF.IGNORE.IN.INDEX.INFILE.INNER.INOUT.INSENSITIVE.INSERT.INT.INT1.INT2.INT3.INT4.INT8.INTEGER.INTERSECT.INTERVAL.INTO.IO_AFTER_GTIDS.IO_BEFORE_GTIDS.IS.ITERATE.JOIN.JSON_TABLE.KEY.KEYS.KILL.LAG.LAST_VALUE.LATERAL.LEAD.LEADING.LEAVE.LEFT.LIKE.LIMIT.LINEAR.LINES.LOAD.LOCALTIME.LOCALTIMESTAMP.LOCK.LONG.LONGBLOB.LONGTEXT.LOOP.LOW_PRIORITY.MASTER_SSL_VERIFY_SERVER_CERT.MATCH.MAXVALUE.MEDIUMBLOB.MEDIUMINT.MEDIUMTEXT.MIDDLEINT.MINUTE_MICROSECOND.MINUTE_SECOND.MOD.MODIFIES.NATURAL.NOT.NO_WRITE_TO_BINLOG.NTH_VALUE.NTILE.NULL.NUMERIC.OF.ON.OPTIMIZE.OPTIMIZER_COSTS.OPTION.OPTIONALLY.OR.ORDER.OUT.OUTER.OUTFILE.OVER.PARTITION.PERCENT_RANK.PRECISION.PRIMARY.PROCEDURE.PURGE.RANGE.RANK.READ.READS.READ_WRITE.REAL.RECURSIVE.REFERENCES.REGEXP.RELEASE.RENAME.REPEAT.REPLACE.REQUIRE.RESIGNAL.RESTRICT.RETURN.REVOKE.RIGHT.RLIKE.ROW.ROWS.ROW_NUMBER.SCHEMA.SCHEMAS.SECOND_MICROSECOND.SELECT.SENSITIVE.SEPARATOR.SET.SHOW.SIGNAL.SMALLINT.SPATIAL.SPECIFIC.SQL.SQLEXCEPTION.SQLSTATE.SQLWARNING.SQL_BIG_RESULT.SQL_CALC_FOUND_ROWS.SQL_SMALL_RESULT.SSL.STARTING.STORED.STRAIGHT_JOIN.SYSTEM.TABLE.TERMINATED.THEN.TINYBLOB.TINYINT.TINYTEXT.TO.TRAILING.TRIGGER.TRUE.UNDO.UNION.UNIQUE.UNLOCK.UNSIGNED.UPDATE.USAGE.USE.USING.UTC_DATE.UTC_TIME.UTC_TIMESTAMP.VALUES.VARBINARY.VARCHAR.VARCHARACTER.VARYING.VIRTUAL.WHEN.WHERE.WHILE.WINDOW.WITH.WRITE.XOR.YEAR_MONTH.ZEROFILL`.split(`.`),Te=`AUTO_INCREMENT.BEGIN.CHARSET.COMMENT.COMMIT.DO.END.ENGINE.EVENT.FIRST.FOLLOWING.IF EXISTS.IF NOT EXISTS.INVISIBLE.LAST.NULLS.OFFSET.PRECEDING.ROLLBACK.SAVEPOINT.START TRANSACTION.TEMPORARY.TRANSACTION.TRUNCATE.UNBOUNDED.VIEW.VISIBLE.CROSS JOIN.GROUP BY.INNER JOIN.INSERT INTO.LEFT JOIN.ON DUPLICATE KEY UPDATE.ORDER BY.PARTITION BY.RIGHT JOIN.UNION ALL`.split(`.`),Ee=`tinyint.smallint.mediumint.int.integer.bigint.decimal.numeric.float.double.bit.bool.boolean.date.datetime.timestamp.time.year.char.varchar.binary.varbinary.tinyblob.blob.mediumblob.longblob.tinytext.text.mediumtext.longtext.enum.set.json.geometry.point.linestring.polygon.multipoint.multilinestring.multipolygon.geometrycollection`.split(`.`),De={hashComments:!0,dashCommentNeedsSpace:!0,backslashEscapes:!0,doubleQuoteIsIdentifier:!1,bracketIdentifiers:!1,delimiterCommand:!0,dollarQuotes:!1,goBatchSeparator:!1,limitStyle:`limit`,plsqlBlocks:!1};function Oe(e){let{quoteIdentifier:t,quoteLiteral:n,qualify:i}=e;return{...r(e,{addColumn:`ADD COLUMN`,modify:`mysql`,qualifiedIndexNames:!1,dropIndexOnTable:!0,unqualifiedIndexTarget:!1,multiRowInsert:!0,mysqlAttributes:!0,fulltext:!0,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=e.columns.map(e=>{let r=` ${t(_(e.name,`column`))} ${e.type.toUpperCase()}`;return e.length&&(r+=`(${e.length})`),e.unsigned&&(r+=` UNSIGNED`),e.zerofill&&(r+=` ZEROFILL`),e.notNull&&(r+=` NOT NULL`),e.autoIncrement&&(r+=` AUTO_INCREMENT`),e.defaultValue&&(r+=` DEFAULT ${e.defaultValue}`),e.comment&&(r+=` COMMENT ${n(e.comment)}`),r}),a=e.columns.filter(e=>e.primaryKey).map(e=>t(e.name));a.length>0&&r.push(` PRIMARY KEY (${a.join(`, `)})`);for(let n of e.indexes){if(n.type===`PRIMARY`)continue;let e=n.columns.map(t).join(`, `),i=n.type===`UNIQUE`?`UNIQUE KEY`:n.type===`FULLTEXT`?`FULLTEXT KEY`:`KEY`;r.push(` ${i} ${t(n.name)} (${e})`)}let o=[];return e.options.engine&&o.push(`ENGINE=${e.options.engine}`),e.options.charset&&o.push(`DEFAULT CHARSET=${e.options.charset}`),e.options.collation&&o.push(`COLLATE=${e.options.collation}`),e.options.autoIncrement&&o.push(`AUTO_INCREMENT=${e.options.autoIncrement}`),e.options.comment&&o.push(`COMMENT=${n(e.options.comment)}`),`CREATE TABLE ${i(e.database,_(e.name,`untitled`))} (\n${r.join(`,
|
|
102
|
-
`)}\n)${o.length?` `+o.join(` `):``};`}}}var S={id:`mysql`,label:`MySQL`,capabilities:{multipleDatabases:!0,users:!0,procedures:!0,functions:!0,triggers:!0,events:!0,processList:!0,variables:!0,status:!0,flush:!0,tableProperties:!0,implicitCommitDdl:!0,transactions:!0},introspect:xe,ddl:Oe,identifierQuote:"`",defaultPort:3306,queries:Se,syntax:De,dataTypes:Ee,functions:Ce,reservedWords:[...we,...Te]},C=v(S),ke=new Set(`REGEXP_LIKE.JSON_SCHEMA_VALIDATION_REPORT.JSON_STORAGE_FREE.JSON_STORAGE_SIZE.STATEMENT_DIGEST.STATEMENT_DIGEST_TEXT.VALIDATE_PASSWORD_STRENGTH.ICU_VERSION.ROLES_GRAPHML.ANY_VALUE.BIN_TO_UUID.UUID_TO_BIN.IS_UUID.GROUPING.FORMAT_BYTES.FORMAT_PICO_TIME.PS_CURRENT_THREAD_ID.PS_THREAD_ID.SOURCE_POS_WAIT.WAIT_FOR_EXECUTED_GTID_SET.ST_GEOHASH.ST_LATITUDE.ST_LONGITUDE.ST_MAKEENVELOPE.ST_SIMPLIFY.ST_TRANSFORM.ST_VALIDATE.ST_SWAPXY.CUBE.CUME_DIST.DENSE_RANK.EMPTY.FIRST_VALUE.GENERATED.GET.GROUPS.IO_AFTER_GTIDS.IO_BEFORE_GTIDS.JSON_TABLE.LAG.LAST_VALUE.LATERAL.LEAD.NTH_VALUE.NTILE.OF.OPTIMIZER_COSTS.PERCENT_RANK.RANK.STORED.SYSTEM.VIRTUAL`.split(`.`)),Ae=`ADD_MONTHS.BINLOG_GTID_POS.COLUMN_ADD.COLUMN_CHECK.COLUMN_CREATE.COLUMN_DELETE.COLUMN_EXISTS.COLUMN_GET.COLUMN_JSON.COLUMN_LIST.CRC32C.DECODE.DECODE_ORACLE.DES_DECRYPT.DES_ENCRYPT.ENCODE.ENCRYPT.JSON_ARRAY_INTERSECT.JSON_COMPACT.JSON_DETAILED.JSON_EQUALS.JSON_EXISTS.JSON_KEY_VALUE.JSON_LOOSE.JSON_NORMALIZE.JSON_OBJECT_FILTER_KEYS.JSON_OBJECT_TO_ARRAY.JSON_QUERY.KDF.LASTVAL.MASTER_GTID_WAIT.MASTER_POS_WAIT.MEDIAN.NATURAL_SORT_KEY.NEXTVAL.NVL.NVL2.OLD_PASSWORD.PASSWORD.PERCENTILE_CONT.PERCENTILE_DISC.ROWNUM.SETVAL.SFORMAT.SYS_GUID.TO_CHAR.TRIM_ORACLE.VALUE`.split(`.`),je=[`DELETE_DOMAIN_ID`,`DO_DOMAIN_IDS`,`IGNORE_DOMAIN_IDS`,`IGNORE_SERVER_IDS`,`MASTER_HEARTBEAT_PERIOD`,`OFFSET`,`PAGE_CHECKSUM`,`PARSE_VCOL_EXPR`,`POSITION`,`REF_SYSTEM_ID`,`RETURNING`,`SLOW`,`STATS_AUTO_RECALC`,`STATS_PERSISTENT`,`STATS_SAMPLE_PAGES`,`SEQUENCE`,`SYSTEM_TIME`,`SYSTEM_VERSIONING`,`WITHOUT`],w=e=>e.filter(e=>!ke.has(e)),T=e=>[...new Set(e)],E=v({...S,id:`maria`,label:`MariaDB`,dataTypes:[...Ee,`inet4`,`inet6`,`uuid`],functions:T([...w(Ce),...Ae]).sort(),reservedWords:T([...w(we),...je,...Te])}),D=e=>`"${e.replaceAll(`"`,`""`)}"`,Me=(e,t)=>`${D(e)}.${D(t)}`,O=e=>`'${e.replace(/'/g,`''`)}'`,Ne=`n.nspname NOT LIKE 'pg\\_%' AND n.nspname <> 'information_schema'`;async function Pe(e,t,n){return(await e(`SELECT c.relname FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
102
|
+
`)}\n)${o.length?` `+o.join(` `):``};`}}}var S={id:`mysql`,label:`MySQL`,capabilities:{multipleDatabases:!0,schemas:!1,users:!0,procedures:!0,functions:!0,triggers:!0,events:!0,processList:!0,variables:!0,status:!0,flush:!0,tableProperties:!0,implicitCommitDdl:!0,transactions:!0},introspect:xe,ddl:Oe,identifierQuote:"`",defaultPort:3306,queries:Se,syntax:De,dataTypes:Ee,functions:Ce,reservedWords:[...we,...Te]},C=v(S),ke=new Set(`REGEXP_LIKE.JSON_SCHEMA_VALIDATION_REPORT.JSON_STORAGE_FREE.JSON_STORAGE_SIZE.STATEMENT_DIGEST.STATEMENT_DIGEST_TEXT.VALIDATE_PASSWORD_STRENGTH.ICU_VERSION.ROLES_GRAPHML.ANY_VALUE.BIN_TO_UUID.UUID_TO_BIN.IS_UUID.GROUPING.FORMAT_BYTES.FORMAT_PICO_TIME.PS_CURRENT_THREAD_ID.PS_THREAD_ID.SOURCE_POS_WAIT.WAIT_FOR_EXECUTED_GTID_SET.ST_GEOHASH.ST_LATITUDE.ST_LONGITUDE.ST_MAKEENVELOPE.ST_SIMPLIFY.ST_TRANSFORM.ST_VALIDATE.ST_SWAPXY.CUBE.CUME_DIST.DENSE_RANK.EMPTY.FIRST_VALUE.GENERATED.GET.GROUPS.IO_AFTER_GTIDS.IO_BEFORE_GTIDS.JSON_TABLE.LAG.LAST_VALUE.LATERAL.LEAD.NTH_VALUE.NTILE.OF.OPTIMIZER_COSTS.PERCENT_RANK.RANK.STORED.SYSTEM.VIRTUAL`.split(`.`)),Ae=`ADD_MONTHS.BINLOG_GTID_POS.COLUMN_ADD.COLUMN_CHECK.COLUMN_CREATE.COLUMN_DELETE.COLUMN_EXISTS.COLUMN_GET.COLUMN_JSON.COLUMN_LIST.CRC32C.DECODE.DECODE_ORACLE.DES_DECRYPT.DES_ENCRYPT.ENCODE.ENCRYPT.JSON_ARRAY_INTERSECT.JSON_COMPACT.JSON_DETAILED.JSON_EQUALS.JSON_EXISTS.JSON_KEY_VALUE.JSON_LOOSE.JSON_NORMALIZE.JSON_OBJECT_FILTER_KEYS.JSON_OBJECT_TO_ARRAY.JSON_QUERY.KDF.LASTVAL.MASTER_GTID_WAIT.MASTER_POS_WAIT.MEDIAN.NATURAL_SORT_KEY.NEXTVAL.NVL.NVL2.OLD_PASSWORD.PASSWORD.PERCENTILE_CONT.PERCENTILE_DISC.ROWNUM.SETVAL.SFORMAT.SYS_GUID.TO_CHAR.TRIM_ORACLE.VALUE`.split(`.`),je=[`DELETE_DOMAIN_ID`,`DO_DOMAIN_IDS`,`IGNORE_DOMAIN_IDS`,`IGNORE_SERVER_IDS`,`MASTER_HEARTBEAT_PERIOD`,`OFFSET`,`PAGE_CHECKSUM`,`PARSE_VCOL_EXPR`,`POSITION`,`REF_SYSTEM_ID`,`RETURNING`,`SLOW`,`STATS_AUTO_RECALC`,`STATS_PERSISTENT`,`STATS_SAMPLE_PAGES`,`SEQUENCE`,`SYSTEM_TIME`,`SYSTEM_VERSIONING`,`WITHOUT`],w=e=>e.filter(e=>!ke.has(e)),T=e=>[...new Set(e)],E=v({...S,id:`maria`,label:`MariaDB`,dataTypes:[...Ee,`inet4`,`inet6`,`uuid`],functions:T([...w(Ce),...Ae]).sort(),reservedWords:T([...w(we),...je,...Te])}),D=e=>`"${e.replaceAll(`"`,`""`)}"`,Me=(e,t)=>`${D(e)}.${D(t)}`,O=e=>`'${e.replace(/'/g,`''`)}'`,Ne=`n.nspname NOT LIKE 'pg\\_%' AND n.nspname <> 'information_schema'`;async function Pe(e,t,n){return(await e(`SELECT c.relname FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
103
103
|
WHERE n.nspname = ${O(t)} AND c.relkind IN (${n.map(O).join(`, `)}) ORDER BY c.relname`)).records.map(e=>m(e[0]))}async function Fe(e,t,n){return(await e(`SELECT DISTINCT p.proname FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace
|
|
104
104
|
WHERE n.nspname = ${O(t)} AND p.prokind = ${O(n)} ORDER BY p.proname`)).records.map(e=>m(e[0]))}async function k(e,t,n){return p(await e(`SELECT c.relname AS table_name, a.attname AS name,
|
|
105
105
|
format_type(a.atttypid, a.atttypmod) AS type,
|
|
@@ -184,7 +184,7 @@ EXECUTE FUNCTION "{0}"."<trigger_function>"();`,CREATE_VIEW:`CREATE VIEW "{0}"."
|
|
|
184
184
|
{2};`,ALTER_PROCEDURE:`{2}`,ALTER_FUNCTION:`{2}`,ALTER_TRIGGER:`DROP TRIGGER IF EXISTS "{1}" ON "{0}"."{3}";
|
|
185
185
|
{2};`,SHOW_PROCESS_LIST:`SELECT pid AS "Id", usename AS "User", COALESCE(client_addr::text, 'local') AS "Host", datname AS "db", COALESCE(state, '') AS "Command", COALESCE(EXTRACT(EPOCH FROM (now() - query_start))::bigint, 0) AS "Time", COALESCE(wait_event_type || ': ' || wait_event, '') AS "State", query AS "Info" FROM pg_stat_activity WHERE backend_type = 'client backend' ORDER BY pid`,KILL_QUERY:`SELECT pg_terminate_backend({0})`,SHOW_VARIABLES:`SELECT name AS "Variable_name", setting AS "Value" FROM pg_settings ORDER BY name`,SHOW_GLOBAL_VARIABLES:`SELECT name AS "Variable_name", COALESCE(reset_val, setting) AS "Value" FROM pg_settings ORDER BY name`,SHOW_SESSION_VARIABLES:`SELECT name AS "Variable_name", setting AS "Value" FROM pg_settings ORDER BY name`,CREATE_SCHEMA:`CREATE SCHEMA "{0}"`,DROP_SCHEMA:`DROP SCHEMA "{0}" CASCADE`,COPY_TABLE_STRUCTURE:`CREATE TABLE "{2}"."{3}" (LIKE "{0}"."{1}" INCLUDING ALL)`,COPY_TABLE_DATA:`INSERT INTO "{2}"."{3}" SELECT * FROM "{0}"."{1}"`,DISABLE_FK_CHECKS:`SET session_replication_role = 'replica'`,ENABLE_FK_CHECKS:`SET session_replication_role = 'origin'`},Ge=`ASCII.BTRIM.CHAR_LENGTH.CHR.CONCAT.CONCAT_WS.FORMAT.INITCAP.LEFT.LENGTH.LOWER.LPAD.LTRIM.MD5.POSITION.QUOTE_IDENT.QUOTE_LITERAL.REGEXP_MATCHES.REGEXP_REPLACE.REGEXP_SPLIT_TO_ARRAY.REPEAT.REPLACE.REVERSE.RIGHT.RPAD.RTRIM.SPLIT_PART.STRING_AGG.STRING_TO_ARRAY.STRPOS.SUBSTR.SUBSTRING.TRANSLATE.TRIM.UPPER.ABS.CBRT.CEIL.CEILING.DIV.EXP.FLOOR.GCD.LCM.LN.LOG.LOG10.MOD.PI.POWER.RADIANS.RANDOM.ROUND.SIGN.SQRT.TRUNC.WIDTH_BUCKET.AGE.CLOCK_TIMESTAMP.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.DATE_PART.DATE_TRUNC.EXTRACT.ISFINITE.JUSTIFY_DAYS.JUSTIFY_HOURS.LOCALTIME.LOCALTIMESTAMP.MAKE_DATE.MAKE_INTERVAL.MAKE_TIMESTAMP.NOW.STATEMENT_TIMESTAMP.TO_CHAR.TO_DATE.TO_TIMESTAMP.ARRAY_AGG.AVG.BOOL_AND.BOOL_OR.COUNT.EVERY.JSON_AGG.JSONB_AGG.JSON_OBJECT_AGG.MAX.MIN.PERCENTILE_CONT.PERCENTILE_DISC.STDDEV.SUM.VARIANCE.ROW_NUMBER.RANK.DENSE_RANK.PERCENT_RANK.CUME_DIST.NTILE.LAG.LEAD.FIRST_VALUE.LAST_VALUE.NTH_VALUE.COALESCE.NULLIF.GREATEST.LEAST.CAST.GEN_RANDOM_UUID.CURRENT_USER.CURRENT_DATABASE.CURRENT_SCHEMA.PG_TYPEOF.VERSION.ARRAY_LENGTH.ARRAY_TO_STRING.ARRAY_APPEND.ARRAY_REMOVE.ARRAY_POSITION.CARDINALITY.UNNEST.JSON_BUILD_OBJECT.JSONB_BUILD_OBJECT.JSON_BUILD_ARRAY.JSONB_BUILD_ARRAY.JSON_EXTRACT_PATH.JSONB_EXTRACT_PATH.JSON_EXTRACT_PATH_TEXT.JSONB_EXTRACT_PATH_TEXT.JSONB_SET.JSONB_PRETTY.JSON_TYPEOF.JSONB_TYPEOF.JSON_ARRAY_LENGTH.JSONB_ARRAY_LENGTH.JSON_EACH.JSONB_EACH.TO_JSON.TO_JSONB.ROW_TO_JSON`.split(`.`),Ke=`ALL.ANALYSE.ANALYZE.AND.ANY.ARRAY.AS.ASC.ASYMMETRIC.BOTH.CASE.CAST.CHECK.COLLATE.COLUMN.CONSTRAINT.CREATE.CURRENT_CATALOG.CURRENT_DATE.CURRENT_ROLE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.DEFAULT.DEFERRABLE.DESC.DISTINCT.DO.ELSE.END.EXCEPT.FALSE.FETCH.FOR.FOREIGN.FROM.GRANT.GROUP.GROUP BY.HAVING.IN.INITIALLY.INTERSECT.INTO.LATERAL.LEADING.LIMIT.LOCALTIME.LOCALTIMESTAMP.NOT.NULL.OFFSET.ON.ONLY.OR.ORDER.ORDER BY.PLACING.PRIMARY.REFERENCES.RETURNING.SELECT.SESSION_USER.SOME.SYMMETRIC.TABLE.THEN.TO.TRAILING.TRUE.UNION.UNIQUE.USER.USING.VARIADIC.WHEN.WHERE.WINDOW.WITH.ALTER.BEGIN.BETWEEN.BY.CASCADE.COMMENT.COMMIT.CROSS.DATABASE.DELETE.DROP.EXISTS.EXPLAIN.FULL.FUNCTION.IF.ILIKE.INDEX.INNER.INSERT.INSERT INTO.IS.JOIN.KEY.LEFT.LIKE.MATERIALIZED.NATURAL.OUTER.OVER.PARTITION.PROCEDURE.RECURSIVE.RETURNS.RIGHT.ROLLBACK.SCHEMA.SEQUENCE.SET.SHOW.TRIGGER.TRUNCATE.TYPE.UPDATE.VACUUM.VALUES.VIEW`.split(`.`),qe=`bigint.bigserial.bit.boolean.box.bytea.char.character.character varying.cidr.circle.date.decimal.double precision.inet.int.integer.interval.json.jsonb.line.macaddr.money.numeric.path.point.polygon.real.serial.smallint.smallserial.text.time.timestamp.timestamptz.timetz.tsquery.tsvector.uuid.varchar.xml`.split(`.`),Je={hashComments:!1,dashCommentNeedsSpace:!1,backslashEscapes:!1,doubleQuoteIsIdentifier:!0,bracketIdentifiers:!1,delimiterCommand:!1,dollarQuotes:!0,goBatchSeparator:!1,limitStyle:`limit`,plsqlBlocks:!1};function Ye(e){let{quoteIdentifier:t,quoteLiteral:n,qualify:i}=e;return{...r(e,{addColumn:`ADD COLUMN`,modify:`postgres`,qualifiedIndexNames:!1,dropIndexOnTable:!1,unqualifiedIndexTarget:!1,multiRowInsert:!0,mysqlAttributes:!1,fulltext:!1,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=_(e.name,`untitled`),a=i(e.database,r),o=e.columns.filter(e=>e.primaryKey),s=e.columns.map(e=>{let n=` ${t(_(e.name,`column`))} ${e.type}`;return e.length&&(n+=`(${e.length})`),e.autoIncrement&&(n+=` GENERATED BY DEFAULT AS IDENTITY`),e.notNull&&(n+=` NOT NULL`),e.defaultValue&&(n+=` DEFAULT ${e.defaultValue}`),n});o.length>0&&s.push(` PRIMARY KEY (${o.map(e=>t(e.name)).join(`, `)})`);let c=[`CREATE TABLE ${a} (\n${s.join(`,
|
|
186
186
|
`)}\n);`];for(let n of e.indexes){if(n.type===`PRIMARY`||n.columns.length===0)continue;let e=n.type===`UNIQUE`?`UNIQUE `:``,i=n.type===`FULLTEXT`?` -- FULLTEXT is MySQL-only; consider a GIN index on to_tsvector()`:``,o=t(_(n.name,`${r}_${n.columns.join(`_`)}_idx`));c.push(`CREATE ${e}INDEX ${o} ON ${a} (${n.columns.map(t).join(`, `)});${i}`)}e.options.comment&&c.push(`COMMENT ON TABLE ${a} IS ${n(e.options.comment)};`);for(let r of e.columns)r.comment&&c.push(`COMMENT ON COLUMN ${a}.${t(_(r.name,`column`))} IS ${n(r.comment)};`);return c.join(`
|
|
187
|
-
`)}}}var N={id:`postgres`,label:`PostgreSQL`,capabilities:{multipleDatabases:!1,users:!1,procedures:!0,functions:!0,triggers:!0,events:!1,processList:!0,variables:!0,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!1,transactions:!0},ddl:Ye,introspect:He,tree:Ue,defaultPort:5432,binaryLiteral:e=>`'\\x${e}'::bytea`,booleanKeywords:!0,identifierQuote:`"`,queries:We,syntax:Je,dataTypes:qe,functions:Ge,reservedWords:Ke},Xe=v(N),P=e=>`"${e.replaceAll(`"`,`""`)}"`,F=e=>`'${e.replace(/'/g,`''`)}'`,I=e=>`${P(e)}.sqlite_master`;async function L(e,t,n){return(await e(`SELECT name FROM ${I(t)} WHERE type = ${F(n)} AND name NOT LIKE 'sqlite_%' ORDER BY name`)).records.map(e=>m(e[0]))}async function R(e,t,n){return p(await e(`PRAGMA ${P(t)}.table_info(${P(n)})`)).map(e=>({cid:Number(e.cid),name:m(e.name),type:m(e.type),notnull:Number(e.notnull)===1,dflt_value:h(e.dflt_value),pk:Number(e.pk)}))}async function Ze(e,t,n){return m((await e(`SELECT sql FROM ${I(t)} WHERE type = 'table' AND name = ${F(n)}`)).records[0]?.[0])}function z(e){return e.filter(e=>e.pk>0).sort((e,t)=>e.pk-t.pk).map(e=>e.name)}async function B(e,t,n,r){let i=[],a=z(r);a.length>0&&i.push({name:`PRIMARY`,type:`PRIMARY`,columns:a});let o=p(await e(`PRAGMA ${P(t)}.index_list(${P(n)})`));for(let n of o){if(m(n.origin)===`pk`)continue;let r=m(n.name),a=p(await e(`PRAGMA ${P(t)}.index_info(${P(r)})`));i.push({name:r,type:Number(n.unique)===1?`UNIQUE`:`INDEX`,columns:a.sort((e,t)=>Number(e.seqno)-Number(t.seqno)).map(e=>m(e.name,`<expr>`))})}return i}async function Qe(e,t,n){let r=await R(e,t,n),i=await B(e,t,n,r),a=await Ze(e,t,n),o=z(r),s=/AUTOINCREMENT/i.test(a),c=new Set,l=new Set;for(let e of i)e.type!==`PRIMARY`&&(e.type===`UNIQUE`&&e.columns.length===1?c.add(e.columns[0]):l.add(e.columns[0]));return r.map(e=>{let t=o.length===1&&o[0]===e.name&&/^INTEGER$/i.test(e.type);return{name:e.name,type:e.type,nullable:!e.notnull&&e.pk===0,key:e.pk>0?`PRI`:c.has(e.name)?`UNI`:l.has(e.name)?`MUL`:``,defaultValue:e.dflt_value,extra:t&&s?`auto_increment`:``,comment:``,collation:null}})}var $e={TABLE:`table`,VIEW:`view`,TRIGGER:`trigger`},et={async listDatabases(e){return p(await e(`PRAGMA database_list`)).map(e=>m(e.name)).filter(e=>e!==`temp`)},async listTables(e,t){return(await L(e,t,`table`)).map(e=>({name:e,engine:null,rows:null,collation:null,autoIncrement:null,comment:``,createTime:null,updateTime:null,dataLength:null}))},listViews:(e,t)=>L(e,t,`view`),listProcedures:async()=>[],listFunctions:async()=>[],listTriggers:(e,t)=>L(e,t,`trigger`),listEvents:async()=>[],listColumns:Qe,async listIndexes(e,t,n){return B(e,t,n,await R(e,t,n))},async listAllColumns(e,t){let n=new Map;for(let r of await L(e,t,`table`))n.set(r,await Qe(e,t,r));return n},async listAllIndexes(e,t){let n=new Map;for(let r of await L(e,t,`table`))n.set(r,await B(e,t,r,await R(e,t,r)));return n},async listForeignKeys(e,t){let n=[];for(let r of await L(e,t,`table`)){let i=p(await e(`PRAGMA ${P(t)}.foreign_key_list(${P(r)})`));for(let e of i)n.push({name:`fk_${r}_${e.id}`,table:r,column:m(e.from),refTable:m(e.table),refColumn:m(e.to)})}return n},async getTableInfo(e,t,n){return(await e(`SELECT 1 FROM ${I(t)} WHERE type = 'table' AND name = ${F(n)}`)).records.length===0?null:{name:n,engine:null,rows:g((await e(`SELECT COUNT(*) FROM ${P(t)}.${P(n)}`)).records[0]?.[0]),collation:null,autoIncrement:null,comment:``,createTime:null,updateTime:null,dataLength:null}},async getPrimaryKeys(e,t,n){return z(await R(e,t,n))},async getCreateStatement(e,t,n,r){let i=$e[n];return i?h((await e(`SELECT sql FROM ${I(t)} WHERE type = ${F(i)} AND name = ${F(r)}`)).records[0]?.[0]):null}},tt={SELECT_COUNT:`SELECT COUNT(1) as cnt FROM "{0}"."{1}"`,SHOW_FULL_FIELDS:`PRAGMA "{0}".table_info("{1}")`,SHOW_COLUMNS:`PRAGMA "{0}".table_info("{1}")`,SHOW_DATABASE_VIEWS:`SELECT name FROM "{0}".sqlite_master WHERE type = 'view' ORDER BY name`,SHOW_DATABASE_TABLES:`SELECT name FROM "{0}".sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name`,SHOW_DATABASE:`PRAGMA database_list`,SHOW_DATABASES:`PRAGMA database_list`,ADD_INDEX:`CREATE {3} INDEX "{0}"."{2}" ON "{1}"({4})`,SHOW_INDEX:`PRAGMA "{0}".index_info("{2}")`,SHOW_INDEXES:`PRAGMA "{0}".index_list("{1}")`,DROP_INDEX:`DROP INDEX "{0}"."{2}"`,DROP_TRIGGER:`DROP TRIGGER {2} "{0}"."{1}"`,DROP_VIEW:`DROP VIEW {2} "{0}"."{1}"`,SHOW_TRIGGERS:`SELECT name, tbl_name, sql FROM "{0}".sqlite_master WHERE type = 'trigger' ORDER BY name`,SHOW_VIEWS:`SELECT name AS View_name, sql AS View_definition FROM "{0}".sqlite_master WHERE type = 'view' ORDER BY name`,SHOW_ALL_TABLE_STATUS:`SELECT name, type FROM "{0}".sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name`,SHOW_TABLE_STATUS:`SELECT name, type FROM "{0}".sqlite_master WHERE type = 'table' AND name = '{1}'`,INSERT_TABLE:`INSERT INTO "{0}"."{1}" ({2}) VALUES({3});`,INSERT_TABLE_BULK:`INSERT INTO "{0}"."{1}" ({2}) VALUES {3};`,INSERT_DEFAULT_VALUES:`INSERT INTO "{0}"."{1}" DEFAULT VALUES;`,INSERT_ON_DUPLICATE:`INSERT INTO "{0}"."{1}" ({2}) VALUES({3}) ON CONFLICT DO UPDATE SET {4}`,UPDATE_TABLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3};`,UPDATE_TABLE_SINGLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3}`,START_TRANSACTION:`BEGIN`,COMMIT:`COMMIT`,ROLLBACK:`ROLLBACK`,DELETE_TABLE:`DELETE FROM "{0}"."{1}" WHERE {2};`,SELECT_TABLE:`SELECT {2} FROM "{0}"."{1}" {3};`,TRUNCATE_TABLE:`DELETE FROM "{0}"."{1}"`,RENAME_TABLE:`ALTER TABLE "{0}"."{1}" RENAME TO "{3}"`,DROP_TABLE:`DROP TABLE {2} "{0}"."{1}"`,TABLE_CREATE_INFO:`SELECT sql FROM "{0}".sqlite_master WHERE type = 'table' AND name = '{1}'`,TABLE_KEYS_INFO:`PRAGMA "{0}".index_list("{1}")`,INDEX_KEYS_INFO:`PRAGMA "{0}".index_info("{2}")`,CREATE_TRIGGER:`CREATE TRIGGER "{0}"."{1}"
|
|
187
|
+
`)}}}var N={id:`postgres`,label:`PostgreSQL`,capabilities:{multipleDatabases:!1,schemas:!0,users:!1,procedures:!0,functions:!0,triggers:!0,events:!1,processList:!0,variables:!0,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!1,transactions:!0},ddl:Ye,introspect:He,tree:Ue,defaultPort:5432,binaryLiteral:e=>`'\\x${e}'::bytea`,booleanKeywords:!0,identifierQuote:`"`,queries:We,syntax:Je,dataTypes:qe,functions:Ge,reservedWords:Ke},Xe=v(N),P=e=>`"${e.replaceAll(`"`,`""`)}"`,F=e=>`'${e.replace(/'/g,`''`)}'`,I=e=>`${P(e)}.sqlite_master`;async function L(e,t,n){return(await e(`SELECT name FROM ${I(t)} WHERE type = ${F(n)} AND name NOT LIKE 'sqlite_%' ORDER BY name`)).records.map(e=>m(e[0]))}async function R(e,t,n){return p(await e(`PRAGMA ${P(t)}.table_info(${P(n)})`)).map(e=>({cid:Number(e.cid),name:m(e.name),type:m(e.type),notnull:Number(e.notnull)===1,dflt_value:h(e.dflt_value),pk:Number(e.pk)}))}async function Ze(e,t,n){return m((await e(`SELECT sql FROM ${I(t)} WHERE type = 'table' AND name = ${F(n)}`)).records[0]?.[0])}function z(e){return e.filter(e=>e.pk>0).sort((e,t)=>e.pk-t.pk).map(e=>e.name)}async function B(e,t,n,r){let i=[],a=z(r);a.length>0&&i.push({name:`PRIMARY`,type:`PRIMARY`,columns:a});let o=p(await e(`PRAGMA ${P(t)}.index_list(${P(n)})`));for(let n of o){if(m(n.origin)===`pk`)continue;let r=m(n.name),a=p(await e(`PRAGMA ${P(t)}.index_info(${P(r)})`));i.push({name:r,type:Number(n.unique)===1?`UNIQUE`:`INDEX`,columns:a.sort((e,t)=>Number(e.seqno)-Number(t.seqno)).map(e=>m(e.name,`<expr>`))})}return i}async function Qe(e,t,n){let r=await R(e,t,n),i=await B(e,t,n,r),a=await Ze(e,t,n),o=z(r),s=/AUTOINCREMENT/i.test(a),c=new Set,l=new Set;for(let e of i)e.type!==`PRIMARY`&&(e.type===`UNIQUE`&&e.columns.length===1?c.add(e.columns[0]):l.add(e.columns[0]));return r.map(e=>{let t=o.length===1&&o[0]===e.name&&/^INTEGER$/i.test(e.type);return{name:e.name,type:e.type,nullable:!e.notnull&&e.pk===0,key:e.pk>0?`PRI`:c.has(e.name)?`UNI`:l.has(e.name)?`MUL`:``,defaultValue:e.dflt_value,extra:t&&s?`auto_increment`:``,comment:``,collation:null}})}var $e={TABLE:`table`,VIEW:`view`,TRIGGER:`trigger`},et={async listDatabases(e){return p(await e(`PRAGMA database_list`)).map(e=>m(e.name)).filter(e=>e!==`temp`)},async listTables(e,t){return(await L(e,t,`table`)).map(e=>({name:e,engine:null,rows:null,collation:null,autoIncrement:null,comment:``,createTime:null,updateTime:null,dataLength:null}))},listViews:(e,t)=>L(e,t,`view`),listProcedures:async()=>[],listFunctions:async()=>[],listTriggers:(e,t)=>L(e,t,`trigger`),listEvents:async()=>[],listColumns:Qe,async listIndexes(e,t,n){return B(e,t,n,await R(e,t,n))},async listAllColumns(e,t){let n=new Map;for(let r of await L(e,t,`table`))n.set(r,await Qe(e,t,r));return n},async listAllIndexes(e,t){let n=new Map;for(let r of await L(e,t,`table`))n.set(r,await B(e,t,r,await R(e,t,r)));return n},async listForeignKeys(e,t){let n=[];for(let r of await L(e,t,`table`)){let i=p(await e(`PRAGMA ${P(t)}.foreign_key_list(${P(r)})`));for(let e of i)n.push({name:`fk_${r}_${e.id}`,table:r,column:m(e.from),refTable:m(e.table),refColumn:m(e.to)})}return n},async getTableInfo(e,t,n){return(await e(`SELECT 1 FROM ${I(t)} WHERE type = 'table' AND name = ${F(n)}`)).records.length===0?null:{name:n,engine:null,rows:g((await e(`SELECT COUNT(*) FROM ${P(t)}.${P(n)}`)).records[0]?.[0]),collation:null,autoIncrement:null,comment:``,createTime:null,updateTime:null,dataLength:null}},async getPrimaryKeys(e,t,n){return z(await R(e,t,n))},async getCreateStatement(e,t,n,r){let i=$e[n];return i?h((await e(`SELECT sql FROM ${I(t)} WHERE type = ${F(i)} AND name = ${F(r)}`)).records[0]?.[0]):null}},tt={SELECT_COUNT:`SELECT COUNT(1) as cnt FROM "{0}"."{1}"`,SHOW_FULL_FIELDS:`PRAGMA "{0}".table_info("{1}")`,SHOW_COLUMNS:`PRAGMA "{0}".table_info("{1}")`,SHOW_DATABASE_VIEWS:`SELECT name FROM "{0}".sqlite_master WHERE type = 'view' ORDER BY name`,SHOW_DATABASE_TABLES:`SELECT name FROM "{0}".sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name`,SHOW_DATABASE:`PRAGMA database_list`,SHOW_DATABASES:`PRAGMA database_list`,ADD_INDEX:`CREATE {3} INDEX "{0}"."{2}" ON "{1}"({4})`,SHOW_INDEX:`PRAGMA "{0}".index_info("{2}")`,SHOW_INDEXES:`PRAGMA "{0}".index_list("{1}")`,DROP_INDEX:`DROP INDEX "{0}"."{2}"`,DROP_TRIGGER:`DROP TRIGGER {2} "{0}"."{1}"`,DROP_VIEW:`DROP VIEW {2} "{0}"."{1}"`,SHOW_TRIGGERS:`SELECT name, tbl_name, sql FROM "{0}".sqlite_master WHERE type = 'trigger' ORDER BY name`,SHOW_VIEWS:`SELECT name AS View_name, sql AS View_definition FROM "{0}".sqlite_master WHERE type = 'view' ORDER BY name`,SHOW_ALL_TABLE_STATUS:`SELECT name, type FROM "{0}".sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name`,SHOW_TABLE_STATUS:`SELECT name, type FROM "{0}".sqlite_master WHERE type = 'table' AND name = '{1}'`,INSERT_TABLE:`INSERT INTO "{0}"."{1}" ({2}) VALUES({3});`,INSERT_TABLE_BULK:`INSERT INTO "{0}"."{1}" ({2}) VALUES {3};`,INSERT_DEFAULT_VALUES:`INSERT INTO "{0}"."{1}" DEFAULT VALUES;`,INSERT_ON_DUPLICATE:`INSERT INTO "{0}"."{1}" ({2}) VALUES({3}) ON CONFLICT DO UPDATE SET {4}`,UPDATE_TABLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3};`,UPDATE_TABLE_SINGLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3}`,START_TRANSACTION:`BEGIN`,COMMIT:`COMMIT`,ROLLBACK:`ROLLBACK`,DELETE_TABLE:`DELETE FROM "{0}"."{1}" WHERE {2};`,SELECT_TABLE:`SELECT {2} FROM "{0}"."{1}" {3};`,TRUNCATE_TABLE:`DELETE FROM "{0}"."{1}"`,RENAME_TABLE:`ALTER TABLE "{0}"."{1}" RENAME TO "{3}"`,DROP_TABLE:`DROP TABLE {2} "{0}"."{1}"`,TABLE_CREATE_INFO:`SELECT sql FROM "{0}".sqlite_master WHERE type = 'table' AND name = '{1}'`,TABLE_KEYS_INFO:`PRAGMA "{0}".index_list("{1}")`,INDEX_KEYS_INFO:`PRAGMA "{0}".index_info("{2}")`,CREATE_TRIGGER:`CREATE TRIGGER "{0}"."{1}"
|
|
188
188
|
BEFORE
|
|
189
189
|
-- AFTER
|
|
190
190
|
INSERT
|
|
@@ -199,8 +199,8 @@ END;`,CREATE_VIEW:`CREATE VIEW "{0}"."{1}" AS
|
|
|
199
199
|
/* SQL SELECT Statement */`,SHOW_CREATE_TABLE:`SELECT sql FROM "{0}".sqlite_master WHERE type = 'table' AND name = '{1}'`,SHOW_CREATE_VIEW:`SELECT sql FROM "{0}".sqlite_master WHERE type = 'view' AND name = '{1}'`,SHOW_CREATE_TRIGGER:`SELECT sql FROM "{0}".sqlite_master WHERE type = 'trigger' AND name = '{1}'`,CREATE_TABLE:`CREATE TABLE "{0}"."{1}" {2}`,ALTER_TABLE:`ALTER TABLE "{0}"."{1}" {2}`,ALTER_VIEW:`DROP VIEW IF EXISTS "{0}"."{1}";
|
|
200
200
|
{2};`,ALTER_TRIGGER:`DROP TRIGGER IF EXISTS "{0}"."{1}";
|
|
201
201
|
{2};`,COPY_TABLE_STRUCTURE:`CREATE TABLE "{2}"."{3}" AS SELECT * FROM "{0}"."{1}" WHERE 0`,COPY_TABLE_DATA:`INSERT INTO "{2}"."{3}" SELECT * FROM "{0}"."{1}"`,DISABLE_FK_CHECKS:`PRAGMA foreign_keys = OFF`,ENABLE_FK_CHECKS:`PRAGMA foreign_keys = ON`},nt=`ABS.CHANGES.CHAR.COALESCE.CONCAT.CONCAT_WS.FORMAT.GLOB.HEX.IFNULL.IIF.INSTR.LAST_INSERT_ROWID.LENGTH.LIKE.LIKELIHOOD.LIKELY.LOWER.LTRIM.MAX.MIN.NULLIF.OCTET_LENGTH.PRINTF.QUOTE.RANDOM.RANDOMBLOB.REPLACE.ROUND.RTRIM.SIGN.SOUNDEX.SQLITE_COMPILEOPTION_GET.SQLITE_COMPILEOPTION_USED.SQLITE_OFFSET.SQLITE_SOURCE_ID.SQLITE_VERSION.SUBSTR.SUBSTRING.TOTAL_CHANGES.TRIM.TYPEOF.UNHEX.UNICODE.UNLIKELY.UPPER.ZEROBLOB.DATE.TIME.DATETIME.JULIANDAY.UNIXEPOCH.STRFTIME.TIMEDIFF.AVG.COUNT.GROUP_CONCAT.STRING_AGG.SUM.TOTAL.ROW_NUMBER.RANK.DENSE_RANK.PERCENT_RANK.CUME_DIST.NTILE.LAG.LEAD.FIRST_VALUE.LAST_VALUE.NTH_VALUE.ACOS.ACOSH.ASIN.ASINH.ATAN.ATAN2.ATANH.CEIL.CEILING.COS.COSH.DEGREES.EXP.FLOOR.LN.LOG.LOG10.LOG2.MOD.PI.POW.POWER.RADIANS.SIN.SINH.SQRT.TAN.TANH.TRUNC.JSON.JSONB.JSON_ARRAY.JSON_ARRAY_LENGTH.JSON_EACH.JSON_ERROR_POSITION.JSON_EXTRACT.JSON_INSERT.JSON_OBJECT.JSON_PATCH.JSON_PRETTY.JSON_QUOTE.JSON_REMOVE.JSON_REPLACE.JSON_SET.JSON_TREE.JSON_TYPE.JSON_VALID.JSON_GROUP_ARRAY.JSON_GROUP_OBJECT`.split(`.`),rt=`ABORT.ACTION.ADD.AFTER.ALL.ALTER.ALWAYS.ANALYZE.AND.AS.ASC.ATTACH.AUTOINCREMENT.BEFORE.BEGIN.BETWEEN.BY.CASCADE.CASE.CAST.CHECK.COLLATE.COLUMN.COMMIT.CONFLICT.CONSTRAINT.CREATE.CROSS.CURRENT.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.DATABASE.DEFAULT.DEFERRABLE.DEFERRED.DELETE.DESC.DETACH.DISTINCT.DO.DROP.EACH.ELSE.END.ESCAPE.EXCEPT.EXCLUDE.EXCLUSIVE.EXISTS.EXPLAIN.FAIL.FILTER.FIRST.FOLLOWING.FOR.FOREIGN.FROM.FULL.GENERATED.GLOB.GROUP BY.GROUP.GROUPS.HAVING.IF.IGNORE.IMMEDIATE.IN.INDEX.INDEXED.INITIALLY.INNER.INSERT INTO.INSERT.INSTEAD.INTERSECT.INTO.IS.ISNULL.JOIN.KEY.LAST.LEFT.LIKE.LIMIT.MATCH.MATERIALIZED.NATURAL.NO.NOT.NOTHING.NOTNULL.NULL.NULLS.OF.OFFSET.ON CONFLICT.ON.OR.ORDER BY.ORDER.OTHERS.OUTER.OVER.PARTITION.PLAN.PRAGMA.PRECEDING.PRIMARY.QUERY.RAISE.RANGE.RECURSIVE.REFERENCES.REGEXP.REINDEX.RELEASE.RENAME.REPLACE.RESTRICT.RETURNING.RIGHT.ROLLBACK.ROW.ROWS.SAVEPOINT.SELECT.SET.TABLE.TEMP.TEMPORARY.THEN.TIES.TO.TRANSACTION.TRIGGER.TRUE.FALSE.UNBOUNDED.UNION.UNIQUE.UPDATE.USING.VACUUM.VALUES.VIEW.VIRTUAL.WHEN.WHERE.WINDOW.WITH.WITHOUT`.split(`.`),it=[`integer`,`int`,`real`,`text`,`blob`,`numeric`,`boolean`,`varchar`,`char`,`double`,`float`,`bigint`,`smallint`,`tinyint`,`date`,`datetime`,`timestamp`,`decimal`,`json`],at={hashComments:!1,dashCommentNeedsSpace:!1,backslashEscapes:!1,doubleQuoteIsIdentifier:!0,bracketIdentifiers:!0,delimiterCommand:!1,dollarQuotes:!1,goBatchSeparator:!1,limitStyle:`limit`,plsqlBlocks:!1};function ot(e){let{quoteIdentifier:t,qualify:n}=e;return{...r(e,{addColumn:`ADD COLUMN`,modify:`none`,qualifiedIndexNames:!0,dropIndexOnTable:!1,unqualifiedIndexTarget:!0,multiRowInsert:!0,mysqlAttributes:!1,fulltext:!1,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=e.columns.filter(e=>e.primaryKey),i=r.length===1&&r[0].type.toUpperCase()===`INTEGER`,a=e.columns.map(e=>{let n=` ${t(_(e.name,`column`))} ${e.type.toUpperCase()}`;return e.length&&!st(e,i)&&(n+=`(${e.length})`),st(e,i)&&(n+=` PRIMARY KEY`,e.autoIncrement&&(n+=` AUTOINCREMENT`)),e.notNull&&(n+=` NOT NULL`),e.defaultValue&&(n+=` DEFAULT ${e.defaultValue}`),e.comment&&(n+=` /* ${e.comment.replaceAll(`*/`,`* /`)} */`),n});!i&&r.length>0&&a.push(` PRIMARY KEY (${r.map(e=>t(e.name)).join(`, `)})`);let o=_(e.name,`untitled`),s=[`CREATE TABLE ${n(e.database,o)} (\n${a.join(`,
|
|
202
|
-
`)}\n);`];for(let r of e.indexes){if(r.type===`PRIMARY`||r.columns.length===0)continue;let i=r.type===`UNIQUE`?`UNIQUE `:``,a=r.type===`FULLTEXT`?` -- FULLTEXT is not supported by SQLite; created as a plain index`:``,c=n(e.database,_(
|
|
203
|
-
`)}}}function st(e,t){return t&&e.primaryKey}var V={id:`sqlite`,label:`SQLite`,capabilities:{multipleDatabases:!1,users:!1,procedures:!1,functions:!1,triggers:!0,events:!1,processList:!1,variables:!1,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!1,transactions:!0},ddl:ot,rowIdExpression:`rowid AS "_rowid_"`,introspect:et,identifierQuote:`"`,queries:tt,syntax:at,dataTypes:it,functions:nt,reservedWords:rt},ct=v(V),H=e=>`[${e.replaceAll(`]`,`]]`)}]`,lt=(e,t)=>`${H(e)}.${H(t)}`,U=e=>`'${e.replace(/'/g,`''`)}'`,ut=(e,t)=>`OBJECT_ID(${U(`${H(e)}.${H(t)}`)})`,dt=`s.name NOT IN ('sys', 'INFORMATION_SCHEMA', 'guest') AND s.schema_id < 16384`;async function W(e,t){return(await e(t)).records.map(e=>m(e[0]))}function ft(e,t,n,r){let i=e.toLowerCase();return[`varchar`,`char`,`varbinary`,`binary`].includes(i)?`${i}(${t===-1?`max`:t})`:[`nvarchar`,`nchar`].includes(i)?`${i}(${t===-1?`max`:t/2})`:[`decimal`,`numeric`].includes(i)?`${i}(${n},${r})`:[`datetime2`,`time`,`datetimeoffset`].includes(i)?`${i}(${r})`:i}async function G(e,t,n){return p(await e(`SELECT o.name AS table_name, c.name, ty.name AS type_name, c.max_length, c.precision, c.scale,
|
|
202
|
+
`)}\n);`];for(let r of e.indexes){if(r.type===`PRIMARY`||r.columns.length===0)continue;let i=r.type===`UNIQUE`?`UNIQUE `:``,a=r.type===`FULLTEXT`?` -- FULLTEXT is not supported by SQLite; created as a plain index`:``,c=/^sqlite_/i.test(r.name)?``:r.name,l=n(e.database,_(c,`${o}_${r.columns.join(`_`)}_idx`));s.push(`CREATE ${i}INDEX ${l} ON ${t(o)} (${r.columns.map(t).join(`, `)});${a}`)}return s.join(`
|
|
203
|
+
`)}}}function st(e,t){return t&&e.primaryKey}var V={id:`sqlite`,label:`SQLite`,capabilities:{multipleDatabases:!1,schemas:!1,users:!1,procedures:!1,functions:!1,triggers:!0,events:!1,processList:!1,variables:!1,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!1,transactions:!0},ddl:ot,rowIdExpression:`rowid AS "_rowid_"`,introspect:et,identifierQuote:`"`,queries:tt,syntax:at,dataTypes:it,functions:nt,reservedWords:rt},ct=v(V),H=e=>`[${e.replaceAll(`]`,`]]`)}]`,lt=(e,t)=>`${H(e)}.${H(t)}`,U=e=>`'${e.replace(/'/g,`''`)}'`,ut=(e,t)=>`OBJECT_ID(${U(`${H(e)}.${H(t)}`)})`,dt=`s.name NOT IN ('sys', 'INFORMATION_SCHEMA', 'guest') AND s.schema_id < 16384`;async function W(e,t){return(await e(t)).records.map(e=>m(e[0]))}function ft(e,t,n,r){let i=e.toLowerCase();return[`varchar`,`char`,`varbinary`,`binary`].includes(i)?`${i}(${t===-1?`max`:t})`:[`nvarchar`,`nchar`].includes(i)?`${i}(${t===-1?`max`:t/2})`:[`decimal`,`numeric`].includes(i)?`${i}(${n},${r})`:[`datetime2`,`time`,`datetimeoffset`].includes(i)?`${i}(${r})`:i}async function G(e,t,n){return p(await e(`SELECT o.name AS table_name, c.name, ty.name AS type_name, c.max_length, c.precision, c.scale,
|
|
204
204
|
c.is_nullable, d.definition AS default_value, c.is_identity, c.is_computed, c.collation_name,
|
|
205
205
|
CAST(ep.value AS NVARCHAR(4000)) AS comment
|
|
206
206
|
FROM sys.columns c
|
|
@@ -285,9 +285,9 @@ GO
|
|
|
285
285
|
GO
|
|
286
286
|
{2}`,ALTER_TRIGGER:`DROP TRIGGER IF EXISTS [{0}].[{1}];
|
|
287
287
|
GO
|
|
288
|
-
{2}`,SHOW_PROCESS_LIST:`SELECT s.session_id AS [Id], s.login_name AS [User], COALESCE(c.client_net_address, 'local') AS [Host], DB_NAME(s.database_id) AS [db], COALESCE(r.status, s.status) AS [Command], COALESCE(DATEDIFF(SECOND, r.start_time, GETDATE()), 0) AS [Time], COALESCE(r.wait_type, '') AS [State], t.text AS [Info] FROM sys.dm_exec_sessions s LEFT JOIN sys.dm_exec_connections c ON c.session_id = s.session_id LEFT JOIN sys.dm_exec_requests r ON r.session_id = s.session_id OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE s.is_user_process = 1 ORDER BY s.session_id`,KILL_QUERY:`KILL {0}`,SHOW_VARIABLES:`SELECT name AS [Variable_name], CAST(value_in_use AS NVARCHAR(100)) AS [Value] FROM sys.configurations ORDER BY name`,SHOW_GLOBAL_VARIABLES:`SELECT name AS [Variable_name], CAST(value AS NVARCHAR(100)) AS [Value] FROM sys.configurations ORDER BY name`,SHOW_SESSION_VARIABLES:`SELECT name AS [Variable_name], CAST(value_in_use AS NVARCHAR(100)) AS [Value] FROM sys.configurations ORDER BY name`,CREATE_SCHEMA:`CREATE SCHEMA [{0}]`,DROP_SCHEMA:`DROP SCHEMA [{0}]`,COPY_TABLE_STRUCTURE:`SELECT TOP 0 * INTO [{2}].[{3}] FROM [{0}].[{1}]`,COPY_TABLE_DATA:`INSERT INTO [{2}].[{3}] SELECT * FROM [{0}].[{1}]`,DISABLE_FK_CHECKS:`EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'`,ENABLE_FK_CHECKS:`EXEC sp_msforeachtable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL'`},bt=`ASCII.CHAR.CHARINDEX.CONCAT.CONCAT_WS.FORMAT.LEFT.LEN.LOWER.LTRIM.NCHAR.PATINDEX.QUOTENAME.REPLACE.REPLICATE.REVERSE.RIGHT.RTRIM.SPACE.STR.STRING_AGG.STRING_SPLIT.STUFF.SUBSTRING.TRANSLATE.TRIM.UNICODE.UPPER.ABS.CEILING.EXP.FLOOR.LOG.LOG10.PI.POWER.RAND.ROUND.SIGN.SQRT.SQUARE.CURRENT_TIMESTAMP.DATEADD.DATEDIFF.DATEDIFF_BIG.DATEFROMPARTS.DATENAME.DATEPART.DATETIMEFROMPARTS.DAY.EOMONTH.GETDATE.GETUTCDATE.ISDATE.MONTH.SYSDATETIME.SYSDATETIMEOFFSET.SYSUTCDATETIME.YEAR.AVG.COUNT.COUNT_BIG.MAX.MIN.STDEV.SUM.VAR.ROW_NUMBER.RANK.DENSE_RANK.NTILE.LAG.LEAD.FIRST_VALUE.LAST_VALUE.CAST.CONVERT.TRY_CAST.TRY_CONVERT.PARSE.COALESCE.NULLIF.ISNULL.IIF.CHOOSE.NEWID.NEWSEQUENTIALID.SCOPE_IDENTITY.IDENT_CURRENT.OBJECT_ID.OBJECT_NAME.OBJECT_DEFINITION.SCHEMA_NAME.DB_NAME.HOST_NAME.SUSER_SNAME.USER_NAME.ISNUMERIC.ISJSON.JSON_VALUE.JSON_QUERY.JSON_MODIFY.OPENJSON`.split(`.`),xt=`ADD.ALL.ALTER.AND.ANY.AS.ASC.AUTHORIZATION.BACKUP.BEGIN.BETWEEN.BREAK.BROWSE.BULK.BY.CASCADE.CASE.CHECK.CHECKPOINT.CLOSE.CLUSTERED.COALESCE.COLLATE.COLUMN.COMMIT.COMPUTE.CONSTRAINT.CONTAINS.CONTAINSTABLE.CONTINUE.CONVERT.CREATE.CROSS.CURRENT.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURSOR.DATABASE.DBCC.DEALLOCATE.DECLARE.DEFAULT.DELETE.DENY.DESC.DISK.DISTINCT.DISTRIBUTED.DOUBLE.DROP.DUMP.ELSE.END.ERRLVL.ESCAPE.EXCEPT.EXEC.EXECUTE.EXISTS.EXIT.EXTERNAL.FETCH.FILE.FILLFACTOR.FOR.FOREIGN.FREETEXT.FREETEXTTABLE.FROM.FULL.FUNCTION.GO.GOTO.GRANT.GROUP.GROUP BY.HAVING.HOLDLOCK.IDENTITY.IDENTITY_INSERT.IDENTITYCOL.IF.IN.INDEX.INNER.INSERT.INSERT INTO.INTERSECT.INTO.IS.JOIN.KEY.KILL.LEFT.LIKE.LINENO.LOAD.MERGE.NATIONAL.NEXT.NOCHECK.NONCLUSTERED.NOT.NULL.NULLIF.OF.OFF.OFFSET.OFFSETS.ON.ONLY.OPEN.OPENDATASOURCE.OPENQUERY.OPENROWSET.OPENXML.OPTION.OR.ORDER.ORDER BY.OUTER.OUTPUT.OVER.PERCENT.PIVOT.PLAN.PRECISION.PRIMARY.PRINT.PROC.PROCEDURE.PUBLIC.RAISERROR.READ.READTEXT.RECONFIGURE.REFERENCES.REPLICATION.RESTORE.RESTRICT.RETURN.REVERT.REVOKE.RIGHT.ROLLBACK.ROWCOUNT.ROWGUIDCOL.ROWS.RULE.SAVE.SCHEMA.SECURITYAUDIT.SELECT.SEMANTICKEYPHRASETABLE.SEMANTICSIMILARITYDETAILSTABLE.SEMANTICSIMILARITYTABLE.SESSION_USER.SET.SETUSER.SHUTDOWN.SOME.STATISTICS.SYSTEM_USER.TABLE.TABLESAMPLE.TEXTSIZE.THEN.TO.TOP.TRAN.TRANSACTION.TRIGGER.TRUNCATE.TRY_CONVERT.TSEQUAL.UNION.UNIQUE.UNPIVOT.UPDATE.UPDATETEXT.USE.USER.VALUES.VARYING.VIEW.WAITFOR.WHEN.WHERE.WHILE.WITH.WITHIN GROUP.WRITETEXT`.split(`.`),St=`bigint.binary.bit.char.date.datetime.datetime2.datetimeoffset.decimal.float.geography.geometry.hierarchyid.image.int.money.nchar.ntext.numeric.nvarchar.real.smalldatetime.smallint.smallmoney.sql_variant.text.time.timestamp.tinyint.uniqueidentifier.varbinary.varchar.xml`.split(`.`),Ct={hashComments:!1,dashCommentNeedsSpace:!1,backslashEscapes:!1,doubleQuoteIsIdentifier:!0,bracketIdentifiers:!0,delimiterCommand:!1,dollarQuotes:!1,goBatchSeparator:!0,limitStyle:`top`,plsqlBlocks:!1};function wt(e){let{quoteIdentifier:t,quoteLiteral:n,qualify:i}=e;return{...r(e,{addColumn:`ADD`,modify:`mssql`,qualifiedIndexNames:!1,dropIndexOnTable:!0,unqualifiedIndexTarget:!1,multiRowInsert:!0,mysqlAttributes:!1,fulltext:!1,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=_(e.name,`untitled`),a=e.database||`dbo`,o=i(a,r),s=e.columns.filter(e=>e.primaryKey),c=e.columns.map(e=>{let n=` ${t(_(e.name,`column`))} ${e.type}`;return e.length&&(n+=`(${e.length})`),e.autoIncrement&&(n+=` IDENTITY(1,1)`),n+=e.notNull||e.primaryKey?` NOT NULL`:` NULL`,e.defaultValue&&(n+=` DEFAULT ${e.defaultValue}`),n});s.length>0&&c.push(` PRIMARY KEY (${s.map(e=>t(e.name)).join(`, `)})`);let l=[`CREATE TABLE ${o} (\n${c.join(`,
|
|
288
|
+
{2}`,SHOW_PROCESS_LIST:`SELECT s.session_id AS [Id], s.login_name AS [User], COALESCE(c.client_net_address, 'local') AS [Host], DB_NAME(s.database_id) AS [db], COALESCE(r.status, s.status) AS [Command], COALESCE(DATEDIFF(SECOND, r.start_time, GETDATE()), 0) AS [Time], COALESCE(r.wait_type, '') AS [State], t.text AS [Info] FROM sys.dm_exec_sessions s LEFT JOIN sys.dm_exec_connections c ON c.session_id = s.session_id LEFT JOIN sys.dm_exec_requests r ON r.session_id = s.session_id OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE s.is_user_process = 1 ORDER BY s.session_id`,KILL_QUERY:`KILL {0}`,SHOW_VARIABLES:`SELECT name AS [Variable_name], CAST(value_in_use AS NVARCHAR(100)) AS [Value] FROM sys.configurations ORDER BY name`,SHOW_GLOBAL_VARIABLES:`SELECT name AS [Variable_name], CAST(value AS NVARCHAR(100)) AS [Value] FROM sys.configurations ORDER BY name`,SHOW_SESSION_VARIABLES:`SELECT name AS [Variable_name], CAST(value_in_use AS NVARCHAR(100)) AS [Value] FROM sys.configurations ORDER BY name`,CREATE_SCHEMA:`CREATE SCHEMA [{0}]`,DROP_SCHEMA:`DROP SCHEMA [{0}]`,COPY_TABLE_STRUCTURE:`SELECT TOP 0 * INTO [{2}].[{3}] FROM [{0}].[{1}]`,COPY_TABLE_DATA:`INSERT INTO [{2}].[{3}] SELECT * FROM [{0}].[{1}]`,DISABLE_FK_CHECKS:`EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'`,ENABLE_FK_CHECKS:`EXEC sp_msforeachtable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL'`},bt=`ASCII.CHAR.CHARINDEX.CONCAT.CONCAT_WS.FORMAT.LEFT.LEN.LOWER.LTRIM.NCHAR.PATINDEX.QUOTENAME.REPLACE.REPLICATE.REVERSE.RIGHT.RTRIM.SPACE.STR.STRING_AGG.STRING_SPLIT.STUFF.SUBSTRING.TRANSLATE.TRIM.UNICODE.UPPER.ABS.CEILING.EXP.FLOOR.LOG.LOG10.PI.POWER.RAND.ROUND.SIGN.SQRT.SQUARE.CURRENT_TIMESTAMP.DATEADD.DATEDIFF.DATEDIFF_BIG.DATEFROMPARTS.DATENAME.DATEPART.DATETIMEFROMPARTS.DAY.EOMONTH.GETDATE.GETUTCDATE.ISDATE.MONTH.SYSDATETIME.SYSDATETIMEOFFSET.SYSUTCDATETIME.YEAR.AVG.COUNT.COUNT_BIG.MAX.MIN.STDEV.SUM.VAR.ROW_NUMBER.RANK.DENSE_RANK.NTILE.LAG.LEAD.FIRST_VALUE.LAST_VALUE.CAST.CONVERT.TRY_CAST.TRY_CONVERT.PARSE.COALESCE.NULLIF.ISNULL.IIF.CHOOSE.NEWID.NEWSEQUENTIALID.SCOPE_IDENTITY.IDENT_CURRENT.OBJECT_ID.OBJECT_NAME.OBJECT_DEFINITION.SCHEMA_NAME.DB_NAME.HOST_NAME.SUSER_SNAME.USER_NAME.ISNUMERIC.ISJSON.JSON_VALUE.JSON_QUERY.JSON_MODIFY.OPENJSON`.split(`.`),xt=`ADD.ALL.ALTER.AND.ANY.AS.ASC.AUTHORIZATION.BACKUP.BEGIN.BETWEEN.BREAK.BROWSE.BULK.BY.CASCADE.CASE.CHECK.CHECKPOINT.CLOSE.CLUSTERED.COALESCE.COLLATE.COLUMN.COMMIT.COMPUTE.CONSTRAINT.CONTAINS.CONTAINSTABLE.CONTINUE.CONVERT.CREATE.CROSS.CURRENT.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURSOR.DATABASE.DBCC.DEALLOCATE.DECLARE.DEFAULT.DELETE.DENY.DESC.DISK.DISTINCT.DISTRIBUTED.DOUBLE.DROP.DUMP.ELSE.END.ERRLVL.ESCAPE.EXCEPT.EXEC.EXECUTE.EXISTS.EXIT.EXTERNAL.FETCH.FILE.FILLFACTOR.FOR.FOREIGN.FREETEXT.FREETEXTTABLE.FROM.FULL.FUNCTION.GO.GOTO.GRANT.GROUP.GROUP BY.HAVING.HOLDLOCK.IDENTITY.IDENTITY_INSERT.IDENTITYCOL.IF.IN.INDEX.INNER.INSERT.INSERT INTO.INTERSECT.INTO.IS.JOIN.KEY.KILL.LEFT.LIKE.LINENO.LOAD.MERGE.NATIONAL.NEXT.NOCHECK.NONCLUSTERED.NOT.NULL.NULLIF.OF.OFF.OFFSET.OFFSETS.ON.ONLY.OPEN.OPENDATASOURCE.OPENQUERY.OPENROWSET.OPENXML.OPTION.OR.ORDER.ORDER BY.OUTER.OUTPUT.OVER.PERCENT.PIVOT.PLAN.PRECISION.PRIMARY.PRINT.PROC.PROCEDURE.PUBLIC.RAISERROR.READ.READTEXT.RECONFIGURE.REFERENCES.REPLICATION.RESTORE.RESTRICT.RETURN.REVERT.REVOKE.RIGHT.ROLLBACK.ROWCOUNT.ROWGUIDCOL.ROWS.RULE.SAVE.SCHEMA.SECURITYAUDIT.SELECT.SEMANTICKEYPHRASETABLE.SEMANTICSIMILARITYDETAILSTABLE.SEMANTICSIMILARITYTABLE.SESSION_USER.SET.SETUSER.SHUTDOWN.SOME.STATISTICS.SYSTEM_USER.TABLE.TABLESAMPLE.TEXTSIZE.THEN.TO.TOP.TRAN.TRANSACTION.TRIGGER.TRUNCATE.TRY_CONVERT.TSEQUAL.UNION.UNIQUE.UNPIVOT.UPDATE.UPDATETEXT.USE.USER.VALUES.VARYING.VIEW.WAITFOR.WHEN.WHERE.WHILE.WITH.WITHIN GROUP.WRITETEXT`.split(`.`),St=`bigint.binary.bit.char.date.datetime.datetime2.datetimeoffset.decimal.float.geography.geometry.hierarchyid.image.int.money.nchar.ntext.numeric.nvarchar.real.smalldatetime.smallint.smallmoney.sql_variant.text.time.timestamp.tinyint.uniqueidentifier.varbinary.varchar.xml`.split(`.`),Ct={hashComments:!1,dashCommentNeedsSpace:!1,backslashEscapes:!1,doubleQuoteIsIdentifier:!0,bracketIdentifiers:!0,delimiterCommand:!1,dollarQuotes:!1,goBatchSeparator:!0,limitStyle:`top`,plsqlBlocks:!1};function wt(e){let{quoteIdentifier:t,quoteLiteral:n,qualify:i}=e;return{...r(e,{addColumn:`ADD`,modify:`mssql`,renameColumn:`sp_rename`,qualifiedIndexNames:!1,dropIndexOnTable:!0,unqualifiedIndexTarget:!1,multiRowInsert:!0,mysqlAttributes:!1,fulltext:!1,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=_(e.name,`untitled`),a=e.database||`dbo`,o=i(a,r),s=e.columns.filter(e=>e.primaryKey),c=e.columns.map(e=>{let n=` ${t(_(e.name,`column`))} ${e.type}`;return e.length&&(n+=`(${e.length})`),e.autoIncrement&&(n+=` IDENTITY(1,1)`),n+=e.notNull||e.primaryKey?` NOT NULL`:` NULL`,e.defaultValue&&(n+=` DEFAULT ${e.defaultValue}`),n});s.length>0&&c.push(` PRIMARY KEY (${s.map(e=>t(e.name)).join(`, `)})`);let l=[`CREATE TABLE ${o} (\n${c.join(`,
|
|
289
289
|
`)}\n);`];for(let n of e.indexes){if(n.type===`PRIMARY`||n.columns.length===0)continue;let e=n.type===`UNIQUE`?`UNIQUE `:``,i=n.type===`FULLTEXT`?` -- FULLTEXT needs a full-text catalog; created as a plain index`:``,a=t(_(n.name,`${r}_${n.columns.join(`_`)}_idx`));l.push(`CREATE ${e}INDEX ${a} ON ${o} (${n.columns.map(t).join(`, `)});${i}`)}e.options.comment&&l.push(`EXEC sp_addextendedproperty 'MS_Description', ${n(e.options.comment)}, 'SCHEMA', ${n(a)}, 'TABLE', ${n(r)};`);for(let t of e.columns)t.comment&&l.push(`EXEC sp_addextendedproperty 'MS_Description', ${n(t.comment)}, 'SCHEMA', ${n(a)}, 'TABLE', ${n(r)}, 'COLUMN', ${n(_(t.name,`column`))};`);return l.join(`
|
|
290
|
-
`)}}}var Tt=v({id:`mssql`,label:`SQL Server`,capabilities:{multipleDatabases:!1,users:!1,procedures:!0,functions:!0,triggers:!0,events:!1,processList:!0,variables:!0,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!1,transactions:!0},ddl:wt,introspect:vt,tree:Ue,defaultPort:1433,binaryLiteral:e=>`0x${e}`,booleanKeywords:!1,identifierQuote:`[`,identifierQuoteClose:`]`,queries:yt,syntax:Ct,dataTypes:St,functions:bt,reservedWords:xt}),Y=e=>`'${e.replace(/'/g,`''`)}'`;async function X(e,t){return(await e(t)).records.map(e=>m(e[0]))}function Et(e,t,n,r,i){return[`VARCHAR2`,`NVARCHAR2`,`CHAR`,`NCHAR`,`RAW`].includes(e)?`${e}(${n||t||0})`:e===`NUMBER`?r===null?`NUMBER`:i?`NUMBER(${r},${i})`:`NUMBER(${r})`:e===`FLOAT`&&r!==null?`FLOAT(${r})`:e}async function Dt(e,t,n){return p(await e(`SELECT c.table_name, c.column_name, c.data_type, c.data_length, c.char_length, c.data_precision, c.data_scale,
|
|
290
|
+
`)}}}var Tt=v({id:`mssql`,label:`SQL Server`,capabilities:{multipleDatabases:!1,schemas:!0,users:!1,procedures:!0,functions:!0,triggers:!0,events:!1,processList:!0,variables:!0,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!1,transactions:!0},ddl:wt,introspect:vt,tree:Ue,defaultPort:1433,binaryLiteral:e=>`0x${e}`,booleanKeywords:!1,identifierQuote:`[`,identifierQuoteClose:`]`,queries:yt,syntax:Ct,dataTypes:St,functions:bt,reservedWords:xt}),Y=e=>`'${e.replace(/'/g,`''`)}'`;async function X(e,t){return(await e(t)).records.map(e=>m(e[0]))}function Et(e,t,n,r,i){return[`VARCHAR2`,`NVARCHAR2`,`CHAR`,`NCHAR`,`RAW`].includes(e)?`${e}(${n||t||0})`:e===`NUMBER`?r===null?`NUMBER`:i?`NUMBER(${r},${i})`:`NUMBER(${r})`:e===`FLOAT`&&r!==null?`FLOAT(${r})`:e}async function Dt(e,t,n){return p(await e(`SELECT c.table_name, c.column_name, c.data_type, c.data_length, c.char_length, c.data_precision, c.data_scale,
|
|
291
291
|
c.nullable, c.data_default, cc.comments,
|
|
292
292
|
CASE WHEN ic.column_name IS NOT NULL THEN 1 ELSE 0 END AS is_identity
|
|
293
293
|
FROM all_tab_columns c
|
|
@@ -350,4 +350,4 @@ END;
|
|
|
350
350
|
/`,CREATE_VIEW:`CREATE OR REPLACE VIEW "{0}"."{1}" AS
|
|
351
351
|
/* SQL SELECT Statement */`,CREATE_TABLE:`CREATE TABLE "{0}"."{1}" {2}`,ALTER_TABLE:`ALTER TABLE "{0}"."{1}" {2}`,ALTER_VIEW:`{2}`,ALTER_PROCEDURE:`{2}`,ALTER_FUNCTION:`{2}`,ALTER_TRIGGER:`{2}`,SHOW_PROCESS_LIST:`SELECT s.sid || ',' || s.serial# AS "Id", s.username AS "User", s.machine AS "Host", s.schemaname AS "db", s.status AS "Command", COALESCE(s.last_call_et, 0) AS "Time", s.event AS "State", s.sql_id AS "Info" FROM v$session s WHERE s.type = 'USER' ORDER BY s.sid`,KILL_QUERY:`ALTER SYSTEM KILL SESSION '{0}' IMMEDIATE`,SHOW_VARIABLES:`SELECT name AS "Variable_name", value AS "Value" FROM v$parameter ORDER BY name`,SHOW_GLOBAL_VARIABLES:`SELECT name AS "Variable_name", value AS "Value" FROM v$parameter ORDER BY name`,SHOW_SESSION_VARIABLES:`SELECT parameter AS "Variable_name", value AS "Value" FROM nls_session_parameters ORDER BY parameter`,COPY_TABLE_STRUCTURE:`CREATE TABLE "{2}"."{3}" AS SELECT * FROM "{0}"."{1}" WHERE 1 = 0`,COPY_TABLE_DATA:`INSERT INTO "{2}"."{3}" SELECT * FROM "{0}"."{1}"`},Ft=`ASCII,CHR,CONCAT,INITCAP,INSTR,LENGTH,LOWER,LPAD,LTRIM,NLSSORT,REGEXP_INSTR,REGEXP_REPLACE,REGEXP_SUBSTR,REPLACE,RPAD,RTRIM,SOUNDEX,SUBSTR,TRANSLATE,TRIM,UPPER,LISTAGG,ABS,CEIL,EXP,FLOOR,LN,LOG,MOD,POWER,REMAINDER,ROUND,SIGN,SQRT,TRUNC,ADD_MONTHS,CURRENT_DATE,CURRENT_TIMESTAMP,EXTRACT,LAST_DAY,LOCALTIMESTAMP,MONTHS_BETWEEN,NEXT_DAY,SYSDATE,SYSTIMESTAMP,TO_CHAR,TO_DATE,TO_TIMESTAMP,TO_TIMESTAMP_TZ,FROM_TZ,NUMTODSINTERVAL,NUMTOYMINTERVAL,CAST,TO_NUMBER,TO_CLOB,COALESCE,NULLIF,NVL,NVL2,DECODE,GREATEST,LEAST,AVG,COUNT,MAX,MEDIAN,MIN,STDDEV,SUM,VARIANCE,ROW_NUMBER,RANK,DENSE_RANK,NTILE,LAG,LEAD,FIRST_VALUE,LAST_VALUE,SYS_GUID,SYS_CONTEXT,USER,UID,ROWNUM,ROWID,DBMS_METADATA.GET_DDL,JSON_VALUE,JSON_QUERY,JSON_OBJECT,JSON_ARRAY,JSON_TABLE,JSON_EXISTS`.split(`,`),It=`ACCESS.ADD.ALL.ALTER.AND.ANY.AS.ASC.AUDIT.BETWEEN.BY.CHAR.CHECK.CLUSTER.COLUMN.COMMENT.COMPRESS.CONNECT.CREATE.CURRENT.DATE.DECIMAL.DEFAULT.DELETE.DESC.DISTINCT.DROP.ELSE.EXCLUSIVE.EXISTS.FILE.FLOAT.FOR.FROM.GRANT.GROUP.GROUP BY.HAVING.IDENTIFIED.IMMEDIATE.IN.INCREMENT.INDEX.INITIAL.INSERT.INSERT INTO.INTEGER.INTERSECT.INTO.IS.LEVEL.LIKE.LOCK.LONG.MAXEXTENTS.MINUS.MLSLABEL.MODE.MODIFY.NOAUDIT.NOCOMPRESS.NOT.NOWAIT.NULL.NUMBER.OF.OFFLINE.ON.ONLINE.OPTION.OR.ORDER.ORDER BY.PCTFREE.PRIOR.PUBLIC.RAW.RENAME.RESOURCE.REVOKE.ROW.ROWID.ROWNUM.ROWS.SELECT.SESSION.SET.SHARE.SIZE.SMALLINT.START.SUCCESSFUL.SYNONYM.SYSDATE.TABLE.THEN.TO.TRIGGER.UID.UNION.UNIQUE.UPDATE.USER.VALIDATE.VALUES.VARCHAR.VARCHAR2.VIEW.WHENEVER.WHERE.WITH.BEGIN.DECLARE.END.EXCEPTION.IF.ELSIF.LOOP.WHILE.RETURN.PROCEDURE.FUNCTION.PACKAGE.BODY.CURSOR.FETCH.FIRST.NEXT.ONLY.OFFSET.COMMIT.ROLLBACK.SAVEPOINT.TRUNCATE.REPLACE.MERGE.USING.MATCHED.JOIN.INNER.LEFT.RIGHT.FULL.OUTER.CROSS.CASE.WHEN.OVER.PARTITION.DUAL.SEQUENCE.NEXTVAL.CURRVAL`.split(`.`),Lt=[`BFILE`,`BINARY_DOUBLE`,`BINARY_FLOAT`,`BLOB`,`BOOLEAN`,`CHAR`,`CLOB`,`DATE`,`FLOAT`,`INTERVAL DAY TO SECOND`,`INTERVAL YEAR TO MONTH`,`JSON`,`LONG`,`NCHAR`,`NCLOB`,`NUMBER`,`NVARCHAR2`,`RAW`,`ROWID`,`TIMESTAMP`,`TIMESTAMP WITH LOCAL TIME ZONE`,`TIMESTAMP WITH TIME ZONE`,`VARCHAR2`,`XMLTYPE`],Rt={hashComments:!1,dashCommentNeedsSpace:!1,backslashEscapes:!1,doubleQuoteIsIdentifier:!0,bracketIdentifiers:!1,delimiterCommand:!1,dollarQuotes:!1,goBatchSeparator:!1,limitStyle:`fetch`,plsqlBlocks:!0};function zt(e){let{quoteIdentifier:t,quoteLiteral:n,qualify:i}=e;return{...r(e,{addColumn:`ADD (`,modify:`oracle`,qualifiedIndexNames:!0,dropIndexOnTable:!1,unqualifiedIndexTarget:!1,multiRowInsert:!1,mysqlAttributes:!1,fulltext:!1,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=_(e.name,`untitled`),a=i(e.database,r),o=e.columns.filter(e=>e.primaryKey),s=e.columns.map(e=>{let n=` ${t(_(e.name,`column`))} ${e.type}`;return e.length&&(n+=`(${e.length})`),e.autoIncrement&&(n+=` GENERATED BY DEFAULT AS IDENTITY`),e.defaultValue&&(n+=` DEFAULT ${e.defaultValue}`),e.notNull&&(n+=` NOT NULL`),n});o.length>0&&s.push(` PRIMARY KEY (${o.map(e=>t(e.name)).join(`, `)})`);let c=[`CREATE TABLE ${a} (\n${s.join(`,
|
|
352
352
|
`)}\n);`];for(let n of e.indexes){if(n.type===`PRIMARY`||n.columns.length===0)continue;let o=n.type===`UNIQUE`?`UNIQUE `:``,s=n.type===`FULLTEXT`?` -- FULLTEXT is MySQL-only; consider an Oracle Text index`:``,l=i(e.database,_(n.name,`${r}_${n.columns.join(`_`)}_idx`));c.push(`CREATE ${o}INDEX ${l} ON ${a} (${n.columns.map(t).join(`, `)});${s}`)}e.options.comment&&c.push(`COMMENT ON TABLE ${a} IS ${n(e.options.comment)};`);for(let r of e.columns)r.comment&&c.push(`COMMENT ON COLUMN ${a}.${t(_(r.name,`column`))} IS ${n(r.comment)};`);return c.join(`
|
|
353
|
-
`)}}}var $=v({id:`oracle`,label:`Oracle`,capabilities:{multipleDatabases:!1,users:!1,procedures:!0,functions:!0,triggers:!0,events:!1,processList:!0,variables:!0,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!0,transactions:!0},ddl:zt,introspect:Nt,defaultPort:1521,binaryLiteral:e=>`HEXTORAW('${e}')`,booleanKeywords:!1,identifierQuote:`"`,queries:Pt,syntax:Rt,dataTypes:Lt,functions:Ft,reservedWords:It}),Bt=v({...N,id:`neon`,label:`Neon`}),Vt=v({...N,id:`supabase`,label:`Supabase`}),Ht=v({...V,id:`d1`,label:`Cloudflare D1`,capabilities:{...V.capabilities,transactions:!1}}),Ut={mysql:C,maria:E,postgres:Xe,sqlite:ct,mssql:Tt,oracle:$,neon:Bt,supabase:Vt,d1:Ht},
|
|
353
|
+
`)}}}var $=v({id:`oracle`,label:`Oracle`,capabilities:{multipleDatabases:!1,schemas:!1,users:!1,procedures:!0,functions:!0,triggers:!0,events:!1,processList:!0,variables:!0,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!0,transactions:!0},ddl:zt,introspect:Nt,defaultPort:1521,binaryLiteral:e=>`HEXTORAW('${e}')`,booleanKeywords:!1,identifierQuote:`"`,queries:Pt,syntax:Rt,dataTypes:Lt,functions:Ft,reservedWords:It}),Bt=v({...N,id:`neon`,label:`Neon`}),Vt=v({...N,id:`supabase`,label:`Supabase`}),Ht=v({...V,id:`d1`,label:`Cloudflare D1`,capabilities:{...V.capabilities,transactions:!1}}),Ut=`__miniflare_do_name`,Wt={...V.introspect,async listTables(e,t){return(await V.introspect.listTables(e,t)).filter(e=>e.name!==Ut)}},Gt=v({...V,id:`do`,label:`Cloudflare DO (wrangler dev)`,capabilities:{...V.capabilities,transactions:!1},introspect:Wt}),Kt={mysql:C,maria:E,postgres:Xe,sqlite:ct,mssql:Tt,oracle:$,neon:Bt,supabase:Vt,d1:Ht,do:Gt},qt=[C,E,Xe,ct,Tt,$,Bt,Vt,Ht,Gt];function Jt(e){return e&&Kt[e]||C}function Yt(e){return Jt(e?.dbms)}export{o as a,p as i,Jt as n,i as o,Yt as r,qt as t};
|