@lunora/studio 1.0.0-alpha.79 → 1.0.0-alpha.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +28 -14
- package/dist/index.js +1 -1
- package/dist/mount.d.ts +1 -1
- package/dist/mount.js +1 -1
- package/dist/packem_chunks/ApiTab.js +1 -1
- package/dist/packem_chunks/AuditPanel.js +1 -1
- package/dist/packem_chunks/DeploymentHealthPanel.js +1 -1
- package/dist/packem_chunks/ExportImportPanel.js +3 -3
- package/dist/packem_chunks/FileBrowser.js +4 -4
- package/dist/packem_chunks/FunctionRunner.js +1 -1
- package/dist/packem_chunks/FunctionStatsPanel.js +1 -1
- package/dist/packem_chunks/HealthPanel.js +1 -1
- package/dist/packem_chunks/InsightsPanel.js +1 -1
- package/dist/packem_chunks/LogsPanel.js +1 -1
- package/dist/packem_chunks/MailPanel.js +2 -2
- package/dist/packem_chunks/MetricsPanel.js +1 -1
- package/dist/packem_chunks/NotificationsPanel.js +1 -1
- package/dist/packem_chunks/PitrPanel.js +1 -1
- package/dist/packem_chunks/SchemaViewer.js +1 -2
- package/dist/packem_chunks/SecurityAdvisorPanel.js +1 -1
- package/dist/packem_chunks/SettingsPanel.js +1 -1
- package/dist/packem_chunks/SqlEditorPanel.js +6 -4
- package/dist/packem_chunks/TableEditor.js +1 -1
- package/dist/packem_chunks/agents-panel.js +1 -1
- package/dist/packem_chunks/analytics-panel.js +1 -1
- package/dist/packem_chunks/auth-audit-panel.js +1 -1
- package/dist/packem_chunks/auth-config-panel.js +1 -1
- package/dist/packem_chunks/auth-sessions-panel.js +1 -1
- package/dist/packem_chunks/containers-panel.js +1 -1
- package/dist/packem_chunks/dashboards-panel.js +1 -1
- package/dist/packem_chunks/fanout-panel.js +1 -1
- package/dist/packem_chunks/flags-panel.js +1 -1
- package/dist/packem_chunks/issues-panel.js +1 -1
- package/dist/packem_chunks/kv-browser.js +1 -1
- package/dist/packem_chunks/log-drains-panel.js +4 -4
- package/dist/packem_chunks/migrations-route.js +1 -0
- package/dist/packem_chunks/organizations-panel.js +1 -1
- package/dist/packem_chunks/payments-panel.js +1 -1
- package/dist/packem_chunks/permissions-panel.js +1 -1
- package/dist/packem_chunks/queues-panel.js +1 -1
- package/dist/packem_chunks/rls-panel.js +1 -1
- package/dist/packem_chunks/schedule-panel.js +1 -1
- package/dist/packem_chunks/sparkline.js +1 -1
- package/dist/packem_chunks/storage-rules-panel.js +1 -1
- package/dist/packem_chunks/subscriptions-panel.js +1 -1
- package/dist/packem_chunks/sync-client-panel.js +1 -1
- package/dist/packem_chunks/traces-panel.js +1 -1
- package/dist/packem_chunks/users-panel.js +1 -1
- package/dist/packem_chunks/vector-browser.js +1 -1
- package/dist/packem_chunks/workflows-panel.js +1 -1
- package/dist/packem_shared/ADMIN_FUNCTIONS-BnD4aovm.js +1 -0
- package/dist/packem_shared/ApiDocsPanel-DfUQ1ZAF.js +2 -0
- package/dist/packem_shared/{ApiReferencePanel-C42v1jr6.js → ApiReferencePanel-9q8BbJl-.js} +1 -1
- package/dist/packem_shared/CommandPalette--SQwfTW1.js +1 -0
- package/dist/packem_shared/DataBrowser-CuRlztBz.js +1 -0
- package/dist/packem_shared/DataFilters-B26ZeqBZ.js +1 -0
- package/dist/packem_shared/GlobalDataBrowser-DB-vQ2_H.js +1 -0
- package/dist/packem_shared/HomePanel-Dcs4a3Ax.js +1 -0
- package/dist/packem_shared/MigrationsPanel-C2OnsqRb.js +1 -0
- package/dist/packem_shared/{OpenRpcReferencePanel-sGsIgYWj.js → OpenRpcReferencePanel-qOZcWXMs.js} +1 -1
- package/dist/packem_shared/ScheduledJobs-D8kBZWBu.js +1 -0
- package/dist/packem_shared/Studio-B26_pT8J.js +1 -0
- package/dist/packem_shared/StudioApp-bXhJeLlZ.js +1 -0
- package/dist/packem_shared/advisor-view-Pa8HLtBv.js +1 -0
- package/dist/packem_shared/{app.d-bRPJhby-.d.ts → app.d-DW7yZsfu.d.ts} +1 -3
- package/dist/packem_shared/bar-chart-DraN_srt.js +9 -0
- package/dist/packem_shared/data-grid-DcxyIXwG.js +1 -0
- package/dist/packem_shared/data-view-params-ClrV7XgF.js +1 -0
- package/dist/packem_shared/error-alert-t6cpEi0z.js +1 -0
- package/dist/packem_shared/grid-features-jnrD0SpX.js +6 -0
- package/dist/packem_shared/{home-panel-Cm88Nvqh.js → home-panel-CU6MWLHG.js} +2 -2
- package/dist/packem_shared/{internal-AtZ4bTal.js → internal-BSIsQVC6.js} +1 -1
- package/dist/packem_shared/live-status-CmuRLFKf.js +1 -0
- package/dist/packem_shared/operation-console-provider-BMJNtiyB.js +1 -0
- package/dist/packem_shared/recording-client-DRAZEmzE.js +1 -0
- package/dist/packem_shared/reference-view-DnYYWr7I.js +12 -0
- package/dist/packem_shared/result-chart-DzJOVsaw.js +1 -0
- package/dist/packem_shared/schema-diagram-cg-bz_VL.js +2 -0
- package/dist/packem_shared/{sparkline-DtcZoU48.js → sparkline-CgjeUU2I.js} +1 -1
- package/dist/packem_shared/studio-q-C-acL7.js +2 -0
- package/dist/packem_shared/table-list-sidebar-BFkSQwlB.js +1 -0
- package/dist/packem_shared/use-admin-query-QJ-ibl5u.js +1 -0
- package/dist/packem_shared/use-async-submit-q3ymBJkD.js +1 -0
- package/dist/packem_shared/{use-auth-config-9S_K_W-G.js → use-auth-config-BObBpdsi.js} +1 -1
- package/dist/packem_shared/use-sql-assistant-CHEu2-Rk.js +1 -0
- package/dist/standalone/chunk-2GA4SHO7.js +1 -0
- package/dist/standalone/{chunk-NG6LYBPJ.js → chunk-2VDFV5TD.js} +1 -1
- package/dist/standalone/chunk-2WOIRKEI.js +1 -0
- package/dist/standalone/chunk-33CL6OHR.js +1 -0
- package/dist/standalone/{chunk-EIT7ERYE.js → chunk-34D36UCW.js} +1 -1
- package/dist/standalone/chunk-3C3CG7ZK.js +1 -0
- package/dist/standalone/{chunk-6CULAILE.js → chunk-3O3HAXW7.js} +1 -1
- package/dist/standalone/{chunk-LSEZN2ZL.js → chunk-3STOIE7Q.js} +1 -1
- package/dist/standalone/chunk-53WEPGUD.js +1 -0
- package/dist/standalone/chunk-5CVJS7ON.js +1 -0
- package/dist/standalone/chunk-6IKEW5LG.js +1 -0
- package/dist/standalone/chunk-6LNCYDZO.js +1 -0
- package/dist/standalone/chunk-6NY7SPDL.js +1 -0
- package/dist/standalone/chunk-6PNPIW6I.js +2 -0
- package/dist/standalone/{chunk-AVZGVZZ7.js → chunk-6VAKZALJ.js} +1 -1
- package/dist/standalone/chunk-6YI4WJO4.js +1 -0
- package/dist/standalone/{chunk-HYT2ZUNP.js → chunk-6YTSSIEJ.js} +2 -2
- package/dist/standalone/{chunk-KYF2E5CJ.js → chunk-7LWMHTJ3.js} +1 -1
- package/dist/standalone/chunk-A74VSSA2.js +4 -0
- package/dist/standalone/chunk-CCVXYYPJ.js +1 -0
- package/dist/standalone/chunk-CT5MMH4O.js +1 -0
- package/dist/standalone/chunk-CTNB2KIA.js +1 -0
- package/dist/standalone/chunk-CU55Y5TV.js +62 -0
- package/dist/standalone/chunk-D2RKH6JK.js +1 -0
- package/dist/standalone/chunk-E3NMX2VU.js +4 -0
- package/dist/standalone/chunk-FNPJ7GJZ.js +1 -0
- package/dist/standalone/chunk-FOBRNWBG.js +3 -0
- package/dist/standalone/chunk-G6PSMGLD.js +1 -0
- package/dist/standalone/chunk-GAX5IZYG.js +8 -0
- package/dist/standalone/chunk-GB6U2BPU.js +1 -0
- package/dist/standalone/chunk-GEDMLM4A.js +6 -0
- package/dist/standalone/chunk-GXSZH7VJ.js +13 -0
- package/dist/standalone/chunk-GYKVBKT5.js +1 -0
- package/dist/standalone/chunk-H6YOWRFB.js +1 -0
- package/dist/standalone/chunk-HJ3E4YF5.js +1 -0
- package/dist/standalone/chunk-HJD2YUQS.js +1 -0
- package/dist/standalone/chunk-IHQC7J35.js +1 -0
- package/dist/standalone/chunk-JLOWAJRR.js +1 -0
- package/dist/standalone/chunk-JRMMYIAF.js +1 -0
- package/dist/standalone/{chunk-W6TE2I2D.js → chunk-KC44QCN6.js} +1 -1
- package/dist/standalone/chunk-KJB7YAKB.js +1 -0
- package/dist/standalone/chunk-KLQYC6CC.js +1 -0
- package/dist/standalone/{chunk-XQGANNLS.js → chunk-KZ3ALMMP.js} +1 -1
- package/dist/standalone/chunk-L7R74G63.js +1 -0
- package/dist/standalone/{chunk-3RTTXLMU.js → chunk-OY2RVUZL.js} +1 -1
- package/dist/standalone/chunk-P4YLIBCN.js +1 -0
- package/dist/standalone/chunk-PZVU2QMX.js +1 -0
- package/dist/standalone/{chunk-PRJ4RJDU.js → chunk-Q7O6B7WC.js} +1 -1
- package/dist/standalone/chunk-QLQADHFE.js +1 -0
- package/dist/standalone/{chunk-7LQWFOEU.js → chunk-QXXIJAD5.js} +1 -1
- package/dist/standalone/chunk-QZGTH6WH.js +1 -0
- package/dist/standalone/chunk-RJP3WBZ4.js +1 -0
- package/dist/standalone/chunk-RNL6BSFM.js +1 -0
- package/dist/standalone/chunk-RNRJKBY3.js +4 -0
- package/dist/standalone/{chunk-7YEFOSPH.js → chunk-RQ7AFLIV.js} +1 -1
- package/dist/standalone/chunk-S252DAFP.js +1 -0
- package/dist/standalone/chunk-S2VVR7HI.js +1 -0
- package/dist/standalone/chunk-SKW6J4VW.js +1 -0
- package/dist/standalone/chunk-T7IUZIF4.js +1 -0
- package/dist/standalone/chunk-TTGOOYLF.js +1 -0
- package/dist/standalone/chunk-U6TNNM5U.js +1 -0
- package/dist/standalone/chunk-VHWOCPRK.js +1 -0
- package/dist/standalone/chunk-W6SAOXGH.js +6 -0
- package/dist/standalone/{chunk-YCRMVBPW.js → chunk-WBYSSCV2.js} +1 -1
- package/dist/standalone/{chunk-LFXFP4IF.js → chunk-X665E2HU.js} +1 -1
- package/dist/standalone/chunk-XDAT7LHC.js +1 -0
- package/dist/standalone/chunk-XS5LDR52.js +1 -0
- package/dist/standalone/chunk-Y5Y7DHFW.js +1 -0
- package/dist/standalone/chunk-YJYTMQJI.js +1 -0
- package/dist/standalone/chunk-Z2V42P7J.js +1 -0
- package/dist/standalone/studio.js +5 -5
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/packem_chunks/MigrationsPanel.js +0 -1
- package/dist/packem_shared/ADMIN_FUNCTIONS-CpgIo9pj.js +0 -1
- package/dist/packem_shared/ApiDocsPanel-CjdsxN1t.js +0 -2
- package/dist/packem_shared/CommandPalette-CVIaY3j8.js +0 -1
- package/dist/packem_shared/DataBrowser-Bfstz_au.js +0 -1
- package/dist/packem_shared/DataFilters-Csb30F0C.js +0 -1
- package/dist/packem_shared/GlobalDataBrowser-RLJ6NvOs.js +0 -1
- package/dist/packem_shared/HomePanel-B8EFM4u3.js +0 -1
- package/dist/packem_shared/ScheduledJobs-DUbo6epc.js +0 -1
- package/dist/packem_shared/Studio-BDtS9C5g.js +0 -1
- package/dist/packem_shared/StudioApp-DjLzIO9E.js +0 -1
- package/dist/packem_shared/advisor-view-DaCX9Jy5.js +0 -1
- package/dist/packem_shared/bar-chart-AryFCeoa.js +0 -9
- package/dist/packem_shared/data-grid-BMBKzMEJ.js +0 -1
- package/dist/packem_shared/data-view-params-C8T3bW1z.js +0 -1
- package/dist/packem_shared/error-alert-B59DnrDI.js +0 -1
- package/dist/packem_shared/grid-features-uZCUj955.js +0 -6
- package/dist/packem_shared/live-status-CGW2JHf_.js +0 -1
- package/dist/packem_shared/reference-view-KvhektwF.js +0 -12
- package/dist/packem_shared/result-chart-CwKhhKM0.js +0 -1
- package/dist/packem_shared/studio-BmWFd-Rz.js +0 -2
- package/dist/packem_shared/table-list-sidebar-CMCcNALK.js +0 -1
- package/dist/packem_shared/use-admin-query-Di3fLE8H.js +0 -1
- package/dist/packem_shared/use-async-submit-DLNCqLFq.js +0 -1
- package/dist/standalone/chunk-2SHUN7KF.js +0 -1
- package/dist/standalone/chunk-2Y36BVVM.js +0 -4
- package/dist/standalone/chunk-3EXLKL6V.js +0 -1
- package/dist/standalone/chunk-3KAERFMC.js +0 -1
- package/dist/standalone/chunk-4XDMVUS5.js +0 -1
- package/dist/standalone/chunk-5RF4QDDA.js +0 -6
- package/dist/standalone/chunk-5YWJNF5X.js +0 -1
- package/dist/standalone/chunk-66YJ3IOZ.js +0 -1
- package/dist/standalone/chunk-6KHEBRBB.js +0 -1
- package/dist/standalone/chunk-6WCIFGDW.js +0 -1
- package/dist/standalone/chunk-7RG3AKPY.js +0 -1
- package/dist/standalone/chunk-A2FPLOMJ.js +0 -1
- package/dist/standalone/chunk-AADXUXZO.js +0 -1
- package/dist/standalone/chunk-ARI4JTIH.js +0 -1
- package/dist/standalone/chunk-BDO4J5AP.js +0 -1
- package/dist/standalone/chunk-BMQJ4CAO.js +0 -1
- package/dist/standalone/chunk-CMUP7HPS.js +0 -1
- package/dist/standalone/chunk-CP7AUUOU.js +0 -1
- package/dist/standalone/chunk-DX3RMFQU.js +0 -8
- package/dist/standalone/chunk-E2CJUP53.js +0 -13
- package/dist/standalone/chunk-FLYO3XY5.js +0 -1
- package/dist/standalone/chunk-FWCKM2CU.js +0 -1
- package/dist/standalone/chunk-GITJXQOS.js +0 -4
- package/dist/standalone/chunk-GP6IRITM.js +0 -1
- package/dist/standalone/chunk-GXU3ATKS.js +0 -1
- package/dist/standalone/chunk-H5Y5NQPL.js +0 -1
- package/dist/standalone/chunk-HALNNKTC.js +0 -1
- package/dist/standalone/chunk-HK4OVYG3.js +0 -1
- package/dist/standalone/chunk-HQEMYD2K.js +0 -1
- package/dist/standalone/chunk-I4WGRDL2.js +0 -1
- package/dist/standalone/chunk-ISZSYNTI.js +0 -4
- package/dist/standalone/chunk-JWG3VRGB.js +0 -1
- package/dist/standalone/chunk-KDYNM3GV.js +0 -1
- package/dist/standalone/chunk-KP6JQSH2.js +0 -4
- package/dist/standalone/chunk-LLXFYRGQ.js +0 -1
- package/dist/standalone/chunk-LU3GW7HI.js +0 -1
- package/dist/standalone/chunk-M536Y2KX.js +0 -1
- package/dist/standalone/chunk-MVGE3JJN.js +0 -1
- package/dist/standalone/chunk-MXSHWB3M.js +0 -1
- package/dist/standalone/chunk-NL2DZKFI.js +0 -1
- package/dist/standalone/chunk-OGVCXKRL.js +0 -2
- package/dist/standalone/chunk-OPC233PZ.js +0 -1
- package/dist/standalone/chunk-P4CWOYFL.js +0 -1
- package/dist/standalone/chunk-PUY3YDXI.js +0 -1
- package/dist/standalone/chunk-QZMR6MUG.js +0 -1
- package/dist/standalone/chunk-WCWYSOCN.js +0 -62
- package/dist/standalone/chunk-WEO3YVP6.js +0 -3
- package/dist/standalone/chunk-X2FQ6B5V.js +0 -1
- package/dist/standalone/chunk-XIZNYKOD.js +0 -1
- package/dist/standalone/chunk-XS6Q6GGV.js +0 -1
- package/dist/standalone/chunk-Y3CQDULJ.js +0 -1
- package/dist/standalone/chunk-Z2JPEI2V.js +0 -1
- /package/dist/standalone/{chunk-4CGALXS3.js → chunk-OG4N2XHD.js} +0 -0
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import{a as je}from"./chunk-V53KNYRN.js";import{a as be}from"./chunk-5Y3QLNWX.js";import{a as Z}from"./chunk-HPFLBYRI.js";import{d as we,f as $e,g as Oe,k as ie}from"./chunk-QBWRC5YX.js";import{a as Ce}from"./chunk-LFXFP4IF.js";import"./chunk-GRL5MG3Z.js";import"./chunk-7T7UOTYK.js";import{R as Se}from"./chunk-CFPZYHPY.js";import"./chunk-7QIFDWQV.js";import{c as F}from"./chunk-FXCBF4XT.js";import"./chunk-2OUPA2WJ.js";import{b as ke}from"./chunk-THIXMMZD.js";import"./chunk-6ST5ECQA.js";import{a as _e}from"./chunk-AADXUXZO.js";import{f as G}from"./chunk-EN2QAEO4.js";import"./chunk-XBDKZZ67.js";import{a as U}from"./chunk-XQCVZAGU.js";import{d as M,e as Ie,f as le,g as de,h as ce,m as Pe,o as oe}from"./chunk-4CGALXS3.js";import{c as Ne}from"./chunk-AADILRJW.js";import{a as u,e as D,f as ge,g as ae,h as ne,j as xe}from"./chunk-3XIESWL4.js";var Qe=D(ae(),1),ye=D(ge(),1);var ee=D(ae(),1);var Y=D(ge(),1);var K=D(ne(),1);var Xe=le(_e.listTables),Ze=["react","client","cli"],Ye=!1,et={action:"action",mutation:"mutation",query:"query"},Ae=u(t=>{let e=t.indexOf(":");return e===-1?{file:"",fn:t}:{file:t.slice(0,e),fn:t.slice(e+1)}},"X"),Re=u(({file:t,fn:e,kind:a})=>`await client.${et[a]}(api.${t}.${e}, { /* args */ });`,"J"),tt=u(t=>{let e=`api.${t.file}.${t.fn}`;switch(t.kind){case"action":return Re(t);case"mutation":return`const ${t.fn} = useMutation(${e});`;default:return`const data = useQuery(${e}, { /* args */ });`}},"ce"),rt=u(({file:t,fn:e})=>`lunora run ${t}:${e} --args '{ }'`,"de"),at=u(t=>["// Read rows",`const rows = await ctx.db.query("${t}").collect();`,"","// Insert a row",`const id = await ctx.db.insert("${t}", { /* fields */ });`,"","// Generated types",`type Row = Doc<"${t}">;`,`type RowId = Id<"${t}">;`].join(`
|
|
2
|
-
`),"pe"),nt=u((t,e)=>{switch(t){case"cli":return rt(e);case"client":return Re(e);default:return tt(e)}},"fe"),Je=u(t=>{let e=(0,ee.c)(19),{code:a,label:r,testId:n}=t,s=M(),o;e[0]!==a?(o=u(()=>{oe(a)},"o"),e[0]=a,e[1]=o):o=e[1];let i=o,c;e[2]!==r?(c=(0,K.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:r}),e[2]=r,e[3]=c):c=e[3];let p=`${n}-copy`,l;e[4]!==s?(l=s("Copy"),e[4]=s,e[5]=l):l=e[5];let d;e[6]!==i||e[7]!==p||e[8]!==l?(d=(0,K.jsx)(F,{"data-testid":p,onClick:i,size:"xs",type:"button",variant:"ghost",children:l}),e[6]=i,e[7]=p,e[8]=l,e[9]=d):d=e[9];let f;e[10]!==c||e[11]!==d?(f=(0,K.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[c,d]}),e[10]=c,e[11]=d,e[12]=f):f=e[12];let v;e[13]!==a||e[14]!==n?(v=(0,K.jsx)("pre",{className:"overflow-auto rounded-md border border-border bg-muted/50 p-3 font-mono text-xs","data-testid":n,children:a}),e[13]=a,e[14]=n,e[15]=v):v=e[15];let N;return e[16]!==f||e[17]!==v?(N=(0,K.jsxs)("div",{className:"flex flex-col gap-1.5",children:[f,v]}),e[16]=f,e[17]=v,e[18]=N):N=e[18],N},"W"),ot=u(t=>{let e=(0,ee.c)(50),{file:a,fn:r,kind:n}=t,s=M(),[o,i]=(0,Y.useState)("react"),c,p,l;if(e[0]!==a||e[1]!==r||e[2]!==n||e[3]!==s||e[4]!==o){let I={file:a,fn:r,kind:n},O;e[8]!==s?(O=s("CLI"),e[8]=s,e[9]=O):O=e[9];let j;e[10]!==s?(j=s("Client"),e[10]=s,e[11]=j):j=e[11];let T;e[12]!==s?(T=s("React"),e[12]=s,e[13]=T):T=e[13];let J;e[14]!==O||e[15]!==j||e[16]!==T?(J={cli:O,client:j,react:T},e[14]=O,e[15]=j,e[16]=T,e[17]=J):J=e[17],l=J;let A;e[18]===Symbol.for("react.memo_cache_sentinel")?(A=u(E=>{i(E.currentTarget.dataset.tab)},"q"),e[18]=A):A=e[18],c=A,p=nt(o,I),e[0]=a,e[1]=r,e[2]=n,e[3]=s,e[4]=o,e[5]=c,e[6]=p,e[7]=l}else c=e[5],p=e[6],l=e[7];let d=p,f=n==="action"&&o==="react"&&!Ye,v=`api.${a}.${r}`,N;e[19]!==v?(N=(0,K.jsx)("h2",{className:"font-mono text-sm font-semibold text-foreground","data-testid":"api-fn-title",children:v}),e[19]=v,e[20]=N):N=e[20];let k;e[21]!==n||e[22]!==s?(k=s("Call this {kind} from your app.",{kind:n}),e[21]=n,e[22]=s,e[23]=k):k=e[23];let h;e[24]!==k?(h=(0,K.jsx)("p",{className:"text-xs text-muted-foreground",children:k}),e[24]=k,e[25]=h):h=e[25];let g;e[26]!==N||e[27]!==h?(g=(0,K.jsxs)("div",{children:[N,h]}),e[26]=N,e[27]=h,e[28]=g):g=e[28];let b;e[29]!==s?(b=s("Snippet flavour"),e[29]=s,e[30]=b):b=e[30];let x;e[31]!==c||e[32]!==o||e[33]!==l?(x=Ze.map(I=>(0,K.jsx)(F,{"aria-selected":o===I,"data-tab":I,"data-testid":`api-tab-${I}`,onClick:c,role:"tab",size:"xs",type:"button",variant:o===I?"default":"outline",children:l[I]},I)),e[31]=c,e[32]=o,e[33]=l,e[34]=x):x=e[34];let y;e[35]!==b||e[36]!==x?(y=(0,K.jsx)("div",{"aria-label":b,className:"flex gap-1.5","data-testid":"api-tabs",role:"tablist",children:x}),e[35]=b,e[36]=x,e[37]=y):y=e[37];let w=l[o],_=`api-snippet-${o}`,S;e[38]!==d||e[39]!==w||e[40]!==_?(S=(0,K.jsx)(Je,{code:d,label:w,testId:_}),e[38]=d,e[39]=w,e[40]=_,e[41]=S):S=e[41];let $;e[42]!==f||e[43]!==s?($=f&&(0,K.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"api-action-note",children:s("Actions have no React hook \u2014 call them through the client.")}),e[42]=f,e[43]=s,e[44]=$):$=e[44];let P;return e[45]!==S||e[46]!==$||e[47]!==g||e[48]!==y?(P=(0,K.jsxs)("div",{className:"flex flex-col gap-3","data-testid":"api-fn-doc",children:[g,y,S,$]}),e[45]=S,e[46]=$,e[47]=g,e[48]=y,e[49]=P):P=e[49],P},"ue"),st=u(t=>{let e=(0,ee.c)(19),{name:a}=t,r=M(),n;e[0]!==a?(n=at(a),e[0]=a,e[1]=n):n=e[1];let s=n,o;e[2]!==a?(o=(0,K.jsx)("h2",{className:"font-mono text-sm font-semibold text-foreground","data-testid":"api-table-title",children:a}),e[2]=a,e[3]=o):o=e[3];let i;e[4]!==r?(i=r("Read and write this table through the typed data model."),e[4]=r,e[5]=i):i=e[5];let c;e[6]!==i?(c=(0,K.jsx)("p",{className:"text-xs text-muted-foreground",children:i}),e[6]=i,e[7]=c):c=e[7];let p;e[8]!==o||e[9]!==c?(p=(0,K.jsxs)("div",{children:[o,c]}),e[8]=o,e[9]=c,e[10]=p):p=e[10];let l;e[11]!==r?(l=r("Data model"),e[11]=r,e[12]=l):l=e[12];let d;e[13]!==s||e[14]!==l?(d=(0,K.jsx)(Je,{code:s,label:l,testId:"api-snippet-table"}),e[13]=s,e[14]=l,e[15]=d):d=e[15];let f;return e[16]!==p||e[17]!==d?(f=(0,K.jsxs)("div",{className:"flex flex-col gap-3","data-testid":"api-table-doc",children:[p,d]}),e[16]=p,e[17]=d,e[18]=f):f=e[18],f},"me"),Te=u(t=>{let e=(0,ee.c)(8),{active:a,label:r,onSelect:n,testId:s,value:o}=t,i;e[0]!==n||e[1]!==o?(i=u(()=>{n(o)},"f"),e[0]=n,e[1]=o,e[2]=i):i=e[2];let c=i,p=a?"page":void 0,l;return e[3]!==r||e[4]!==c||e[5]!==p||e[6]!==s?(l=(0,K.jsx)("button",{"aria-current":p,className:"w-full truncate rounded-md px-2 py-1 text-start font-mono text-xs text-muted-foreground outline-none transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent aria-[current=page]:bg-sidebar-accent aria-[current=page]:font-medium aria-[current=page]:text-foreground","data-testid":s,onClick:c,type:"button",children:r}),e[3]=r,e[4]=c,e[5]=p,e[6]=s,e[7]=l):l=e[7],l},"Y"),Ee=u(t=>{let e=(0,ee.c)(67),{functions:a,initialShardKey:r}=t,n=M(),s=G(),[o,i]=(0,Y.useState)(null),[c,p]=(0,Y.useState)(null),l,d;e[0]!==s||e[1]!==r?(l=u(()=>{let R=!1;return s.query(Xe,{},de(r??"")).then(q=>(R||i(q),q)).catch(()=>{R||i([])}),()=>{R=!0}},"i"),d=[s,r],e[0]=s,e[1]=r,e[2]=l,e[3]=d):(l=e[2],d=e[3]),(0,Y.useEffect)(l,d);let f;e[4]!==a?(f=a??[],e[4]=a,e[5]=f):f=e[5];let v=f,N;if(e[6]!==v){let R=new Map;for(let q of v){let{file:H,fn:X}=Ae(q.path),se=R.get(H)??[];se.push({fn:X,kind:q.kind,path:q.path}),R.set(H,se)}N=[...R.entries()].map(lt).toSorted(dt),e[6]=v,e[7]=N}else N=e[7];let k=N,h,g,b,x,y,w,_,S,$,P;if(e[8]!==v||e[9]!==k||e[10]!==c||e[11]!==n||e[12]!==o){let R=(o??[]).map(ct).toSorted(pt),q;e[23]===Symbol.for("react.memo_cache_sentinel")?(q=u(z=>{p({kind:"fn",path:z})},"E"),e[23]=q):q=e[23];let H=q,X;e[24]===Symbol.for("react.memo_cache_sentinel")?(X=u(z=>{p({kind:"table",name:z})},"L"),e[24]=X):X=e[24];let se=X;if(g=c?.kind==="fn"?v.find(z=>z.path===c.path):void 0,h=v.length>0||R.length>0,b=g===void 0?void 0:Ae(g.path),x="grid min-h-0 gap-6 md:grid-cols-[16rem_minmax(0,1fr)]",y="lunora-api-docs",e[25]!==n?(w=n("API resources"),e[25]=n,e[26]=w):w=e[26],_="flex flex-col gap-4 overflow-y-auto",S="api-rail",e[27]!==k||e[28]!==c||e[29]!==n){let z;e[31]!==c||e[32]!==n?(z=u(he=>(0,K.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,K.jsx)("span",{className:"px-2 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:he.file||n("(root)")}),he.items.map(re=>(0,K.jsx)(Te,{active:c?.kind==="fn"&&c.path===re.path,label:re.fn,onSelect:H,testId:`api-rail-fn-${re.path}`,value:re.path},re.path))]},he.file),"b"),e[31]=c,e[32]=n,e[33]=z):z=e[33],$=k.map(z),e[27]=k,e[28]=c,e[29]=n,e[30]=$}else $=e[30];P=R.length>0&&(0,K.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,K.jsx)("span",{className:"px-2 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:n("Tables")}),R.map(z=>(0,K.jsx)(Te,{active:c?.kind==="table"&&c.name===z,label:z,onSelect:se,testId:`api-rail-table-${z}`,value:z},z))]}),e[8]=v,e[9]=k,e[10]=c,e[11]=n,e[12]=o,e[13]=h,e[14]=g,e[15]=b,e[16]=x,e[17]=y,e[18]=w,e[19]=_,e[20]=S,e[21]=$,e[22]=P}else h=e[13],g=e[14],b=e[15],x=e[16],y=e[17],w=e[18],_=e[19],S=e[20],$=e[21],P=e[22];let I;e[34]!==h||e[35]!==n?(I=!h&&(0,K.jsx)("p",{className:"px-2 text-xs text-muted-foreground","data-testid":"api-rail-empty",children:n("No functions or tables to document yet.")}),e[34]=h,e[35]=n,e[36]=I):I=e[36];let O;e[37]!==I||e[38]!==w||e[39]!==_||e[40]!==S||e[41]!==$||e[42]!==P?(O=(0,K.jsxs)("nav",{"aria-label":w,className:_,"data-testid":S,children:[$,P,I]}),e[37]=I,e[38]=w,e[39]=_,e[40]=S,e[41]=$,e[42]=P,e[43]=O):O=e[43];let j;e[44]!==c||e[45]!==n?(j=c===null&&(0,K.jsx)(U,{description:n("Select a function or table to see how to call it from your app."),testId:"api-empty",title:n("API usage snippets")}),e[44]=c,e[45]=n,e[46]=j):j=e[46];let T;e[47]!==c?.kind||e[48]!==g||e[49]!==b?(T=c?.kind==="fn"&&g!==void 0&&b!==void 0&&(0,K.jsx)(ot,{file:b.file,fn:b.fn,kind:g.kind},g.path),e[47]=c?.kind,e[48]=g,e[49]=b,e[50]=T):T=e[50];let J;e[51]!==c?.kind||e[52]!==g||e[53]!==n?(J=c?.kind==="fn"&&g===void 0&&(0,K.jsx)(U,{testId:"api-empty",title:n("API usage snippets")}),e[51]=c?.kind,e[52]=g,e[53]=n,e[54]=J):J=e[54];let A;e[55]!==c?(A=c?.kind==="table"&&(0,K.jsx)(st,{name:c.name}),e[55]=c,e[56]=A):A=e[56];let E;e[57]!==j||e[58]!==T||e[59]!==J||e[60]!==A?(E=(0,K.jsxs)("div",{className:"min-w-0",children:[j,T,J,A]}),e[57]=j,e[58]=T,e[59]=J,e[60]=A,e[61]=E):E=e[61];let C;return e[62]!==x||e[63]!==y||e[64]!==O||e[65]!==E?(C=(0,K.jsxs)("div",{className:x,"data-testid":y,children:[O,E]}),e[62]=x,e[63]=y,e[64]=O,e[65]=E,e[66]=C):C=e[66],C},"Re");function it(t,e){return t.fn.localeCompare(e.fn)}u(it,"he");function lt(t){let[e,a]=t;return{file:e,items:a.toSorted(it)}}u(lt,"xe");function dt(t,e){return t.file.localeCompare(e.file)}u(dt,"be");function ct(t){return t.name}u(ct,"ge");function pt(t,e){return t.localeCompare(e)}u(pt,"ve");var He=D(ae(),1);var W=D(ae(),1),L=D(ge(),1);var m=D(ne(),1);var ue=u(function(t,e,a){let r=(0,W.c)(10),n;r[0]===Symbol.for("react.memo_cache_sentinel")?(n={kind:"loading"},r[0]=n):n=r[0];let[s,o]=(0,L.useState)(n),i,c;r[1]!==a||r[2]!==e||r[3]!==t?(i=u(()=>{if(t!==void 0)return;let l=!1;return e().then(d=>(l||o(a(d)),d)).catch(d=>{l||o({kind:"error",message:ce(d)})}),()=>{l=!0}},"c"),c=[a,e,t],r[1]=a,r[2]=e,r[3]=t,r[4]=i,r[5]=c):(i=r[4],c=r[5]),(0,L.useEffect)(i,c);let p;return r[6]!==a||r[7]!==s||r[8]!==t?(p=t===void 0?s:a(t),r[6]=a,r[7]=s,r[8]=t,r[9]=p):p=r[9],p},"bt"),mt=u(t=>typeof t=="number"?"number":typeof t=="boolean"?"boolean":"string","$e"),Me=u(t=>{if(t.enum!==void 0&&t.enum.length>0)return t.enum;if(t.anyOf!==void 0&&t.anyOf.length>0&&t.anyOf.every(e=>e.const!==void 0))return t.anyOf.map(e=>e.const)},"ee"),me=u(t=>t===void 0?"any":t.const!==void 0?JSON.stringify(t.const):t.enum!==void 0&&t.enum.length>0?t.enum.map(e=>JSON.stringify(e)).join(" | "):t.anyOf!==void 0&&t.anyOf.length>0?t.anyOf.map(e=>me(e)).join(" | "):t.type==="array"?`array<${me(t.items)}>`:t.type??"any","F"),ut=u(t=>{let e=Me(t);return e!==void 0?t.type??mt(e[0]):me(t)},"we"),ft=u(t=>{let e=Me(t);return e===void 0?void 0:e.map(a=>JSON.stringify(a)).join(" | ")},"Se"),ht=u(t=>{let e=[];t.minimum!==void 0?e.push(`${String(t.minimum)} \u2264`):t.exclusiveMinimum!==void 0&&e.push(`${String(t.exclusiveMinimum)} <`);let a=e.length>0;e.push("value"),t.maximum!==void 0?e.push(`\u2264 ${String(t.maximum)}`):t.exclusiveMaximum!==void 0&&e.push(`< ${String(t.exclusiveMaximum)}`);let r=e.length>(a?2:1);return a||r?e.join(" "):void 0},"Oe"),gt=u(t=>{if(t.type==="object"&&t.properties!==void 0)return t;if(t.type==="array"&&t.items?.type==="object"&&t.items.properties!==void 0)return t.items},"je"),te=u(t=>{if(t===void 0)return null;if(t.const!==void 0)return t.const;if(t.enum!==void 0&&t.enum.length>0)return t.enum[0];if(t.anyOf!==void 0&&t.anyOf.length>0)return te(t.anyOf[0]);switch(t.type){case"array":return[];case"boolean":return!1;case"number":return 0;case"object":{let e={};for(let[a,r]of Object.entries(t.properties??{}))e[a]=te(r);return e}case"string":return"";default:return null}},"B"),pe=u(t=>{let e=(0,W.c)(7),{label:a,value:r}=t,n;e[0]!==a?(n=(0,m.jsx)("span",{className:"text-muted-foreground",children:a}),e[0]=a,e[1]=n):n=e[1];let s;e[2]!==r?(s=(0,m.jsx)("span",{className:"text-foreground",children:r}),e[2]=r,e[3]=s):s=e[3];let o;return e[4]!==n||e[5]!==s?(o=(0,m.jsxs)("span",{className:"inline-flex items-center gap-1 rounded border border-border px-1.5 py-0.5 font-mono text-[10px]",children:[n,s]}),e[4]=n,e[5]=s,e[6]=o):o=e[6],o},"z"),xt=u(t=>{let e=(0,W.c)(40),{name:a,required:r,schema:n}=t,s=M(),o;e[0]!==n?(o=ht(n),e[0]=n,e[1]=o):o=e[1];let i=o,c;e[2]!==n?(c=ft(n),e[2]=n,e[3]=c):c=e[3];let p=c,l=n["x-lunora-table"],d=n.format!==void 0||i!==void 0||p!==void 0||l!==void 0,f;e[4]!==n?(f=gt(n),e[4]=n,e[5]=f):f=e[5];let v=f,N=r?"*":"?",k;e[6]!==N?(k=(0,m.jsx)("span",{className:"text-muted-foreground",children:N}),e[6]=N,e[7]=k):k=e[7];let h;e[8]!==a||e[9]!==k?(h=(0,m.jsxs)("span",{className:"font-mono text-foreground",children:[a,k]}),e[8]=a,e[9]=k,e[10]=h):h=e[10];let g;e[11]!==n?(g=ut(n),e[11]=n,e[12]=g):g=e[12];let b;e[13]!==g?(b=(0,m.jsx)("span",{className:"font-mono text-muted-foreground",children:g}),e[13]=g,e[14]=b):b=e[14];let x;e[15]!==h||e[16]!==b?(x=(0,m.jsxs)("div",{className:"flex items-baseline gap-2",children:[h,b]}),e[15]=h,e[16]=b,e[17]=x):x=e[17];let y;e[18]!==n.description?(y=n.description!==void 0&&(0,m.jsx)("p",{className:"max-w-prose text-muted-foreground",children:n.description}),e[18]=n.description,e[19]=y):y=e[19];let w;e[20]!==d||e[21]!==i||e[22]!==l||e[23]!==n.format||e[24]!==s||e[25]!==p?(w=d&&(0,m.jsxs)("div",{className:"flex flex-wrap gap-1",children:[n.format!==void 0&&(0,m.jsx)(pe,{label:s("Format"),value:n.format}),i!==void 0&&(0,m.jsx)(pe,{label:s("Range"),value:i}),p!==void 0&&(0,m.jsx)(pe,{label:s("Value in"),value:p}),l!==void 0&&(0,m.jsx)(pe,{label:s("relation"),value:l})]}),e[20]=d,e[21]=i,e[22]=l,e[23]=n.format,e[24]=s,e[25]=p,e[26]=w):w=e[26];let _;e[27]!==y||e[28]!==w||e[29]!==x?(_=(0,m.jsxs)("div",{className:"flex flex-col gap-1 py-2",children:[x,y,w]}),e[27]=y,e[28]=w,e[29]=x,e[30]=_):_=e[30];let S=_;if(v===void 0){let O;return e[31]!==S?(O=(0,m.jsx)("div",{className:"border-b border-border/50 last:border-b-0",children:S}),e[31]=S,e[32]=O):O=e[32],O}let $;e[33]!==S?($=(0,m.jsx)("summary",{className:"cursor-pointer marker:text-muted-foreground",children:S}),e[33]=S,e[34]=$):$=e[34];let P;e[35]!==v?(P=(0,m.jsx)("div",{className:"mb-2 ml-2 border-l border-border pl-3",children:(0,m.jsx)(Le,{schema:v})}),e[35]=v,e[36]=P):P=e[36];let I;return e[37]!==$||e[38]!==P?(I=(0,m.jsxs)("details",{className:"border-b border-border/50 last:border-b-0",children:[$,P]}),e[37]=$,e[38]=P,e[39]=I):I=e[39],I},"Pe"),Le=u(t=>{let e=(0,W.c)(7),{schema:a}=t,r;e[0]!==a.required?(r=new Set(a.required),e[0]=a.required,e[1]=r):r=e[1];let n=r,s;e[2]!==a.properties?(s=Object.entries(a.properties??{}),e[2]=a.properties,e[3]=s):s=e[3];let o=s,i;return e[4]!==n||e[5]!==o?(i=(0,m.jsx)("div",{className:"flex flex-col",children:o.map(c=>{let[p,l]=c;return(0,m.jsx)(xt,{name:p,required:n.has(p),schema:l},p)})}),e[4]=n,e[5]=o,e[6]=i):i=e[6],i},"te"),Ke=u(t=>{let e=(0,W.c)(10),{schema:a,testId:r}=t;if(a?.type!=="object"||Object.keys(a.properties??{}).length===0){let o;e[0]!==a?(o=me(a),e[0]=a,e[1]=o):o=e[1];let i;return e[2]!==o||e[3]!==r?(i=(0,m.jsx)("p",{className:"font-mono text-xs text-muted-foreground","data-testid":r,children:o}),e[2]=o,e[3]=r,e[4]=i):i=e[4],i}let n;e[5]!==a?(n=(0,m.jsx)(Le,{schema:a}),e[5]=a,e[6]=n):n=e[6];let s;return e[7]!==n||e[8]!==r?(s=(0,m.jsx)("div",{className:"text-xs","data-testid":r,children:n}),e[7]=n,e[8]=r,e[9]=s):s=e[9],s},"Q"),bt=["curl","javascript","lunora"],vt={lunora:"Lunora",curl:"cURL",javascript:"JavaScript"},yt=u(t=>`api.${t.replaceAll(/[/:]/g,".")}`,"Te"),Nt=u(t=>{let e=te(t.argsSchema)??{};return t.functionPath===void 0?e:{args:e,functionPath:t.functionPath}},"Ie"),kt=u((t,e,a)=>{let r=`${a}${e.httpPath}`,n=JSON.stringify(Nt(e),void 0,2),s=JSON.stringify(te(e.argsSchema)??{},void 0,2);switch(t){case"curl":{let o=e.method!=="GET"&&e.method!=="HEAD",i=[`curl -X ${e.method} ${JSON.stringify(r)}`];return o&&i.push(' -H "Content-Type: application/json"',` -d '${n}'`),i.join(` \\
|
|
3
|
-
`)}case"lunora":return e.functionPath===void 0?`await fetch(${JSON.stringify(e.httpPath)}, { method: ${JSON.stringify(e.method)} });`:`import { useLunora } from "@lunora/react";
|
|
4
|
-
import { api } from "./_generated/api";
|
|
5
|
-
|
|
6
|
-
const client = useLunora();
|
|
7
|
-
await client.${e.kind??"query"}(${yt(e.functionPath)}, ${s});`;default:{let o=e.method!=="GET"&&e.method!=="HEAD"?`{
|
|
8
|
-
method: ${JSON.stringify(e.method)},
|
|
9
|
-
headers: { "Content-Type": "application/json" },
|
|
10
|
-
body: JSON.stringify(${n}),
|
|
11
|
-
}`:`{ method: ${JSON.stringify(e.method)} }`;return`const response = await fetch(${JSON.stringify(r)}, ${o});
|
|
12
|
-
const data = await response.json();`}}},"Je"),St=u(t=>{let e=(0,W.c)(24),{operation:a,server:r}=t,n=M(),[s,o]=(0,L.useState)("curl"),i;e[0]!==a||e[1]!==s||e[2]!==r?(i=kt(s,a,r),e[0]=a,e[1]=s,e[2]=r,e[3]=i):i=e[3];let c=i,p;e[4]!==c?(p=u(()=>{oe(c)},"d"),e[4]=c,e[5]=p):p=e[5];let l=p,d;e[6]===Symbol.for("react.memo_cache_sentinel")?(d=u(y=>{o(y.currentTarget.dataset.sample)},"i"),e[6]=d):d=e[6];let f=d,v;e[7]!==s?(v=bt.map(y=>(0,m.jsx)("button",{"aria-selected":s===y,className:"rounded px-2 py-0.5 text-xs text-muted-foreground transition-colors hover:text-foreground aria-selected:bg-muted aria-selected:font-medium aria-selected:text-foreground","data-sample":y,"data-testid":`api-sample-${y}`,onClick:f,role:"tab",type:"button",children:vt[y]},y)),e[7]=s,e[8]=v):v=e[8];let N;e[9]!==v?(N=(0,m.jsx)("div",{className:"flex gap-1",role:"tablist",children:v}),e[9]=v,e[10]=N):N=e[10];let k;e[11]!==n?(k=n("Copy"),e[11]=n,e[12]=k):k=e[12];let h;e[13]!==l||e[14]!==k?(h=(0,m.jsx)(F,{"data-testid":"api-sample-copy",onClick:l,size:"xs",type:"button",variant:"ghost",children:k}),e[13]=l,e[14]=k,e[15]=h):h=e[15];let g;e[16]!==N||e[17]!==h?(g=(0,m.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-border px-3 py-2",children:[N,h]}),e[16]=N,e[17]=h,e[18]=g):g=e[18];let b;e[19]!==c?(b=(0,m.jsx)("pre",{className:"overflow-auto px-3 pb-3 font-mono text-xs","data-testid":"api-sample-source",children:c}),e[19]=c,e[20]=b):b=e[20];let x;return e[21]!==g||e[22]!==b?(x=(0,m.jsxs)("div",{className:"flex flex-col gap-2 rounded-xl border border-border bg-card","data-testid":"api-code-samples",children:[g,b]}),e[21]=g,e[22]=b,e[23]=x):x=e[23],x},"Ee"),wt={blue:"text-info",emerald:"text-success",neutral:"text-muted-foreground",orange:"text-warning",red:"text-destructive",violet:"text-royal-amethyst"},$t=u(t=>{switch(t.toUpperCase()){case"DELETE":return"red";case"GET":return"emerald";case"PATCH":return"orange";case"POST":return"blue";case"PUT":return"orange";default:return"neutral"}},"Me"),Ot=u(t=>{switch(t){case"action":return"violet";case"mutation":return"orange";case"query":return"emerald";default:return"neutral"}},"Ke"),ve=u(t=>{let e=(0,W.c)(7),{kind:a,method:r,testId:n}=t,s;e[0]!==a||e[1]!==r?(s=a??r.toUpperCase(),e[0]=a,e[1]=r,e[2]=s):s=e[2];let o=s,i=a===void 0?$t(r):Ot(a),c=`${wt[i]} font-mono text-[10px] tracking-wide uppercase`,p;return e[3]!==o||e[4]!==c||e[5]!==n?(p=(0,m.jsx)(ke,{className:c,"data-testid":n,variant:"ghost",children:o}),e[3]=o,e[4]=c,e[5]=n,e[6]=p):p=e[6],p},"G"),ze=u(t=>t.startsWith("2")?"text-emerald-600 dark:text-emerald-400":t==="default"||t.startsWith("4")||t.startsWith("5")?"text-red-600 dark:text-red-400":"text-muted-foreground","re"),We=u(t=>t.startsWith("2")?"bg-emerald-500":t==="default"||t.startsWith("4")||t.startsWith("5")?"bg-red-500":"bg-muted-foreground","oe"),It=u(t=>JSON.stringify(te(t.argsSchema)??{},void 0,2),"Le"),De=(0,L.createContext)(null),Be=u(()=>{let t=(0,L.use)(De);if(t===null)throw new Ne("INTERNAL","useOperationRun must be used within an OperationRunProvider");return t},"ne"),Pt=u(({children:t,operation:e})=>{let a=M(),r=G(),[n,s]=(0,L.useState)(()=>It(e)),[o,i]=(0,L.useState)(""),[c,p]=(0,L.useState)("idle"),[l,d]=(0,L.useState)(void 0),[f,v]=(0,L.useState)(null),[N,k]=(0,L.useState)(null),h=u(async()=>{let g;try{g=n.trim()===""?{}:JSON.parse(n)}catch(x){p("error"),d(void 0),k(null),v(a("Invalid JSON args: {message}",{message:ce(x)}));return}p("running"),v(null);let b=performance.now();try{let x;if(e.functionPath===void 0){let y=e.method!=="GET"&&e.method!=="HEAD",w=await(await fetch(e.httpPath,{body:y?JSON.stringify(g):void 0,headers:y?{"content-type":"application/json"}:void 0,method:e.method})).text();try{x=JSON.parse(w)}catch{x=w}}else x=await Ie(r,e.kind,le(e.functionPath),g,de(o));d(x),k(Math.round(performance.now()-b)),p("success")}catch(x){d(void 0),k(Math.round(performance.now()-b)),v(ce(x)),p("error")}},"m");return(0,m.jsx)(De,{value:{argsText:n,durationMs:N,error:f,operation:e,response:l,send:u(()=>{Pe(h())},"send"),setArgsText:s,setShardKey:i,shardKey:o,status:c},children:t})},"Re"),_t=u(()=>{let t=(0,W.c)(48),e=M(),{argsText:a,operation:r,send:n,setArgsText:s,setShardKey:o,shardKey:i,status:c}=Be(),p;t[0]!==s?(p=u(A=>{s(A.target.value)},"d"),t[0]=s,t[1]=p):p=t[1];let l=p,d;t[2]!==n?(d=u(A=>{A.key==="Enter"&&(A.metaKey||A.ctrlKey)&&(A.preventDefault(),n())},"i"),t[2]=n,t[3]=d):d=t[3];let f=d,v=c==="running",N;t[4]!==r.kind||t[5]!==r.method?(N=(0,m.jsx)(ve,{kind:r.kind,method:r.method,testId:"api-try-method"}),t[4]=r.kind,t[5]=r.method,t[6]=N):N=t[6];let k=r.functionPath??r.httpPath,h;t[7]!==k?(h=(0,m.jsx)("code",{className:"min-w-0 flex-1 truncate font-mono text-xs text-foreground",children:k}),t[7]=k,t[8]=h):h=t[8];let g=v?"animate-pulse":void 0,b;t[9]!==g?(b=(0,m.jsx)(ie,{className:g,icon:Oe,strokeWidth:2}),t[9]=g,t[10]=b):b=t[10];let x;t[11]!==v||t[12]!==e?(x=e(v?"Sending\u2026":"Send"),t[11]=v,t[12]=e,t[13]=x):x=t[13];let y;t[14]!==v||t[15]!==n||t[16]!==b||t[17]!==x?(y=(0,m.jsxs)(F,{"data-testid":"api-try-send",disabled:v,onClick:n,size:"sm",type:"button",children:[b,x]}),t[14]=v,t[15]=n,t[16]=b,t[17]=x,t[18]=y):y=t[18];let w;t[19]!==N||t[20]!==h||t[21]!==y?(w=(0,m.jsxs)("div",{className:"flex items-center gap-2 border-b border-border bg-muted px-3 py-2",children:[N,h,y]}),t[19]=N,t[20]=h,t[21]=y,t[22]=w):w=t[22];let _;t[23]!==e?(_=e("Arguments (JSON)"),t[23]=e,t[24]=_):_=t[24];let S;t[25]!==_?(S=(0,m.jsx)(be,{htmlFor:"api-try-args",children:_}),t[25]=_,t[26]=S):S=t[26];let $;t[27]!==a?($=a.split(`
|
|
13
|
-
`),t[27]=a,t[28]=$):$=t[28];let P=Math.min(12,Math.max(3,$.length)),I;t[29]!==a||t[30]!==l||t[31]!==f||t[32]!==P?(I=(0,m.jsx)(je,{className:"font-mono text-xs","data-testid":"api-try-args",id:"api-try-args",onChange:l,onKeyDown:f,rows:P,spellCheck:!1,value:a}),t[29]=a,t[30]=l,t[31]=f,t[32]=P,t[33]=I):I=t[33];let O;t[34]!==S||t[35]!==I?(O=(0,m.jsxs)("div",{className:"flex flex-col gap-1.5",children:[S,I]}),t[34]=S,t[35]=I,t[36]=O):O=t[36];let j;t[37]!==r.functionPath||t[38]!==o||t[39]!==i||t[40]!==e?(j=r.functionPath!==void 0&&(0,m.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,m.jsx)(be,{htmlFor:"shard-input",children:e("Shard key (optional)")}),(0,m.jsx)(Ce,{id:"shard-input",onChange:o,testId:"shard-input",value:i})]}),t[37]=r.functionPath,t[38]=o,t[39]=i,t[40]=e,t[41]=j):j=t[41];let T;t[42]!==O||t[43]!==j?(T=(0,m.jsxs)("div",{className:"flex flex-col gap-3 p-3",children:[O,j]}),t[42]=O,t[43]=j,t[44]=T):T=t[44];let J;return t[45]!==T||t[46]!==w?(J=(0,m.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card","data-testid":"api-try-it",children:[w,T]}),t[45]=T,t[46]=w,t[47]=J):J=t[47],J},"qe"),Ct=u(t=>{let e=(0,W.c)(51),{operation:a}=t,r=M(),n=`api-operation-${a.operationId}`,s=a.key,o;e[0]!==a.kind||e[1]!==a.method?(o=(0,m.jsx)(ve,{kind:a.kind,method:a.method,testId:"api-operation-method"}),e[0]=a.kind,e[1]=a.method,e[2]=o):o=e[2];let i=a.functionPath??a.httpPath,c;e[3]!==i?(c=(0,m.jsx)("code",{className:"truncate font-mono text-xs text-muted-foreground",children:i}),e[3]=i,e[4]=c):c=e[4];let p;e[5]!==o||e[6]!==c?(p=(0,m.jsxs)("div",{className:"flex items-center gap-2",children:[o,c]}),e[5]=o,e[6]=c,e[7]=p):p=e[7];let l;e[8]!==a.title?(l=(0,m.jsx)("h1",{className:"text-lg font-semibold text-foreground","data-testid":"api-operation-title",children:a.title}),e[8]=a.title,e[9]=l):l=e[9];let d;e[10]!==a.description?(d=a.description!==void 0&&(0,m.jsx)("p",{className:"text-sm text-muted-foreground",children:a.description}),e[10]=a.description,e[11]=d):d=e[11];let f;e[12]!==p||e[13]!==l||e[14]!==d?(f=(0,m.jsxs)("header",{className:"sticky top-0 z-10 -mx-6 -mt-6 flex flex-col gap-2 border-b border-border bg-background px-6 pt-6 pb-3",children:[p,l,d]}),e[12]=p,e[13]=l,e[14]=d,e[15]=f):f=e[15];let v;e[16]!==r?(v=r("Try it"),e[16]=r,e[17]=v):v=e[17];let N;e[18]!==v?(N=(0,m.jsx)("h2",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:v}),e[18]=v,e[19]=N):N=e[19];let k;e[20]===Symbol.for("react.memo_cache_sentinel")?(k=(0,m.jsx)(_t,{}),e[20]=k):k=e[20];let h;e[21]!==N?(h=(0,m.jsxs)("section",{className:"flex flex-col gap-2",children:[N,k]}),e[21]=N,e[22]=h):h=e[22];let g;e[23]!==r?(g=r("Request arguments"),e[23]=r,e[24]=g):g=e[24];let b;e[25]!==g?(b=(0,m.jsx)("h2",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:g}),e[25]=g,e[26]=b):b=e[26];let x;e[27]!==a.argsSchema?(x=(0,m.jsx)(Ke,{schema:a.argsSchema,testId:"api-operation-args"}),e[27]=a.argsSchema,e[28]=x):x=e[28];let y;e[29]!==b||e[30]!==x?(y=(0,m.jsxs)("section",{className:"flex flex-col gap-2",children:[b,x]}),e[29]=b,e[30]=x,e[31]=y):y=e[31];let w;e[32]!==r?(w=r("Response body"),e[32]=r,e[33]=w):w=e[33];let _;e[34]!==w?(_=(0,m.jsx)("h2",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:w}),e[34]=w,e[35]=_):_=e[35];let S;if(e[36]!==a.responses||e[37]!==r){let I;e[39]!==r?(I=u(O=>(0,m.jsxs)("div",{className:"flex flex-col gap-1.5 rounded-xl border border-border bg-card p-3",children:[(0,m.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,m.jsxs)("span",{className:`inline-flex items-center gap-1.5 font-mono text-xs font-semibold ${ze(O.status)}`,children:[(0,m.jsx)("span",{className:`size-1.5 rounded-full ${We(O.status)}`}),O.status]}),O.schema!==void 0&&(0,m.jsx)("span",{className:"rounded border border-border px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground",children:r("application/json")})]}),O.description!==void 0&&(0,m.jsx)("p",{className:"text-xs text-muted-foreground",children:O.description}),O.schema!==void 0&&(0,m.jsx)(Ke,{schema:O.schema,testId:`api-response-${O.status}`})]},O.status),"P"),e[39]=r,e[40]=I):I=e[40],S=a.responses.map(I),e[36]=a.responses,e[37]=r,e[38]=S}else S=e[38];let $;e[41]!==_||e[42]!==S?($=(0,m.jsxs)("section",{className:"flex flex-col gap-3",children:[_,S]}),e[41]=_,e[42]=S,e[43]=$):$=e[43];let P;return e[44]!==a.key||e[45]!==n||e[46]!==h||e[47]!==y||e[48]!==$||e[49]!==f?(P=(0,m.jsxs)("div",{className:"flex flex-col gap-6 duration-200 animate-in fade-in-0 slide-in-from-bottom-1","data-testid":n,children:[f,h,y,$]},s),e[44]=a.key,e[45]=n,e[46]=h,e[47]=y,e[48]=$,e[49]=f,e[50]=P):P=e[50],P},"We"),jt={boolean:"text-royal-amethyst",key:"text-sky-sapphire",number:"text-warning",plain:"",string:"text-success"},At=/"(?:[^"\\]|\\.)*"|\b(?:true|false|null)\b|-?\d+(?:\.\d+)?/g,Tt=/^\s*:/,Rt=u((t,e,a)=>a.startsWith('"')?Tt.test(t.slice(e))?"key":"string":a==="true"||a==="false"||a==="null"?"boolean":"number","De"),Jt=u(t=>{let e=[],a=0;for(let r of t.matchAll(At)){let{index:n}=r,s=r[0],o=n+s.length;n>a&&e.push({kind:"plain",start:a,text:t.slice(a,n)}),e.push({kind:Rt(t,o,s),start:n,text:s}),a=o}return a<t.length&&e.push({kind:"plain",start:a,text:t.slice(a)}),e},"He"),Et=u(t=>{let e=(0,W.c)(4),{code:a}=t,r;e[0]!==a?(r=Jt(a).map(Kt),e[0]=a,e[1]=r):r=e[1];let n;return e[2]!==r?(n=(0,m.jsx)(m.Fragment,{children:r}),e[2]=r,e[3]=n):n=e[3],n},"Ue");function Kt(t){return(0,m.jsx)("span",{className:jt[t.kind],children:t.text},t.start)}u(Kt,"Ge");var qe="__live__",qt=u(t=>t.schema===void 0?"":JSON.stringify(te(t.schema),void 0,2),"Ve"),Mt=u((t,e,a)=>a?t??"":e===void 0?"":JSON.stringify(e,void 0,2),"Qe"),Lt=u(t=>{let e=(0,W.c)(18),{active:a,running:r,showError:n}=t,s=M();if(r){let d;e[0]!==s?(d=s("Sending\u2026"),e[0]=s,e[1]=d):d=e[1];let f;return e[2]!==d?(f=(0,m.jsx)("p",{className:"px-3 py-3 text-xs text-muted-foreground","data-testid":"api-response-running",children:d}),e[2]=d,e[3]=f):f=e[3],f}if(a===void 0||a.body===""){let d;e[4]!==a?.live||e[5]!==s?(d=a?.live===!0?s("Send a request to see the response."):s("No example for this response."),e[4]=a?.live,e[5]=s,e[6]=d):d=e[6];let f;return e[7]!==d?(f=(0,m.jsx)("p",{className:"px-3 py-3 text-xs text-muted-foreground","data-testid":"api-response-idle",children:d}),e[7]=d,e[8]=f):f=e[8],f}let o=n&&"text-destructive",i;e[9]!==o?(i=xe("max-h-[28rem] overflow-auto px-3 py-3 font-mono text-xs",o),e[9]=o,e[10]=i):i=e[10];let c=n?"api-response-error":"api-response-body",p;e[11]!==a.body||e[12]!==n?(p=n?a.body:(0,m.jsx)(Et,{code:a.body}),e[11]=a.body,e[12]=n,e[13]=p):p=e[13];let l;return e[14]!==i||e[15]!==c||e[16]!==p?(l=(0,m.jsx)("pre",{className:i,"data-testid":c,children:p}),e[14]=i,e[15]=c,e[16]=p,e[17]=l):l=e[17],l},"Xe"),zt=u(()=>{let t=(0,W.c)(67),e=M(),{durationMs:a,error:r,operation:n,response:s,status:o}=Be(),i=o==="running",c=o==="error",p=o==="success"||c,l;if(t[0]!==a||t[1]!==r||t[2]!==c||t[3]!==n.responses||t[4]!==p||t[5]!==s||t[6]!==e){e:{let E=n.responses.map(Wt);if(!p){l=E;break e}let C;t[8]!==r||t[9]!==c||t[10]!==s?(C=Mt(r,s,c),t[8]=r,t[9]=c,t[10]=s,t[11]=C):C=t[11];let R;t[12]!==e?(R=e("Live"),t[12]=e,t[13]=R):R=t[13];let q=c?"error":"200",H;t[14]!==a||t[15]!==C||t[16]!==R||t[17]!==q?(H={body:C,durationMs:a,id:qe,label:R,live:!0,status:q},t[14]=a,t[15]=C,t[16]=R,t[17]=q,t[18]=H):H=t[18],l=[H,...E]}t[0]=a,t[1]=r,t[2]=c,t[3]=n.responses,t[4]=p,t[5]=s,t[6]=e,t[7]=l}else l=t[7];let d=l,f;t[19]!==p||t[20]!==d?(f=p?qe:d.find(Dt)?.id??d[0]?.id??"",t[19]=p,t[20]=d,t[21]=f):f=t[21];let v=f,[N,k]=(0,L.useState)(null),h,g,b,x,y,w,_,S,$,P;if(t[22]!==v||t[23]!==N||t[24]!==e||t[25]!==d){h=d.find(q=>q.id===(N??v))??d[0];let E;t[36]===Symbol.for("react.memo_cache_sentinel")?(E=u(q=>{let{id:H}=q.currentTarget.dataset;H!==void 0&&k(H)},"T"),t[36]=E):E=t[36],b=E,g=u(()=>{h!==void 0&&oe(h.body)},"g");let C=h?.live===!0?h.durationMs:null;x=h?.live===!0&&h.status==="error",$="flex min-h-0 flex-col rounded-xl border border-border bg-card",P="api-response-panel",_="flex items-center justify-between gap-2 border-b border-border px-3 py-2";let R;t[37]!==e?(R=e("Response"),t[37]=e,t[38]=R):R=t[38],t[39]!==R?(S=(0,m.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:R}),t[39]=R,t[40]=S):S=t[40],y="flex items-center gap-2",w=C!==null&&(0,m.jsx)("span",{className:"font-mono text-[10px] text-muted-foreground",children:e("{ms} ms",{ms:C})}),t[22]=v,t[23]=N,t[24]=e,t[25]=d,t[26]=h,t[27]=g,t[28]=b,t[29]=x,t[30]=y,t[31]=w,t[32]=_,t[33]=S,t[34]=$,t[35]=P}else h=t[26],g=t[27],b=t[28],x=t[29],y=t[30],w=t[31],_=t[32],S=t[33],$=t[34],P=t[35];let I;t[41]!==h||t[42]!==g||t[43]!==e?(I=h!==void 0&&h.body!==""&&(0,m.jsx)(F,{"aria-label":e("Copy"),"data-testid":"api-response-copy",onClick:g,size:"icon-xs",type:"button",variant:"ghost",children:(0,m.jsx)(ie,{icon:we,strokeWidth:2})}),t[41]=h,t[42]=g,t[43]=e,t[44]=I):I=t[44];let O;t[45]!==y||t[46]!==w||t[47]!==I?(O=(0,m.jsxs)("div",{className:y,children:[w,I]}),t[45]=y,t[46]=w,t[47]=I,t[48]=O):O=t[48];let j;t[49]!==_||t[50]!==S||t[51]!==O?(j=(0,m.jsxs)("div",{className:_,children:[S,O]}),t[49]=_,t[50]=S,t[51]=O,t[52]=j):j=t[52];let T;t[53]!==h?.id||t[54]!==b||t[55]!==d?(T=d.length>0&&(0,m.jsx)("div",{className:"flex gap-1 overflow-x-auto border-b border-border px-2 py-1.5",role:"tablist",children:d.map(E=>{let C=E.id===h?.id;return(0,m.jsxs)("button",{"aria-selected":C,className:xe("inline-flex items-center gap-1.5 rounded px-2 py-0.5 font-mono text-xs transition-colors hover:text-foreground aria-selected:bg-muted aria-selected:font-medium",C?ze(E.status):"text-muted-foreground"),"data-id":E.id,"data-testid":E.live?"api-response-tab-live":`api-response-tab-${E.status}`,onClick:b,role:"tab",type:"button",children:[(0,m.jsx)("span",{className:`size-1.5 rounded-full ${We(E.status)}`}),E.label]},E.id)})}),t[53]=h?.id,t[54]=b,t[55]=d,t[56]=T):T=t[56];let J;t[57]!==h||t[58]!==i||t[59]!==x?(J=(0,m.jsx)(Lt,{active:h,running:i,showError:x}),t[57]=h,t[58]=i,t[59]=x,t[60]=J):J=t[60];let A;return t[61]!==j||t[62]!==T||t[63]!==J||t[64]!==$||t[65]!==P?(A=(0,m.jsxs)("div",{className:$,"data-testid":P,children:[j,T,J]}),t[61]=j,t[62]=T,t[63]=J,t[64]=$,t[65]=P,t[66]=A):A=t[66],A},"Ze");function Wt(t){return{body:qt(t),durationMs:null,id:t.status,label:t.status,live:!1,status:t.status}}u(Wt,"Ye");function Dt(t){return t.status.startsWith("2")}u(Dt,"et");var Bt=u((t,e)=>{let a=e.trim().toLowerCase();return a===""?t:t.map(r=>({...r,operations:r.operations.filter(n=>`${n.summary} ${n.operationId}`.toLowerCase().includes(a))})).filter(r=>r.operations.length>0)},"tt"),fe=u(t=>{let e=(0,W.c)(53),{model:a}=t,r=M(),n=a.groups[0]?.operations[0]?.key??"",[s,o]=(0,L.useState)(n),[i,c]=(0,L.useState)(""),p;e[0]!==n||e[1]!==a.operationByKey||e[2]!==s?(p=a.operationByKey.get(s)??a.operationByKey.get(n),e[0]=n,e[1]=a.operationByKey,e[2]=s,e[3]=p):p=e[3];let l=p,d,f,v,N,k,h,g,b,x,y;if(e[4]!==i||e[5]!==a.groups||e[6]!==a.server||e[7]!==l?.key||e[8]!==r){d=Bt(a.groups,i);let I;e[19]===Symbol.for("react.memo_cache_sentinel")?(I=u(C=>{let{key:R}=C.currentTarget.dataset;R!==void 0&&o(R)},"P"),e[19]=I):I=e[19];let O=I,j;e[20]===Symbol.for("react.memo_cache_sentinel")?(j=u(C=>{c(C.target.value)},"J"),e[20]=j):j=e[20];let T=j;f=a.server??"",x="grid min-h-0 flex-1 grid-cols-1 overflow-hidden lg:grid-cols-[16rem_minmax(0,1fr)_22rem]",y="api-reference",e[21]!==r?(k=r("API operations"),e[21]=r,e[22]=k):k=e[22],h="flex min-h-0 flex-col overflow-y-auto border-r border-border",g="api-reference-nav";let J;e[23]===Symbol.for("react.memo_cache_sentinel")?(J=(0,m.jsx)(ie,{className:"pointer-events-none absolute top-1/2 left-2 size-3.5 -translate-y-1/2 text-muted-foreground",icon:$e,strokeWidth:2}),e[23]=J):J=e[23];let A;e[24]!==r?(A=r("Filter operations"),e[24]=r,e[25]=A):A=e[25],e[26]!==i||e[27]!==A?(b=(0,m.jsx)("div",{className:"sticky top-0 z-10 border-b border-border bg-sidebar p-2",children:(0,m.jsxs)("div",{className:"relative",children:[J,(0,m.jsx)(Se,{className:"h-7 pl-7","data-testid":"api-filter",onChange:T,placeholder:A,value:i})]})}),e[26]=i,e[27]=A,e[28]=b):b=e[28],v="flex flex-col gap-4 p-2";let E;e[29]!==l?.key||e[30]!==r?(E=u(C=>(0,m.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,m.jsxs)("div",{className:"flex items-center justify-between px-2",children:[(0,m.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:C.name||r("(root)")}),(0,m.jsx)("span",{className:"font-mono text-[10px] text-muted-foreground/70",children:C.operations.length})]}),C.operations.map(R=>{let q=R.key===l?.key;return(0,m.jsxs)("button",{"aria-current":q?"page":void 0,className:"flex items-center justify-between gap-2 rounded-md border-l-2 border-transparent px-2 py-1 text-start text-xs text-muted-foreground transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground aria-[current=page]:border-primary aria-[current=page]:bg-sidebar-accent aria-[current=page]:font-medium aria-[current=page]:text-foreground","data-key":R.key,"data-testid":`api-nav-${R.operationId}`,onClick:O,type:"button",children:[(0,m.jsx)("span",{className:"truncate",children:R.summary}),(0,m.jsx)(ve,{kind:R.kind,method:R.method})]},R.key)})]},C.name),"T"),e[29]=l?.key,e[30]=r,e[31]=E):E=e[31],N=d.map(E),e[4]=i,e[5]=a.groups,e[6]=a.server,e[7]=l?.key,e[8]=r,e[9]=d,e[10]=f,e[11]=v,e[12]=N,e[13]=k,e[14]=h,e[15]=g,e[16]=b,e[17]=x,e[18]=y}else d=e[9],f=e[10],v=e[11],N=e[12],k=e[13],h=e[14],g=e[15],b=e[16],x=e[17],y=e[18];let w;e[32]!==d.length||e[33]!==r?(w=d.length===0&&(0,m.jsx)("p",{className:"px-2 py-1 text-xs text-muted-foreground","data-testid":"api-nav-empty",children:r("No operations match your filter.")}),e[32]=d.length,e[33]=r,e[34]=w):w=e[34];let _;e[35]!==w||e[36]!==v||e[37]!==N?(_=(0,m.jsxs)("div",{className:v,children:[N,w]}),e[35]=w,e[36]=v,e[37]=N,e[38]=_):_=e[38];let S;e[39]!==_||e[40]!==k||e[41]!==h||e[42]!==g||e[43]!==b?(S=(0,m.jsxs)("nav",{"aria-label":k,className:h,"data-testid":g,children:[b,_]}),e[39]=_,e[40]=k,e[41]=h,e[42]=g,e[43]=b,e[44]=S):S=e[44];let $;e[45]!==l||e[46]!==f?($=l===void 0?(0,m.jsx)("div",{className:"lg:col-span-2"}):(0,m.jsxs)(Pt,{operation:l,children:[(0,m.jsx)("div",{className:"min-w-0 overflow-y-auto p-6","data-testid":"api-reference-main",children:(0,m.jsx)(Ct,{operation:l})}),(0,m.jsxs)("aside",{className:"flex min-w-0 flex-col gap-4 overflow-y-auto border-border p-4 lg:border-l","data-testid":"api-reference-aside",children:[(0,m.jsx)(St,{operation:l,server:f}),(0,m.jsx)(zt,{})]})]},l.key),e[45]=l,e[46]=f,e[47]=$):$=e[47];let P;return e[48]!==S||e[49]!==$||e[50]!==x||e[51]!==y?(P=(0,m.jsxs)("div",{className:x,"data-testid":y,children:[S,$]}),e[48]=S,e[49]=$,e[50]=x,e[51]=y,e[52]=P):P=e[52],P},"yt");var V=D(ne(),1);var Ht=["get","post","put","patch","delete","head","options","trace"],Fe=u(t=>t?.content?.["application/json"]?.schema,"g"),Ft=u((t,e)=>Object.entries(t.responses??{}).map(([a,r])=>{let n=r.$ref?.replace("#/components/responses/",""),s=n===void 0?r:e.components?.responses?.[n]??r;return{description:s.description,schema:Fe(s),status:a}}),"P"),Ut=u((t,e,a,r,n)=>{let s=Fe(r.requestBody),o=s?.properties?.functionPath?.const,i=typeof o=="string"?o:void 0,c=i===void 0?s:s?.properties?.args,p=r.operationId??`${a} ${e}`;return{argsSchema:c,description:r.description,functionPath:i,httpPath:e,key:t,kind:r["x-lunora-function-kind"],method:a.toUpperCase(),operationId:p,requestSchema:s,responses:Ft(r,n),summary:r.summary??p,tags:r.tags??[],title:r.summary??p}},"A"),Gt=u(t=>{let e=[];for(let[a,r]of Object.entries(t.paths??{})){let n=a.includes("#")?a.slice(0,a.indexOf("#")):a;for(let s of Ht){let o=r[s];o!==void 0&&e.push(Ut(a,n,s,o,t))}}return e},"O"),Vt=u(t=>{let e=t??{},a=Gt(e),r=new Map((e.tags??[]).map(i=>[i.name,i.description])),n=new Set,s=[],o=u(i=>{if(n.has(i))return;n.add(i);let c=a.filter(p=>(p.tags[0]??"")===i);c.length>0&&s.push({description:r.get(i),name:i,operations:c})},"r");for(let i of e.tags??[])o(i.name);for(let i of a)o(i.tags[0]??"");return{groups:s,operationByKey:new Map(a.map(i=>[i.key,i])),server:e.servers?.[0]?.url,title:e.info?.title??"API reference",version:e.info?.version}},"b"),Qt=u(t=>{let{paths:e}=t;return e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0},"S"),Xt=u(t=>{let e=t;return Qt(e)?{kind:"empty"}:{kind:"ready",spec:e}},"$"),Ue=u(t=>{let e=(0,He.c)(23),{spec:a}=t,r=M(),n=G(),s;e[0]!==n?(s=u(()=>n.fetchOpenApi(),"n"),e[0]=n,e[1]=s):s=e[1];let o=ue(a,s,Xt),i;e[2]!==o.kind||e[3]!==o.spec?(i=o.kind==="ready"?Vt(o.spec):void 0,e[2]=o.kind,e[3]=o.spec,e[4]=i):i=e[4];let c=i;if(o.kind==="loading"){let l;return e[5]===Symbol.for("react.memo_cache_sentinel")?(l=(0,V.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"api-reference-loading",children:[(0,V.jsx)(Z,{className:"h-8 w-48"}),(0,V.jsx)(Z,{className:"h-64 w-full"})]}),e[5]=l):l=e[5],l}if(o.kind==="error"){let l;e[6]!==o.message||e[7]!==r?(l=r("Couldn't load the OpenAPI spec: {message}",{message:o.message}),e[6]=o.message,e[7]=r,e[8]=l):l=e[8];let d;e[9]!==r?(d=r("API reference unavailable"),e[9]=r,e[10]=d):d=e[10];let f;return e[11]!==l||e[12]!==d?(f=(0,V.jsx)(U,{description:l,testId:"api-reference-error",title:d}),e[11]=l,e[12]=d,e[13]=f):f=e[13],f}if(o.kind==="empty"||c===void 0){let l;e[14]!==r?(l=r("Run `lunora codegen` and wire `_generated/openapi.json` to the worker to render the API reference here."),e[14]=r,e[15]=l):l=e[15];let d;e[16]!==r?(d=r("No OpenAPI spec configured"),e[16]=r,e[17]=d):d=e[17];let f;return e[18]!==l||e[19]!==d?(f=(0,V.jsx)(U,{description:l,testId:"api-reference-empty",title:d}),e[18]=l,e[19]=d,e[20]=f):f=e[20],f}let p;return e[21]!==c?(p=(0,V.jsx)(fe,{model:c}),e[21]=c,e[22]=p):p=e[22],p},"U");var Ge=D(ae(),1);var Q=D(ne(),1);var Zt=u(t=>(t.params??[]).find(e=>e.name==="args")??(t.params??[])[0],"v"),Yt=u(t=>t["x-tags"]?.[0]?.name??(t.name.includes(":")?t.name.slice(0,t.name.indexOf(":")):""),"w"),er=u(t=>{let e=Zt(t)?.schema;return{argsSchema:e,description:t.description,functionPath:t.name,httpPath:"/_lunora/rpc",key:t.name,kind:t["x-lunora-function-kind"],method:"POST",operationId:t.name,requestSchema:e,responses:[{description:t.result?.name,schema:t.result?.schema,status:"200"}],summary:t.summary??t.name,tags:[Yt(t)],title:t.summary??t.name}},"I"),tr=u(t=>{let e=t??{},a=(e.methods??[]).map(n=>er(n)),r=new Map;for(let n of a){let s=n.tags[0]??"",o=r.get(s)??[];o.push(n),r.set(s,o)}return{groups:[...r.entries()].map(([n,s])=>({name:n,operations:s.toSorted((o,i)=>o.operationId.localeCompare(i.operationId))})).toSorted((n,s)=>n.name.localeCompare(s.name)),operationByKey:new Map(a.map(n=>[n.key,n])),title:e.info?.title??"API reference",version:e.info?.version}},"C"),rr=u(t=>t.methods===void 0||t.methods.length===0,"O"),ar=u(t=>{let e=t;return rr(e)?{kind:"empty"}:{kind:"ready",spec:e}},"R"),Ve=u(t=>{let e=(0,Ge.c)(23),{spec:a}=t,r=M(),n=G(),s;e[0]!==n?(s=u(()=>n.fetchOpenRpc(),"m"),e[0]=n,e[1]=s):s=e[1];let o=ue(a,s,ar),i;e[2]!==o.kind||e[3]!==o.spec?(i=o.kind==="ready"?tr(o.spec):void 0,e[2]=o.kind,e[3]=o.spec,e[4]=i):i=e[4];let c=i;if(o.kind==="loading"){let l;return e[5]===Symbol.for("react.memo_cache_sentinel")?(l=(0,Q.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"openrpc-reference-loading",children:[(0,Q.jsx)(Z,{className:"h-8 w-48"}),(0,Q.jsx)(Z,{className:"h-64 w-full"})]}),e[5]=l):l=e[5],l}if(o.kind==="error"){let l;e[6]!==o.message||e[7]!==r?(l=r("Couldn't load the OpenRPC spec: {message}",{message:o.message}),e[6]=o.message,e[7]=r,e[8]=l):l=e[8];let d;e[9]!==r?(d=r("API reference unavailable"),e[9]=r,e[10]=d):d=e[10];let f;return e[11]!==l||e[12]!==d?(f=(0,Q.jsx)(U,{description:l,testId:"openrpc-reference-error",title:d}),e[11]=l,e[12]=d,e[13]=f):f=e[13],f}if(o.kind==="empty"||c===void 0){let l;e[14]!==r?(l=r("Run `lunora codegen --api-spec openrpc` and wire `_generated/openrpc.json` to the worker to render the OpenRPC reference here."),e[14]=r,e[15]=l):l=e[15];let d;e[16]!==r?(d=r("No OpenRPC spec configured"),e[16]=r,e[17]=d):d=e[17];let f;return e[18]!==l||e[19]!==d?(f=(0,Q.jsx)(U,{description:l,testId:"openrpc-reference-empty",title:d}),e[18]=l,e[19]=d,e[20]=f):f=e[20],f}let p;return e[21]!==c?(p=(0,Q.jsx)(fe,{model:c}),e[21]=c,e[22]=p):p=e[22],p},"T");var B=D(ne(),1);var nr=["reference","snippets"],or=["openapi","openrpc"],Gr=u(t=>{let e=(0,Qe.c)(51),{functions:a,initialShardKey:r,openApiSpec:n,openRpcSpec:s}=t,o=M(),[i,c]=(0,ye.useState)("reference"),[p,l]=(0,ye.useState)("openapi"),d;e[0]!==o?(d=o("Reference"),e[0]=o,e[1]=d):d=e[1];let f;e[2]!==o?(f=o("Snippets"),e[2]=o,e[3]=f):f=e[3];let v;e[4]!==d||e[5]!==f?(v={reference:d,snippets:f},e[4]=d,e[5]=f,e[6]=v):v=e[6];let N=v,k;e[7]!==o?(k=o("OpenAPI"),e[7]=o,e[8]=k):k=e[8];let h;e[9]!==o?(h=o("OpenRPC"),e[9]=o,e[10]=h):h=e[10];let g;e[11]!==k||e[12]!==h?(g={openapi:k,openrpc:h},e[11]=k,e[12]=h,e[13]=g):g=e[13];let b=g,x;e[14]===Symbol.for("react.memo_cache_sentinel")?(x=u(C=>{c(C.currentTarget.dataset.view)},"y"),e[14]=x):x=e[14];let y=x,w;e[15]===Symbol.for("react.memo_cache_sentinel")?(w=u(C=>{l(C.currentTarget.dataset.format)},"S"),e[15]=w):w=e[15];let _=w,S;e[16]!==o?(S=o("API view"),e[16]=o,e[17]=S):S=e[17];let $;e[18]!==i||e[19]!==N?($=nr.map(C=>(0,B.jsx)(F,{"aria-selected":i===C,"data-testid":`api-view-${C}`,"data-view":C,onClick:y,role:"tab",size:"sm",type:"button",variant:i===C?"default":"outline",children:N[C]},C)),e[18]=i,e[19]=N,e[20]=$):$=e[20];let P;e[21]!==$||e[22]!==S?(P=(0,B.jsx)("div",{"aria-label":S,className:"flex gap-1.5","data-testid":"api-view-toggle",role:"tablist",children:$}),e[21]=$,e[22]=S,e[23]=P):P=e[23];let I;e[24]!==p||e[25]!==b||e[26]!==o||e[27]!==i?(I=i==="reference"&&(0,B.jsx)("div",{"aria-label":o("API spec format"),className:"flex gap-1.5","data-testid":"api-format-toggle",role:"tablist",children:or.map(C=>(0,B.jsx)(F,{"aria-selected":p===C,"data-format":C,"data-testid":`api-format-${C}`,onClick:_,role:"tab",size:"sm",type:"button",variant:p===C?"default":"outline",children:b[C]},C))}),e[24]=p,e[25]=b,e[26]=o,e[27]=i,e[28]=I):I=e[28];let O;e[29]!==P||e[30]!==I?(O=(0,B.jsxs)("div",{className:"flex shrink-0 flex-wrap items-center gap-3 border-b border-border px-6 py-3",children:[P,I]}),e[29]=P,e[30]=I,e[31]=O):O=e[31];let j;e[32]!==a||e[33]!==r||e[34]!==i?(j=i==="snippets"&&(0,B.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-6",children:(0,B.jsx)(Ee,{functions:a,initialShardKey:r})}),e[32]=a,e[33]=r,e[34]=i,e[35]=j):j=e[35];let T;e[36]!==p||e[37]!==n||e[38]!==i?(T=i==="reference"&&p==="openapi"&&(0,B.jsx)(Ue,{spec:n}),e[36]=p,e[37]=n,e[38]=i,e[39]=T):T=e[39];let J;e[40]!==p||e[41]!==s||e[42]!==i?(J=i==="reference"&&p==="openrpc"&&(0,B.jsx)(Ve,{spec:s}),e[40]=p,e[41]=s,e[42]=i,e[43]=J):J=e[43];let A;e[44]!==j||e[45]!==T||e[46]!==J?(A=(0,B.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:[j,T,J]}),e[44]=j,e[45]=T,e[46]=J,e[47]=A):A=e[47];let E;return e[48]!==O||e[49]!==A?(E=(0,B.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col","data-testid":"lunora-api-tab",children:[O,A]}),e[48]=O,e[49]=A,e[50]=E):E=e[50],E},"Z");export{Gr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as se}from"./chunk-X2FQ6B5V.js";import{a as te}from"./chunk-HK4OVYG3.js";import"./chunk-XXQUMVWH.js";import{b as O}from"./chunk-BMQJ4CAO.js";import{a as ae,b as re,c as le,d as Y,e as M,f as q}from"./chunk-MIQTKZAR.js";import{a as U,b as G,c as H,d as Q,e as W}from"./chunk-UZERI5YC.js";import{a as ie}from"./chunk-V53KNYRN.js";import{a as w}from"./chunk-5Y3QLNWX.js";import{a as ee}from"./chunk-LFXFP4IF.js";import"./chunk-GRL5MG3Z.js";import"./chunk-7T7UOTYK.js";import{R as _}from"./chunk-CFPZYHPY.js";import"./chunk-7QIFDWQV.js";import{c as k}from"./chunk-FXCBF4XT.js";import"./chunk-2OUPA2WJ.js";import{b as F}from"./chunk-THIXMMZD.js";import"./chunk-6ST5ECQA.js";import{a as R}from"./chunk-AADXUXZO.js";import{f as J}from"./chunk-EN2QAEO4.js";import"./chunk-XBDKZZ67.js";import{a as K}from"./chunk-XQCVZAGU.js";import{d as z,f as V,g as X,h as Z,m as j}from"./chunk-4CGALXS3.js";import"./chunk-AADILRJW.js";import{a as n,e as D,f as he,g as xe,h as ye}from"./chunk-3XIESWL4.js";var c=D(he(),1);var de=D(xe(),1);var e=D(ye(),1);var oe=["read","insert","update","delete"],ge=n((a,t)=>({delete:a("Delete"),insert:a("Insert"),read:a("Read"),update:a("Update")})[t],"xe"),be=n(a=>{let t=new Set;for(let s of a?.advisories??[])if(s.name==="rls_uncovered_table"){let{table:i}=s.metadata;typeof i=="string"&&i!==""&&t.add(i)}return t},"ye"),ve=n((a,t,s)=>{let i=new Map,r=n(l=>{let d=i.get(l);if(d!==void 0)return d;let o={cells:{delete:{},insert:{},read:{},update:{}},maskedColumns:[],table:l,uncovered:s.has(l)};return i.set(l,o),o},"r");for(let l of a)r(l.table).cells[l.on]={procedure:l.procedure};for(let l of t){let d=r(l.table);d.maskedColumns.includes(l.column)||d.maskedColumns.push(l.column)}for(let l of s)r(l);return[...i.values()].toSorted((l,d)=>l.table.localeCompare(d.table))},"ge"),Ne=n(a=>{let t=(0,de.c)(17),s;t[0]!==a?(s=a===void 0?{}:a,t[0]=a,t[1]=s):s=t[1];let{onProbe:i}=s,r=z(),l,d;t[2]===Symbol.for("react.memo_cache_sentinel")?(l={},d={live:!0},t[2]=l,t[3]=d):(l=t[2],d=t[3]);let o=O(R.rlsPolicies,l,d),y;t[4]===Symbol.for("react.memo_cache_sentinel")?(y={},t[4]=y):y=t[4];let u=O(R.maskPolicies,y),h;t[5]===Symbol.for("react.memo_cache_sentinel")?(h={},t[5]=h):h=t[5];let v=O(R.getAdvisories,h),N;if(t[6]!==v.data||t[7]!==u.data||t[8]!==i||t[9]!==o||t[10]!==r){let b=null;o.data!==void 0&&(b=Array.isArray(o.data.policies)?o.data.policies:[]);let E=Array.isArray(u.data?.columns)?u.data.columns:[],T=v.data??null,{error:x,errorSource:f,liveError:S}=o,I=b===null?[]:ve(b,E,be(T)),A;t[12]!==S?(A=(0,e.jsx)("div",{className:"flex items-center justify-end",children:(0,e.jsx)(se,{message:S,prefix:"pm"})}),t[12]=S,t[13]=A):A=t[13];let g;t[14]!==x||t[15]!==f?(g=x!==null&&(0,e.jsx)(te,{error:f,testId:"pm-error"}),t[14]=x,t[15]=f,t[16]=g):g=t[16],N=(0,e.jsxs)("div",{className:"flex flex-col gap-3","data-testid":"lunora-permissions-matrix",children:[A,g,b!==null&&I.length===0?(0,e.jsx)(K,{description:r("Add a `definePolicy` and wire it through `.use(rls(...))` to populate this matrix."),testId:"pm-empty",title:r("No policy")}):(0,e.jsxs)(ae,{"data-testid":"pm-table",children:[(0,e.jsx)(re,{children:(0,e.jsxs)(Y,{children:[(0,e.jsx)(M,{children:r("Table")}),oe.map(p=>(0,e.jsx)(M,{children:ge(r,p)},p)),(0,e.jsx)(M,{children:r("Masked columns")})]})}),(0,e.jsx)(le,{children:I.map(p=>(0,e.jsxs)(Y,{"data-testid":`pm-row-${p.table}`,children:[(0,e.jsx)(q,{className:"font-mono text-xs",children:(0,e.jsxs)("span",{className:"flex items-center gap-1.5",children:[p.table,p.uncovered&&(0,e.jsx)(F,{"data-testid":`pm-uncovered-${p.table}`,title:r("Uncovered \u2014 reachable without a policy"),variant:"destructive",children:r("Uncovered \u2014 reachable without a policy")})]})}),oe.map(C=>{let $=p.cells[C];return(0,e.jsx)(q,{"data-testid":`pm-cell-${p.table}-${C}`,children:$.procedure===void 0?(0,e.jsx)("span",{className:"text-xs text-muted-foreground",children:r("No policy")}):(0,e.jsxs)("span",{className:"flex flex-col gap-1",children:[(0,e.jsx)(F,{variant:"secondary",children:r("Covered by {procedure}",{procedure:$.procedure})}),i!==void 0&&(0,e.jsx)(k,{className:"h-auto justify-start p-0 text-[11px]","data-testid":`pm-probe-${p.table}-${C}`,onClick:n(()=>{i(p.table,C,$.procedure??"")},"onClick"),size:"xs",type:"button",variant:"ghost",children:r("Probe this")})]})},C)}),(0,e.jsx)(q,{children:p.maskedColumns.length===0?(0,e.jsx)("span",{"aria-hidden":"true",className:"text-muted-foreground",children:"\u2014"}):(0,e.jsx)("span",{className:"flex flex-wrap gap-1",children:p.maskedColumns.map(ke)})})]},p.table))})]})]}),t[6]=v.data,t[7]=u.data,t[8]=i,t[9]=o,t[10]=r,t[11]=N}else N=t[11];return N},"be");function ke(a){return(0,e.jsx)(F,{variant:"outline",children:a},a)}n(ke,"ve");var we=V(R.runAs),Ce=n(()=>{let a=J();return async({args:t,functionPath:s,shardKey:i="",userId:r})=>{let l=we;try{return{kind:"allowed",value:await a.query(l,{args:t,functionPath:s,userId:r},X(i))}}catch(d){return{kind:"denied",message:d instanceof Error?d.message:String(d)}}}},"we"),Pe=n(a=>a===void 0?"undefined":JSON.stringify(a,null,2),"ke"),Se=n(({functions:a,prefill:t,runAsIdentity:s=!1}={})=>{let i=J(),r=z(),l=Ce(),[d,o]=(0,c.useState)(null),[y,u]=(0,c.useState)(null),h=a??d??[],[v,N]=(0,c.useState)(""),[b,E]=(0,c.useState)("{}"),[T,x]=(0,c.useState)(""),[f,S]=(0,c.useState)(""),[I,A]=(0,c.useState)(!1),[g,p]=(0,c.useState)(null),[C,$]=(0,c.useState)(null),B=(0,c.useRef)(-1);(0,c.useEffect)(()=>{if(a!==void 0)return;let m=!1;return i.listFunctions().then(P=>(m||o(P),P)).catch(P=>{m||u(Z(P))}),()=>{m=!0}},[i,a]),(0,c.useEffect)(()=>{if(t===void 0||B.current===t.nonce)return;B.current=t.nonce;let m=t.functionPath;queueMicrotask(()=>{N(m),p(null)})},[t]);let L=v===""?h[0]?.path??"":v,ce=n(async()=>{if(L==="")return;let m;try{m=b.trim()===""?{}:JSON.parse(b)}catch(P){$(r("Invalid JSON args: {message}",{message:P.message})),p(null);return}$(null),A(!0);try{let P=await l({args:m,functionPath:L,shardKey:T.trim(),userId:f.trim()});p(P)}finally{A(!1)}},"Q"),me=n(()=>{j(ce())},"V"),pe=n(m=>{N(m.target.value)},"X"),fe=n(m=>{E(m.target.value)},"Z"),ue=n(m=>{S(m.target.value)},"ee");return(0,e.jsxs)("div",{className:"flex flex-col gap-3","data-testid":"lunora-permissions-playground",children:[y!==null&&(0,e.jsx)("p",{className:"text-sm text-destructive","data-testid":"pp-discover-error",role:"alert",children:y}),!s&&(0,e.jsx)(K,{description:r("Dev only: runs the selected function as this user over the admin gate so you can test auth and RLS."),testId:"pp-gate",title:r("Set `runAsIdentity` to forge an identity and probe access.")}),(0,e.jsxs)("div",{className:"flex flex-col gap-3 rounded-md border border-border p-3",children:[(0,e.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,e.jsx)(w,{htmlFor:"pp-function",children:r("Function")}),(0,e.jsx)("select",{"aria-label":r("Function"),className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","data-testid":"pp-function",id:"pp-function",onChange:pe,value:L,children:h.map(m=>(0,e.jsxs)("option",{value:m.path,children:[m.path," (",m.kind,")"]},m.path))})]}),(0,e.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,e.jsx)(w,{htmlFor:"pp-args",children:r("Arguments")}),(0,e.jsx)(ie,{"aria-label":r("Arguments"),className:"font-mono text-xs","data-testid":"pp-args",id:"pp-args",onChange:fe,value:b})]}),(0,e.jsx)(ee,{onChange:x,testId:"pp-shard",value:T}),(0,e.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,e.jsx)(w,{htmlFor:"pp-user",children:r("Run as (userId)")}),(0,e.jsx)(_,{"aria-label":r("Identity (userId) to run as"),className:"font-mono text-xs","data-testid":"pp-user",id:"pp-user",onChange:ue,placeholder:r("Leave empty to run as admin"),value:f})]}),(0,e.jsxs)("div",{className:"flex items-center gap-2",children:[(0,e.jsx)(k,{"data-testid":"pp-run",disabled:!s||I||L==="",onClick:me,type:"button",children:r(I?"Probing\u2026":"Run probe")}),f.trim()!==""&&(0,e.jsx)(F,{"data-testid":"pp-as-badge",variant:"secondary",children:r("as {userId}",{userId:f.trim()})})]})]}),C!==null&&(0,e.jsx)("p",{className:"text-sm text-destructive","data-testid":"pp-args-error",role:"alert",children:C}),g!==null&&g.kind==="allowed"&&(0,e.jsxs)("div",{className:"flex flex-col gap-2","data-testid":"pp-outcome-allowed",children:[(0,e.jsx)(F,{variant:"secondary",children:r("Allowed")}),(0,e.jsx)("pre",{className:"overflow-auto rounded-md border border-border bg-muted/50 p-3 font-mono text-xs","data-testid":"pp-result",children:Pe(g.value)})]}),g!==null&&g.kind==="denied"&&(0,e.jsxs)("div",{className:"flex flex-col gap-2","data-testid":"pp-outcome-denied",children:[(0,e.jsx)(F,{variant:"destructive",children:r("Denied")}),(0,e.jsx)("pre",{className:"overflow-auto rounded-md border border-border bg-muted/50 p-3 font-mono text-xs text-destructive","data-testid":"pp-denied",role:"alert",children:g.message})]})]})},"Pe"),Ie="/__lunora/policy-scaffold",Ae={"already-wired":"That procedure already has an rls(...) policy wired in.","file-exists":"A policy file with that name already exists \u2014 pick another name or edit it by hand.","invalid-identifier":"Name, table, and policy-set must be plain identifiers (letters, digits, _ or $).","unknown-procedure":"No exported procedure was found at that file path.","unsupported-procedure-shape":"That procedure uses the bare query({\u2026}) form \u2014 convert it to the builder form (c.use(\u2026).query(\u2026)) before wiring RLS."},Fe=n(async a=>{let t=await fetch(Ie,{body:JSON.stringify(a),headers:{"Content-Type":"application/json"},method:"POST"}),s=await t.json();if(s.needsManualEdit===!0)return{kind:"needs-manual-edit",message:s.message??"This change must be made by hand."};if(t.ok)return{diagnostics:s.diagnostics??[],kind:"ok",label:s.fileName??s.exportName??""};let i=s.error;return{kind:"error",message:i===void 0?`policy scaffold failed (${String(t.status)})`:Ae[i]??i}},"Ie"),ne={exportName:"",filePath:"",policyName:"",policies:"",tableName:""},_e=n(()=>{let a=z(),[t,s]=(0,c.useState)(null),[i,r]=(0,c.useState)(!1),[l,d]=(0,c.useState)(null),[o,y]=(0,c.useState)(ne),u=n(x=>{let f=x.target.name,{value:S}=x.target;y(I=>({...I,[f]:S}))},"f"),h=n(()=>{s(null),y(ne)},"h"),v=n(async x=>{r(!0),d(null);try{let f=await Fe(x);d(f),f.kind==="ok"&&h()}catch(f){d({kind:"error",message:f instanceof Error?f.message:String(f)})}finally{r(!1)}},"v"),N=n(()=>{j(v({kind:"scaffoldPolicy",name:o.policyName.trim(),table:o.tableName.trim()}))},"N"),b=n(()=>{j(v({exportName:o.exportName.trim(),filePath:o.filePath.trim(),kind:"wireRls",policies:o.policies.trim()}))},"b"),E=n(()=>{d(null),s("scaffold")},"_"),T=n(()=>{d(null),s("wire")},"A");return(0,e.jsxs)(U,{"data-testid":"policy-scaffolder",size:"sm",children:[(0,e.jsxs)(G,{children:[(0,e.jsx)(H,{children:a("Scaffold access rules")}),(0,e.jsx)(Q,{children:a("Writes a new deny-by-default policy file under lunora/, or wires one into a procedure, then reruns codegen. Local dev only.")})]}),(0,e.jsxs)(W,{children:[(0,e.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,e.jsx)(k,{"data-testid":"policy-scaffolder-new",onClick:E,size:"xs",type:"button",variant:t==="scaffold"?"default":"outline",children:a("New policy file")}),(0,e.jsx)(k,{"data-testid":"policy-scaffolder-wire",onClick:T,size:"xs",type:"button",variant:t==="wire"?"default":"outline",children:a("Wire into a procedure")})]}),t==="scaffold"&&(0,e.jsxs)("div",{className:"mt-3 flex flex-wrap items-end gap-2","data-testid":"policy-scaffolder-new-form",children:[(0,e.jsxs)("div",{className:"flex flex-col gap-1 text-xs",children:[(0,e.jsx)(w,{htmlFor:"policy-scaffolder-name",children:a("Policy name")}),(0,e.jsx)(_,{"data-testid":"policy-scaffolder-name",id:"policy-scaffolder-name",name:"policyName",onChange:u,value:o.policyName})]}),(0,e.jsxs)("div",{className:"flex flex-col gap-1 text-xs",children:[(0,e.jsx)(w,{htmlFor:"policy-scaffolder-table",children:a("Table name")}),(0,e.jsx)(_,{"data-testid":"policy-scaffolder-table",id:"policy-scaffolder-table",name:"tableName",onChange:u,value:o.tableName})]}),(0,e.jsx)(k,{"data-testid":"policy-scaffolder-create",disabled:i||o.policyName.trim()===""||o.tableName.trim()==="",onClick:N,size:"xs",type:"button",children:a(i?"Creating\u2026":"Create policy file")}),(0,e.jsx)(k,{onClick:h,size:"xs",type:"button",variant:"ghost",children:a("Cancel")})]}),t==="wire"&&(0,e.jsxs)("div",{className:"mt-3 flex flex-wrap items-end gap-2","data-testid":"policy-scaffolder-wire-form",children:[(0,e.jsxs)("div",{className:"flex flex-col gap-1 text-xs",children:[(0,e.jsx)(w,{htmlFor:"policy-scaffolder-file",children:a("Procedure file path")}),(0,e.jsx)(_,{"data-testid":"policy-scaffolder-file",id:"policy-scaffolder-file",name:"filePath",onChange:u,value:o.filePath})]}),(0,e.jsxs)("div",{className:"flex flex-col gap-1 text-xs",children:[(0,e.jsx)(w,{htmlFor:"policy-scaffolder-export",children:a("Exported procedure")}),(0,e.jsx)(_,{"data-testid":"policy-scaffolder-export",id:"policy-scaffolder-export",name:"exportName",onChange:u,value:o.exportName})]}),(0,e.jsxs)("div",{className:"flex flex-col gap-1 text-xs",children:[(0,e.jsx)(w,{htmlFor:"policy-scaffolder-policies",children:a("Policy set identifier")}),(0,e.jsx)(_,{"data-testid":"policy-scaffolder-policies",id:"policy-scaffolder-policies",name:"policies",onChange:u,value:o.policies})]}),(0,e.jsx)(k,{"data-testid":"policy-scaffolder-apply",disabled:i||o.filePath.trim()===""||o.exportName.trim()===""||o.policies.trim()==="",onClick:b,size:"xs",type:"button",children:a(i?"Wiring\u2026":"Wire RLS")}),(0,e.jsx)(k,{onClick:h,size:"xs",type:"button",variant:"ghost",children:a("Cancel")})]}),l?.kind==="error"&&(0,e.jsx)("p",{className:"mt-3 text-sm text-destructive","data-testid":"policy-scaffolder-error",role:"alert",children:l.message}),l?.kind==="needs-manual-edit"&&(0,e.jsx)("p",{className:"mt-3 text-sm text-amber-600 dark:text-amber-500","data-testid":"policy-scaffolder-manual",role:"alert",children:a("This change must be made by hand \u2014 the scaffolder only adds new, deny-by-default rules.")}),l?.kind==="ok"&&(0,e.jsxs)("div",{className:"mt-3 flex flex-col gap-1","data-testid":"policy-scaffolder-ok",children:[(0,e.jsx)("p",{className:"text-sm text-emerald-600 dark:text-emerald-500",children:a("Scaffolded {label} and reran codegen. Fill in the `when` predicates before relying on it.",{label:l.label})}),l.diagnostics.length>0&&(0,e.jsx)("ul",{className:"flex flex-col gap-0.5","data-testid":"policy-scaffolder-diagnostics",children:l.diagnostics.map(x=>(0,e.jsx)("li",{className:"font-mono text-[11px] text-destructive",children:x},x))})]})]})]})},"$e"),Be=n(({functions:a,runAsIdentity:t=!1,schemaEditable:s=!1}={})=>{let i=z(),[r,l]=(0,c.useState)(void 0),d=n((o,y,u)=>{u!==""&&l(h=>({functionPath:u,nonce:(h?.nonce??0)+1}))},"d");return(0,e.jsxs)("div",{className:"flex flex-col gap-8","data-testid":"lunora-permissions",children:[(0,e.jsxs)("section",{className:"flex flex-col gap-3",children:[(0,e.jsx)("header",{className:"border-b border-border px-4 py-3",children:(0,e.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:i("Permissions")})}),(0,e.jsx)(Ne,{onProbe:d})]}),(0,e.jsx)("section",{className:"flex flex-col gap-3",children:(0,e.jsxs)(U,{className:"gap-0 py-0",children:[(0,e.jsx)("header",{className:"border-b border-border px-4 py-3",children:(0,e.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:i("Probe")})}),(0,e.jsxs)(W,{className:"px-4 py-4",children:[(0,e.jsx)("p",{className:"mb-3 text-sm text-muted-foreground",children:i("Pick a function and an identity, then run it to see the access outcome.")}),(0,e.jsx)(Se,{functions:a,prefill:r,runAsIdentity:t})]})]})}),s&&(0,e.jsx)("section",{className:"flex flex-col gap-2",children:(0,e.jsx)(_e,{})})]})},"Ye");export{Be as PermissionsPanel};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as U}from"./chunk-54MMVNPT.js";import{a as Q}from"./chunk-7LQWFOEU.js";import{a as E}from"./chunk-BMQJ4CAO.js";import{a as K,b as V,c as z,d as F,e as v,f as b}from"./chunk-MIQTKZAR.js";import{a as D,e as P}from"./chunk-UZERI5YC.js";import{c as te}from"./chunk-FXCBF4XT.js";import"./chunk-2OUPA2WJ.js";import{b as ee}from"./chunk-THIXMMZD.js";import"./chunk-6ST5ECQA.js";import{f as T}from"./chunk-EN2QAEO4.js";import"./chunk-XBDKZZ67.js";import{a as _}from"./chunk-XQCVZAGU.js";import{d as B,h as O,m as W,q as Z}from"./chunk-4CGALXS3.js";import"./chunk-AADILRJW.js";import{a as m,e as R,f as oe,g as ae,h as le}from"./chunk-3XIESWL4.js";var Y=R(ae(),1),G=R(oe(),1);var t=R(le(),1);var ne=R(ae(),1);var X=R(oe(),1);var c=R(le(),1);var ie=m(a=>Number.isFinite(a)?Z(a,"\u2014"):"\u2014","Y"),se=m(a=>a.toSorted((e,h)=>e.scheduledFor-h.scheduledFor),"T"),de=m(a=>{let e=(0,ne.c)(33),h;e[0]!==a?(h=a===void 0?{}:a,e[0]=a,e[1]=h):h=e[1];let{cancelJob:i,loadJobs:p}=h,l=T(),o=B(),r=p===void 0,y;e[2]===Symbol.for("react.memo_cache_sentinel")?(y=["lunora-scheduled-jobs"],e[2]=y):y=e[2];let f;e[3]!==l||e[4]!==p?(f=m(async()=>{let d=await(p??(()=>l.listScheduledJobs()))();return se(d)},"j"),e[3]=l,e[4]=p,e[5]=f):f=e[5];let n=E(y,f),[s,u]=(0,X.useState)(void 0),[J,j]=(0,X.useState)(void 0),x,C;e[6]!==l||e[7]!==r?(x=m(()=>{if(r)return l.subscribeScheduledJobs(d=>{j(void 0),u(se(d))})},"N"),C=[r,l],e[6]=l,e[7]=r,e[8]=x,e[9]=C):(x=e[8],C=e[9]),(0,X.useEffect)(x,C);let g;e[10]!==n?(g=m(()=>{n.refetch()},"$"),e[10]=n,e[11]=g):g=e[11],U(g,!r);let S;e:{if(i!==void 0){S=i;break e}let d;e[12]!==l||e[13]!==p?(d=p===void 0?H=>l.cancelScheduledJob(H):void 0,e[12]=l,e[13]=p,e[14]=d):d=e[14],S=d}let k=S,w=s??n.data,$=J??n.error,q;e[15]!==k||e[16]!==n||e[17]!==r?(q=m(async d=>{if(k!==void 0){j(void 0);try{await k(d),r||n.refetch()}catch(H){j(O(H))}}},"S"),e[15]=k,e[16]=n,e[17]=r,e[18]=q):q=e[18];let I=q,L;e[19]!==$?(L=$!==null&&(0,c.jsx)("p",{className:"text-sm text-destructive","data-testid":"sj-error",role:"alert",children:$}),e[19]=$,e[20]=L):L=e[20];let N;e[21]!==w?.length||e[22]!==o?(N=w?.length===0&&(0,c.jsx)(_,{description:o("Jobs queued with runAfter / runAt will appear here."),icon:(0,c.jsxs)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:[(0,c.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,c.jsx)("path",{d:"M12 7.5V12l4 2"})]}),testId:"sj-empty",title:o("No scheduled jobs.")}),e[21]=w?.length,e[22]=o,e[23]=N):N=e[23];let M;e[24]!==I||e[25]!==k||e[26]!==w||e[27]!==o?(M=w!==void 0&&w.length>0&&(0,c.jsx)(D,{className:"overflow-hidden py-0",children:(0,c.jsx)(P,{className:"px-0",children:(0,c.jsxs)(K,{"data-testid":"sj-table",children:[(0,c.jsx)(V,{children:(0,c.jsxs)(F,{children:[(0,c.jsx)(v,{children:o("function")}),(0,c.jsx)(v,{children:o("scheduled for")}),(0,c.jsx)(v,{children:o("pool")}),(0,c.jsx)(v,{children:o("attempts")}),(0,c.jsx)(v,{children:o("shard")}),(0,c.jsx)(v,{children:o("id")}),k!==void 0&&(0,c.jsx)(v,{"aria-label":o("Actions")})]})}),(0,c.jsx)(z,{children:w.map(d=>(0,c.jsxs)(F,{"data-testid":`sj-row-${d.id}`,children:[(0,c.jsx)(b,{className:"font-mono text-xs",children:d.functionPath}),(0,c.jsx)(b,{className:"text-muted-foreground tabular-nums",children:ie(d.scheduledFor)}),(0,c.jsx)(b,{className:"font-mono text-xs",children:d.pool??""}),(0,c.jsx)(b,{className:"tabular-nums",children:d.attempts??0}),(0,c.jsx)(b,{children:d.shardKey??""}),(0,c.jsx)(b,{className:"font-mono text-xs",children:d.id}),k!==void 0&&(0,c.jsx)(b,{className:"text-right",children:(0,c.jsx)(Q,{confirmLabel:o("Cancel job?"),onConfirm:m(()=>{W(I(d.id))},"onConfirm"),testId:`sj-cancel-${d.id}`,children:o("Cancel")})})]},d.id))})]})})}),e[24]=I,e[25]=k,e[26]=w,e[27]=o,e[28]=M):M=e[28];let A;return e[29]!==N||e[30]!==M||e[31]!==L?(A=(0,c.jsxs)("div",{className:"flex flex-col gap-3","data-testid":"lunora-scheduled-jobs",children:[L,N,M]}),e[29]=N,e[30]=M,e[31]=L,e[32]=A):A=e[32],A},"he");var ce={kind:"idle"},he=m(({loadCronJobs:a,runCronJob:e}={})=>{let h=T(),i=B(),[p,l]=(0,G.useState)({}),o=E(["lunora-cron-jobs",a?"custom":"default"],()=>(a??(()=>h.getCronJobs()))()),{data:r,error:y}=o,f=(0,G.useMemo)(()=>e!==void 0?e:a===void 0?s=>h.runCronJob(s):void 0,[h,a,e]),n=m(async s=>{if(f!==void 0){l(u=>({...u,[s]:{kind:"running"}}));try{await f(s),l(u=>({...u,[s]:{kind:"ok"}})),o.refetch()}catch(u){l(J=>({...J,[s]:{kind:"error",message:O(u)}}))}}},"d");return(0,t.jsxs)("div",{className:"flex flex-col gap-3","data-testid":"lunora-cron-triggers",children:[y!==null&&(0,t.jsx)("p",{className:"text-sm text-destructive","data-testid":"cron-error",role:"alert",children:y}),r?.length===0&&(0,t.jsx)(_,{description:i("Triggers declared with the cronJobs() builder appear here."),icon:(0,t.jsxs)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,t.jsx)("path",{d:"M12 7.5V12l4 2"})]}),testId:"cron-empty",title:i("No cron triggers.")}),r!==void 0&&r.length>0&&(0,t.jsx)(D,{className:"overflow-hidden py-0",children:(0,t.jsx)(P,{className:"px-0",children:(0,t.jsxs)(K,{"data-testid":"cron-table",children:[(0,t.jsx)(V,{children:(0,t.jsxs)(F,{children:[(0,t.jsx)(v,{children:i("name")}),(0,t.jsx)(v,{children:i("schedule")}),(0,t.jsx)(v,{children:i("target")}),(0,t.jsx)(v,{children:i("shard")}),f!==void 0&&(0,t.jsx)(v,{"aria-label":i("Actions")})]})}),(0,t.jsx)(z,{children:r.map(s=>{let u=p[s.name]??ce;return(0,t.jsxs)(F,{"data-testid":`cron-row-${s.name}`,children:[(0,t.jsx)(b,{children:s.name}),(0,t.jsx)(b,{className:"font-mono text-xs tabular-nums",children:s.cron}),(0,t.jsx)(b,{children:(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[s.workflow===void 0?(0,t.jsx)(ee,{variant:"outline",children:i("function")}):(0,t.jsx)(ee,{variant:"secondary",children:i("workflow")}),(0,t.jsx)("span",{className:"font-mono text-xs",children:s.workflow??s.functionPath})]})}),(0,t.jsx)(b,{children:s.shardKey??""}),f!==void 0&&(0,t.jsx)(b,{className:"text-right",children:(0,t.jsxs)("span",{className:"flex items-center justify-end gap-2",children:[u.kind==="ok"&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`cron-ran-${s.name}`,children:i("ran")}),u.kind==="error"&&(0,t.jsx)("span",{className:"text-xs text-destructive","data-testid":`cron-run-error-${s.name}`,role:"alert",children:u.message}),(0,t.jsx)(Q,{confirmLabel:i("Run now?"),disabled:u.kind==="running",onConfirm:m(()=>{W(n(s.name))},"onConfirm"),testId:`cron-run-${s.name}`,children:u.kind==="running"?i("Running\u2026"):i("Run now")})]})})]},`${s.cron}:${s.name}`)})})]})})})]})},"le"),me=m(a=>Number.isFinite(a)?Z(a,"\u2014"):"\u2014","re"),ue=m(a=>{let e=(0,Y.c)(34),h;e[0]!==a?(h=a===void 0?{}:a,e[0]=a,e[1]=h):h=e[1];let{loadJobs:i,removeJob:p,retryJob:l}=h,o=T(),r=B(),y;e[2]===Symbol.for("react.memo_cache_sentinel")?(y=["lunora-dead-jobs"],e[2]=y):y=e[2];let f;e[3]!==o||e[4]!==i?(f=m(async()=>(await(i??(()=>o.listDeadJobs()))()).toSorted(fe),"h"),e[3]=o,e[4]=i,e[5]=f):f=e[5];let n=E(y,f),s=n.data,[u,J]=(0,G.useState)(void 0),j=n.error??u,x=i===void 0,C;e[6]!==o||e[7]!==x||e[8]!==l?(C=l??(x?d=>o.retryDeadJob(d):void 0),e[6]=o,e[7]=x,e[8]=l,e[9]=C):C=e[9];let g=C,S;e[10]!==o||e[11]!==x||e[12]!==p?(S=p??(x?d=>o.removeDeadJob(d):void 0),e[10]=o,e[11]=x,e[12]=p,e[13]=S):S=e[13];let k=S,w;e[14]!==n?(w=m(()=>{n.refetch()},"J"),e[14]=n,e[15]=w):w=e[15],U(w,!0);let $;e[16]!==n?($=m(async d=>{J(void 0);try{await d,n.refetch()}catch(H){J(O(H))}},"j"),e[16]=n,e[17]=$):$=e[17];let q=$,I=g!==void 0||k!==void 0,L;e[18]!==j?(L=j!==void 0&&(0,t.jsx)("p",{className:"text-sm text-destructive","data-testid":"dlq-error",role:"alert",children:j}),e[18]=j,e[19]=L):L=e[19];let N;e[20]!==s?.length||e[21]!==r?(N=s?.length===0&&(0,t.jsx)(_,{description:r("Jobs that exhaust their retry budget are parked here instead of being dropped."),icon:(0,t.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,t.jsx)("path",{d:"M3 6h18M8 6V4h8v2M6 6l1 14h10l1-14"})}),testId:"dlq-empty",title:r("No dead-letter jobs.")}),e[20]=s?.length,e[21]=r,e[22]=N):N=e[22];let M;e[23]!==q||e[24]!==I||e[25]!==s||e[26]!==k||e[27]!==g||e[28]!==r?(M=s!==void 0&&s.length>0&&(0,t.jsx)(D,{className:"overflow-hidden py-0",children:(0,t.jsx)(P,{className:"px-0",children:(0,t.jsxs)(K,{"data-testid":"dlq-table",children:[(0,t.jsx)(V,{children:(0,t.jsxs)(F,{children:[(0,t.jsx)(v,{children:r("function")}),(0,t.jsx)(v,{children:r("attempts")}),(0,t.jsx)(v,{children:r("last tried")}),(0,t.jsx)(v,{children:r("pool")}),(0,t.jsx)(v,{children:r("shard")}),(0,t.jsx)(v,{children:r("id")}),I&&(0,t.jsx)(v,{"aria-label":r("Actions")})]})}),(0,t.jsx)(z,{children:s.map(d=>(0,t.jsxs)(F,{"data-testid":`dlq-row-${d.id}`,children:[(0,t.jsx)(b,{className:"font-mono text-xs",children:d.functionPath}),(0,t.jsx)(b,{className:"tabular-nums",children:d.attempts??0}),(0,t.jsx)(b,{className:"text-muted-foreground tabular-nums",children:me(d.scheduledFor)}),(0,t.jsx)(b,{className:"font-mono text-xs",children:d.pool??""}),(0,t.jsx)(b,{children:d.shardKey??""}),(0,t.jsx)(b,{className:"font-mono text-xs",children:d.id}),I&&(0,t.jsx)(b,{className:"text-right",children:(0,t.jsxs)("div",{className:"flex justify-end gap-1.5",children:[g!==void 0&&(0,t.jsx)(te,{"data-testid":`dlq-retry-${d.id}`,onClick:m(()=>{W(q(g(d.id)))},"onClick"),size:"sm",type:"button",variant:"outline",children:r("Retry")}),k!==void 0&&(0,t.jsx)(Q,{confirmLabel:r("Drop job?"),onConfirm:m(()=>{W(q(k(d.id)))},"onConfirm"),testId:`dlq-remove-${d.id}`,children:r("Drop")})]})})]},d.id))})]})})}),e[23]=q,e[24]=I,e[25]=s,e[26]=k,e[27]=g,e[28]=r,e[29]=M):M=e[29];let A;return e[30]!==M||e[31]!==L||e[32]!==N?(A=(0,t.jsxs)("div",{className:"flex flex-col gap-3","data-testid":"lunora-dead-letter",children:[L,N,M]}),e[30]=M,e[31]=L,e[32]=N,e[33]=A):A=e[33],A},"ne");function fe(a,e){return(e.attempts??0)-(a.attempts??0)}m(fe,"ae");var re=m(a=>{let e=(0,Y.c)(8),{label:h,testId:i,value:p}=a,l;e[0]!==h?(l=(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:h}),e[0]=h,e[1]=l):l=e[1];let o;e[2]!==i||e[3]!==p?(o=(0,t.jsx)("span",{className:"text-2xl font-semibold tabular-nums","data-testid":i,children:p}),e[2]=i,e[3]=p,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==o?(r=(0,t.jsx)(D,{className:"flex-1 py-0",children:(0,t.jsxs)(P,{className:"flex flex-col gap-1 p-4",children:[l,o]})}),e[5]=l,e[6]=o,e[7]=r):r=e[7],r},"F"),pe=m(a=>{let e=(0,Y.c)(25),h;e[0]!==a?(h=a===void 0?{}:a,e[0]=a,e[1]=h):h=e[1];let{loadStatus:i}=h,p=T(),l=B(),o=i===void 0,r;e[2]!==o?(r=["lunora-scheduler-status",o],e[2]=o,e[3]=r):r=e[3];let y;e[4]!==p||e[5]!==i?(y=m(async()=>{let S=await(i??(()=>p.schedulerStatus()))();return{...S,pools:S.pools.toSorted(ve)}},"k"),e[4]=p,e[5]=i,e[6]=y):y=e[6];let f=E(r,y),{data:n,error:s}=f,u;e[7]!==f?(u=m(()=>{f.refetch()},"s"),e[7]=f,e[8]=u):u=e[8],U(u,!0);let J;e[9]!==s?(J=s!==null&&(0,t.jsx)("p",{className:"text-sm text-destructive","data-testid":"pools-error",role:"alert",children:s}),e[9]=s,e[10]=J):J=e[10];let j;e[11]!==n||e[12]!==l?(j=n!==void 0&&(0,t.jsxs)("div",{className:"flex gap-3","data-testid":"pools-totals",children:[(0,t.jsx)(re,{label:l("backlog"),testId:"pools-backlog",value:n.backlog}),(0,t.jsx)(re,{label:l("in flight"),testId:"pools-inflight",value:n.inFlight}),(0,t.jsx)(re,{label:l("pools"),testId:"pools-count",value:n.pools.length})]}),e[11]=n,e[12]=l,e[13]=j):j=e[13];let x;e[14]!==n?.pools.length||e[15]!==l?(x=n?.pools.length===0&&(0,t.jsx)(_,{description:l("Pools created with createWorkpool appear here once they have activity."),icon:(0,t.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,t.jsx)("path",{d:"M4 7h16M4 12h16M4 17h16"})}),testId:"pools-empty",title:l("No workpools.")}),e[14]=n?.pools.length,e[15]=l,e[16]=x):x=e[16];let C;e[17]!==n||e[18]!==l?(C=n!==void 0&&n.pools.length>0&&(0,t.jsx)(D,{className:"overflow-hidden py-0",children:(0,t.jsx)(P,{className:"px-0",children:(0,t.jsxs)(K,{"data-testid":"pools-table",children:[(0,t.jsx)(V,{children:(0,t.jsxs)(F,{children:[(0,t.jsx)(v,{children:l("pool")}),(0,t.jsx)(v,{children:l("queued")}),(0,t.jsx)(v,{children:l("in flight")}),(0,t.jsx)(v,{children:l("max concurrency")})]})}),(0,t.jsx)(z,{children:n.pools.map(be)})]})})}),e[17]=n,e[18]=l,e[19]=C):C=e[19];let g;return e[20]!==J||e[21]!==j||e[22]!==x||e[23]!==C?(g=(0,t.jsxs)("div",{className:"flex flex-col gap-3","data-testid":"lunora-scheduler-pools",children:[J,j,x,C]}),e[20]=J,e[21]=j,e[22]=x,e[23]=C,e[24]=g):g=e[24],g},"de");function ve(a,e){return e.queued-a.queued}m(ve,"ie");function be(a){return(0,t.jsxs)(F,{"data-testid":`pools-row-${a.name}`,children:[(0,t.jsx)(b,{className:"font-mono text-xs",children:a.name}),(0,t.jsx)(b,{className:"tabular-nums",children:a.queued}),(0,t.jsxs)(b,{className:"tabular-nums",children:[a.inFlight," / ",a.maxConcurrency]}),(0,t.jsx)(b,{className:"tabular-nums",children:a.maxConcurrency})]},a.name)}m(be,"se");var xe=["jobs","dead","pools","cron"],Ee=m(a=>{let e=(0,Y.c)(41),h;e[0]!==a?(h=a===void 0?{}:a,e[0]=a,e[1]=h):h=e[1];let{loadCronJobs:i,scheduledCancel:p,scheduledLoad:l}=h,o=B(),[r,y]=(0,G.useState)("jobs"),f;e[2]!==o?(f=o("Cron triggers"),e[2]=o,e[3]=f):f=e[3];let n;e[4]!==o?(n=o("Dead letter"),e[4]=o,e[5]=n):n=e[5];let s;e[6]!==o?(s=o("Scheduled jobs"),e[6]=o,e[7]=s):s=e[7];let u;e[8]!==o?(u=o("Pools"),e[8]=o,e[9]=u):u=e[9];let J;e[10]!==f||e[11]!==n||e[12]!==s||e[13]!==u?(J={cron:f,dead:n,jobs:s,pools:u},e[10]=f,e[11]=n,e[12]=s,e[13]=u,e[14]=J):J=e[14];let j=J,x;e[15]===Symbol.for("react.memo_cache_sentinel")?(x=m(N=>{y(N.currentTarget.dataset.view)},"u"),e[15]=x):x=e[15];let C=x,g;e[16]!==o?(g=o("Schedule view"),e[16]=o,e[17]=g):g=e[17];let S;e[18]!==r||e[19]!==j?(S=xe.map(N=>(0,t.jsx)(te,{"aria-selected":r===N,"data-testid":`schedule-view-${N}`,"data-view":N,onClick:C,role:"tab",size:"sm",type:"button",variant:r===N?"default":"outline",children:j[N]},N)),e[18]=r,e[19]=j,e[20]=S):S=e[20];let k;e[21]!==g||e[22]!==S?(k=(0,t.jsx)("div",{"aria-label":g,className:"flex gap-1.5","data-testid":"schedule-view-toggle",role:"tablist",children:S}),e[21]=g,e[22]=S,e[23]=k):k=e[23];let w;e[24]!==p||e[25]!==l||e[26]!==r?(w=r==="jobs"&&(0,t.jsx)(de,{cancelJob:p,loadJobs:l}),e[24]=p,e[25]=l,e[26]=r,e[27]=w):w=e[27];let $;e[28]!==r?($=r==="dead"&&(0,t.jsx)(ue,{}),e[28]=r,e[29]=$):$=e[29];let q;e[30]!==r?(q=r==="pools"&&(0,t.jsx)(pe,{}),e[30]=r,e[31]=q):q=e[31];let I;e[32]!==i||e[33]!==r?(I=r==="cron"&&(0,t.jsx)(he,{loadCronJobs:i}),e[32]=i,e[33]=r,e[34]=I):I=e[34];let L;return e[35]!==k||e[36]!==w||e[37]!==$||e[38]!==q||e[39]!==I?(L=(0,t.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"lunora-schedule",children:[k,w,$,q,I]}),e[35]=k,e[36]=w,e[37]=$,e[38]=q,e[39]=I,e[40]=L):L=e[40],L},"Je");export{Ee as SchedulePanel};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{a as ze}from"./chunk-I4WGRDL2.js";import{a as _e}from"./chunk-LLXFYRGQ.js";import{a as Ae}from"./chunk-5RF4QDDA.js";import"./chunk-XQGANNLS.js";import"./chunk-SD4BERSA.js";import"./chunk-IC4L6G56.js";import"./chunk-ESVP44Y3.js";import"./chunk-KYF2E5CJ.js";import"./chunk-7YEFOSPH.js";import"./chunk-BGBLQ563.js";import"./chunk-IVFHIQOT.js";import"./chunk-WCWYSOCN.js";import"./chunk-4UOFSGUS.js";import"./chunk-ILNELDFC.js";import"./chunk-7LQWFOEU.js";import"./chunk-T6VMSOBB.js";import{a as Le}from"./chunk-XXQUMVWH.js";import{a as Re,b as Te,c as Oe,d as xe,e as De,f as Me}from"./chunk-MIQTKZAR.js";import"./chunk-QBWRC5YX.js";import{a as Ee}from"./chunk-LFXFP4IF.js";import{b as Ie}from"./chunk-GRL5MG3Z.js";import{d as oe,e as he,f as fe}from"./chunk-7T7UOTYK.js";import"./chunk-CFPZYHPY.js";import"./chunk-7QIFDWQV.js";import"./chunk-FXCBF4XT.js";import"./chunk-2OUPA2WJ.js";import"./chunk-6ST5ECQA.js";import{a as le}from"./chunk-AADXUXZO.js";import{f as be}from"./chunk-EN2QAEO4.js";import"./chunk-XBDKZZ67.js";import{d as K,f as ne,g as re,h as Se,m as X}from"./chunk-4CGALXS3.js";import"./chunk-AADILRJW.js";import{a as s,e as pe,f as Et,g as Lt,h as Rt,j as te}from"./chunk-3XIESWL4.js";var Y=pe(Lt(),1);var E=pe(Et(),1);var r=pe(Rt(),1);var Tt=["ORDER BY","GROUP BY","LEFT JOIN","RIGHT JOIN","INNER JOIN","OUTER JOIN","CROSS JOIN","EXPLAIN QUERY PLAN","SELECT","DISTINCT","FROM","WHERE","HAVING","LIMIT","OFFSET","JOIN","ON","AND","OR","AS","ASC","DESC","WITH","UNION","EXPLAIN"],Ot=["FROM","WHERE","ORDER BY","GROUP BY","HAVING","LIMIT","OFFSET","UNION","JOIN","LEFT JOIN","RIGHT JOIN","INNER JOIN","OUTER JOIN","CROSS JOIN"],se=String.fromCodePoint(0),Dt=new RegExp(`${se}${String.raw`(\d+)`}${se}`,"gu"),Mt=Tt.map(l=>({pattern:new RegExp(String.raw`\b${l.replaceAll(" ",String.raw`\s+`)}\b`,"giu"),replacement:l})),_t=Ot.map(l=>({pattern:new RegExp(String.raw`\s+${l.replaceAll(" ",String.raw`\s+`)}\b`,"gu"),replacement:`
|
|
2
|
-
${l}`})),At=s(l=>{let e=[],t=l.replaceAll(/'(?:[^']|'')*'/gu,n=>(e.push(n),`${se}${(e.length-1).toString()}${se}`)).replaceAll(/\s+/gu," ").trim();for(let{pattern:n,replacement:o}of Mt)t=t.replaceAll(n,o);for(let{pattern:n,replacement:o}of _t)t=t.replaceAll(n,o);return t=t.replaceAll(Dt,(n,o)=>e[Number(o)]??""),t},"_t"),zt=["AND","ASC","AS","BY","COUNT","DESC","DISTINCT","EXPLAIN","FROM","GROUP","HAVING","INNER","JOIN","LEFT","LIKE","LIMIT","NOT","NULL","OFFSET","ON","ORDER","OR","QUERY","SELECT","WHERE","WITH"],Wt=new Set(["AND","BY","HAVING","ON","OR","SELECT","WHERE"]),$t=/[\w$]/,Be=s(l=>l!==void 0&&$t.test(l),"Te"),je=s(l=>{let e=l.length;for(;e>0&&Be(l[e-1]);)e-=1;return l.slice(e)},"Le"),He=s((l,e)=>{let t=e;for(;t>0&&Be(l[t-1]);)t-=1;return{end:e,start:t,text:l.slice(t,e)}},"Re"),We=s((l,e)=>{let t=l.slice(0,e).trimEnd();return t.endsWith(".")||Wt.has(je(t).toUpperCase())},"Ce"),Bt=s((l,e)=>{let t=l.slice(0,e);if(!t.endsWith("."))return;let n=je(t.slice(0,-1));return n===""?void 0:n},"Bt"),Ne=s((l,e)=>l.toLowerCase().startsWith(e.toLowerCase()),"ge"),$e=s((l,e,t,n)=>{let o=[];for(let a of l)if(Ne(a,e)&&(o.push(n(a)),o.length>=t))break;return o},"Se"),jt=s((l,e,t)=>{let n=new Map;for(let[o,a]of Object.entries(l.columns))for(let d of a)if(Ne(d,e)&&!n.has(d)&&(n.set(d,o),n.size>=t))return[...n].map(([p,c])=>({detail:c,kind:"column",label:p}));return[...n].map(([o,a])=>({detail:a,kind:"column",label:o}))},"Wt"),Ht=s((l,e,t)=>{let n=He(l,e),o=Bt(l,n.start);if(o!==void 0){let c=t.columns[o]??t.columns[o.toLowerCase()]??[];return $e(c,n.text,8,m=>({detail:o,kind:"column",label:m}))}if(n.text===""&&!We(l,n.start))return[];let a=$e(t.tables,n.text,8,c=>({kind:"table",label:c})),d=jt(t,n.text,8),p=zt.filter(c=>n.text!==""&&Ne(c,n.text)&&c.toLowerCase()!==n.text.toLowerCase()).map(c=>({kind:"keyword",label:c}));return(We(l,n.start)?[...d,...a,...p]:[...a,...d,...p]).slice(0,8)},"Ft"),Ft=s((l,e,t)=>{let n=He(l,e),o=l.slice(0,n.start)+t.label+l.slice(n.end);return{caret:n.start+t.label.length,value:o}},"Ht"),Pt=["boxSizing","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","paddingBottom","paddingLeft","paddingRight","paddingTop","tabSize","textIndent","textTransform","width","wordSpacing"],Jt=s((l,e)=>{let t=globalThis.getComputedStyle(l),n=globalThis.document.createElement("div"),{style:o}=n;o.position="absolute",o.visibility="hidden",o.whiteSpace="pre-wrap",o.overflowWrap="break-word";for(let c of Pt)o[c]=t[c];n.textContent=l.value.slice(0,Math.max(0,e));let a=globalThis.document.createElement("span");a.textContent=l.value.slice(Math.max(0,e))||".",n.append(a),globalThis.document.body.append(n);let d=a.offsetLeft-l.scrollLeft,p=a.offsetTop-l.scrollTop;return n.remove(),{left:d,top:p}},"Ut"),Ut=s((l,e,t)=>{let n=(0,Y.c)(13),[o,a]=(0,E.useState)(null),d;n[0]!==l||n[1]!==e?(d=s((y,v)=>{let N=Ht(y,v,l);if(N.length===0){a(null);return}let f=e.current,{left:C,top:q}=f===null?{left:0,top:0}:Jt(f,v);a(L=>L!==null&&L.active===0&&L.left===C&&L.top===q&&L.suggestions.length===N.length&&L.suggestions.every((S,M)=>{let O=N.at(M);return S.kind===O?.kind&&S.label===O.label&&S.detail===O.detail})?L:{active:0,left:C,suggestions:N,top:q})},"c"),n[0]=l,n[1]=e,n[2]=d):d=n[2];let p=d,c;n[3]===Symbol.for("react.memo_cache_sentinel")?(c=s(()=>{a(null)},"i"),n[3]=c):c=n[3];let m=c,k;n[4]===Symbol.for("react.memo_cache_sentinel")?(k=s(y=>{a(v=>{if(v===null)return v;let N=v.suggestions.length,f=(v.active+y+N)%N;return{...v,active:f}})},"N"),n[4]=k):k=n[4];let g=k,x;n[5]!==t||n[6]!==o||n[7]!==e?(x=s(()=>{let y=e.current;if(o===null||y===null)return!1;let v=o.suggestions[o.active];if(v===void 0)return!1;let N=Ft(y.value,y.selectionStart,v);return t(N.value),a(null),requestAnimationFrame(()=>{let f=e.current;f!==null&&(f.focus(),f.setSelectionRange(N.caret,N.caret))}),!0},"h"),n[5]=t,n[6]=o,n[7]=e,n[8]=x):x=n[8];let b=x,u;return n[9]!==b||n[10]!==p||n[11]!==o?(u={close:m,commit:b,move:g,refresh:p,state:o},n[9]=b,n[10]=p,n[11]=o,n[12]=u):u=n[12],u},"Jt"),Yt={column:"column",keyword:"keyword",table:"table"},Kt=20,Gt=s(l=>{let e=(0,Y.c)(17),{listboxId:t,onPick:n,state:o}=l,a=K(),d;e[0]!==o?(d=o===null?void 0:{left:o.left,top:o.top+Kt},e[0]=o,e[1]=d):d=e[1];let p=d;if(o===null)return null;let c;if(e[2]!==t||e[3]!==n||e[4]!==o.active||e[5]!==o.suggestions||e[6]!==a){let k;e[8]!==t||e[9]!==n||e[10]!==o.active||e[11]!==a?(k=s((g,x)=>(0,r.jsxs)("li",{"aria-selected":x===o.active,className:te("flex cursor-pointer items-center gap-2 px-2 py-1 text-[13px]",x===o.active?"bg-accent text-accent-foreground":"text-foreground"),"data-testid":"sql-autocomplete-item",id:`${t}-opt-${x.toString()}`,onMouseDown:s(b=>{b.preventDefault(),n(x)},"onMouseDown"),role:"option",children:[(0,r.jsx)("span",{className:"truncate font-mono",children:g.label}),g.detail!==void 0&&(0,r.jsx)("span",{className:"ms-auto truncate text-xs text-muted-foreground",children:g.detail}),(0,r.jsx)("span",{className:"shrink-0 font-mono text-[10px] tracking-wide text-muted-foreground/70 uppercase",children:a(Yt[g.kind])})]},`${g.kind}:${g.label}`),"N"),e[8]=t,e[9]=n,e[10]=o.active,e[11]=a,e[12]=k):k=e[12],c=o.suggestions.map(k),e[2]=t,e[3]=n,e[4]=o.active,e[5]=o.suggestions,e[6]=a,e[7]=c}else c=e[7];let m;return e[13]!==t||e[14]!==p||e[15]!==c?(m=(0,r.jsx)("ul",{className:"absolute z-30 max-h-56 w-72 overflow-auto rounded-md border border-border bg-popover py-1 text-popover-foreground shadow-md","data-testid":"sql-autocomplete",id:t,role:"listbox",style:p,children:c}),e[13]=t,e[14]=p,e[15]=c,e[16]=m):m=e[16],m},"Vt"),Fe=[{label:"List tables",sql:"SELECT name FROM sqlite_master WHERE type = 'table' ORDER BY name;"},{label:"Table row count",sql:"SELECT COUNT(*) AS rows FROM messages;"},{label:"Recent rows",sql:"SELECT id, _creationTime, __doc__ FROM messages ORDER BY _creationTime DESC LIMIT 50;"},{label:"Index list",sql:"SELECT name, tbl_name FROM sqlite_master WHERE type = 'index' ORDER BY tbl_name;"}],Vt=s(l=>{let e=(0,Y.c)(29),{active:t,onDelete:n,onSelect:o,query:a}=l,d=K(),p;e[0]!==o||e[1]!==a.id?(p=s(()=>{o(a.id)},"m"),e[0]=o,e[1]=a.id,e[2]=p):p=e[2];let c=p,m;e[3]!==n||e[4]!==a.id?(m=s(S=>{S.stopPropagation(),n(a.id)},"u"),e[3]=n,e[4]=a.id,e[5]=m):m=e[5];let k=m,g=t?"bg-sidebar-accent font-medium text-foreground":"text-muted-foreground",x;e[6]!==g?(x=te("flex min-w-0 flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] outline-none transition-colors hover:bg-sidebar-accent focus-visible:bg-sidebar-accent",g),e[6]=g,e[7]=x):x=e[7];let b=`sql-query-${a.id}`,u;e[8]===Symbol.for("react.memo_cache_sentinel")?(u=(0,r.jsx)("svg",{"aria-hidden":"true",className:"size-3.5 shrink-0 opacity-70",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M4 6h16M4 12h10M4 18h7"})}),e[8]=u):u=e[8];let y;e[9]!==a.name?(y=(0,r.jsx)("span",{className:"truncate",children:a.name}),e[9]=a.name,e[10]=y):y=e[10];let v;e[11]!==t||e[12]!==c||e[13]!==x||e[14]!==b||e[15]!==y?(v=(0,r.jsxs)("button",{"aria-pressed":t,className:x,"data-testid":b,onClick:c,type:"button",children:[u,y]}),e[11]=t,e[12]=c,e[13]=x,e[14]=b,e[15]=y,e[16]=v):v=e[16];let N;e[17]!==d?(N=d("Delete query"),e[17]=d,e[18]=N):N=e[18];let f;e[19]!==d?(f=d("Delete query"),e[19]=d,e[20]=f):f=e[20];let C;e[21]===Symbol.for("react.memo_cache_sentinel")?(C=(0,r.jsx)("svg",{"aria-hidden":"true",className:"size-3.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M5 7h14M9 7V5h6v2m-1 0v12H10V7M7 7v13h10V7"})}),e[21]=C):C=e[21];let q;e[22]!==k||e[23]!==f||e[24]!==N?(q=(0,r.jsx)("button",{"aria-label":N,className:"me-1 hidden size-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-destructive/10 hover:text-destructive group-hover/q:flex",onClick:k,title:f,type:"button",children:C}),e[22]=k,e[23]=f,e[24]=N,e[25]=q):q=e[25];let L;return e[26]!==q||e[27]!==v?(L=(0,r.jsxs)("li",{className:"group/q flex items-center",children:[v,q]}),e[26]=q,e[27]=v,e[28]=L):L=e[28],L},"Gt"),Xt=s(l=>{let e=(0,Y.c)(58),{activeId:t,history:n,listRef:o,onClearHistory:a,onDelete:d,onLoadHistory:p,onLoadTemplate:c,onNew:m,onSearchChange:k,onSelect:g,queries:x,search:b}=l,u=K(),y;if(e[0]!==x||e[1]!==b){let I=b.trim().toLowerCase();y=I===""?[...x]:x.filter(T=>T.name.toLowerCase().includes(I)),e[0]=x,e[1]=b,e[2]=y}else y=e[2];let v=y,N;e[3]!==u?(N=u("Search queries\u2026"),e[3]=u,e[4]=N):N=e[4];let f;e[5]!==k||e[6]!==b||e[7]!==N?(f=(0,r.jsx)("input",{className:"h-8 min-w-0 flex-1 rounded-md border border-border bg-background px-2 text-xs outline-none focus-visible:border-ring","data-testid":"sql-search",onChange:k,placeholder:N,type:"text",value:b}),e[5]=k,e[6]=b,e[7]=N,e[8]=f):f=e[8];let C;e[9]!==u?(C=u("New query"),e[9]=u,e[10]=C):C=e[10];let q;e[11]!==u?(q=u("New query"),e[11]=u,e[12]=q):q=e[12];let L;e[13]===Symbol.for("react.memo_cache_sentinel")?(L=(0,r.jsx)("svg",{"aria-hidden":"true",className:"size-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.7,viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M12 5v14M5 12h14"})}),e[13]=L):L=e[13];let S;e[14]!==m||e[15]!==C||e[16]!==q?(S=(0,r.jsx)("button",{"aria-label":C,className:"flex size-8 shrink-0 items-center justify-center rounded-md border border-border text-foreground outline-none transition-colors hover:bg-accent focus-visible:bg-accent","data-testid":"sql-new",onClick:m,title:q,type:"button",children:L}),e[14]=m,e[15]=C,e[16]=q,e[17]=S):S=e[17];let M;e[18]!==f||e[19]!==S?(M=(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-border p-2",children:[f,S]}),e[18]=f,e[19]=S,e[20]=M):M=e[20];let O;e[21]!==u?(O=u("Private"),e[21]=u,e[22]=O):O=e[22];let _;e[23]!==O?(_=(0,r.jsx)("p",{className:"px-1 pb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:O}),e[23]=O,e[24]=_):_=e[24];let A;e[25]!==t||e[26]!==v||e[27]!==o||e[28]!==d||e[29]!==g||e[30]!==u?(A=v.length===0?(0,r.jsx)("p",{className:"px-1 py-2 text-xs text-muted-foreground","data-testid":"sql-private-empty",children:u("No saved queries yet \u2014 they save to this browser as you type.")}):(0,r.jsx)("ul",{className:"flex flex-col gap-px","data-testid":"sql-private",ref:o,children:v.map(I=>(0,r.jsx)(Vt,{active:t===I.id,onDelete:d,onSelect:g,query:I},I.id))}),e[25]=t,e[26]=v,e[27]=o,e[28]=d,e[29]=g,e[30]=u,e[31]=A):A=e[31];let W;e[32]!==_||e[33]!==A?(W=(0,r.jsxs)("div",{children:[_,A]}),e[32]=_,e[33]=A,e[34]=W):W=e[34];let $;e[35]!==u?($=u("Reference"),e[35]=u,e[36]=$):$=e[36];let P;e[37]!==$?(P=(0,r.jsx)("p",{className:"px-1 pb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:$}),e[37]=$,e[38]=P):P=e[38];let H;e[39]!==c?(H=Fe.map(I=>(0,r.jsx)("li",{children:(0,r.jsxs)("button",{className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] text-muted-foreground outline-none transition-colors hover:bg-sidebar-accent hover:text-foreground focus-visible:bg-sidebar-accent","data-sql":I.sql,onClick:c,type:"button",children:[(0,r.jsx)("svg",{"aria-hidden":"true",className:"size-3.5 shrink-0 opacity-70",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M7 4h7l4 4v12H7zM14 4v4h4"})}),I.label]})},I.label)),e[39]=c,e[40]=H):H=e[40];let z;e[41]!==H?(z=(0,r.jsx)("ul",{className:"flex flex-col gap-px",children:H}),e[41]=H,e[42]=z):z=e[42];let R;e[43]!==P||e[44]!==z?(R=(0,r.jsxs)("div",{children:[P,z]}),e[43]=P,e[44]=z,e[45]=R):R=e[45];let D;e[46]!==n||e[47]!==a||e[48]!==p||e[49]!==u?(D=n.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-1 pb-1",children:[(0,r.jsx)("p",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:u("History")}),(0,r.jsx)("button",{className:"rounded px-1 text-[11px] text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:text-foreground","data-testid":"sql-history-clear",onClick:a,type:"button",children:u("Clear history")})]}),(0,r.jsx)("ul",{className:"flex flex-col gap-px","data-testid":"sql-history",children:n.map(I=>(0,r.jsx)("li",{children:(0,r.jsxs)("button",{className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] text-muted-foreground outline-none transition-colors hover:bg-sidebar-accent hover:text-foreground focus-visible:bg-sidebar-accent","data-sql":I.sql,"data-testid":"sql-history-item",onClick:p,title:I.sql,type:"button",children:[(0,r.jsx)("svg",{"aria-hidden":"true",className:"size-3.5 shrink-0 opacity-70",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M12 8v4l3 2M12 21a9 9 0 1 1 0-18 9 9 0 0 1 0 18Z"})}),(0,r.jsx)("span",{className:"truncate font-mono",children:I.sql})]})},`${I.at.toString()}:${I.sql}`))})]}),e[46]=n,e[47]=a,e[48]=p,e[49]=u,e[50]=D):D=e[50];let B;e[51]!==W||e[52]!==R||e[53]!==D?(B=(0,r.jsxs)("div",{className:"flex flex-1 flex-col gap-4 overflow-y-auto p-2",children:[W,R,D]}),e[51]=W,e[52]=R,e[53]=D,e[54]=B):B=e[54];let j;return e[55]!==B||e[56]!==M?(j=(0,r.jsxs)("aside",{className:"flex h-full w-64 shrink-0 flex-col border-e border-border bg-sidebar",children:[M,B]}),e[55]=B,e[56]=M,e[57]=j):j=e[57],j},"Qt"),Qt=ne(le.listTables),Zt=ne(le.readTablePage),en=s(l=>{let e=(0,Y.c)(16),t=be(),n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=[],e[0]=n):n=e[0];let[o,a]=(0,E.useState)(n),d;e[1]===Symbol.for("react.memo_cache_sentinel")?(d={},e[1]=d):d=e[1];let[p,c]=(0,E.useState)(d),m;e[2]===Symbol.for("react.memo_cache_sentinel")?(m=new Set,e[2]=m):m=e[2];let k=(0,E.useRef)(m),g,x;e[3]!==t||e[4]!==l?(g=s(()=>{let f={cancelled:!1};return X((async()=>{try{let C=await t.query(Qt,{},re(l));f.cancelled||(a(C.map(nn)),c({}),k.current=new Set)}catch{f.cancelled||(a([]),c({}),k.current=new Set)}})()),()=>{f.cancelled=!0}},"x"),x=[t,l],e[3]=t,e[4]=l,e[5]=g,e[6]=x):(g=e[5],x=e[6]),(0,E.useEffect)(g,x);let b;e[7]!==t||e[8]!==l?(b=s(f=>{k.current.has(f)||(k.current.add(f),X((async()=>{try{let C=await t.query(Zt,{limit:1,offset:0,table:f},re(l));c(q=>({...q,[f]:C.columns}))}catch{k.current.delete(f)}})()))},"p"),e[7]=t,e[8]=l,e[9]=b):b=e[9];let u=b,y;e[10]!==p||e[11]!==o?(y={columns:p,tables:o},e[10]=p,e[11]=o,e[12]=y):y=e[12];let v=y,N;return e[13]!==u||e[14]!==v?(N={probe:u,schema:v},e[13]=u,e[14]=v,e[15]=N):N=e[15],N},"en"),ge=/\b(?:from|join|update|into)\s+([a-z_][\w$]*)|\b([a-z_][\w$]*)\s*\./gi,tn=s(l=>{let e=new Set;ge.lastIndex=0;let t=ge.exec(l);for(;t!==null;)e.add(t[1]??t[2]),t=ge.exec(l);return[...e]},"tn");function nn(l){return l.name}s(nn,"nn");var rn="lunora-studio-sql-tabs",ln="lunora-studio-sql-active-tab",ye=12,Q=s((l="",e="")=>({activeId:null,id:fe("tab"),name:e,sql:l}),"Q"),on=s(()=>he(ln,""),"on"),sn=s(l=>{let[e,t]=oe(rn),[n,o]=on(),a=(0,E.useRef)(null);e.length===0&&a.current===null&&(a.current=l()),(0,E.useEffect)(()=>{if(e.length===0&&a.current!==null){let p=a.current;t([p])}},[t,e.length]);let d=e.length===0&&a.current!==null?[a.current]:e;return{activeId:d.some(p=>p.id===n)?n:d[0]?.id??"",setActiveId:o,setTabs:t,tabs:d}},"sn"),Pe=s(l=>l.activeId===null&&l.sql.trim()!=="","De"),an=s((l,e)=>[...l,e].slice(-ye),"an"),cn=s((l,e,t)=>{let n=l.findIndex(a=>a.id===e);if(n===-1)return{activeId:l[0]?.id??"",tabs:[...l]};let o=l.filter(a=>a.id!==e);if(o.length===0){let a=t();return{activeId:a.id,tabs:[a]}}return{activeId:o[Math.min(n,o.length-1)].id,tabs:o}},"cn"),dn=s((l,e)=>{let t=l.filter(n=>n.id===e);return t.length===0?{activeId:l[0]?.id??"",tabs:[...l]}:{activeId:e,tabs:t}},"dn"),un=s((l,e,t)=>{let n=l.findIndex(a=>a.id===e);if(n===-1)return{activeId:t,tabs:[...l]};let o=l.slice(0,n+1);return{activeId:o.some(a=>a.id===t)?t:e,tabs:o}},"un"),mn=s(l=>{let e=l();return{activeId:e.id,tabs:[e]}},"mn"),pn=s((l,e,t)=>{if(l==="others")return e.filter(n=>n.id!==t);if(l==="right"){let n=e.findIndex(o=>o.id===t);return n===-1?[]:e.slice(n+1)}return[...e]},"pn"),bn=s((l,e)=>l.trim()===""?e:(l.split(`
|
|
3
|
-
`)[0]??l).slice(0,24),"fn"),hn=s(l=>{let e=(0,Y.c)(14),{initial:t,onCancel:n,onCommit:o,placeholder:a,testId:d}=l,p=K(),c=gn,m;e[0]!==o?(m=s(y=>{o(y.currentTarget.value.trim())},"u"),e[0]=o,e[1]=m):m=e[1];let k=m,g;e[2]!==n||e[3]!==o?(g=s(y=>{y.key==="Enter"?o(y.currentTarget.value.trim()):y.key==="Escape"&&n()},"x"),e[2]=n,e[3]=o,e[4]=g):g=e[4];let x=g,b;e[5]!==p?(b=p("Tab title"),e[5]=p,e[6]=b):b=e[6];let u;return e[7]!==t||e[8]!==k||e[9]!==x||e[10]!==a||e[11]!==b||e[12]!==d?(u=(0,r.jsx)("input",{"aria-label":b,className:"w-40 rounded border border-ring bg-background px-1 py-0.5 text-xs outline-none","data-testid":d,defaultValue:t,onBlur:k,onKeyDown:x,placeholder:a,ref:c,type:"text"}),e[7]=t,e[8]=k,e[9]=x,e[10]=a,e[11]=b,e[12]=d,e[13]=u):u=e[13],u},"bn"),fn=s(l=>{let e=(0,Y.c)(29),{idBase:t,onDiscard:n,onKeep:o}=l,a=K(),d=`sql-tab-close-prompt-${t}`,p;e[0]!==a?(p=a("Discard?"),e[0]=a,e[1]=p):p=e[1];let c;e[2]!==p?(c=(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground",children:p}),e[2]=p,e[3]=c):c=e[3];let m;e[4]!==a?(m=a("Discard changes"),e[4]=a,e[5]=m):m=e[5];let k=`sql-tab-close-confirm-${t}`,g;e[6]!==a?(g=a("Discard changes"),e[6]=a,e[7]=g):g=e[7];let x;e[8]===Symbol.for("react.memo_cache_sentinel")?(x=(0,r.jsx)("svg",{"aria-hidden":"true",className:"size-3",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.4,viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M5 13l4 4L19 7"})}),e[8]=x):x=e[8];let b;e[9]!==n||e[10]!==m||e[11]!==k||e[12]!==g?(b=(0,r.jsx)("button",{"aria-label":m,className:"flex size-5 items-center justify-center rounded text-destructive hover:bg-destructive/10","data-testid":k,onClick:n,title:g,type:"button",children:x}),e[9]=n,e[10]=m,e[11]=k,e[12]=g,e[13]=b):b=e[13];let u;e[14]!==a?(u=a("Keep editing"),e[14]=a,e[15]=u):u=e[15];let y=`sql-tab-close-cancel-${t}`,v;e[16]!==a?(v=a("Keep editing"),e[16]=a,e[17]=v):v=e[17];let N;e[18]===Symbol.for("react.memo_cache_sentinel")?(N=(0,r.jsx)("svg",{"aria-hidden":"true",className:"size-3",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.4,viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M6 6l12 12M18 6 6 18"})}),e[18]=N):N=e[18];let f;e[19]!==o||e[20]!==y||e[21]!==v||e[22]!==u?(f=(0,r.jsx)("button",{"aria-label":u,className:"flex size-5 items-center justify-center rounded text-muted-foreground hover:bg-accent","data-testid":y,onClick:o,title:v,type:"button",children:N}),e[19]=o,e[20]=y,e[21]=v,e[22]=u,e[23]=f):f=e[23];let C;return e[24]!==d||e[25]!==f||e[26]!==c||e[27]!==b?(C=(0,r.jsxs)("span",{className:"flex shrink-0 items-center gap-1","data-testid":d,role:"group",children:[c,b,f]}),e[24]=d,e[25]=f,e[26]=c,e[27]=b,e[28]=C):C=e[28],C},"hn"),xn=s(l=>{let e=(0,Y.c)(47),{active:t,canClose:n,onClose:o,onMenu:a,onRename:d,onSelect:p,tab:c}=l,m=K(),[k,g]=(0,E.useState)(!1),[x,b]=(0,E.useState)(!1),u;e[0]!==a||e[1]!==c.id?(u=s(F=>{a(c.id,F)},"d"),e[0]=a,e[1]=c.id,e[2]=u):u=e[2];let y=u,v;e[3]!==p||e[4]!==c.id?(v=s(()=>{p(c.id)},"g"),e[3]=p,e[4]=c.id,e[5]=v):v=e[5];let N=v,f;e[6]===Symbol.for("react.memo_cache_sentinel")?(f=s(()=>{g(!0)},"b"),e[6]=f):f=e[6];let C=f,q;e[7]!==o||e[8]!==c?(q=s(F=>{F.stopPropagation(),Pe(c)?b(!0):o(c.id)},"q"),e[7]=o,e[8]=c,e[9]=q):q=e[9];let L=q,S;e[10]!==o||e[11]!==c.id?(S=s(F=>{F.stopPropagation(),b(!1),o(c.id)},"S"),e[10]=o,e[11]=c.id,e[12]=S):S=e[12];let M=S,O;e[13]===Symbol.for("react.memo_cache_sentinel")?(O=s(F=>{F.stopPropagation(),b(!1)},"L"),e[13]=O):O=e[13];let _=O,A;e[14]!==d||e[15]!==c.id?(A=s(F=>{d(c.id,F),g(!1)},"M"),e[14]=d,e[15]=c.id,e[16]=A):A=e[16];let W=A,$;e[17]===Symbol.for("react.memo_cache_sentinel")?($=s(()=>{g(!1)},"z"),e[17]=$):$=e[17];let P=$,H;e[18]!==c.name?(H=c.name.trim(),e[18]=c.name,e[19]=H):H=e[19];let z=H,R;e[20]!==m||e[21]!==c.sql?(R=bn(c.sql,m("Untitled")),e[20]=m,e[21]=c.sql,e[22]=R):R=e[22];let D=R,B=t?"bg-background text-foreground":"bg-muted/40 text-muted-foreground hover:text-foreground",j;e[23]!==B?(j=te("group/tab flex shrink-0 items-center gap-1 border-e border-border ps-3 pe-1.5 text-xs",B),e[23]=B,e[24]=j):j=e[24];let I=`sql-tab-${c.id}`,T;e[25]!==t||e[26]!==W||e[27]!==z||e[28]!==D||e[29]!==k||e[30]!==N||e[31]!==m||e[32]!==c.id?(T=k?(0,r.jsx)(hn,{initial:z,onCancel:P,onCommit:W,placeholder:D,testId:`sql-tab-rename-${c.id}`}):(0,r.jsx)("button",{"aria-pressed":t,className:"max-w-40 truncate py-1.5 outline-none","data-testid":`sql-tab-select-${c.id}`,onClick:N,onDoubleClick:C,title:m("Double-click to rename"),type:"button",children:z===""?D:z}),e[25]=t,e[26]=W,e[27]=z,e[28]=D,e[29]=k,e[30]=N,e[31]=m,e[32]=c.id,e[33]=T):T=e[33];let J;e[34]!==n||e[35]!==M||e[36]!==x||e[37]!==L||e[38]!==m||e[39]!==c.id?(J=n&&(x?(0,r.jsx)(fn,{idBase:c.id,onDiscard:M,onKeep:_}):(0,r.jsx)("button",{"aria-label":m("Close tab"),className:"flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-destructive/10 hover:text-destructive","data-testid":`sql-tab-close-${c.id}`,onClick:L,title:m("Close tab"),type:"button",children:(0,r.jsx)("svg",{"aria-hidden":"true",className:"size-3",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M6 6l12 12M18 6 6 18"})})})),e[34]=n,e[35]=M,e[36]=x,e[37]=L,e[38]=m,e[39]=c.id,e[40]=J):J=e[40];let V;return e[41]!==y||e[42]!==j||e[43]!==I||e[44]!==T||e[45]!==J?(V=(0,r.jsxs)("div",{className:j,"data-testid":I,onContextMenu:y,children:[T,J]}),e[41]=y,e[42]=j,e[43]=I,e[44]=T,e[45]=J,e[46]=V):V=e[46],V},"xn");function gn(l){l?.focus(),l?.select()}s(gn,"gn");var vn=ne(le.runSql),yn="lunora-studio-sql-queries",Nn="lunora-studio-sql-history",kn="lunora-studio-sql-split-view",wn=25,qn={minWidth:"2.75rem",paddingInline:"0.5rem"},ve={error:null,pane:"results",result:null},Cn=s(l=>{let e=(0,Y.c)(16),{result:t}=l;if(t.columns.length===0){let c=t.rowCount===0?"0 rows":"",m;return e[0]!==c?(m=(0,r.jsx)("p",{className:"p-4 text-sm text-muted-foreground",children:c}),e[0]=c,e[1]=m):m=e[1],m}let n;e[2]!==t.columns?(n=t.columns.map(Sn),e[2]=t.columns,e[3]=n):n=e[3];let o;e[4]!==n?(o=(0,r.jsx)(Te,{className:"sticky top-0 z-10 bg-muted",children:(0,r.jsx)(xe,{children:n})}),e[4]=n,e[5]=o):o=e[5];let a;if(e[6]!==t.columns||e[7]!==t.rows){let c;e[9]!==t.columns?(c=s((m,k)=>(0,r.jsx)(xe,{"data-testid":"sql-row",children:t.columns.map(g=>(0,r.jsx)(Me,{className:"max-w-md truncate font-mono text-xs",children:(0,r.jsx)(_e,{value:m[g]})},g))},k),"i"),e[9]=t.columns,e[10]=c):c=e[10],a=t.rows.map(c),e[6]=t.columns,e[7]=t.rows,e[8]=a}else a=e[8];let d;e[11]!==a?(d=(0,r.jsx)(Oe,{children:a}),e[11]=a,e[12]=d):d=e[12];let p;return e[13]!==o||e[14]!==d?(p=(0,r.jsxs)(Re,{"data-testid":"sql-rows",children:[o,d]}),e[13]=o,e[14]=d,e[15]=p):p=e[15],p},"Cn"),Bn=s(({initialShardKey:l})=>{let e=be(),t=K(),[n,o]=oe(yn),[a,d]=oe(Nn),[p,c]=(0,E.useState)(""),m=s(()=>Q(Fe[0]?.sql??""),"u"),{activeId:k,setActiveId:g,setTabs:x,tabs:b}=sn(m),[u,y]=(0,E.useState)({}),[v,N]=(0,E.useState)(l??""),[f,C]=(0,E.useState)(!1),[q,L]=he(kn,!1),[S,M]=(0,E.useState)(null),[O,_]=(0,E.useState)(null),A=(0,E.useRef)(null),W=(0,E.useRef)(null),$=(0,E.useRef)(null),P=(0,E.useId)(),{probe:H,schema:z}=en(v),R=b.find(i=>i.id===k)??b[0]??Q(),D=R.sql,{activeId:B}=R,j=u[R.id]??ve,{error:I,result:T}=j,J=j.pane,V=s(i=>{x(h=>h.map(w=>w.id===R.id?{...w,...i}:w))},"G"),F=s(i=>{y(h=>{let w=h[R.id]??ve;return{...h,[R.id]:{error:i.error,pane:i.pane??w.pane,result:i.result}}})},"F"),ke=s(i=>{y(h=>{let w=h[R.id]??ve;return{...h,[R.id]:{...w,pane:i}}})},"ve"),ie=s(i=>{V({sql:i}),B!==null&&o(h=>h.map(w=>w.id===B?{...w,sql:i}:w))},"re"),Je=Ut(z,W,ie),{close:ae,commit:we,move:ce,refresh:Z,state:G}=Je,Ue=s(i=>{ce(i-(G?.active??0)),we()},"_e");(0,E.useEffect)(()=>{let i=W.current;i!==null&&i===document.activeElement&&Z(i.value,i.selectionStart)},[Z,z]);let Ye=s(i=>{d(h=>h[0]?.sql===i?h:[{at:Date.now(),sql:i},...h.filter(w=>w.sql!==i)].slice(0,wn))},"Ae"),de=s(async i=>{if(D.trim()==="")return;C(!0);let h=i==="explain"?`EXPLAIN QUERY PLAN ${D}`:D;try{let w=await e.query(vn,{sql:h},re(v));F({error:null,pane:i,result:w}),Ie(v),Ye(h)}catch(w){F({error:Se(w),pane:i,result:null})}finally{C(!1)}},"se"),Ke=s(()=>{X(de("results"))},"ze"),Ge=s(i=>{let{selectionStart:h,value:w}=i.target;ie(w);for(let U of tn(w))H(U);Z(w,h)},"je"),Ve=s(i=>{let h=i.currentTarget;Z(h.value,h.selectionStart)},"Be"),Xe=s(i=>{if(G!==null){if(i.key==="ArrowDown"){i.preventDefault(),ce(1);return}if(i.key==="ArrowUp"){i.preventDefault(),ce(-1);return}if(i.key==="Escape"){i.preventDefault(),ae();return}if((i.key==="Enter"||i.key==="Tab")&&!i.metaKey&&!i.ctrlKey&&we()){i.preventDefault();return}}(i.metaKey||i.ctrlKey)&&i.key==="Enter"&&(i.preventDefault(),X(de(J)))},"We"),Qe=s(()=>{requestAnimationFrame(()=>{ae()})},"Fe"),Ze=s(i=>{A.current!==null&&(A.current.scrollTop=i.currentTarget.scrollTop)},"He"),ee=s((i,h)=>{x(w=>w.map(U=>U.id===R.id?{...U,activeId:h,sql:i}:U)),F({error:null,result:null})},"te"),et=s(()=>{let i={id:fe("q"),name:t("Untitled query"),sql:""};o(h=>[i,...h]),ee("",i.id)},"Pe"),tt=s(i=>{let h=n.find(w=>w.id===i);h!==void 0&&(ee(h.sql,i),$.current?.querySelector(`[data-testid="sql-query-${i}"]`)?.scrollIntoView({block:"nearest"}))},"Ue"),nt=s(i=>{o(h=>h.filter(w=>w.id!==i)),x(h=>h.map(w=>w.activeId===i?{...w,activeId:null}:w))},"Je"),rt=s(i=>{ee(i.currentTarget.dataset.sql??"",null)},"Ke"),lt=s(i=>{ee(i.currentTarget.dataset.sql??"",null)},"Ye"),ot=s(()=>{d([])},"Ve"),st=s(()=>{ie(At(D))},"Ge"),it=s(()=>{if(b.length>=ye)return;let i=Q();x(h=>an(h,i)),g(i.id)},"Qe"),qe=s(i=>{M(null),_(null),x(i.tabs),g(i.activeId);let h=new Set(i.tabs.map(w=>w.id));y(w=>Object.fromEntries(Object.entries(w).filter(([U])=>h.has(U))))},"Ne"),at=s(i=>{qe(cn(b,i,Q))},"Xe"),Ce=s((i,h)=>{qe(i==="others"?dn(b,h):i==="right"?un(b,h,k):mn(Q))},"ke"),ue=s(i=>{S!==null&&(pn(i,b,S.id).some(h=>Pe(h))?_(i):Ce(i,S.id))},"ie"),ct=s((i,h)=>{h.preventDefault(),_(null),M({id:i,x:h.clientX,y:h.clientY})},"Ze"),dt=s(()=>{M(null),_(null)},"et"),ut=s(i=>{i.preventDefault(),M(null),_(null)},"tt"),mt=s(()=>{ue("others")},"nt"),pt=s(()=>{ue("right")},"rt"),bt=s(()=>{ue("all")},"lt"),ht=s(()=>{S!==null&&O!==null&&Ce(O,S.id),_(null)},"ot"),ft=s(()=>{_(null)},"st"),xt=S===null?void 0:{left:S.x,top:S.y},gt=s(i=>{ae(),g(i)},"at"),vt=s((i,h)=>{x(w=>w.map(U=>U.id===i?{...U,name:h}:U))},"ct"),yt=s(()=>{ke("results")},"dt"),Nt=s(()=>{X(de("explain"))},"ut"),kt=s(()=>{ke("chart")},"mt"),wt=s(()=>{L(!q)},"pt"),qt=D.split(`
|
|
4
|
-
`).length,Ct=s(i=>{c(i.target.value)},"bt"),me=s(i=>`border-b-2 px-3 py-2 text-sm outline-none transition-colors ${i?"border-foreground font-medium text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`,"ae"),St=q?"flex min-h-0 flex-1 flex-row":"flex min-h-0 flex-1 flex-col",It=q?"flex w-2/5 min-h-0 min-w-0 shrink-0 flex-col border-s border-border":"flex h-2/5 min-h-0 shrink-0 flex-col border-t border-border";return(0,r.jsxs)("div",{className:"flex h-full min-w-0","data-testid":"lunora-sql-editor",children:[(0,r.jsx)(Xt,{activeId:B,history:a,listRef:$,onClearHistory:ot,onDelete:nt,onLoadHistory:lt,onLoadTemplate:rt,onNew:et,onSearchChange:Ct,onSelect:tt,queries:n,search:p}),(0,r.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,r.jsxs)("div",{className:"flex shrink-0 items-stretch overflow-x-auto border-b border-border bg-muted/30","data-testid":"sql-tab-strip",role:"tablist",children:[b.map(i=>(0,r.jsx)(xn,{active:i.id===R.id,canClose:b.length>1,onClose:at,onMenu:ct,onRename:vt,onSelect:gt,tab:i},i.id)),(0,r.jsx)("button",{"aria-label":t("New tab"),className:"flex size-8 shrink-0 items-center justify-center text-muted-foreground outline-none transition-colors hover:bg-accent hover:text-foreground focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-40","data-testid":"sql-tab-add",disabled:b.length>=ye,onClick:it,title:t("New tab"),type:"button",children:(0,r.jsx)("svg",{"aria-hidden":"true",className:"size-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.7,viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M12 5v14M5 12h14"})})})]}),S!==null&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"fixed inset-0 z-40","data-testid":"sql-tab-menu-backdrop",onClick:dt,onContextMenu:ut,role:"presentation"}),(0,r.jsx)("div",{className:"fixed z-50 min-w-44 rounded-md border border-border bg-popover py-1 text-popover-foreground shadow-md","data-testid":"sql-tab-menu",role:"menu",style:xt,children:O===null?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{className:"flex w-full items-center px-3 py-1.5 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-40","data-testid":"sql-tab-menu-close-others",disabled:b.length<=1,onClick:mt,role:"menuitem",type:"button",children:t("Close other tabs")}),(0,r.jsx)("button",{className:"flex w-full items-center px-3 py-1.5 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-40","data-testid":"sql-tab-menu-close-right",disabled:b.findIndex(i=>i.id===S.id)>=b.length-1,onClick:pt,role:"menuitem",type:"button",children:t("Close tabs to the right")}),(0,r.jsx)("button",{className:"flex w-full items-center px-3 py-1.5 text-start text-xs outline-none hover:bg-accent focus-visible:bg-accent","data-testid":"sql-tab-menu-close-all",onClick:bt,role:"menuitem",type:"button",children:t("Close all tabs")})]}):(0,r.jsxs)("div",{className:"px-3 py-1.5","data-testid":"sql-tab-menu-confirm",children:[(0,r.jsx)("p",{className:"pb-1.5 text-xs text-muted-foreground",children:t("Discard unsaved tabs?")}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("button",{className:"rounded px-2 py-1 text-xs font-medium text-destructive outline-none hover:bg-destructive/10 focus-visible:bg-destructive/10","data-testid":"sql-tab-menu-confirm-discard",onClick:ht,type:"button",children:t("Discard")}),(0,r.jsx)("button",{className:"rounded px-2 py-1 text-xs text-muted-foreground outline-none hover:bg-accent focus-visible:bg-accent","data-testid":"sql-tab-menu-confirm-cancel",onClick:ft,type:"button",children:t("Cancel")})]})]})})]}),(0,r.jsxs)("div",{className:St,children:[(0,r.jsxs)("div",{className:"flex min-h-0 min-w-0 flex-1",children:[(0,r.jsx)("div",{"aria-hidden":"true",className:"shrink-0 select-none overflow-hidden border-e border-border bg-muted/30 py-3 text-end font-mono text-xs leading-5 text-muted-foreground/60",ref:A,style:qn,children:Array.from({length:qt},(i,h)=>(0,r.jsx)("div",{children:h+1},h))}),(0,r.jsxs)("div",{className:"relative min-w-0 flex-1",children:[(0,r.jsx)("textarea",{"aria-activedescendant":G===null?void 0:`${P}-opt-${G.active.toString()}`,"aria-autocomplete":"list","aria-controls":G===null?void 0:P,"aria-expanded":G!==null,"aria-label":t("SQL query"),className:"size-full resize-none bg-background p-3 font-mono text-xs leading-5 outline-none","data-testid":"sql-input",onBlur:Qe,onChange:Ge,onKeyDown:Xe,onScroll:Ze,onSelect:Ve,placeholder:"SELECT * FROM \u2026",ref:W,role:"combobox",spellCheck:!1,value:D}),(0,r.jsx)(Gt,{listboxId:P,onPick:Ue,state:G})]})]}),(0,r.jsxs)("div",{className:It,children:[(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-border pe-2",children:[(0,r.jsx)("button",{className:me(J==="results"),"data-testid":"sql-tab-results",onClick:yt,type:"button",children:t("Results")}),(0,r.jsx)("button",{className:me(J==="chart"),"data-testid":"sql-tab-chart",onClick:kt,type:"button",children:t("Chart")}),(0,r.jsx)("button",{className:me(J==="explain"),"data-testid":"sql-tab-explain",onClick:Nt,type:"button",children:t("Explain")}),(0,r.jsxs)("div",{className:"ms-auto flex items-center gap-2",children:[(0,r.jsx)("button",{"aria-label":t("Split editor and results"),"aria-pressed":q,className:`inline-flex items-center rounded-md border border-border px-2 py-1.5 outline-none transition-colors hover:bg-accent focus-visible:bg-accent ${q?"bg-accent text-foreground":"text-muted-foreground"}`,"data-testid":"sql-split-toggle",onClick:wt,title:t("Split editor and results"),type:"button",children:(0,r.jsxs)("svg",{"aria-hidden":"true",className:"size-4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.7,viewBox:"0 0 24 24",children:[(0,r.jsx)("rect",{height:"16",rx:"2",width:"18",x:"3",y:"4"}),(0,r.jsx)("path",{d:"M12 4v16"})]})}),T!==null&&T.columns.length>0&&(0,r.jsx)(Ae,{columns:T.columns,name:"query-result",rows:T.rows}),(0,r.jsx)("button",{className:"inline-flex items-center rounded-md border border-border px-3 py-1.5 text-xs font-medium text-foreground outline-none transition-colors hover:bg-accent focus-visible:bg-accent disabled:pointer-events-none disabled:opacity-50","data-testid":"sql-format",disabled:f,onClick:st,type:"button",children:t("Format")}),(0,r.jsx)(Ee,{onChange:N,testId:"sql-shard-input",value:v}),(0,r.jsxs)("button",{className:"inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground outline-none transition-colors hover:bg-primary/90 focus-visible:bg-primary/90 disabled:pointer-events-none disabled:opacity-50","data-testid":"sql-run",disabled:f,onClick:Ke,type:"button",children:[t(f?"Running\u2026":"Run"),(0,r.jsx)("kbd",{className:"rounded border border-primary-foreground/30 px-1 font-sans text-[10px]",children:"\u2318\u21B5"})]})]})]}),(0,r.jsxs)("div",{className:"min-h-0 flex-1 overflow-auto",children:[I!==null&&(0,r.jsx)(Le,{className:"m-3 font-mono text-xs",testId:"sql-error",variant:"destructive",children:I}),I===null&&T===null&&(0,r.jsx)("p",{className:"p-4 text-sm text-muted-foreground","data-testid":"sql-empty",children:t("Click Run to execute your query.")}),I===null&&T!==null&&(0,r.jsxs)("div",{"data-testid":"sql-result",children:[J==="chart"?(0,r.jsx)(ze,{result:T}):(0,r.jsx)(Cn,{result:T}),(0,r.jsx)("p",{className:"border-t border-border px-3 py-1.5 text-xs text-muted-foreground","data-testid":"sql-count",children:T.truncated?t("Showing the first {max} of {count} rows.",{count:T.rowCount,max:T.rows.length}):t("{count} rows",{count:T.rowCount})})]})]})]})]})]})]})},"Hn");function Sn(l){return(0,r.jsx)(De,{children:l},l)}s(Sn,"Sn");export{Bn as SqlEditorPanel};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as v}from"./chunk-HK4OVYG3.js";import"./chunk-XXQUMVWH.js";import{b as $}from"./chunk-BMQJ4CAO.js";import{a as A,b as I,c as j,d as x,e as n,f as c}from"./chunk-MIQTKZAR.js";import{a as k,e as S}from"./chunk-UZERI5YC.js";import{b as y}from"./chunk-THIXMMZD.js";import"./chunk-6ST5ECQA.js";import{a as R}from"./chunk-AADXUXZO.js";import"./chunk-EN2QAEO4.js";import"./chunk-XBDKZZ67.js";import{a as w}from"./chunk-XQCVZAGU.js";import{d as b}from"./chunk-4CGALXS3.js";import"./chunk-AADILRJW.js";import{a as f,e as N,g as E,h as _}from"./chunk-3XIESWL4.js";var T=N(E(),1);var r=N(_(),1);var D=f((e,t)=>({delete:e("Delete"),list:e("List"),read:e("Read"),write:e("Write")})[t],"C"),C={delete:2,list:3,read:0,write:1},K=f(e=>[...e].toSorted((t,a)=>t.bucket.localeCompare(a.bucket)||C[t.on]-C[a.on]||(t.prefix??"").localeCompare(a.prefix??"")),"T"),W=f(()=>{let e=(0,T.c)(14),t=b(),a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a={},e[0]=a):a=e[0];let{data:l,error:i,errorSource:d}=$(R.storageRules,a),h=l!==void 0,m;if(e[1]!==l||e[2]!==i||e[3]!==d||e[4]!==h||e[5]!==t){let g=K(Array.isArray(l?.rules)?l.rules:[]),u;e[7]!==i||e[8]!==d?(u=i!==null&&(0,r.jsx)(v,{error:d,testId:"storage-rules-error"}),e[7]=i,e[8]=d,e[9]=u):u=e[9];let o;e[10]!==t?(o=t("Storage rules are declared in code with defineStorageRule and gate ctx.storage access per bucket. This view is read-only."),e[10]=t,e[11]=o):o=e[11];let p;e[12]!==o?(p=(0,r.jsx)("p",{className:"text-sm text-muted-foreground","data-testid":"storage-rules-note",children:o}),e[12]=o,e[13]=p):p=e[13],m=(0,r.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"lunora-storage-rules-panel",children:[u,p,h&&g.length===0?(0,r.jsx)(w,{description:t("No defineStorageRule is wired through .use(storageRules(...)) in this deployment. Add one to gate object access by key prefix."),testId:"storage-rules-empty",title:t("No storage rules defined")}):(0,r.jsx)(k,{className:"overflow-hidden py-0",children:(0,r.jsx)(S,{className:"px-0",children:(0,r.jsxs)(A,{"data-testid":"storage-rules-table",children:[(0,r.jsx)(I,{children:(0,r.jsxs)(x,{children:[(0,r.jsx)(n,{children:t("Bucket")}),(0,r.jsx)(n,{children:t("Operation")}),(0,r.jsx)(n,{children:t("Key prefix")}),(0,r.jsx)(n,{children:t("Guarded by")})]})}),(0,r.jsx)(j,{children:g.map(s=>(0,r.jsxs)(x,{"data-testid":`storage-rule-${s.bucket}-${s.on}-${s.prefix??""}`,children:[(0,r.jsx)(c,{className:"font-mono text-xs",children:s.bucket}),(0,r.jsx)(c,{children:(0,r.jsx)(y,{variant:"secondary",children:D(t,s.on)})}),(0,r.jsx)(c,{className:"font-mono text-xs",children:s.prefix??(0,r.jsx)("span",{className:"text-muted-foreground",children:t("(whole bucket)")})}),(0,r.jsx)(c,{className:"font-mono text-xs text-muted-foreground",children:s.procedure})]},`${s.bucket}:${s.on}:${s.prefix??""}:${s.procedure}`))})]})})})]}),e[1]=l,e[2]=i,e[3]=d,e[4]=h,e[5]=t,e[6]=m}else m=e[6];return m},"U");export{W as StorageRulesPanel};
|