planche 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/app/assets/{tQiLT0zv.js → 7jD5h8Yx.js} +3 -1
  2. package/app/assets/{C4QyqQoa.js → 7jG9Xw-H.js} +1 -1
  3. package/app/assets/{Br4335vw.js → 84VwJAQi.js} +1 -1
  4. package/app/assets/9gOj-Ty3.js +1 -0
  5. package/app/assets/{1p4z4GHT.js → B4S-lOKS.js} +2 -2
  6. package/app/assets/{BniymiMs.js → BDtsGuIR.js} +3 -1
  7. package/app/assets/{DFeHpd8Y.js → BEH9Jqkv.js} +1 -1
  8. package/app/assets/{CCQ6oQgi.js → BGvsBpIS.js} +1 -1
  9. package/app/assets/BMBWoD5w.js +1 -0
  10. package/app/assets/{BgvMpmFj.js → BMFLhX-x.js} +1 -1
  11. package/app/assets/{DDeeBXtX.js → BNB62Dfu.js} +1 -1
  12. package/app/assets/{D3_CBO8-.js → BPPUDpI0.js} +1 -1
  13. package/app/assets/{Bvu_eiyU.js → BPmMKRmE.js} +3 -3
  14. package/app/assets/{CP2U-viH.js → BQ1Rcyw6.js} +1 -1
  15. package/app/assets/{CWota0kb.js → BSziALTN.js} +1 -1
  16. package/app/assets/{f6MhVR01.js → BTaXXwBP.js} +1 -1
  17. package/app/assets/{BhPOHTk7.js → BbOETtQZ.js} +2 -2
  18. package/app/assets/{CIIDOG9Y.js → Bbx7_Uyd.js} +1 -1
  19. package/app/assets/{CkIm3SJy.js → BhX9zWzC.js} +1 -1
  20. package/app/assets/{C5Yv1gpQ.js → BixvbqFe.js} +1 -1
  21. package/app/assets/BjwrN_ch.js +11 -0
  22. package/app/assets/{BHe42P9W.js → BkXrfAoR.js} +1 -1
  23. package/app/assets/{BvEGx3Si.js → BnJGrP6V.js} +2 -2
  24. package/app/assets/{BnI4D_rY.js → BrVnzO7b.js} +1 -1
  25. package/app/assets/{BVwlLPu6.js → ByKF67UY.js} +1 -1
  26. package/app/assets/{DKf3DkR6.js → C1kpKIsO.js} +1 -1
  27. package/app/assets/{DkqeIq13.js → C6712dxU.js} +1 -1
  28. package/app/assets/{B_1rFijd.js → C77ZEZfM.js} +1 -1
  29. package/app/assets/{B8zpsP_u.js → CExE8dKz.js} +209 -209
  30. package/app/assets/{CVZ3Bw6o.js → CFUkTo-F.js} +1 -1
  31. package/app/assets/{BMGo7X_N.js → CFu5QMhX.js} +3 -1
  32. package/app/assets/{DnRoHgQS.js → CHx7zgT8.js} +1 -1
  33. package/app/assets/{BsYZ-U7K.js → CRnmOOqq.js} +1 -1
  34. package/app/assets/{CDfSdkjY.js → CTnwm-29.js} +1 -1
  35. package/app/assets/{DO0W14Ho.js → CaU3pCK6.js} +1 -1
  36. package/app/assets/{BYWnKgIY.js → CoZCOAph.js} +1 -1
  37. package/app/assets/{6NUleTnS.js → CrhJJH3f.js} +1 -1
  38. package/app/assets/{DDjCZLb0.js → CrlnxAGW.js} +1 -1
  39. package/app/assets/{Dy6-E_uL.js → D0Ya12SQ.js} +1 -1
  40. package/app/assets/{BiyRPyXV.js → D1kyupCL.js} +1 -1
  41. package/app/assets/{C3w9xAkk.js → D3lUezEb.js} +1 -1
  42. package/app/assets/{DeNEO8HN.js → D9QeXBOk.js} +1 -1
  43. package/app/assets/{DPnYgSl3.js → DCHRj2vY.js} +1 -1
  44. package/app/assets/{CwsH45Wr.js → DF7EZh_S.js} +2 -2
  45. package/app/assets/{DyQ8cEic.js → DHZOxCSJ.js} +1 -1
  46. package/app/assets/{Cdop6jK1.js → DNHPk-9r.js} +3 -1
  47. package/app/assets/{Q6DQerac.js → DPyLA6Dl.js} +1 -1
  48. package/app/assets/{Bkq2aetC.js → DTkqO0Em.js} +1 -1
  49. package/app/assets/{FAouNaq9.js → DaBfnZOJ.js} +1 -1
  50. package/app/assets/{D6oRJsd8.js → Djxg54qH.js} +1 -1
  51. package/app/assets/{ClytWHSf.js → Do7KpDxk.js} +1 -1
  52. package/app/assets/{CnoXRrek.js → DpEN2jyA.js} +1 -1
  53. package/app/assets/{C2S2GXdP.js → DzdX4vRD.js} +1 -1
  54. package/app/assets/{D4l4mWtD.js → G06qjCej.js} +1 -1
  55. package/app/assets/{ANL7Od0T.js → W7D4Svcn.js} +1 -1
  56. package/app/assets/{BJFk0Zzq.js → aIFwnVFr.js} +3 -1
  57. package/app/assets/{UX-csQNt.js → kXDKfUfE.js} +3 -1
  58. package/app/assets/{B9NCreMu.js → qRIRkBN0.js} +1 -1
  59. package/app/assets/{DY1k-USH.js → tJkeLYCp.js} +1 -1
  60. package/app/assets/w46wk7KI.css +2 -0
  61. package/app/index.html +8 -8
  62. package/package.json +1 -1
  63. package/app/assets/B9DHeSQH.js +0 -1
  64. package/app/assets/Bgu3teFB.js +0 -11
  65. package/app/assets/CWb3a6Xp.js +0 -1
  66. package/app/assets/CqTgU2vp.css +0 -2
@@ -1 +1 @@
1
- import{t as e}from"./CiL8zoYm.js";import{i as t,r as n}from"./Cu_sGzNJ.js";import{a as r,i,n as a,o,r as s,t as c}from"./DzRyVlxz.js";import"./DU-Eln5x.js";import{n as l}from"./D8_hwGjG.js";import{Y as u}from"./B8zpsP_u.js";var d=`<a href="mailto:planche.dev@gmail.com">planche.dev@gmail.com</a>`,f=`2 September 2026`,p=`Planche is made and operated by <strong>deploy</strong>, a sole proprietorship registered in the Republic of Korea and owned by Juwon Jeong (“we”, “us”), at 1114 Gyeongui-ro, 4th floor, Room 405, Paju-si, Gyeonggi-do, Republic of Korea. Contact: ${d}.`,m={title:`Terms of Service — Planche`,description:`The terms under which the Planche SQL client, the local agent and Planche Pro are provided.`,ogTitle:`Planche terms of service`,h1:`Terms of Service`,intro:`Last updated ${f}. These terms cover the website and web application at planche.dev, the local agent published on npm as <code>planche</code> and by the install scripts, and the Planche Pro subscription. By using any of them you agree to these terms. ${p}`,cta:`Open Planche`,static:!0,sections:[{heading:`1. What Planche is`,body:[`Planche is a SQL client. The application runs in your browser. For MySQL, MariaDB, PostgreSQL, SQL Server, Oracle and the hosted services it supports, a small program — the local agent — runs on your own computer, holds the database connections and answers the browser over the loopback interface. SQLite files are opened inside the browser itself.`,`We host the application as a static site and nothing else. Your connection profiles, passwords, queries and results travel between your browser, the agent on your machine and your databases; none of them pass through a server of ours. The <a href="{privacy}">privacy policy</a> lists the few things that do reach us or a service we use.`,`Planche is free to use for personal and commercial purposes without an account. A set of advanced features, listed on the <a href="{pricing}">pricing page</a>, requires a Pro licence.`]},{heading:`2. Licence to use the software`,body:[`We grant you a non-exclusive, non-transferable licence to use the Planche application and the local agent, on any number of computers you own or control, for the purpose of working with databases you are authorised to access.`,`You may not redistribute, sell, rent or sublicense Planche or the agent, offer either to third parties as part of a product or service, modify or create derivative works of them, reverse engineer or decompile them except where the law grants you that right regardless of this clause, or remove any copyright or proprietary notice. Planche is proprietary software; it is not open source.`,`The agent package ships with its own licence agreement (the <code>LICENSE</code> file in the package). For the agent, that agreement applies together with these terms; if the two differ, the package licence prevails for the copy you installed.`,`Planche includes third-party open-source components, each under its own licence. Those licences govern those components and nothing here limits the rights they give you. The list is at <a href="/third-party-notices.txt">third-party-notices.txt</a>.`]},{heading:`3. Planche Pro`,body:[`Pro is a subscription, billed monthly or yearly, that unlocks the features listed on the <a href="{pricing}">pricing page</a>. It is sold through a payment provider acting as our merchant of record and authorised reseller: the provider is the seller on the transaction, processes the payment, and collects and remits any VAT or sales tax that applies. The provider’s name, the price, the currency and any tax are shown at checkout before you pay, and the provider’s own terms apply to the purchase itself.`,`After payment you receive a licence key, on the order page and by email. A key is a signed statement of who bought it, which plan and for which period; the application verifies it on your computer without contacting anyone. A key covers <strong>one person</strong> on every computer that person uses. It may not be shared, published, or resold, and a key found published may be excluded from renewal. For several people, buy one licence each or write to us about a team licence.`,`Because a key is verified offline, it cannot be withdrawn before it expires. Keys are therefore issued for exactly the period that was paid for. While your subscription stays paid you receive a key that covers each new period; when it ends, the Pro features stop at the end of the last paid period and everything else keeps working. Nothing you have stored — profiles, history, saved files — is touched.`,`You can cancel at any time from the customer portal linked in your receipt, or by writing to us. Cancelling stops future charges; the current period runs to its end. Refunds are described in the <a href="{refund}">refund policy</a>.`,`If we change the price of Pro, the new price applies from your next renewal at the earliest, and we tell you by email at least 30 days before that renewal so you can cancel first.`]},{heading:`4. Connection sync`,body:[`Connection sync is an optional Pro feature that keeps your connection profiles on more than one computer. Using it means signing in with a GitHub or Google account; that is the only case in which an account exists. Your profiles are encrypted in the browser with a passphrase you choose before they are uploaded, and the passphrase never leaves your machine. We cannot read the vault and we cannot recover it if you lose the passphrase.`,`Sync is only offered on planche.dev. You can delete your account and vault from the application at any time, or by writing to us. We may discontinue sync with at least 30 days’ notice, during which your profiles remain available on every signed-in computer.`]},{heading:`5. AI features`,body:[`Some features can ask a language model to explain a failed statement or a query plan. They only work if you configure a provider, and what is sent goes from the agent on your computer directly to that provider, under that provider’s terms and privacy policy — not through us. The material sent is narrow: the statement with its secrets masked, the database’s own error message, and the column names of the tables the statement refers to. No rows, hosts or credentials.`,`A model’s answer can be wrong. Suggested statements are shown for you to review; running them is your decision, and section 7 applies to it.`]},{heading:`6. Acceptable use`,body:[`You may only use Planche with databases you own or are authorised to access. You may not use it to gain access you do not have, to interfere with a service, or in breach of any law that applies to you. You may not circumvent or disable the licence check, and you may not expose the local agent to the network in a way that lets others use it as a proxy to your databases or to other hosts.`]},{heading:`7. Your data, your responsibility`,body:[`Planche executes the SQL you give it, and SQL can change or delete data. The safeguards in the application — read-only connections, confirmation of destructive statements, dry run — are aids and not guarantees. You are responsible for keeping backups of your databases and for reviewing statements before you run them, and we accept no responsibility for the effect of a statement you ran.`,`Planche stores your connection profiles, and if you choose so your passwords, in your browser’s storage and, for the agent, in a directory under your home folder. Protecting that computer is your responsibility.`]},{heading:`8. Changes to the service`,body:[`We improve Planche continuously and may add, change or remove features. A feature that is free today may become part of Pro in a later version; a version you already have keeps working as it did. We may stop offering the hosted application at planche.dev; the agent can serve its own copy of the application, so an installed Planche keeps working without it.`]},{heading:`9. No warranty`,body:[`PLANCHE IS PROVIDED “AS IS” AND “AS AVAILABLE”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. We do not promise that it will be uninterrupted, error-free or compatible with every database version.`]},{heading:`10. Limitation of liability`,body:[`TO THE EXTENT PERMITTED BY LAW, WE ARE NOT LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES, OR FOR LOSS OF DATA, PROFITS OR BUSINESS, ARISING FROM OR IN CONNECTION WITH PLANCHE. OUR TOTAL LIABILITY FOR ALL CLAIMS TOGETHER IS LIMITED TO THE AMOUNT YOU PAID US FOR PLANCHE IN THE TWELVE MONTHS BEFORE THE CLAIM AROSE.`,`Nothing in these terms excludes or limits liability that cannot be excluded under the law that applies to you, including liability for intent or gross negligence, or any right you have as a consumer under mandatory law.`]},{heading:`11. Termination`,body:[`You can stop using Planche at any time; there is no account to close unless you use sync. We may end your licence if you materially breach these terms, in which case you must stop using the software. Sections 7, 9, 10 and 13 survive termination.`]},{heading:`12. Changes to these terms`,body:[`We may update these terms. The date at the top says when they last changed. A change that affects Pro subscribers materially is announced by email at least 30 days before it takes effect; continued use after that date is acceptance. If you do not agree, cancel before the change takes effect.`]},{heading:`13. Governing law`,body:[`These terms are governed by the laws of the Republic of Korea, and disputes are subject to the courts of Seoul, Republic of Korea. If you are a consumer, this does not take away the protection of the mandatory consumer laws of the country you live in, or your right to bring a claim there.`]},{heading:`14. Contact`,body:[`Questions about these terms: ${d}.`]}]};`${f}${p}`,`${d}`,`${f}${p}`,`${d}`,`${d}`;var h=m.sections,g=n();function _(e){return e.replace(/\{([a-z]+)\}/g,(e,t)=>t in u?u[t]:e).replace(/<a href="/g,`<a target="_blank" rel="noreferrer" href="`)}function v(){let n=l(e=>e.activeDialog),d=l(e=>e.closeDialog),{t:p}=t();return(0,g.jsx)(c,{open:n===`terms`,onOpenChange:e=>{e||d()},children:(0,g.jsxs)(a,{className:`flex max-h-[85vh] flex-col sm:max-w-[640px]`,children:[(0,g.jsxs)(r,{children:[(0,g.jsx)(o,{children:p(`terms.title`)}),(0,g.jsxs)(s,{children:[p(`terms.version`,{version:1}),` · `,p(`terms.updated`,{date:f})]})]}),(0,g.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-md border bg-muted/40 p-4 text-sm`,children:[(0,g.jsx)(`p`,{className:`mb-3 text-xs text-muted-foreground`,children:p(`terms.englishOnly`)}),h.map(e=>(0,g.jsxs)(`section`,{className:`mb-4 last:mb-0`,children:[(0,g.jsx)(`h3`,{className:`mb-1 font-semibold`,children:e.heading}),e.body.map((e,t)=>(0,g.jsx)(`p`,{className:`mb-2 leading-relaxed text-muted-foreground last:mb-0 [&_a]:underline [&_a]:underline-offset-2 [&_code]:rounded [&_code]:bg-muted [&_code]:px-1`,dangerouslySetInnerHTML:{__html:_(e)}},t))]},e.heading))]}),(0,g.jsxs)(i,{className:`sm:justify-between`,children:[(0,g.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 text-xs`,children:[(0,g.jsx)(`a`,{href:u.terms,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:p(`terms.online`)}),(0,g.jsx)(`a`,{href:u.privacy,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:p(`terms.privacyLink`)}),(0,g.jsx)(`a`,{href:u.refund,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:p(`terms.refundLink`)})]}),(0,g.jsx)(e,{onClick:d,children:p(`settings.done`)})]})]})})}export{v as TermsDialog};
1
+ import{t as e}from"./CiL8zoYm.js";import{i as t,r as n}from"./Cu_sGzNJ.js";import{a as r,i,n as a,o,r as s,t as c}from"./DzRyVlxz.js";import"./DU-Eln5x.js";import{n as l}from"./D8_hwGjG.js";import{Y as u}from"./CExE8dKz.js";var d=`<a href="mailto:planche.dev@gmail.com">planche.dev@gmail.com</a>`,f=`2 September 2026`,p=`Planche is made and operated by <strong>deploy</strong>, a sole proprietorship registered in the Republic of Korea and owned by Juwon Jeong (“we”, “us”), at 1114 Gyeongui-ro, 4th floor, Room 405, Paju-si, Gyeonggi-do, Republic of Korea. Contact: ${d}.`,m={title:`Terms of Service — Planche`,description:`The terms under which the Planche SQL client, the local agent and Planche Pro are provided.`,ogTitle:`Planche terms of service`,h1:`Terms of Service`,intro:`Last updated ${f}. These terms cover the website and web application at planche.dev, the local agent published on npm as <code>planche</code> and by the install scripts, and the Planche Pro subscription. By using any of them you agree to these terms. ${p}`,cta:`Open Planche`,static:!0,sections:[{heading:`1. What Planche is`,body:[`Planche is a SQL client. The application runs in your browser. For MySQL, MariaDB, PostgreSQL, SQL Server, Oracle and the hosted services it supports, a small program — the local agent — runs on your own computer, holds the database connections and answers the browser over the loopback interface. SQLite files are opened inside the browser itself.`,`We host the application as a static site and nothing else. Your connection profiles, passwords, queries and results travel between your browser, the agent on your machine and your databases; none of them pass through a server of ours. The <a href="{privacy}">privacy policy</a> lists the few things that do reach us or a service we use.`,`Planche is free to use for personal and commercial purposes without an account. A set of advanced features, listed on the <a href="{pricing}">pricing page</a>, requires a Pro licence.`]},{heading:`2. Licence to use the software`,body:[`We grant you a non-exclusive, non-transferable licence to use the Planche application and the local agent, on any number of computers you own or control, for the purpose of working with databases you are authorised to access.`,`You may not redistribute, sell, rent or sublicense Planche or the agent, offer either to third parties as part of a product or service, modify or create derivative works of them, reverse engineer or decompile them except where the law grants you that right regardless of this clause, or remove any copyright or proprietary notice. Planche is proprietary software; it is not open source.`,`The agent package ships with its own licence agreement (the <code>LICENSE</code> file in the package). For the agent, that agreement applies together with these terms; if the two differ, the package licence prevails for the copy you installed.`,`Planche includes third-party open-source components, each under its own licence. Those licences govern those components and nothing here limits the rights they give you. The list is at <a href="/third-party-notices.txt">third-party-notices.txt</a>.`]},{heading:`3. Planche Pro`,body:[`Pro is a subscription, billed monthly or yearly, that unlocks the features listed on the <a href="{pricing}">pricing page</a>. It is sold through a payment provider acting as our merchant of record and authorised reseller: the provider is the seller on the transaction, processes the payment, and collects and remits any VAT or sales tax that applies. The provider’s name, the price, the currency and any tax are shown at checkout before you pay, and the provider’s own terms apply to the purchase itself.`,`After payment you receive a licence key, on the order page and by email. A key is a signed statement of who bought it, which plan and for which period; the application verifies it on your computer without contacting anyone. A key covers <strong>one person</strong> on every computer that person uses. It may not be shared, published, or resold, and a key found published may be excluded from renewal. For several people, buy one licence each or write to us about a team licence.`,`Because a key is verified offline, it cannot be withdrawn before it expires. Keys are therefore issued for exactly the period that was paid for. While your subscription stays paid you receive a key that covers each new period; when it ends, the Pro features stop at the end of the last paid period and everything else keeps working. Nothing you have stored — profiles, history, saved files — is touched.`,`You can cancel at any time from the customer portal linked in your receipt, or by writing to us. Cancelling stops future charges; the current period runs to its end. Refunds are described in the <a href="{refund}">refund policy</a>.`,`If we change the price of Pro, the new price applies from your next renewal at the earliest, and we tell you by email at least 30 days before that renewal so you can cancel first.`]},{heading:`4. Connection sync`,body:[`Connection sync is an optional Pro feature that keeps your connection profiles on more than one computer. Using it means signing in with a GitHub or Google account; that is the only case in which an account exists. Your profiles are encrypted in the browser with a passphrase you choose before they are uploaded, and the passphrase never leaves your machine. We cannot read the vault and we cannot recover it if you lose the passphrase.`,`Sync is only offered on planche.dev. You can delete your account and vault from the application at any time, or by writing to us. We may discontinue sync with at least 30 days’ notice, during which your profiles remain available on every signed-in computer.`]},{heading:`5. AI features`,body:[`Some features can ask a language model to explain a failed statement or a query plan. They only work if you configure a provider, and what is sent goes from the agent on your computer directly to that provider, under that provider’s terms and privacy policy — not through us. The material sent is narrow: the statement with its secrets masked, the database’s own error message, and the column names of the tables the statement refers to. No rows, hosts or credentials.`,`A model’s answer can be wrong. Suggested statements are shown for you to review; running them is your decision, and section 7 applies to it.`]},{heading:`6. Acceptable use`,body:[`You may only use Planche with databases you own or are authorised to access. You may not use it to gain access you do not have, to interfere with a service, or in breach of any law that applies to you. You may not circumvent or disable the licence check, and you may not expose the local agent to the network in a way that lets others use it as a proxy to your databases or to other hosts.`]},{heading:`7. Your data, your responsibility`,body:[`Planche executes the SQL you give it, and SQL can change or delete data. The safeguards in the application — read-only connections, confirmation of destructive statements, dry run — are aids and not guarantees. You are responsible for keeping backups of your databases and for reviewing statements before you run them, and we accept no responsibility for the effect of a statement you ran.`,`Planche stores your connection profiles, and if you choose so your passwords, in your browser’s storage and, for the agent, in a directory under your home folder. Protecting that computer is your responsibility.`]},{heading:`8. Changes to the service`,body:[`We improve Planche continuously and may add, change or remove features. A feature that is free today may become part of Pro in a later version; a version you already have keeps working as it did. We may stop offering the hosted application at planche.dev; the agent can serve its own copy of the application, so an installed Planche keeps working without it.`]},{heading:`9. No warranty`,body:[`PLANCHE IS PROVIDED “AS IS” AND “AS AVAILABLE”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. We do not promise that it will be uninterrupted, error-free or compatible with every database version.`]},{heading:`10. Limitation of liability`,body:[`TO THE EXTENT PERMITTED BY LAW, WE ARE NOT LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES, OR FOR LOSS OF DATA, PROFITS OR BUSINESS, ARISING FROM OR IN CONNECTION WITH PLANCHE. OUR TOTAL LIABILITY FOR ALL CLAIMS TOGETHER IS LIMITED TO THE AMOUNT YOU PAID US FOR PLANCHE IN THE TWELVE MONTHS BEFORE THE CLAIM AROSE.`,`Nothing in these terms excludes or limits liability that cannot be excluded under the law that applies to you, including liability for intent or gross negligence, or any right you have as a consumer under mandatory law.`]},{heading:`11. Termination`,body:[`You can stop using Planche at any time; there is no account to close unless you use sync. We may end your licence if you materially breach these terms, in which case you must stop using the software. Sections 7, 9, 10 and 13 survive termination.`]},{heading:`12. Changes to these terms`,body:[`We may update these terms. The date at the top says when they last changed. A change that affects Pro subscribers materially is announced by email at least 30 days before it takes effect; continued use after that date is acceptance. If you do not agree, cancel before the change takes effect.`]},{heading:`13. Governing law`,body:[`These terms are governed by the laws of the Republic of Korea, and disputes are subject to the courts of Seoul, Republic of Korea. If you are a consumer, this does not take away the protection of the mandatory consumer laws of the country you live in, or your right to bring a claim there.`]},{heading:`14. Contact`,body:[`Questions about these terms: ${d}.`]}]};`${f}${p}`,`${d}`,`${f}${p}`,`${d}`,`${d}`;var h=m.sections,g=n();function _(e){return e.replace(/\{([a-z]+)\}/g,(e,t)=>t in u?u[t]:e).replace(/<a href="/g,`<a target="_blank" rel="noreferrer" href="`)}function v(){let n=l(e=>e.activeDialog),d=l(e=>e.closeDialog),{t:p}=t();return(0,g.jsx)(c,{open:n===`terms`,onOpenChange:e=>{e||d()},children:(0,g.jsxs)(a,{className:`flex max-h-[85vh] flex-col sm:max-w-[640px]`,children:[(0,g.jsxs)(r,{children:[(0,g.jsx)(o,{children:p(`terms.title`)}),(0,g.jsxs)(s,{children:[p(`terms.version`,{version:1}),` · `,p(`terms.updated`,{date:f})]})]}),(0,g.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-md border bg-muted/40 p-4 text-sm`,children:[(0,g.jsx)(`p`,{className:`mb-3 text-xs text-muted-foreground`,children:p(`terms.englishOnly`)}),h.map(e=>(0,g.jsxs)(`section`,{className:`mb-4 last:mb-0`,children:[(0,g.jsx)(`h3`,{className:`mb-1 font-semibold`,children:e.heading}),e.body.map((e,t)=>(0,g.jsx)(`p`,{className:`mb-2 leading-relaxed text-muted-foreground last:mb-0 [&_a]:underline [&_a]:underline-offset-2 [&_code]:rounded [&_code]:bg-muted [&_code]:px-1`,dangerouslySetInnerHTML:{__html:_(e)}},t))]},e.heading))]}),(0,g.jsxs)(i,{className:`sm:justify-between`,children:[(0,g.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 text-xs`,children:[(0,g.jsx)(`a`,{href:u.terms,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:p(`terms.online`)}),(0,g.jsx)(`a`,{href:u.privacy,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:p(`terms.privacyLink`)}),(0,g.jsx)(`a`,{href:u.refund,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:p(`terms.refundLink`)})]}),(0,g.jsx)(e,{onClick:d,children:p(`settings.done`)})]})]})})}export{v as TermsDialog};
@@ -1,3 +1,3 @@
1
- import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{i as n,r,t as i}from"./Cu_sGzNJ.js";import{t as a}from"./CgQ0qqq4.js";import{P as o,R as s}from"./S7HbowYz.js";import{n as c}from"./D8_hwGjG.js";import{n as l}from"./C1gqjEN3.js";import{C as u}from"./BHe42P9W.js";import{g as d}from"./BvEGx3Si.js";import{At as f,E as p,Nt as m,St as h,Ut as g,d as _,dt as v,jt as y,kt as b,qt as x,y as S}from"./B8zpsP_u.js";import{a as C,c as w,d as T,f as E,h as D,i as O,l as k,m as A,n as j,o as M,p as N,r as P,s as F,t as I,u as L}from"./B7zF7RU4.js";import{n as R}from"./Br4335vw.js";var z=e(t(),1),B=r(),V=300;function H({columns:e,rows:t,rowKey:r,readOnly:a,onEdit:o,onDelete:s,addColumns:c,onAdd:l,addExtra:u}){let{t:d}=n(),[f,p]=(0,z.useState)(null),[g,_]=(0,z.useState)(!1),[v,b]=(0,z.useState)({}),[S,C]=(0,z.useState)(!1),w=async e=>{_(!0);try{await e()}catch{}finally{_(!1)}},T=e=>w(async()=>{!f||!o||(await o(e,f.column,f.value),p(null))}),E=()=>w(async()=>{l&&(await l(v),b({}),C(!1))});return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[!a&&l&&c&&(0,B.jsx)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-2 border-b px-3 py-1.5`,children:S?(0,B.jsxs)(B.Fragment,{children:[c.map(e=>(0,B.jsx)(`input`,{className:`h-7 rounded border bg-background px-2 text-xs ${e.numeric?`w-24`:`min-w-40 flex-1`}`,placeholder:e.label,value:v[e.key]??``,onChange:t=>b({...v,[e.key]:t.target.value}),onKeyDown:e=>{e.key===`Enter`&&E()}},e.key)),u,(0,B.jsxs)(`button`,{type:`button`,disabled:g,onClick:()=>void E(),className:`flex h-7 items-center gap-1 rounded border border-primary/30 bg-primary/10 px-2 text-xs text-primary hover:bg-primary/20 disabled:opacity-40`,children:[(0,B.jsx)(x,{className:`size-3`}),d(`keyViewer.add`)]}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>{C(!1),b({})},className:`flex h-7 items-center rounded border px-2 text-xs text-muted-foreground hover:text-foreground`,children:d(`keyViewer.cancel`)})]}):(0,B.jsxs)(`button`,{type:`button`,onClick:()=>C(!0),className:`flex h-7 items-center gap-1 rounded border bg-background px-2 text-xs text-muted-foreground hover:text-foreground`,children:[(0,B.jsx)(y,{className:`size-3`}),d(`keyViewer.addRow`)]})}),(0,B.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:[(0,B.jsxs)(`table`,{className:`w-full border-collapse text-xs`,children:[(0,B.jsx)(`thead`,{className:`sticky top-0 z-10 bg-muted`,children:(0,B.jsxs)(`tr`,{children:[e.map(e=>(0,B.jsx)(`th`,{className:`border-b px-3 py-1.5 text-left font-medium text-muted-foreground ${e.numeric?`w-28`:``}`,children:e.label},e.key)),!a&&(o||s)&&(0,B.jsx)(`th`,{className:`w-16 border-b`})]})}),(0,B.jsx)(`tbody`,{children:t.map((t,n)=>{let c=r(t,n);return(0,B.jsxs)(`tr`,{className:`group border-b border-border/50 hover:bg-muted/40`,children:[e.map(e=>{let n=f?.row===c&&f.column===e.key,r=t[e.key]??``;return(0,B.jsx)(`td`,{className:`px-3 py-1 align-top font-mono ${e.numeric?`text-right tabular-nums`:``}`,children:n?(0,B.jsxs)(`div`,{className:`flex items-start gap-1`,children:[(0,B.jsx)(`textarea`,{autoFocus:!0,className:`min-h-7 w-full resize-y rounded border bg-background px-1.5 py-1 font-mono text-xs`,rows:Math.min(8,Math.max(1,r.split(`
2
- `).length)),value:f.value,onChange:e=>p({...f,value:e.target.value}),onKeyDown:e=>{e.key===`Escape`&&p(null),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&T(t)}}),(0,B.jsx)(`button`,{type:`button`,disabled:g,title:d(`keyViewer.save`),onClick:()=>void T(t),className:`rounded p-1 text-primary hover:bg-primary/10`,children:(0,B.jsx)(x,{className:`size-3.5`})}),(0,B.jsx)(`button`,{type:`button`,title:d(`keyViewer.cancel`),onClick:()=>p(null),className:`rounded p-1 text-muted-foreground hover:bg-muted`,children:(0,B.jsx)(i,{className:`size-3.5`})})]}):e.render?e.render(r):(0,B.jsx)(`span`,{className:`whitespace-pre-wrap break-all`,title:r.length>V?r:void 0,children:r.length>V?`${r.slice(0,V)}…`:r})},e.key)}),!a&&(o||s)&&(0,B.jsx)(`td`,{className:`px-1 py-1 align-top`,children:(0,B.jsxs)(`div`,{className:`flex justify-end gap-0.5 opacity-0 group-hover:opacity-100`,children:[o&&e.some(e=>e.editable)&&(0,B.jsx)(`button`,{type:`button`,title:d(`keyViewer.edit`),onClick:()=>{let n=e.find(e=>e.editable);p({row:c,column:n.key,value:t[n.key]??``})},className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,B.jsx)(m,{className:`size-3`})}),s&&(0,B.jsx)(`button`,{type:`button`,disabled:g,title:d(`keyViewer.deleteRow`),onClick:()=>void w(()=>s(t)),className:`rounded p-1 text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,children:(0,B.jsx)(h,{className:`size-3`})})]})})]},c)})})]}),t.length===0&&(0,B.jsx)(`p`,{className:`p-6 text-center text-xs text-muted-foreground`,children:d(`keyViewer.empty`)})]})]})}var U=e=>e instanceof Error?e.message:String(e);function W(e){let{access:t,onChanged:n,onError:r}=e;return(0,z.useCallback)(async(e,i)=>{try{await t.write(e),await i?.(),n()}catch(e){if(e instanceof Error&&e.name===`ExecutionCancelled`)return;throw r(U(e)),e}},[t,n,r])}function G({onApply:e}){let{t}=n(),[r,i]=(0,z.useState)(``);return(0,B.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,B.jsx)(b,{className:`size-3.5 text-muted-foreground`}),(0,B.jsx)(`input`,{className:`h-7 w-56 rounded border bg-background px-2 text-xs`,placeholder:t(`keyViewer.filterPlaceholder`),value:r,onChange:e=>i(e.target.value),onKeyDown:t=>{t.key===`Enter`&&e(j(r))}})]})}function K({shown:e,total:t,hasMore:r,onMore:i,loading:a}){let{t:o}=n();return(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 items-center gap-3 border-t px-3 py-1 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:t===null?o(`keyViewer.shown`,{count:e}):o(`keyViewer.shownOf`,{count:e,total:t})}),r&&(0,B.jsx)(`button`,{type:`button`,disabled:a,onClick:i,className:`rounded border bg-background px-2 py-0.5 hover:text-foreground disabled:opacity-40`,children:o(`keyViewer.loadMore`)})]})}function q({props:e,load:t,save:r}){let{t:i}=n(),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(`preview`),[m,h]=(0,z.useState)(!1),{onError:g}=e,v=(0,z.useCallback)(async(e=!1)=>{try{let n=await t(e);o(n.text),c(n.text),u(n.partial)}catch(e){g(U(e))}},[t,g]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>v())},[v]);let y=S(s),b=d===`preview`&&y.kind!==`text`,x=a!==null&&s!==a,C=async()=>{h(!0);try{await r(s),o(s)}catch{}finally{h(!1)}};if(a===null)return(0,B.jsx)(`p`,{className:`p-6 text-xs text-muted-foreground`,children:i(`keyViewer.loading`)});let w=e=>`rounded px-2 py-0.5 ${e?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`}`;return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5 text-xs`,children:[y.kind!==`text`&&(0,B.jsxs)(`div`,{className:`flex items-center gap-0.5 rounded border p-0.5`,children:[(0,B.jsx)(`button`,{type:`button`,className:w(b),onClick:()=>f(`preview`),children:i(y.kind===`json`?`keyViewer.viewTree`:`keyViewer.viewHtml`)}),(0,B.jsx)(`button`,{type:`button`,className:w(!b),onClick:()=>f(`text`),children:i(`keyViewer.viewText`)})]}),!b&&y.kind===`json`&&!e.access.readOnly&&!l&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>c(A(s)??s),className:`rounded border bg-background px-2 py-0.5 text-muted-foreground hover:text-foreground`,children:i(`keyViewer.formatJson`)}),l&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`text-catppuccin-yellow`,children:i(`keyViewer.truncated`,{size:P(1048576)})}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>void v(!0),className:`rounded border bg-background px-2 py-0.5 text-muted-foreground hover:text-foreground`,children:i(`keyViewer.loadFull`)})]}),(0,B.jsx)(`div`,{className:`flex-1`}),!e.access.readOnly&&!l&&(0,B.jsxs)(B.Fragment,{children:[x&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>c(a),className:`rounded border bg-background px-2 py-0.5 text-muted-foreground hover:text-foreground`,children:i(`keyViewer.revert`)}),(0,B.jsx)(`button`,{type:`button`,disabled:!x||m,onClick:()=>void C(),className:`rounded border border-primary/30 bg-primary/10 px-2 py-0.5 text-primary hover:bg-primary/20 disabled:opacity-40`,children:i(`keyViewer.save`)})]})]}),b&&y.kind===`json`?(0,B.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto py-3 pl-7 pr-3 font-mono text-xs`,children:(0,B.jsx)(p,{value:y.document,defaultExpanded:!0})}):b&&y.kind===`html`?(0,B.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,B.jsx)(_,{html:s})}):(0,B.jsx)(`textarea`,{className:`min-h-0 flex-1 resize-none bg-background p-3 font-mono text-xs outline-none`,spellCheck:!1,readOnly:e.access.readOnly||l,value:s,onChange:e=>c(e.target.value)})]})}function J(e){let{access:t,keyName:n,length:r,ttl:i}=e,a=W(e),o=(0,z.useCallback)(async e=>{let i=!e&&r!==null&&r>1048576,a=await t.read(C.getString(n,i?I:void 0));return{text:a==null?``:String(a),partial:i}},[t,n,r]),s=(0,z.useCallback)(async e=>{try{await a(C.setString(n,e))}catch(t){if(!/syntax|KEEPTTL/i.test(U(t)))throw t;await a(C.setStringWithTtl(n,e,i))}},[a,n,i]);return(0,B.jsx)(q,{props:e,load:o,save:s})}function Y(e){let{access:t,keyName:n}=e,r=W(e),i=(0,z.useCallback)(async()=>{let e=await t.read(C.getJson(n));return{text:e==null?``:String(e),partial:!1}},[t,n]),a=(0,z.useCallback)(async e=>{JSON.parse(e),await r(C.setJson(n,e))},[r,n]);return(0,B.jsx)(q,{props:e,load:i,save:a})}function X(e,t,n){let{access:r,onError:i}=e,[a,o]=(0,z.useState)([]),[s,c]=(0,z.useState)(`0`),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)(!1),h=(0,z.useCallback)(async(e,a,s)=>{f(!0);try{let i=e,l=[];do{let e=n(await r.read(t(i,a)));l.push(...e.items),i=e.cursor}while(i!==`0`&&l.length===0);o(e=>s?[...e,...l]:l),c(i),m(!0)}catch(e){i(U(e))}finally{f(!1)}},[r,t,n,i]);return(0,z.useEffect)(()=>{Promise.resolve().then(()=>h(`0`,l,!1))},[h,l]),{items:a,setItems:o,loading:d,started:p,hasMore:p&&s!==`0`,loadMore:()=>void h(s,l,!0),applyFilter:u,reload:()=>void h(`0`,l,!1)}}function Z(e){let{t}=n(),{keyName:r,length:i,access:a}=e,o=W(e),s=X(e,(0,z.useCallback)((e,t)=>C.scan(r,`hash`,e,t),[r]),w),c=[{key:`field`,label:t(`keyViewer.field`)},{key:`value`,label:t(`keyViewer.value`),editable:!0}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:(0,B.jsx)(G,{onApply:s.applyFilter})}),(0,B.jsx)(H,{columns:c,rows:s.items.map(e=>({field:e.field,value:e.value})),rowKey:e=>e.field,readOnly:a.readOnly,onEdit:(e,t,n)=>o(C.hashSet(r,e.field,n),()=>{s.setItems(t=>t.map(t=>t.field===e.field?{...t,value:n}:t))}),onDelete:e=>o(C.hashDelete(r,e.field),()=>{s.setItems(t=>t.filter(t=>t.field!==e.field))}),addColumns:c.map(e=>({...e,editable:!1})),onAdd:e=>o(C.hashSet(r,e.field??``,e.value??``),s.reload)}),(0,B.jsx)(K,{shown:s.items.length,total:i,hasMore:s.hasMore,onMore:s.loadMore,loading:s.loading})]})}function Q(e){let{t}=n(),{keyName:r,length:i,access:a}=e,o=W(e),s=X(e,(0,z.useCallback)((e,t)=>C.scan(r,`set`,e,t),[r]),L),c=[{key:`member`,label:t(`keyViewer.member`)}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:(0,B.jsx)(G,{onApply:s.applyFilter})}),(0,B.jsx)(H,{columns:c,rows:s.items.map(e=>({member:e})),rowKey:e=>e.member,readOnly:a.readOnly,onDelete:e=>o(C.setRemove(r,e.member),()=>{s.setItems(t=>t.filter(t=>t!==e.member))}),addColumns:c,onAdd:e=>o(C.setAdd(r,e.member??``),s.reload)}),(0,B.jsx)(K,{shown:s.items.length,total:i,hasMore:s.hasMore,onMore:s.loadMore,loading:s.loading})]})}function ee(e){let{t}=n(),{keyName:r,length:i,access:a}=e,o=W(e),s=X(e,(0,z.useCallback)((e,t)=>C.scan(r,`zset`,e,t),[r]),N),c=[{key:`member`,label:t(`keyViewer.member`)},{key:`score`,label:t(`keyViewer.score`),editable:!0,numeric:!0}],l=[...s.items].sort((e,t)=>Number(e.score)-Number(t.score)).map(e=>({member:e.member,score:e.score}));return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:(0,B.jsx)(G,{onApply:s.applyFilter})}),(0,B.jsx)(H,{columns:c,rows:l,rowKey:e=>e.member,readOnly:a.readOnly,onEdit:(e,t,n)=>o(C.zsetAdd(r,e.member,n.trim()),()=>{s.setItems(t=>t.map(t=>t.member===e.member?{...t,score:n.trim()}:t))}),onDelete:e=>o(C.zsetRemove(r,e.member),()=>{s.setItems(t=>t.filter(t=>t.member!==e.member))}),addColumns:[{key:`member`,label:t(`keyViewer.member`)},{key:`score`,label:t(`keyViewer.score`),numeric:!0}],onAdd:e=>o(C.zsetAdd(r,e.member??``,(e.score??`0`).trim()||`0`),s.reload)}),(0,B.jsx)(K,{shown:s.items.length,total:i,hasMore:s.hasMore,onMore:s.loadMore,loading:s.loading})]})}function te(e){let{t}=n(),{keyName:r,length:i,access:a,onError:o}=e,s=W(e),[c,l]=(0,z.useState)([]),[u,d]=(0,z.useState)(!1),[f,p]=(0,z.useState)(!1),m=(0,z.useCallback)(async e=>{d(!0);try{let t=k(await a.read(C.listRange(r,e)));l(n=>e===0?t:[...n,...t])}catch(e){o(U(e))}finally{d(!1)}},[a,r,o]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>m(0))},[m]);let h=[{key:`index`,label:t(`keyViewer.index`),numeric:!0},{key:`value`,label:t(`keyViewer.value`),editable:!0}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(H,{columns:h,rows:c.map((e,t)=>({index:String(t),value:e})),rowKey:e=>e.index,readOnly:a.readOnly,onEdit:(e,t,n)=>s(C.listSet(r,Number(e.index),n),()=>{l(t=>t.map((t,r)=>r===Number(e.index)?n:t))}),onDelete:async e=>{let t=M();await s(C.listSet(r,Number(e.index),t)),await s(C.listRemoveOne(r,t),()=>m(0))},addColumns:[{key:`value`,label:t(`keyViewer.value`)}],addExtra:(0,B.jsxs)(`select`,{value:f?`head`:`tail`,onChange:e=>p(e.target.value===`head`),className:`h-7 rounded border bg-background px-1 text-xs`,children:[(0,B.jsx)(`option`,{value:`tail`,children:t(`keyViewer.pushTail`)}),(0,B.jsx)(`option`,{value:`head`,children:t(`keyViewer.pushHead`)})]}),onAdd:e=>s(C.listPush(r,e.value??``,f),()=>m(0))}),(0,B.jsx)(K,{shown:c.length,total:i,hasMore:i!==null&&c.length<i,onMore:()=>void m(c.length),loading:u})]})}function ne(e){let{t}=n(),{keyName:r,length:i,access:a,onError:o}=e,s=W(e),[c,l]=(0,z.useState)([]),[u,d]=(0,z.useState)(!1),f=(0,z.useCallback)(async e=>{d(!0);try{let t=T(await a.read(C.streamRange(r,e)));l(n=>e?[...n,...t]:t)}catch(e){o(U(e))}finally{d(!1)}},[a,r,o]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>f())},[f]);let p=c.map(e=>({id:e.id,fields:JSON.stringify(e.fields)})),m=[{key:`id`,label:t(`keyViewer.entryId`)},{key:`fields`,label:t(`keyViewer.fields`),render:e=>(0,B.jsx)(`dl`,{className:`grid grid-cols-[max-content_1fr] gap-x-3`,children:JSON.parse(e).map(([e,t],n)=>(0,B.jsxs)(`div`,{className:`contents`,children:[(0,B.jsx)(`dt`,{className:`text-muted-foreground`,children:e}),(0,B.jsx)(`dd`,{className:`break-all`,children:t})]},n))})}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(H,{columns:m,rows:p,rowKey:e=>e.id,readOnly:a.readOnly,onDelete:e=>s(C.streamDelete(r,e.id),()=>{l(t=>t.filter(t=>t.id!==e.id))}),addColumns:[{key:`fields`,label:t(`keyViewer.entryFieldsPlaceholder`)}],onAdd:e=>{let n=F((e.fields??``).replaceAll(`;`,`
3
- `));return n.length===0?(o(t(`keyViewer.entryFieldsRequired`)),Promise.reject(Error(t(`keyViewer.entryFieldsRequired`)))):s(C.streamAdd(r,n),()=>f())}}),(0,B.jsx)(K,{shown:c.length,total:i,hasMore:i!==null&&c.length<i,onMore:()=>void f(c[c.length-1]?.id),loading:u})]})}var re={string:J,hash:Z,list:te,set:Q,zset:ee,stream:ne,"ReJSON-RL":Y};function $(e,t,n,r=null){for(let i of e){if(i.type===s.KEY&&i.metadata?.database===t&&i.metadata.key===n)return r;let e=$(i.children,t,n,i);if(e)return e}return null}function ie({connectionId:e,tabId:t,item:r}){let{t:s}=n(),p=R(e,t,r),{loadChildren:_}=d(),[y,b]=(0,z.useState)(null),[S,w]=(0,z.useState)(!1),[T,k]=(0,z.useState)(null),[A,j]=(0,z.useState)(0),[M,N]=(0,z.useState)(null),[F,I]=(0,z.useState)(null),L=r.name,V=(0,z.useCallback)(async()=>{if(p.connected)try{let e=String(await p.read(C.type(L)));if(e===`none`){w(!0),b(null);return}let t=C.length(L,e),[n,r,i,a]=await Promise.all([p.read(C.ttl(L)),t?p.tryRead(t):Promise.resolve(null),p.tryRead(C.memory(L)),p.tryRead(C.encoding(L))]),o=E(n);w(o===`gone`),b({type:e,ttl:o===`gone`?null:o,length:D(r),memory:D(i),encoding:typeof a==`string`?a:null})}catch(e){k(e instanceof Error?e.message:String(e))}},[p,L]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>V())},[V]);let H=(0,z.useCallback)(t=>{let n=$(u.getState().trees[e]??[],r.database,t);n&&_(e,n)},[e,r.database,_]),U=async e=>{try{k(null),await e()}catch(e){if(e instanceof Error&&e.name===`ExecutionCancelled`)return;k(e instanceof Error?e.message:String(e))}},W=n=>U(async()=>{if(!n||n===L){N(null);return}let i=await p.write(C.renameIfFree(L,n));if(Number(i)!==1)throw Error(s(`keyViewer.renameTaken`,{name:n}));N(null),H(L),l.getState().setSourceItem(e,t,{database:r.database,name:n})}),G=e=>U(async()=>{let t=Number(e);if(e.trim()===``)await p.write(C.persist(L));else if(!Number.isInteger(t)||t<=0)throw Error(s(`keyViewer.ttlInvalid`));else await p.write(C.expire(L,t));I(null),await V()}),K=()=>U(async()=>{let n=C.remove(L);await c.getState().requestDestructiveConfirm({title:s(`keyViewer.deleteTitle`,{name:L}),description:s(`keyViewer.deleteDescription`),statements:[n],confirmLabel:s(`keyViewer.delete`)})&&(await p.write(n,{confirmed:!0}),H(L),l.getState().removeQueryTab(e,t))}),q=()=>{y&&v(e,o(y.type,L),r.database,L)};if(!p.connected)return(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.notConnected`)});let J=y?re[y.type]:void 0,Y=`flex h-7 items-center gap-1 rounded border bg-background px-2 text-xs text-muted-foreground hover:text-foreground disabled:opacity-40`;return(0,B.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-x-3 gap-y-1.5 border-b bg-muted/30 px-3 py-1.5 text-xs`,children:[y&&(0,B.jsx)(`span`,{className:`rounded bg-primary/15 px-1.5 py-0.5 font-mono text-[10px] font-semibold uppercase text-primary`,children:y.type===`ReJSON-RL`?`json`:y.type}),M===null?(0,B.jsxs)(`span`,{className:`flex items-center gap-1 font-mono text-sm font-medium`,children:[L,!p.readOnly&&!S&&(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.rename`),onClick:()=>N(L),className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,B.jsx)(m,{className:`size-3`})})]}):(0,B.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,B.jsx)(`input`,{autoFocus:!0,className:`h-7 w-72 rounded border bg-background px-2 font-mono text-xs`,value:M,onChange:e=>N(e.target.value),onKeyDown:e=>{e.key===`Enter`&&W(M),e.key===`Escape`&&N(null)}}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.save`),onClick:()=>void W(M),className:`rounded p-1 text-primary hover:bg-primary/10`,children:(0,B.jsx)(x,{className:`size-3.5`})}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.cancel`),onClick:()=>N(null),className:`rounded p-1 text-muted-foreground hover:bg-muted`,children:(0,B.jsx)(i,{className:`size-3.5`})})]}),y&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-1 text-muted-foreground`,children:[(0,B.jsx)(g,{className:`size-3`}),F===null?(0,B.jsx)(`button`,{type:`button`,disabled:p.readOnly,onClick:()=>I(y.ttl===null?``:String(y.ttl)),className:`rounded px-1 hover:bg-muted hover:text-foreground disabled:hover:bg-transparent`,title:p.readOnly?void 0:s(`keyViewer.ttlEdit`),children:y.ttl===null?s(`keyViewer.noExpiry`):O(y.ttl)}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`input`,{autoFocus:!0,className:`h-6 w-24 rounded border bg-background px-1.5 text-xs`,placeholder:s(`keyViewer.ttlPlaceholder`),value:F,onChange:e=>I(e.target.value),onKeyDown:e=>{e.key===`Enter`&&G(F),e.key===`Escape`&&I(null)}}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.save`),onClick:()=>void G(F),className:`rounded p-1 text-primary hover:bg-primary/10`,children:(0,B.jsx)(x,{className:`size-3.5`})}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.cancel`),onClick:()=>I(null),className:`rounded p-1 hover:bg-muted`,children:(0,B.jsx)(i,{className:`size-3.5`})})]})]}),y.length!==null&&(0,B.jsx)(`span`,{className:`text-muted-foreground`,children:s(y.type===`string`?`keyViewer.bytes`:`keyViewer.length`,{count:y.length})}),(0,B.jsx)(`span`,{className:`text-muted-foreground`,title:y.encoding?s(`keyViewer.encoding`,{encoding:y.encoding}):void 0,children:s(`keyViewer.memory`,{size:P(y.memory)})})]}),(0,B.jsx)(`div`,{className:`flex-1`}),(0,B.jsxs)(`button`,{type:`button`,className:Y,onClick:()=>{k(null),j(e=>e+1),V()},children:[(0,B.jsx)(f,{className:`size-3`}),s(`keyViewer.refresh`)]}),(0,B.jsxs)(`button`,{type:`button`,className:Y,disabled:!y,onClick:q,children:[(0,B.jsx)(a,{className:`size-3`}),s(`keyViewer.openInConsole`)]}),!p.readOnly&&!S&&(0,B.jsxs)(`button`,{type:`button`,className:`${Y} hover:border-destructive/40 hover:text-destructive`,onClick:()=>void K(),children:[(0,B.jsx)(h,{className:`size-3`}),s(`keyViewer.delete`)]})]}),T&&(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 items-start gap-2 border-b border-destructive/30 bg-destructive/10 px-3 py-1.5 text-xs text-destructive`,children:[(0,B.jsx)(`span`,{className:`flex-1 whitespace-pre-wrap`,children:T}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>k(null),children:(0,B.jsx)(i,{className:`size-3.5`})})]}),S?(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.gone`)}):y?J?(0,B.jsx)(J,{access:p,keyName:L,length:y.length,ttl:y.ttl,onChanged:()=>void V(),onError:k},`${L}:${A}`):(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.unsupported`,{type:y.type})}):(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.loading`)})]})}export{ie as RedisKeyViewer};
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{i as n,r,t as i}from"./Cu_sGzNJ.js";import{t as a}from"./CgQ0qqq4.js";import{P as o,R as s}from"./S7HbowYz.js";import{n as c}from"./D8_hwGjG.js";import{n as l}from"./C1gqjEN3.js";import{C as u}from"./BkXrfAoR.js";import{g as d}from"./BnJGrP6V.js";import{E as f,Ft as p,Gt as m,Mt as h,Nt as g,Yt as _,d as v,jt as y,pt as b,wt as x,y as S}from"./CExE8dKz.js";import{a as C,c as w,d as T,f as E,h as D,i as O,l as k,m as A,n as j,o as M,p as N,r as P,s as F,t as I,u as L}from"./B7zF7RU4.js";import{n as R}from"./84VwJAQi.js";var z=e(t(),1),B=r(),V=300;function H({columns:e,rows:t,rowKey:r,readOnly:a,onEdit:o,onDelete:s,addColumns:c,onAdd:l,addExtra:u}){let{t:d}=n(),[f,m]=(0,z.useState)(null),[h,v]=(0,z.useState)(!1),[y,b]=(0,z.useState)({}),[S,C]=(0,z.useState)(!1),w=async e=>{v(!0);try{await e()}catch{}finally{v(!1)}},T=e=>w(async()=>{!f||!o||(await o(e,f.column,f.value),m(null))}),E=()=>w(async()=>{l&&(await l(y),b({}),C(!1))});return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[!a&&l&&c&&(0,B.jsx)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-2 border-b px-3 py-1.5`,children:S?(0,B.jsxs)(B.Fragment,{children:[c.map(e=>(0,B.jsx)(`input`,{className:`h-7 rounded border bg-background px-2 text-xs ${e.numeric?`w-24`:`min-w-40 flex-1`}`,placeholder:e.label,value:y[e.key]??``,onChange:t=>b({...y,[e.key]:t.target.value}),onKeyDown:e=>{e.key===`Enter`&&E()}},e.key)),u,(0,B.jsxs)(`button`,{type:`button`,disabled:h,onClick:()=>void E(),className:`flex h-7 items-center gap-1 rounded border border-primary/30 bg-primary/10 px-2 text-xs text-primary hover:bg-primary/20 disabled:opacity-40`,children:[(0,B.jsx)(_,{className:`size-3`}),d(`keyViewer.add`)]}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>{C(!1),b({})},className:`flex h-7 items-center rounded border px-2 text-xs text-muted-foreground hover:text-foreground`,children:d(`keyViewer.cancel`)})]}):(0,B.jsxs)(`button`,{type:`button`,onClick:()=>C(!0),className:`flex h-7 items-center gap-1 rounded border bg-background px-2 text-xs text-muted-foreground hover:text-foreground`,children:[(0,B.jsx)(g,{className:`size-3`}),d(`keyViewer.addRow`)]})}),(0,B.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:[(0,B.jsxs)(`table`,{className:`w-full border-collapse text-xs`,children:[(0,B.jsx)(`thead`,{className:`sticky top-0 z-10 bg-muted`,children:(0,B.jsxs)(`tr`,{children:[e.map(e=>(0,B.jsx)(`th`,{className:`border-b px-3 py-1.5 text-left font-medium text-muted-foreground ${e.numeric?`w-28`:``}`,children:e.label},e.key)),!a&&(o||s)&&(0,B.jsx)(`th`,{className:`w-16 border-b`})]})}),(0,B.jsx)(`tbody`,{children:t.map((t,n)=>{let c=r(t,n);return(0,B.jsxs)(`tr`,{className:`group border-b border-border/50 hover:bg-muted/40`,children:[e.map(e=>{let n=f?.row===c&&f.column===e.key,r=t[e.key]??``;return(0,B.jsx)(`td`,{className:`px-3 py-1 align-top font-mono ${e.numeric?`text-right tabular-nums`:``}`,children:n?(0,B.jsxs)(`div`,{className:`flex items-start gap-1`,children:[(0,B.jsx)(`textarea`,{autoFocus:!0,className:`min-h-7 w-full resize-y rounded border bg-background px-1.5 py-1 font-mono text-xs`,rows:Math.min(8,Math.max(1,r.split(`
2
+ `).length)),value:f.value,onChange:e=>m({...f,value:e.target.value}),onKeyDown:e=>{e.key===`Escape`&&m(null),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&T(t)}}),(0,B.jsx)(`button`,{type:`button`,disabled:h,title:d(`keyViewer.save`),onClick:()=>void T(t),className:`rounded p-1 text-primary hover:bg-primary/10`,children:(0,B.jsx)(_,{className:`size-3.5`})}),(0,B.jsx)(`button`,{type:`button`,title:d(`keyViewer.cancel`),onClick:()=>m(null),className:`rounded p-1 text-muted-foreground hover:bg-muted`,children:(0,B.jsx)(i,{className:`size-3.5`})})]}):e.render?e.render(r):(0,B.jsx)(`span`,{className:`whitespace-pre-wrap break-all`,title:r.length>V?r:void 0,children:r.length>V?`${r.slice(0,V)}…`:r})},e.key)}),!a&&(o||s)&&(0,B.jsx)(`td`,{className:`px-1 py-1 align-top`,children:(0,B.jsxs)(`div`,{className:`flex justify-end gap-0.5 opacity-0 group-hover:opacity-100`,children:[o&&e.some(e=>e.editable)&&(0,B.jsx)(`button`,{type:`button`,title:d(`keyViewer.edit`),onClick:()=>{let n=e.find(e=>e.editable);m({row:c,column:n.key,value:t[n.key]??``})},className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,B.jsx)(p,{className:`size-3`})}),s&&(0,B.jsx)(`button`,{type:`button`,disabled:h,title:d(`keyViewer.deleteRow`),onClick:()=>void w(()=>s(t)),className:`rounded p-1 text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,children:(0,B.jsx)(x,{className:`size-3`})})]})})]},c)})})]}),t.length===0&&(0,B.jsx)(`p`,{className:`p-6 text-center text-xs text-muted-foreground`,children:d(`keyViewer.empty`)})]})]})}var U=e=>e instanceof Error?e.message:String(e);function W(e){let{access:t,onChanged:n,onError:r}=e;return(0,z.useCallback)(async(e,i)=>{try{await t.write(e),await i?.(),n()}catch(e){if(e instanceof Error&&e.name===`ExecutionCancelled`)return;throw r(U(e)),e}},[t,n,r])}function G({onApply:e}){let{t}=n(),[r,i]=(0,z.useState)(``);return(0,B.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,B.jsx)(y,{className:`size-3.5 text-muted-foreground`}),(0,B.jsx)(`input`,{className:`h-7 w-56 rounded border bg-background px-2 text-xs`,placeholder:t(`keyViewer.filterPlaceholder`),value:r,onChange:e=>i(e.target.value),onKeyDown:t=>{t.key===`Enter`&&e(j(r))}})]})}function K({shown:e,total:t,hasMore:r,onMore:i,loading:a}){let{t:o}=n();return(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 items-center gap-3 border-t px-3 py-1 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:t===null?o(`keyViewer.shown`,{count:e}):o(`keyViewer.shownOf`,{count:e,total:t})}),r&&(0,B.jsx)(`button`,{type:`button`,disabled:a,onClick:i,className:`rounded border bg-background px-2 py-0.5 hover:text-foreground disabled:opacity-40`,children:o(`keyViewer.loadMore`)})]})}function q({props:e,load:t,save:r}){let{t:i}=n(),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(!1),[d,p]=(0,z.useState)(`preview`),[m,h]=(0,z.useState)(!1),{onError:g}=e,_=(0,z.useCallback)(async(e=!1)=>{try{let n=await t(e);o(n.text),c(n.text),u(n.partial)}catch(e){g(U(e))}},[t,g]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>_())},[_]);let y=S(s),b=d===`preview`&&y.kind!==`text`,x=a!==null&&s!==a,C=async()=>{h(!0);try{await r(s),o(s)}catch{}finally{h(!1)}};if(a===null)return(0,B.jsx)(`p`,{className:`p-6 text-xs text-muted-foreground`,children:i(`keyViewer.loading`)});let w=e=>`rounded px-2 py-0.5 ${e?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`}`;return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5 text-xs`,children:[y.kind!==`text`&&(0,B.jsxs)(`div`,{className:`flex items-center gap-0.5 rounded border p-0.5`,children:[(0,B.jsx)(`button`,{type:`button`,className:w(b),onClick:()=>p(`preview`),children:i(y.kind===`json`?`keyViewer.viewTree`:`keyViewer.viewHtml`)}),(0,B.jsx)(`button`,{type:`button`,className:w(!b),onClick:()=>p(`text`),children:i(`keyViewer.viewText`)})]}),!b&&y.kind===`json`&&!e.access.readOnly&&!l&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>c(A(s)??s),className:`rounded border bg-background px-2 py-0.5 text-muted-foreground hover:text-foreground`,children:i(`keyViewer.formatJson`)}),l&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`text-catppuccin-yellow`,children:i(`keyViewer.truncated`,{size:P(1048576)})}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>void _(!0),className:`rounded border bg-background px-2 py-0.5 text-muted-foreground hover:text-foreground`,children:i(`keyViewer.loadFull`)})]}),(0,B.jsx)(`div`,{className:`flex-1`}),!e.access.readOnly&&!l&&(0,B.jsxs)(B.Fragment,{children:[x&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>c(a),className:`rounded border bg-background px-2 py-0.5 text-muted-foreground hover:text-foreground`,children:i(`keyViewer.revert`)}),(0,B.jsx)(`button`,{type:`button`,disabled:!x||m,onClick:()=>void C(),className:`rounded border border-primary/30 bg-primary/10 px-2 py-0.5 text-primary hover:bg-primary/20 disabled:opacity-40`,children:i(`keyViewer.save`)})]})]}),b&&y.kind===`json`?(0,B.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto py-3 pl-7 pr-3 font-mono text-xs`,children:(0,B.jsx)(f,{value:y.document,defaultExpanded:!0})}):b&&y.kind===`html`?(0,B.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,B.jsx)(v,{html:s})}):(0,B.jsx)(`textarea`,{className:`min-h-0 flex-1 resize-none bg-background p-3 font-mono text-xs outline-none`,spellCheck:!1,readOnly:e.access.readOnly||l,value:s,onChange:e=>c(e.target.value)})]})}function J(e){let{access:t,keyName:n,length:r,ttl:i}=e,a=W(e),o=(0,z.useCallback)(async e=>{let i=!e&&r!==null&&r>1048576,a=await t.read(C.getString(n,i?I:void 0));return{text:a==null?``:String(a),partial:i}},[t,n,r]),s=(0,z.useCallback)(async e=>{try{await a(C.setString(n,e))}catch(t){if(!/syntax|KEEPTTL/i.test(U(t)))throw t;await a(C.setStringWithTtl(n,e,i))}},[a,n,i]);return(0,B.jsx)(q,{props:e,load:o,save:s})}function Y(e){let{access:t,keyName:n}=e,r=W(e),i=(0,z.useCallback)(async()=>{let e=await t.read(C.getJson(n));return{text:e==null?``:String(e),partial:!1}},[t,n]),a=(0,z.useCallback)(async e=>{JSON.parse(e),await r(C.setJson(n,e))},[r,n]);return(0,B.jsx)(q,{props:e,load:i,save:a})}function X(e,t,n){let{access:r,onError:i}=e,[a,o]=(0,z.useState)([]),[s,c]=(0,z.useState)(`0`),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)(!1),h=(0,z.useCallback)(async(e,a,s)=>{f(!0);try{let i=e,l=[];do{let e=n(await r.read(t(i,a)));l.push(...e.items),i=e.cursor}while(i!==`0`&&l.length===0);o(e=>s?[...e,...l]:l),c(i),m(!0)}catch(e){i(U(e))}finally{f(!1)}},[r,t,n,i]);return(0,z.useEffect)(()=>{Promise.resolve().then(()=>h(`0`,l,!1))},[h,l]),{items:a,setItems:o,loading:d,started:p,hasMore:p&&s!==`0`,loadMore:()=>void h(s,l,!0),applyFilter:u,reload:()=>void h(`0`,l,!1)}}function Z(e){let{t}=n(),{keyName:r,length:i,access:a}=e,o=W(e),s=X(e,(0,z.useCallback)((e,t)=>C.scan(r,`hash`,e,t),[r]),w),c=[{key:`field`,label:t(`keyViewer.field`)},{key:`value`,label:t(`keyViewer.value`),editable:!0}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:(0,B.jsx)(G,{onApply:s.applyFilter})}),(0,B.jsx)(H,{columns:c,rows:s.items.map(e=>({field:e.field,value:e.value})),rowKey:e=>e.field,readOnly:a.readOnly,onEdit:(e,t,n)=>o(C.hashSet(r,e.field,n),()=>{s.setItems(t=>t.map(t=>t.field===e.field?{...t,value:n}:t))}),onDelete:e=>o(C.hashDelete(r,e.field),()=>{s.setItems(t=>t.filter(t=>t.field!==e.field))}),addColumns:c.map(e=>({...e,editable:!1})),onAdd:e=>o(C.hashSet(r,e.field??``,e.value??``),s.reload)}),(0,B.jsx)(K,{shown:s.items.length,total:i,hasMore:s.hasMore,onMore:s.loadMore,loading:s.loading})]})}function Q(e){let{t}=n(),{keyName:r,length:i,access:a}=e,o=W(e),s=X(e,(0,z.useCallback)((e,t)=>C.scan(r,`set`,e,t),[r]),L),c=[{key:`member`,label:t(`keyViewer.member`)}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:(0,B.jsx)(G,{onApply:s.applyFilter})}),(0,B.jsx)(H,{columns:c,rows:s.items.map(e=>({member:e})),rowKey:e=>e.member,readOnly:a.readOnly,onDelete:e=>o(C.setRemove(r,e.member),()=>{s.setItems(t=>t.filter(t=>t!==e.member))}),addColumns:c,onAdd:e=>o(C.setAdd(r,e.member??``),s.reload)}),(0,B.jsx)(K,{shown:s.items.length,total:i,hasMore:s.hasMore,onMore:s.loadMore,loading:s.loading})]})}function ee(e){let{t}=n(),{keyName:r,length:i,access:a}=e,o=W(e),s=X(e,(0,z.useCallback)((e,t)=>C.scan(r,`zset`,e,t),[r]),N),c=[{key:`member`,label:t(`keyViewer.member`)},{key:`score`,label:t(`keyViewer.score`),editable:!0,numeric:!0}],l=[...s.items].sort((e,t)=>Number(e.score)-Number(t.score)).map(e=>({member:e.member,score:e.score}));return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(`div`,{className:`flex flex-shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:(0,B.jsx)(G,{onApply:s.applyFilter})}),(0,B.jsx)(H,{columns:c,rows:l,rowKey:e=>e.member,readOnly:a.readOnly,onEdit:(e,t,n)=>o(C.zsetAdd(r,e.member,n.trim()),()=>{s.setItems(t=>t.map(t=>t.member===e.member?{...t,score:n.trim()}:t))}),onDelete:e=>o(C.zsetRemove(r,e.member),()=>{s.setItems(t=>t.filter(t=>t.member!==e.member))}),addColumns:[{key:`member`,label:t(`keyViewer.member`)},{key:`score`,label:t(`keyViewer.score`),numeric:!0}],onAdd:e=>o(C.zsetAdd(r,e.member??``,(e.score??`0`).trim()||`0`),s.reload)}),(0,B.jsx)(K,{shown:s.items.length,total:i,hasMore:s.hasMore,onMore:s.loadMore,loading:s.loading})]})}function te(e){let{t}=n(),{keyName:r,length:i,access:a,onError:o}=e,s=W(e),[c,l]=(0,z.useState)([]),[u,d]=(0,z.useState)(!1),[f,p]=(0,z.useState)(!1),m=(0,z.useCallback)(async e=>{d(!0);try{let t=k(await a.read(C.listRange(r,e)));l(n=>e===0?t:[...n,...t])}catch(e){o(U(e))}finally{d(!1)}},[a,r,o]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>m(0))},[m]);let h=[{key:`index`,label:t(`keyViewer.index`),numeric:!0},{key:`value`,label:t(`keyViewer.value`),editable:!0}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(H,{columns:h,rows:c.map((e,t)=>({index:String(t),value:e})),rowKey:e=>e.index,readOnly:a.readOnly,onEdit:(e,t,n)=>s(C.listSet(r,Number(e.index),n),()=>{l(t=>t.map((t,r)=>r===Number(e.index)?n:t))}),onDelete:async e=>{let t=M();await s(C.listSet(r,Number(e.index),t)),await s(C.listRemoveOne(r,t),()=>m(0))},addColumns:[{key:`value`,label:t(`keyViewer.value`)}],addExtra:(0,B.jsxs)(`select`,{value:f?`head`:`tail`,onChange:e=>p(e.target.value===`head`),className:`h-7 rounded border bg-background px-1 text-xs`,children:[(0,B.jsx)(`option`,{value:`tail`,children:t(`keyViewer.pushTail`)}),(0,B.jsx)(`option`,{value:`head`,children:t(`keyViewer.pushHead`)})]}),onAdd:e=>s(C.listPush(r,e.value??``,f),()=>m(0))}),(0,B.jsx)(K,{shown:c.length,total:i,hasMore:i!==null&&c.length<i,onMore:()=>void m(c.length),loading:u})]})}function ne(e){let{t}=n(),{keyName:r,length:i,access:a,onError:o}=e,s=W(e),[c,l]=(0,z.useState)([]),[u,d]=(0,z.useState)(!1),f=(0,z.useCallback)(async e=>{d(!0);try{let t=T(await a.read(C.streamRange(r,e)));l(n=>e?[...n,...t]:t)}catch(e){o(U(e))}finally{d(!1)}},[a,r,o]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>f())},[f]);let p=c.map(e=>({id:e.id,fields:JSON.stringify(e.fields)})),m=[{key:`id`,label:t(`keyViewer.entryId`)},{key:`fields`,label:t(`keyViewer.fields`),render:e=>(0,B.jsx)(`dl`,{className:`grid grid-cols-[max-content_1fr] gap-x-3`,children:JSON.parse(e).map(([e,t],n)=>(0,B.jsxs)(`div`,{className:`contents`,children:[(0,B.jsx)(`dt`,{className:`text-muted-foreground`,children:e}),(0,B.jsx)(`dd`,{className:`break-all`,children:t})]},n))})}];return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsx)(H,{columns:m,rows:p,rowKey:e=>e.id,readOnly:a.readOnly,onDelete:e=>s(C.streamDelete(r,e.id),()=>{l(t=>t.filter(t=>t.id!==e.id))}),addColumns:[{key:`fields`,label:t(`keyViewer.entryFieldsPlaceholder`)}],onAdd:e=>{let n=F((e.fields??``).replaceAll(`;`,`
3
+ `));return n.length===0?(o(t(`keyViewer.entryFieldsRequired`)),Promise.reject(Error(t(`keyViewer.entryFieldsRequired`)))):s(C.streamAdd(r,n),()=>f())}}),(0,B.jsx)(K,{shown:c.length,total:i,hasMore:i!==null&&c.length<i,onMore:()=>void f(c[c.length-1]?.id),loading:u})]})}var re={string:J,hash:Z,list:te,set:Q,zset:ee,stream:ne,"ReJSON-RL":Y};function $(e,t,n,r=null){for(let i of e){if(i.type===s.KEY&&i.metadata?.database===t&&i.metadata.key===n)return r;let e=$(i.children,t,n,i);if(e)return e}return null}function ie({connectionId:e,tabId:t,item:r}){let{t:s}=n(),f=R(e,t,r),{loadChildren:g}=d(),[v,y]=(0,z.useState)(null),[S,w]=(0,z.useState)(!1),[T,k]=(0,z.useState)(null),[A,j]=(0,z.useState)(0),[M,N]=(0,z.useState)(null),[F,I]=(0,z.useState)(null),L=r.name,V=(0,z.useCallback)(async()=>{if(f.connected)try{let e=String(await f.read(C.type(L)));if(e===`none`){w(!0),y(null);return}let t=C.length(L,e),[n,r,i,a]=await Promise.all([f.read(C.ttl(L)),t?f.tryRead(t):Promise.resolve(null),f.tryRead(C.memory(L)),f.tryRead(C.encoding(L))]),o=E(n);w(o===`gone`),y({type:e,ttl:o===`gone`?null:o,length:D(r),memory:D(i),encoding:typeof a==`string`?a:null})}catch(e){k(e instanceof Error?e.message:String(e))}},[f,L]);(0,z.useEffect)(()=>{Promise.resolve().then(()=>V())},[V]);let H=(0,z.useCallback)(t=>{let n=$(u.getState().trees[e]??[],r.database,t);n&&g(e,n)},[e,r.database,g]),U=async e=>{try{k(null),await e()}catch(e){if(e instanceof Error&&e.name===`ExecutionCancelled`)return;k(e instanceof Error?e.message:String(e))}},W=n=>U(async()=>{if(!n||n===L){N(null);return}let i=await f.write(C.renameIfFree(L,n));if(Number(i)!==1)throw Error(s(`keyViewer.renameTaken`,{name:n}));N(null),H(L),l.getState().setSourceItem(e,t,{database:r.database,name:n})}),G=e=>U(async()=>{let t=Number(e);if(e.trim()===``)await f.write(C.persist(L));else if(!Number.isInteger(t)||t<=0)throw Error(s(`keyViewer.ttlInvalid`));else await f.write(C.expire(L,t));I(null),await V()}),K=()=>U(async()=>{let n=C.remove(L);await c.getState().requestDestructiveConfirm({title:s(`keyViewer.deleteTitle`,{name:L}),description:s(`keyViewer.deleteDescription`),statements:[n],confirmLabel:s(`keyViewer.delete`)})&&(await f.write(n,{confirmed:!0}),H(L),l.getState().removeQueryTab(e,t))}),q=()=>{v&&b(e,o(v.type,L),r.database,L)};if(!f.connected)return(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.notConnected`)});let J=v?re[v.type]:void 0,Y=`flex h-7 items-center gap-1 rounded border bg-background px-2 text-xs text-muted-foreground hover:text-foreground disabled:opacity-40`;return(0,B.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-x-3 gap-y-1.5 border-b bg-muted/30 px-3 py-1.5 text-xs`,children:[v&&(0,B.jsx)(`span`,{className:`rounded bg-primary/15 px-1.5 py-0.5 font-mono text-[10px] font-semibold uppercase text-primary`,children:v.type===`ReJSON-RL`?`json`:v.type}),M===null?(0,B.jsxs)(`span`,{className:`flex items-center gap-1 font-mono text-sm font-medium`,children:[L,!f.readOnly&&!S&&(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.rename`),onClick:()=>N(L),className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,B.jsx)(p,{className:`size-3`})})]}):(0,B.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,B.jsx)(`input`,{autoFocus:!0,className:`h-7 w-72 rounded border bg-background px-2 font-mono text-xs`,value:M,onChange:e=>N(e.target.value),onKeyDown:e=>{e.key===`Enter`&&W(M),e.key===`Escape`&&N(null)}}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.save`),onClick:()=>void W(M),className:`rounded p-1 text-primary hover:bg-primary/10`,children:(0,B.jsx)(_,{className:`size-3.5`})}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.cancel`),onClick:()=>N(null),className:`rounded p-1 text-muted-foreground hover:bg-muted`,children:(0,B.jsx)(i,{className:`size-3.5`})})]}),v&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-1 text-muted-foreground`,children:[(0,B.jsx)(m,{className:`size-3`}),F===null?(0,B.jsx)(`button`,{type:`button`,disabled:f.readOnly,onClick:()=>I(v.ttl===null?``:String(v.ttl)),className:`rounded px-1 hover:bg-muted hover:text-foreground disabled:hover:bg-transparent`,title:f.readOnly?void 0:s(`keyViewer.ttlEdit`),children:v.ttl===null?s(`keyViewer.noExpiry`):O(v.ttl)}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`input`,{autoFocus:!0,className:`h-6 w-24 rounded border bg-background px-1.5 text-xs`,placeholder:s(`keyViewer.ttlPlaceholder`),value:F,onChange:e=>I(e.target.value),onKeyDown:e=>{e.key===`Enter`&&G(F),e.key===`Escape`&&I(null)}}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.save`),onClick:()=>void G(F),className:`rounded p-1 text-primary hover:bg-primary/10`,children:(0,B.jsx)(_,{className:`size-3.5`})}),(0,B.jsx)(`button`,{type:`button`,title:s(`keyViewer.cancel`),onClick:()=>I(null),className:`rounded p-1 hover:bg-muted`,children:(0,B.jsx)(i,{className:`size-3.5`})})]})]}),v.length!==null&&(0,B.jsx)(`span`,{className:`text-muted-foreground`,children:s(v.type===`string`?`keyViewer.bytes`:`keyViewer.length`,{count:v.length})}),(0,B.jsx)(`span`,{className:`text-muted-foreground`,title:v.encoding?s(`keyViewer.encoding`,{encoding:v.encoding}):void 0,children:s(`keyViewer.memory`,{size:P(v.memory)})})]}),(0,B.jsx)(`div`,{className:`flex-1`}),(0,B.jsxs)(`button`,{type:`button`,className:Y,onClick:()=>{k(null),j(e=>e+1),V()},children:[(0,B.jsx)(h,{className:`size-3`}),s(`keyViewer.refresh`)]}),(0,B.jsxs)(`button`,{type:`button`,className:Y,disabled:!v,onClick:q,children:[(0,B.jsx)(a,{className:`size-3`}),s(`keyViewer.openInConsole`)]}),!f.readOnly&&!S&&(0,B.jsxs)(`button`,{type:`button`,className:`${Y} hover:border-destructive/40 hover:text-destructive`,onClick:()=>void K(),children:[(0,B.jsx)(x,{className:`size-3`}),s(`keyViewer.delete`)]})]}),T&&(0,B.jsxs)(`div`,{className:`flex flex-shrink-0 items-start gap-2 border-b border-destructive/30 bg-destructive/10 px-3 py-1.5 text-xs text-destructive`,children:[(0,B.jsx)(`span`,{className:`flex-1 whitespace-pre-wrap`,children:T}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>k(null),children:(0,B.jsx)(i,{className:`size-3.5`})})]}),S?(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.gone`)}):v?J?(0,B.jsx)(J,{access:f,keyName:L,length:v.length,ttl:v.ttl,onChanged:()=>void V(),onError:k},`${L}:${A}`):(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.unsupported`,{type:v.type})}):(0,B.jsx)(`p`,{className:`p-6 text-sm text-muted-foreground`,children:s(`keyViewer.loading`)})]})}export{ie as RedisKeyViewer};
@@ -1 +1 @@
1
- import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{i as n,r,t as i}from"./Cu_sGzNJ.js";import{At as a}from"./B8zpsP_u.js";var o=e(t(),1),s=r(),c=5;function l({title:e,onRefresh:t,autoRefresh:r,actions:l,error:u,onDismissError:d,children:f}){let{t:p}=n(),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(!1),v=(0,o.useRef)(t);(0,o.useEffect)(()=>{v.current=t},[t]),(0,o.useEffect)(()=>{if(!m)return;let e=setInterval(()=>{v.current()},c*1e3);return()=>clearInterval(e)},[m]);let y=async()=>{_(!0);try{await t()}finally{_(!1)}};return(0,s.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,s.jsxs)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-2 border-b bg-muted/30 px-3 py-1.5 text-xs`,children:[(0,s.jsx)(`span`,{className:`text-sm font-medium`,children:e}),(0,s.jsx)(`div`,{className:`flex-1`}),l,r&&(0,s.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5 text-muted-foreground`,children:[(0,s.jsx)(`input`,{type:`checkbox`,checked:m,onChange:e=>h(e.target.checked),className:`accent-primary`}),p(`tools.autoRefresh`,{seconds:c})]}),(0,s.jsxs)(`button`,{type:`button`,disabled:g,onClick:()=>void y(),className:`flex h-7 items-center gap-1 rounded border bg-background px-2 text-muted-foreground hover:text-foreground disabled:opacity-40`,children:[(0,s.jsx)(a,{className:`size-3 ${g?`animate-spin`:``}`}),p(`keyViewer.refresh`)]})]}),u&&(0,s.jsxs)(`div`,{className:`flex flex-shrink-0 items-start gap-2 border-b border-destructive/30 bg-destructive/10 px-3 py-1.5 text-xs text-destructive`,children:[(0,s.jsx)(`span`,{className:`flex-1 whitespace-pre-wrap`,children:u}),(0,s.jsx)(`button`,{type:`button`,onClick:d,children:(0,s.jsx)(i,{className:`size-3.5`})})]}),(0,s.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:f})]})}export{l as t};
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{i as n,r,t as i}from"./Cu_sGzNJ.js";import{Mt as a}from"./CExE8dKz.js";var o=e(t(),1),s=r(),c=5;function l({title:e,onRefresh:t,autoRefresh:r,actions:l,error:u,onDismissError:d,children:f}){let{t:p}=n(),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(!1),v=(0,o.useRef)(t);(0,o.useEffect)(()=>{v.current=t},[t]),(0,o.useEffect)(()=>{if(!m)return;let e=setInterval(()=>{v.current()},c*1e3);return()=>clearInterval(e)},[m]);let y=async()=>{_(!0);try{await t()}finally{_(!1)}};return(0,s.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,s.jsxs)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-2 border-b bg-muted/30 px-3 py-1.5 text-xs`,children:[(0,s.jsx)(`span`,{className:`text-sm font-medium`,children:e}),(0,s.jsx)(`div`,{className:`flex-1`}),l,r&&(0,s.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5 text-muted-foreground`,children:[(0,s.jsx)(`input`,{type:`checkbox`,checked:m,onChange:e=>h(e.target.checked),className:`accent-primary`}),p(`tools.autoRefresh`,{seconds:c})]}),(0,s.jsxs)(`button`,{type:`button`,disabled:g,onClick:()=>void y(),className:`flex h-7 items-center gap-1 rounded border bg-background px-2 text-muted-foreground hover:text-foreground disabled:opacity-40`,children:[(0,s.jsx)(a,{className:`size-3 ${g?`animate-spin`:``}`}),p(`keyViewer.refresh`)]})]}),u&&(0,s.jsxs)(`div`,{className:`flex flex-shrink-0 items-start gap-2 border-b border-destructive/30 bg-destructive/10 px-3 py-1.5 text-xs text-destructive`,children:[(0,s.jsx)(`span`,{className:`flex-1 whitespace-pre-wrap`,children:u}),(0,s.jsx)(`button`,{type:`button`,onClick:d,children:(0,s.jsx)(i,{className:`size-3.5`})})]}),(0,s.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:f})]})}export{l as t};
@@ -1 +1 @@
1
- import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,r as l,t as u}from"./DzRyVlxz.js";import{a as d,i as f,n as p,o as m}from"./DU-Eln5x.js";import{a as h}from"./Bgu3teFB.js";import{n as g,t as _}from"./D8_hwGjG.js";import{Et as v,X as y}from"./B8zpsP_u.js";var b=e(t(),1);function x(e,t){let n=e=>e.split(/[.+-]/).slice(0,3).map(e=>Number.parseInt(e,10)||0),r=n(e),i=n(t);for(let e=0;e<3;e++)if(r[e]!==i[e])return r[e]<i[e];return!1}var S=i();function C(){let e=g(e=>e.activeDialog),t=g(e=>e.closeDialog),i=_(`whats-new`),{t:C,i18n:w}=r(),T=d.includes(w.resolvedLanguage??``)?w.resolvedLanguage:`en`,E=e===`whats-new`,[D]=(0,b.useState)(()=>p.getState().changelogSeen),O=(0,b.useMemo)(()=>i?.all?f:m(D),[i?.all,D]),k=O.find(e=>e.agent)?.agent,[A,j]=(0,b.useState)(null);(0,b.useEffect)(()=>{if(!E||!k)return;let e=!0;return h().then(t=>{e&&t.state!==`offline`&&j(t.version)}),()=>{e=!1}},[E,k]);let M=k&&A&&x(A,k),N=()=>{p.getState().markChangelogSeen(),t()};return(0,S.jsx)(u,{open:E,onOpenChange:e=>{e||N()},children:(0,S.jsxs)(s,{className:`flex max-h-[85vh] flex-col sm:max-w-[560px]`,children:[(0,S.jsxs)(a,{children:[(0,S.jsxs)(c,{className:`flex items-center gap-2`,children:[(0,S.jsx)(v,{className:`size-4 text-primary`}),C(`whatsNew.title`)]}),(0,S.jsx)(l,{children:C(`whatsNew.description`)})]}),(0,S.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto pr-1 text-sm`,children:[O.map(e=>(0,S.jsxs)(`section`,{children:[(0,S.jsx)(`h3`,{className:`font-semibold`,children:e.title[T]}),(0,S.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:e.id}),(0,S.jsx)(`ul`,{className:`list-disc space-y-1.5 pl-5 [&_code]:rounded [&_code]:bg-muted [&_code]:px-1 [&_code]:font-mono [&_code]:text-xs`,children:e.items[T].map((e,t)=>(0,S.jsx)(`li`,{dangerouslySetInnerHTML:{__html:e}},t))})]},e.id)),M&&(0,S.jsxs)(`p`,{className:`rounded-md border border-amber-500/40 bg-amber-500/5 p-3 text-xs text-muted-foreground`,children:[C(`whatsNew.agentOutdated`,{current:A,required:k}),` `,(0,S.jsx)(`code`,{className:`rounded bg-muted px-1 font-mono`,children:`npx planche@latest`}),` · `,(0,S.jsx)(`code`,{className:`rounded bg-muted px-1 font-mono`,children:`planche upgrade`})]})]}),(0,S.jsxs)(o,{className:`sm:justify-between`,children:[(0,S.jsx)(`a`,{href:y(),target:`_blank`,rel:`noreferrer`,className:`self-center text-xs text-muted-foreground underline underline-offset-2 hover:text-foreground`,children:C(`whatsNew.allChanges`)}),(0,S.jsx)(n,{onClick:N,children:C(`whatsNew.close`)})]})]})})}export{C as WhatsNewDialog};
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,r as l,t as u}from"./DzRyVlxz.js";import{a as d,i as f,n as p,o as m}from"./DU-Eln5x.js";import{o as h}from"./BjwrN_ch.js";import{n as g,t as _}from"./D8_hwGjG.js";import{Ot as v,X as y}from"./CExE8dKz.js";var b=e(t(),1);function x(e,t){let n=e=>e.split(/[.+-]/).slice(0,3).map(e=>Number.parseInt(e,10)||0),r=n(e),i=n(t);for(let e=0;e<3;e++)if(r[e]!==i[e])return r[e]<i[e];return!1}var S=i();function C(){let e=g(e=>e.activeDialog),t=g(e=>e.closeDialog),i=_(`whats-new`),{t:C,i18n:w}=r(),T=d.includes(w.resolvedLanguage??``)?w.resolvedLanguage:`en`,E=e===`whats-new`,[D]=(0,b.useState)(()=>p.getState().changelogSeen),O=(0,b.useMemo)(()=>i?.all?f:m(D),[i?.all,D]),k=O.find(e=>e.agent)?.agent,[A,j]=(0,b.useState)(null);(0,b.useEffect)(()=>{if(!E||!k)return;let e=!0;return h().then(t=>{e&&t.state!==`offline`&&j(t.version)}),()=>{e=!1}},[E,k]);let M=k&&A&&x(A,k),N=()=>{p.getState().markChangelogSeen(),t()};return(0,S.jsx)(u,{open:E,onOpenChange:e=>{e||N()},children:(0,S.jsxs)(s,{className:`flex max-h-[85vh] flex-col sm:max-w-[560px]`,children:[(0,S.jsxs)(a,{children:[(0,S.jsxs)(c,{className:`flex items-center gap-2`,children:[(0,S.jsx)(v,{className:`size-4 text-primary`}),C(`whatsNew.title`)]}),(0,S.jsx)(l,{children:C(`whatsNew.description`)})]}),(0,S.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto pr-1 text-sm`,children:[O.map(e=>(0,S.jsxs)(`section`,{children:[(0,S.jsx)(`h3`,{className:`font-semibold`,children:e.title[T]}),(0,S.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:e.id}),(0,S.jsx)(`ul`,{className:`list-disc space-y-1.5 pl-5 [&_code]:rounded [&_code]:bg-muted [&_code]:px-1 [&_code]:font-mono [&_code]:text-xs`,children:e.items[T].map((e,t)=>(0,S.jsx)(`li`,{dangerouslySetInnerHTML:{__html:e}},t))})]},e.id)),M&&(0,S.jsxs)(`p`,{className:`rounded-md border border-amber-500/40 bg-amber-500/5 p-3 text-xs text-muted-foreground`,children:[C(`whatsNew.agentOutdated`,{current:A,required:k}),` `,(0,S.jsx)(`code`,{className:`rounded bg-muted px-1 font-mono`,children:`npx planche@latest`}),` · `,(0,S.jsx)(`code`,{className:`rounded bg-muted px-1 font-mono`,children:`planche upgrade`})]})]}),(0,S.jsxs)(o,{className:`sm:justify-between`,children:[(0,S.jsx)(`a`,{href:y(),target:`_blank`,rel:`noreferrer`,className:`self-center text-xs text-muted-foreground underline underline-offset-2 hover:text-foreground`,children:C(`whatsNew.allChanges`)}),(0,S.jsx)(n,{onClick:N,children:C(`whatsNew.close`)})]})]})})}export{C as WhatsNewDialog};
@@ -1,4 +1,4 @@
1
- import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,t as l}from"./DzRyVlxz.js";import{a as u,i as d,n as f,r as p,t as m}from"./D4l4mWtD.js";import{t as h}from"./S7HbowYz.js";import{n as g}from"./D8_hwGjG.js";import{n as _}from"./C1gqjEN3.js";import{C as v,a as y}from"./BHe42P9W.js";import{r as b}from"./BRZhVXRC.js";import{o as x,r as S}from"./B9dhM8vw.js";import{c as C,gt as w}from"./B8zpsP_u.js";import{t as T}from"./CnYBZPf9.js";var E=e(t(),1),D=i();function O(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function k(){let{t:e}=r(),{activeDialog:t,closeDialog:i}=g(),{activeConnectionId:k,activeConnections:A}=h(),{trees:j}=v(),M=_(),N=t===`export-html`,P=(0,E.useMemo)(()=>k?S(j[k]??[]):[],[k,j]),F=(0,E.useMemo)(()=>{if(!k)return``;let e=M.activeTabId[k];return(M.tabs[k]??[]).find(t=>t.id===e)?.database||``},[k,M.activeTabId,M.tabs]),[I,L]=(0,E.useState)(``),R=(0,E.useMemo)(()=>!k||!I?[]:x(j[k]??[],I),[k,I,j]),[z,B]=(0,E.useState)([]),[V,H]=(0,E.useState)(!0),[U,W]=(0,E.useState)(!0),[G,K]=(0,E.useState)(!0),[q,J]=(0,E.useState)(!1);(0,E.useEffect)(()=>{N&&F&&L(F)},[N,F]);function Y(e){e||(i(),L(``),B([]),H(!0),W(!0),K(!0))}function X(e){B(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}function Z(){B(R.length===z.length?[]:[...R])}async function Q(){if(z.length===0||!k)return;let t=A.find(e=>e.id===k);if(!t?.serverConnectionId)return;J(!0);let{introspect:n}=b(k),r=y(t.serverConnectionId),a=(e,t,n)=>{let r=`<h3>${O(e)}</h3>\n<table border="1" cellpadding="4" cellspacing="0">\n`;r+=`<tr>${t.map(e=>`<th>${O(e)}</th>`).join(``)}</tr>\n`;for(let e of n)r+=`<tr>${e.map(e=>`<td>${O(e==null?`NULL`:String(e))}</td>`).join(``)}</tr>\n`;return r+`</table>
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,t as l}from"./DzRyVlxz.js";import{a as u,i as d,n as f,r as p,t as m}from"./G06qjCej.js";import{t as h}from"./S7HbowYz.js";import{n as g}from"./D8_hwGjG.js";import{n as _}from"./C1gqjEN3.js";import{C as v,a as y}from"./BkXrfAoR.js";import{r as b}from"./BRZhVXRC.js";import{o as x,r as S}from"./B9dhM8vw.js";import{c as C,vt as w}from"./CExE8dKz.js";import{t as T}from"./CnYBZPf9.js";var E=e(t(),1),D=i();function O(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function k(){let{t:e}=r(),{activeDialog:t,closeDialog:i}=g(),{activeConnectionId:k,activeConnections:A}=h(),{trees:j}=v(),M=_(),N=t===`export-html`,P=(0,E.useMemo)(()=>k?S(j[k]??[]):[],[k,j]),F=(0,E.useMemo)(()=>{if(!k)return``;let e=M.activeTabId[k];return(M.tabs[k]??[]).find(t=>t.id===e)?.database||``},[k,M.activeTabId,M.tabs]),[I,L]=(0,E.useState)(``),R=(0,E.useMemo)(()=>!k||!I?[]:x(j[k]??[],I),[k,I,j]),[z,B]=(0,E.useState)([]),[V,H]=(0,E.useState)(!0),[U,W]=(0,E.useState)(!0),[G,K]=(0,E.useState)(!0),[q,J]=(0,E.useState)(!1);(0,E.useEffect)(()=>{N&&F&&L(F)},[N,F]);function Y(e){e||(i(),L(``),B([]),H(!0),W(!0),K(!0))}function X(e){B(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}function Z(){B(R.length===z.length?[]:[...R])}async function Q(){if(z.length===0||!k)return;let t=A.find(e=>e.id===k);if(!t?.serverConnectionId)return;J(!0);let{introspect:n}=b(k),r=y(t.serverConnectionId),a=(e,t,n)=>{let r=`<h3>${O(e)}</h3>\n<table border="1" cellpadding="4" cellspacing="0">\n`;r+=`<tr>${t.map(e=>`<th>${O(e)}</th>`).join(``)}</tr>\n`;for(let e of n)r+=`<tr>${e.map(e=>`<td>${O(e==null?`NULL`:String(e))}</td>`).join(``)}</tr>\n`;return r+`</table>
2
2
  `};try{let t=[];for(let i of z){let o=`<h2>${O(i)}</h2>\n`;if(V){let t=await n.listColumns(r,I,i);t.length>0&&(o+=a(e(`database.html.sectionColumns`),[`Field`,`Type`,`Null`,`Key`,`Default`,`Extra`,`Comment`],t.map(e=>[e.name,e.type,e.nullable?`YES`:`NO`,e.key,e.defaultValue,e.extra,e.comment])))}if(U){let t=await n.listIndexes(r,I,i);t.length>0&&(o+=a(e(`database.html.sectionIndexes`),[`Key_name`,`Type`,`Columns`],t.map(e=>[e.name,e.type,e.columns.join(`, `)])))}if(G){let t=await n.getTableInfo(r,I,i);t&&(o+=a(e(`database.html.sectionProperties`),[`Name`,`Engine`,`Collation`,`Rows`,`Data_length`,`Create_time`,`Update_time`,`Comment`],[[t.name,t.engine,t.collation,t.rows,t.dataLength,t.createTime,t.updateTime,t.comment]]))}t.push(o)}let i=`<!DOCTYPE html>
3
3
  <html lang="en">
4
4
  <head>
@@ -1,7 +1,7 @@
1
- import{r as e}from"./hePW80VL.js";import{o as t,p as n}from"./CYz610vE.js";import{t as r}from"./CiL8zoYm.js";import{i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,t as u}from"./DzRyVlxz.js";import{a as d,i as f,n as p,r as m,t as h}from"./D4l4mWtD.js";import{t as g}from"./S7HbowYz.js";import{n as _,t as ee}from"./D8_hwGjG.js";import{a as v}from"./BHe42P9W.js";import{r as y}from"./BRZhVXRC.js";import{t as te}from"./B9DHeSQH.js";import{t as b}from"./Bs5VSn0X.js";import{c as x,dt as S,lt as ne}from"./B8zpsP_u.js";var C=e(n(),1),w=[`VIEW`,`PROCEDURE`,`FUNCTION`,`TRIGGER`,`EVENT`];function T(e,t){return e.replace(/\bDEFINER\s*=\s*(?:`[^`]*`|'[^']*'|"[^"]*"|\w+)@(?:`[^`]*`|'[^']*'|"[^"]*"|[\w.%-]+)/gi,``).replace(/\bSQL SECURITY (?:DEFINER|INVOKER)\b/gi,``).replace(/\bALGORITHM\s*=\s*\w+/gi,``).replace(RegExp(`[\`"\\[]?${t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}[\`"\\]]?\\.`,`gi`),``).replace(/\s+/g,` `).replace(/;\s*$/,``).trim()}function E(e,t){let n=[];for(let r of w){let i=e.objects?.get(r),a=t.objects?.get(r);if(!i&&!a)continue;let o=[...new Set([...i?.keys()??[],...a?.keys()??[]])].sort();for(let s of o){let o=i?.get(s)??null,c=a?.get(s)??null,l;l=o?c?o.sql!==null&&c.sql!==null&&T(o.sql,e.database)===T(c.sql,t.database)?`identical`:`changed`:`missingInTarget`:`missingInSource`,n.push({type:r,name:s,status:l,source:o,target:c})}}return n}var D=e=>e.toLowerCase().replace(/\s+/g,` `).trim(),O=e=>e===null?null:e.trim().replace(/^'(.*)'(?:::\w+)?$/s,`$1`),k=e=>e.addedColumns.length+e.removedColumns.length+e.changedColumns.length+e.addedIndexes.length+e.removedIndexes.length+e.changedIndexes.length>0;function A(e,t){let n=[];return D(e.type)!==D(t.type)&&n.push(`type`),e.nullable!==t.nullable&&n.push(`nullable`),O(e.defaultValue)!==O(t.defaultValue)&&n.push(`default`),e.extra.toLowerCase()!==t.extra.toLowerCase()&&n.push(`extra`),n}var j=(e,t)=>e.type===t.type&&e.columns.length===t.columns.length&&e.columns.every((e,n)=>e===t.columns[n]);function M(e,t,n){let r=t.columns.get(e)??[],i=n.columns.get(e)??[],a=new Map(i.map(e=>[e.name,e])),o=new Map(r.map(e=>[e.name,e])),s={table:e,addedColumns:r.filter(e=>!a.has(e.name)),removedColumns:i.filter(e=>!o.has(e.name)),changedColumns:[],addedIndexes:[],removedIndexes:[],changedIndexes:[]};for(let e of r){let t=a.get(e.name);if(!t)continue;let n=A(e,t);n.length>0&&s.changedColumns.push({name:e.name,source:e,target:t,attributes:n})}let c=t.indexes.get(e)??[],l=n.indexes.get(e)??[],u=new Map(l.map(e=>[e.name,e])),d=new Map(c.map(e=>[e.name,e]));s.addedIndexes=c.filter(e=>!u.has(e.name)),s.removedIndexes=l.filter(e=>!d.has(e.name));for(let e of c){let t=u.get(e.name);t&&!j(e,t)&&s.changedIndexes.push({name:e.name,source:e,target:t})}return s}function N(e,t){let n=new Set(t.tables),r=new Set(e.tables),i={missingInTarget:[],missingInSource:[],changed:[],identical:[],objects:E(e,t)};for(let r of e.tables){if(!n.has(r)){i.missingInTarget.push(r);continue}let a=M(r,e,t);k(a)?i.changed.push(a):i.identical.push(r)}return i.missingInSource=t.tables.filter(e=>!r.has(e)),i}var P=e=>e.split(`
1
+ import{r as e}from"./hePW80VL.js";import{o as t,p as n}from"./CYz610vE.js";import{t as r}from"./CiL8zoYm.js";import{i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,t as u}from"./DzRyVlxz.js";import{a as d,i as f,n as p,r as m,t as h}from"./G06qjCej.js";import{t as g}from"./S7HbowYz.js";import{n as _,t as ee}from"./D8_hwGjG.js";import{a as v}from"./BkXrfAoR.js";import{r as y}from"./BRZhVXRC.js";import{t as te}from"./9gOj-Ty3.js";import{t as b}from"./Bs5VSn0X.js";import{c as x,dt as S,pt as ne}from"./CExE8dKz.js";var C=e(n(),1),w=[`VIEW`,`PROCEDURE`,`FUNCTION`,`TRIGGER`,`EVENT`];function T(e,t){return e.replace(/\bDEFINER\s*=\s*(?:`[^`]*`|'[^']*'|"[^"]*"|\w+)@(?:`[^`]*`|'[^']*'|"[^"]*"|[\w.%-]+)/gi,``).replace(/\bSQL SECURITY (?:DEFINER|INVOKER)\b/gi,``).replace(/\bALGORITHM\s*=\s*\w+/gi,``).replace(RegExp(`[\`"\\[]?${t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}[\`"\\]]?\\.`,`gi`),``).replace(/\s+/g,` `).replace(/;\s*$/,``).trim()}function E(e,t){let n=[];for(let r of w){let i=e.objects?.get(r),a=t.objects?.get(r);if(!i&&!a)continue;let o=[...new Set([...i?.keys()??[],...a?.keys()??[]])].sort();for(let s of o){let o=i?.get(s)??null,c=a?.get(s)??null,l;l=o?c?o.sql!==null&&c.sql!==null&&T(o.sql,e.database)===T(c.sql,t.database)?`identical`:`changed`:`missingInTarget`:`missingInSource`,n.push({type:r,name:s,status:l,source:o,target:c})}}return n}var D=e=>e.toLowerCase().replace(/\s+/g,` `).trim(),O=e=>e===null?null:e.trim().replace(/^'(.*)'(?:::\w+)?$/s,`$1`),k=e=>e.addedColumns.length+e.removedColumns.length+e.changedColumns.length+e.addedIndexes.length+e.removedIndexes.length+e.changedIndexes.length>0;function A(e,t){let n=[];return D(e.type)!==D(t.type)&&n.push(`type`),e.nullable!==t.nullable&&n.push(`nullable`),O(e.defaultValue)!==O(t.defaultValue)&&n.push(`default`),e.extra.toLowerCase()!==t.extra.toLowerCase()&&n.push(`extra`),n}var j=(e,t)=>e.type===t.type&&e.columns.length===t.columns.length&&e.columns.every((e,n)=>e===t.columns[n]);function M(e,t,n){let r=t.columns.get(e)??[],i=n.columns.get(e)??[],a=new Map(i.map(e=>[e.name,e])),o=new Map(r.map(e=>[e.name,e])),s={table:e,addedColumns:r.filter(e=>!a.has(e.name)),removedColumns:i.filter(e=>!o.has(e.name)),changedColumns:[],addedIndexes:[],removedIndexes:[],changedIndexes:[]};for(let e of r){let t=a.get(e.name);if(!t)continue;let n=A(e,t);n.length>0&&s.changedColumns.push({name:e.name,source:e,target:t,attributes:n})}let c=t.indexes.get(e)??[],l=n.indexes.get(e)??[],u=new Map(l.map(e=>[e.name,e])),d=new Map(c.map(e=>[e.name,e]));s.addedIndexes=c.filter(e=>!u.has(e.name)),s.removedIndexes=l.filter(e=>!d.has(e.name));for(let e of c){let t=u.get(e.name);t&&!j(e,t)&&s.changedIndexes.push({name:e.name,source:e,target:t})}return s}function N(e,t){let n=new Set(t.tables),r=new Set(e.tables),i={missingInTarget:[],missingInSource:[],changed:[],identical:[],objects:E(e,t)};for(let r of e.tables){if(!n.has(r)){i.missingInTarget.push(r);continue}let a=M(r,e,t);k(a)?i.changed.push(a):i.identical.push(r)}return i.missingInSource=t.tables.filter(e=>!r.has(e)),i}var P=e=>e.split(`
2
2
  `).map(e=>`-- ${e}`).join(`
3
3
  `);function F(e,t,n,r,i={}){let a=n.ddl,o=r.database,s=e=>i.includeDrops?e:P(e),c=[`-- Schema sync: ${t.database} -> ${o} (${n.label})`,`-- Review before running. Statements that drop data are commented out unless "Include DROP statements" was checked.`,``];for(let r of e.missingInTarget)c.push(`-- Table ${r} is missing in the target`),c.push(I(r,t,n,o)),c.push(``);for(let t of e.changed){c.push(`-- Table ${t.table}`);for(let e of t.removedIndexes)c.push(s(a.dropIndex(o,t.table,e.name)));for(let e of t.changedIndexes)c.push(s(a.dropIndex(o,t.table,e.name)));for(let e of t.addedColumns)c.push(a.addColumn(o,t.table,e));for(let e of t.changedColumns){let r=a.alterColumn(o,t.table,e.source);c.push(r??P(`${n.label} cannot alter column ${e.name} in place (${e.attributes.join(`, `)}): recreate the table`))}for(let e of t.removedColumns)c.push(s(a.dropColumn(o,t.table,e.name)));for(let e of t.addedIndexes)c.push(a.createIndex(o,t.table,e));for(let e of t.changedIndexes)c.push(a.createIndex(o,t.table,e.source));c.push(``)}for(let t of e.missingInSource)c.push(`-- Table ${t} exists only in the target`),c.push(s(`DROP TABLE ${n.qualify(o,t)};`)),c.push(``);for(let t of e.objects){if(t.status===`identical`)continue;let e=`${t.type.charAt(0)}${t.type.slice(1).toLowerCase()} ${t.name}`,r=R(n,o,t);t.status===`missingInSource`?(c.push(`-- ${e} exists only in the target`),c.push(s(r))):(c.push(t.status===`changed`?`-- ${e} differs; recreated from the source`:`-- ${e} is missing in the target`),t.status===`changed`&&c.push(s(r)),c.push(t.source?.sql?z(t.source.sql):P(`the source engine did not return a CREATE statement for ${e}`))),c.push(``)}return c.join(`
4
4
  `).replace(/\n{3,}/g,`
5
5
 
6
6
  `).trim()+`
7
- `}function I(e,t,n,r){let i=b(r,e,t.columns.get(e)??[],t.indexes.get(e)??[],null);return n.ddl.createTable(i)}var L={VIEW:`DROP_VIEW`,PROCEDURE:`DROP_PROCEDURE`,FUNCTION:`DROP_FUNCTION`,TRIGGER:`DROP_TRIGGER`,EVENT:`DROP_EVENT`};function R(e,t,n){let r=L[n.type];if(!e.hasQuery(r))return`-- ${e.label} has no ${n.type} objects`;let i=n.target?.table??n.source?.table??``;return`${e.getQuery(r,t,n.name,``,i).replace(/\s{2,}/g,` `).trim()};`}function z(e){let t=e.trim();return/;\s*$/.test(t)?t:`${t};`}var B=a(),re=e=>e instanceof Error?e.message:String(e),V=e=>`${e.type}:${e.name}`,H=e=>e.hostName||e.host||e.file||e.id;function U({id:e,label:t,side:n,onChange:r,connections:a,disabled:o}){let{t:s}=i(),[c,l]=(0,C.useState)([]),u=a.find(e=>e.id===n.connectionId);return(0,C.useEffect)(()=>{if(!u?.serverConnectionId)return;let e=!1,t=y(u.id),i=v(u.serverConnectionId);return(async()=>{try{let a=await t.introspect.listDatabases(i);if(e)return;l(a),a.includes(n.database)||r({connectionId:u.id,database:a[0]??``})}catch{e||l([])}})(),()=>{e=!0}},[u?.id,u?.serverConnectionId]),(0,B.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3`,children:[(0,B.jsx)(x,{className:`font-medium`,children:t}),(0,B.jsxs)(h,{value:n.connectionId,onValueChange:e=>r({connectionId:e,database:``}),disabled:o,children:[(0,B.jsx)(f,{id:`${e}-conn`,className:`w-full`,children:(0,B.jsx)(d,{placeholder:s(`database.diff.pickConnection`)})}),(0,B.jsx)(p,{children:a.map(e=>(0,B.jsx)(m,{value:e.id,children:H(e)},e.id))})]}),(0,B.jsxs)(h,{value:n.database,onValueChange:e=>r({...n,database:e}),disabled:o||c.length===0,children:[(0,B.jsx)(f,{id:`${e}-db`,className:`w-full`,children:(0,B.jsx)(d,{placeholder:s(`database.diff.pickDatabase`)})}),(0,B.jsx)(p,{children:c.map(e=>(0,B.jsx)(m,{value:e,children:e},e))})]})]})}async function W(e){let t=g.getState().activeConnections.find(t=>t.id===e.connectionId);if(!t?.serverConnectionId)throw Error(`Not connected`);let n=y(t.id),r=v(t.serverConnectionId),[i,a,o,s]=await Promise.all([n.introspect.listTables(r,e.database),n.introspect.listAllColumns(r,e.database),n.introspect.listAllIndexes(r,e.database),G(n,r,e.database)]);return{database:e.database,tables:i.map(e=>e.name).sort(),columns:a,indexes:o,objects:s}}async function G(e,t,n){let{introspect:r,capabilities:i}=e,a={VIEW:async()=>(await r.listViews(t,n)).map(e=>({name:e}))};i.procedures&&(a.PROCEDURE=async()=>(await r.listProcedures(t,n)).map(e=>({name:e}))),i.functions&&(a.FUNCTION=async()=>(await r.listFunctions(t,n)).map(e=>({name:e}))),i.triggers&&(a.TRIGGER=async()=>r.listTriggerDetails?r.listTriggerDetails(t,n):(await r.listTriggers(t,n)).map(e=>({name:e}))),i.events&&(a.EVENT=async()=>(await r.listEvents(t,n)).map(e=>({name:e})));let o=new Map;for(let e of w){let i=a[e];if(!i)continue;let s=await i(),c=new Map;for(let i of s){let a=null;try{a=await r.getCreateStatement(t,n,e,i.name)}catch{}c.set(i.name,i.table?{sql:a,table:i.table}:{sql:a})}o.set(e,c)}return o}function ie({diff:e}){let{t}=i(),n=e=>(0,B.jsx)(`pre`,{className:`whitespace-pre-wrap break-all text-xs font-mono`,children:e?e.sql??t(`database.diff.noDefinition`):`—`});return(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:t(`database.diff.source`)}),n(e.source)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:t(`database.diff.target`)}),n(e.target)]})]})}var K=e=>`${e.type}${e.nullable?``:` NOT NULL`}${e.defaultValue===null?``:` DEFAULT ${e.defaultValue}`}${e.extra?` ${e.extra}`:``}`;function ae({diff:e}){let{t}=i(),n=[];for(let r of e.addedColumns)n.push({kind:t(`database.diff.column`),name:r.name,source:K(r),target:`—`,tone:`text-green-600 dark:text-green-400`});for(let r of e.removedColumns)n.push({kind:t(`database.diff.column`),name:r.name,source:`—`,target:K(r),tone:`text-destructive`});for(let r of e.changedColumns)n.push({kind:t(`database.diff.column`),name:`${r.name} (${r.attributes.join(`, `)})`,source:K(r.source),target:K(r.target),tone:`text-amber-600 dark:text-amber-400`});for(let r of e.addedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`${r.type} (${r.columns.join(`, `)})`,target:`—`,tone:`text-green-600 dark:text-green-400`});for(let r of e.removedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`—`,target:`${r.type} (${r.columns.join(`, `)})`,tone:`text-destructive`});for(let r of e.changedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`${r.source.type} (${r.source.columns.join(`, `)})`,target:`${r.target.type} (${r.target.columns.join(`, `)})`,tone:`text-amber-600 dark:text-amber-400`});return(0,B.jsxs)(`table`,{className:`w-full text-xs font-mono`,children:[(0,B.jsx)(`thead`,{className:`text-muted-foreground`,children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{className:`text-left font-normal pr-2`,children:t(`database.diff.object`)}),(0,B.jsx)(`th`,{className:`text-left font-normal pr-2`,children:t(`database.diff.source`)}),(0,B.jsx)(`th`,{className:`text-left font-normal`,children:t(`database.diff.target`)})]})}),(0,B.jsx)(`tbody`,{children:n.map((e,t)=>(0,B.jsxs)(`tr`,{className:e.tone,children:[(0,B.jsxs)(`td`,{className:`pr-2 align-top whitespace-nowrap`,children:[e.kind,` `,e.name]}),(0,B.jsx)(`td`,{className:`pr-2 align-top break-all`,children:e.source}),(0,B.jsx)(`td`,{className:`align-top break-all`,children:e.target})]},t))})]})}function q(){let{t:e}=i(),n=_(e=>e.activeDialog),a=_(e=>e.closeDialog),d=g(e=>e.activeConnections),f=(0,C.useMemo)(()=>d.filter(e=>e.serverConnectionId),[d]),p=g(e=>e.activeConnectionId),m=n===`schema-diff`,h=ee(`schema-diff`),[v,b]=(0,C.useState)(()=>h&&f.some(e=>e.id===h.connectionId)?{connectionId:h.connectionId,database:h.database}:{connectionId:p&&f.some(e=>e.id===p)?p:f[0]?.id??``,database:``}),[x,w]=(0,C.useState)(()=>({connectionId:f.find(e=>e.id!==v.connectionId)?.id??v.connectionId,database:``})),[T,E]=(0,C.useState)(null),[D,O]=(0,C.useState)(null),[k,A]=(0,C.useState)(null),[j,M]=(0,C.useState)(!1),[P,I]=(0,C.useState)(!1),[L,R]=(0,C.useState)(!1),[z,H]=(0,C.useState)(null),G=v.connectionId===x.connectionId&&v.database===x.database,K=!!v.connectionId&&!!v.database&&!!x.connectionId&&!!x.database&&!G,q=x.connectionId?y(x.connectionId):null,J=v.connectionId?y(v.connectionId):null,oe=!!J&&!!q&&J.id!==q.id;async function se(){R(!0),H(null),O(null),A(null);try{let[e,n]=await Promise.all([W(v),W(x)]),r=N(e,n);E({source:e,target:n}),O(r);let i=h?.focus,a=null;if(i?.type===`TABLE`)a=r.changed.some(e=>e.table===i.name)?i.name:r.missingInTarget.includes(i.name)?`+${i.name}`:r.missingInSource.includes(i.name)?`-${i.name}`:null,r.identical.includes(i.name)&&I(!0);else if(i){let e=r.objects.find(e=>e.type===i.type&&e.name===i.name);e&&(a=V(e),e.status===`identical`&&I(!0))}A(a??r.changed[0]?.table??null),te(`compare_schemas`),t(`schema_diff`,{source_dbms:J?.id??`unknown`,target_dbms:q?.id??`unknown`,changed:r.changed.length,missing:r.missingInTarget.length+r.missingInSource.length})}catch(e){H(re(e))}finally{R(!1)}}let Y=(0,C.useMemo)(()=>!D||!T||!q?``:F(D,T.source,q,{database:x.database},{includeDrops:j}),[D,T,q,x.database,j]);function ce(){Y&&(S(x.connectionId,Y,x.database,e(`database.diff.tabTitle`,{database:x.database})),a())}let X=D?.changed.find(e=>e.table===k)??null,Z=D?.objects.find(e=>V(e)===k)??null,Q=D?.objects.filter(e=>e.status!==`identical`)??[],le=D?e(`database.diff.summary`,{changed:D.changed.length+Q.filter(e=>e.status===`changed`).length,missingTarget:D.missingInTarget.length+Q.filter(e=>e.status===`missingInTarget`).length,missingSource:D.missingInSource.length+Q.filter(e=>e.status===`missingInSource`).length,identical:D.identical.length+D.objects.filter(e=>e.status===`identical`).length}):``,$=!!D&&D.changed.length+D.missingInTarget.length+D.missingInSource.length+Q.length>0,ue=e=>e===`missingInTarget`?`text-green-600 dark:text-green-400`:e===`missingInSource`?`text-destructive`:e===`changed`?`text-amber-600 dark:text-amber-400`:`text-muted-foreground`,de=e=>e===`missingInTarget`?`+`:e===`missingInSource`?`-`:e===`changed`?`~`:`=`;return(0,B.jsx)(u,{open:m,onOpenChange:e=>{e||a()},children:(0,B.jsxs)(c,{className:`sm:max-w-[860px]`,children:[(0,B.jsx)(o,{children:(0,B.jsx)(l,{children:e(`database.diff.title`)})}),(0,B.jsxs)(`div`,{className:`space-y-3`,children:[(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,B.jsx)(U,{id:`diff-source`,label:e(`database.diff.source`),side:v,onChange:b,connections:f,disabled:L}),(0,B.jsx)(U,{id:`diff-target`,label:e(`database.diff.target`),side:x,onChange:w,connections:f,disabled:L})]}),oe&&(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.crossEngineHint`)}),G&&v.database&&(0,B.jsx)(`p`,{className:`text-xs text-destructive`,children:e(`database.diff.sameSide`)}),z&&(0,B.jsx)(`p`,{className:`text-sm text-destructive whitespace-pre-wrap`,children:z}),D&&(0,B.jsxs)(`div`,{className:`space-y-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:le}),(0,B.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:P,onChange:e=>I(e.target.checked)}),e(`database.diff.showIdentical`)]})]}),(0,B.jsxs)(`div`,{className:`grid grid-cols-[220px_1fr] gap-3 h-[300px]`,children:[(0,B.jsxs)(`ul`,{className:`overflow-auto rounded-md border text-sm`,children:[D.missingInTarget.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-green-600 dark:text-green-400 ${k===`+${e}`?`bg-accent`:``}`,onClick:()=>A(`+${e}`),children:[`+ `,e]},`mt-${e}`)),D.changed.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-amber-600 dark:text-amber-400 ${k===e.table?`bg-accent`:``}`,onClick:()=>A(e.table),children:[`~ `,e.table]},e.table)),D.missingInSource.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-destructive ${k===`-${e}`?`bg-accent`:``}`,onClick:()=>A(`-${e}`),children:[`- `,e]},`ms-${e}`)),P&&D.identical.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:[`= `,e]},`id-${e}`)),D.objects.filter(e=>P||e.status!==`identical`).map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer ${ue(e.status)} ${k===V(e)?`bg-accent`:``}`,onClick:()=>A(V(e)),children:[de(e.status),` `,(0,B.jsxs)(`span`,{className:`text-muted-foreground`,children:[`[`,ne(e.type),`]`]}),` `,e.name]},V(e))),!$&&(0,B.jsx)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:e(`database.diff.identicalAll`)})]}),(0,B.jsx)(`div`,{className:`overflow-auto rounded-md border p-2`,children:X?(0,B.jsx)(ae,{diff:X}):Z?(0,B.jsx)(ie,{diff:Z}):k?.startsWith(`+`)?(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.missingInTarget`,{table:k.slice(1)})}):k?.startsWith(`-`)?(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.missingInSource`,{table:k.slice(1)})}):(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.selectTable`)})})]}),(0,B.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs cursor-pointer`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:j,onChange:e=>M(e.target.checked)}),(0,B.jsx)(`span`,{className:j?`text-destructive`:``,children:e(`database.diff.includeDrops`)})]})]})]}),(0,B.jsxs)(s,{children:[(0,B.jsx)(r,{variant:`outline`,onClick:a,children:e(`database.diff.close`)}),(0,B.jsx)(r,{variant:`secondary`,onClick:()=>{se()},disabled:!K||L,children:e(L?`database.diff.comparing`:`database.diff.compare`)}),(0,B.jsx)(r,{onClick:ce,disabled:!$,children:e(`database.diff.openScript`)})]})]})})}export{q as SchemaDiffDialog};
7
+ `}function I(e,t,n,r){let i=b(r,e,t.columns.get(e)??[],t.indexes.get(e)??[],null);return n.ddl.createTable(i)}var L={VIEW:`DROP_VIEW`,PROCEDURE:`DROP_PROCEDURE`,FUNCTION:`DROP_FUNCTION`,TRIGGER:`DROP_TRIGGER`,EVENT:`DROP_EVENT`};function R(e,t,n){let r=L[n.type];if(!e.hasQuery(r))return`-- ${e.label} has no ${n.type} objects`;let i=n.target?.table??n.source?.table??``;return`${e.getQuery(r,t,n.name,``,i).replace(/\s{2,}/g,` `).trim()};`}function z(e){let t=e.trim();return/;\s*$/.test(t)?t:`${t};`}var B=a(),re=e=>e instanceof Error?e.message:String(e),V=e=>`${e.type}:${e.name}`,H=e=>e.hostName||e.host||e.file||e.id;function U({id:e,label:t,side:n,onChange:r,connections:a,disabled:o}){let{t:s}=i(),[c,l]=(0,C.useState)([]),u=a.find(e=>e.id===n.connectionId);return(0,C.useEffect)(()=>{if(!u?.serverConnectionId)return;let e=!1,t=y(u.id),i=v(u.serverConnectionId);return(async()=>{try{let a=await t.introspect.listDatabases(i);if(e)return;l(a),a.includes(n.database)||r({connectionId:u.id,database:a[0]??``})}catch{e||l([])}})(),()=>{e=!0}},[u?.id,u?.serverConnectionId]),(0,B.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3`,children:[(0,B.jsx)(x,{className:`font-medium`,children:t}),(0,B.jsxs)(h,{value:n.connectionId,onValueChange:e=>r({connectionId:e,database:``}),disabled:o,children:[(0,B.jsx)(f,{id:`${e}-conn`,className:`w-full`,children:(0,B.jsx)(d,{placeholder:s(`database.diff.pickConnection`)})}),(0,B.jsx)(p,{children:a.map(e=>(0,B.jsx)(m,{value:e.id,children:H(e)},e.id))})]}),(0,B.jsxs)(h,{value:n.database,onValueChange:e=>r({...n,database:e}),disabled:o||c.length===0,children:[(0,B.jsx)(f,{id:`${e}-db`,className:`w-full`,children:(0,B.jsx)(d,{placeholder:s(`database.diff.pickDatabase`)})}),(0,B.jsx)(p,{children:c.map(e=>(0,B.jsx)(m,{value:e,children:e},e))})]})]})}async function W(e){let t=g.getState().activeConnections.find(t=>t.id===e.connectionId);if(!t?.serverConnectionId)throw Error(`Not connected`);let n=y(t.id),r=v(t.serverConnectionId),[i,a,o,s]=await Promise.all([n.introspect.listTables(r,e.database),n.introspect.listAllColumns(r,e.database),n.introspect.listAllIndexes(r,e.database),G(n,r,e.database)]);return{database:e.database,tables:i.map(e=>e.name).sort(),columns:a,indexes:o,objects:s}}async function G(e,t,n){let{introspect:r,capabilities:i}=e,a={VIEW:async()=>(await r.listViews(t,n)).map(e=>({name:e}))};i.procedures&&(a.PROCEDURE=async()=>(await r.listProcedures(t,n)).map(e=>({name:e}))),i.functions&&(a.FUNCTION=async()=>(await r.listFunctions(t,n)).map(e=>({name:e}))),i.triggers&&(a.TRIGGER=async()=>r.listTriggerDetails?r.listTriggerDetails(t,n):(await r.listTriggers(t,n)).map(e=>({name:e}))),i.events&&(a.EVENT=async()=>(await r.listEvents(t,n)).map(e=>({name:e})));let o=new Map;for(let e of w){let i=a[e];if(!i)continue;let s=await i(),c=new Map;for(let i of s){let a=null;try{a=await r.getCreateStatement(t,n,e,i.name)}catch{}c.set(i.name,i.table?{sql:a,table:i.table}:{sql:a})}o.set(e,c)}return o}function ie({diff:e}){let{t}=i(),n=e=>(0,B.jsx)(`pre`,{className:`whitespace-pre-wrap break-all text-xs font-mono`,children:e?e.sql??t(`database.diff.noDefinition`):`—`});return(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:t(`database.diff.source`)}),n(e.source)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:t(`database.diff.target`)}),n(e.target)]})]})}var K=e=>`${e.type}${e.nullable?``:` NOT NULL`}${e.defaultValue===null?``:` DEFAULT ${e.defaultValue}`}${e.extra?` ${e.extra}`:``}`;function ae({diff:e}){let{t}=i(),n=[];for(let r of e.addedColumns)n.push({kind:t(`database.diff.column`),name:r.name,source:K(r),target:`—`,tone:`text-green-600 dark:text-green-400`});for(let r of e.removedColumns)n.push({kind:t(`database.diff.column`),name:r.name,source:`—`,target:K(r),tone:`text-destructive`});for(let r of e.changedColumns)n.push({kind:t(`database.diff.column`),name:`${r.name} (${r.attributes.join(`, `)})`,source:K(r.source),target:K(r.target),tone:`text-amber-600 dark:text-amber-400`});for(let r of e.addedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`${r.type} (${r.columns.join(`, `)})`,target:`—`,tone:`text-green-600 dark:text-green-400`});for(let r of e.removedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`—`,target:`${r.type} (${r.columns.join(`, `)})`,tone:`text-destructive`});for(let r of e.changedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`${r.source.type} (${r.source.columns.join(`, `)})`,target:`${r.target.type} (${r.target.columns.join(`, `)})`,tone:`text-amber-600 dark:text-amber-400`});return(0,B.jsxs)(`table`,{className:`w-full text-xs font-mono`,children:[(0,B.jsx)(`thead`,{className:`text-muted-foreground`,children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{className:`text-left font-normal pr-2`,children:t(`database.diff.object`)}),(0,B.jsx)(`th`,{className:`text-left font-normal pr-2`,children:t(`database.diff.source`)}),(0,B.jsx)(`th`,{className:`text-left font-normal`,children:t(`database.diff.target`)})]})}),(0,B.jsx)(`tbody`,{children:n.map((e,t)=>(0,B.jsxs)(`tr`,{className:e.tone,children:[(0,B.jsxs)(`td`,{className:`pr-2 align-top whitespace-nowrap`,children:[e.kind,` `,e.name]}),(0,B.jsx)(`td`,{className:`pr-2 align-top break-all`,children:e.source}),(0,B.jsx)(`td`,{className:`align-top break-all`,children:e.target})]},t))})]})}function q(){let{t:e}=i(),n=_(e=>e.activeDialog),a=_(e=>e.closeDialog),d=g(e=>e.activeConnections),f=(0,C.useMemo)(()=>d.filter(e=>e.serverConnectionId),[d]),p=g(e=>e.activeConnectionId),m=n===`schema-diff`,h=ee(`schema-diff`),[v,b]=(0,C.useState)(()=>h&&f.some(e=>e.id===h.connectionId)?{connectionId:h.connectionId,database:h.database}:{connectionId:p&&f.some(e=>e.id===p)?p:f[0]?.id??``,database:``}),[x,w]=(0,C.useState)(()=>({connectionId:f.find(e=>e.id!==v.connectionId)?.id??v.connectionId,database:``})),[T,E]=(0,C.useState)(null),[D,O]=(0,C.useState)(null),[k,A]=(0,C.useState)(null),[j,M]=(0,C.useState)(!1),[P,I]=(0,C.useState)(!1),[L,R]=(0,C.useState)(!1),[z,H]=(0,C.useState)(null),G=v.connectionId===x.connectionId&&v.database===x.database,K=!!v.connectionId&&!!v.database&&!!x.connectionId&&!!x.database&&!G,q=x.connectionId?y(x.connectionId):null,J=v.connectionId?y(v.connectionId):null,oe=!!J&&!!q&&J.id!==q.id;async function se(){R(!0),H(null),O(null),A(null);try{let[e,n]=await Promise.all([W(v),W(x)]),r=N(e,n);E({source:e,target:n}),O(r);let i=h?.focus,a=null;if(i?.type===`TABLE`)a=r.changed.some(e=>e.table===i.name)?i.name:r.missingInTarget.includes(i.name)?`+${i.name}`:r.missingInSource.includes(i.name)?`-${i.name}`:null,r.identical.includes(i.name)&&I(!0);else if(i){let e=r.objects.find(e=>e.type===i.type&&e.name===i.name);e&&(a=V(e),e.status===`identical`&&I(!0))}A(a??r.changed[0]?.table??null),te(`compare_schemas`),t(`schema_diff`,{source_dbms:J?.id??`unknown`,target_dbms:q?.id??`unknown`,changed:r.changed.length,missing:r.missingInTarget.length+r.missingInSource.length})}catch(e){H(re(e))}finally{R(!1)}}let Y=(0,C.useMemo)(()=>!D||!T||!q?``:F(D,T.source,q,{database:x.database},{includeDrops:j}),[D,T,q,x.database,j]);function ce(){Y&&(ne(x.connectionId,Y,x.database,e(`database.diff.tabTitle`,{database:x.database})),a())}let X=D?.changed.find(e=>e.table===k)??null,Z=D?.objects.find(e=>V(e)===k)??null,Q=D?.objects.filter(e=>e.status!==`identical`)??[],le=D?e(`database.diff.summary`,{changed:D.changed.length+Q.filter(e=>e.status===`changed`).length,missingTarget:D.missingInTarget.length+Q.filter(e=>e.status===`missingInTarget`).length,missingSource:D.missingInSource.length+Q.filter(e=>e.status===`missingInSource`).length,identical:D.identical.length+D.objects.filter(e=>e.status===`identical`).length}):``,$=!!D&&D.changed.length+D.missingInTarget.length+D.missingInSource.length+Q.length>0,ue=e=>e===`missingInTarget`?`text-green-600 dark:text-green-400`:e===`missingInSource`?`text-destructive`:e===`changed`?`text-amber-600 dark:text-amber-400`:`text-muted-foreground`,de=e=>e===`missingInTarget`?`+`:e===`missingInSource`?`-`:e===`changed`?`~`:`=`;return(0,B.jsx)(u,{open:m,onOpenChange:e=>{e||a()},children:(0,B.jsxs)(c,{className:`sm:max-w-[860px]`,children:[(0,B.jsx)(o,{children:(0,B.jsx)(l,{children:e(`database.diff.title`)})}),(0,B.jsxs)(`div`,{className:`space-y-3`,children:[(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,B.jsx)(U,{id:`diff-source`,label:e(`database.diff.source`),side:v,onChange:b,connections:f,disabled:L}),(0,B.jsx)(U,{id:`diff-target`,label:e(`database.diff.target`),side:x,onChange:w,connections:f,disabled:L})]}),oe&&(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.crossEngineHint`)}),G&&v.database&&(0,B.jsx)(`p`,{className:`text-xs text-destructive`,children:e(`database.diff.sameSide`)}),z&&(0,B.jsx)(`p`,{className:`text-sm text-destructive whitespace-pre-wrap`,children:z}),D&&(0,B.jsxs)(`div`,{className:`space-y-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:le}),(0,B.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:P,onChange:e=>I(e.target.checked)}),e(`database.diff.showIdentical`)]})]}),(0,B.jsxs)(`div`,{className:`grid grid-cols-[220px_1fr] gap-3 h-[300px]`,children:[(0,B.jsxs)(`ul`,{className:`overflow-auto rounded-md border text-sm`,children:[D.missingInTarget.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-green-600 dark:text-green-400 ${k===`+${e}`?`bg-accent`:``}`,onClick:()=>A(`+${e}`),children:[`+ `,e]},`mt-${e}`)),D.changed.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-amber-600 dark:text-amber-400 ${k===e.table?`bg-accent`:``}`,onClick:()=>A(e.table),children:[`~ `,e.table]},e.table)),D.missingInSource.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-destructive ${k===`-${e}`?`bg-accent`:``}`,onClick:()=>A(`-${e}`),children:[`- `,e]},`ms-${e}`)),P&&D.identical.map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:[`= `,e]},`id-${e}`)),D.objects.filter(e=>P||e.status!==`identical`).map(e=>(0,B.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer ${ue(e.status)} ${k===V(e)?`bg-accent`:``}`,onClick:()=>A(V(e)),children:[de(e.status),` `,(0,B.jsxs)(`span`,{className:`text-muted-foreground`,children:[`[`,S(e.type),`]`]}),` `,e.name]},V(e))),!$&&(0,B.jsx)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:e(`database.diff.identicalAll`)})]}),(0,B.jsx)(`div`,{className:`overflow-auto rounded-md border p-2`,children:X?(0,B.jsx)(ae,{diff:X}):Z?(0,B.jsx)(ie,{diff:Z}):k?.startsWith(`+`)?(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.missingInTarget`,{table:k.slice(1)})}):k?.startsWith(`-`)?(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.missingInSource`,{table:k.slice(1)})}):(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.selectTable`)})})]}),(0,B.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs cursor-pointer`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:j,onChange:e=>M(e.target.checked)}),(0,B.jsx)(`span`,{className:j?`text-destructive`:``,children:e(`database.diff.includeDrops`)})]})]})]}),(0,B.jsxs)(s,{children:[(0,B.jsx)(r,{variant:`outline`,onClick:a,children:e(`database.diff.close`)}),(0,B.jsx)(r,{variant:`secondary`,onClick:()=>{se()},disabled:!K||L,children:e(L?`database.diff.comparing`:`database.diff.compare`)}),(0,B.jsx)(r,{onClick:ce,disabled:!$,children:e(`database.diff.openScript`)})]})]})})}export{q as SchemaDiffDialog};
@@ -1 +1 @@
1
- import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{a as r}from"./BniymiMs.js";import{i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,t as u}from"./DzRyVlxz.js";import{t as d}from"./S7HbowYz.js";import{n as f}from"./D8_hwGjG.js";import{l as p}from"./BHe42P9W.js";import{t as m}from"./BRZhVXRC.js";import{C as h,S as g,T as _,b as v,gt as y,l as b,w as x,x as S}from"./B8zpsP_u.js";var C=e(t(),1),w=a();function T(){let e=d.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function E(e){let t=T();if(!t)throw Error(r.t(`command.noActiveConnection`));let n=m().getQuery(e===`global`?`SHOW_GLOBAL_STATUS`:`SHOW_SESSION_STATUS`);return(await p(t,n)).records.map(e=>({Variable_name:e[0],Value:e[1]}))}function D(){let{t:e}=i(),{activeDialog:t,closeDialog:r,setFooterMessage:a}=f(),[d,p]=(0,C.useState)([]),[m,T]=(0,C.useState)(``),[D,O]=(0,C.useState)(`session`),k=t===`status`,A=(0,C.useCallback)(t=>E(t).then(p).catch(t=>a(e(`command.status.loadError`,{message:t instanceof Error?t.message:String(t)}))),[a,e]);(0,C.useEffect)(()=>{k&&A(D)},[k,D,A]);let j=(0,C.useMemo)(()=>{if(!m.trim())return d;let e=m.toLowerCase();return d.filter(t=>t.Variable_name.toLowerCase().includes(e)||t.Value.toLowerCase().includes(e))},[d,m]);function M(e){e||(T(``),r())}function N(e){O(e)}return(0,w.jsx)(u,{open:k,onOpenChange:M,children:(0,w.jsxs)(c,{className:`sm:max-w-[900px] max-h-[80vh] flex flex-col`,children:[(0,w.jsx)(o,{children:(0,w.jsx)(l,{children:e(`command.status.title`)})}),(0,w.jsxs)(`div`,{className:`flex items-center gap-3 pb-2`,children:[(0,w.jsxs)(`div`,{className:`flex gap-1`,children:[(0,w.jsx)(n,{variant:D===`session`?`default`:`outline`,size:`sm`,onClick:()=>N(`session`),children:e(`command.scope.session`)}),(0,w.jsx)(n,{variant:D===`global`?`default`:`outline`,size:`sm`,onClick:()=>N(`global`),children:e(`command.scope.global`)})]}),(0,w.jsx)(b,{placeholder:e(`command.status.filterPlaceholder`),value:m,onChange:e=>T(e.target.value),className:`max-w-xs`})]}),(0,w.jsx)(`div`,{className:`flex-1 border rounded-md overflow-hidden min-h-0`,children:(0,w.jsx)(y,{className:`h-[400px]`,children:(0,w.jsxs)(v,{children:[(0,w.jsx)(x,{children:(0,w.jsxs)(_,{children:[(0,w.jsx)(h,{className:`w-[300px]`,children:e(`command.variableName`)}),(0,w.jsx)(h,{children:e(`command.value`)})]})}),(0,w.jsx)(S,{children:j.length===0?(0,w.jsx)(_,{children:(0,w.jsx)(g,{colSpan:2,className:`text-center text-muted-foreground`,children:e(`command.status.empty`)})}):j.map(e=>(0,w.jsxs)(_,{children:[(0,w.jsx)(g,{className:`font-mono text-xs`,children:e.Variable_name}),(0,w.jsx)(g,{className:`font-mono text-xs`,children:e.Value})]},e.Variable_name))})]})})}),(0,w.jsx)(s,{children:(0,w.jsx)(n,{variant:`outline`,onClick:()=>M(!1),children:e(`command.close`)})})]})})}export{D as StatusDialog};
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{a as r}from"./BDtsGuIR.js";import{i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,t as u}from"./DzRyVlxz.js";import{t as d}from"./S7HbowYz.js";import{n as f}from"./D8_hwGjG.js";import{l as p}from"./BkXrfAoR.js";import{t as m}from"./BRZhVXRC.js";import{C as h,S as g,T as _,b as v,l as y,vt as b,w as x,x as S}from"./CExE8dKz.js";var C=e(t(),1),w=a();function T(){let e=d.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function E(e){let t=T();if(!t)throw Error(r.t(`command.noActiveConnection`));let n=m().getQuery(e===`global`?`SHOW_GLOBAL_STATUS`:`SHOW_SESSION_STATUS`);return(await p(t,n)).records.map(e=>({Variable_name:e[0],Value:e[1]}))}function D(){let{t:e}=i(),{activeDialog:t,closeDialog:r,setFooterMessage:a}=f(),[d,p]=(0,C.useState)([]),[m,T]=(0,C.useState)(``),[D,O]=(0,C.useState)(`session`),k=t===`status`,A=(0,C.useCallback)(t=>E(t).then(p).catch(t=>a(e(`command.status.loadError`,{message:t instanceof Error?t.message:String(t)}))),[a,e]);(0,C.useEffect)(()=>{k&&A(D)},[k,D,A]);let j=(0,C.useMemo)(()=>{if(!m.trim())return d;let e=m.toLowerCase();return d.filter(t=>t.Variable_name.toLowerCase().includes(e)||t.Value.toLowerCase().includes(e))},[d,m]);function M(e){e||(T(``),r())}function N(e){O(e)}return(0,w.jsx)(u,{open:k,onOpenChange:M,children:(0,w.jsxs)(c,{className:`sm:max-w-[900px] max-h-[80vh] flex flex-col`,children:[(0,w.jsx)(o,{children:(0,w.jsx)(l,{children:e(`command.status.title`)})}),(0,w.jsxs)(`div`,{className:`flex items-center gap-3 pb-2`,children:[(0,w.jsxs)(`div`,{className:`flex gap-1`,children:[(0,w.jsx)(n,{variant:D===`session`?`default`:`outline`,size:`sm`,onClick:()=>N(`session`),children:e(`command.scope.session`)}),(0,w.jsx)(n,{variant:D===`global`?`default`:`outline`,size:`sm`,onClick:()=>N(`global`),children:e(`command.scope.global`)})]}),(0,w.jsx)(y,{placeholder:e(`command.status.filterPlaceholder`),value:m,onChange:e=>T(e.target.value),className:`max-w-xs`})]}),(0,w.jsx)(`div`,{className:`flex-1 border rounded-md overflow-hidden min-h-0`,children:(0,w.jsx)(b,{className:`h-[400px]`,children:(0,w.jsxs)(v,{children:[(0,w.jsx)(x,{children:(0,w.jsxs)(_,{children:[(0,w.jsx)(h,{className:`w-[300px]`,children:e(`command.variableName`)}),(0,w.jsx)(h,{children:e(`command.value`)})]})}),(0,w.jsx)(S,{children:j.length===0?(0,w.jsx)(_,{children:(0,w.jsx)(g,{colSpan:2,className:`text-center text-muted-foreground`,children:e(`command.status.empty`)})}):j.map(e=>(0,w.jsxs)(_,{children:[(0,w.jsx)(g,{className:`font-mono text-xs`,children:e.Variable_name}),(0,w.jsx)(g,{className:`font-mono text-xs`,children:e.Value})]},e.Variable_name))})]})})}),(0,w.jsx)(s,{children:(0,w.jsx)(n,{variant:`outline`,onClick:()=>M(!1),children:e(`command.close`)})})]})})}export{D as StatusDialog};
@@ -1 +1 @@
1
- import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,t as l}from"./DzRyVlxz.js";import{a as u,i as d,n as f,r as p,t as m}from"./D4l4mWtD.js";import{t as h}from"./S7HbowYz.js";import{n as g}from"./D8_hwGjG.js";import{r as _}from"./BRZhVXRC.js";import{a as v,h as y}from"./BvEGx3Si.js";import{c as b,l as x}from"./B8zpsP_u.js";var S=e(t(),1),C=i(),w=[`utf8mb4`,`utf8`,`latin1`,`ascii`,`binary`,`cp1251`,`euckr`,`gb2312`,`gbk`,`sjis`,`ucs2`,`utf16`,`utf32`],T={utf8mb4:[`utf8mb4_general_ci`,`utf8mb4_unicode_ci`,`utf8mb4_bin`,`utf8mb4_0900_ai_ci`],utf8:[`utf8_general_ci`,`utf8_unicode_ci`,`utf8_bin`],latin1:[`latin1_swedish_ci`,`latin1_general_ci`,`latin1_bin`],ascii:[`ascii_general_ci`,`ascii_bin`],binary:[`binary`],cp1251:[`cp1251_general_ci`,`cp1251_bin`],euckr:[`euckr_korean_ci`,`euckr_bin`],gb2312:[`gb2312_chinese_ci`,`gb2312_bin`],gbk:[`gbk_chinese_ci`,`gbk_bin`],sjis:[`sjis_japanese_ci`,`sjis_bin`],ucs2:[`ucs2_general_ci`,`ucs2_unicode_ci`,`ucs2_bin`],utf16:[`utf16_general_ci`,`utf16_unicode_ci`,`utf16_bin`],utf32:[`utf32_general_ci`,`utf32_unicode_ci`,`utf32_bin`]};function E(){let{t:e}=r(),{activeDialog:t,closeDialog:i}=g(),E=t===`create-database`,[D,O]=(0,S.useState)(``),[k,A]=(0,S.useState)(`utf8mb4`),[j,M]=(0,S.useState)(`utf8mb4_general_ci`),[N,P]=(0,S.useState)(!1),[F,I]=(0,S.useState)(null);function L(e){e||(i(),I(null),O(``),A(`utf8mb4`),M(`utf8mb4_general_ci`))}function R(e){A(e);let t=T[e];M(t?.[0]??``)}async function z(){let e=h.getState().activeConnectionId,t=D.trim();if(!(!e||!t)){I(null),P(!0);try{let n=_(e).getQuery(`CREATE_DATABASE`,t,k,j);await v(e,n),await y(e),L(!1)}catch(e){I(e instanceof Error?e.message:String(e))}finally{P(!1)}}}let B=T[k]??[];return(0,C.jsx)(l,{open:E,onOpenChange:L,children:(0,C.jsxs)(s,{className:`sm:max-w-[450px]`,children:[(0,C.jsx)(a,{children:(0,C.jsx)(c,{children:e(`database.create.title`)})}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(b,{htmlFor:`db-name`,children:e(`database.create.name`)}),(0,C.jsx)(x,{id:`db-name`,value:D,onChange:e=>O(e.target.value),placeholder:e(`database.create.namePlaceholder`)})]}),(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(b,{htmlFor:`db-charset`,children:e(`database.create.charset`)}),(0,C.jsxs)(m,{value:k,onValueChange:R,children:[(0,C.jsx)(d,{id:`db-charset`,className:`w-full`,children:(0,C.jsx)(u,{})}),(0,C.jsx)(f,{children:w.map(e=>(0,C.jsx)(p,{value:e,children:e},e))})]})]}),(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(b,{htmlFor:`db-collation`,children:e(`database.create.collation`)}),(0,C.jsxs)(m,{value:j,onValueChange:M,children:[(0,C.jsx)(d,{id:`db-collation`,className:`w-full`,children:(0,C.jsx)(u,{})}),(0,C.jsx)(f,{children:B.map(e=>(0,C.jsx)(p,{value:e,children:e},e))})]})]})]}),F&&(0,C.jsx)(`p`,{className:`px-1 text-xs text-destructive leading-relaxed`,children:F}),(0,C.jsxs)(o,{children:[(0,C.jsx)(n,{variant:`outline`,onClick:()=>L(!1),children:e(`database.create.cancel`)}),(0,C.jsx)(n,{onClick:()=>void z(),disabled:!D.trim()||N,children:e(`database.create.create`)})]})]})})}export{E as CreateDatabaseDialog};
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,t as l}from"./DzRyVlxz.js";import{a as u,i as d,n as f,r as p,t as m}from"./G06qjCej.js";import{t as h}from"./S7HbowYz.js";import{n as g}from"./D8_hwGjG.js";import{r as _}from"./BRZhVXRC.js";import{a as v,h as y}from"./BnJGrP6V.js";import{c as b,l as x}from"./CExE8dKz.js";var S=e(t(),1),C=i(),w=[`utf8mb4`,`utf8`,`latin1`,`ascii`,`binary`,`cp1251`,`euckr`,`gb2312`,`gbk`,`sjis`,`ucs2`,`utf16`,`utf32`],T={utf8mb4:[`utf8mb4_general_ci`,`utf8mb4_unicode_ci`,`utf8mb4_bin`,`utf8mb4_0900_ai_ci`],utf8:[`utf8_general_ci`,`utf8_unicode_ci`,`utf8_bin`],latin1:[`latin1_swedish_ci`,`latin1_general_ci`,`latin1_bin`],ascii:[`ascii_general_ci`,`ascii_bin`],binary:[`binary`],cp1251:[`cp1251_general_ci`,`cp1251_bin`],euckr:[`euckr_korean_ci`,`euckr_bin`],gb2312:[`gb2312_chinese_ci`,`gb2312_bin`],gbk:[`gbk_chinese_ci`,`gbk_bin`],sjis:[`sjis_japanese_ci`,`sjis_bin`],ucs2:[`ucs2_general_ci`,`ucs2_unicode_ci`,`ucs2_bin`],utf16:[`utf16_general_ci`,`utf16_unicode_ci`,`utf16_bin`],utf32:[`utf32_general_ci`,`utf32_unicode_ci`,`utf32_bin`]};function E(){let{t:e}=r(),{activeDialog:t,closeDialog:i}=g(),E=t===`create-database`,[D,O]=(0,S.useState)(``),[k,A]=(0,S.useState)(`utf8mb4`),[j,M]=(0,S.useState)(`utf8mb4_general_ci`),[N,P]=(0,S.useState)(!1),[F,I]=(0,S.useState)(null);function L(e){e||(i(),I(null),O(``),A(`utf8mb4`),M(`utf8mb4_general_ci`))}function R(e){A(e);let t=T[e];M(t?.[0]??``)}async function z(){let e=h.getState().activeConnectionId,t=D.trim();if(!(!e||!t)){I(null),P(!0);try{let n=_(e).getQuery(`CREATE_DATABASE`,t,k,j);await v(e,n),await y(e),L(!1)}catch(e){I(e instanceof Error?e.message:String(e))}finally{P(!1)}}}let B=T[k]??[];return(0,C.jsx)(l,{open:E,onOpenChange:L,children:(0,C.jsxs)(s,{className:`sm:max-w-[450px]`,children:[(0,C.jsx)(a,{children:(0,C.jsx)(c,{children:e(`database.create.title`)})}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(b,{htmlFor:`db-name`,children:e(`database.create.name`)}),(0,C.jsx)(x,{id:`db-name`,value:D,onChange:e=>O(e.target.value),placeholder:e(`database.create.namePlaceholder`)})]}),(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(b,{htmlFor:`db-charset`,children:e(`database.create.charset`)}),(0,C.jsxs)(m,{value:k,onValueChange:R,children:[(0,C.jsx)(d,{id:`db-charset`,className:`w-full`,children:(0,C.jsx)(u,{})}),(0,C.jsx)(f,{children:w.map(e=>(0,C.jsx)(p,{value:e,children:e},e))})]})]}),(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(b,{htmlFor:`db-collation`,children:e(`database.create.collation`)}),(0,C.jsxs)(m,{value:j,onValueChange:M,children:[(0,C.jsx)(d,{id:`db-collation`,className:`w-full`,children:(0,C.jsx)(u,{})}),(0,C.jsx)(f,{children:B.map(e=>(0,C.jsx)(p,{value:e,children:e},e))})]})]})]}),F&&(0,C.jsx)(`p`,{className:`px-1 text-xs text-destructive leading-relaxed`,children:F}),(0,C.jsxs)(o,{children:[(0,C.jsx)(n,{variant:`outline`,onClick:()=>L(!1),children:e(`database.create.cancel`)}),(0,C.jsx)(n,{onClick:()=>void z(),disabled:!D.trim()||N,children:e(`database.create.create`)})]})]})})}export{E as CreateDatabaseDialog};
@@ -1 +1 @@
1
- import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./S7HbowYz.js";import{v as r}from"./Bgu3teFB.js";import{t as i}from"./_zaonxnw.js";var a=e(t(),1),o=2e3;function s(e,t){let s=n(t=>t.activeConnections.find(t=>t.id===e)?.serverConnectionId??null),[c,l]=(0,a.useState)([]),[u,d]=(0,a.useState)(!1),[f,p]=(0,a.useState)(0),[m,h]=(0,a.useState)(null),g=(0,a.useRef)(null),_=(0,a.useRef)(t);(0,a.useEffect)(()=>{_.current=t},[t]);let v=(0,a.useCallback)(()=>{g.current?.(),g.current=null,d(!1)},[]),y=(0,a.useCallback)(async e=>{if(s){v(),h(null);try{g.current=await r({...e,connectionId:s},e=>{if(e.type===`dropped`)p(t=>t+e.count);else if(e.type===`error`)h(e.message);else{let t=_.current(e);t!==null&&l(e=>[t,...e].slice(0,o))}},()=>{g.current=null,d(!1)}),d(!0)}catch(e){h(i(e))}}},[s,v]);return(0,a.useEffect)(()=>()=>g.current?.(),[]),{rows:c,running:u,dropped:f,error:m,start:y,stop:v,clear:()=>{l([]),p(0)},dismissError:()=>h(null),connected:s!==null}}export{s as n,o as t};
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./S7HbowYz.js";import{y as r}from"./BjwrN_ch.js";import{t as i}from"./_zaonxnw.js";var a=e(t(),1),o=2e3;function s(e,t){let s=n(t=>t.activeConnections.find(t=>t.id===e)?.serverConnectionId??null),[c,l]=(0,a.useState)([]),[u,d]=(0,a.useState)(!1),[f,p]=(0,a.useState)(0),[m,h]=(0,a.useState)(null),g=(0,a.useRef)(null),_=(0,a.useRef)(t);(0,a.useEffect)(()=>{_.current=t},[t]);let v=(0,a.useCallback)(()=>{g.current?.(),g.current=null,d(!1)},[]),y=(0,a.useCallback)(async e=>{if(s){v(),h(null);try{g.current=await r({...e,connectionId:s},e=>{if(e.type===`dropped`)p(t=>t+e.count);else if(e.type===`error`)h(e.message);else{let t=_.current(e);t!==null&&l(e=>[t,...e].slice(0,o))}},()=>{g.current=null,d(!1)}),d(!0)}catch(e){h(i(e))}}},[s,v]);return(0,a.useEffect)(()=>()=>g.current?.(),[]),{rows:c,running:u,dropped:f,error:m,start:y,stop:v,clear:()=>{l([]),p(0)},dismissError:()=>h(null),connected:s!==null}}export{s as n,o as t};
@@ -0,0 +1,11 @@
1
+ import{a as e}from"./BDtsGuIR.js";import{t}from"./Nro86Y63.js";import{t as n}from"./Bit0Kfog.js";var r=`http://127.0.0.1:8888`,i=n(`tunnelAgent`,()=>({url:null,token:null}));function a(e){i.url=e.url?.replace(/\/+$/,``)||null,i.token=e.token?.trim()||null}var o=new Set([`127.0.0.1`,`localhost`,`[::1]`,`::1`]);function s(e){try{let t=new URL(e);return(t.protocol===`http:`||t.protocol===`https:`)&&o.has(t.hostname)}catch{return!1}}function c(e){try{return typeof window<`u`&&new URL(e).origin===window.location.origin}catch{return!1}}function l(e){return s(e)||c(e)}function u(){return i.url!==null&&i.url!==`/api`&&!l(i.url)}function d(){return i.url??r}function f(){let t=d();return t===`/api`?e.t(`services.agent.devProxyUrl`,{url:`http://localhost:8888`}):t}async function p(){let t=f(),n;try{let e={};i.token&&(e.Authorization=`Bearer ${i.token}`),n=await(await fetch(`${d()}/health`,{cache:`no-store`,headers:e})).json()}catch(e){return{state:`offline`,url:t,message:e instanceof Error?e.message:String(e)}}if(n.name!==`planche`||typeof n.version!=`string`||!/^[\w.+-]{1,32}$/.test(n.version))return{state:`offline`,url:t,message:e.t(`services.agent.notPlanche`)};let r=n.install===`standalone`?`standalone`:`npx`;return n.protocolVersion===2?n.authorized===!1||i.token===null&&n.authorized===void 0?{state:`unauthorized`,url:t,version:n.version,install:r}:{state:`online`,url:t,version:n.version,activeConnections:n.activeConnections??0,install:r,...n.gateway?{gateway:n.gateway}:{}}:{state:`outdated`,url:t,version:n.version,protocolVersion:n.protocolVersion??0,install:r}}async function m(){let t=await fetch(`${d()}/profiles`,{cache:`no-store`,headers:M()}),n=await t.json().catch(()=>null);if(!t.ok||!n||n.success!==!0)throw new N(n?.message??e.t(`services.agent.httpError`,{status:t.status,statusText:t.statusText}),t.status);return n}async function h(){return E(`/ai/config`,{method:`GET`})}async function g(e){return E(`/ai/config`,{method:`PUT`,body:JSON.stringify(e)})}async function _(){return E(`/ai/config`,{method:`DELETE`})}async function v(){try{return(await(await fetch(`${d()}/health`,{cache:`no-store`,headers:M()})).json()).ai?.tools===!0}catch{return!1}}async function y(e){await E(`/bridge/tools`,{method:`POST`,body:JSON.stringify({tools:e})})}async function b(e,t,n){await E(`/bridge/result`,{method:`POST`,body:JSON.stringify({id:e,content:t,isError:n})})}async function x(t,n){let r=new AbortController,i=await fetch(`${d()}/bridge/events`,{headers:M(),signal:r.signal,cache:`no-store`});if(!i.ok||!i.body)throw new N(e.t(`services.agent.httpError`,{status:i.status,statusText:i.statusText}),i.status);return(async()=>{let e=i.body.getReader(),r=new TextDecoder,a=``;try{for(;;){let{done:n,value:i}=await e.read();if(n)break;a+=r.decode(i,{stream:!0});let o=a.indexOf(`
2
+
3
+ `);for(;o!==-1;){let e=a.slice(0,o);a=a.slice(o+2);for(let n of e.split(`
4
+ `))n.startsWith(`data: `)&&t(n.slice(6));o=a.indexOf(`
5
+
6
+ `)}}}catch{}n()})(),()=>r.abort()}async function S(t,n,r){let i=new AbortController,a=await fetch(`${d()}/stream`,{method:`POST`,headers:M(k.get(t.connectionId)),body:JSON.stringify(t),signal:i.signal,cache:`no-store`});if(!a.ok||!a.body)throw new N((await a.json().catch(()=>null))?.message??e.t(`services.agent.httpError`,{status:a.status,statusText:a.statusText}),a.status);return(async()=>{let e=a.body.getReader(),t=new TextDecoder,i=``;try{for(;;){let{done:r,value:a}=await e.read();if(r)break;i+=t.decode(a,{stream:!0});let o=i.indexOf(`
7
+
8
+ `);for(;o!==-1;){let e=i.slice(0,o);i=i.slice(o+2);for(let t of e.split(`
9
+ `))if(t.startsWith(`data: `))try{n(JSON.parse(t.slice(6)))}catch{}o=i.indexOf(`
10
+
11
+ `)}}}catch{}r()})(),()=>i.abort()}async function C(){return E(`/mcp/setup`,{method:`POST`})}async function w(){await E(`/mcp/setup`,{method:`DELETE`})}async function T(e,t){return E(`/ai/run`,{method:`POST`,body:JSON.stringify(e),signal:t})}async function E(t,n){let r=await fetch(`${d()}${t}`,{cache:`no-store`,headers:M(),...n}),i=await r.json().catch(()=>null);if(!r.ok||!i||i.success!==!0)throw new N(i?.message??e.t(`services.agent.httpError`,{status:r.status,statusText:r.statusText}),r.status);return i}function D(e){let t=e.ssh;if(t?.enabled)return{host:t.host,port:t.port,user:t.user,auth:t.auth,password:t.auth===`password`?t.password??``:void 0,privateKey:t.auth===`key`?t.privateKey:void 0,passphrase:t.auth===`key`&&t.passphrase||void 0}}function O(e){return e.gatewayProfile?{profile:e.gatewayProfile}:e.dbms===`sqlite`?{driver:`sqlite`,file:e.file??``,createIfMissing:e.createIfMissing??!1,readonly:e.readOnly??!1}:e.dbms===`do`?{driver:`do`,devUrl:e.devUrl??``}:e.dbms===`d1`?e.devUrl?{driver:`d1`,devUrl:e.devUrl,databaseId:e.databaseId||void 0}:{driver:`d1`,accountId:e.accountId??``,databaseId:e.databaseId??``,apiToken:e.pass}:e.dbms===`postgres`?{driver:`postgres`,host:e.host,port:e.port,user:e.user,password:e.pass,database:e.database||`postgres`,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}:t.has(e.dbms)?{driver:`postgres`,host:e.host,port:e.port,user:e.user,password:e.pass,database:e.database||`postgres`,ssl:!0,sslVerify:e.dbms===`neon`}:e.dbms===`mssql`?{driver:`mssql`,host:e.host,port:e.port,user:e.user,password:e.pass,database:e.database||`master`,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}:e.dbms===`redis`?{driver:`redis`,host:e.host,port:e.port,user:e.user||void 0,password:e.pass,db:Number(/^(?:db)?(\d+)$/.exec(e.database??``)?.[1]??0),ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}:e.dbms===`elasticsearch`||e.dbms===`opensearch`?{driver:`elasticsearch`,host:e.host,port:e.port,user:e.user||void 0,password:e.pass,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}:e.dbms===`oracle`?{driver:`oracle`,host:e.host,port:e.port,user:e.user,password:e.pass,serviceName:e.database||`FREEPDB1`,ssh:D(e)}:{driver:`mysql`,host:e.host,port:e.port,user:e.user,password:e.pass,charset:e.charset===`utf8`?`utf8mb4`:e.charset,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:D(e)}}var k=n(`tunnelAuthTokens`,()=>new Map);function A(e,t){let n=t?.trim();n?k.set(e,n):k.delete(e)}function j(e){return e?.trim()||i.token||void 0}function M(e){let t={"Content-Type":`application/json`},n=j(e);return n&&(t.Authorization=`Bearer ${n}`),t}var N=class extends Error{status;body;outdatedAgent=!1;constructor(e,t,n=null){super(e),this.status=t,this.body=n}},P=class extends Error{};function F(e){if(!(e instanceof N)||e.status!==409)return null;let t=e.body,n=t?.hostKey;if(t?.code!==`host-key-unknown`||!n)return null;let r=typeof n.host==`string`&&/^[A-Za-z0-9._:[\]-]{1,253}$/.test(n.host)?n.host:null,i=typeof n.type==`string`&&/^[\w.@-]{1,64}$/.test(n.type)?n.type:null,a=typeof n.fingerprint==`string`&&/^SHA256:[A-Za-z0-9+/]{43}$/.test(n.fingerprint)?n.fingerprint:null,o=Number.isInteger(n.port)&&n.port>0&&n.port<65536?n.port:null;return r&&i&&a&&o?{host:r,port:o,type:i,fingerprint:a}:null}async function I(t,n){let r;try{r=await fetch(`${t.replace(/\/+$/,``)}/pair`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:n})})}catch(e){throw new P(e instanceof Error?e.message:String(e))}let i=await r.json().catch(()=>null);if(!r.ok||!i?.success||typeof i.token!=`string`)throw new N(i?.message??e.t(`services.agent.httpError`,{status:r.status,statusText:r.statusText}),r.status);return i.token}async function L(t,n,r){let i;try{i=await fetch(`${d()}${t}`,{method:`POST`,headers:M(r),body:JSON.stringify(n)})}catch(t){throw new P(e.t(`services.agent.unreachable`,{url:f(),message:t instanceof Error?t.message:String(t)}))}let a=null;try{a=await i.json()}catch{a=null}if(!i.ok)throw new N(a?.message??e.t(`services.agent.httpError`,{status:i.status,statusText:i.statusText}),i.status,a);if(!a)throw Error(e.t(`services.agent.emptyResponse`));return a}async function R(t,n){try{return await n()}catch(n){if(n instanceof N&&n.status===400&&`driver`in t&&/^Unsupported driver/.test(n.message)){let n=new N(e.t(`services.agent.driverUnsupported`,{driver:t.driver}),400);throw n.outdatedAgent=!0,n}throw n}}async function z(e,t){let n=await R(e,()=>L(`/connect`,e,t));return n.success&&n.connectionId&&(A(n.connectionId,j(t)),G()),n}async function B(e){try{let t=await L(`/cancel`,{connectionId:e},k.get(e));return t.cancelled?t.abandoned?`abandoned`:`cancelled`:`unsupported`}catch(e){return e instanceof N&&e.status===404?`agent-outdated`:`failed`}}var V=new Set;async function H(e,t,n){let r=d();if(!V.has(r))try{return(await L(`/batch`,{connectionId:e,statements:t,database:n},k.get(e))).results}catch(e){if(!(e instanceof N&&e.status===404&&!/Connection not found/.test(e.message)))throw e;V.add(r)}let i=[];for(let r of t){let t=await W(e,r,n);i.push(t.success?{...t,success:!0}:{success:!1,message:t.message??`Query failed`})}return i}async function U(e,t,n){let r=performance.now(),i=await L(`/query`,{connectionId:e,sql:t,database:n},k.get(e));return i.execTime||=Math.round(performance.now()-r),i}async function W(e,t,n){let r=performance.now();try{return await U(e,t,n)}catch(e){return{success:!1,fields:[],records:[],affectedRows:0,insertId:0,isResultQuery:!1,execTime:Math.round(performance.now()-r),message:e instanceof Error?e.message:String(e)}}}function G(){if(typeof window>`u`)return;let e=n(`tunnelPageHide`,()=>({done:!1}));e.done||(e.done=!0,window.addEventListener(`pagehide`,()=>{for(let[e,t]of k)fetch(`${d()}/disconnect`,{method:`POST`,headers:M(t),body:JSON.stringify({connectionId:e}),keepalive:!0}).catch(()=>void 0)}))}async function K(e){try{await L(`/disconnect`,{connectionId:e},k.get(e))}finally{k.delete(e)}}async function q(e,t){return R(e,()=>L(`/test-connection`,e,t))}var J=0;function Y(e){J>=3||(async()=>{try{(await fetch(`${d()}/usage`,{method:`POST`,headers:M(),body:JSON.stringify({feature:e})})).ok?J=0:J+=1}catch{J+=1}})()}export{g as C,q as D,T as E,O,Y as S,w as T,l as _,B as a,I as b,z as c,H as d,U as f,F as g,C as h,v as i,_ as l,m,P as n,p as o,h as p,u as r,a as s,N as t,K as u,x as v,y as w,b as x,S as y};
@@ -1 +1 @@
1
- import{o as e,t}from"./CYz610vE.js";import{a as n,i as r}from"./BniymiMs.js";import{i,n as a,r as o,t as s}from"./eFSiW0Lh.js";import{f as c,t as l}from"./S7HbowYz.js";import{t as u}from"./Bit0Kfog.js";import{D as d,E as f,d as p,i as ee,l as te,n as ne,s as m,t as re,u as ie}from"./Bgu3teFB.js";import{n as ae}from"./D8_hwGjG.js";import{n as oe}from"./C1gqjEN3.js";function h(e,t,n){return e.map(e=>e.id===t?n(e):e.children.length>0?{...e,children:h(e.children,t,n)}:e)}function se(e,t){for(let n of e){if(n.id===t)return n;let e=se(n.children,t);if(e)return e}return null}function g(e,t,n){let r=new Set(e??[]);if(n)r.add(t);else for(let e of r)(e===t||e.startsWith(`${t}/`))&&r.delete(e);return[...r]}var _=t()(i(e=>({trees:{},selectedNodeId:{},expandedIds:{},setTree:(t,n)=>e(e=>({trees:{...e.trees,[t]:n}})),setChildren:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:g(e.expandedIds[t],n,!0)},trees:{...e.trees,[t]:h(i,n,e=>({...e,children:r,isLoading:!1,isExpanded:!0,metadata:{...e.metadata,count:r.length}}))}}:e}),setNodeMetadata:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:h(i,n,e=>({...e,metadata:{...e.metadata,...r}}))}}:e}),toggleExpanded:(t,n)=>e(e=>{let r=e.trees[t];if(!r)return e;let i=!se(r,n)?.isExpanded;return{expandedIds:{...e.expandedIds,[t]:g(e.expandedIds[t],n,i)},trees:{...e.trees,[t]:h(r,n,e=>({...e,isExpanded:i}))}}}),setExpanded:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:g(e.expandedIds[t],n,r)},trees:{...e.trees,[t]:h(i,n,e=>({...e,isExpanded:r}))}}:e}),setSelected:(t,n)=>e(e=>({selectedNodeId:{...e.selectedNodeId,[t]:n}})),setLoading:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:h(i,n,e=>({...e,isLoading:r}))}}:e}),removeTree:t=>e(e=>{let n={...e.trees},r={...e.selectedNodeId};return delete n[t],delete r[t],{trees:n,selectedNodeId:r}})}),{name:`planche-schema`,storage:s(),partialize:e=>({selectedNodeId:e.selectedNodeId,expandedIds:e.expandedIds})})),v=32,y=24,ce=931071618,b=931071619,x=(e,t)=>(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0,le=(e,t)=>(e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t])>>>0;function S(e,t,n,r,i=0,a=0){let o=r?x:le;for(let r=t;r<t+n;r+=8)i=i+o(e,r)+a>>>0,a=a+o(e,r+4)+i>>>0;return[i,a]}function ue(e){if(e.byteLength<v)return null;let t=x(e,0);if(t!==ce&&t!==b)return null;let n=t===b,r=x(e,8);if(r<512||r>65536||r&r-1)return null;let i=x(e,16),a=x(e,20),[o,s]=S(e,0,24,n);if(o!==x(e,24)||s!==x(e,28))return null;let c=y+r,l=new Map,u=new Map,d=0,f=0,p=0;for(let t=v;t+c<=e.byteLength&&!(x(e,t+8)!==i||x(e,t+12)!==a||([o,s]=S(e,t,8,n,o,s),[o,s]=S(e,t+y,r,n,o,s),o!==x(e,t+16)||s!==x(e,t+20)));t+=c){let n=x(e,t),r=x(e,t+4);if(n===0)break;if(u.set(n,e.subarray(t+y,t+c)),p++,r>0){for(let[e,t]of u)l.set(e,t);u.clear(),d=r,f+=p,p=0}}return{pageSize:r,dbSizePages:d,pages:l,committedFrames:f}}function C(e,t){let n=ue(t);if(!n||n.committedFrames===0)return{bytes:e,appliedFrames:0};let{pageSize:r,dbSizePages:i,pages:a}=n,o=Math.max(i*r,e.byteLength-e.byteLength%r),s=new Uint8Array(o);s.set(e.subarray(0,Math.min(e.byteLength,o)));for(let[e,t]of a){let n=(e-1)*r;n+r<=o&&s.set(t,n)}return{bytes:i>0?s.subarray(0,i*r):s,appliedFrames:n.committedFrames}}var de=`planche-file-handles`,w=`handles`;function fe(){return new Promise((e,t)=>{if(typeof indexedDB>`u`){t(Error(`IndexedDB unavailable`));return}let n=indexedDB.open(de,1);n.onupgradeneeded=()=>n.result.createObjectStore(w),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}function T(e,t){return fe().then(n=>new Promise((r,i)=>{let a=t(n.transaction(w,e).objectStore(w));a.onsuccess=()=>r(a.result),a.onerror=()=>i(a.error)}))}var E=e=>`${e}:wal`;async function D(e,t){try{await T(`readwrite`,n=>n.put(t,e))}catch{}}async function O(e){try{return await T(`readonly`,t=>t.get(e))??null}catch{return null}}async function k(e){try{await T(`readwrite`,t=>t.delete(e))}catch{}}async function A(e,t){let n=e,r={mode:`readwrite`};try{if(n.queryPermission&&await n.queryPermission(r)===`granted`)return!0;if(t&&n.requestPermission)return await n.requestPermission(r)===`granted`}catch{}return!1}var j=e=>`dbcache-meta:${e}`,M=e=>`${e}.sqlite3`;async function pe(e){try{let t=await o.getItem(j(e));if(!t)return null;let n=JSON.parse(t),r=await a.get(M(e));return r?{bytes:new Uint8Array(r),meta:n}:null}catch{return null}}async function me(e,t,n){try{let r=t.slice().buffer;return await a.set(M(e),r)?(await o.setItem(j(e),JSON.stringify(n)),!0):!1}catch(e){return console.warn(`[db-cache] write failed:`,e),!1}}async function he(e,t){try{let n=await o.getItem(j(e));if(!n)return;await o.setItem(j(e),JSON.stringify({...JSON.parse(n),...t}))}catch{}}async function N(e){try{await a.remove(M(e)),await o.removeItem(j(e))}catch{}}var ge=`browser:`;function P(e){return typeof e==`string`&&e.startsWith(`browser:`)}var _e=750;function ve(e){let t=z.get(e);t?.profileId&&(t.flushTimer&&clearTimeout(t.flushTimer),t.flushTimer=setTimeout(()=>{t.flushTimer=null,F(e)},_e))}async function F(e){let t=z.get(e);if(t?.profileId)try{let n=await J(e);await me(t.profileId,n,I(t))}catch(e){console.warn(`[browser-sqlite] cache flush failed:`,e)}}function I(e){return{name:e.source.name,lastModified:e.fileMeta.lastModified,size:e.fileMeta.size,dirty:e.dirty,cachedAt:Date.now()}}var L=u(`browserSqliteVisibilityListener`,()=>({installed:!1}));typeof document<`u`&&!L.installed&&(L.installed=!0,document.addEventListener(`visibilitychange`,()=>{if(document.visibilityState===`hidden`)for(let[e,t]of z)t.flushTimer&&(clearTimeout(t.flushTimer),t.flushTimer=null,F(e))}));function R(e){return e.toLowerCase().endsWith(`-wal`)}var z=u(`browserSqliteDatabases`,()=>new Map),B=u(`browserSqliteModule`,()=>({promise:null}));async function V(){return B.promise||=r(()=>import(`./DD58tsa9.js`).then(e=>e.default()),[]),B.promise}function H(e){let t=z.get(e);if(!t)throw Error(`Browser connection not found: ${e}`);return t}function ye(e){if(!(e.byteLength>=100&&e[0]===83&&e[15]===0)||e[18]!==2&&e[19]!==2)return{bytes:e,wal:!1};let t=new Uint8Array(e);return t[18]=1,t[19]=1,{bytes:t,wal:!0}}var be=`SQLite format 3\0`;function xe(e){if(e.byteLength===0)return null;if(e.byteLength<100)return n.t(`services.sqliteFile.tooSmall`);if(String.fromCharCode(...e.subarray(0,16))!==be)return n.t(`services.sqliteFile.notSqlite`);let t=e[16]<<8|e[17],r=t===1?65536:t;return r<512||r&r-1?n.t(`services.sqliteFile.badPageSize`,{size:r}):null}async function Se(e){let t=xe(e);if(t)throw Error(t);let r=await V(),i=new r.oo1.DB;if(e.byteLength===0)return i;let a=r.wasm.allocFromTypedArray(e),o=r.capi,s=o.SQLITE_DESERIALIZE_FREEONCLOSE??1,c=o.SQLITE_DESERIALIZE_RESIZEABLE??2,l=r.capi.sqlite3_deserialize(i.pointer,`main`,a,e.byteLength,e.byteLength,s|c);i.checkRc(l);try{i.exec(`SELECT count(*) FROM sqlite_master`)}catch(e){throw i.close(),Error(n.t(`services.sqliteFile.unreadable`,{message:e instanceof Error?e.message:String(e)}))}return i}async function U(e){let t=window.showOpenFilePicker;if(t)try{let r=await t({multiple:e.multiple,types:e.sqliteOnly?[{description:n.t(`services.sqliteFile.pickerDescription`),accept:{"application/vnd.sqlite3":[`.sqlite`,`.sqlite3`,`.db`,`.db3`]}}]:void 0,excludeAcceptAllOption:!1});return Promise.all(r.map(async e=>({file:await e.getFile(),handle:e})))}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return[];throw e}return new Promise(t=>{let n=document.createElement(`input`);n.type=`file`,n.multiple=e.multiple,e.sqliteOnly&&(n.accept=`.sqlite,.sqlite3,.db,.db3,application/vnd.sqlite3`),n.onchange=()=>t(Array.from(n.files??[]).map(e=>({file:e}))),n.oncancel=()=>t([]),n.click()})}async function Ce(){let e=await U({multiple:!0,sqliteOnly:!1}),t=e.find(e=>!R(e.file.name));return t?{main:t,wal:e.find(e=>R(e.file.name)&&e.file.name.toLowerCase()===`${t.file.name.toLowerCase()}-wal`)??e.find(e=>R(e.file.name))}:null}async function we(){let[e]=await U({multiple:!1,sqliteOnly:!1});return e??null}async function W(e,t,n={}){let{bytes:r,wal:i}=ye(e),a=await Se(r),o=`${ge}${crypto.randomUUID()}`,s={...t,wal:i};return z.set(o,{db:a,source:s,rawBytes:e,profileId:n.profileId,fileMeta:n.fileMeta??{lastModified:0,size:e.byteLength},dirty:n.dirty??!1,flushTimer:null}),{connectionId:o,source:s}}async function G(e,t,n,r={}){let i=e?new Uint8Array(await e.arrayBuffer()):new Uint8Array,a=i,o=!1;n&&(a=C(i,new Uint8Array(await n.file.arrayBuffer())).bytes,o=!0);let s=await W(a,{name:e?.name??`:memory:`,handle:t,walApplied:o,walHandle:n?.handle},{profileId:r.profileId,fileMeta:{lastModified:Math.max(e?.lastModified??0,n?.file.lastModified??0),size:i.byteLength}});return z.get(s.connectionId).rawBytes=i,r.profileId&&F(s.connectionId),s}async function K(e,t,n,r){return await W(t,{name:n.name,handle:r,walApplied:!0},{profileId:e,fileMeta:{lastModified:n.lastModified,size:n.size},dirty:n.dirty})}function Te(e,t){let n=H(e);n.source={...n.source,handle:t}}function Ee(e){return z.get(e)?.dirty??!1}async function De(e,t){let n=H(e),r=C(n.rawBytes,new Uint8Array(await t.file.arrayBuffer())),i=await W(r.bytes,{...n.source,walApplied:!0,walHandle:t.handle},{profileId:n.profileId,fileMeta:n.fileMeta});return z.get(i.connectionId).rawBytes=n.rawBytes,Y(e),n.profileId&&F(i.connectionId),{...i,appliedFrames:r.appliedFrames}}function q(e){return z.get(e)?.source??null}function Oe(e){return e&&e.trim().toLowerCase().replace(/\(.*$/,``).trim()||null}function ke(e){return e==null?`null`:typeof e==`number`?Number.isInteger(e)?`integer`:`real`:typeof e==`bigint`?`bigint`:e instanceof Uint8Array?`blob`:`text`}function Ae(e){return typeof e==`bigint`?Number(e):e instanceof Uint8Array?{type:`Buffer`,data:Array.from(e)}:e}async function je(e,t){let{db:n}=H(e),r=await V(),i=performance.now(),a=H(e),o=Number(r.capi.sqlite3_total_changes(n.pointer)),s=n.prepare(t);try{if(s.columnCount===0){s.step();let c=Number(n.changes()),l=Number(r.capi.sqlite3_last_insert_rowid(n.pointer)),u=/^\s*(BEGIN|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(t);return(c>0||Number(r.capi.sqlite3_total_changes(n.pointer))!==o||!u)&&(a.dirty=!0,ve(e)),{success:!0,fields:[],records:[],affectedRows:c,insertId:l,isResultQuery:!1,execTime:Math.round(performance.now()-i)}}let c=[];for(;s.step();)c.push(s.get([]).map(Ae));let l=s.getColumnNames(),u=r.capi,d=s.pointer;return{success:!0,fields:l.map((e,t)=>{let n=Oe(u.sqlite3_column_decltype(d,t)),r=u.sqlite3_column_table_name(d,t)??``;return{name:e,orgName:u.sqlite3_column_origin_name(d,t)??e,type:n??ke(Me(c,t)),table:r,orgTable:r,db:u.sqlite3_column_database_name(d,t)??``,maxLength:0}}),records:c,affectedRows:0,insertId:0,isResultQuery:!0,execTime:Math.round(performance.now()-i)}}finally{s.finalize()}}function Me(e,t){for(let n of e){let e=n[t];if(e!=null)return e}return null}async function J(e){let{db:t}=H(e);return(await V()).capi.sqlite3_js_db_export(t.pointer)}function Ne(e){let t=z.get(e);if(!t?.source.handle)return null;let{source:r}=t;return r.wal&&!r.walApplied&&!r.walAcknowledged?n.t(`services.sqliteFile.walNotLoaded`):null}function Pe(e){let t=H(e);t.source={...t.source,walAcknowledged:!0}}async function Fe(e){let{source:t,fileMeta:r}=e;if(!t.handle)return;let i=await t.handle.getFile();if(r.lastModified&&(i.lastModified!==r.lastModified||i.size!==r.size))throw Error(n.t(`services.sqliteFile.changedOnDisk`,{name:t.name}));if(t.walHandle)try{let e=await t.walHandle.getFile();if(e.size>0&&!t.walApplied)throw Error(n.t(`services.sqliteFile.walHasChanges`,{name:t.name}));if(e.size>0&&t.walApplied&&e.lastModified>r.lastModified)throw Error(n.t(`services.sqliteFile.walChangedOnDisk`,{name:t.name}))}catch(e){if(e instanceof Error&&!(e instanceof DOMException))throw e}}async function Ie(e){let t=H(e),{source:r}=t,i=Ne(e);if(i)throw Error(i);r.handle&&await Fe(t);let a=await J(e);if(r.handle){if(!await A(r.handle,!0))throw Error(n.t(`services.sqliteFile.writeDenied`,{name:r.name}));let t=await r.handle.createWritable();await t.write(a),await t.close(),r.walHandle&&await(await r.walHandle.createWritable()).close();let i=H(e);i.dirty=!1;try{let e=await r.handle.getFile();i.fileMeta={lastModified:e.lastModified,size:e.size}}catch{i.fileMeta={lastModified:Date.now(),size:a.byteLength}}return i.profileId&&he(i.profileId,{...I(i)}),`in-place`}let o=new Blob([a],{type:`application/vnd.sqlite3`}),s=URL.createObjectURL(o),c=document.createElement(`a`);return c.href=s,c.download=r.name===`:memory:`?`database.sqlite`:r.name,c.click(),URL.revokeObjectURL(s),`download`}function Y(e){let t=z.get(e);t&&(t.flushTimer&&clearTimeout(t.flushTimer),t.db.close(),z.delete(e))}function X(e){return z.get(e)?.profileId}async function Le(e){await k(e),await k(E(e)),await N(e)}async function Re(e,t){let n=await O(e);if(!n)return null;if(!await A(n,t))return`denied`;try{return{handle:n,file:await n.getFile()}}catch(t){if(t instanceof DOMException&&(t.name===`NotFoundError`||t.name===`NotAllowedError`))return await k(e),null;throw t}}async function ze(e,t){let n=await O(E(e));if(!(!n||!await A(n,t)))try{return{file:await n.getFile(),handle:n}}catch{await k(E(e));return}}async function Be(e,t){let n={remembered:!0,fromCache:!1,restoredUnsaved:!1,fileDetached:!1,diskChanged:!1},r=await pe(e),i=await Re(e,t.interactive),a=i&&i!==`denied`?i.handle:void 0,o=i&&i!==`denied`?i.file:null;if(r?.meta.dirty){let{connectionId:t,source:i}=await K(e,r.bytes,r.meta,a),s=o?o.lastModified!==r.meta.lastModified||o.size!==r.meta.size:!1;return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,restoredUnsaved:!0,fileDetached:!a,diskChanged:s}}if(o&&a){let{connectionId:r,source:i}=await G(o,a,await ze(e,t.interactive),{profileId:e});return{...n,connectionId:r,fileName:i.name,wal:i.wal,walApplied:i.walApplied}}if(r){let{connectionId:t,source:i}=await K(e,r.bytes,r.meta);return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,fileDetached:!0}}if(!t.interactive)return null;let s=await Ce();if(!s)return null;let{connectionId:c,source:l}=await G(s.main.file,s.main.handle,s.wal,{profileId:e});return s.main.handle?await D(e,s.main.handle):await k(e),s.wal?.handle?await D(E(e),s.wal.handle):await k(E(e)),{...n,connectionId:c,fileName:l.name,wal:l.wal,walApplied:l.walApplied,remembered:!1}}var Ve=`SQLite format 3\0`;async function He(e){if(e.size===0)return!0;if(e.size<100)return!1;let t=new Uint8Array(await e.slice(0,16).arrayBuffer());return String.fromCharCode(...t)===Ve}async function Ue(e,t){try{let n=await O(e);return n?await n.isSameEntry(t):!1}catch{return!1}}async function We(t){let r=t.find(e=>!R(e.file.name));if(!r)return;if(!await He(r.file))throw Error(n.t(`app.dropNotSqlite`,{name:r.file.name}));let i=t.find(e=>R(e.file.name)&&e.file.name.toLowerCase()===`${r.file.name.toLowerCase()}-wal`),a=l.getState(),o;for(let e of a.savedConnections)if(!(e.dbms!==`sqlite`||(e.transport??`browser`)!==`browser`||e.sample||e.file!==r.file.name)&&r.handle&&await Ue(e.id,r.handle)){o=e;break}let s=o??{id:crypto.randomUUID(),hostName:r.file.name.replace(/\.(db|sqlite|sqlite3|db3)$/i,``),host:``,user:``,pass:``,charset:`utf8`,port:0,dbms:`sqlite`,transport:`browser`,file:r.file.name,autoConnection:!1,savePassword:!0,authToken:``};e(`sqlite_file_drop`,{reused:!!o,wal:!!i,handle:!!r.handle});let u=a.activeConnections.some(e=>e.id===s.id),d=a.activeConnections.find(e=>e.id===s.id)?.serverConnectionId,{connectionId:f}=await G(r.file,r.handle,i,{profileId:s.id});d&&d!==f&&P(d)&&Y(d),r.handle?await D(s.id,r.handle):await k(s.id),i?.handle?await D(E(s.id),i.handle):await k(E(s.id)),o||a.addSavedConnection(s),a.openConnection({...s,serverConnectionId:f}),a.setPendingReopen(s.id,!1),a.setFileDetached(s.id,!1),_.getState().removeTree(s.id),c(s.id),u||oe.getState().addQueryTab(s.id,{id:`tab-${Date.now()}`,title:n.t(`connection.dialog.firstQueryTab`),query:``,database:``,isExecuting:!1,results:[],error:null,executionTime:null}),ae.getState().setWelcomeVisible(!1)}async function Ge(e,t){let n=await Re(e,!0);return!n||n===`denied`?!1:(Te(t,n.handle),!0)}async function Ke(e){let t=X(e),n=q(e);return n&&!n.handle&&t&&await Ge(t,e),Ie(e)}function qe(e){let t=q(e);return t?t.name===`:memory:`?n.t(`services.save.inMemory`):typeof window<`u`&&!(`showOpenFilePicker`in window)?n.t(`services.save.noFileSystemAccess`):!t.handle&&!X(e)?n.t(`services.save.noWritableHandle`):null:n.t(`services.save.notBrowserSqlite`)}async function Je(e,t){let n=await we();if(!n)return null;let r=await De(t,n);return n.handle&&await D(E(e),n.handle),{connectionId:r.connectionId,appliedFrames:r.appliedFrames}}function Ye(e){if(!P(e))return null;let t=q(e);return t?{wal:t.wal,walApplied:t.walApplied,walAcknowledged:t.walAcknowledged??!1}:null}function Xe(e){return e.dbms===`sqlite`&&e.transport===`browser`?`browser`:`tunnel`}async function Ze(e,t){return m(e,t)}async function Qe(e,t){return f(e,t)}async function Z(e,t,n){let r=e=>({success:!1,fields:[],records:[],affectedRows:0,insertId:0,isResultQuery:!1,execTime:0,message:e instanceof Error?e.message:String(e)});if(P(e))try{return await je(e,t)}catch(e){return r(e)}let i=Q.get(e)??e;try{return await p(i,t,n)}catch(e){if(!(e instanceof re)||e.status!==404)return r(e);let a=await $e(i);if(!a)return r(e);try{return await p(a,t,n)}catch(e){return r(e)}}}var Q=new Map,$=new Map;function $e(e){let t=$.get(e);if(t)return t;let r=(async()=>{let t=l.getState(),r=t.activeConnections.find(t=>t.serverConnectionId===e||Q.get(t.serverConnectionId??``)===e);if(!r||Xe(r)===`browser`||ne())return null;if(r.serverConnectionId&&r.serverConnectionId!==e&&!Q.has(r.serverConnectionId))return Q.set(e,r.serverConnectionId),r.serverConnectionId;let i=t.resolveCredentials(r),a=i.ssh?.enabled&&i.ssh.auth===`password`&&!i.ssh.password;if(!i.pass&&r.pass===``&&r.dbms!==`sqlite`||a)return null;try{let t=await m(d(i),i.authToken||void 0);if(!t.success||!t.connectionId)return null;for(let[n,r]of Q)r===e&&Q.set(n,t.connectionId);return Q.set(e,t.connectionId),l.getState().updateServerConnectionId(r.id,t.connectionId),l.getState().setTransactionOpen(r.id,!1),ae.getState().setFooterMessage(n.t(`services.agent.reconnected`,{name:r.hostName||r.host||r.databaseId||r.file||r.id})),t.connectionId}catch{return null}})();return $.set(e,r),r.finally(()=>$.delete(e)),r}async function et(e){if(P(e)){let t=X(e);Y(e),t&&await N(t);return}return te(e)}function tt(e){return e===`cancelled`?null:e===`abandoned`?n.t(`result.running.abandoned`):e===`agent-outdated`?n.t(`result.running.agentOutdated`):e===`unsupported`?n.t(`result.running.cannotCancel`):n.t(`result.running.cancelFailed`)}async function nt(e){if(P(e))return`unsupported`;let t=l.getState().activeConnections.find(t=>t.id===e)?.serverConnectionId;return t?ee(t):`failed`}async function rt(e,t,n){if(P(e)){let r=[];for(let i of t){let t=await Z(e,i,n);r.push(t.success?{...t,success:!0}:{success:!1,message:t.message??`Query failed`})}return r}return ie(e,t,n)}function it(e){return async(t,r)=>{let i=await Z(e,t,r);if(!i.success)throw Error(i.message??n.t(`services.query.failed`));return i}}export{_ as C,G as S,Qe as _,it as a,P as b,rt as c,Ye as d,Xe as f,Ke as g,Ge as h,Ze as i,Z as l,We as m,tt as n,qe as o,Je as p,Be as r,et as s,nt as t,Le as u,Pe as v,Ee as x,Ne as y};
1
+ import{o as e,t}from"./CYz610vE.js";import{a as n,i as r}from"./BDtsGuIR.js";import{i,n as a,r as o,t as s}from"./eFSiW0Lh.js";import{f as c,t as l}from"./S7HbowYz.js";import{t as u}from"./Bit0Kfog.js";import{D as d,O as f,a as p,c as ee,d as te,f as m,r as ne,t as re,u as ie}from"./BjwrN_ch.js";import{n as ae}from"./D8_hwGjG.js";import{n as oe}from"./C1gqjEN3.js";function h(e,t,n){return e.map(e=>e.id===t?n(e):e.children.length>0?{...e,children:h(e.children,t,n)}:e)}function se(e,t){for(let n of e){if(n.id===t)return n;let e=se(n.children,t);if(e)return e}return null}function g(e,t,n){let r=new Set(e??[]);if(n)r.add(t);else for(let e of r)(e===t||e.startsWith(`${t}/`))&&r.delete(e);return[...r]}var _=t()(i(e=>({trees:{},selectedNodeId:{},expandedIds:{},setTree:(t,n)=>e(e=>({trees:{...e.trees,[t]:n}})),setChildren:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:g(e.expandedIds[t],n,!0)},trees:{...e.trees,[t]:h(i,n,e=>({...e,children:r,isLoading:!1,isExpanded:!0,metadata:{...e.metadata,count:r.length}}))}}:e}),setNodeMetadata:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:h(i,n,e=>({...e,metadata:{...e.metadata,...r}}))}}:e}),toggleExpanded:(t,n)=>e(e=>{let r=e.trees[t];if(!r)return e;let i=!se(r,n)?.isExpanded;return{expandedIds:{...e.expandedIds,[t]:g(e.expandedIds[t],n,i)},trees:{...e.trees,[t]:h(r,n,e=>({...e,isExpanded:i}))}}}),setExpanded:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:g(e.expandedIds[t],n,r)},trees:{...e.trees,[t]:h(i,n,e=>({...e,isExpanded:r}))}}:e}),setSelected:(t,n)=>e(e=>({selectedNodeId:{...e.selectedNodeId,[t]:n}})),setLoading:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:h(i,n,e=>({...e,isLoading:r}))}}:e}),removeTree:t=>e(e=>{let n={...e.trees},r={...e.selectedNodeId};return delete n[t],delete r[t],{trees:n,selectedNodeId:r}})}),{name:`planche-schema`,storage:s(),partialize:e=>({selectedNodeId:e.selectedNodeId,expandedIds:e.expandedIds})})),v=32,y=24,ce=931071618,b=931071619,x=(e,t)=>(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0,le=(e,t)=>(e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t])>>>0;function S(e,t,n,r,i=0,a=0){let o=r?x:le;for(let r=t;r<t+n;r+=8)i=i+o(e,r)+a>>>0,a=a+o(e,r+4)+i>>>0;return[i,a]}function ue(e){if(e.byteLength<v)return null;let t=x(e,0);if(t!==ce&&t!==b)return null;let n=t===b,r=x(e,8);if(r<512||r>65536||r&r-1)return null;let i=x(e,16),a=x(e,20),[o,s]=S(e,0,24,n);if(o!==x(e,24)||s!==x(e,28))return null;let c=y+r,l=new Map,u=new Map,d=0,f=0,p=0;for(let t=v;t+c<=e.byteLength&&!(x(e,t+8)!==i||x(e,t+12)!==a||([o,s]=S(e,t,8,n,o,s),[o,s]=S(e,t+y,r,n,o,s),o!==x(e,t+16)||s!==x(e,t+20)));t+=c){let n=x(e,t),r=x(e,t+4);if(n===0)break;if(u.set(n,e.subarray(t+y,t+c)),p++,r>0){for(let[e,t]of u)l.set(e,t);u.clear(),d=r,f+=p,p=0}}return{pageSize:r,dbSizePages:d,pages:l,committedFrames:f}}function C(e,t){let n=ue(t);if(!n||n.committedFrames===0)return{bytes:e,appliedFrames:0};let{pageSize:r,dbSizePages:i,pages:a}=n,o=Math.max(i*r,e.byteLength-e.byteLength%r),s=new Uint8Array(o);s.set(e.subarray(0,Math.min(e.byteLength,o)));for(let[e,t]of a){let n=(e-1)*r;n+r<=o&&s.set(t,n)}return{bytes:i>0?s.subarray(0,i*r):s,appliedFrames:n.committedFrames}}var de=`planche-file-handles`,w=`handles`;function fe(){return new Promise((e,t)=>{if(typeof indexedDB>`u`){t(Error(`IndexedDB unavailable`));return}let n=indexedDB.open(de,1);n.onupgradeneeded=()=>n.result.createObjectStore(w),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}function T(e,t){return fe().then(n=>new Promise((r,i)=>{let a=t(n.transaction(w,e).objectStore(w));a.onsuccess=()=>r(a.result),a.onerror=()=>i(a.error)}))}var E=e=>`${e}:wal`;async function D(e,t){try{await T(`readwrite`,n=>n.put(t,e))}catch{}}async function O(e){try{return await T(`readonly`,t=>t.get(e))??null}catch{return null}}async function k(e){try{await T(`readwrite`,t=>t.delete(e))}catch{}}async function A(e,t){let n=e,r={mode:`readwrite`};try{if(n.queryPermission&&await n.queryPermission(r)===`granted`)return!0;if(t&&n.requestPermission)return await n.requestPermission(r)===`granted`}catch{}return!1}var j=e=>`dbcache-meta:${e}`,M=e=>`${e}.sqlite3`;async function pe(e){try{let t=await o.getItem(j(e));if(!t)return null;let n=JSON.parse(t),r=await a.get(M(e));return r?{bytes:new Uint8Array(r),meta:n}:null}catch{return null}}async function me(e,t,n){try{let r=t.slice().buffer;return await a.set(M(e),r)?(await o.setItem(j(e),JSON.stringify(n)),!0):!1}catch(e){return console.warn(`[db-cache] write failed:`,e),!1}}async function he(e,t){try{let n=await o.getItem(j(e));if(!n)return;await o.setItem(j(e),JSON.stringify({...JSON.parse(n),...t}))}catch{}}async function N(e){try{await a.remove(M(e)),await o.removeItem(j(e))}catch{}}var ge=`browser:`;function P(e){return typeof e==`string`&&e.startsWith(`browser:`)}var _e=750;function ve(e){let t=z.get(e);t?.profileId&&(t.flushTimer&&clearTimeout(t.flushTimer),t.flushTimer=setTimeout(()=>{t.flushTimer=null,F(e)},_e))}async function F(e){let t=z.get(e);if(t?.profileId)try{let n=await J(e);await me(t.profileId,n,I(t))}catch(e){console.warn(`[browser-sqlite] cache flush failed:`,e)}}function I(e){return{name:e.source.name,lastModified:e.fileMeta.lastModified,size:e.fileMeta.size,dirty:e.dirty,cachedAt:Date.now()}}var L=u(`browserSqliteVisibilityListener`,()=>({installed:!1}));typeof document<`u`&&!L.installed&&(L.installed=!0,document.addEventListener(`visibilitychange`,()=>{if(document.visibilityState===`hidden`)for(let[e,t]of z)t.flushTimer&&(clearTimeout(t.flushTimer),t.flushTimer=null,F(e))}));function R(e){return e.toLowerCase().endsWith(`-wal`)}var z=u(`browserSqliteDatabases`,()=>new Map),B=u(`browserSqliteModule`,()=>({promise:null}));async function V(){return B.promise||=r(()=>import(`./DD58tsa9.js`).then(e=>e.default()),[]),B.promise}function H(e){let t=z.get(e);if(!t)throw Error(`Browser connection not found: ${e}`);return t}function ye(e){if(!(e.byteLength>=100&&e[0]===83&&e[15]===0)||e[18]!==2&&e[19]!==2)return{bytes:e,wal:!1};let t=new Uint8Array(e);return t[18]=1,t[19]=1,{bytes:t,wal:!0}}var be=`SQLite format 3\0`;function xe(e){if(e.byteLength===0)return null;if(e.byteLength<100)return n.t(`services.sqliteFile.tooSmall`);if(String.fromCharCode(...e.subarray(0,16))!==be)return n.t(`services.sqliteFile.notSqlite`);let t=e[16]<<8|e[17],r=t===1?65536:t;return r<512||r&r-1?n.t(`services.sqliteFile.badPageSize`,{size:r}):null}async function Se(e){let t=xe(e);if(t)throw Error(t);let r=await V(),i=new r.oo1.DB;if(e.byteLength===0)return i;let a=r.wasm.allocFromTypedArray(e),o=r.capi,s=o.SQLITE_DESERIALIZE_FREEONCLOSE??1,c=o.SQLITE_DESERIALIZE_RESIZEABLE??2,l=r.capi.sqlite3_deserialize(i.pointer,`main`,a,e.byteLength,e.byteLength,s|c);i.checkRc(l);try{i.exec(`SELECT count(*) FROM sqlite_master`)}catch(e){throw i.close(),Error(n.t(`services.sqliteFile.unreadable`,{message:e instanceof Error?e.message:String(e)}))}return i}async function U(e){let t=window.showOpenFilePicker;if(t)try{let r=await t({multiple:e.multiple,types:e.sqliteOnly?[{description:n.t(`services.sqliteFile.pickerDescription`),accept:{"application/vnd.sqlite3":[`.sqlite`,`.sqlite3`,`.db`,`.db3`]}}]:void 0,excludeAcceptAllOption:!1});return Promise.all(r.map(async e=>({file:await e.getFile(),handle:e})))}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return[];throw e}return new Promise(t=>{let n=document.createElement(`input`);n.type=`file`,n.multiple=e.multiple,e.sqliteOnly&&(n.accept=`.sqlite,.sqlite3,.db,.db3,application/vnd.sqlite3`),n.onchange=()=>t(Array.from(n.files??[]).map(e=>({file:e}))),n.oncancel=()=>t([]),n.click()})}async function Ce(){let e=await U({multiple:!0,sqliteOnly:!1}),t=e.find(e=>!R(e.file.name));return t?{main:t,wal:e.find(e=>R(e.file.name)&&e.file.name.toLowerCase()===`${t.file.name.toLowerCase()}-wal`)??e.find(e=>R(e.file.name))}:null}async function we(){let[e]=await U({multiple:!1,sqliteOnly:!1});return e??null}async function W(e,t,n={}){let{bytes:r,wal:i}=ye(e),a=await Se(r),o=`${ge}${crypto.randomUUID()}`,s={...t,wal:i};return z.set(o,{db:a,source:s,rawBytes:e,profileId:n.profileId,fileMeta:n.fileMeta??{lastModified:0,size:e.byteLength},dirty:n.dirty??!1,flushTimer:null}),{connectionId:o,source:s}}async function G(e,t,n,r={}){let i=e?new Uint8Array(await e.arrayBuffer()):new Uint8Array,a=i,o=!1;n&&(a=C(i,new Uint8Array(await n.file.arrayBuffer())).bytes,o=!0);let s=await W(a,{name:e?.name??`:memory:`,handle:t,walApplied:o,walHandle:n?.handle},{profileId:r.profileId,fileMeta:{lastModified:Math.max(e?.lastModified??0,n?.file.lastModified??0),size:i.byteLength}});return z.get(s.connectionId).rawBytes=i,r.profileId&&F(s.connectionId),s}async function K(e,t,n,r){return await W(t,{name:n.name,handle:r,walApplied:!0},{profileId:e,fileMeta:{lastModified:n.lastModified,size:n.size},dirty:n.dirty})}function Te(e,t){let n=H(e);n.source={...n.source,handle:t}}function Ee(e){return z.get(e)?.dirty??!1}async function De(e,t){let n=H(e),r=C(n.rawBytes,new Uint8Array(await t.file.arrayBuffer())),i=await W(r.bytes,{...n.source,walApplied:!0,walHandle:t.handle},{profileId:n.profileId,fileMeta:n.fileMeta});return z.get(i.connectionId).rawBytes=n.rawBytes,Y(e),n.profileId&&F(i.connectionId),{...i,appliedFrames:r.appliedFrames}}function q(e){return z.get(e)?.source??null}function Oe(e){return e&&e.trim().toLowerCase().replace(/\(.*$/,``).trim()||null}function ke(e){return e==null?`null`:typeof e==`number`?Number.isInteger(e)?`integer`:`real`:typeof e==`bigint`?`bigint`:e instanceof Uint8Array?`blob`:`text`}function Ae(e){return typeof e==`bigint`?Number(e):e instanceof Uint8Array?{type:`Buffer`,data:Array.from(e)}:e}async function je(e,t){let{db:n}=H(e),r=await V(),i=performance.now(),a=H(e),o=Number(r.capi.sqlite3_total_changes(n.pointer)),s=n.prepare(t);try{if(s.columnCount===0){s.step();let c=Number(n.changes()),l=Number(r.capi.sqlite3_last_insert_rowid(n.pointer)),u=/^\s*(BEGIN|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(t);return(c>0||Number(r.capi.sqlite3_total_changes(n.pointer))!==o||!u)&&(a.dirty=!0,ve(e)),{success:!0,fields:[],records:[],affectedRows:c,insertId:l,isResultQuery:!1,execTime:Math.round(performance.now()-i)}}let c=[];for(;s.step();)c.push(s.get([]).map(Ae));let l=s.getColumnNames(),u=r.capi,d=s.pointer;return{success:!0,fields:l.map((e,t)=>{let n=Oe(u.sqlite3_column_decltype(d,t)),r=u.sqlite3_column_table_name(d,t)??``;return{name:e,orgName:u.sqlite3_column_origin_name(d,t)??e,type:n??ke(Me(c,t)),table:r,orgTable:r,db:u.sqlite3_column_database_name(d,t)??``,maxLength:0}}),records:c,affectedRows:0,insertId:0,isResultQuery:!0,execTime:Math.round(performance.now()-i)}}finally{s.finalize()}}function Me(e,t){for(let n of e){let e=n[t];if(e!=null)return e}return null}async function J(e){let{db:t}=H(e);return(await V()).capi.sqlite3_js_db_export(t.pointer)}function Ne(e){let t=z.get(e);if(!t?.source.handle)return null;let{source:r}=t;return r.wal&&!r.walApplied&&!r.walAcknowledged?n.t(`services.sqliteFile.walNotLoaded`):null}function Pe(e){let t=H(e);t.source={...t.source,walAcknowledged:!0}}async function Fe(e){let{source:t,fileMeta:r}=e;if(!t.handle)return;let i=await t.handle.getFile();if(r.lastModified&&(i.lastModified!==r.lastModified||i.size!==r.size))throw Error(n.t(`services.sqliteFile.changedOnDisk`,{name:t.name}));if(t.walHandle)try{let e=await t.walHandle.getFile();if(e.size>0&&!t.walApplied)throw Error(n.t(`services.sqliteFile.walHasChanges`,{name:t.name}));if(e.size>0&&t.walApplied&&e.lastModified>r.lastModified)throw Error(n.t(`services.sqliteFile.walChangedOnDisk`,{name:t.name}))}catch(e){if(e instanceof Error&&!(e instanceof DOMException))throw e}}async function Ie(e){let t=H(e),{source:r}=t,i=Ne(e);if(i)throw Error(i);r.handle&&await Fe(t);let a=await J(e);if(r.handle){if(!await A(r.handle,!0))throw Error(n.t(`services.sqliteFile.writeDenied`,{name:r.name}));let t=await r.handle.createWritable();await t.write(a),await t.close(),r.walHandle&&await(await r.walHandle.createWritable()).close();let i=H(e);i.dirty=!1;try{let e=await r.handle.getFile();i.fileMeta={lastModified:e.lastModified,size:e.size}}catch{i.fileMeta={lastModified:Date.now(),size:a.byteLength}}return i.profileId&&he(i.profileId,{...I(i)}),`in-place`}let o=new Blob([a],{type:`application/vnd.sqlite3`}),s=URL.createObjectURL(o),c=document.createElement(`a`);return c.href=s,c.download=r.name===`:memory:`?`database.sqlite`:r.name,c.click(),URL.revokeObjectURL(s),`download`}function Y(e){let t=z.get(e);t&&(t.flushTimer&&clearTimeout(t.flushTimer),t.db.close(),z.delete(e))}function X(e){return z.get(e)?.profileId}async function Le(e){await k(e),await k(E(e)),await N(e)}async function Re(e,t){let n=await O(e);if(!n)return null;if(!await A(n,t))return`denied`;try{return{handle:n,file:await n.getFile()}}catch(t){if(t instanceof DOMException&&(t.name===`NotFoundError`||t.name===`NotAllowedError`))return await k(e),null;throw t}}async function ze(e,t){let n=await O(E(e));if(!(!n||!await A(n,t)))try{return{file:await n.getFile(),handle:n}}catch{await k(E(e));return}}async function Be(e,t){let n={remembered:!0,fromCache:!1,restoredUnsaved:!1,fileDetached:!1,diskChanged:!1},r=await pe(e),i=await Re(e,t.interactive),a=i&&i!==`denied`?i.handle:void 0,o=i&&i!==`denied`?i.file:null;if(r?.meta.dirty){let{connectionId:t,source:i}=await K(e,r.bytes,r.meta,a),s=o?o.lastModified!==r.meta.lastModified||o.size!==r.meta.size:!1;return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,restoredUnsaved:!0,fileDetached:!a,diskChanged:s}}if(o&&a){let{connectionId:r,source:i}=await G(o,a,await ze(e,t.interactive),{profileId:e});return{...n,connectionId:r,fileName:i.name,wal:i.wal,walApplied:i.walApplied}}if(r){let{connectionId:t,source:i}=await K(e,r.bytes,r.meta);return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,fileDetached:!0}}if(!t.interactive)return null;let s=await Ce();if(!s)return null;let{connectionId:c,source:l}=await G(s.main.file,s.main.handle,s.wal,{profileId:e});return s.main.handle?await D(e,s.main.handle):await k(e),s.wal?.handle?await D(E(e),s.wal.handle):await k(E(e)),{...n,connectionId:c,fileName:l.name,wal:l.wal,walApplied:l.walApplied,remembered:!1}}var Ve=`SQLite format 3\0`;async function He(e){if(e.size===0)return!0;if(e.size<100)return!1;let t=new Uint8Array(await e.slice(0,16).arrayBuffer());return String.fromCharCode(...t)===Ve}async function Ue(e,t){try{let n=await O(e);return n?await n.isSameEntry(t):!1}catch{return!1}}async function We(t){let r=t.find(e=>!R(e.file.name));if(!r)return;if(!await He(r.file))throw Error(n.t(`app.dropNotSqlite`,{name:r.file.name}));let i=t.find(e=>R(e.file.name)&&e.file.name.toLowerCase()===`${r.file.name.toLowerCase()}-wal`),a=l.getState(),o;for(let e of a.savedConnections)if(!(e.dbms!==`sqlite`||(e.transport??`browser`)!==`browser`||e.sample||e.file!==r.file.name)&&r.handle&&await Ue(e.id,r.handle)){o=e;break}let s=o??{id:crypto.randomUUID(),hostName:r.file.name.replace(/\.(db|sqlite|sqlite3|db3)$/i,``),host:``,user:``,pass:``,charset:`utf8`,port:0,dbms:`sqlite`,transport:`browser`,file:r.file.name,autoConnection:!1,savePassword:!0,authToken:``};e(`sqlite_file_drop`,{reused:!!o,wal:!!i,handle:!!r.handle});let u=a.activeConnections.some(e=>e.id===s.id),d=a.activeConnections.find(e=>e.id===s.id)?.serverConnectionId,{connectionId:f}=await G(r.file,r.handle,i,{profileId:s.id});d&&d!==f&&P(d)&&Y(d),r.handle?await D(s.id,r.handle):await k(s.id),i?.handle?await D(E(s.id),i.handle):await k(E(s.id)),o||a.addSavedConnection(s),a.openConnection({...s,serverConnectionId:f}),a.setPendingReopen(s.id,!1),a.setFileDetached(s.id,!1),_.getState().removeTree(s.id),c(s.id),u||oe.getState().addQueryTab(s.id,{id:`tab-${Date.now()}`,title:n.t(`connection.dialog.firstQueryTab`),query:``,database:``,isExecuting:!1,results:[],error:null,executionTime:null}),ae.getState().setWelcomeVisible(!1)}async function Ge(e,t){let n=await Re(e,!0);return!n||n===`denied`?!1:(Te(t,n.handle),!0)}async function Ke(e){let t=X(e),n=q(e);return n&&!n.handle&&t&&await Ge(t,e),Ie(e)}function qe(e){let t=q(e);return t?t.name===`:memory:`?n.t(`services.save.inMemory`):typeof window<`u`&&!(`showOpenFilePicker`in window)?n.t(`services.save.noFileSystemAccess`):!t.handle&&!X(e)?n.t(`services.save.noWritableHandle`):null:n.t(`services.save.notBrowserSqlite`)}async function Je(e,t){let n=await we();if(!n)return null;let r=await De(t,n);return n.handle&&await D(E(e),n.handle),{connectionId:r.connectionId,appliedFrames:r.appliedFrames}}function Ye(e){if(!P(e))return null;let t=q(e);return t?{wal:t.wal,walApplied:t.walApplied,walAcknowledged:t.walAcknowledged??!1}:null}function Xe(e){return e.dbms===`sqlite`&&e.transport===`browser`?`browser`:`tunnel`}async function Ze(e,t){return ee(e,t)}async function Qe(e,t){return d(e,t)}async function Z(e,t,n){let r=e=>({success:!1,fields:[],records:[],affectedRows:0,insertId:0,isResultQuery:!1,execTime:0,message:e instanceof Error?e.message:String(e)});if(P(e))try{return await je(e,t)}catch(e){return r(e)}let i=Q.get(e)??e;try{return await m(i,t,n)}catch(e){if(!(e instanceof re)||e.status!==404)return r(e);let a=await $e(i);if(!a)return r(e);try{return await m(a,t,n)}catch(e){return r(e)}}}var Q=new Map,$=new Map;function $e(e){let t=$.get(e);if(t)return t;let r=(async()=>{let t=l.getState(),r=t.activeConnections.find(t=>t.serverConnectionId===e||Q.get(t.serverConnectionId??``)===e);if(!r||Xe(r)===`browser`||ne())return null;if(r.serverConnectionId&&r.serverConnectionId!==e&&!Q.has(r.serverConnectionId))return Q.set(e,r.serverConnectionId),r.serverConnectionId;let i=t.resolveCredentials(r),a=i.ssh?.enabled&&i.ssh.auth===`password`&&!i.ssh.password;if(!i.pass&&r.pass===``&&r.dbms!==`sqlite`||a)return null;try{let t=await ee(f(i),i.authToken||void 0);if(!t.success||!t.connectionId)return null;for(let[n,r]of Q)r===e&&Q.set(n,t.connectionId);return Q.set(e,t.connectionId),l.getState().updateServerConnectionId(r.id,t.connectionId),l.getState().setTransactionOpen(r.id,!1),ae.getState().setFooterMessage(n.t(`services.agent.reconnected`,{name:r.hostName||r.host||r.databaseId||r.file||r.id})),t.connectionId}catch{return null}})();return $.set(e,r),r.finally(()=>$.delete(e)),r}async function et(e){if(P(e)){let t=X(e);Y(e),t&&await N(t);return}return ie(e)}function tt(e){return e===`cancelled`?null:e===`abandoned`?n.t(`result.running.abandoned`):e===`agent-outdated`?n.t(`result.running.agentOutdated`):e===`unsupported`?n.t(`result.running.cannotCancel`):n.t(`result.running.cancelFailed`)}async function nt(e){if(P(e))return`unsupported`;let t=l.getState().activeConnections.find(t=>t.id===e)?.serverConnectionId;return t?p(t):`failed`}async function rt(e,t,n){if(P(e)){let r=[];for(let i of t){let t=await Z(e,i,n);r.push(t.success?{...t,success:!0}:{success:!1,message:t.message??`Query failed`})}return r}return te(e,t,n)}function it(e){return async(t,r)=>{let i=await Z(e,t,r);if(!i.success)throw Error(i.message??n.t(`services.query.failed`));return i}}export{_ as C,G as S,Qe as _,it as a,P as b,rt as c,Ye as d,Xe as f,Ke as g,Ge as h,Ze as i,Z as l,We as m,tt as n,qe as o,Je as p,Be as r,et as s,nt as t,Le as u,Pe as v,Ee as x,Ne as y};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/B8zpsP_u.js","assets/hePW80VL.js","assets/CYz610vE.js","assets/CiL8zoYm.js","assets/Cu_sGzNJ.js","assets/BniymiMs.js","assets/BGuDcBB_.js","assets/DzRyVlxz.js","assets/D8dVzi6I.js","assets/eFSiW0Lh.js","assets/Nro86Y63.js","assets/S7HbowYz.js","assets/DU-Eln5x.js","assets/Bgu3teFB.js","assets/Bit0Kfog.js","assets/D8_hwGjG.js","assets/C1gqjEN3.js","assets/BHe42P9W.js","assets/BRZhVXRC.js","assets/DAFA-E1-.js","assets/B9dhM8vw.js","assets/Q6DQerac.js","assets/B9DHeSQH.js","assets/Bs5VSn0X.js","assets/CqTgU2vp.css"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./hePW80VL.js";import{o as t,p as n}from"./CYz610vE.js";import{a as r,i}from"./BniymiMs.js";import{n as a,r as o}from"./Nro86Y63.js";import{L as s,R as c,g as l,h as u,m as d,p as f,s as p,t as m}from"./S7HbowYz.js";import{n as h}from"./DU-Eln5x.js";import{t as g}from"./Bit0Kfog.js";import{n as _}from"./D8_hwGjG.js";import{n as v}from"./C1gqjEN3.js";import{C as y,a as b,l as x}from"./BHe42P9W.js";import{i as ee,n as S,r as te}from"./BRZhVXRC.js";import{i as ne}from"./DAFA-E1-.js";import{n as re,t as ie}from"./B9dhM8vw.js";import{c as ae,d as C,f as w,l as oe,p as se,t as T}from"./Q6DQerac.js";function E(e){return m.getState().activeConnections.find(t=>t.id===e)?.database||ie(y.getState().trees[e]??[])}function ce(e,t,n,r){return S(e).tree.objectPath(t,n,r,E(e))}function D(e,t){return S(e).tree.namespacePath(t,E(e))}function O(e,t){for(let n of e){if(n.id===t)return n;let e=O(n.children,t);if(e)return e}return null}async function le(e,t,n){let r=y.getState;for(let i=0;i<t.length;i++){let a=r().trees[e];if(!a)return!1;let o=O(a,t[i]);if(!o)return!1;if(i===t.length-1)return r().setSelected(e,o.id),!0;o.children.length===0&&!o.isLeaf?await n(e,o):o.isExpanded||r().setExpanded(e,o.id,!0)}return!1}function k(e,t){for(let n of e){if(n.id===t)return n;let e=k(n.children,t);if(e)return e}return null}function A(e,t){let n=y.getState(),r=n.trees[e];if(!r||!t)return;let i=D(e,t),a=null;for(let t of i){let i=k(r,t);if(!i||(a=i,i.isLeaf))break;!i.isExpanded&&i.children.length>0&&n.setExpanded(e,i.id,!0)}!a||a.id!==i[i.length-1]||(n.setSelected(e,a.id),!a.isExpanded&&a.children.length>0&&n.setExpanded(e,a.id,!0))}var j=new Set;function M(e,n){let i=n.map(e=>e.metadata?.topology).find(e=>typeof e==`string`);if(!i||j.has(e))return;j.add(e);let a=m.getState().activeConnections.find(t=>t.id===e)?.dbms??`unknown`;t(`unsupported_topology`,{dbms:a,topology:i}),_.getState().setFooterMessage(r.t(`schema.topology.${i}`))}var N=e(n(),1);function ue(e,t,n){let r=[];function i(e){for(let n of e){if(r.push(n),n.id===t||n.children.length>0&&i(n.children))return!0;r.pop()}return!1}i(e);for(let e=r.length-1;e>=0;e--)if(r[e].type===n)return r[e];return null}function P(e,t){for(let n of e){if(n.id===t)return n;if(n.children.length>0){let e=P(n.children,t);if(e)return e}}return null}var F=g(`schemaTreeLoadingRoots`,()=>new Set);g(`schemaTreeCacheWriter`,()=>{let e={};return y.subscribe(t=>{if(t.trees!==e){for(let[n,r]of Object.entries(t.trees)){if(r===e[n])continue;let t=m.getState().activeConnections.find(e=>e.id===n);t&&f(t)&&u(n,l(t),r)}e=t.trees}})});function de(e,t,n){let r=e.tree,i={engine:e,run:t,database:n};return{loadRoot:()=>r.loadRoot(i),loadChildren:e=>r.loadChildren(i,e)}}function I(e){let t=m.getState().activeConnections.find(t=>t.id===e);return t?.serverConnectionId?de(S(e),b(t.serverConnectionId),t.database||void 0):null}function fe(){let{setTree:e,setChildren:t,setNodeMetadata:n,setLoading:i}=y(),a=(0,N.useCallback)(async t=>{let n=I(t);if(n&&!F.has(t)){F.add(t);try{let r=m.getState().activeConnections.find(e=>e.id===t),i=(r&&f(r)?await d(t,l(r)):null)??await n.loadRoot();e(t,i),M(t,i)}catch(n){let i=n instanceof Error?n.message:String(n);console.error(`Failed to load databases:`,n),_.getState().setFooterMessage(r.t(`schema.tree.loadDatabasesFailed`,{message:i})),e(t,[])}finally{F.delete(t)}}},[e]),o=(0,N.useCallback)(async(e,r)=>{if(!y.getState().trees[e])return;let a=I(e);if(a&&!r.isLeaf){i(e,r.id,!0);try{let i=await a.loadChildren(r);t(e,r.id,i),Promise.all(i.filter(e=>e.type===c.FOLDER&&e.metadata?.countable).map(async t=>{try{let r=await a.loadChildren(t);n(e,t.id,{count:r.length})}catch(e){console.error(`Failed to count ${t.text}:`,e)}}))}catch(t){console.error(`Failed to load children:`,t),i(e,r.id,!1)}}},[t,n,i]);return{loadDatabases:a,loadChildren:o,refreshNode:(0,N.useCallback)(async(e,t)=>{await o(e,t)},[o]),createNode:s,findNode:P,findAncestor:ue}}async function L(e,t){T(e,t);let n=y.getState().trees[e];if(!n||!t)return;let r=I(e);if(!r)return;let i=D(e,t),a=re(n,i[i.length-1]);!a||a.children.length===0||await Promise.all(a.children.filter(e=>e.type===c.FOLDER).map(async t=>{try{let n=await r.loadChildren(t),i=y.getState();(t.children.length>0||t.isExpanded)&&i.setChildren(e,t.id,n),t.metadata?.countable&&i.setNodeMetadata(e,t.id,{count:n.length})}catch(e){console.error(`Failed to refresh ${t.text}:`,e)}}))}async function R(e){T(e);let t=I(e);if(!t)return;let n=await z(t,y.getState().trees[e]??[],await t.loadRoot());y.getState().setTree(e,n),M(e,n)}async function z(e,t,n){let r=new Map(t.map(e=>[e.id,e]));return Promise.all(n.map(async t=>{let n=r.get(t.id);if(!n?.isExpanded||t.isLeaf)return t;try{let r=await e.loadChildren(t);return{...t,isExpanded:!0,children:await z(e,n.children,r)}}catch{return t}}))}var B=class extends Error{sql;constructor(e,t){super(e),this.name=`QueryError`,this.sql=t}},V=class extends Error{constructor(e=`Cancelled`){super(e),this.name=`ExecutionCancelled`}},pe=new Set([`SELECT`,`SHOW`,`EXPLAIN`,`DESCRIBE`,`DESC`,`HELP`,`VALUES`,`TABLE`,`WITH`,`USE`,`SET`,`CHECK`,`CHECKSUM`]);function H(e){return e.kind===`PRAGMA`?!e.sql.includes(`=`):!(!pe.has(e.kind)||e.destructive||e.kind===`SELECT`&&C(e,`INTO`))}var me=new Set([`INSERT`,`UPDATE`,`DELETE`,`REPLACE`,`MERGE`,`LOAD`]),he=new Set([`CREATE`,`ALTER`,`DROP`,`TRUNCATE`,`RENAME`,`GRANT`,`REVOKE`,`FLUSH`,`LOCK`,`UNLOCK`]),ge=new Set([`CREATE`,`ALTER`,`DROP`,`RENAME`]);function U(e){return me.has(e.kind)||!!e.destructive?.dataLoss}function W(e,t,n=`limit`){if(t<=0||e.kind!==`SELECT`||e.limit!==null||C(e,`LIMIT`)||C(e,`INTO`)||C(e,`FOR`)||C(e,`LOCK`))return{sql:e.sql,limited:!1};if(n===`top`){if(C(e,`TOP`)||C(e,`OFFSET`))return{sql:e.sql,limited:!1};let n=se(e);return n===-1?{sql:e.sql,limited:!1}:{sql:`${e.sql.slice(0,n)} TOP ${t}${e.sql.slice(n)}`,limited:!0}}return n===`fetch`?C(e,`FETCH`)||/\bROWNUM\b/i.test(e.sql)?{sql:e.sql,limited:!1}:{sql:`${e.sql} FETCH FIRST ${t} ROWS ONLY`,limited:!0}:{sql:`${e.sql} LIMIT ${t}`,limited:!0}}function _e(e){let t=e.destructive,n=t.names.length?t.names.join(`, `):r.t(`services.destructive.unknownTarget`);switch(t.action){case`DROP`:return`DROP ${t.objectType} ${n}`;case`TRUNCATE`:return`TRUNCATE ${n}`;case`DELETE_ALL`:return r.t(`services.destructive.deleteAll`,{target:n});case`UPDATE_ALL`:return r.t(`services.destructive.updateAll`,{target:n});case`ALTER_DROP`:return r.t(`services.destructive.alterDrop`,{target:n})}}function ve(e){return{text:e.sql,start:w(e),end:e.end,kind:e.kind,readOnly:H(e),dataLoss:e.destructive?.dataLoss?_e(e):null,stmt:e}}async function ye(e,t,n,r=ee(t),i){let o=new Set(e.fields.map(e=>e.orgTable).filter(Boolean));if(o.size!==1)return e;let s=[...o][0];try{let a=i??await r.introspect.getPrimaryKeys(b(t),n,s);a.length>0&&(e.primaryKeys=a)}catch{}return!e.primaryKeys?.length&&e.fields.some(e=>e.name===`_rowid_`)&&(e.primaryKeys=[a]),e}var be=50;function xe(e,t,n){return e.syntax.limitStyle===`top`?t.replace(/^SELECT\b/i,`SELECT TOP ${n}`):`${t} ${e.limitClause(n)}`}async function Se(e,t,n,r){let i=new Map;for(let a of n){let n=a.stmt;if(n.kind!==`UPDATE`&&n.kind!==`DELETE`)continue;let o=oe(n);if(!o)continue;let s=null,c=[],l=[],u,d=await x(t.serverConnId,o.count,r||void 0);if(d.success){let n=Number(d.records[0]?.[0]);s=Number.isFinite(n)?n:null;let i=await x(t.serverConnId,o.limited?o.select:xe(e,o.select,be),r||void 0);i.success?(c=i.fields.map(e=>e.name),l=i.records):u=i.message}else u=d.message;if(!await _.getState().requestDryRun({statement:n.sql,previewSql:o.select,count:s,fields:c,rows:l,truncated:s!==null&&l.length<s,error:u}))throw new V;s!==null&&i.set(a,s)}return i}function Ce(e){let t=new ae(e),n=()=>m.getState();return{statements(e){return t.statements(e).map(ve)},statementAtCursor(e,n){let r=t.statements(e);if(r.length===0)return null;let i=r.find(e=>n>=w(e)&&n<=e.end)??[...r].reverse().find(e=>e.end<=n)??r[0];return{sql:i.sql,start:w(i)}},async rewrite(e,t){if(!e.conn.scratchpad)return;let{materializeFederated:n}=await i(async()=>{let{materializeFederated:e}=await import(`./B8zpsP_u.js`).then(e=>e.U);return{materializeFederated:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]));for(let r of t)r.stmt.sql=await n(e.connId,r.stmt.sql),r.text=r.stmt.sql},previewWrites(t,n,r){return Se(e,t,n,r)},limitForEditor(t,n){let{sql:r,limited:i}=W(t.stmt,n,e.syntax.limitStyle);return{text:r,limited:i}},async beforeStatement(t,i,a){if(t.conn.transactionMode===`manual`&&e.capabilities.transactions&&i&&U(i.stmt)&&!n().transactionOpen[t.connId]){let i=await x(t.serverConnId,e.getQuery(`START_TRANSACTION`),a||void 0);if(!i.success)throw new B(i.message??r.t(`services.transaction.startFailed`));n().setTransactionOpen(t.connId,!0),_.getState().setFooterMessage(r.t(`services.transaction.started`))}},afterStatement(t,i,a){let o=i?.kind??``;o===`COMMIT`||o===`ROLLBACK`?n().setTransactionOpen(t.connId,!1):o===`START`||o===`BEGIN`?n().setTransactionOpen(t.connId,!0):he.has(o)&&n().transactionOpen[t.connId]&&e.capabilities.implicitCommitDdl&&(n().setTransactionOpen(t.connId,!1),_.getState().setFooterMessage(r.t(`services.transaction.implicitCommit`,{kind:o}))),ge.has(o)&&L(t.connId,a)},async enrichResult(t,n,r,i){await ye(n,t.serverConnId,r,e,i)},databaseAfter(e,t,n){return n||t.fields.length===0?null:t.fields.find(e=>e.db)?.db||null},readStructures(e,t,n,r,a){i(async()=>{let{readStructures:e}=await import(`./B8zpsP_u.js`).then(e=>e.at);return{readStructures:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])).then(({readStructures:i})=>i(e,t,n.length>0?n.map(e=>({sql:e.stmt.sql,start:a===null?null:a+e.start})):[{sql:r,start:a}]))}}}function G(e){let t=[0];for(let n=0;n<e.length;n++)e[n]===`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CExE8dKz.js","assets/hePW80VL.js","assets/CYz610vE.js","assets/CiL8zoYm.js","assets/Cu_sGzNJ.js","assets/BDtsGuIR.js","assets/BGuDcBB_.js","assets/DzRyVlxz.js","assets/D8dVzi6I.js","assets/eFSiW0Lh.js","assets/Nro86Y63.js","assets/S7HbowYz.js","assets/DU-Eln5x.js","assets/BjwrN_ch.js","assets/Bit0Kfog.js","assets/D8_hwGjG.js","assets/C1gqjEN3.js","assets/BkXrfAoR.js","assets/BRZhVXRC.js","assets/DAFA-E1-.js","assets/B9dhM8vw.js","assets/DPyLA6Dl.js","assets/9gOj-Ty3.js","assets/Bs5VSn0X.js","assets/w46wk7KI.css"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./hePW80VL.js";import{o as t,p as n}from"./CYz610vE.js";import{a as r,i}from"./BDtsGuIR.js";import{n as a,r as o}from"./Nro86Y63.js";import{L as s,R as c,g as l,h as u,m as d,p as f,s as p,t as m}from"./S7HbowYz.js";import{n as h}from"./DU-Eln5x.js";import{t as g}from"./Bit0Kfog.js";import{n as _}from"./D8_hwGjG.js";import{n as v}from"./C1gqjEN3.js";import{C as y,a as b,l as x}from"./BkXrfAoR.js";import{i as ee,n as S,r as te}from"./BRZhVXRC.js";import{i as ne}from"./DAFA-E1-.js";import{n as re,t as ie}from"./B9dhM8vw.js";import{c as ae,d as C,f as w,l as oe,p as se,t as T}from"./DPyLA6Dl.js";function E(e){return m.getState().activeConnections.find(t=>t.id===e)?.database||ie(y.getState().trees[e]??[])}function ce(e,t,n,r){return S(e).tree.objectPath(t,n,r,E(e))}function D(e,t){return S(e).tree.namespacePath(t,E(e))}function O(e,t){for(let n of e){if(n.id===t)return n;let e=O(n.children,t);if(e)return e}return null}async function le(e,t,n){let r=y.getState;for(let i=0;i<t.length;i++){let a=r().trees[e];if(!a)return!1;let o=O(a,t[i]);if(!o)return!1;if(i===t.length-1)return r().setSelected(e,o.id),!0;o.children.length===0&&!o.isLeaf?await n(e,o):o.isExpanded||r().setExpanded(e,o.id,!0)}return!1}function k(e,t){for(let n of e){if(n.id===t)return n;let e=k(n.children,t);if(e)return e}return null}function A(e,t){let n=y.getState(),r=n.trees[e];if(!r||!t)return;let i=D(e,t),a=null;for(let t of i){let i=k(r,t);if(!i||(a=i,i.isLeaf))break;!i.isExpanded&&i.children.length>0&&n.setExpanded(e,i.id,!0)}!a||a.id!==i[i.length-1]||(n.setSelected(e,a.id),!a.isExpanded&&a.children.length>0&&n.setExpanded(e,a.id,!0))}var j=new Set;function M(e,n){let i=n.map(e=>e.metadata?.topology).find(e=>typeof e==`string`);if(!i||j.has(e))return;j.add(e);let a=m.getState().activeConnections.find(t=>t.id===e)?.dbms??`unknown`;t(`unsupported_topology`,{dbms:a,topology:i}),_.getState().setFooterMessage(r.t(`schema.topology.${i}`))}var N=e(n(),1);function ue(e,t,n){let r=[];function i(e){for(let n of e){if(r.push(n),n.id===t||n.children.length>0&&i(n.children))return!0;r.pop()}return!1}i(e);for(let e=r.length-1;e>=0;e--)if(r[e].type===n)return r[e];return null}function P(e,t){for(let n of e){if(n.id===t)return n;if(n.children.length>0){let e=P(n.children,t);if(e)return e}}return null}var F=g(`schemaTreeLoadingRoots`,()=>new Set);g(`schemaTreeCacheWriter`,()=>{let e={};return y.subscribe(t=>{if(t.trees!==e){for(let[n,r]of Object.entries(t.trees)){if(r===e[n])continue;let t=m.getState().activeConnections.find(e=>e.id===n);t&&f(t)&&u(n,l(t),r)}e=t.trees}})});function de(e,t,n){let r=e.tree,i={engine:e,run:t,database:n};return{loadRoot:()=>r.loadRoot(i),loadChildren:e=>r.loadChildren(i,e)}}function I(e){let t=m.getState().activeConnections.find(t=>t.id===e);return t?.serverConnectionId?de(S(e),b(t.serverConnectionId),t.database||void 0):null}function fe(){let{setTree:e,setChildren:t,setNodeMetadata:n,setLoading:i}=y(),a=(0,N.useCallback)(async t=>{let n=I(t);if(n&&!F.has(t)){F.add(t);try{let r=m.getState().activeConnections.find(e=>e.id===t),i=(r&&f(r)?await d(t,l(r)):null)??await n.loadRoot();e(t,i),M(t,i)}catch(n){let i=n instanceof Error?n.message:String(n);console.error(`Failed to load databases:`,n),_.getState().setFooterMessage(r.t(`schema.tree.loadDatabasesFailed`,{message:i})),e(t,[])}finally{F.delete(t)}}},[e]),o=(0,N.useCallback)(async(e,r)=>{if(!y.getState().trees[e])return;let a=I(e);if(a&&!r.isLeaf){i(e,r.id,!0);try{let i=await a.loadChildren(r);t(e,r.id,i),Promise.all(i.filter(e=>e.type===c.FOLDER&&e.metadata?.countable).map(async t=>{try{let r=await a.loadChildren(t);n(e,t.id,{count:r.length})}catch(e){console.error(`Failed to count ${t.text}:`,e)}}))}catch(t){console.error(`Failed to load children:`,t),i(e,r.id,!1)}}},[t,n,i]);return{loadDatabases:a,loadChildren:o,refreshNode:(0,N.useCallback)(async(e,t)=>{await o(e,t)},[o]),createNode:s,findNode:P,findAncestor:ue}}async function L(e,t){T(e,t);let n=y.getState().trees[e];if(!n||!t)return;let r=I(e);if(!r)return;let i=D(e,t),a=re(n,i[i.length-1]);!a||a.children.length===0||await Promise.all(a.children.filter(e=>e.type===c.FOLDER).map(async t=>{try{let n=await r.loadChildren(t),i=y.getState();(t.children.length>0||t.isExpanded)&&i.setChildren(e,t.id,n),t.metadata?.countable&&i.setNodeMetadata(e,t.id,{count:n.length})}catch(e){console.error(`Failed to refresh ${t.text}:`,e)}}))}async function R(e){T(e);let t=I(e);if(!t)return;let n=await z(t,y.getState().trees[e]??[],await t.loadRoot());y.getState().setTree(e,n),M(e,n)}async function z(e,t,n){let r=new Map(t.map(e=>[e.id,e]));return Promise.all(n.map(async t=>{let n=r.get(t.id);if(!n?.isExpanded||t.isLeaf)return t;try{let r=await e.loadChildren(t);return{...t,isExpanded:!0,children:await z(e,n.children,r)}}catch{return t}}))}var B=class extends Error{sql;constructor(e,t){super(e),this.name=`QueryError`,this.sql=t}},V=class extends Error{constructor(e=`Cancelled`){super(e),this.name=`ExecutionCancelled`}},pe=new Set([`SELECT`,`SHOW`,`EXPLAIN`,`DESCRIBE`,`DESC`,`HELP`,`VALUES`,`TABLE`,`WITH`,`USE`,`SET`,`CHECK`,`CHECKSUM`]);function H(e){return e.kind===`PRAGMA`?!e.sql.includes(`=`):!(!pe.has(e.kind)||e.destructive||e.kind===`SELECT`&&C(e,`INTO`))}var me=new Set([`INSERT`,`UPDATE`,`DELETE`,`REPLACE`,`MERGE`,`LOAD`]),he=new Set([`CREATE`,`ALTER`,`DROP`,`TRUNCATE`,`RENAME`,`GRANT`,`REVOKE`,`FLUSH`,`LOCK`,`UNLOCK`]),ge=new Set([`CREATE`,`ALTER`,`DROP`,`RENAME`]);function U(e){return me.has(e.kind)||!!e.destructive?.dataLoss}function W(e,t,n=`limit`){if(t<=0||e.kind!==`SELECT`||e.limit!==null||C(e,`LIMIT`)||C(e,`INTO`)||C(e,`FOR`)||C(e,`LOCK`))return{sql:e.sql,limited:!1};if(n===`top`){if(C(e,`TOP`)||C(e,`OFFSET`))return{sql:e.sql,limited:!1};let n=se(e);return n===-1?{sql:e.sql,limited:!1}:{sql:`${e.sql.slice(0,n)} TOP ${t}${e.sql.slice(n)}`,limited:!0}}return n===`fetch`?C(e,`FETCH`)||/\bROWNUM\b/i.test(e.sql)?{sql:e.sql,limited:!1}:{sql:`${e.sql} FETCH FIRST ${t} ROWS ONLY`,limited:!0}:{sql:`${e.sql} LIMIT ${t}`,limited:!0}}function _e(e){let t=e.destructive,n=t.names.length?t.names.join(`, `):r.t(`services.destructive.unknownTarget`);switch(t.action){case`DROP`:return`DROP ${t.objectType} ${n}`;case`TRUNCATE`:return`TRUNCATE ${n}`;case`DELETE_ALL`:return r.t(`services.destructive.deleteAll`,{target:n});case`UPDATE_ALL`:return r.t(`services.destructive.updateAll`,{target:n});case`ALTER_DROP`:return r.t(`services.destructive.alterDrop`,{target:n})}}function ve(e){return{text:e.sql,start:w(e),end:e.end,kind:e.kind,readOnly:H(e),dataLoss:e.destructive?.dataLoss?_e(e):null,stmt:e}}async function ye(e,t,n,r=ee(t),i){let o=new Set(e.fields.map(e=>e.orgTable).filter(Boolean));if(o.size!==1)return e;let s=[...o][0];try{let a=i??await r.introspect.getPrimaryKeys(b(t),n,s);a.length>0&&(e.primaryKeys=a)}catch{}return!e.primaryKeys?.length&&e.fields.some(e=>e.name===`_rowid_`)&&(e.primaryKeys=[a]),e}var be=50;function xe(e,t,n){return e.syntax.limitStyle===`top`?t.replace(/^SELECT\b/i,`SELECT TOP ${n}`):`${t} ${e.limitClause(n)}`}async function Se(e,t,n,r){let i=new Map;for(let a of n){let n=a.stmt;if(n.kind!==`UPDATE`&&n.kind!==`DELETE`)continue;let o=oe(n);if(!o)continue;let s=null,c=[],l=[],u,d=await x(t.serverConnId,o.count,r||void 0);if(d.success){let n=Number(d.records[0]?.[0]);s=Number.isFinite(n)?n:null;let i=await x(t.serverConnId,o.limited?o.select:xe(e,o.select,be),r||void 0);i.success?(c=i.fields.map(e=>e.name),l=i.records):u=i.message}else u=d.message;if(!await _.getState().requestDryRun({statement:n.sql,previewSql:o.select,count:s,fields:c,rows:l,truncated:s!==null&&l.length<s,error:u}))throw new V;s!==null&&i.set(a,s)}return i}function Ce(e){let t=new ae(e),n=()=>m.getState();return{statements(e){return t.statements(e).map(ve)},statementAtCursor(e,n){let r=t.statements(e);if(r.length===0)return null;let i=r.find(e=>n>=w(e)&&n<=e.end)??[...r].reverse().find(e=>e.end<=n)??r[0];return{sql:i.sql,start:w(i)}},async rewrite(e,t){if(!e.conn.scratchpad)return;let{materializeFederated:n}=await i(async()=>{let{materializeFederated:e}=await import(`./CExE8dKz.js`).then(e=>e.U);return{materializeFederated:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]));for(let r of t)r.stmt.sql=await n(e.connId,r.stmt.sql),r.text=r.stmt.sql},previewWrites(t,n,r){return Se(e,t,n,r)},limitForEditor(t,n){let{sql:r,limited:i}=W(t.stmt,n,e.syntax.limitStyle);return{text:r,limited:i}},async beforeStatement(t,i,a){if(t.conn.transactionMode===`manual`&&e.capabilities.transactions&&i&&U(i.stmt)&&!n().transactionOpen[t.connId]){let i=await x(t.serverConnId,e.getQuery(`START_TRANSACTION`),a||void 0);if(!i.success)throw new B(i.message??r.t(`services.transaction.startFailed`));n().setTransactionOpen(t.connId,!0),_.getState().setFooterMessage(r.t(`services.transaction.started`))}},afterStatement(t,i,a){let o=i?.kind??``;o===`COMMIT`||o===`ROLLBACK`?n().setTransactionOpen(t.connId,!1):o===`START`||o===`BEGIN`?n().setTransactionOpen(t.connId,!0):he.has(o)&&n().transactionOpen[t.connId]&&e.capabilities.implicitCommitDdl&&(n().setTransactionOpen(t.connId,!1),_.getState().setFooterMessage(r.t(`services.transaction.implicitCommit`,{kind:o}))),ge.has(o)&&L(t.connId,a)},async enrichResult(t,n,r,i){await ye(n,t.serverConnId,r,e,i)},databaseAfter(e,t,n){return n||t.fields.length===0?null:t.fields.find(e=>e.db)?.db||null},readStructures(e,t,n,r,a){i(async()=>{let{readStructures:e}=await import(`./CExE8dKz.js`).then(e=>e.at);return{readStructures:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])).then(({readStructures:i})=>i(e,t,n.length>0?n.map(e=>({sql:e.stmt.sql,start:a===null?null:a+e.start})):[{sql:r,start:a}]))}}}function G(e){let t=[0];for(let n=0;n<e.length;n++)e[n]===`
3
3
  `&&t.push(n+1);return t}function we(e){let{console:t}=e;return{statements(e){let n=G(e);return t.split(e).map(({text:i,line:a})=>{let o;try{o=t.classify(i)}catch(e){throw new B(r.t(`services.console.unreadable`,{line:a,message:e instanceof Error?e.message:String(e)}),i)}let s=(n[a-1]??0)+Math.max(0,e.slice(n[a-1]??0).indexOf(i));return{text:i,start:s,end:s+i.length,kind:o.name,readOnly:o.readOnly,dataLoss:o.dataLoss?i:null}})},statementAtCursor(e,n){let r=t.split(e);if(r.length===0)return null;let i=e.slice(0,n).split(`
4
4
  `).length,a=[...r].reverse().find(e=>e.line<=i)??r[0],o=G(e)[a.line-1]??0;return{sql:a.text,start:o+Math.max(0,e.slice(o).indexOf(a.text))}},afterStatement(e,n){n&&t.changesTree?.(n.text)&&R(e.connId)},databaseAfter(e){return e&&t.databaseAfter?t.databaseAfter(e.text):null}}}var K=new WeakMap;function q(e){let t=K.get(e);return t||(t=o(e)?Ce(e):we(e),K.set(e,t)),t}function Te(e){let t=e.fields??[],n=e.records??[];return{fields:t.map(e=>({name:e.name,type:e.type,orgTable:e.orgTable??e.table??``,orgName:e.orgName??e.name,db:e.db??``})),rows:n.map(e=>{let n={};return t.forEach((t,r)=>{n[t.name]=e[r]}),n}),affectedRows:e.affectedRows??0,insertId:e.insertId??0,message:e.message??(n.length>0?r.t(`services.query.rowsReturned`,{count:n.length}):r.t(`services.query.rowsAffected`,{count:e.affectedRows??0})),...e.reply===void 0?{}:{reply:e.reply}}}function Ee(e,t=0){let n=J();return n<=0?``:e.limitClause(n,t)}function J(){return h.getState().resultRowLimit}async function De(e){if(!h.getState().confirmDestructive)return!0;let t=e.filter(e=>e.dataLoss!==null);return t.length===0||_.getState().requestDestructiveConfirm({title:r.t(`services.destructive.title`,{count:t.length}),description:r.t(`services.destructive.description`),statements:t.map(e=>e.dataLoss),confirmLabel:r.t(`services.runAnyway`)})}async function Oe(e,t){if(!e.readOnly)return;let n=t.filter(e=>!e.readOnly);if(n.length===0)return;let i=`${e.hostName||e.host}`;if(!h.getState().allowReadOnlyOverride)throw new B(r.t(`services.readOnly.refused`,{label:i,count:n.length}));if(!await _.getState().requestDestructiveConfirm({title:r.t(`services.readOnly.title`,{label:i}),description:r.t(`services.readOnly.description`),statements:n.map(e=>e.text.length>120?e.text.slice(0,117)+`...`:e.text),confirmLabel:r.t(`services.runAnyway`)}))throw new V(`Cancelled: connection is read-only.`)}function Y(e,t){let n=m.getState(),i=n.activeConnections.find(t=>t.id===e);if(!i?.serverConnectionId)throw new B(r.t(`services.query.notConnected`));if(n.pendingReopen[e])throw new B(r.t(`services.query.fileNotOpen`));let a=S(e);return{ctx:{connId:e,serverConnId:i.serverConnectionId,conn:i,engine:a,tabId:t},adapter:q(a)}}async function X({ctx:e,adapter:t},n,r){let i=t.statements(n);if(await t.rewrite?.(e,i),await Oe(e.conn,i),!r.skipDestructiveConfirm&&!await De(i))throw new V;return i}async function Z({ctx:e,adapter:n},i,a){let{connId:o,serverConnId:s,tabId:c}=e,l=i.stmt?.kind??``;await n.beforeStatement?.(e,i.stmt,a);let u=await x(s,i.sql,a||void 0);if(!u.success){let n=u.message??r.t(`services.query.failed`);throw v.getState().recordExecution({connectionId:o,tabId:c,query:i.sql,database:a,executionTime:u.execTime,error:n,kind:l||void 0}),t(`query_execute`,{dbms:e.conn.dbms,kind:l||`unknown`,origin:c?`editor`:`app`,success:!1}),new B(n,i.sql)}let d=Te(u);return n.afterStatement?.(e,i.stmt,a),e.skipHistory||v.getState().recordExecution({connectionId:o,tabId:c,query:i.sql,database:a,executionTime:u.execTime,kind:l||void 0,...d.fields.length>0?{rowCount:d.rows.length}:{affectedRows:d.affectedRows}}),t(`query_execute`,{dbms:e.conn.dbms,kind:l||`unknown`,origin:c?`editor`:`app`,success:!0,exec_time_ms:Math.round(u.execTime??0)}),{qr:d,execTime:u.execTime}}async function ke(e,t,n={}){let i=Y(e,n.tabId??null),{ctx:a,adapter:o}=i;a.skipHistory=n.skipHistory;let s=t.trim();if(!s)throw new B(r.t(`services.query.nothingToExecute`));let c=await X(i,s,n),l=n.database??``;n.previewWrites&&h.getState().previewAffectedRows&&await o.previewWrites?.(a,c,l);let u=c.length>0?c.map(e=>({sql:e.text,stmt:e})):[{sql:s,stmt:null}],d=null;for(let e of u){let{qr:t}=await Z(i,e,l);n.primaryKeys&&t.fields.length>0&&l&&await o.enrichResult?.(a,t,l,Array.isArray(n.primaryKeys)?n.primaryKeys:void 0),d=t}return d}function Ae(e,t){return Q(e,t)?.sql??null}function Q(e,t){let n=v.getState().tabs[e]?.find(e=>e.id===t);if(!n)return null;let r=ne(e,t);if(r&&`selection`in r)return{sql:r.selection,start:r.start};let i=r&&`cursorOffset`in r?r.cursorOffset:n.query.length;return q(S(e)).statementAtCursor(n.query,i)}async function je(e,n,i={}){let a=()=>v.getState(),o=a().tabs[e]?.find(e=>e.id===n);if(!o)return;let s=(i.sql??o.query)?.trim();if(!s)return;let c,l;try{c=Y(e,n),l=await X(c,s,{})}catch(t){if(t instanceof V){t.message!==`Cancelled`&&a().setError(e,n,t.message);return}a().setError(e,n,t instanceof Error?t.message:String(t));return}let{ctx:u,adapter:d}=c,f=h.getState(),m=new Map;if(f.previewAffectedRows&&d.previewWrites)try{m=await d.previewWrites(u,l,o.database||``)}catch(e){if(e instanceof V)return;throw e}let g=m.size===1,_=l.length>0?l.map(e=>{let t=d.limitForEditor?.(e,f.resultRowLimit)??{text:e.text,limited:!1};return{sql:t.text,limited:t.limited,stmt:e}}):[{sql:s,limited:!1,stmt:null}];d.readStructures?.(e,n,l,s,i.sql?i.sqlOffset??null:0),a().captureRevision(e,n,`execute`),a().setExecuting(e,n,!0),a().setError(e,n,null);let y=[],b=o.database||``;try{for(let i of _){let{qr:o,execTime:s}=await Z(c,i,b);o.sql=i.stmt?.text??i.sql,o.executionTime=s,i.limited&&o.rows.length>=f.resultRowLimit&&(o.limited=!0,o.message=r.t(`services.query.rowsReturnedLimited`,{count:o.rows.length,limit:f.resultRowLimit}));let l=d.databaseAfter?.(i.stmt,o,b);l&&l!==b&&(b=l,a().setDatabase(e,n,b),A(e,b)),o.fields.length>0&&b&&await d.enrichResult?.(u,o,b);let p=g&&i.stmt?m.get(i.stmt):void 0;p!==void 0&&Number.isFinite(o.affectedRows)&&o.affectedRows!==p&&(o.warning=r.t(`services.query.dryRunMismatch`,{predicted:p,actual:o.affectedRows}),t(`dry_run_mismatch`,{dbms:u.conn.dbms,kind:i.stmt?.kind??`unknown`})),y.push(o)}a().setResults(e,n,y)}catch(t){y.length>0&&a().setResults(e,n,y),a().setError(e,n,t instanceof Error?t.message:String(t),t instanceof B?t.sql:null),t instanceof B&&p(`query_error`)}finally{a().setExecuting(e,n,!1)}}async function $(e,t){let n=m.getState(),i=n.activeConnections.find(t=>t.id===e);if(!i?.serverConnectionId)return;let a=te(e);try{let e=await x(i.serverConnectionId,a.getQuery(t));if(!e.success)throw new B(e.message??r.t(`services.transaction.commandFailed`,{name:t}));_.getState().setFooterMessage(t===`COMMIT`?r.t(`services.transaction.committed`):r.t(`services.transaction.rolledBack`))}catch(e){_.getState().setFooterMessage(r.t(`services.transaction.commandFailedWith`,{name:t,message:e instanceof Error?e.message:String(e)}))}finally{n.setTransactionOpen(e,!1)}}var Me=e=>$(e,`COMMIT`),Ne=e=>$(e,`ROLLBACK`);export{A as _,ke as a,Ee as c,H as d,V as f,fe as g,R as h,Ne as i,q as l,L as m,je as n,Q as o,B as p,Ae as r,J as s,Me as t,W as u,le as v,ce as y};