@lunora/studio 1.0.0-alpha.90 → 1.0.0-alpha.92
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.js +1 -1
- package/dist/mount.js +1 -1
- package/dist/packem_chunks/AdvisorHealthPanel.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 +1 -1
- package/dist/packem_chunks/FileBrowser.js +1 -1
- 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 +1 -1
- 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 -1
- package/dist/packem_chunks/SecurityAdvisorPanel.js +1 -1
- package/dist/packem_chunks/SettingsPanel.js +1 -1
- package/dist/packem_chunks/SqlEditorPanel.js +1 -1
- 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 +1 -1
- package/dist/packem_chunks/migrations-route.js +1 -1
- 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/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/{ApiDocsPanel-DLMeLZ5-.js → ApiDocsPanel-Cu_QmzO0.js} +1 -1
- package/dist/packem_shared/{ApiReferencePanel-9q8BbJl-.js → ApiReferencePanel-DuIU1P8B.js} +1 -1
- package/dist/packem_shared/{CommandPalette--SQwfTW1.js → CommandPalette-mPR8-vIm.js} +1 -1
- package/dist/packem_shared/DataBrowser-BPRDaOHx.js +1 -0
- package/dist/packem_shared/{GlobalDataBrowser-DpkjHfDg.js → GlobalDataBrowser-CeA8bDjX.js} +1 -1
- package/dist/packem_shared/HomePanel-DLP1nQdC.js +1 -0
- package/dist/packem_shared/{MigrationsPanel-dygzHUvg.js → MigrationsPanel-dm_M75mR.js} +1 -1
- package/dist/packem_shared/{OpenRpcReferencePanel-qOZcWXMs.js → OpenRpcReferencePanel-DXeffPFr.js} +1 -1
- package/dist/packem_shared/{ScheduledJobs-D8kBZWBu.js → ScheduledJobs-DDJG9Je7.js} +1 -1
- package/dist/packem_shared/{Studio-forQt-PC.js → Studio-BYg65qWq.js} +1 -1
- package/dist/packem_shared/{StudioApp-B1AWsBzi.js → StudioApp-D0UOg0a_.js} +1 -1
- package/dist/packem_shared/{advisor-view-Pa8HLtBv.js → advisor-view-Coipc04R.js} +1 -1
- package/dist/packem_shared/{data-grid-DcxyIXwG.js → data-grid-Ci4-tZkk.js} +1 -1
- package/dist/packem_shared/{error-alert-t6cpEi0z.js → error-alert--Ie7ofJ0.js} +1 -1
- package/dist/packem_shared/{grid-features-jnrD0SpX.js → grid-features-Db_BNYRo.js} +3 -3
- package/dist/packem_shared/{home-panel-CeeqqV0z.js → home-panel-BtxdqXDe.js} +1 -1
- package/dist/packem_shared/internal-zkEvTqy8.js +2 -0
- package/dist/packem_shared/{recording-client-DRAZEmzE.js → recording-client-DtUxwVNY.js} +1 -1
- package/dist/packem_shared/{reference-view-DnYYWr7I.js → reference-view-DncEStdm.js} +1 -1
- package/dist/packem_shared/{result-chart-DzJOVsaw.js → result-chart-Gywg9DOk.js} +1 -1
- package/dist/packem_shared/{schema-diagram-cg-bz_VL.js → schema-diagram-DTRaCp6Y.js} +1 -1
- package/dist/packem_shared/{studio-BtC7WPbz.js → studio-Drf4en3j.js} +1 -1
- package/dist/packem_shared/{table-list-sidebar-D9Bd4qgi.js → table-list-sidebar-fz0m_4I4.js} +1 -1
- package/dist/packem_shared/{use-admin-query-QJ-ibl5u.js → use-admin-query-CnnyWJXM.js} +1 -1
- package/dist/packem_shared/{use-async-submit-q3ymBJkD.js → use-async-submit-BFIMhRqh.js} +1 -1
- package/dist/packem_shared/{use-auth-config-BObBpdsi.js → use-auth-config-0EnNCdLu.js} +1 -1
- package/dist/packem_shared/{use-sql-assistant-C6dl2_Ty.js → use-sql-assistant-Dtw55kKM.js} +1 -1
- package/dist/packem_shared/wire-codec-BUrWLklj.js +1 -0
- package/dist/standalone/{chunk-ZPLWCC4I.js → chunk-2NX5QU44.js} +1 -1
- package/dist/standalone/{chunk-WB5IUUUU.js → chunk-2QWHVQ6P.js} +1 -1
- package/dist/standalone/{chunk-WLZ7YPBH.js → chunk-3FIN5PH4.js} +4 -4
- package/dist/standalone/{chunk-XZSGE5ST.js → chunk-3XQMTTW2.js} +1 -1
- package/dist/standalone/{chunk-SHMNA6UL.js → chunk-4D7XIQ5Q.js} +1 -1
- package/dist/standalone/{chunk-SF4MF2FT.js → chunk-4PLB4ZNI.js} +1 -1
- package/dist/standalone/{chunk-PB7FNRDB.js → chunk-4VEAVSAZ.js} +1 -1
- package/dist/standalone/{chunk-3AV5CV6K.js → chunk-6QKJ6JPJ.js} +1 -1
- package/dist/standalone/{chunk-IC64YIX5.js → chunk-6WWX4FJB.js} +1 -1
- package/dist/standalone/{chunk-62EKHKTS.js → chunk-6XKVQES4.js} +1 -1
- package/dist/standalone/{chunk-C3HXK3A5.js → chunk-7QMX3D4D.js} +1 -1
- package/dist/standalone/{chunk-ULCZDGWQ.js → chunk-7YXDJXNL.js} +1 -1
- package/dist/standalone/{chunk-DMCYISRF.js → chunk-A7647FJE.js} +1 -1
- package/dist/standalone/{chunk-D3HXVA33.js → chunk-AQT6EPZT.js} +1 -1
- package/dist/standalone/{chunk-QXXIJAD5.js → chunk-AREBQI6D.js} +1 -1
- package/dist/standalone/{chunk-TBBJPPZ3.js → chunk-BCGEI67L.js} +1 -1
- package/dist/standalone/chunk-BENJFRZL.js +1 -0
- package/dist/standalone/{chunk-LQAKPCFX.js → chunk-BYIS2KWZ.js} +1 -1
- package/dist/standalone/{chunk-QYIOW7CD.js → chunk-C6GLTSPO.js} +1 -1
- package/dist/standalone/{chunk-JFW3YNVQ.js → chunk-CMP33R3N.js} +1 -1
- package/dist/standalone/{chunk-5ZXDB6LB.js → chunk-CRHCAN4W.js} +1 -1
- package/dist/standalone/{chunk-BRQMMGOS.js → chunk-CUAGAM2B.js} +1 -1
- package/dist/standalone/chunk-DBWOWJYT.js +11 -0
- package/dist/standalone/{chunk-QV6KV4SD.js → chunk-ESEEVSPC.js} +1 -1
- package/dist/standalone/chunk-F3TP5L34.js +1 -0
- package/dist/standalone/{chunk-6MKDYZ7A.js → chunk-FBNRATNR.js} +1 -1
- package/dist/standalone/{chunk-LAHYLAT4.js → chunk-HKG5I64M.js} +1 -1
- package/dist/standalone/{chunk-GKSRVABT.js → chunk-HWOD25QD.js} +1 -1
- package/dist/standalone/{chunk-XR7RBXKA.js → chunk-IBVBIKUI.js} +1 -1
- package/dist/standalone/{chunk-CTNB2KIA.js → chunk-IGCNMZSB.js} +1 -1
- package/dist/standalone/{chunk-IAKPXGTQ.js → chunk-IUUSMC2R.js} +1 -1
- package/dist/standalone/{chunk-OG4N2XHD.js → chunk-IUYFXK4X.js} +9 -9
- package/dist/standalone/{chunk-E7TB4USI.js → chunk-IZ3ISXSM.js} +1 -1
- package/dist/standalone/{chunk-BUTBQGUU.js → chunk-J3FR2XBV.js} +1 -1
- package/dist/standalone/{chunk-QP7IQOKF.js → chunk-JWXKUXYA.js} +1 -1
- package/dist/standalone/{chunk-OG2AMGOC.js → chunk-KUFAOKU3.js} +1 -1
- package/dist/standalone/{chunk-PM37X2V3.js → chunk-LDYOCGEG.js} +1 -1
- package/dist/standalone/{chunk-CT6ZDXLL.js → chunk-LUU4SDHW.js} +1 -1
- package/dist/standalone/chunk-LYQY7L72.js +4 -0
- package/dist/standalone/{chunk-GSKOAKQ2.js → chunk-LZH7RDRV.js} +1 -1
- package/dist/standalone/{chunk-LJISXTZJ.js → chunk-ML5IJMH6.js} +1 -1
- package/dist/standalone/{chunk-DG7YINFM.js → chunk-N233NOIN.js} +1 -1
- package/dist/standalone/{chunk-QWBRD6PX.js → chunk-NH3VWHCL.js} +1 -1
- package/dist/standalone/{chunk-ARP36PTE.js → chunk-NNRFDPSD.js} +1 -1
- package/dist/standalone/{chunk-AQX2QFCN.js → chunk-O2QUUHGF.js} +1 -1
- package/dist/standalone/{chunk-U6TNNM5U.js → chunk-Q2Q7FR3R.js} +1 -1
- package/dist/standalone/{chunk-Z7G74IH4.js → chunk-Q4AI6JRP.js} +1 -1
- package/dist/standalone/{chunk-AZAGCJVI.js → chunk-QGA2HITH.js} +1 -1
- package/dist/standalone/{chunk-6VTLIGVX.js → chunk-QWJ4HKPY.js} +1 -1
- package/dist/standalone/{chunk-Y7JXGNXD.js → chunk-QZGTDXV5.js} +1 -1
- package/dist/standalone/{chunk-24JLZ2Z5.js → chunk-RHPP74O4.js} +1 -1
- package/dist/standalone/{chunk-AUQKJYHL.js → chunk-RKGCSNAW.js} +1 -1
- package/dist/standalone/{chunk-X665E2HU.js → chunk-RMN2JN4S.js} +1 -1
- package/dist/standalone/{chunk-S4ILMYP5.js → chunk-RNOSWEMO.js} +1 -1
- package/dist/standalone/{chunk-MHAXZQVO.js → chunk-ULYM26IH.js} +1 -1
- package/dist/standalone/{chunk-PGC523I2.js → chunk-WOEGO5M6.js} +1 -1
- package/dist/standalone/{chunk-67DKQC23.js → chunk-XDEDCAYN.js} +1 -1
- package/dist/standalone/{chunk-YOUKADZH.js → chunk-XGMZESWC.js} +1 -1
- package/dist/standalone/{chunk-T6OAYQTX.js → chunk-XKKP2VFZ.js} +1 -1
- package/dist/standalone/{chunk-SP5SBO2W.js → chunk-XTEWLG3J.js} +2 -2
- package/dist/standalone/{chunk-BL6NO3U3.js → chunk-XXXMUP6L.js} +1 -1
- package/dist/standalone/{chunk-LJIFMW67.js → chunk-ZKTWHB7Q.js} +1 -1
- package/dist/standalone/{chunk-53KJRSHE.js → chunk-ZNMZQXWN.js} +1 -1
- package/dist/standalone/{chunk-YU5CI2FD.js → chunk-ZWSTXAG3.js} +1 -1
- package/dist/standalone/studio.js +1 -1
- package/package.json +6 -6
- package/dist/packem_shared/DataBrowser-CZZ_WkJ-.js +0 -1
- package/dist/packem_shared/HomePanel-3baDsDBU.js +0 -1
- package/dist/packem_shared/internal-BSIsQVC6.js +0 -2
- package/dist/standalone/chunk-4COKHD2C.js +0 -1
- package/dist/standalone/chunk-V2U5CL3S.js +0 -11
- package/dist/standalone/chunk-VFQDHG7I.js +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as M}from"react/compiler-runtime";import{useVirtualizer as we}from"@tanstack/react-virtual";import{useState as q,useReducer as Ne,useRef as me,useEffect as he,useMemo as Ce}from"react";import{f as te}from"../packem_shared/log-fields-CoL3hsIQ.js";import{E as Le}from"../packem_shared/error-alert-t6cpEi0z.js";import{g as re}from"../packem_shared/badge-BbuuAio7.js";import{E as Z}from"../packem_shared/empty-state-Cg7t_8qu.js";import{N as oe}from"../packem_shared/use-admin-query-QJ-ibl5u.js";import{S as Se}from"../packem_shared/use-shard-key-B2JtNa5m.js";import{useT as z}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as ne}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{r as ke}from"../packem_shared/shard-history-DMEW5VBE.js";import{l as $e}from"../packem_shared/virtual-rect-1o1veP7R.js";import{useLunora as Re}from"@lunora/react";import{u as Pe}from"../packem_shared/button-BkCrNcAs.js";import{u as j}from"../packem_shared/input-JHu63lTv.js";import{n as Ie,d as Te,m as ge,p as D,f as Ee,u as V}from"../packem_shared/table-DdJBrClo.js";import se from"../packem_shared/useDebounced-CU-uftxO.js";import{a as fe}from"../packem_shared/cf-links-Dmg86v1D.js";import{f as ie,l as Fe,b as de}from"../packem_shared/internal-BSIsQVC6.js";import{jsx as r,jsxs as T,Fragment as qe}from"react/jsx-runtime";import{c as W}from"../packem_shared/utils-bhneXptQ.js";import{L as _e}from"../packem_shared/live-status-CmuRLFKf.js";import{ShardInput as Oe}from"../packem_shared/ShardInput-BVn2iCU0.js";const le=["trace","debug","log","info","warn","error","fatal"],Ae="LOG_ARCHIVE_NOT_CONFIGURED",pe={debug:"secondary",error:"destructive",fatal:"destructive",info:"outline",log:"outline",trace:"outline",warn:"secondary"},Me={cursor:void 0,error:null,loading:!1,notConfigured:!1,rows:null},Ke=(c,e)=>{switch(e.type){case"append":return{...c,cursor:e.cursor,error:null,loading:!1,rows:[...c.rows??[],...e.rows]};case"failed":return{cursor:void 0,error:e.message,loading:!1,notConfigured:!1,rows:null};case"loaded":return{cursor:e.cursor,error:null,loading:!1,notConfigured:!1,rows:e.rows};case"loading":return{...c,error:null,loading:!0,notConfigured:!1};case"notConfigured":return{cursor:void 0,error:null,loading:!1,notConfigured:!0,rows:null};case"pageFailed":return{...c,error:e.message,loading:!1};default:return c}},Ue=c=>{const e=M(33),{row:t}=c;let n;e[0]!==t.fields?(n=te(t.fields),e[0]=t.fields,e[1]=n):n=e[1];const i=n,o=`lg-archive-row-${String(t.ts)}`;let m;e[2]!==t.ts?(m=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=m):m=e[3];let p;e[4]!==m?(p=r(V,{className:"tabular-nums whitespace-nowrap text-xs text-muted-foreground",children:m}),e[4]=m,e[5]=p):p=e[5];const f=pe[t.level];let s;e[6]!==t.level||e[7]!==f?(s=r(V,{children:r(re,{variant:f,children:t.level})}),e[6]=t.level,e[7]=f,e[8]=s):s=e[8];let l;e[9]!==t.functionPath?(l=r(V,{className:"font-mono text-xs",children:t.functionPath}),e[9]=t.functionPath,e[10]=l):l=e[10];let v;e[11]!==t.message?(v=r("div",{className:"truncate",title:t.message,children:t.message}),e[11]=t.message,e[12]=v):v=e[12];let a;e[13]!==i?(a=i!==""&&r("div",{className:"truncate font-mono text-[11px] text-muted-foreground",title:i,children:i}),e[13]=i,e[14]=a):a=e[14];let d;e[15]!==v||e[16]!==a?(d=T(V,{className:"max-w-md",children:[v,a]}),e[15]=v,e[16]=a,e[17]=d):d=e[17];const u=t.traceId??"—";let h;e[18]!==u?(h=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:u}),e[18]=u,e[19]=h):h=e[19];const b=t.shardKey??"—";let g;e[20]!==b?(g=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:b}),e[20]=b,e[21]=g):g=e[21];const x=t.userId??"—";let y;e[22]!==x?(y=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:x}),e[22]=x,e[23]=y):y=e[23];let C;return e[24]!==d||e[25]!==h||e[26]!==g||e[27]!==y||e[28]!==o||e[29]!==p||e[30]!==s||e[31]!==l?(C=T(ge,{"data-testid":o,children:[p,s,l,d,h,g,y]}),e[24]=d,e[25]=h,e[26]=g,e[27]=y,e[28]=o,e[29]=p,e[30]=s,e[31]=l,e[32]=C):C=e[32],C},De=({shardKey:c})=>{const e=Re(),t=z(),[n,i]=q(""),[o,m]=q(""),[p,f]=q(""),[{cursor:s,error:l,loading:v,notConfigured:a,rows:d},u]=Ne(Ke,Me),h=se(n.trim(),400),b=se(o.trim(),400),g={...h===""?{}:{functionPathPrefix:h},...p===""?{}:{minLevel:p},...c===""?{}:{shardKey:c},...b===""?{}:{userId:b}},x=JSON.stringify(g),y=me(x);he(()=>{const w={cancelled:!1};return y.current=x,ie((async()=>{u({type:"loading"});try{const N=await e.queryLogArchive(g);w.cancelled||u({cursor:N.nextCursor,rows:N.rows,type:"loaded"})}catch(N){w.cancelled||u(Fe(N)===Ae?{type:"notConfigured"}:{message:de(N),type:"failed"})}})()),()=>{w.cancelled=!0}},[e,x]);const C=async()=>{if(s===void 0)return;const w=x;u({type:"loading"});try{const N=await e.queryLogArchive({...g,cursor:s});y.current===w&&u({cursor:N.nextCursor,rows:N.rows,type:"append"})}catch(N){y.current===w&&u({message:de(N),type:"pageFailed"})}},$=w=>{i(w.target.value)},L=w=>{m(w.target.value)},S=w=>{f(w.target.value)},R=()=>{ie(C())};return a?r(Z,{action:r("a",{className:"text-sm text-primary underline-offset-4 hover:underline",href:fe,rel:"noreferrer",target:"_blank",children:t("Open in Cloudflare")}),description:t("Wire pipelineLogSink to a Cloudflare Pipeline → R2 Data Catalog table and set R2_SQL_ACCOUNT_ID, R2_SQL_TOKEN, R2_SQL_BUCKET to browse the durable log archive here."),testId:"lg-archive-not-configured",title:t("Log archive not configured")}):T("div",{className:"flex flex-col gap-4","data-testid":"lg-archive",children:[T("div",{className:"flex flex-wrap items-center gap-2",children:[r(j,{"aria-label":t("Function path prefix"),className:"h-8 w-48","data-testid":"lg-archive-path",onChange:$,placeholder:t("function path…"),value:n}),r(j,{"aria-label":t("User id"),className:"h-8 w-40","data-testid":"lg-archive-user",onChange:L,placeholder:t("user id…"),value:o}),T("select",{"aria-label":t("Minimum level"),className:"h-8 rounded-md border border-border bg-background px-2 text-sm","data-testid":"lg-archive-min-level",onChange:S,value:p,children:[r("option",{value:"",children:t("min level")}),le.map(w=>r("option",{value:w,children:w},w))]})]}),l!==null&&r("p",{className:"text-sm text-destructive","data-testid":"lg-archive-error",role:"alert",children:l}),v&&d===null&&l===null&&r("p",{className:"text-sm text-muted-foreground","data-testid":"lg-archive-loading",children:t("Loading…")}),d!==null&&d.length===0&&r(Z,{description:t("No archived logs match these filters. The durable archive fills as pipelineLogSink flushes records to R2."),testId:"lg-archive-empty",title:t("No archived logs.")}),d!==null&&d.length>0&&r("div",{className:"overflow-hidden rounded-xl border border-border shadow-xs",children:T(Ie,{"data-testid":"lg-archive-table",children:[r(Te,{children:T(ge,{children:[r(D,{children:t("Time")}),r(D,{children:t("Level")}),r(D,{children:t("Function")}),r(D,{children:t("Message")}),r(D,{children:t("Trace")}),r(D,{children:t("Shard")}),r(D,{children:t("User")})]})}),r(Ee,{children:d.map((w,N)=>r(Ue,{row:w},`${String(w.ts)}-${String(N)}`))})]})}),s!==void 0&&r("div",{children:r(Pe,{"data-testid":"lg-archive-more",disabled:v,onClick:R,size:"sm",variant:"outline",children:t(v?"Loading…":"Load more")})})]})},Ve=c=>{const e=M(11),{level:t,onToggle:n,selected:i}=c;let o;e[0]!==t||e[1]!==n?(o=()=>{n(t)},e[0]=t,e[1]=n,e[2]=o):o=e[2];const m=o,p=i?"border-border bg-muted font-medium":"border-input text-muted-foreground";let f;e[3]!==p?(f=W("rounded-md border px-2 py-1 text-xs",p),e[3]=p,e[4]=f):f=e[4];const s=`logs-level-${t}`;let l;return e[5]!==t||e[6]!==m||e[7]!==i||e[8]!==f||e[9]!==s?(l=r("button",{"aria-pressed":i,className:f,"data-testid":s,onClick:m,type:"button",children:t}),e[5]=t,e[6]=m,e[7]=i,e[8]=f,e[9]=s,e[10]=l):l=e[10],l},je=c=>{const e=M(68),{levelFilter:t,onLogPathChange:n,onSearchChange:i,onTimeRangeChange:o,onToggleLevel:m,onToggleSummary:p,pathFilter:f,search:s,showSummary:l,timeRange:v}=c,a=z();let d;e[0]!==a?(d=a("Search messages"),e[0]=a,e[1]=d):d=e[1];let u;e[2]!==a?(u=a("search message"),e[2]=a,e[3]=u):u=e[3];let h;e[4]!==i||e[5]!==s||e[6]!==d||e[7]!==u?(h=r(j,{"aria-label":d,className:"h-8 w-48","data-testid":"lg-search",onChange:i,placeholder:u,value:s}),e[4]=i,e[5]=s,e[6]=d,e[7]=u,e[8]=h):h=e[8];let b;e[9]!==a?(b=a("Function path"),e[9]=a,e[10]=b):b=e[10];let g;e[11]!==a?(g=a("filter path"),e[11]=a,e[12]=g):g=e[12];let x;e[13]!==n||e[14]!==f||e[15]!==b||e[16]!==g?(x=r(j,{"aria-label":b,className:"h-8 w-40","data-testid":"logs-path-filter",onChange:n,placeholder:g,value:f}),e[13]=n,e[14]=f,e[15]=b,e[16]=g,e[17]=x):x=e[17];let y;e[18]!==a?(y=a("Level filter"),e[18]=a,e[19]=y):y=e[19];let C;e[20]!==t||e[21]!==m?(C=le.map(U=>r(Ve,{level:U,onToggle:m,selected:t.has(U)},U)),e[20]=t,e[21]=m,e[22]=C):C=e[22];let $;e[23]!==y||e[24]!==C?($=r("div",{"aria-label":y,className:"inline-flex items-center gap-1","data-testid":"logs-level-filter",role:"group",children:C}),e[23]=y,e[24]=C,e[25]=$):$=e[25];let L;e[26]!==a?(L=a("Time range"),e[26]=a,e[27]=L):L=e[27];let S;e[28]!==a?(S=a("All time"),e[28]=a,e[29]=S):S=e[29];let R;e[30]!==S?(R=r("option",{value:"all",children:S}),e[30]=S,e[31]=R):R=e[31];let w;e[32]!==a?(w=a("Last 5m"),e[32]=a,e[33]=w):w=e[33];let N;e[34]!==w?(N=r("option",{value:"5m",children:w}),e[34]=w,e[35]=N):N=e[35];let P;e[36]!==a?(P=a("Last 15m"),e[36]=a,e[37]=P):P=e[37];let I;e[38]!==P?(I=r("option",{value:"15m",children:P}),e[38]=P,e[39]=I):I=e[39];let E;e[40]!==a?(E=a("Last hour"),e[40]=a,e[41]=E):E=e[41];let F;e[42]!==E?(F=r("option",{value:"1h",children:E}),e[42]=E,e[43]=F):F=e[43];let O;e[44]!==o||e[45]!==L||e[46]!==R||e[47]!==N||e[48]!==I||e[49]!==F||e[50]!==v?(O=T("select",{"aria-label":L,className:"h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none","data-testid":"logs-time-range",onChange:o,value:v,children:[R,N,I,F]}),e[44]=o,e[45]=L,e[46]=R,e[47]=N,e[48]=I,e[49]=F,e[50]=v,e[51]=O):O=e[51];const G=l?"border-border bg-muted font-medium":"border-input text-muted-foreground";let K;e[52]!==G?(K=W("h-8 rounded-md border px-3 text-sm",G),e[52]=G,e[53]=K):K=e[53];let A;e[54]!==l||e[55]!==a?(A=a(l?"List":"Summary"),e[54]=l,e[55]=a,e[56]=A):A=e[56];let _;e[57]!==p||e[58]!==l||e[59]!==K||e[60]!==A?(_=r("button",{"aria-pressed":l,className:K,"data-testid":"logs-summary-toggle",onClick:p,type:"button",children:A}),e[57]=p,e[58]=l,e[59]=K,e[60]=A,e[61]=_):_=e[61];let B;return e[62]!==O||e[63]!==_||e[64]!==h||e[65]!==x||e[66]!==$?(B=T("div",{className:"flex flex-wrap items-center gap-2",children:[h,x,$,O,_]}),e[62]=O,e[63]=_,e[64]=h,e[65]=x,e[66]=$,e[67]=B):B=e[67],B},Be=c=>{const e=M(53),{onOutcomeChange:t,onPathChange:n,onTableChange:i,onUserChange:o,outcomeFilter:m,pathPrefix:p,tableFilter:f,userIdFilter:s}=c,l=z();let v;e[0]!==l?(v=l("Function path"),e[0]=l,e[1]=v):v=e[1];let a;e[2]!==l?(a=l("file:function"),e[2]=l,e[3]=a):a=e[3];let d;e[4]!==n||e[5]!==p||e[6]!==v||e[7]!==a?(d=r(j,{"aria-label":v,className:"h-8 w-44","data-testid":"lg-req-path",onChange:n,placeholder:a,value:p}),e[4]=n,e[5]=p,e[6]=v,e[7]=a,e[8]=d):d=e[8];let u;e[9]!==l?(u=l("User id"),e[9]=l,e[10]=u):u=e[10];let h;e[11]!==l?(h=l("userId"),e[11]=l,e[12]=h):h=e[12];let b;e[13]!==o||e[14]!==u||e[15]!==h||e[16]!==s?(b=r(j,{"aria-label":u,className:"h-8 w-32","data-testid":"lg-req-user",onChange:o,placeholder:h,value:s}),e[13]=o,e[14]=u,e[15]=h,e[16]=s,e[17]=b):b=e[17];let g;e[18]!==l?(g=l("Table touched"),e[18]=l,e[19]=g):g=e[19];let x;e[20]!==l?(x=l("table"),e[20]=l,e[21]=x):x=e[21];let y;e[22]!==i||e[23]!==g||e[24]!==x||e[25]!==f?(y=r(j,{"aria-label":g,className:"h-8 w-32","data-testid":"lg-req-table",onChange:i,placeholder:x,value:f}),e[22]=i,e[23]=g,e[24]=x,e[25]=f,e[26]=y):y=e[26];let C;e[27]!==l?(C=l("Outcome filter"),e[27]=l,e[28]=C):C=e[28];let $;e[29]!==l?($=l("all"),e[29]=l,e[30]=$):$=e[30];let L;e[31]!==$?(L=r("option",{value:"all",children:$}),e[31]=$,e[32]=L):L=e[32];let S;e[33]!==l?(S=l("ok"),e[33]=l,e[34]=S):S=e[34];let R;e[35]!==S?(R=r("option",{value:"ok",children:S}),e[35]=S,e[36]=R):R=e[36];let w;e[37]!==l?(w=l("error"),e[37]=l,e[38]=w):w=e[38];let N;e[39]!==w?(N=r("option",{value:"error",children:w}),e[39]=w,e[40]=N):N=e[40];let P;e[41]!==t||e[42]!==m||e[43]!==C||e[44]!==L||e[45]!==R||e[46]!==N?(P=T("select",{"aria-label":C,className:"h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none","data-testid":"lg-req-outcome",onChange:t,value:m,children:[L,R,N]}),e[41]=t,e[42]=m,e[43]=C,e[44]=L,e[45]=R,e[46]=N,e[47]=P):P=e[47];let I;return e[48]!==P||e[49]!==d||e[50]!==b||e[51]!==y?(I=T("div",{className:"flex flex-wrap items-center gap-2",children:[d,b,y,P]}),e[48]=P,e[49]=d,e[50]=b,e[51]=y,e[52]=I):I=e[52],I},ve=c=>{const e=M(7),{bucket:t}=c;let n;e[0]!==t.key?(n=r("span",{className:"truncate text-muted-foreground",role:"gridcell",children:t.key}),e[0]=t.key,e[1]=n):n=e[1];let i;e[2]!==t.count?(i=r("span",{className:"shrink-0 tabular-nums",role:"gridcell",children:t.count}),e[2]=t.count,e[3]=i):i=e[3];let o;return e[4]!==n||e[5]!==i?(o=T("div",{className:"flex items-center justify-between gap-4 px-3 py-1 font-mono text-xs","data-testid":"logs-summary-row",role:"row",children:[n,i]}),e[4]=n,e[5]=i,e[6]=o):o=e[6],o},ze=c=>{const e=M(31),{summary:t}=c,n=z();let i;e[0]!==t.total||e[1]!==n?(i=n("{count} entries",{count:t.total}),e[0]=t.total,e[1]=n,e[2]=i):i=e[2];let o;e[3]!==i?(o=r("p",{className:"text-xs text-muted-foreground","data-testid":"logs-summary-total",children:i}),e[3]=i,e[4]=o):o=e[4];let m;e[5]!==n?(m=n("By level"),e[5]=n,e[6]=m):m=e[6];let p;e[7]!==m?(p=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:m}),e[7]=m,e[8]=p):p=e[8];let f;e[9]!==t.byLevel?(f=t.byLevel.map(Ge),e[9]=t.byLevel,e[10]=f):f=e[10];let s;e[11]!==f?(s=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-levels",role:"grid",children:f}),e[11]=f,e[12]=s):s=e[12];let l;e[13]!==p||e[14]!==s?(l=T("div",{children:[p,s]}),e[13]=p,e[14]=s,e[15]=l):l=e[15];let v;e[16]!==n?(v=n("By function"),e[16]=n,e[17]=v):v=e[17];let a;e[18]!==v?(a=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:v}),e[18]=v,e[19]=a):a=e[19];let d;e[20]!==t.byPath?(d=t.byPath.map(We),e[20]=t.byPath,e[21]=d):d=e[21];let u;e[22]!==d?(u=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-paths",role:"grid",children:d}),e[22]=d,e[23]=u):u=e[23];let h;e[24]!==u||e[25]!==a?(h=T("div",{children:[a,u]}),e[24]=u,e[25]=a,e[26]=h):h=e[26];let b;return e[27]!==h||e[28]!==o||e[29]!==l?(b=T("div",{className:"flex flex-col gap-4 rounded-xl border border-border bg-card p-4 shadow-xs","data-testid":"logs-summary",children:[o,l,h]}),e[27]=h,e[28]=o,e[29]=l,e[30]=b):b=e[30],b};function Ge(c){return r(ve,{bucket:c},c.key)}function We(c){return r(ve,{bucket:c},c.key)}const Qe=c=>{const e=M(46),{liveError:t,onShardKeyChange:n,onShowArchive:i,onShowErrors:o,onShowRequests:m,shardKey:p,view:f}=c,s=z(),l=f==="requests",v=f==="requests"?"bg-muted font-medium":"text-muted-foreground";let a;e[0]!==v?(a=W("px-3 py-1 text-sm",v),e[0]=v,e[1]=a):a=e[1];let d;e[2]!==s?(d=s("Requests"),e[2]=s,e[3]=d):d=e[3];let u;e[4]!==m||e[5]!==l||e[6]!==a||e[7]!==d?(u=r("button",{"aria-selected":l,className:a,"data-testid":"lg-view-requests",onClick:m,role:"tab",type:"button",children:d}),e[4]=m,e[5]=l,e[6]=a,e[7]=d,e[8]=u):u=e[8];const h=f==="errors",b=f==="errors"?"bg-muted font-medium":"text-muted-foreground";let g;e[9]!==b?(g=W("px-3 py-1 text-sm",b),e[9]=b,e[10]=g):g=e[10];let x;e[11]!==s?(x=s("Errors"),e[11]=s,e[12]=x):x=e[12];let y;e[13]!==o||e[14]!==h||e[15]!==g||e[16]!==x?(y=r("button",{"aria-selected":h,className:g,"data-testid":"lg-view-errors",onClick:o,role:"tab",type:"button",children:x}),e[13]=o,e[14]=h,e[15]=g,e[16]=x,e[17]=y):y=e[17];const C=f==="archive",$=f==="archive"?"bg-muted font-medium":"text-muted-foreground";let L;e[18]!==$?(L=W("px-3 py-1 text-sm",$),e[18]=$,e[19]=L):L=e[19];let S;e[20]!==s?(S=s("Archive"),e[20]=s,e[21]=S):S=e[21];let R;e[22]!==i||e[23]!==C||e[24]!==L||e[25]!==S?(R=r("button",{"aria-selected":C,className:L,"data-testid":"lg-view-archive",onClick:i,role:"tab",type:"button",children:S}),e[22]=i,e[23]=C,e[24]=L,e[25]=S,e[26]=R):R=e[26];let w;e[27]!==y||e[28]!==R||e[29]!==u?(w=T("div",{className:"inline-flex overflow-hidden rounded-lg border border-border",role:"tablist",children:[u,y,R]}),e[27]=y,e[28]=R,e[29]=u,e[30]=w):w=e[30];let N;e[31]!==n||e[32]!==p?(N=r(Oe,{onChange:n,testId:"lg-shard-input",value:p}),e[31]=n,e[32]=p,e[33]=N):N=e[33];let P;e[34]!==t||e[35]!==f?(P=f!=="archive"&&r(_e,{message:t,prefix:"lg"}),e[34]=t,e[35]=f,e[36]=P):P=e[36];let I;e[37]!==s?(I=s("Open in Cloudflare"),e[37]=s,e[38]=I):I=e[38];let E;e[39]!==I?(E=r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"lg-cf-link",href:fe,rel:"noreferrer",target:"_blank",children:I}),e[39]=I,e[40]=E):E=e[40];let F;return e[41]!==w||e[42]!==N||e[43]!==P||e[44]!==E?(F=T("div",{className:"flex flex-wrap items-center gap-2",children:[w,N,P,E]}),e[41]=w,e[42]=N,e[43]=P,e[44]=E,e[45]=F):F=e[45],F},ee=400,Ye=36,He={height:ee,overflow:"auto"},be={left:0,position:"absolute",top:0,width:"100%"},Je={error:"destructive",ok:"secondary"},Xe=c=>{const e=M(26),{entry:t,index:n,measureRef:i,start:o}=c,m=`translateY(${String(o)}px)`;let p;e[0]!==m?(p={...be,transform:m},e[0]=m,e[1]=p):p=e[1];const f=p;let s;e[2]!==t.fields?(s=te(t.fields),e[2]=t.fields,e[3]=s):s=e[3];const l=s;let v;e[4]!==t.timestamp?(v=new Date(t.timestamp).toLocaleString(),e[4]=t.timestamp,e[5]=v):v=e[5];let a;e[6]!==v?(a=r("span",{className:"w-44 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:v}),e[6]=v,e[7]=a):a=e[7];const d=pe[t.level];let u;e[8]!==t.level||e[9]!==d?(u=r("span",{className:"w-20 shrink-0",role:"gridcell",children:r(re,{variant:d,children:t.level})}),e[8]=t.level,e[9]=d,e[10]=u):u=e[10];const h=t.functionPath??"—";let b;e[11]!==h?(b=r("span",{className:"w-48 shrink-0 truncate text-muted-foreground",role:"gridcell",children:h}),e[11]=h,e[12]=b):b=e[12];let g;e[13]!==l?(g=l===""?null:r("span",{className:"ml-2 text-muted-foreground","data-testid":"lg-fields",children:l}),e[13]=l,e[14]=g):g=e[14];let x;e[15]!==t.message||e[16]!==g?(x=T("span",{className:"flex-1 truncate",role:"gridcell",children:[t.message,g]}),e[15]=t.message,e[16]=g,e[17]=x):x=e[17];let y;return e[18]!==n||e[19]!==i||e[20]!==f||e[21]!==x||e[22]!==a||e[23]!==u||e[24]!==b?(y=T("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":n,"data-testid":"lg-row",ref:i,role:"row",style:f,children:[a,u,b,x]}),e[18]=n,e[19]=i,e[20]=f,e[21]=x,e[22]=a,e[23]=u,e[24]=b,e[25]=y):y=e[25],y},ce=c=>c.length===0?"—":c.join(", "),Ze=c=>{const e=M(37),{entry:t,index:n,measureRef:i,start:o}=c,m=`translateY(${String(o)}px)`;let p;e[0]!==m?(p={...be,transform:m},e[0]=m,e[1]=p):p=e[1];const f=p;let s;e[2]!==t.ts?(s=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=s):s=e[3];let l;e[4]!==s?(l=r("span",{className:"w-40 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:s}),e[4]=s,e[5]=l):l=e[5];const v=Je[t.outcome];let a;e[6]!==t.outcome||e[7]!==v?(a=r("span",{className:"w-16 shrink-0",role:"gridcell",children:r(re,{variant:v,children:t.outcome})}),e[6]=t.outcome,e[7]=v,e[8]=a):a=e[8];let d;e[9]!==t.functionPath?(d=r("span",{className:"w-44 shrink-0 truncate",role:"gridcell",title:t.functionPath,children:t.functionPath}),e[9]=t.functionPath,e[10]=d):d=e[10];const u=t.shardKey??"—";let h;e[11]!==u?(h=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:u}),e[11]=u,e[12]=h):h=e[12];const b=t.userId??"—";let g;e[13]!==b?(g=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:b}),e[13]=b,e[14]=g):g=e[14];let x;e[15]!==t.durationMs?(x=Math.round(t.durationMs),e[15]=t.durationMs,e[16]=x):x=e[16];const y=`${String(x)}ms`;let C;e[17]!==y?(C=r("span",{className:"w-16 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:y}),e[17]=y,e[18]=C):C=e[18];let $;e[19]!==t.errorMessage||e[20]!==t.outcome||e[21]!==t.tablesRead||e[22]!==t.tablesWritten?($=t.outcome==="error"&&t.errorMessage!==void 0?t.errorMessage:`r:${ce(t.tablesRead)} · w:${ce(t.tablesWritten)}`,e[19]=t.errorMessage,e[20]=t.outcome,e[21]=t.tablesRead,e[22]=t.tablesWritten,e[23]=$):$=e[23];let L;e[24]!==$?(L=r("span",{className:"flex-1 truncate text-muted-foreground",role:"gridcell",children:$}),e[24]=$,e[25]=L):L=e[25];let S;return e[26]!==n||e[27]!==i||e[28]!==f||e[29]!==g||e[30]!==C||e[31]!==L||e[32]!==l||e[33]!==a||e[34]!==d||e[35]!==h?(S=T("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":n,"data-testid":"lg-req-row",ref:i,role:"row",style:f,children:[l,a,d,h,g,C,L]}),e[26]=n,e[27]=i,e[28]=f,e[29]=g,e[30]=C,e[31]=L,e[32]=l,e[33]=a,e[34]=d,e[35]=h,e[36]=S):S=e[36],S},ue=c=>{const{entries:e}=c??{};return Array.isArray(e)?e:[]},et=c=>{const e={};return c.functionPathPrefix.trim()!==""&&(e.functionPathPrefix=c.functionPathPrefix.trim()),c.userId.trim()!==""&&(e.userId=c.userId.trim()),c.tableTouched.trim()!==""&&(e.tableTouched=c.tableTouched.trim()),(c.outcome==="ok"||c.outcome==="error")&&(e.outcome=c.outcome),e},tt={"5m":300*1e3,"15m":900*1e3,"1h":3600*1e3},rt=(c,e)=>{const t=e.search.trim().toLowerCase(),n=e.path.trim().toLowerCase(),i=e.range==="all"?Number.NEGATIVE_INFINITY:e.now-tt[e.range];return c.filter(o=>e.levels.size>0&&!e.levels.has(o.level)||o.timestamp<i||n!==""&&!(o.functionPath??"").toLowerCase().includes(n)?!1:t===""||o.message.toLowerCase().includes(t)||te(o.fields).toLowerCase().includes(t))},lt="—",at=c=>{const e=new Map,t=new Map;for(const o of c){e.set(o.level,(e.get(o.level)??0)+1);const m=o.functionPath??lt;t.set(m,(t.get(m)??0)+1)}const n=le.filter(o=>e.has(o)).map(o=>({count:e.get(o)??0,key:o})),i=[...t.entries()].map(([o,m])=>({count:m,key:o})).toSorted((o,m)=>m.count===o.count?o.key.localeCompare(m.key):m.count-o.count);return{byLevel:n,byPath:i,total:c.length}},Pt=({initialShardKey:c})=>{const e=z(),[t,n]=q("requests"),{queryShardKey:i,setShardKey:o,shardKey:m}=Se(c),[p,f]=q(""),[s,l]=q(()=>new Set),[v,a]=q(""),[d,u]=q("all"),[h,b]=q(!1),[g,x]=q(""),[y,C]=q(""),[$,L]=q(""),[S,R]=q("all"),w=et({functionPathPrefix:g,outcome:S,tableTouched:$,userId:y}),N=oe(ne.getRequestLog,w,{enabled:t==="requests",live:!0,shardKey:i}),P=oe(ne.getLogs,{},{enabled:t==="errors",live:!0,shardKey:i}),I=t==="requests"?N:P,{error:E,errorSource:F,isLoading:O,liveError:G}=I,K=ue(P.data),A=ue(N.data);he(()=>{I.data!==void 0&&ke(i)},[I.data,i]);const _=rt(K,{levels:s,now:Date.now(),path:v,range:d,search:p}),B=at(_),U=t==="requests"?A.length:_.length,J=t==="errors"&&h,Q=Ce(()=>E!==null?"error":U===0?O?J?"summary":"list":"empty":J?"summary":"list",[U,O,E,J]),ae=me(null),Y=we({count:U,estimateSize:()=>Ye,getScrollElement:()=>ae.current,initialRect:{height:ee,width:800},observeElementRect:(k,X)=>$e(k,X,ee),overscan:8}),xe=Y.getVirtualItems(),ye={height:Y.getTotalSize(),position:"relative",width:"100%"};return T("div",{className:"flex flex-col gap-4","data-testid":"lunora-logs",children:[r(Qe,{liveError:G,onShardKeyChange:o,onShowArchive:()=>{n("archive"),b(!1)},onShowErrors:()=>{n("errors"),b(!1)},onShowRequests:()=>{n("requests"),b(!1)},shardKey:m,view:t}),t==="errors"&&r(je,{levelFilter:s,onLogPathChange:k=>{a(k.target.value)},onSearchChange:k=>{f(k.target.value)},onTimeRangeChange:k=>{u(k.target.value)},onToggleLevel:k=>{l(X=>{const H=new Set(X);return H.has(k)?H.delete(k):H.add(k),H})},onToggleSummary:()=>{b(k=>!k)},pathFilter:v,search:p,showSummary:h,timeRange:d}),t==="requests"&&r(Be,{onOutcomeChange:k=>{R(k.target.value)},onPathChange:k=>{x(k.target.value)},onTableChange:k=>{L(k.target.value)},onUserChange:k=>{C(k.target.value)},outcomeFilter:S,pathPrefix:g,tableFilter:$,userIdFilter:y}),t==="archive"?r(De,{shardKey:i}):T(qe,{children:[Q==="error"&&r(Le,{error:F,testId:"lg-error"}),Q==="empty"&&r(Z,{description:e("Function and request logs for this shard show up here as your app handles traffic."),icon:r("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:r("path",{d:"M4 5h16M4 12h16M4 19h10"})}),testId:"lg-empty",title:e("No logs.")}),Q==="summary"&&r(ze,{summary:B}),Q==="list"&&r("div",{className:"rounded-xl border border-border shadow-xs","data-testid":"lg-scroll",ref:ae,style:He,children:r("div",{"aria-label":e("Recent logs"),"data-testid":"lg-table",role:"grid",style:ye,children:xe.map(k=>t==="requests"?r(Ze,{entry:A[k.index],index:k.index,measureRef:Y.measureElement,start:k.start},k.key):r(Xe,{entry:_[k.index],index:k.index,measureRef:Y.measureElement,start:k.start},k.key))})})]})]})};export{Pt as LogsPanel,rt as filterLogs,at as summarizeLogs};
|
|
1
|
+
import{c as M}from"react/compiler-runtime";import{useVirtualizer as we}from"@tanstack/react-virtual";import{useState as q,useReducer as Ne,useRef as me,useEffect as he,useMemo as Ce}from"react";import{f as te}from"../packem_shared/log-fields-CoL3hsIQ.js";import{E as Le}from"../packem_shared/error-alert--Ie7ofJ0.js";import{g as re}from"../packem_shared/badge-BbuuAio7.js";import{E as Z}from"../packem_shared/empty-state-Cg7t_8qu.js";import{N as oe}from"../packem_shared/use-admin-query-CnnyWJXM.js";import{S as Se}from"../packem_shared/use-shard-key-B2JtNa5m.js";import{useT as z}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as ne}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{r as ke}from"../packem_shared/shard-history-DMEW5VBE.js";import{l as $e}from"../packem_shared/virtual-rect-1o1veP7R.js";import{useLunora as Re}from"@lunora/react";import{u as Pe}from"../packem_shared/button-BkCrNcAs.js";import{u as j}from"../packem_shared/input-JHu63lTv.js";import{n as Ie,d as Te,m as ge,p as D,f as Ee,u as V}from"../packem_shared/table-DdJBrClo.js";import se from"../packem_shared/useDebounced-CU-uftxO.js";import{a as fe}from"../packem_shared/cf-links-Dmg86v1D.js";import{f as ie,m as Fe,b as de}from"../packem_shared/internal-zkEvTqy8.js";import{jsx as r,jsxs as T,Fragment as qe}from"react/jsx-runtime";import{c as W}from"../packem_shared/utils-bhneXptQ.js";import{L as _e}from"../packem_shared/live-status-CmuRLFKf.js";import{ShardInput as Oe}from"../packem_shared/ShardInput-BVn2iCU0.js";const le=["trace","debug","log","info","warn","error","fatal"],Ae="LOG_ARCHIVE_NOT_CONFIGURED",pe={debug:"secondary",error:"destructive",fatal:"destructive",info:"outline",log:"outline",trace:"outline",warn:"secondary"},Me={cursor:void 0,error:null,loading:!1,notConfigured:!1,rows:null},Ke=(c,e)=>{switch(e.type){case"append":return{...c,cursor:e.cursor,error:null,loading:!1,rows:[...c.rows??[],...e.rows]};case"failed":return{cursor:void 0,error:e.message,loading:!1,notConfigured:!1,rows:null};case"loaded":return{cursor:e.cursor,error:null,loading:!1,notConfigured:!1,rows:e.rows};case"loading":return{...c,error:null,loading:!0,notConfigured:!1};case"notConfigured":return{cursor:void 0,error:null,loading:!1,notConfigured:!0,rows:null};case"pageFailed":return{...c,error:e.message,loading:!1};default:return c}},Ue=c=>{const e=M(33),{row:t}=c;let n;e[0]!==t.fields?(n=te(t.fields),e[0]=t.fields,e[1]=n):n=e[1];const i=n,o=`lg-archive-row-${String(t.ts)}`;let m;e[2]!==t.ts?(m=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=m):m=e[3];let p;e[4]!==m?(p=r(V,{className:"tabular-nums whitespace-nowrap text-xs text-muted-foreground",children:m}),e[4]=m,e[5]=p):p=e[5];const f=pe[t.level];let s;e[6]!==t.level||e[7]!==f?(s=r(V,{children:r(re,{variant:f,children:t.level})}),e[6]=t.level,e[7]=f,e[8]=s):s=e[8];let l;e[9]!==t.functionPath?(l=r(V,{className:"font-mono text-xs",children:t.functionPath}),e[9]=t.functionPath,e[10]=l):l=e[10];let v;e[11]!==t.message?(v=r("div",{className:"truncate",title:t.message,children:t.message}),e[11]=t.message,e[12]=v):v=e[12];let a;e[13]!==i?(a=i!==""&&r("div",{className:"truncate font-mono text-[11px] text-muted-foreground",title:i,children:i}),e[13]=i,e[14]=a):a=e[14];let d;e[15]!==v||e[16]!==a?(d=T(V,{className:"max-w-md",children:[v,a]}),e[15]=v,e[16]=a,e[17]=d):d=e[17];const u=t.traceId??"—";let h;e[18]!==u?(h=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:u}),e[18]=u,e[19]=h):h=e[19];const b=t.shardKey??"—";let g;e[20]!==b?(g=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:b}),e[20]=b,e[21]=g):g=e[21];const x=t.userId??"—";let y;e[22]!==x?(y=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:x}),e[22]=x,e[23]=y):y=e[23];let C;return e[24]!==d||e[25]!==h||e[26]!==g||e[27]!==y||e[28]!==o||e[29]!==p||e[30]!==s||e[31]!==l?(C=T(ge,{"data-testid":o,children:[p,s,l,d,h,g,y]}),e[24]=d,e[25]=h,e[26]=g,e[27]=y,e[28]=o,e[29]=p,e[30]=s,e[31]=l,e[32]=C):C=e[32],C},De=({shardKey:c})=>{const e=Re(),t=z(),[n,i]=q(""),[o,m]=q(""),[p,f]=q(""),[{cursor:s,error:l,loading:v,notConfigured:a,rows:d},u]=Ne(Ke,Me),h=se(n.trim(),400),b=se(o.trim(),400),g={...h===""?{}:{functionPathPrefix:h},...p===""?{}:{minLevel:p},...c===""?{}:{shardKey:c},...b===""?{}:{userId:b}},x=JSON.stringify(g),y=me(x);he(()=>{const w={cancelled:!1};return y.current=x,ie((async()=>{u({type:"loading"});try{const N=await e.queryLogArchive(g);w.cancelled||u({cursor:N.nextCursor,rows:N.rows,type:"loaded"})}catch(N){w.cancelled||u(Fe(N)===Ae?{type:"notConfigured"}:{message:de(N),type:"failed"})}})()),()=>{w.cancelled=!0}},[e,x]);const C=async()=>{if(s===void 0)return;const w=x;u({type:"loading"});try{const N=await e.queryLogArchive({...g,cursor:s});y.current===w&&u({cursor:N.nextCursor,rows:N.rows,type:"append"})}catch(N){y.current===w&&u({message:de(N),type:"pageFailed"})}},$=w=>{i(w.target.value)},L=w=>{m(w.target.value)},S=w=>{f(w.target.value)},R=()=>{ie(C())};return a?r(Z,{action:r("a",{className:"text-sm text-primary underline-offset-4 hover:underline",href:fe,rel:"noreferrer",target:"_blank",children:t("Open in Cloudflare")}),description:t("Wire pipelineLogSink to a Cloudflare Pipeline → R2 Data Catalog table and set R2_SQL_ACCOUNT_ID, R2_SQL_TOKEN, R2_SQL_BUCKET to browse the durable log archive here."),testId:"lg-archive-not-configured",title:t("Log archive not configured")}):T("div",{className:"flex flex-col gap-4","data-testid":"lg-archive",children:[T("div",{className:"flex flex-wrap items-center gap-2",children:[r(j,{"aria-label":t("Function path prefix"),className:"h-8 w-48","data-testid":"lg-archive-path",onChange:$,placeholder:t("function path…"),value:n}),r(j,{"aria-label":t("User id"),className:"h-8 w-40","data-testid":"lg-archive-user",onChange:L,placeholder:t("user id…"),value:o}),T("select",{"aria-label":t("Minimum level"),className:"h-8 rounded-md border border-border bg-background px-2 text-sm","data-testid":"lg-archive-min-level",onChange:S,value:p,children:[r("option",{value:"",children:t("min level")}),le.map(w=>r("option",{value:w,children:w},w))]})]}),l!==null&&r("p",{className:"text-sm text-destructive","data-testid":"lg-archive-error",role:"alert",children:l}),v&&d===null&&l===null&&r("p",{className:"text-sm text-muted-foreground","data-testid":"lg-archive-loading",children:t("Loading…")}),d!==null&&d.length===0&&r(Z,{description:t("No archived logs match these filters. The durable archive fills as pipelineLogSink flushes records to R2."),testId:"lg-archive-empty",title:t("No archived logs.")}),d!==null&&d.length>0&&r("div",{className:"overflow-hidden rounded-xl border border-border shadow-xs",children:T(Ie,{"data-testid":"lg-archive-table",children:[r(Te,{children:T(ge,{children:[r(D,{children:t("Time")}),r(D,{children:t("Level")}),r(D,{children:t("Function")}),r(D,{children:t("Message")}),r(D,{children:t("Trace")}),r(D,{children:t("Shard")}),r(D,{children:t("User")})]})}),r(Ee,{children:d.map((w,N)=>r(Ue,{row:w},`${String(w.ts)}-${String(N)}`))})]})}),s!==void 0&&r("div",{children:r(Pe,{"data-testid":"lg-archive-more",disabled:v,onClick:R,size:"sm",variant:"outline",children:t(v?"Loading…":"Load more")})})]})},Ve=c=>{const e=M(11),{level:t,onToggle:n,selected:i}=c;let o;e[0]!==t||e[1]!==n?(o=()=>{n(t)},e[0]=t,e[1]=n,e[2]=o):o=e[2];const m=o,p=i?"border-border bg-muted font-medium":"border-input text-muted-foreground";let f;e[3]!==p?(f=W("rounded-md border px-2 py-1 text-xs",p),e[3]=p,e[4]=f):f=e[4];const s=`logs-level-${t}`;let l;return e[5]!==t||e[6]!==m||e[7]!==i||e[8]!==f||e[9]!==s?(l=r("button",{"aria-pressed":i,className:f,"data-testid":s,onClick:m,type:"button",children:t}),e[5]=t,e[6]=m,e[7]=i,e[8]=f,e[9]=s,e[10]=l):l=e[10],l},je=c=>{const e=M(68),{levelFilter:t,onLogPathChange:n,onSearchChange:i,onTimeRangeChange:o,onToggleLevel:m,onToggleSummary:p,pathFilter:f,search:s,showSummary:l,timeRange:v}=c,a=z();let d;e[0]!==a?(d=a("Search messages"),e[0]=a,e[1]=d):d=e[1];let u;e[2]!==a?(u=a("search message"),e[2]=a,e[3]=u):u=e[3];let h;e[4]!==i||e[5]!==s||e[6]!==d||e[7]!==u?(h=r(j,{"aria-label":d,className:"h-8 w-48","data-testid":"lg-search",onChange:i,placeholder:u,value:s}),e[4]=i,e[5]=s,e[6]=d,e[7]=u,e[8]=h):h=e[8];let b;e[9]!==a?(b=a("Function path"),e[9]=a,e[10]=b):b=e[10];let g;e[11]!==a?(g=a("filter path"),e[11]=a,e[12]=g):g=e[12];let x;e[13]!==n||e[14]!==f||e[15]!==b||e[16]!==g?(x=r(j,{"aria-label":b,className:"h-8 w-40","data-testid":"logs-path-filter",onChange:n,placeholder:g,value:f}),e[13]=n,e[14]=f,e[15]=b,e[16]=g,e[17]=x):x=e[17];let y;e[18]!==a?(y=a("Level filter"),e[18]=a,e[19]=y):y=e[19];let C;e[20]!==t||e[21]!==m?(C=le.map(U=>r(Ve,{level:U,onToggle:m,selected:t.has(U)},U)),e[20]=t,e[21]=m,e[22]=C):C=e[22];let $;e[23]!==y||e[24]!==C?($=r("div",{"aria-label":y,className:"inline-flex items-center gap-1","data-testid":"logs-level-filter",role:"group",children:C}),e[23]=y,e[24]=C,e[25]=$):$=e[25];let L;e[26]!==a?(L=a("Time range"),e[26]=a,e[27]=L):L=e[27];let S;e[28]!==a?(S=a("All time"),e[28]=a,e[29]=S):S=e[29];let R;e[30]!==S?(R=r("option",{value:"all",children:S}),e[30]=S,e[31]=R):R=e[31];let w;e[32]!==a?(w=a("Last 5m"),e[32]=a,e[33]=w):w=e[33];let N;e[34]!==w?(N=r("option",{value:"5m",children:w}),e[34]=w,e[35]=N):N=e[35];let P;e[36]!==a?(P=a("Last 15m"),e[36]=a,e[37]=P):P=e[37];let I;e[38]!==P?(I=r("option",{value:"15m",children:P}),e[38]=P,e[39]=I):I=e[39];let E;e[40]!==a?(E=a("Last hour"),e[40]=a,e[41]=E):E=e[41];let F;e[42]!==E?(F=r("option",{value:"1h",children:E}),e[42]=E,e[43]=F):F=e[43];let O;e[44]!==o||e[45]!==L||e[46]!==R||e[47]!==N||e[48]!==I||e[49]!==F||e[50]!==v?(O=T("select",{"aria-label":L,className:"h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none","data-testid":"logs-time-range",onChange:o,value:v,children:[R,N,I,F]}),e[44]=o,e[45]=L,e[46]=R,e[47]=N,e[48]=I,e[49]=F,e[50]=v,e[51]=O):O=e[51];const G=l?"border-border bg-muted font-medium":"border-input text-muted-foreground";let K;e[52]!==G?(K=W("h-8 rounded-md border px-3 text-sm",G),e[52]=G,e[53]=K):K=e[53];let A;e[54]!==l||e[55]!==a?(A=a(l?"List":"Summary"),e[54]=l,e[55]=a,e[56]=A):A=e[56];let _;e[57]!==p||e[58]!==l||e[59]!==K||e[60]!==A?(_=r("button",{"aria-pressed":l,className:K,"data-testid":"logs-summary-toggle",onClick:p,type:"button",children:A}),e[57]=p,e[58]=l,e[59]=K,e[60]=A,e[61]=_):_=e[61];let B;return e[62]!==O||e[63]!==_||e[64]!==h||e[65]!==x||e[66]!==$?(B=T("div",{className:"flex flex-wrap items-center gap-2",children:[h,x,$,O,_]}),e[62]=O,e[63]=_,e[64]=h,e[65]=x,e[66]=$,e[67]=B):B=e[67],B},Be=c=>{const e=M(53),{onOutcomeChange:t,onPathChange:n,onTableChange:i,onUserChange:o,outcomeFilter:m,pathPrefix:p,tableFilter:f,userIdFilter:s}=c,l=z();let v;e[0]!==l?(v=l("Function path"),e[0]=l,e[1]=v):v=e[1];let a;e[2]!==l?(a=l("file:function"),e[2]=l,e[3]=a):a=e[3];let d;e[4]!==n||e[5]!==p||e[6]!==v||e[7]!==a?(d=r(j,{"aria-label":v,className:"h-8 w-44","data-testid":"lg-req-path",onChange:n,placeholder:a,value:p}),e[4]=n,e[5]=p,e[6]=v,e[7]=a,e[8]=d):d=e[8];let u;e[9]!==l?(u=l("User id"),e[9]=l,e[10]=u):u=e[10];let h;e[11]!==l?(h=l("userId"),e[11]=l,e[12]=h):h=e[12];let b;e[13]!==o||e[14]!==u||e[15]!==h||e[16]!==s?(b=r(j,{"aria-label":u,className:"h-8 w-32","data-testid":"lg-req-user",onChange:o,placeholder:h,value:s}),e[13]=o,e[14]=u,e[15]=h,e[16]=s,e[17]=b):b=e[17];let g;e[18]!==l?(g=l("Table touched"),e[18]=l,e[19]=g):g=e[19];let x;e[20]!==l?(x=l("table"),e[20]=l,e[21]=x):x=e[21];let y;e[22]!==i||e[23]!==g||e[24]!==x||e[25]!==f?(y=r(j,{"aria-label":g,className:"h-8 w-32","data-testid":"lg-req-table",onChange:i,placeholder:x,value:f}),e[22]=i,e[23]=g,e[24]=x,e[25]=f,e[26]=y):y=e[26];let C;e[27]!==l?(C=l("Outcome filter"),e[27]=l,e[28]=C):C=e[28];let $;e[29]!==l?($=l("all"),e[29]=l,e[30]=$):$=e[30];let L;e[31]!==$?(L=r("option",{value:"all",children:$}),e[31]=$,e[32]=L):L=e[32];let S;e[33]!==l?(S=l("ok"),e[33]=l,e[34]=S):S=e[34];let R;e[35]!==S?(R=r("option",{value:"ok",children:S}),e[35]=S,e[36]=R):R=e[36];let w;e[37]!==l?(w=l("error"),e[37]=l,e[38]=w):w=e[38];let N;e[39]!==w?(N=r("option",{value:"error",children:w}),e[39]=w,e[40]=N):N=e[40];let P;e[41]!==t||e[42]!==m||e[43]!==C||e[44]!==L||e[45]!==R||e[46]!==N?(P=T("select",{"aria-label":C,className:"h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none","data-testid":"lg-req-outcome",onChange:t,value:m,children:[L,R,N]}),e[41]=t,e[42]=m,e[43]=C,e[44]=L,e[45]=R,e[46]=N,e[47]=P):P=e[47];let I;return e[48]!==P||e[49]!==d||e[50]!==b||e[51]!==y?(I=T("div",{className:"flex flex-wrap items-center gap-2",children:[d,b,y,P]}),e[48]=P,e[49]=d,e[50]=b,e[51]=y,e[52]=I):I=e[52],I},ve=c=>{const e=M(7),{bucket:t}=c;let n;e[0]!==t.key?(n=r("span",{className:"truncate text-muted-foreground",role:"gridcell",children:t.key}),e[0]=t.key,e[1]=n):n=e[1];let i;e[2]!==t.count?(i=r("span",{className:"shrink-0 tabular-nums",role:"gridcell",children:t.count}),e[2]=t.count,e[3]=i):i=e[3];let o;return e[4]!==n||e[5]!==i?(o=T("div",{className:"flex items-center justify-between gap-4 px-3 py-1 font-mono text-xs","data-testid":"logs-summary-row",role:"row",children:[n,i]}),e[4]=n,e[5]=i,e[6]=o):o=e[6],o},ze=c=>{const e=M(31),{summary:t}=c,n=z();let i;e[0]!==t.total||e[1]!==n?(i=n("{count} entries",{count:t.total}),e[0]=t.total,e[1]=n,e[2]=i):i=e[2];let o;e[3]!==i?(o=r("p",{className:"text-xs text-muted-foreground","data-testid":"logs-summary-total",children:i}),e[3]=i,e[4]=o):o=e[4];let m;e[5]!==n?(m=n("By level"),e[5]=n,e[6]=m):m=e[6];let p;e[7]!==m?(p=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:m}),e[7]=m,e[8]=p):p=e[8];let f;e[9]!==t.byLevel?(f=t.byLevel.map(Ge),e[9]=t.byLevel,e[10]=f):f=e[10];let s;e[11]!==f?(s=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-levels",role:"grid",children:f}),e[11]=f,e[12]=s):s=e[12];let l;e[13]!==p||e[14]!==s?(l=T("div",{children:[p,s]}),e[13]=p,e[14]=s,e[15]=l):l=e[15];let v;e[16]!==n?(v=n("By function"),e[16]=n,e[17]=v):v=e[17];let a;e[18]!==v?(a=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:v}),e[18]=v,e[19]=a):a=e[19];let d;e[20]!==t.byPath?(d=t.byPath.map(We),e[20]=t.byPath,e[21]=d):d=e[21];let u;e[22]!==d?(u=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-paths",role:"grid",children:d}),e[22]=d,e[23]=u):u=e[23];let h;e[24]!==u||e[25]!==a?(h=T("div",{children:[a,u]}),e[24]=u,e[25]=a,e[26]=h):h=e[26];let b;return e[27]!==h||e[28]!==o||e[29]!==l?(b=T("div",{className:"flex flex-col gap-4 rounded-xl border border-border bg-card p-4 shadow-xs","data-testid":"logs-summary",children:[o,l,h]}),e[27]=h,e[28]=o,e[29]=l,e[30]=b):b=e[30],b};function Ge(c){return r(ve,{bucket:c},c.key)}function We(c){return r(ve,{bucket:c},c.key)}const Qe=c=>{const e=M(46),{liveError:t,onShardKeyChange:n,onShowArchive:i,onShowErrors:o,onShowRequests:m,shardKey:p,view:f}=c,s=z(),l=f==="requests",v=f==="requests"?"bg-muted font-medium":"text-muted-foreground";let a;e[0]!==v?(a=W("px-3 py-1 text-sm",v),e[0]=v,e[1]=a):a=e[1];let d;e[2]!==s?(d=s("Requests"),e[2]=s,e[3]=d):d=e[3];let u;e[4]!==m||e[5]!==l||e[6]!==a||e[7]!==d?(u=r("button",{"aria-selected":l,className:a,"data-testid":"lg-view-requests",onClick:m,role:"tab",type:"button",children:d}),e[4]=m,e[5]=l,e[6]=a,e[7]=d,e[8]=u):u=e[8];const h=f==="errors",b=f==="errors"?"bg-muted font-medium":"text-muted-foreground";let g;e[9]!==b?(g=W("px-3 py-1 text-sm",b),e[9]=b,e[10]=g):g=e[10];let x;e[11]!==s?(x=s("Errors"),e[11]=s,e[12]=x):x=e[12];let y;e[13]!==o||e[14]!==h||e[15]!==g||e[16]!==x?(y=r("button",{"aria-selected":h,className:g,"data-testid":"lg-view-errors",onClick:o,role:"tab",type:"button",children:x}),e[13]=o,e[14]=h,e[15]=g,e[16]=x,e[17]=y):y=e[17];const C=f==="archive",$=f==="archive"?"bg-muted font-medium":"text-muted-foreground";let L;e[18]!==$?(L=W("px-3 py-1 text-sm",$),e[18]=$,e[19]=L):L=e[19];let S;e[20]!==s?(S=s("Archive"),e[20]=s,e[21]=S):S=e[21];let R;e[22]!==i||e[23]!==C||e[24]!==L||e[25]!==S?(R=r("button",{"aria-selected":C,className:L,"data-testid":"lg-view-archive",onClick:i,role:"tab",type:"button",children:S}),e[22]=i,e[23]=C,e[24]=L,e[25]=S,e[26]=R):R=e[26];let w;e[27]!==y||e[28]!==R||e[29]!==u?(w=T("div",{className:"inline-flex overflow-hidden rounded-lg border border-border",role:"tablist",children:[u,y,R]}),e[27]=y,e[28]=R,e[29]=u,e[30]=w):w=e[30];let N;e[31]!==n||e[32]!==p?(N=r(Oe,{onChange:n,testId:"lg-shard-input",value:p}),e[31]=n,e[32]=p,e[33]=N):N=e[33];let P;e[34]!==t||e[35]!==f?(P=f!=="archive"&&r(_e,{message:t,prefix:"lg"}),e[34]=t,e[35]=f,e[36]=P):P=e[36];let I;e[37]!==s?(I=s("Open in Cloudflare"),e[37]=s,e[38]=I):I=e[38];let E;e[39]!==I?(E=r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"lg-cf-link",href:fe,rel:"noreferrer",target:"_blank",children:I}),e[39]=I,e[40]=E):E=e[40];let F;return e[41]!==w||e[42]!==N||e[43]!==P||e[44]!==E?(F=T("div",{className:"flex flex-wrap items-center gap-2",children:[w,N,P,E]}),e[41]=w,e[42]=N,e[43]=P,e[44]=E,e[45]=F):F=e[45],F},ee=400,Ye=36,He={height:ee,overflow:"auto"},be={left:0,position:"absolute",top:0,width:"100%"},Je={error:"destructive",ok:"secondary"},Xe=c=>{const e=M(26),{entry:t,index:n,measureRef:i,start:o}=c,m=`translateY(${String(o)}px)`;let p;e[0]!==m?(p={...be,transform:m},e[0]=m,e[1]=p):p=e[1];const f=p;let s;e[2]!==t.fields?(s=te(t.fields),e[2]=t.fields,e[3]=s):s=e[3];const l=s;let v;e[4]!==t.timestamp?(v=new Date(t.timestamp).toLocaleString(),e[4]=t.timestamp,e[5]=v):v=e[5];let a;e[6]!==v?(a=r("span",{className:"w-44 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:v}),e[6]=v,e[7]=a):a=e[7];const d=pe[t.level];let u;e[8]!==t.level||e[9]!==d?(u=r("span",{className:"w-20 shrink-0",role:"gridcell",children:r(re,{variant:d,children:t.level})}),e[8]=t.level,e[9]=d,e[10]=u):u=e[10];const h=t.functionPath??"—";let b;e[11]!==h?(b=r("span",{className:"w-48 shrink-0 truncate text-muted-foreground",role:"gridcell",children:h}),e[11]=h,e[12]=b):b=e[12];let g;e[13]!==l?(g=l===""?null:r("span",{className:"ml-2 text-muted-foreground","data-testid":"lg-fields",children:l}),e[13]=l,e[14]=g):g=e[14];let x;e[15]!==t.message||e[16]!==g?(x=T("span",{className:"flex-1 truncate",role:"gridcell",children:[t.message,g]}),e[15]=t.message,e[16]=g,e[17]=x):x=e[17];let y;return e[18]!==n||e[19]!==i||e[20]!==f||e[21]!==x||e[22]!==a||e[23]!==u||e[24]!==b?(y=T("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":n,"data-testid":"lg-row",ref:i,role:"row",style:f,children:[a,u,b,x]}),e[18]=n,e[19]=i,e[20]=f,e[21]=x,e[22]=a,e[23]=u,e[24]=b,e[25]=y):y=e[25],y},ce=c=>c.length===0?"—":c.join(", "),Ze=c=>{const e=M(37),{entry:t,index:n,measureRef:i,start:o}=c,m=`translateY(${String(o)}px)`;let p;e[0]!==m?(p={...be,transform:m},e[0]=m,e[1]=p):p=e[1];const f=p;let s;e[2]!==t.ts?(s=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=s):s=e[3];let l;e[4]!==s?(l=r("span",{className:"w-40 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:s}),e[4]=s,e[5]=l):l=e[5];const v=Je[t.outcome];let a;e[6]!==t.outcome||e[7]!==v?(a=r("span",{className:"w-16 shrink-0",role:"gridcell",children:r(re,{variant:v,children:t.outcome})}),e[6]=t.outcome,e[7]=v,e[8]=a):a=e[8];let d;e[9]!==t.functionPath?(d=r("span",{className:"w-44 shrink-0 truncate",role:"gridcell",title:t.functionPath,children:t.functionPath}),e[9]=t.functionPath,e[10]=d):d=e[10];const u=t.shardKey??"—";let h;e[11]!==u?(h=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:u}),e[11]=u,e[12]=h):h=e[12];const b=t.userId??"—";let g;e[13]!==b?(g=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:b}),e[13]=b,e[14]=g):g=e[14];let x;e[15]!==t.durationMs?(x=Math.round(t.durationMs),e[15]=t.durationMs,e[16]=x):x=e[16];const y=`${String(x)}ms`;let C;e[17]!==y?(C=r("span",{className:"w-16 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:y}),e[17]=y,e[18]=C):C=e[18];let $;e[19]!==t.errorMessage||e[20]!==t.outcome||e[21]!==t.tablesRead||e[22]!==t.tablesWritten?($=t.outcome==="error"&&t.errorMessage!==void 0?t.errorMessage:`r:${ce(t.tablesRead)} · w:${ce(t.tablesWritten)}`,e[19]=t.errorMessage,e[20]=t.outcome,e[21]=t.tablesRead,e[22]=t.tablesWritten,e[23]=$):$=e[23];let L;e[24]!==$?(L=r("span",{className:"flex-1 truncate text-muted-foreground",role:"gridcell",children:$}),e[24]=$,e[25]=L):L=e[25];let S;return e[26]!==n||e[27]!==i||e[28]!==f||e[29]!==g||e[30]!==C||e[31]!==L||e[32]!==l||e[33]!==a||e[34]!==d||e[35]!==h?(S=T("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":n,"data-testid":"lg-req-row",ref:i,role:"row",style:f,children:[l,a,d,h,g,C,L]}),e[26]=n,e[27]=i,e[28]=f,e[29]=g,e[30]=C,e[31]=L,e[32]=l,e[33]=a,e[34]=d,e[35]=h,e[36]=S):S=e[36],S},ue=c=>{const{entries:e}=c??{};return Array.isArray(e)?e:[]},et=c=>{const e={};return c.functionPathPrefix.trim()!==""&&(e.functionPathPrefix=c.functionPathPrefix.trim()),c.userId.trim()!==""&&(e.userId=c.userId.trim()),c.tableTouched.trim()!==""&&(e.tableTouched=c.tableTouched.trim()),(c.outcome==="ok"||c.outcome==="error")&&(e.outcome=c.outcome),e},tt={"5m":300*1e3,"15m":900*1e3,"1h":3600*1e3},rt=(c,e)=>{const t=e.search.trim().toLowerCase(),n=e.path.trim().toLowerCase(),i=e.range==="all"?Number.NEGATIVE_INFINITY:e.now-tt[e.range];return c.filter(o=>e.levels.size>0&&!e.levels.has(o.level)||o.timestamp<i||n!==""&&!(o.functionPath??"").toLowerCase().includes(n)?!1:t===""||o.message.toLowerCase().includes(t)||te(o.fields).toLowerCase().includes(t))},lt="—",at=c=>{const e=new Map,t=new Map;for(const o of c){e.set(o.level,(e.get(o.level)??0)+1);const m=o.functionPath??lt;t.set(m,(t.get(m)??0)+1)}const n=le.filter(o=>e.has(o)).map(o=>({count:e.get(o)??0,key:o})),i=[...t.entries()].map(([o,m])=>({count:m,key:o})).toSorted((o,m)=>m.count===o.count?o.key.localeCompare(m.key):m.count-o.count);return{byLevel:n,byPath:i,total:c.length}},Pt=({initialShardKey:c})=>{const e=z(),[t,n]=q("requests"),{queryShardKey:i,setShardKey:o,shardKey:m}=Se(c),[p,f]=q(""),[s,l]=q(()=>new Set),[v,a]=q(""),[d,u]=q("all"),[h,b]=q(!1),[g,x]=q(""),[y,C]=q(""),[$,L]=q(""),[S,R]=q("all"),w=et({functionPathPrefix:g,outcome:S,tableTouched:$,userId:y}),N=oe(ne.getRequestLog,w,{enabled:t==="requests",live:!0,shardKey:i}),P=oe(ne.getLogs,{},{enabled:t==="errors",live:!0,shardKey:i}),I=t==="requests"?N:P,{error:E,errorSource:F,isLoading:O,liveError:G}=I,K=ue(P.data),A=ue(N.data);he(()=>{I.data!==void 0&&ke(i)},[I.data,i]);const _=rt(K,{levels:s,now:Date.now(),path:v,range:d,search:p}),B=at(_),U=t==="requests"?A.length:_.length,J=t==="errors"&&h,Q=Ce(()=>E!==null?"error":U===0?O?J?"summary":"list":"empty":J?"summary":"list",[U,O,E,J]),ae=me(null),Y=we({count:U,estimateSize:()=>Ye,getScrollElement:()=>ae.current,initialRect:{height:ee,width:800},observeElementRect:(k,X)=>$e(k,X,ee),overscan:8}),xe=Y.getVirtualItems(),ye={height:Y.getTotalSize(),position:"relative",width:"100%"};return T("div",{className:"flex flex-col gap-4","data-testid":"lunora-logs",children:[r(Qe,{liveError:G,onShardKeyChange:o,onShowArchive:()=>{n("archive"),b(!1)},onShowErrors:()=>{n("errors"),b(!1)},onShowRequests:()=>{n("requests"),b(!1)},shardKey:m,view:t}),t==="errors"&&r(je,{levelFilter:s,onLogPathChange:k=>{a(k.target.value)},onSearchChange:k=>{f(k.target.value)},onTimeRangeChange:k=>{u(k.target.value)},onToggleLevel:k=>{l(X=>{const H=new Set(X);return H.has(k)?H.delete(k):H.add(k),H})},onToggleSummary:()=>{b(k=>!k)},pathFilter:v,search:p,showSummary:h,timeRange:d}),t==="requests"&&r(Be,{onOutcomeChange:k=>{R(k.target.value)},onPathChange:k=>{x(k.target.value)},onTableChange:k=>{L(k.target.value)},onUserChange:k=>{C(k.target.value)},outcomeFilter:S,pathPrefix:g,tableFilter:$,userIdFilter:y}),t==="archive"?r(De,{shardKey:i}):T(qe,{children:[Q==="error"&&r(Le,{error:F,testId:"lg-error"}),Q==="empty"&&r(Z,{description:e("Function and request logs for this shard show up here as your app handles traffic."),icon:r("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:r("path",{d:"M4 5h16M4 12h16M4 19h10"})}),testId:"lg-empty",title:e("No logs.")}),Q==="summary"&&r(ze,{summary:B}),Q==="list"&&r("div",{className:"rounded-xl border border-border shadow-xs","data-testid":"lg-scroll",ref:ae,style:He,children:r("div",{"aria-label":e("Recent logs"),"data-testid":"lg-table",role:"grid",style:ye,children:xe.map(k=>t==="requests"?r(Ze,{entry:A[k.index],index:k.index,measureRef:Y.measureElement,start:k.start},k.key):r(Xe,{entry:_[k.index],index:k.index,measureRef:Y.measureElement,start:k.start},k.key))})})]})]})};export{Pt as LogsPanel,rt as filterLogs,at as summarizeLogs};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{E as ie}from"../packem_shared/error-alert
|
|
1
|
+
import{E as ie}from"../packem_shared/error-alert--Ie7ofJ0.js";import{g as le}from"../packem_shared/badge-BbuuAio7.js";import{u as v}from"../packem_shared/button-BkCrNcAs.js";import{E as oe}from"../packem_shared/empty-state-Cg7t_8qu.js";import{u as se}from"../packem_shared/input-JHu63lTv.js";import{p as ne}from"../packem_shared/scroll-area-DTEq6Jec.js";import{Separator as de}from"@base-ui/react/separator";import{c as ce}from"../packem_shared/utils-bhneXptQ.js";import{jsx as t,jsxs as s,Fragment as me}from"react/jsx-runtime";import{useT as ue}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{d as Y,b as Z,f as ee,c as he,g as re,i as te}from"../packem_shared/internal-zkEvTqy8.js";import{c as pe}from"react/compiler-runtime";import{useLunora as fe}from"@lunora/react";import{useState as H}from"react";import{N as be}from"../packem_shared/use-admin-query-CnnyWJXM.js";import{useAutoRefresh as ge}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js";import{ADMIN_FUNCTIONS as Q}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";function xe({className:a,orientation:e="horizontal",...l}){return t(de,{"data-slot":"separator",orientation:e,className:ce("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",a),...l})}const ve=/https?:\/\/[^\s"'<>)]+/i,ae=a=>a===void 0?void 0:ve.exec(a)?.[0],N=a=>a===void 0?"":Array.isArray(a)?a.join(", "):a,Ne=a=>{if(a!==void 0)return ae(a.html)??ae(a.text)},ye=(a,e)=>{const l=e.trim().toLowerCase();return l===""?a:a.filter(o=>`${o.subject} ${N(o.to)} ${N(o.cc)}`.toLowerCase().includes(l))},we=(a,e)=>{if(a.length!==0)return a.find(l=>l.id===e)??a[0]},Ce=re(Q.clearCapturedMail),ke=re(Q.sendTestMail),Se=a=>{const e=pe(38),{limit:l}=a,o=fe();let p;e[0]!==l?(p={limit:l},e[0]=l,e[1]=p):p=e[1];const{data:P,error:y,errorSource:w,isLoading:g,refetch:n}=be(Q.getCapturedMail,p),[C,f]=H(null),[q,k]=H(null),[x,i]=H("html"),[c,D]=H(""),b=P?.entries??[],r=y??C,u=y===null?C:w;let S;e[2]!==o||e[3]!==n?(S=async()=>{f(null);try{await o.query(Ce,{},Y("")),k(null),n()}catch(m){f(Z(m))}},e[2]=o,e[3]=n,e[4]=S):S=e[4];const R=S;let $;e[5]!==o||e[6]!==n?($=async()=>{f(null);try{await o.query(ke,{},Y("")),n()}catch(m){f(Z(m))}},e[5]=o,e[6]=n,e[7]=$):$=e[7];const B=$;let T;e[8]!==n?(T=()=>{n()},e[8]=n,e[9]=T):T=e[9],ge(T,!0);let L;e[10]!==R?(L=()=>{ee(R())},e[10]=R,e[11]=L):L=e[11];const U=L;let j;e[12]!==B?(j=()=>{ee(B())},e[12]=B,e[13]=j):j=e[13];const W=j;let M;e[14]===Symbol.for("react.memo_cache_sentinel")?(M=m=>{D(m.currentTarget.value)},e[14]=M):M=e[14];const J=M;let _;e[15]===Symbol.for("react.memo_cache_sentinel")?(_=m=>{const{id:h}=m.currentTarget.dataset;h!==void 0&&k(h)},e[15]=_):_=e[15];const K=_;let z;e[16]===Symbol.for("react.memo_cache_sentinel")?(z=m=>{const h=m.currentTarget.dataset.tab;(h==="headers"||h==="html"||h==="text")&&i(h)},e[16]=z):z=e[16];const V=z,A=ye(b,c),F=we(A,q),d=Ne(F);let O;e[17]!==d?(O=()=>{d!==void 0&&he(d)},e[17]=d,e[18]=O):O=e[18];const X=O;let E;e[19]!==d?(E=()=>{d!==void 0&&"window"in globalThis&&globalThis.window.open(d,"_blank","noopener")},e[19]=d,e[20]=E):E=e[20];const G=E;let I;return e[21]!==b||e[22]!==r||e[23]!==u||e[24]!==c||e[25]!==g||e[26]!==d||e[27]!==U||e[28]!==X||e[29]!==J||e[30]!==G||e[31]!==K||e[32]!==V||e[33]!==W||e[34]!==F||e[35]!==x||e[36]!==A?(I={entries:b,error:r,errorSource:u,filter:c,isLoading:g,link:d,onClear:U,onCopyLink:X,onFilterChange:J,onOpenLink:G,onSelectMessage:K,onSelectTab:V,onSendTest:W,selected:F,tab:x,visible:A},e[21]=b,e[22]=r,e[23]=u,e[24]=c,e[25]=g,e[26]=d,e[27]=U,e[28]=X,e[29]=J,e[30]=G,e[31]=K,e[32]=V,e[33]=W,e[34]=F,e[35]=x,e[36]=A,e[37]=I):I=e[37],I},$e=`<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data:; style-src 'unsafe-inline'; font-src data:">`,Te=a=>`${$e}${a}`,We=({limit:a=100})=>{const e=ue(),{entries:l,error:o,errorSource:p,filter:P,isLoading:y,link:w,onClear:g,onCopyLink:n,onFilterChange:C,onOpenLink:f,onSelectMessage:q,onSelectTab:k,onSendTest:x,selected:i,tab:c,visible:D}=Se({limit:a}),b=r=>e(r==="html"?"HTML":r==="text"?"Plain text":"Headers");return s("div",{className:"flex flex-col gap-4","data-testid":"mail-panel",children:[s("div",{className:"flex flex-wrap items-center gap-2",children:[t(v,{"data-testid":"mail-send-test",onClick:x,size:"sm",type:"button",variant:"outline",children:e("Send test")}),t(v,{"data-testid":"mail-clear",disabled:l.length===0,onClick:g,size:"sm",type:"button",variant:"outline",children:e("Clear inbox")}),l.length>0&&t(le,{className:"ml-auto","data-testid":"mail-count",variant:"secondary",children:e("{count} messages",{count:l.length})})]}),o!==null&&t(ie,{error:p,testId:"mail-error"}),o===null&&!y&&l.length===0&&t(oe,{description:e("Email your app sends in dev is captured here — nothing is delivered."),icon:s("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:[t("path",{d:"M4 5h16v14H4z"}),t("path",{d:"m4 6 8 6 8-6"})]}),testId:"mail-empty",title:e("No captured email.")}),l.length>0&&s("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-[minmax(0,22rem)_1fr]","data-testid":"mail-reader",children:[s("div",{className:"flex flex-col gap-2",children:[t(se,{"aria-label":e("Search messages"),"data-testid":"mail-search",onChange:C,placeholder:e("Filter messages"),type:"search",value:P}),t(ne,{className:"max-h-[32rem] rounded-xl border border-border bg-card shadow-xs","data-testid":"mail-list",children:t("ul",{className:"divide-y",children:D.map(r=>{const u=r.id===i?.id;return t("li",{children:s("button",{className:`flex w-full flex-col items-start gap-0.5 px-3 py-2 text-left text-sm hover:bg-muted/60 ${u?"bg-muted":""}`,"data-active":u,"data-id":r.id,"data-testid":"mail-list-item",onClick:q,type:"button",children:[t("span",{className:"w-full truncate font-medium",children:r.subject||e("(no subject)")}),t("span",{className:"w-full truncate text-xs text-muted-foreground",children:N(r.to)}),t("span",{className:"text-xs text-muted-foreground tabular-nums",children:te(r.capturedAt,"—")})]})},r.id)})})})]}),i!==void 0&&s("div",{className:"flex min-w-0 flex-col gap-3 rounded-xl border border-border bg-card p-4 shadow-xs","data-testid":"mail-detail",children:[s("div",{className:"flex flex-col gap-1",children:[t("h2",{className:"truncate text-base font-semibold","data-testid":"mail-subject",children:i.subject||e("(no subject)")}),s("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-xs text-muted-foreground",children:[t("dt",{children:e("From")}),t("dd",{className:"truncate font-mono",children:i.from??"—"}),t("dt",{children:e("To")}),t("dd",{className:"truncate font-mono",children:N(i.to)}),i.cc!==void 0&&i.cc.length>0&&s(me,{children:[t("dt",{children:e("Cc")}),t("dd",{className:"truncate font-mono",children:N(i.cc)})]}),t("dt",{children:e("Sent")}),t("dd",{className:"tabular-nums",children:te(i.capturedAt,"—")})]})]}),s("div",{className:"flex flex-wrap items-center gap-2","data-testid":"mail-actions",children:[t(v,{"data-testid":"mail-copy-link",disabled:w===void 0,onClick:n,size:"sm",type:"button",variant:"outline",children:e("Copy link")}),t(v,{"data-testid":"mail-open-link",disabled:w===void 0,onClick:f,size:"sm",type:"button",variant:"outline",children:e("Open in new tab")})]}),t(xe,{}),t("div",{className:"flex items-center gap-1","data-testid":"mail-tabs",role:"tablist",children:["html","text","headers"].map(r=>t(v,{"aria-selected":c===r,"data-tab":r,"data-testid":`mail-tab-${r}`,onClick:k,role:"tab",size:"sm",type:"button",variant:c===r?"secondary":"ghost",children:b(r)},r))}),s("div",{className:"min-h-[12rem]",children:[c==="html"&&(i.html===void 0?t("p",{className:"text-sm text-muted-foreground",children:e("No HTML body.")}):t("iframe",{className:"h-[24rem] w-full rounded-md border bg-white","data-testid":"mail-preview-html",sandbox:"",srcDoc:Te(i.html),title:e("Email preview")})),c==="text"&&(i.text===void 0?t("p",{className:"text-sm text-muted-foreground",children:e("No text body.")}):t("pre",{className:"overflow-auto whitespace-pre-wrap rounded-md border bg-muted/30 p-3 text-xs","data-testid":"mail-preview-text",children:i.text})),c==="headers"&&(i.headers===void 0||Object.keys(i.headers).length===0?t("p",{className:"text-sm text-muted-foreground",children:e("No headers.")}):t("pre",{className:"overflow-auto whitespace-pre-wrap rounded-md border bg-muted/30 p-3 text-xs","data-testid":"mail-preview-headers",children:Object.entries(i.headers).map(([r,u])=>`${r}: ${u}`).join(`
|
|
2
2
|
`)}))]})]})]})]})};export{We as MailPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useLunora as pt}from"@lunora/react";import{useNavigate as xt}from"@tanstack/react-router";import{useState as fe,useRef as We,useEffect as tt,useMemo as bt}from"react";import{L as vt}from"../packem_shared/live-status-CmuRLFKf.js";import{ShardInput as yt}from"../packem_shared/ShardInput-BVn2iCU0.js";import{u as rt}from"../packem_shared/button-BkCrNcAs.js";import{N as Je}from"../packem_shared/use-admin-query-QJ-ibl5u.js";import{S as Nt}from"../packem_shared/use-shard-key-B2JtNa5m.js";import{useT as pe}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as ze}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{c as St}from"../packem_shared/cf-links-Dmg86v1D.js";import{l as $t,k as Ye,f as at,d as wt,b as qt,g as kt}from"../packem_shared/internal-BSIsQVC6.js";import{r as Mt,l as _t}from"../packem_shared/shard-history-DMEW5VBE.js";import{w as It}from"../packem_shared/trace-handoff-Dw7mwjxu.js";import{c as Le}from"react/compiler-runtime";import{f as Ct}from"../packem_shared/log-fields-CoL3hsIQ.js";import{g as et}from"../packem_shared/badge-BbuuAio7.js";import{c as he,u as ge,n as Pe,f as Qe,m as Rt}from"../packem_shared/card-CIDGUN6K.js";import{p as de,d as dt,m as He,u as oe,n as mt,f as ut}from"../packem_shared/table-DdJBrClo.js";import{S as ht}from"../packem_shared/sparkline-CgjeUU2I.js";import{jsx as r,jsxs as o,Fragment as Ve}from"react/jsx-runtime";import{aggregateMetrics as Dt,computeLatencyPercentiles as Ft,enrichQueryStats as Tt,shardsToAggregate as Lt}from"../packem_shared/aggregateMetrics-BNfajLa2.js";import{g as me}from"../packem_shared/stat-card-fm_TF1mo.js";import{ResponsiveContainer as lt,AreaChart as Ot,CartesianGrid as st,XAxis as nt,YAxis as it,Tooltip as ot,Area as zt,LineChart as At,Line as Kt}from"recharts";import{E as Et}from"../packem_shared/empty-state-Cg7t_8qu.js";import{c as jt}from"../packem_shared/utils-bhneXptQ.js";import{N as Pt,y as Qt,k as Ue,_ as Ut,w as Bt}from"../packem_shared/select-Bul-DeII.js";const Jt=(l,e)=>l<e?-1:l>e?1:0,Ze=l=>{if(l===void 0)return"null";if(typeof l=="bigint")throw new TypeError("stableStringify: cannot use a bigint in a stable JSON cache key — pass it as a string, or use stableWireKey");if(l===null||typeof l!="object")return JSON.stringify(l);if(Array.isArray(l))return`[${l.map(d=>Ze(d)).join(",")}]`;const e=Object.getPrototypeOf(l);if(e!==null&&e!==Object.prototype){const d=l.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${d} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const s=l,a=Object.keys(s).toSorted(Jt),t=[];for(const d of a){const i=s[d];i!==void 0&&t.push(`${JSON.stringify(d)}:${Ze(i)}`)}return`{${t.join(",")}}`},gt=(l,e,s)=>`${l}:${e}:${Ze(s??{})}`,ft=(l,e)=>l==="gauge"?e.last:l==="histogram"?e.sum/Math.max(1,e.count):e.sum,Ht=(l,e)=>ft(l,e),Gt=l=>ft(l.kind,l),Xe=l=>Number.isInteger(l)?l.toLocaleString():l.toLocaleString(void 0,{maximumFractionDigits:2}),Wt=l=>Array.isArray(l?.series)?l.series:[],Xt="FUNCTION_NOT_FOUND",Yt=l=>{const e=new Map;if(!Array.isArray(l?.series))return e;for(const s of l.series)e.set(gt(s.kind,s.name,s.attributes),s.points);return e},Vt={counter:"secondary",gauge:"default",histogram:"outline"},Zt=l=>{const e=Le(18),{name:s,onOpenTrace:a,traceId:t}=l,d=pe();if(t===void 0){let u;return e[0]===Symbol.for("react.memo_cache_sentinel")?(u=r("span",{className:"text-muted-foreground",children:"—"}),e[0]=u):u=e[0],u}let i;e[1]!==t?(i=t.slice(0,8),e[1]=t,e[2]=i):i=e[2];const n=i;if(a===void 0){const u=`mt-instrument-trace-${s}`;let h;return e[3]!==n||e[4]!==u||e[5]!==t?(h=r("span",{className:"text-muted-foreground","data-testid":u,title:t,children:n}),e[3]=n,e[4]=u,e[5]=t,e[6]=h):h=e[6],h}const k=`mt-instrument-trace-${s}`;let f;e[7]!==a||e[8]!==t?(f=()=>{a(t)},e[7]=a,e[8]=t,e[9]=f):f=e[9];let S;e[10]!==d||e[11]!==t?(S=d("Open the exemplar trace {trace}",{trace:t}),e[10]=d,e[11]=t,e[12]=S):S=e[12];let p;return e[13]!==n||e[14]!==k||e[15]!==f||e[16]!==S?(p=r("button",{className:"text-primary underline-offset-4 hover:underline","data-testid":k,onClick:f,title:S,type:"button",children:n}),e[13]=n,e[14]=k,e[15]=f,e[16]=S,e[17]=p):p=e[17],p},er=l=>{const e=Le(105),{onOpenTrace:s,shardKey:a}=l,t=pe();let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d={},e[0]=d):d=e[0];let i;e[1]!==a?(i={live:!0,shardKey:a},e[1]=a,e[2]=i):i=e[2];const{data:n,error:k,errorSource:f}=Je(ze.getMetricSeries,d,i);let S;e[3]===Symbol.for("react.memo_cache_sentinel")?(S={},e[3]=S):S=e[3];let p;e[4]!==a?(p={live:!0,shardKey:a},e[4]=a,e[5]=p):p=e[5];const{data:u}=Je(ze.getMetricHistory,S,p);let h,M,b,$,_,c,g,x,w,q,y,I,C;if(e[6]!==n||e[7]!==k||e[8]!==f||e[9]!==u||e[10]!==s||e[11]!==t){x=Symbol.for("react.early_return_sentinel");e:{const z=Wt(n),K=$t(f)===Xt;if(k!==null&&!K){let m;e[25]!==t?(m=t("Instruments"),e[25]=t,e[26]=m):m=e[26];let E;e[27]!==m?(E=r("h3",{className:"text-sm font-semibold text-foreground",children:m}),e[27]=m,e[28]=E):E=e[28];let j;e[29]!==k||e[30]!==t?(j=t("Instruments unavailable: {error}",{error:k}),e[29]=k,e[30]=t,e[31]=j):j=e[31];let P;e[32]!==j?(P=r("span",{className:"text-xs text-muted-foreground","data-testid":"mt-instruments-error",role:"status",children:j}),e[32]=j,e[33]=P):P=e[33];let ie;e[34]!==E||e[35]!==P?(ie=o("section",{className:"flex flex-col gap-2","data-testid":"mt-instruments",children:[E,P]}),e[34]=E,e[35]=P,e[36]=ie):ie=e[36],x=ie;break e}if(z.length===0){x=null;break e}const Q=Yt(u);let L;e[37]!==t?(L=m=>t(m==="counter"?"Counter":m==="gauge"?"Gauge":"Histogram"),e[37]=t,e[38]=L):L=e[38];const U=L;_="flex flex-col gap-2",c="mt-instruments";let O;e[39]!==t?(O=t("Instruments"),e[39]=t,e[40]=O):O=e[40],e[41]!==O?(g=r("h3",{className:"text-sm font-semibold text-foreground",children:O}),e[41]=O,e[42]=g):g=e[42],$=he,C="overflow-hidden py-0",b=ge,I="px-0",M=mt,q="mt-instruments-table";let A;e[43]!==t?(A=t("name"),e[43]=t,e[44]=A):A=e[44];let J;e[45]!==A?(J=r(de,{children:A}),e[45]=A,e[46]=J):J=e[46];let H;e[47]!==t?(H=t("kind"),e[47]=t,e[48]=H):H=e[48];let G;e[49]!==H?(G=r(de,{children:H}),e[49]=H,e[50]=G):G=e[50];let W;e[51]!==t?(W=t("value"),e[51]=t,e[52]=W):W=e[52];let X;e[53]!==W?(X=r(de,{className:"text-right",children:W}),e[53]=W,e[54]=X):X=e[54];let Y;e[55]!==t?(Y=t("count"),e[55]=t,e[56]=Y):Y=e[56];let V;e[57]!==Y?(V=r(de,{className:"text-right",children:Y}),e[57]=Y,e[58]=V):V=e[58];let Z;e[59]!==t?(Z=t("range"),e[59]=t,e[60]=Z):Z=e[60];let ee;e[61]!==Z?(ee=r(de,{className:"text-right",children:Z}),e[61]=Z,e[62]=ee):ee=e[62];let te;e[63]!==t?(te=t("trend"),e[63]=t,e[64]=te):te=e[64];let re;e[65]!==te?(re=r(de,{children:te}),e[65]=te,e[66]=re):re=e[66];let ae;e[67]!==t?(ae=t("trace"),e[67]=t,e[68]=ae):ae=e[68];let le;e[69]!==ae?(le=r(de,{children:ae}),e[69]=ae,e[70]=le):le=e[70];let se;e[71]!==t?(se=t("dimensions"),e[71]=t,e[72]=se):se=e[72];let ne;e[73]!==se?(ne=r(de,{children:se}),e[73]=se,e[74]=ne):ne=e[74],e[75]!==J||e[76]!==G||e[77]!==X||e[78]!==V||e[79]!==ee||e[80]!==re||e[81]!==le||e[82]!==ne?(y=r(dt,{children:o(He,{children:[J,G,X,V,ee,re,le,ne]})}),e[75]=J,e[76]=G,e[77]=X,e[78]=V,e[79]=ee,e[80]=re,e[81]=le,e[82]=ne,e[83]=y):y=e[83],h=ut,w=z.map(m=>{const E=Ct(m.attributes),j=gt(m.kind,m.name,m.attributes),P=(Q.get(j)??[]).map(ie=>Ht(m.kind,ie));return o(He,{"data-testid":`mt-instrument-${m.name}`,children:[r(oe,{className:"font-mono text-xs",title:m.functionPath,children:m.name}),r(oe,{children:r(et,{variant:Vt[m.kind],children:U(m.kind)})}),r(oe,{className:"text-right font-mono tabular-nums","data-testid":`mt-instrument-value-${m.name}`,children:Xe(Gt(m))}),r(oe,{className:"text-right tabular-nums text-muted-foreground",children:m.count.toLocaleString()}),r(oe,{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:m.min===m.max?"—":`${Xe(m.min)}–${Xe(m.max)}`}),r(oe,{children:P.length>=2?r(ht,{ariaLabel:t("{name} trend",{name:m.name}),className:"h-6 w-24 text-foreground",series:P,testId:`mt-instrument-trend-${m.name}`}):r("span",{className:"text-xs text-muted-foreground",children:"—"})}),r(oe,{className:"font-mono text-xs",children:r(Zt,{name:m.name,onOpenTrace:s,traceId:m.exemplarTraceId})}),r(oe,{className:"max-w-64 truncate font-mono text-xs text-muted-foreground",title:E,children:E===""?"—":E})]},j)})}e[6]=n,e[7]=k,e[8]=f,e[9]=u,e[10]=s,e[11]=t,e[12]=h,e[13]=M,e[14]=b,e[15]=$,e[16]=_,e[17]=c,e[18]=g,e[19]=x,e[20]=w,e[21]=q,e[22]=y,e[23]=I,e[24]=C}else h=e[12],M=e[13],b=e[14],$=e[15],_=e[16],c=e[17],g=e[18],x=e[19],w=e[20],q=e[21],y=e[22],I=e[23],C=e[24];if(x!==Symbol.for("react.early_return_sentinel"))return x;let R;e[84]!==h||e[85]!==w?(R=r(h,{children:w}),e[84]=h,e[85]=w,e[86]=R):R=e[86];let D;e[87]!==M||e[88]!==R||e[89]!==q||e[90]!==y?(D=o(M,{"data-testid":q,children:[y,R]}),e[87]=M,e[88]=R,e[89]=q,e[90]=y,e[91]=D):D=e[91];let N;e[92]!==b||e[93]!==D||e[94]!==I?(N=r(b,{className:I,children:D}),e[92]=b,e[93]=D,e[94]=I,e[95]=N):N=e[95];let v;e[96]!==$||e[97]!==N||e[98]!==C?(v=r($,{className:C,children:N}),e[96]=$,e[97]=N,e[98]=C,e[99]=v):v=e[99];let T;return e[100]!==_||e[101]!==c||e[102]!==g||e[103]!==v?(T=o("section",{className:_,"data-testid":c,children:[g,v]}),e[100]=_,e[101]=c,e[102]=g,e[103]=v,e[104]=T):T=e[104],T},tr=l=>{const e=Le(74),{aggregate:s,shardResults:a}=l,t=pe();let d;e[0]!==t?(d=t("Shards"),e[0]=t,e[1]=d):d=e[1];let i;e[2]!==s.failed||e[3]!==s.reachable||e[4]!==t?(i=s.failed>0?t("{reachable} reachable, {failed} unreachable",{failed:s.failed,reachable:s.reachable}):t("{reachable} reachable",{reachable:s.reachable}),e[2]=s.failed,e[3]=s.reachable,e[4]=t,e[5]=i):i=e[5];let n;e[6]!==d||e[7]!==i?(n=r(me,{label:d,testId:"mt-agg-shards",value:i}),e[6]=d,e[7]=i,e[8]=n):n=e[8];let k;e[9]!==t?(k=t("Total requests"),e[9]=t,e[10]=k):k=e[10];let f;e[11]!==s.totalRequests||e[12]!==k?(f=r(me,{label:k,testId:"mt-agg-requests",value:s.totalRequests}),e[11]=s.totalRequests,e[12]=k,e[13]=f):f=e[13];let S;e[14]!==t?(S=t("Total errors"),e[14]=t,e[15]=S):S=e[15];let p;e[16]!==s.totalErrors||e[17]!==S?(p=r(me,{label:S,testId:"mt-agg-errors",value:s.totalErrors}),e[16]=s.totalErrors,e[17]=S,e[18]=p):p=e[18];let u;e[19]!==t?(u=t("Total database size"),e[19]=t,e[20]=u):u=e[20];let h;e[21]!==s.totalDatabaseSize?(h=Ye(s.totalDatabaseSize),e[21]=s.totalDatabaseSize,e[22]=h):h=e[22];let M;e[23]!==u||e[24]!==h?(M=r(me,{label:u,testId:"mt-agg-db-size",value:h}),e[23]=u,e[24]=h,e[25]=M):M=e[25];let b;e[26]!==t?(b=t("Combined cache hit rate"),e[26]=t,e[27]=b):b=e[27];let $;e[28]!==s.hitRate||e[29]!==t?($=s.hitRate===null?t("no cache configured"):`${(s.hitRate*100).toFixed(1)}%`,e[28]=s.hitRate,e[29]=t,e[30]=$):$=e[30];let _;e[31]!==b||e[32]!==$?(_=r(me,{label:b,testId:"mt-agg-cache",value:$}),e[31]=b,e[32]=$,e[33]=_):_=e[33];let c;e[34]!==M||e[35]!==_||e[36]!==n||e[37]!==f||e[38]!==p?(c=o("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":"mt-aggregate-stats",children:[n,f,p,M,_]}),e[34]=M,e[35]=_,e[36]=n,e[37]=f,e[38]=p,e[39]=c):c=e[39];let g;e[40]!==t?(g=t("shard"),e[40]=t,e[41]=g):g=e[41];let x;e[42]!==g?(x=r(de,{children:g}),e[42]=g,e[43]=x):x=e[43];let w;e[44]!==t?(w=t("requests"),e[44]=t,e[45]=w):w=e[45];let q;e[46]!==w?(q=r(de,{children:w}),e[46]=w,e[47]=q):q=e[47];let y;e[48]!==t?(y=t("errors"),e[48]=t,e[49]=y):y=e[49];let I;e[50]!==y?(I=r(de,{children:y}),e[50]=y,e[51]=I):I=e[51];let C;e[52]!==t?(C=t("db size"),e[52]=t,e[53]=C):C=e[53];let R;e[54]!==C?(R=r(de,{children:C}),e[54]=C,e[55]=R):R=e[55];let D;e[56]!==x||e[57]!==q||e[58]!==I||e[59]!==R?(D=r(dt,{children:o(He,{children:[x,q,I,R]})}),e[56]=x,e[57]=q,e[58]=I,e[59]=R,e[60]=D):D=e[60];let N;if(e[61]!==a||e[62]!==t){let K;e[64]!==t?(K=Q=>o(He,{"data-testid":`mt-agg-row-${Q.shard}`,children:[r(oe,{children:Q.shard}),Q.metrics===null?r(oe,{className:"text-destructive",colSpan:3,children:Q.error??t("unreachable")}):o(Ve,{children:[r(oe,{className:"tabular-nums",children:Q.metrics.requests}),r(oe,{className:"tabular-nums",children:Q.metrics.errors}),r(oe,{className:"tabular-nums",children:Ye(Q.metrics.databaseSize)})]})]},Q.shard),e[64]=t,e[65]=K):K=e[65],N=a.map(K),e[61]=a,e[62]=t,e[63]=N}else N=e[63];let v;e[66]!==N?(v=r(ut,{children:N}),e[66]=N,e[67]=v):v=e[67];let T;e[68]!==D||e[69]!==v?(T=r(he,{className:"overflow-hidden py-0",children:r(ge,{className:"px-0",children:o(mt,{"data-testid":"mt-agg-table",children:[D,v]})})}),e[68]=D,e[69]=v,e[70]=T):T=e[70];let z;return e[71]!==c||e[72]!==T?(z=o("div",{className:"flex flex-col gap-4","data-testid":"mt-aggregate-view",children:[c,T]}),e[71]=c,e[72]=T,e[73]=z):z=e[73],z},rr=l=>{const e=Math.floor(l/1e3),s=Math.floor(e/3600),a=Math.floor(e%3600/60),t=e%60;return s>0?`${s.toString()}h ${a.toString()}m`:a>0?`${a.toString()}m ${t.toString()}s`:`${t.toString()}s`},ar=(l,e)=>{const s=l+e;return s===0?"—":`${(l/s*100).toFixed(1)}%`},ct=l=>l<=0?"—":l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,lr=l=>{const e=Le(75),{currentDelta:s,errorRate:a,history:t,latencyPercentiles:d,metrics:i}=l,n=pe();let k;e[0]!==t||e[1]!==n?(k=t.length>=2?r(ht,{ariaLabel:n("Requests per interval over time"),className:"h-7 w-24 text-foreground",series:t,testId:"mt-sparkline"}):void 0,e[0]=t,e[1]=n,e[2]=k):k=e[2];let f;e[3]!==s||e[4]!==t.length||e[5]!==n?(f=t.length>=2?o(Ve,{children:[r("span",{className:"font-semibold text-foreground",children:`+${s.toLocaleString()}`})," ",n("last interval")]}):r("span",{"data-testid":"mt-sparkline-empty",children:n("collecting samples…")}),e[3]=s,e[4]=t.length,e[5]=n,e[6]=f):f=e[6];let S;e[7]!==n?(S=n("Requests"),e[7]=n,e[8]=S):S=e[8];let p;e[9]!==i.requests||e[10]!==k||e[11]!==f||e[12]!==S?(p=r(me,{chart:k,footer:f,label:S,testId:"mt-requests",value:i.requests}),e[9]=i.requests,e[10]=k,e[11]=f,e[12]=S,e[13]=p):p=e[13];let u;e[14]!==a||e[15]!==n?(u=n("{rate} error rate",{rate:a}),e[14]=a,e[15]=n,e[16]=u):u=e[16];let h;e[17]!==n?(h=n("Errors"),e[17]=n,e[18]=h):h=e[18];let M;e[19]!==a||e[20]!==i.errors?(M=o(Ve,{children:[i.errors," (",a,")"]}),e[19]=a,e[20]=i.errors,e[21]=M):M=e[21];let b;e[22]!==u||e[23]!==h||e[24]!==M?(b=r(me,{footer:u,label:h,testId:"mt-errors",value:M}),e[22]=u,e[23]=h,e[24]=M,e[25]=b):b=e[25];let $;e[26]!==d.p90?($=d.p90>0?`P90 ${ct(d.p90)}`:void 0,e[26]=d.p90,e[27]=$):$=e[27];let _;e[28]!==n?(_=n("P95 latency"),e[28]=n,e[29]=_):_=e[29];let c;e[30]!==d.p95?(c=d.p95>0?ct(d.p95):"—",e[30]=d.p95,e[31]=c):c=e[31];let g;e[32]!==_||e[33]!==c||e[34]!==$?(g=r(me,{footer:$,label:_,testId:"mt-p95",value:c}),e[32]=_,e[33]=c,e[34]=$,e[35]=g):g=e[35];let x;e[36]!==i.cache||e[37]!==n?(x=i.cache===null?void 0:`${i.cache.entries.toLocaleString()} ${n("cache entries")}`,e[36]=i.cache,e[37]=n,e[38]=x):x=e[38];let w;e[39]!==n?(w=n("Database size"),e[39]=n,e[40]=w):w=e[40];let q;e[41]!==i.databaseSize?(q=Ye(i.databaseSize),e[41]=i.databaseSize,e[42]=q):q=e[42];let y;e[43]!==x||e[44]!==w||e[45]!==q?(y=r(me,{footer:x,label:w,testId:"mt-db-size",value:q}),e[43]=x,e[44]=w,e[45]=q,e[46]=y):y=e[46];let I;e[47]!==n?(I=n("Shard"),e[47]=n,e[48]=I):I=e[48];let C;e[49]!==i.shard||e[50]!==I?(C=r(me,{label:I,testId:"mt-shard",value:i.shard}),e[49]=i.shard,e[50]=I,e[51]=C):C=e[51];let R;e[52]!==n?(R=n("Uptime"),e[52]=n,e[53]=R):R=e[53];let D;e[54]!==i.uptimeMs?(D=rr(i.uptimeMs),e[54]=i.uptimeMs,e[55]=D):D=e[55];let N;e[56]!==R||e[57]!==D?(N=r(me,{label:R,testId:"mt-uptime",value:D}),e[56]=R,e[57]=D,e[58]=N):N=e[58];let v;e[59]!==n?(v=n("Cache hit rate"),e[59]=n,e[60]=v):v=e[60];let T;e[61]!==i.cache||e[62]!==n?(T=i.cache===null?n("no cache configured"):n("{rate} ({count} entries)",{count:i.cache.entries,rate:ar(i.cache.hits,i.cache.misses)}),e[61]=i.cache,e[62]=n,e[63]=T):T=e[63];let z;e[64]!==v||e[65]!==T?(z=r(me,{label:v,testId:"mt-cache",value:T}),e[64]=v,e[65]=T,e[66]=z):z=e[66];let K;return e[67]!==g||e[68]!==y||e[69]!==C||e[70]!==N||e[71]!==z||e[72]!==p||e[73]!==b?(K=o("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4","data-testid":"mt-stats",children:[p,b,g,y,C,N,z]}),e[67]=g,e[68]=y,e[69]=C,e[70]=N,e[71]=z,e[72]=p,e[73]=b,e[74]=K):K=e[74],K},Ge=l=>l>=100?"critical":l>=50?"warning":"good",Oe=l=>l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,Be=l=>l>=1e9?`${(l/1e9).toFixed(1)}B`:l>=1e6?`${(l/1e6).toFixed(1)}M`:l>=1e3?`${(l/1e3).toFixed(1)}K`:l.toLocaleString(),sr=l=>{const e=Le(3),{level:s}=l;if(s==="critical"){let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=r(et,{variant:"destructive",children:"Slow"}),e[0]=t):t=e[0],t}if(s==="warning"){let t;return e[1]===Symbol.for("react.memo_cache_sentinel")?(t=r("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-warning/10 px-2 py-0.5 text-xs font-medium text-warning",children:"Moderate"}),e[1]=t):t=e[1],t}let a;return e[2]===Symbol.for("react.memo_cache_sentinel")?(a=r("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-success/10 px-2 py-0.5 text-xs font-medium text-success",children:"Fast"}),e[2]=a):a=e[2],a},nr=(l,e)=>{const s=[...l];return s.sort((a,t)=>{switch(e){case"avgTime":return t.avgDurationMs-a.avgDurationMs;case"execCount":return t.execCount-a.execCount;case"rowsRead":return t.rowsRead-a.rowsRead;default:return t.totalDurationMs-a.totalDurationMs}}),s},ir=l=>{const e=Le(161),{queryStats:s}=l,a=pe(),[t,d]=fe("totalTime");let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=new Set,e[0]=i):i=e[0];const[n,k]=fe(i);let f;e[1]===Symbol.for("react.memo_cache_sentinel")?(f=C=>{C!==null&&d(C)},e[1]=f):f=e[1];const S=f;let p,u,h,M,b,$,_,c,g,x;if(e[2]!==n||e[3]!==s||e[4]!==t||e[5]!==a){h=Symbol.for("react.early_return_sentinel");e:{const C=nr(s,t);let R;e[16]!==s?(R=s.filter(or),e[16]=s,e[17]=R):R=e[17];const D=R.length;let N;e[18]!==s?(N=s.filter(cr),e[18]=s,e[19]=N):N=e[19];const v=N.length;let T;e[20]!==s?(T=s.filter(dr),e[20]=s,e[21]=T):T=e[21];const z=T.length;let K;e[22]===Symbol.for("react.memo_cache_sentinel")?(K=F=>{k(ce=>{const B=new Set(ce);return B.has(F)?B.delete(F):B.add(F),B})},e[22]=K):K=e[22];const Q=K;if(s.length===0){let F;e[23]!==a?(F=a("No query insights yet"),e[23]=a,e[24]=F):F=e[24];let ce;e[25]!==F?(ce=r("p",{className:"text-lg font-medium","data-testid":"qi-empty",children:F}),e[25]=F,e[26]=ce):ce=e[26];let B;e[27]!==a?(B=a("Query insights appear once statements are executed against this shard."),e[27]=a,e[28]=B):B=e[28];let ue;e[29]!==B?(ue=r("p",{className:"mt-1 text-sm",children:B}),e[29]=B,e[30]=ue):ue=e[30];let je;e[31]!==ce||e[32]!==ue?(je=r(he,{children:r(ge,{className:"py-12",children:o("div",{className:"text-center text-muted-foreground",children:[ce,ue]})})}),e[31]=ce,e[32]=ue,e[33]=je):je=e[33],h=je;break e}_="space-y-4",c="qi-root";let L;e[34]!==a?(L=a("Critical queries"),e[34]=a,e[35]=L):L=e[35];let U;e[36]!==L?(U=r(Pe,{className:"pb-2",children:r(Qe,{className:"text-sm font-medium",children:L})}),e[36]=L,e[37]=U):U=e[37];let O;e[38]!==D?(O=r("div",{className:"text-2xl font-bold text-destructive","data-testid":"qi-critical",children:D}),e[38]=D,e[39]=O):O=e[39];let A;e[40]!==a?(A=a(">100ms avg execution"),e[40]=a,e[41]=A):A=e[41];let J;e[42]!==A?(J=r("p",{className:"text-xs text-muted-foreground",children:A}),e[42]=A,e[43]=J):J=e[43];let H;e[44]!==O||e[45]!==J?(H=o(ge,{children:[O,J]}),e[44]=O,e[45]=J,e[46]=H):H=e[46];let G;e[47]!==U||e[48]!==H?(G=o(he,{children:[U,H]}),e[47]=U,e[48]=H,e[49]=G):G=e[49];let W;e[50]!==a?(W=a("Moderate queries"),e[50]=a,e[51]=W):W=e[51];let X;e[52]!==W?(X=r(Pe,{className:"pb-2",children:r(Qe,{className:"text-sm font-medium",children:W})}),e[52]=W,e[53]=X):X=e[53];let Y;e[54]!==v?(Y=r("div",{className:"text-2xl font-bold text-warning","data-testid":"qi-moderate",children:v}),e[54]=v,e[55]=Y):Y=e[55];let V;e[56]!==a?(V=a("50–100ms avg execution"),e[56]=a,e[57]=V):V=e[57];let Z;e[58]!==V?(Z=r("p",{className:"text-xs text-muted-foreground",children:V}),e[58]=V,e[59]=Z):Z=e[59];let ee;e[60]!==Y||e[61]!==Z?(ee=o(ge,{children:[Y,Z]}),e[60]=Y,e[61]=Z,e[62]=ee):ee=e[62];let te;e[63]!==X||e[64]!==ee?(te=o(he,{children:[X,ee]}),e[63]=X,e[64]=ee,e[65]=te):te=e[65];let re;e[66]!==a?(re=a("Fast queries"),e[66]=a,e[67]=re):re=e[67];let ae;e[68]!==re?(ae=r(Pe,{className:"pb-2",children:r(Qe,{className:"text-sm font-medium",children:re})}),e[68]=re,e[69]=ae):ae=e[69];let le;e[70]!==z?(le=r("div",{className:"text-2xl font-bold text-success","data-testid":"qi-fast",children:z}),e[70]=z,e[71]=le):le=e[71];let se;e[72]!==a?(se=a("<50ms avg execution"),e[72]=a,e[73]=se):se=e[73];let ne;e[74]!==se?(ne=r("p",{className:"text-xs text-muted-foreground",children:se}),e[74]=se,e[75]=ne):ne=e[75];let m;e[76]!==le||e[77]!==ne?(m=o(ge,{children:[le,ne]}),e[76]=le,e[77]=ne,e[78]=m):m=e[78];let E;e[79]!==ae||e[80]!==m?(E=o(he,{children:[ae,m]}),e[79]=ae,e[80]=m,e[81]=E):E=e[81],e[82]!==G||e[83]!==te||e[84]!==E?(g=o("div",{className:"grid gap-4 md:grid-cols-3",children:[G,te,E]}),e[82]=G,e[83]=te,e[84]=E,e[85]=g):g=e[85];let j;e[86]!==a?(j=a("Query leaderboard"),e[86]=a,e[87]=j):j=e[87];let P;e[88]!==j?(P=r("h3",{className:"text-lg font-semibold",children:j}),e[88]=j,e[89]=P):P=e[89];let ie;e[90]!==t||e[91]!==a?(ie=a("Slow queries sorted by {sortField}",{sortField:a(t)}),e[90]=t,e[91]=a,e[92]=ie):ie=e[92];let xe;e[93]!==ie?(xe=r("p",{className:"text-sm text-muted-foreground",children:ie}),e[93]=ie,e[94]=xe):xe=e[94];let be;e[95]!==P||e[96]!==xe?(be=o("div",{children:[P,xe]}),e[95]=P,e[96]=xe,e[97]=be):be=e[97];let ve;e[98]!==a?(ve=a("Sort by"),e[98]=a,e[99]=ve):ve=e[99];let ye;e[100]!==ve?(ye=r("span",{className:"text-sm text-muted-foreground",children:ve}),e[100]=ve,e[101]=ye):ye=e[101];let Ne;e[102]!==a?(Ne=a("Sort queries by"),e[102]=a,e[103]=Ne):Ne=e[103];let Ae;e[104]===Symbol.for("react.memo_cache_sentinel")?(Ae=r(Pt,{}),e[104]=Ae):Ae=e[104];let Se;e[105]!==Ne?(Se=r(Qt,{"aria-label":Ne,className:"w-[140px]","data-testid":"qi-sort",children:Ae}),e[105]=Ne,e[106]=Se):Se=e[106];let $e;e[107]!==a?($e=a("Total time"),e[107]=a,e[108]=$e):$e=e[108];let we;e[109]!==$e?(we=r(Ue,{value:"totalTime",children:$e}),e[109]=$e,e[110]=we):we=e[110];let qe;e[111]!==a?(qe=a("Avg time"),e[111]=a,e[112]=qe):qe=e[112];let ke;e[113]!==qe?(ke=r(Ue,{value:"avgTime",children:qe}),e[113]=qe,e[114]=ke):ke=e[114];let Me;e[115]!==a?(Me=a("Execution count"),e[115]=a,e[116]=Me):Me=e[116];let _e;e[117]!==Me?(_e=r(Ue,{value:"execCount",children:Me}),e[117]=Me,e[118]=_e):_e=e[118];let Ie;e[119]!==a?(Ie=a("Rows read"),e[119]=a,e[120]=Ie):Ie=e[120];let Ce;e[121]!==Ie?(Ce=r(Ue,{value:"rowsRead",children:Ie}),e[121]=Ie,e[122]=Ce):Ce=e[122];let Re;e[123]!==we||e[124]!==ke||e[125]!==_e||e[126]!==Ce?(Re=o(Ut,{children:[we,ke,_e,Ce]}),e[123]=we,e[124]=ke,e[125]=_e,e[126]=Ce,e[127]=Re):Re=e[127];let De;e[128]!==t||e[129]!==Se||e[130]!==Re?(De=o(Bt,{onValueChange:S,value:t,children:[Se,Re]}),e[128]=t,e[129]=Se,e[130]=Re,e[131]=De):De=e[131];let Fe;e[132]!==ye||e[133]!==De?(Fe=o("div",{className:"flex items-center gap-2",children:[ye,De]}),e[132]=ye,e[133]=De,e[134]=Fe):Fe=e[134],e[135]!==be||e[136]!==Fe?(x=o("div",{className:"flex items-center justify-between",children:[be,Fe]}),e[135]=be,e[136]=Fe,e[137]=x):x=e[137],u=he;let Te;e[138]!==a?(Te=a("Statements"),e[138]=a,e[139]=Te):Te=e[139];let Ke;e[140]!==Te?(Ke=r(Qe,{children:Te}),e[140]=Te,e[141]=Ke):Ke=e[141],$=o(Pe,{children:[Ke,r(Rt,{children:a("{count} tracked statements",{count:C.length})})]}),p=ge,M="space-y-2";let Ee;e[142]!==n||e[143]!==a?(Ee=F=>{const ce=F.normalizedSql,B=n.has(ce),ue=Ge(F.avgDurationMs);return o("div",{className:"overflow-hidden rounded-lg border","data-testid":"qi-row",children:[o("button",{"aria-expanded":B,className:"flex w-full items-center justify-between p-3 text-left transition-colors hover:bg-muted/50",onClick:()=>{Q(ce)},type:"button",children:[o("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[r(sr,{level:ue}),r("span",{className:"max-w-[300px] truncate font-mono text-sm lg:max-w-[500px]",children:F.normalizedSql})]}),o("div",{className:"flex shrink-0 items-center gap-4",children:[o("div",{className:"text-right",children:[r("div",{className:"text-sm font-medium",children:Oe(F.totalDurationMs)}),r("div",{className:"text-xs text-muted-foreground",children:a("total")})]}),o("div",{className:"text-right",children:[r("div",{className:"text-sm font-medium",children:Oe(F.avgDurationMs)}),r("div",{className:"text-xs text-muted-foreground",children:a("avg")})]}),F.p95DurationMs!==void 0&&o("div",{className:"text-right",children:[r("div",{className:"text-sm font-medium",children:Oe(F.p95DurationMs)}),r("div",{className:"text-xs text-muted-foreground",children:a("p95")})]}),o("div",{className:"text-right",children:[r("div",{className:"text-sm font-medium",children:Be(F.execCount)}),r("div",{className:"text-xs text-muted-foreground",children:a("calls")})]})]})]}),B&&o("div",{className:"space-y-3 border-t bg-muted/30 p-4",children:[o("div",{children:[r("p",{className:"mb-2 text-sm font-medium",children:a("Full statement")}),r("pre",{className:"overflow-x-auto rounded-md bg-muted p-3 font-mono text-sm whitespace-pre-wrap break-all",children:F.normalizedSql})]}),o("div",{className:"grid grid-cols-2 gap-4 text-sm md:grid-cols-4",children:[F.p50DurationMs!==void 0&&o("div",{children:[r("span",{className:"text-muted-foreground",children:a("p50")}),r("span",{className:"block font-medium tabular-nums",children:Oe(F.p50DurationMs)})]}),o("div",{children:[r("span",{className:"text-muted-foreground",children:a("Exec count")}),r("span",{className:"block font-medium tabular-nums",children:Be(F.execCount)})]}),o("div",{children:[r("span",{className:"text-muted-foreground",children:a("Total time")}),r("span",{className:"block font-medium tabular-nums",children:Oe(F.totalDurationMs)})]}),o("div",{children:[r("span",{className:"text-muted-foreground",children:a("Rows read")}),r("span",{className:"block font-medium tabular-nums",children:Be(F.rowsRead)})]}),o("div",{children:[r("span",{className:"text-muted-foreground",children:a("Rows written")}),r("span",{className:"block font-medium tabular-nums",children:Be(F.rowsWritten)})]})]})]})]},ce)},e[142]=n,e[143]=a,e[144]=Ee):Ee=e[144],b=C.map(Ee)}e[2]=n,e[3]=s,e[4]=t,e[5]=a,e[6]=p,e[7]=u,e[8]=h,e[9]=M,e[10]=b,e[11]=$,e[12]=_,e[13]=c,e[14]=g,e[15]=x}else p=e[6],u=e[7],h=e[8],M=e[9],b=e[10],$=e[11],_=e[12],c=e[13],g=e[14],x=e[15];if(h!==Symbol.for("react.early_return_sentinel"))return h;let w;e[145]!==M||e[146]!==b?(w=r("div",{className:M,children:b}),e[145]=M,e[146]=b,e[147]=w):w=e[147];let q;e[148]!==p||e[149]!==w?(q=r(p,{children:w}),e[148]=p,e[149]=w,e[150]=q):q=e[150];let y;e[151]!==u||e[152]!==q||e[153]!==$?(y=o(u,{children:[$,q]}),e[151]=u,e[152]=q,e[153]=$,e[154]=y):y=e[154];let I;return e[155]!==y||e[156]!==_||e[157]!==c||e[158]!==g||e[159]!==x?(I=o("div",{className:_,"data-testid":c,children:[g,x,y]}),e[155]=y,e[156]=_,e[157]=c,e[158]=g,e[159]=x,e[160]=I):I=e[160],I};function or(l){return Ge(l.avgDurationMs)==="critical"}function cr(l){return Ge(l.avgDurationMs)==="warning"}function dr(l){return Ge(l.avgDurationMs)==="good"}const mr=["1m","5m","15m","1h"],ur=l=>new Date(l).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}),hr=l=>l.map(e=>({avg:Math.round(e.avgDurationMs*100)/100,execs:e.execCount,label:ur(e.bucketMs)})),gr=({shardKey:l=""})=>{const e=pe(),[s,a]=fe("15m"),t=Je(ze.getQueryInsights,{range:s},{live:!0,shardKey:l}).data,d=hr(t?.buckets??[]);return o("div",{className:"flex flex-col gap-4","data-testid":"qi-range",children:[o("div",{className:"flex flex-wrap items-center gap-2",children:[r("div",{className:"flex gap-1 rounded-lg border border-border p-0.5","data-testid":"qi-ranges",role:"group",children:mr.map(i=>r("button",{"aria-pressed":i===s,className:jt("rounded px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",i===s&&"bg-accent font-medium text-foreground"),"data-testid":`qi-range-${i}`,onClick:()=>{a(i)},type:"button",children:i},i))}),t?.capped===!0&&r(et,{"data-testid":"qi-capped",variant:"secondary",children:e("showing a capped set")})]}),d.length===0?r(Et,{description:e("Statements executed in the selected window appear here, with throughput and latency over time."),testId:"qi-empty",title:e("No queries in this window.")}):o("div",{className:"grid gap-4 lg:grid-cols-2",children:[o("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-throughput",children:[r("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Throughput")}),r(lt,{height:140,width:"100%",children:o(Ot,{data:d,children:[r(st,{strokeDasharray:"3 3",vertical:!1}),r(nt,{dataKey:"label",fontSize:10,tickLine:!1}),r(it,{allowDecimals:!1,fontSize:10,tickLine:!1,width:32}),r(ot,{}),r(zt,{dataKey:"execs",fill:"var(--color-primary)",fillOpacity:.15,stroke:"var(--color-primary)",type:"monotone"})]})})]}),o("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-latency",children:[r("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Mean latency (ms)")}),r(lt,{height:140,width:"100%",children:o(At,{data:d,children:[r(st,{strokeDasharray:"3 3",vertical:!1}),r(nt,{dataKey:"label",fontSize:10,tickLine:!1}),r(it,{fontSize:10,tickLine:!1,width:32}),r(ot,{}),r(Kt,{dataKey:"avg",dot:!1,stroke:"var(--color-destructive)",type:"monotone"})]})})]})]}),r(ir,{queryStats:t?.entries??[]})]})},fr=kt(ze.getMetrics),pr=(l,e)=>l?e:"overview",Ur=({initialShardKey:l})=>{const e=pt(),s=pe(),a=xt(),{queryShardKey:t,setShardKey:d,shardKey:i}=Nt(l),[n,k]=fe("overview"),[f,S]=fe([]),p=We(null),u=We(null),h=We(!0);tt(()=>(h.current=!0,()=>{h.current=!1}),[]);const M=L=>{It({shardKey:t,traceId:L}),at(a({to:"/traces"}))},{data:b,error:$,liveError:_}=Je(ze.getMetrics,{},{live:!0,shardKey:t}),c=b??null;tt(()=>{if(b===void 0)return;Mt(t);const L=b,U=p.current,O=u.current!==null&&u.current!==L.shard;if(u.current=L.shard,p.current=L.requests,O){S([]);return}U!==null&&L.requests>=U&&S(A=>[...A,L.requests-U].slice(-30))},[b,t]);const[g,x]=fe(null),[w,q]=fe(!1),y=async()=>{q(!0);const L=Lt(i,_t());try{const U=await Promise.all(L.map(async O=>{try{const A=await e.query(fr,{},wt(O));return{error:null,metrics:A,shard:O===""?A.shard:O}}catch(A){return{error:qt(A),metrics:null,shard:O===""?"__root__":O}}}));h.current&&x(U)}finally{h.current&&q(!1)}},I=g===null?null:Dt(g),C=c===null||c.requests===0?"—":`${(c.errors/c.requests*100).toFixed(1)}%`,R=f.length>0?f.at(-1):0,D=c?Ft(c):{p90:0,p95:0},N=bt(()=>{if(!c||!("queryStats"in c))return;const L=c.queryStats;if(!(!L||!Array.isArray(L)))return Tt(L)},[c]),v=pr(N!==void 0,n),T=()=>{at(y())},z=()=>{x(null)},K=()=>{k("overview")},Q=()=>{k("query-insights")};return o("div",{className:"flex flex-col gap-4","data-testid":"lunora-metrics",children:[o("div",{className:"flex flex-wrap items-center gap-2",children:[r(yt,{onChange:d,testId:"mt-shard-input",value:i}),r(vt,{message:_,prefix:"mt"}),r(rt,{"data-testid":"mt-aggregate",disabled:w,onClick:T,size:"sm",type:"button",variant:"secondary",children:s(w?"Aggregating…":"All shards")}),g!==null&&r(rt,{"data-testid":"mt-aggregate-clear",onClick:z,size:"sm",type:"button",variant:"ghost",children:s("Hide")}),r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"mt-cf-link",href:St,rel:"noreferrer",target:"_blank",children:s("Open in Cloudflare")})]}),$!==null&&r("p",{className:"text-sm text-destructive","data-testid":"mt-error",role:"alert",children:$}),N!==void 0&&o("div",{className:"flex gap-2 border-b","data-testid":"mt-tabs",children:[r("button",{className:`pb-2 text-sm font-medium transition-colors ${v==="overview"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-overview",onClick:K,type:"button",children:s("Overview")}),o("button",{className:`pb-2 text-sm font-medium transition-colors ${v==="query-insights"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-query-insights",onClick:Q,type:"button",children:[s("Query insights"),N.length>0&&r("span",{className:"ml-1.5 rounded-full bg-primary/10 px-1.5 py-0.5 text-xs text-primary",children:N.length})]})]}),v==="query-insights"&&N!==void 0&&r(gr,{shardKey:t}),v==="overview"&&c!==null&&r(lr,{currentDelta:R,errorRate:C,history:f,latencyPercentiles:D,metrics:c}),v==="overview"&&c===null&&null,v==="overview"&&r(er,{onOpenTrace:M,shardKey:t}),v==="overview"&&I!==null&&g!==null&&r(tr,{aggregate:I,shardResults:g})]})};export{Ur as MetricsPanel};
|
|
1
|
+
import{useLunora as pt}from"@lunora/react";import{useNavigate as xt}from"@tanstack/react-router";import{useState as fe,useRef as We,useEffect as tt,useMemo as bt}from"react";import{L as vt}from"../packem_shared/live-status-CmuRLFKf.js";import{ShardInput as yt}from"../packem_shared/ShardInput-BVn2iCU0.js";import{u as rt}from"../packem_shared/button-BkCrNcAs.js";import{N as Je}from"../packem_shared/use-admin-query-CnnyWJXM.js";import{S as Nt}from"../packem_shared/use-shard-key-B2JtNa5m.js";import{useT as pe}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as ze}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{c as St}from"../packem_shared/cf-links-Dmg86v1D.js";import{m as $t,l as Ye,f as at,d as wt,b as qt,g as kt}from"../packem_shared/internal-zkEvTqy8.js";import{r as Mt,l as _t}from"../packem_shared/shard-history-DMEW5VBE.js";import{w as It}from"../packem_shared/trace-handoff-Dw7mwjxu.js";import{c as Le}from"react/compiler-runtime";import{f as Ct}from"../packem_shared/log-fields-CoL3hsIQ.js";import{g as et}from"../packem_shared/badge-BbuuAio7.js";import{c as he,u as ge,n as Pe,f as Qe,m as Rt}from"../packem_shared/card-CIDGUN6K.js";import{p as de,d as dt,m as He,u as oe,n as mt,f as ut}from"../packem_shared/table-DdJBrClo.js";import{S as ht}from"../packem_shared/sparkline-CgjeUU2I.js";import{jsx as r,jsxs as o,Fragment as Ve}from"react/jsx-runtime";import{aggregateMetrics as Dt,computeLatencyPercentiles as Ft,enrichQueryStats as Tt,shardsToAggregate as Lt}from"../packem_shared/aggregateMetrics-BNfajLa2.js";import{g as me}from"../packem_shared/stat-card-fm_TF1mo.js";import{ResponsiveContainer as lt,AreaChart as Ot,CartesianGrid as st,XAxis as nt,YAxis as it,Tooltip as ot,Area as zt,LineChart as At,Line as Kt}from"recharts";import{E as Et}from"../packem_shared/empty-state-Cg7t_8qu.js";import{c as jt}from"../packem_shared/utils-bhneXptQ.js";import{N as Pt,y as Qt,k as Ue,_ as Ut,w as Bt}from"../packem_shared/select-Bul-DeII.js";const Jt=(l,e)=>l<e?-1:l>e?1:0,Ze=l=>{if(l===void 0)return"null";if(typeof l=="bigint")throw new TypeError("stableStringify: cannot use a bigint in a stable JSON cache key — pass it as a string, or use stableWireKey");if(l===null||typeof l!="object")return JSON.stringify(l);if(Array.isArray(l))return`[${l.map(d=>Ze(d)).join(",")}]`;const e=Object.getPrototypeOf(l);if(e!==null&&e!==Object.prototype){const d=l.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${d} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const s=l,a=Object.keys(s).toSorted(Jt),t=[];for(const d of a){const i=s[d];i!==void 0&&t.push(`${JSON.stringify(d)}:${Ze(i)}`)}return`{${t.join(",")}}`},gt=(l,e,s)=>`${l}:${e}:${Ze(s??{})}`,ft=(l,e)=>l==="gauge"?e.last:l==="histogram"?e.sum/Math.max(1,e.count):e.sum,Ht=(l,e)=>ft(l,e),Gt=l=>ft(l.kind,l),Xe=l=>Number.isInteger(l)?l.toLocaleString():l.toLocaleString(void 0,{maximumFractionDigits:2}),Wt=l=>Array.isArray(l?.series)?l.series:[],Xt="FUNCTION_NOT_FOUND",Yt=l=>{const e=new Map;if(!Array.isArray(l?.series))return e;for(const s of l.series)e.set(gt(s.kind,s.name,s.attributes),s.points);return e},Vt={counter:"secondary",gauge:"default",histogram:"outline"},Zt=l=>{const e=Le(18),{name:s,onOpenTrace:a,traceId:t}=l,d=pe();if(t===void 0){let u;return e[0]===Symbol.for("react.memo_cache_sentinel")?(u=r("span",{className:"text-muted-foreground",children:"—"}),e[0]=u):u=e[0],u}let i;e[1]!==t?(i=t.slice(0,8),e[1]=t,e[2]=i):i=e[2];const n=i;if(a===void 0){const u=`mt-instrument-trace-${s}`;let h;return e[3]!==n||e[4]!==u||e[5]!==t?(h=r("span",{className:"text-muted-foreground","data-testid":u,title:t,children:n}),e[3]=n,e[4]=u,e[5]=t,e[6]=h):h=e[6],h}const k=`mt-instrument-trace-${s}`;let f;e[7]!==a||e[8]!==t?(f=()=>{a(t)},e[7]=a,e[8]=t,e[9]=f):f=e[9];let S;e[10]!==d||e[11]!==t?(S=d("Open the exemplar trace {trace}",{trace:t}),e[10]=d,e[11]=t,e[12]=S):S=e[12];let p;return e[13]!==n||e[14]!==k||e[15]!==f||e[16]!==S?(p=r("button",{className:"text-primary underline-offset-4 hover:underline","data-testid":k,onClick:f,title:S,type:"button",children:n}),e[13]=n,e[14]=k,e[15]=f,e[16]=S,e[17]=p):p=e[17],p},er=l=>{const e=Le(105),{onOpenTrace:s,shardKey:a}=l,t=pe();let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d={},e[0]=d):d=e[0];let i;e[1]!==a?(i={live:!0,shardKey:a},e[1]=a,e[2]=i):i=e[2];const{data:n,error:k,errorSource:f}=Je(ze.getMetricSeries,d,i);let S;e[3]===Symbol.for("react.memo_cache_sentinel")?(S={},e[3]=S):S=e[3];let p;e[4]!==a?(p={live:!0,shardKey:a},e[4]=a,e[5]=p):p=e[5];const{data:u}=Je(ze.getMetricHistory,S,p);let h,M,b,$,_,c,g,x,w,q,y,I,C;if(e[6]!==n||e[7]!==k||e[8]!==f||e[9]!==u||e[10]!==s||e[11]!==t){x=Symbol.for("react.early_return_sentinel");e:{const z=Wt(n),K=$t(f)===Xt;if(k!==null&&!K){let m;e[25]!==t?(m=t("Instruments"),e[25]=t,e[26]=m):m=e[26];let E;e[27]!==m?(E=r("h3",{className:"text-sm font-semibold text-foreground",children:m}),e[27]=m,e[28]=E):E=e[28];let j;e[29]!==k||e[30]!==t?(j=t("Instruments unavailable: {error}",{error:k}),e[29]=k,e[30]=t,e[31]=j):j=e[31];let P;e[32]!==j?(P=r("span",{className:"text-xs text-muted-foreground","data-testid":"mt-instruments-error",role:"status",children:j}),e[32]=j,e[33]=P):P=e[33];let ie;e[34]!==E||e[35]!==P?(ie=o("section",{className:"flex flex-col gap-2","data-testid":"mt-instruments",children:[E,P]}),e[34]=E,e[35]=P,e[36]=ie):ie=e[36],x=ie;break e}if(z.length===0){x=null;break e}const Q=Yt(u);let L;e[37]!==t?(L=m=>t(m==="counter"?"Counter":m==="gauge"?"Gauge":"Histogram"),e[37]=t,e[38]=L):L=e[38];const U=L;_="flex flex-col gap-2",c="mt-instruments";let O;e[39]!==t?(O=t("Instruments"),e[39]=t,e[40]=O):O=e[40],e[41]!==O?(g=r("h3",{className:"text-sm font-semibold text-foreground",children:O}),e[41]=O,e[42]=g):g=e[42],$=he,C="overflow-hidden py-0",b=ge,I="px-0",M=mt,q="mt-instruments-table";let A;e[43]!==t?(A=t("name"),e[43]=t,e[44]=A):A=e[44];let J;e[45]!==A?(J=r(de,{children:A}),e[45]=A,e[46]=J):J=e[46];let H;e[47]!==t?(H=t("kind"),e[47]=t,e[48]=H):H=e[48];let G;e[49]!==H?(G=r(de,{children:H}),e[49]=H,e[50]=G):G=e[50];let W;e[51]!==t?(W=t("value"),e[51]=t,e[52]=W):W=e[52];let X;e[53]!==W?(X=r(de,{className:"text-right",children:W}),e[53]=W,e[54]=X):X=e[54];let Y;e[55]!==t?(Y=t("count"),e[55]=t,e[56]=Y):Y=e[56];let V;e[57]!==Y?(V=r(de,{className:"text-right",children:Y}),e[57]=Y,e[58]=V):V=e[58];let Z;e[59]!==t?(Z=t("range"),e[59]=t,e[60]=Z):Z=e[60];let ee;e[61]!==Z?(ee=r(de,{className:"text-right",children:Z}),e[61]=Z,e[62]=ee):ee=e[62];let te;e[63]!==t?(te=t("trend"),e[63]=t,e[64]=te):te=e[64];let re;e[65]!==te?(re=r(de,{children:te}),e[65]=te,e[66]=re):re=e[66];let ae;e[67]!==t?(ae=t("trace"),e[67]=t,e[68]=ae):ae=e[68];let le;e[69]!==ae?(le=r(de,{children:ae}),e[69]=ae,e[70]=le):le=e[70];let se;e[71]!==t?(se=t("dimensions"),e[71]=t,e[72]=se):se=e[72];let ne;e[73]!==se?(ne=r(de,{children:se}),e[73]=se,e[74]=ne):ne=e[74],e[75]!==J||e[76]!==G||e[77]!==X||e[78]!==V||e[79]!==ee||e[80]!==re||e[81]!==le||e[82]!==ne?(y=r(dt,{children:o(He,{children:[J,G,X,V,ee,re,le,ne]})}),e[75]=J,e[76]=G,e[77]=X,e[78]=V,e[79]=ee,e[80]=re,e[81]=le,e[82]=ne,e[83]=y):y=e[83],h=ut,w=z.map(m=>{const E=Ct(m.attributes),j=gt(m.kind,m.name,m.attributes),P=(Q.get(j)??[]).map(ie=>Ht(m.kind,ie));return o(He,{"data-testid":`mt-instrument-${m.name}`,children:[r(oe,{className:"font-mono text-xs",title:m.functionPath,children:m.name}),r(oe,{children:r(et,{variant:Vt[m.kind],children:U(m.kind)})}),r(oe,{className:"text-right font-mono tabular-nums","data-testid":`mt-instrument-value-${m.name}`,children:Xe(Gt(m))}),r(oe,{className:"text-right tabular-nums text-muted-foreground",children:m.count.toLocaleString()}),r(oe,{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:m.min===m.max?"—":`${Xe(m.min)}–${Xe(m.max)}`}),r(oe,{children:P.length>=2?r(ht,{ariaLabel:t("{name} trend",{name:m.name}),className:"h-6 w-24 text-foreground",series:P,testId:`mt-instrument-trend-${m.name}`}):r("span",{className:"text-xs text-muted-foreground",children:"—"})}),r(oe,{className:"font-mono text-xs",children:r(Zt,{name:m.name,onOpenTrace:s,traceId:m.exemplarTraceId})}),r(oe,{className:"max-w-64 truncate font-mono text-xs text-muted-foreground",title:E,children:E===""?"—":E})]},j)})}e[6]=n,e[7]=k,e[8]=f,e[9]=u,e[10]=s,e[11]=t,e[12]=h,e[13]=M,e[14]=b,e[15]=$,e[16]=_,e[17]=c,e[18]=g,e[19]=x,e[20]=w,e[21]=q,e[22]=y,e[23]=I,e[24]=C}else h=e[12],M=e[13],b=e[14],$=e[15],_=e[16],c=e[17],g=e[18],x=e[19],w=e[20],q=e[21],y=e[22],I=e[23],C=e[24];if(x!==Symbol.for("react.early_return_sentinel"))return x;let R;e[84]!==h||e[85]!==w?(R=r(h,{children:w}),e[84]=h,e[85]=w,e[86]=R):R=e[86];let D;e[87]!==M||e[88]!==R||e[89]!==q||e[90]!==y?(D=o(M,{"data-testid":q,children:[y,R]}),e[87]=M,e[88]=R,e[89]=q,e[90]=y,e[91]=D):D=e[91];let N;e[92]!==b||e[93]!==D||e[94]!==I?(N=r(b,{className:I,children:D}),e[92]=b,e[93]=D,e[94]=I,e[95]=N):N=e[95];let v;e[96]!==$||e[97]!==N||e[98]!==C?(v=r($,{className:C,children:N}),e[96]=$,e[97]=N,e[98]=C,e[99]=v):v=e[99];let T;return e[100]!==_||e[101]!==c||e[102]!==g||e[103]!==v?(T=o("section",{className:_,"data-testid":c,children:[g,v]}),e[100]=_,e[101]=c,e[102]=g,e[103]=v,e[104]=T):T=e[104],T},tr=l=>{const e=Le(74),{aggregate:s,shardResults:a}=l,t=pe();let d;e[0]!==t?(d=t("Shards"),e[0]=t,e[1]=d):d=e[1];let i;e[2]!==s.failed||e[3]!==s.reachable||e[4]!==t?(i=s.failed>0?t("{reachable} reachable, {failed} unreachable",{failed:s.failed,reachable:s.reachable}):t("{reachable} reachable",{reachable:s.reachable}),e[2]=s.failed,e[3]=s.reachable,e[4]=t,e[5]=i):i=e[5];let n;e[6]!==d||e[7]!==i?(n=r(me,{label:d,testId:"mt-agg-shards",value:i}),e[6]=d,e[7]=i,e[8]=n):n=e[8];let k;e[9]!==t?(k=t("Total requests"),e[9]=t,e[10]=k):k=e[10];let f;e[11]!==s.totalRequests||e[12]!==k?(f=r(me,{label:k,testId:"mt-agg-requests",value:s.totalRequests}),e[11]=s.totalRequests,e[12]=k,e[13]=f):f=e[13];let S;e[14]!==t?(S=t("Total errors"),e[14]=t,e[15]=S):S=e[15];let p;e[16]!==s.totalErrors||e[17]!==S?(p=r(me,{label:S,testId:"mt-agg-errors",value:s.totalErrors}),e[16]=s.totalErrors,e[17]=S,e[18]=p):p=e[18];let u;e[19]!==t?(u=t("Total database size"),e[19]=t,e[20]=u):u=e[20];let h;e[21]!==s.totalDatabaseSize?(h=Ye(s.totalDatabaseSize),e[21]=s.totalDatabaseSize,e[22]=h):h=e[22];let M;e[23]!==u||e[24]!==h?(M=r(me,{label:u,testId:"mt-agg-db-size",value:h}),e[23]=u,e[24]=h,e[25]=M):M=e[25];let b;e[26]!==t?(b=t("Combined cache hit rate"),e[26]=t,e[27]=b):b=e[27];let $;e[28]!==s.hitRate||e[29]!==t?($=s.hitRate===null?t("no cache configured"):`${(s.hitRate*100).toFixed(1)}%`,e[28]=s.hitRate,e[29]=t,e[30]=$):$=e[30];let _;e[31]!==b||e[32]!==$?(_=r(me,{label:b,testId:"mt-agg-cache",value:$}),e[31]=b,e[32]=$,e[33]=_):_=e[33];let c;e[34]!==M||e[35]!==_||e[36]!==n||e[37]!==f||e[38]!==p?(c=o("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":"mt-aggregate-stats",children:[n,f,p,M,_]}),e[34]=M,e[35]=_,e[36]=n,e[37]=f,e[38]=p,e[39]=c):c=e[39];let g;e[40]!==t?(g=t("shard"),e[40]=t,e[41]=g):g=e[41];let x;e[42]!==g?(x=r(de,{children:g}),e[42]=g,e[43]=x):x=e[43];let w;e[44]!==t?(w=t("requests"),e[44]=t,e[45]=w):w=e[45];let q;e[46]!==w?(q=r(de,{children:w}),e[46]=w,e[47]=q):q=e[47];let y;e[48]!==t?(y=t("errors"),e[48]=t,e[49]=y):y=e[49];let I;e[50]!==y?(I=r(de,{children:y}),e[50]=y,e[51]=I):I=e[51];let C;e[52]!==t?(C=t("db size"),e[52]=t,e[53]=C):C=e[53];let R;e[54]!==C?(R=r(de,{children:C}),e[54]=C,e[55]=R):R=e[55];let D;e[56]!==x||e[57]!==q||e[58]!==I||e[59]!==R?(D=r(dt,{children:o(He,{children:[x,q,I,R]})}),e[56]=x,e[57]=q,e[58]=I,e[59]=R,e[60]=D):D=e[60];let N;if(e[61]!==a||e[62]!==t){let K;e[64]!==t?(K=Q=>o(He,{"data-testid":`mt-agg-row-${Q.shard}`,children:[r(oe,{children:Q.shard}),Q.metrics===null?r(oe,{className:"text-destructive",colSpan:3,children:Q.error??t("unreachable")}):o(Ve,{children:[r(oe,{className:"tabular-nums",children:Q.metrics.requests}),r(oe,{className:"tabular-nums",children:Q.metrics.errors}),r(oe,{className:"tabular-nums",children:Ye(Q.metrics.databaseSize)})]})]},Q.shard),e[64]=t,e[65]=K):K=e[65],N=a.map(K),e[61]=a,e[62]=t,e[63]=N}else N=e[63];let v;e[66]!==N?(v=r(ut,{children:N}),e[66]=N,e[67]=v):v=e[67];let T;e[68]!==D||e[69]!==v?(T=r(he,{className:"overflow-hidden py-0",children:r(ge,{className:"px-0",children:o(mt,{"data-testid":"mt-agg-table",children:[D,v]})})}),e[68]=D,e[69]=v,e[70]=T):T=e[70];let z;return e[71]!==c||e[72]!==T?(z=o("div",{className:"flex flex-col gap-4","data-testid":"mt-aggregate-view",children:[c,T]}),e[71]=c,e[72]=T,e[73]=z):z=e[73],z},rr=l=>{const e=Math.floor(l/1e3),s=Math.floor(e/3600),a=Math.floor(e%3600/60),t=e%60;return s>0?`${s.toString()}h ${a.toString()}m`:a>0?`${a.toString()}m ${t.toString()}s`:`${t.toString()}s`},ar=(l,e)=>{const s=l+e;return s===0?"—":`${(l/s*100).toFixed(1)}%`},ct=l=>l<=0?"—":l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,lr=l=>{const e=Le(75),{currentDelta:s,errorRate:a,history:t,latencyPercentiles:d,metrics:i}=l,n=pe();let k;e[0]!==t||e[1]!==n?(k=t.length>=2?r(ht,{ariaLabel:n("Requests per interval over time"),className:"h-7 w-24 text-foreground",series:t,testId:"mt-sparkline"}):void 0,e[0]=t,e[1]=n,e[2]=k):k=e[2];let f;e[3]!==s||e[4]!==t.length||e[5]!==n?(f=t.length>=2?o(Ve,{children:[r("span",{className:"font-semibold text-foreground",children:`+${s.toLocaleString()}`})," ",n("last interval")]}):r("span",{"data-testid":"mt-sparkline-empty",children:n("collecting samples…")}),e[3]=s,e[4]=t.length,e[5]=n,e[6]=f):f=e[6];let S;e[7]!==n?(S=n("Requests"),e[7]=n,e[8]=S):S=e[8];let p;e[9]!==i.requests||e[10]!==k||e[11]!==f||e[12]!==S?(p=r(me,{chart:k,footer:f,label:S,testId:"mt-requests",value:i.requests}),e[9]=i.requests,e[10]=k,e[11]=f,e[12]=S,e[13]=p):p=e[13];let u;e[14]!==a||e[15]!==n?(u=n("{rate} error rate",{rate:a}),e[14]=a,e[15]=n,e[16]=u):u=e[16];let h;e[17]!==n?(h=n("Errors"),e[17]=n,e[18]=h):h=e[18];let M;e[19]!==a||e[20]!==i.errors?(M=o(Ve,{children:[i.errors," (",a,")"]}),e[19]=a,e[20]=i.errors,e[21]=M):M=e[21];let b;e[22]!==u||e[23]!==h||e[24]!==M?(b=r(me,{footer:u,label:h,testId:"mt-errors",value:M}),e[22]=u,e[23]=h,e[24]=M,e[25]=b):b=e[25];let $;e[26]!==d.p90?($=d.p90>0?`P90 ${ct(d.p90)}`:void 0,e[26]=d.p90,e[27]=$):$=e[27];let _;e[28]!==n?(_=n("P95 latency"),e[28]=n,e[29]=_):_=e[29];let c;e[30]!==d.p95?(c=d.p95>0?ct(d.p95):"—",e[30]=d.p95,e[31]=c):c=e[31];let g;e[32]!==_||e[33]!==c||e[34]!==$?(g=r(me,{footer:$,label:_,testId:"mt-p95",value:c}),e[32]=_,e[33]=c,e[34]=$,e[35]=g):g=e[35];let x;e[36]!==i.cache||e[37]!==n?(x=i.cache===null?void 0:`${i.cache.entries.toLocaleString()} ${n("cache entries")}`,e[36]=i.cache,e[37]=n,e[38]=x):x=e[38];let w;e[39]!==n?(w=n("Database size"),e[39]=n,e[40]=w):w=e[40];let q;e[41]!==i.databaseSize?(q=Ye(i.databaseSize),e[41]=i.databaseSize,e[42]=q):q=e[42];let y;e[43]!==x||e[44]!==w||e[45]!==q?(y=r(me,{footer:x,label:w,testId:"mt-db-size",value:q}),e[43]=x,e[44]=w,e[45]=q,e[46]=y):y=e[46];let I;e[47]!==n?(I=n("Shard"),e[47]=n,e[48]=I):I=e[48];let C;e[49]!==i.shard||e[50]!==I?(C=r(me,{label:I,testId:"mt-shard",value:i.shard}),e[49]=i.shard,e[50]=I,e[51]=C):C=e[51];let R;e[52]!==n?(R=n("Uptime"),e[52]=n,e[53]=R):R=e[53];let D;e[54]!==i.uptimeMs?(D=rr(i.uptimeMs),e[54]=i.uptimeMs,e[55]=D):D=e[55];let N;e[56]!==R||e[57]!==D?(N=r(me,{label:R,testId:"mt-uptime",value:D}),e[56]=R,e[57]=D,e[58]=N):N=e[58];let v;e[59]!==n?(v=n("Cache hit rate"),e[59]=n,e[60]=v):v=e[60];let T;e[61]!==i.cache||e[62]!==n?(T=i.cache===null?n("no cache configured"):n("{rate} ({count} entries)",{count:i.cache.entries,rate:ar(i.cache.hits,i.cache.misses)}),e[61]=i.cache,e[62]=n,e[63]=T):T=e[63];let z;e[64]!==v||e[65]!==T?(z=r(me,{label:v,testId:"mt-cache",value:T}),e[64]=v,e[65]=T,e[66]=z):z=e[66];let K;return e[67]!==g||e[68]!==y||e[69]!==C||e[70]!==N||e[71]!==z||e[72]!==p||e[73]!==b?(K=o("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4","data-testid":"mt-stats",children:[p,b,g,y,C,N,z]}),e[67]=g,e[68]=y,e[69]=C,e[70]=N,e[71]=z,e[72]=p,e[73]=b,e[74]=K):K=e[74],K},Ge=l=>l>=100?"critical":l>=50?"warning":"good",Oe=l=>l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,Be=l=>l>=1e9?`${(l/1e9).toFixed(1)}B`:l>=1e6?`${(l/1e6).toFixed(1)}M`:l>=1e3?`${(l/1e3).toFixed(1)}K`:l.toLocaleString(),sr=l=>{const e=Le(3),{level:s}=l;if(s==="critical"){let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=r(et,{variant:"destructive",children:"Slow"}),e[0]=t):t=e[0],t}if(s==="warning"){let t;return e[1]===Symbol.for("react.memo_cache_sentinel")?(t=r("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-warning/10 px-2 py-0.5 text-xs font-medium text-warning",children:"Moderate"}),e[1]=t):t=e[1],t}let a;return e[2]===Symbol.for("react.memo_cache_sentinel")?(a=r("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-success/10 px-2 py-0.5 text-xs font-medium text-success",children:"Fast"}),e[2]=a):a=e[2],a},nr=(l,e)=>{const s=[...l];return s.sort((a,t)=>{switch(e){case"avgTime":return t.avgDurationMs-a.avgDurationMs;case"execCount":return t.execCount-a.execCount;case"rowsRead":return t.rowsRead-a.rowsRead;default:return t.totalDurationMs-a.totalDurationMs}}),s},ir=l=>{const e=Le(161),{queryStats:s}=l,a=pe(),[t,d]=fe("totalTime");let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=new Set,e[0]=i):i=e[0];const[n,k]=fe(i);let f;e[1]===Symbol.for("react.memo_cache_sentinel")?(f=C=>{C!==null&&d(C)},e[1]=f):f=e[1];const S=f;let p,u,h,M,b,$,_,c,g,x;if(e[2]!==n||e[3]!==s||e[4]!==t||e[5]!==a){h=Symbol.for("react.early_return_sentinel");e:{const C=nr(s,t);let R;e[16]!==s?(R=s.filter(or),e[16]=s,e[17]=R):R=e[17];const D=R.length;let N;e[18]!==s?(N=s.filter(cr),e[18]=s,e[19]=N):N=e[19];const v=N.length;let T;e[20]!==s?(T=s.filter(dr),e[20]=s,e[21]=T):T=e[21];const z=T.length;let K;e[22]===Symbol.for("react.memo_cache_sentinel")?(K=F=>{k(ce=>{const B=new Set(ce);return B.has(F)?B.delete(F):B.add(F),B})},e[22]=K):K=e[22];const Q=K;if(s.length===0){let F;e[23]!==a?(F=a("No query insights yet"),e[23]=a,e[24]=F):F=e[24];let ce;e[25]!==F?(ce=r("p",{className:"text-lg font-medium","data-testid":"qi-empty",children:F}),e[25]=F,e[26]=ce):ce=e[26];let B;e[27]!==a?(B=a("Query insights appear once statements are executed against this shard."),e[27]=a,e[28]=B):B=e[28];let ue;e[29]!==B?(ue=r("p",{className:"mt-1 text-sm",children:B}),e[29]=B,e[30]=ue):ue=e[30];let je;e[31]!==ce||e[32]!==ue?(je=r(he,{children:r(ge,{className:"py-12",children:o("div",{className:"text-center text-muted-foreground",children:[ce,ue]})})}),e[31]=ce,e[32]=ue,e[33]=je):je=e[33],h=je;break e}_="space-y-4",c="qi-root";let L;e[34]!==a?(L=a("Critical queries"),e[34]=a,e[35]=L):L=e[35];let U;e[36]!==L?(U=r(Pe,{className:"pb-2",children:r(Qe,{className:"text-sm font-medium",children:L})}),e[36]=L,e[37]=U):U=e[37];let O;e[38]!==D?(O=r("div",{className:"text-2xl font-bold text-destructive","data-testid":"qi-critical",children:D}),e[38]=D,e[39]=O):O=e[39];let A;e[40]!==a?(A=a(">100ms avg execution"),e[40]=a,e[41]=A):A=e[41];let J;e[42]!==A?(J=r("p",{className:"text-xs text-muted-foreground",children:A}),e[42]=A,e[43]=J):J=e[43];let H;e[44]!==O||e[45]!==J?(H=o(ge,{children:[O,J]}),e[44]=O,e[45]=J,e[46]=H):H=e[46];let G;e[47]!==U||e[48]!==H?(G=o(he,{children:[U,H]}),e[47]=U,e[48]=H,e[49]=G):G=e[49];let W;e[50]!==a?(W=a("Moderate queries"),e[50]=a,e[51]=W):W=e[51];let X;e[52]!==W?(X=r(Pe,{className:"pb-2",children:r(Qe,{className:"text-sm font-medium",children:W})}),e[52]=W,e[53]=X):X=e[53];let Y;e[54]!==v?(Y=r("div",{className:"text-2xl font-bold text-warning","data-testid":"qi-moderate",children:v}),e[54]=v,e[55]=Y):Y=e[55];let V;e[56]!==a?(V=a("50–100ms avg execution"),e[56]=a,e[57]=V):V=e[57];let Z;e[58]!==V?(Z=r("p",{className:"text-xs text-muted-foreground",children:V}),e[58]=V,e[59]=Z):Z=e[59];let ee;e[60]!==Y||e[61]!==Z?(ee=o(ge,{children:[Y,Z]}),e[60]=Y,e[61]=Z,e[62]=ee):ee=e[62];let te;e[63]!==X||e[64]!==ee?(te=o(he,{children:[X,ee]}),e[63]=X,e[64]=ee,e[65]=te):te=e[65];let re;e[66]!==a?(re=a("Fast queries"),e[66]=a,e[67]=re):re=e[67];let ae;e[68]!==re?(ae=r(Pe,{className:"pb-2",children:r(Qe,{className:"text-sm font-medium",children:re})}),e[68]=re,e[69]=ae):ae=e[69];let le;e[70]!==z?(le=r("div",{className:"text-2xl font-bold text-success","data-testid":"qi-fast",children:z}),e[70]=z,e[71]=le):le=e[71];let se;e[72]!==a?(se=a("<50ms avg execution"),e[72]=a,e[73]=se):se=e[73];let ne;e[74]!==se?(ne=r("p",{className:"text-xs text-muted-foreground",children:se}),e[74]=se,e[75]=ne):ne=e[75];let m;e[76]!==le||e[77]!==ne?(m=o(ge,{children:[le,ne]}),e[76]=le,e[77]=ne,e[78]=m):m=e[78];let E;e[79]!==ae||e[80]!==m?(E=o(he,{children:[ae,m]}),e[79]=ae,e[80]=m,e[81]=E):E=e[81],e[82]!==G||e[83]!==te||e[84]!==E?(g=o("div",{className:"grid gap-4 md:grid-cols-3",children:[G,te,E]}),e[82]=G,e[83]=te,e[84]=E,e[85]=g):g=e[85];let j;e[86]!==a?(j=a("Query leaderboard"),e[86]=a,e[87]=j):j=e[87];let P;e[88]!==j?(P=r("h3",{className:"text-lg font-semibold",children:j}),e[88]=j,e[89]=P):P=e[89];let ie;e[90]!==t||e[91]!==a?(ie=a("Slow queries sorted by {sortField}",{sortField:a(t)}),e[90]=t,e[91]=a,e[92]=ie):ie=e[92];let xe;e[93]!==ie?(xe=r("p",{className:"text-sm text-muted-foreground",children:ie}),e[93]=ie,e[94]=xe):xe=e[94];let be;e[95]!==P||e[96]!==xe?(be=o("div",{children:[P,xe]}),e[95]=P,e[96]=xe,e[97]=be):be=e[97];let ve;e[98]!==a?(ve=a("Sort by"),e[98]=a,e[99]=ve):ve=e[99];let ye;e[100]!==ve?(ye=r("span",{className:"text-sm text-muted-foreground",children:ve}),e[100]=ve,e[101]=ye):ye=e[101];let Ne;e[102]!==a?(Ne=a("Sort queries by"),e[102]=a,e[103]=Ne):Ne=e[103];let Ae;e[104]===Symbol.for("react.memo_cache_sentinel")?(Ae=r(Pt,{}),e[104]=Ae):Ae=e[104];let Se;e[105]!==Ne?(Se=r(Qt,{"aria-label":Ne,className:"w-[140px]","data-testid":"qi-sort",children:Ae}),e[105]=Ne,e[106]=Se):Se=e[106];let $e;e[107]!==a?($e=a("Total time"),e[107]=a,e[108]=$e):$e=e[108];let we;e[109]!==$e?(we=r(Ue,{value:"totalTime",children:$e}),e[109]=$e,e[110]=we):we=e[110];let qe;e[111]!==a?(qe=a("Avg time"),e[111]=a,e[112]=qe):qe=e[112];let ke;e[113]!==qe?(ke=r(Ue,{value:"avgTime",children:qe}),e[113]=qe,e[114]=ke):ke=e[114];let Me;e[115]!==a?(Me=a("Execution count"),e[115]=a,e[116]=Me):Me=e[116];let _e;e[117]!==Me?(_e=r(Ue,{value:"execCount",children:Me}),e[117]=Me,e[118]=_e):_e=e[118];let Ie;e[119]!==a?(Ie=a("Rows read"),e[119]=a,e[120]=Ie):Ie=e[120];let Ce;e[121]!==Ie?(Ce=r(Ue,{value:"rowsRead",children:Ie}),e[121]=Ie,e[122]=Ce):Ce=e[122];let Re;e[123]!==we||e[124]!==ke||e[125]!==_e||e[126]!==Ce?(Re=o(Ut,{children:[we,ke,_e,Ce]}),e[123]=we,e[124]=ke,e[125]=_e,e[126]=Ce,e[127]=Re):Re=e[127];let De;e[128]!==t||e[129]!==Se||e[130]!==Re?(De=o(Bt,{onValueChange:S,value:t,children:[Se,Re]}),e[128]=t,e[129]=Se,e[130]=Re,e[131]=De):De=e[131];let Fe;e[132]!==ye||e[133]!==De?(Fe=o("div",{className:"flex items-center gap-2",children:[ye,De]}),e[132]=ye,e[133]=De,e[134]=Fe):Fe=e[134],e[135]!==be||e[136]!==Fe?(x=o("div",{className:"flex items-center justify-between",children:[be,Fe]}),e[135]=be,e[136]=Fe,e[137]=x):x=e[137],u=he;let Te;e[138]!==a?(Te=a("Statements"),e[138]=a,e[139]=Te):Te=e[139];let Ke;e[140]!==Te?(Ke=r(Qe,{children:Te}),e[140]=Te,e[141]=Ke):Ke=e[141],$=o(Pe,{children:[Ke,r(Rt,{children:a("{count} tracked statements",{count:C.length})})]}),p=ge,M="space-y-2";let Ee;e[142]!==n||e[143]!==a?(Ee=F=>{const ce=F.normalizedSql,B=n.has(ce),ue=Ge(F.avgDurationMs);return o("div",{className:"overflow-hidden rounded-lg border","data-testid":"qi-row",children:[o("button",{"aria-expanded":B,className:"flex w-full items-center justify-between p-3 text-left transition-colors hover:bg-muted/50",onClick:()=>{Q(ce)},type:"button",children:[o("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[r(sr,{level:ue}),r("span",{className:"max-w-[300px] truncate font-mono text-sm lg:max-w-[500px]",children:F.normalizedSql})]}),o("div",{className:"flex shrink-0 items-center gap-4",children:[o("div",{className:"text-right",children:[r("div",{className:"text-sm font-medium",children:Oe(F.totalDurationMs)}),r("div",{className:"text-xs text-muted-foreground",children:a("total")})]}),o("div",{className:"text-right",children:[r("div",{className:"text-sm font-medium",children:Oe(F.avgDurationMs)}),r("div",{className:"text-xs text-muted-foreground",children:a("avg")})]}),F.p95DurationMs!==void 0&&o("div",{className:"text-right",children:[r("div",{className:"text-sm font-medium",children:Oe(F.p95DurationMs)}),r("div",{className:"text-xs text-muted-foreground",children:a("p95")})]}),o("div",{className:"text-right",children:[r("div",{className:"text-sm font-medium",children:Be(F.execCount)}),r("div",{className:"text-xs text-muted-foreground",children:a("calls")})]})]})]}),B&&o("div",{className:"space-y-3 border-t bg-muted/30 p-4",children:[o("div",{children:[r("p",{className:"mb-2 text-sm font-medium",children:a("Full statement")}),r("pre",{className:"overflow-x-auto rounded-md bg-muted p-3 font-mono text-sm whitespace-pre-wrap break-all",children:F.normalizedSql})]}),o("div",{className:"grid grid-cols-2 gap-4 text-sm md:grid-cols-4",children:[F.p50DurationMs!==void 0&&o("div",{children:[r("span",{className:"text-muted-foreground",children:a("p50")}),r("span",{className:"block font-medium tabular-nums",children:Oe(F.p50DurationMs)})]}),o("div",{children:[r("span",{className:"text-muted-foreground",children:a("Exec count")}),r("span",{className:"block font-medium tabular-nums",children:Be(F.execCount)})]}),o("div",{children:[r("span",{className:"text-muted-foreground",children:a("Total time")}),r("span",{className:"block font-medium tabular-nums",children:Oe(F.totalDurationMs)})]}),o("div",{children:[r("span",{className:"text-muted-foreground",children:a("Rows read")}),r("span",{className:"block font-medium tabular-nums",children:Be(F.rowsRead)})]}),o("div",{children:[r("span",{className:"text-muted-foreground",children:a("Rows written")}),r("span",{className:"block font-medium tabular-nums",children:Be(F.rowsWritten)})]})]})]})]},ce)},e[142]=n,e[143]=a,e[144]=Ee):Ee=e[144],b=C.map(Ee)}e[2]=n,e[3]=s,e[4]=t,e[5]=a,e[6]=p,e[7]=u,e[8]=h,e[9]=M,e[10]=b,e[11]=$,e[12]=_,e[13]=c,e[14]=g,e[15]=x}else p=e[6],u=e[7],h=e[8],M=e[9],b=e[10],$=e[11],_=e[12],c=e[13],g=e[14],x=e[15];if(h!==Symbol.for("react.early_return_sentinel"))return h;let w;e[145]!==M||e[146]!==b?(w=r("div",{className:M,children:b}),e[145]=M,e[146]=b,e[147]=w):w=e[147];let q;e[148]!==p||e[149]!==w?(q=r(p,{children:w}),e[148]=p,e[149]=w,e[150]=q):q=e[150];let y;e[151]!==u||e[152]!==q||e[153]!==$?(y=o(u,{children:[$,q]}),e[151]=u,e[152]=q,e[153]=$,e[154]=y):y=e[154];let I;return e[155]!==y||e[156]!==_||e[157]!==c||e[158]!==g||e[159]!==x?(I=o("div",{className:_,"data-testid":c,children:[g,x,y]}),e[155]=y,e[156]=_,e[157]=c,e[158]=g,e[159]=x,e[160]=I):I=e[160],I};function or(l){return Ge(l.avgDurationMs)==="critical"}function cr(l){return Ge(l.avgDurationMs)==="warning"}function dr(l){return Ge(l.avgDurationMs)==="good"}const mr=["1m","5m","15m","1h"],ur=l=>new Date(l).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}),hr=l=>l.map(e=>({avg:Math.round(e.avgDurationMs*100)/100,execs:e.execCount,label:ur(e.bucketMs)})),gr=({shardKey:l=""})=>{const e=pe(),[s,a]=fe("15m"),t=Je(ze.getQueryInsights,{range:s},{live:!0,shardKey:l}).data,d=hr(t?.buckets??[]);return o("div",{className:"flex flex-col gap-4","data-testid":"qi-range",children:[o("div",{className:"flex flex-wrap items-center gap-2",children:[r("div",{className:"flex gap-1 rounded-lg border border-border p-0.5","data-testid":"qi-ranges",role:"group",children:mr.map(i=>r("button",{"aria-pressed":i===s,className:jt("rounded px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",i===s&&"bg-accent font-medium text-foreground"),"data-testid":`qi-range-${i}`,onClick:()=>{a(i)},type:"button",children:i},i))}),t?.capped===!0&&r(et,{"data-testid":"qi-capped",variant:"secondary",children:e("showing a capped set")})]}),d.length===0?r(Et,{description:e("Statements executed in the selected window appear here, with throughput and latency over time."),testId:"qi-empty",title:e("No queries in this window.")}):o("div",{className:"grid gap-4 lg:grid-cols-2",children:[o("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-throughput",children:[r("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Throughput")}),r(lt,{height:140,width:"100%",children:o(Ot,{data:d,children:[r(st,{strokeDasharray:"3 3",vertical:!1}),r(nt,{dataKey:"label",fontSize:10,tickLine:!1}),r(it,{allowDecimals:!1,fontSize:10,tickLine:!1,width:32}),r(ot,{}),r(zt,{dataKey:"execs",fill:"var(--color-primary)",fillOpacity:.15,stroke:"var(--color-primary)",type:"monotone"})]})})]}),o("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-latency",children:[r("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Mean latency (ms)")}),r(lt,{height:140,width:"100%",children:o(At,{data:d,children:[r(st,{strokeDasharray:"3 3",vertical:!1}),r(nt,{dataKey:"label",fontSize:10,tickLine:!1}),r(it,{fontSize:10,tickLine:!1,width:32}),r(ot,{}),r(Kt,{dataKey:"avg",dot:!1,stroke:"var(--color-destructive)",type:"monotone"})]})})]})]}),r(ir,{queryStats:t?.entries??[]})]})},fr=kt(ze.getMetrics),pr=(l,e)=>l?e:"overview",Ur=({initialShardKey:l})=>{const e=pt(),s=pe(),a=xt(),{queryShardKey:t,setShardKey:d,shardKey:i}=Nt(l),[n,k]=fe("overview"),[f,S]=fe([]),p=We(null),u=We(null),h=We(!0);tt(()=>(h.current=!0,()=>{h.current=!1}),[]);const M=L=>{It({shardKey:t,traceId:L}),at(a({to:"/traces"}))},{data:b,error:$,liveError:_}=Je(ze.getMetrics,{},{live:!0,shardKey:t}),c=b??null;tt(()=>{if(b===void 0)return;Mt(t);const L=b,U=p.current,O=u.current!==null&&u.current!==L.shard;if(u.current=L.shard,p.current=L.requests,O){S([]);return}U!==null&&L.requests>=U&&S(A=>[...A,L.requests-U].slice(-30))},[b,t]);const[g,x]=fe(null),[w,q]=fe(!1),y=async()=>{q(!0);const L=Lt(i,_t());try{const U=await Promise.all(L.map(async O=>{try{const A=await e.query(fr,{},wt(O));return{error:null,metrics:A,shard:O===""?A.shard:O}}catch(A){return{error:qt(A),metrics:null,shard:O===""?"__root__":O}}}));h.current&&x(U)}finally{h.current&&q(!1)}},I=g===null?null:Dt(g),C=c===null||c.requests===0?"—":`${(c.errors/c.requests*100).toFixed(1)}%`,R=f.length>0?f.at(-1):0,D=c?Ft(c):{p90:0,p95:0},N=bt(()=>{if(!c||!("queryStats"in c))return;const L=c.queryStats;if(!(!L||!Array.isArray(L)))return Tt(L)},[c]),v=pr(N!==void 0,n),T=()=>{at(y())},z=()=>{x(null)},K=()=>{k("overview")},Q=()=>{k("query-insights")};return o("div",{className:"flex flex-col gap-4","data-testid":"lunora-metrics",children:[o("div",{className:"flex flex-wrap items-center gap-2",children:[r(yt,{onChange:d,testId:"mt-shard-input",value:i}),r(vt,{message:_,prefix:"mt"}),r(rt,{"data-testid":"mt-aggregate",disabled:w,onClick:T,size:"sm",type:"button",variant:"secondary",children:s(w?"Aggregating…":"All shards")}),g!==null&&r(rt,{"data-testid":"mt-aggregate-clear",onClick:z,size:"sm",type:"button",variant:"ghost",children:s("Hide")}),r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"mt-cf-link",href:St,rel:"noreferrer",target:"_blank",children:s("Open in Cloudflare")})]}),$!==null&&r("p",{className:"text-sm text-destructive","data-testid":"mt-error",role:"alert",children:$}),N!==void 0&&o("div",{className:"flex gap-2 border-b","data-testid":"mt-tabs",children:[r("button",{className:`pb-2 text-sm font-medium transition-colors ${v==="overview"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-overview",onClick:K,type:"button",children:s("Overview")}),o("button",{className:`pb-2 text-sm font-medium transition-colors ${v==="query-insights"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-query-insights",onClick:Q,type:"button",children:[s("Query insights"),N.length>0&&r("span",{className:"ml-1.5 rounded-full bg-primary/10 px-1.5 py-0.5 text-xs text-primary",children:N.length})]})]}),v==="query-insights"&&N!==void 0&&r(gr,{shardKey:t}),v==="overview"&&c!==null&&r(lr,{currentDelta:R,errorRate:C,history:f,latencyPercentiles:D,metrics:c}),v==="overview"&&c===null&&null,v==="overview"&&r(er,{onOpenTrace:M,shardKey:t}),v==="overview"&&I!==null&&g!==null&&r(tr,{aggregate:I,shardResults:g})]})};export{Ur as MetricsPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as W}from"react/compiler-runtime";import{useState as T}from"react";import{E as B}from"../packem_shared/error-alert
|
|
1
|
+
import{c as W}from"react/compiler-runtime";import{useState as T}from"react";import{E as B}from"../packem_shared/error-alert--Ie7ofJ0.js";import{g as _}from"../packem_shared/badge-BbuuAio7.js";import{u as z}from"../packem_shared/button-BkCrNcAs.js";import{c as O,u as U}from"../packem_shared/card-CIDGUN6K.js";import{E as q}from"../packem_shared/empty-state-Cg7t_8qu.js";import{u as G}from"../packem_shared/input-JHu63lTv.js";import{n as J,d as K,m as F,p as h,f as Q,u as f}from"../packem_shared/table-DdJBrClo.js";import{N as X}from"../packem_shared/use-admin-query-CnnyWJXM.js";import{useT as Y}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as Z}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{i as ee}from"../packem_shared/internal-zkEvTqy8.js";import{jsx as t,jsxs as x}from"react/jsx-runtime";const te=e=>e==="ok"?"success":e==="failed"?"destructive":e==="expired"?"warning":"secondary",P=e=>e.endpoint??e.id,ve=()=>{const e=W(38),r=Y(),[i,R]=T("all"),[s,V]=T("");let g;e[0]===Symbol.for("react.memo_cache_sentinel")?(g={},e[0]=g):g=e[0];const{data:S,error:o,errorSource:p,isLoading:C,refetch:v}=X(Z.listPushSubscriptions,g);let N;if(e[1]!==S?.subscriptions||e[2]!==o||e[3]!==p||e[4]!==C||e[5]!==i||e[6]!==v||e[7]!==s||e[8]!==r){const A=S?.subscriptions??[],j=s.trim().toLowerCase(),E=A.filter(a=>i!=="all"&&a.kind!==i?!1:j===""?!0:`${P(a)} ${a.userId??""}`.toLowerCase().includes(j));let b;e[10]===Symbol.for("react.memo_cache_sentinel")?(b=a=>{V(a.target.value)},e[10]=b):b=e[10];const D=b;let w;e[11]!==v?(w=()=>{v()},e[11]=v,e[12]=w):w=e[12];const I=w;let y;e[13]===Symbol.for("react.memo_cache_sentinel")?(y=["all","web-push","fcm"],e[13]=y):y=e[13];const H=y;let l;e[14]!==i||e[15]!==r?(l=t("div",{className:"flex items-center gap-1","data-testid":"nt-kind-filter",role:"tablist",children:H.map(a=>t(z,{"aria-selected":i===a,"data-testid":`nt-kind-${a}`,onClick:()=>{R(a)},role:"tab",size:"sm",type:"button",variant:i===a?"secondary":"ghost",children:a==="all"?r("All"):a},a))}),e[14]=i,e[15]=r,e[16]=l):l=e[16];let n;e[17]!==r?(n=r("Filter devices"),e[17]=r,e[18]=n):n=e[18];let c;e[19]!==r?(c=r("filter endpoint, user"),e[19]=r,e[20]=c):c=e[20];let d;e[21]!==s||e[22]!==n||e[23]!==c?(d=t(G,{"aria-label":n,className:"h-8 w-56","data-testid":"nt-search",onChange:D,placeholder:c,value:s}),e[21]=s,e[22]=n,e[23]=c,e[24]=d):d=e[24];let m;e[25]!==r?(m=r("Refresh"),e[25]=r,e[26]=m):m=e[26];let u;e[27]!==I||e[28]!==m?(u=t(z,{className:"ml-auto","data-testid":"nt-refresh",onClick:I,size:"sm",type:"button",variant:"outline",children:m}),e[27]=I,e[28]=m,e[29]=u):u=e[29];const L=A.length>0&&t(_,{"data-testid":"nt-count",variant:"secondary",children:r("{count} devices",{count:A.length})});let $;e[30]!==u||e[31]!==L||e[32]!==l||e[33]!==d?($=x("div",{className:"flex flex-wrap items-center gap-2",children:[l,d,u,L]}),e[30]=u,e[31]=L,e[32]=l,e[33]=d,e[34]=$):$=e[34];let k;e[35]!==o||e[36]!==p?(k=o!==null&&t(B,{error:p,testId:"nt-error"}),e[35]=o,e[36]=p,e[37]=k):k=e[37],N=x("div",{className:"flex flex-col gap-4","data-testid":"lunora-notifications",children:[$,k,o===null&&!C&&E.length===0&&t(q,{description:r("Registered Web Push / FCM devices appear here. Configure lunora/notify.ts with defineNotify({ store }) and register a device with ctx.push.register(...)."),icon:t("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:t("path",{d:"M15 17h5l-1.4-1.4A2 2 0 0 1 18 14.2V11a6 6 0 0 0-4-5.7V5a2 2 0 1 0-4 0v.3A6 6 0 0 0 6 11v3.2a2 2 0 0 1-.6 1.4L4 17h5m6 0v1a3 3 0 1 1-6 0v-1m6 0H9"})}),testId:"nt-empty",title:r("No registered devices.")}),E.length>0&&t(O,{className:"overflow-hidden py-0",children:t(U,{className:"max-h-[30rem] overflow-auto px-0",children:x(J,{"data-testid":"nt-table",children:[t(K,{children:x(F,{children:[t(h,{children:r("kind")}),t(h,{children:r("endpoint")}),t(h,{children:r("user")}),t(h,{children:r("last seen")}),t(h,{children:r("status")}),t(h,{children:r("error")})]})}),t(Q,{children:E.map(a=>{const M=P(a);return x(F,{"data-testid":"nt-row",children:[t(f,{children:t(_,{variant:"outline",children:a.kind})}),t(f,{className:"max-w-[28ch] truncate font-mono text-xs",title:M,children:M}),t(f,{className:"max-w-[16ch] truncate font-mono text-xs",children:a.userId??t("span",{className:"text-muted-foreground",children:"—"})}),t(f,{className:"text-muted-foreground tabular-nums",children:ee(a.lastSeenAt,"—")}),t(f,{children:t(_,{"data-testid":`nt-status-${a.id}`,variant:te(a.lastStatus),children:a.lastStatus??r("n/a")})}),t(f,{className:"max-w-[28ch] truncate font-mono text-xs text-muted-foreground",title:a.lastError??void 0,children:a.lastError??t("span",{className:"text-muted-foreground",children:"—"})})]},a.id)})})]})})})]}),e[1]=S?.subscriptions,e[2]=o,e[3]=p,e[4]=C,e[5]=i,e[6]=v,e[7]=s,e[8]=r,e[9]=N}else N=e[9];return N};export{ve as NotificationsPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useLunora as E}from"@lunora/react";import{useState as s,useCallback as H,useEffect as W}from"react";import{ConfirmButton as F}from"../packem_shared/ConfirmButton-CTL3f3kr.js";import{g as Z}from"../packem_shared/badge-BbuuAio7.js";import{u as _}from"../packem_shared/button-BkCrNcAs.js";import{u as I}from"../packem_shared/input-JHu63lTv.js";import{p as g}from"../packem_shared/label-6uP1obNF.js";import{useAutoRefresh as G}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js";import{useT as J}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as B}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{d as u,b as N,f as p,g as S}from"../packem_shared/internal-
|
|
1
|
+
import{useLunora as E}from"@lunora/react";import{useState as s,useCallback as H,useEffect as W}from"react";import{ConfirmButton as F}from"../packem_shared/ConfirmButton-CTL3f3kr.js";import{g as Z}from"../packem_shared/badge-BbuuAio7.js";import{u as _}from"../packem_shared/button-BkCrNcAs.js";import{u as I}from"../packem_shared/input-JHu63lTv.js";import{p as g}from"../packem_shared/label-6uP1obNF.js";import{useAutoRefresh as G}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js";import{useT as J}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as B}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{d as u,b as N,f as p,g as S}from"../packem_shared/internal-zkEvTqy8.js";import{jsxs as a,jsx as r}from"react/jsx-runtime";const y=S(B.getPitrBookmark),Q=S(B.pitrRestore),de=({initialShardKey:T})=>{const m=E(),t=J(),i=T??"",[O,f]=s(null),[l,P]=s(""),[v,w]=s(null),[c,q]=s(""),[h,A]=s(!1),[o,L]=s(null),[C,n]=s(null),[x,d]=s(!1),b=H(async()=>{d(!0),n(null);try{const e=await m.query(y,{},u(i));f(e.current)}catch(e){n(N(e))}d(!1)},[m,i]);W(()=>{p(b())},[b]),G(()=>{p((async()=>{try{const e=await m.query(y,{},u(i));f(e.current)}catch{}})())},!0);const U=e=>{P(e.target.value)},j=e=>{q(e.target.value)},M=e=>{A(e.target.checked)},z=()=>{l.trim()!==""&&p((async()=>{d(!0),n(null);try{const e=await m.query(y,{time:l.trim()},u(i));w(e.forTime??null),f(e.current)}catch(e){w(null),n(N(e))}d(!1)})())},R=e=>{p((async()=>{d(!0),n(null);try{const k=await m.mutation(Q,e,u(i));L(k),await b()}catch(k){n(N(k))}d(!1)})())},K=c.trim()!==""||l.trim()!=="",$=()=>{const e=h?{restart:!0}:{};c.trim()===""?e.time=l.trim():e.bookmark=c.trim(),R(e)},D=()=>{o!==null&&R(h?{bookmark:o.undoBookmark,restart:!0}:{bookmark:o.undoBookmark})};return a("div",{className:"flex flex-col gap-4","data-testid":"lunora-pitr",children:[r("div",{className:"flex flex-wrap items-center gap-3",children:a("span",{className:"text-xs text-muted-foreground",children:[t("Shard"),": ",r("span",{className:"font-mono",children:i===""?t("root"):i})]})}),r("p",{className:"text-sm text-muted-foreground","data-testid":"pitr-note",children:t("In-place recovery to any moment in the last 30 days. For older or portable recovery, use the snapshot backup tier.")}),C!==null&&r("p",{className:"text-sm text-destructive","data-testid":"pitr-error",role:"alert",children:C}),a("section",{className:"rounded-xl border border-border bg-card p-3 shadow-xs",children:[r("h3",{className:"mb-2 text-sm font-semibold",children:t("Current bookmark")}),r("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-current",children:O??r("span",{className:"text-muted-foreground",children:"—"})})]}),a("section",{className:"flex flex-col gap-3 rounded-xl border border-border bg-card p-3 shadow-xs",children:[r("h3",{className:"text-sm font-semibold",children:t("Restore")}),a("div",{className:"flex flex-col gap-1",children:[r(g,{htmlFor:"pitr-time",children:t("Time (ISO or epoch-ms, last 30 days)")}),a("div",{className:"flex items-center gap-2",children:[r(I,{"data-testid":"pitr-time",id:"pitr-time",onChange:U,placeholder:"2026-06-01T00:00:00.000Z",value:l}),r(_,{"data-testid":"pitr-preview",disabled:x||l.trim()==="",onClick:z,size:"sm",type:"button",variant:"outline",children:t("Preview")})]}),v!==null&&a("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-preview-bookmark",children:[t("Bookmark for that time"),": ",v]})]}),a("div",{className:"flex flex-col gap-1",children:[r(g,{htmlFor:"pitr-bookmark",children:t("Or an explicit bookmark (wins over time)")}),r(I,{"data-testid":"pitr-bookmark",id:"pitr-bookmark",onChange:j,placeholder:t("bookmark string"),value:c})]}),a(g,{className:"flex items-center gap-2 text-xs font-normal text-muted-foreground",htmlFor:"pitr-restart",children:[r("input",{checked:h,className:"size-4 accent-primary","data-testid":"pitr-restart",id:"pitr-restart",onChange:M,type:"checkbox"}),t("Restart the shard now so recovery applies immediately")]}),r("div",{children:r(F,{confirmLabel:t("Confirm restore"),disabled:x||!K,onConfirm:$,testId:"pitr-restore",children:t("Restore")})})]}),o!==null&&a("section",{className:"flex flex-col gap-2 rounded-xl border border-border bg-card p-3 shadow-xs","data-testid":"pitr-result",children:[a("div",{className:"flex items-center gap-2",children:[r("h3",{className:"text-sm font-semibold",children:t("Restore armed")}),r(Z,{variant:o.restarted?"destructive":"secondary",children:o.restarted?t("restarted now"):t("on next restart")})]}),a("p",{className:"font-mono text-xs break-all text-muted-foreground",children:[t("Restored to"),": ",o.restoredTo]}),a("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-undo-bookmark",children:[t("Undo bookmark"),": ",o.undoBookmark]}),r("div",{children:r(F,{confirmLabel:t("Confirm undo"),disabled:x,onConfirm:D,testId:"pitr-undo",children:t("Undo restore")})})]})]})};export{de as PitrPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as Ce}from"react/compiler-runtime";import{ShardInput as Ze}from"../packem_shared/ShardInput-BVn2iCU0.js";import{g as Re,d as Oe}from"../packem_shared/storage-tier-DznqOf-q.js";import{g as Fe}from"../packem_shared/badge-BbuuAio7.js";import{f as Ke,m as Ge,n as Le,u as Me,c as De}from"../packem_shared/card-CIDGUN6K.js";import{E as He}from"../packem_shared/empty-state-Cg7t_8qu.js";import{u as Ie}from"../packem_shared/input-JHu63lTv.js";import{useT as je}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{d as Ae,b as Ee,f as fe,g as qe}from"../packem_shared/internal-BSIsQVC6.js";import{c as We}from"../packem_shared/utils-bhneXptQ.js";import{useLunora as Qe}from"@lunora/react";import{useState as $,useEffect as Pe,useRef as et}from"react";import{S as tt}from"../packem_shared/use-shard-key-B2JtNa5m.js";import{ADMIN_FUNCTIONS as ze}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{r as lt}from"../packem_shared/shard-history-DMEW5VBE.js";import{S as at}from"../packem_shared/schema-diagram-cg-bz_VL.js";import{useNavigate as nt}from"@tanstack/react-router";import{u as be}from"../packem_shared/button-BkCrNcAs.js";import{p as _e}from"../packem_shared/label-6uP1obNF.js";import{jsx as l,jsxs as g,Fragment as Ve}from"react/jsx-runtime";const st=qe(ze.listTables),rt=qe(ze.listTableIndexes),ot=qe(ze.readTablePage),it=qe(ze.describeTables),dt={},Be=[],ct=s=>{const e=Ce(74),{initialShardKey:m,initialTable:n}=s,t=Qe(),[a,c]=$("graph"),{queryShardKey:d,setShardKey:i,shardKey:f}=tt(m),[r,h]=$(""),[o,x]=$(null),[p,P]=$(null);let S;e[0]===Symbol.for("react.memo_cache_sentinel")?(S={},e[0]=S):S=e[0];const[L,v]=$(S);let K;e[1]===Symbol.for("react.memo_cache_sentinel")?(K={},e[1]=K):K=e[1];const[F,M]=$(K),[w,N]=$(null);let A;e[2]===Symbol.for("react.memo_cache_sentinel")?(A={},e[2]=A):A=e[2];const[j,me]=$(A);let Z;e[3]===Symbol.for("react.memo_cache_sentinel")?(Z={},e[3]=Z):Z=e[3];const[k,G]=$(Z),[_,ue]=$(null),[D,oe]=$(null);let H;e[4]===Symbol.for("react.memo_cache_sentinel")?(H={},e[4]=H):H=e[4];const[X,xe]=$(H),[Y,ie]=$(null);let ve;e[5]!==t?(ve=async u=>{P(null);try{const C=await t.query(st,{},Ae(u));lt(u),x(C),v({}),M({}),N(null),me(y=>Object.fromEntries(Object.entries(y).filter(O=>{const[I]=O;return I!==u}))),G(y=>Object.fromEntries(Object.entries(y).filter(O=>{const[I]=O;return I!==u})))}catch(C){const y=C;x(null),P(Ee(y))}},e[5]=t,e[6]=ve):ve=e[6];const q=ve;let Q;e[7]!==t?(Q=async()=>{oe(null);try{ue(await t.listGlobalTables())}catch(u){const C=u;ue(null),oe(Ee(C))}},e[7]=t,e[8]=Q):Q=e[8];const ee=Q;let de,R;e[9]!==d||e[10]!==q||e[11]!==ee?(de=()=>{fe(q(d)),fe(ee())},R=[q,ee,d],e[9]=d,e[10]=q,e[11]=ee,e[12]=de,e[13]=R):(de=e[12],R=e[13]),Pe(de,R);let te;e[14]!==t||e[15]!==L||e[16]!==w||e[17]!==d?(te=async u=>{if(w===u){N(null);return}N(u);const C=`${d}:${u}`;if(L[C]!==void 0)return;const[y,O]=await Promise.allSettled([t.query(ot,{limit:1,offset:0,table:u},Ae(d)),t.query(rt,{table:u},Ae(d))]);y.status==="fulfilled"?v(I=>({...I,[C]:y.value.columns})):P(Ee(y.reason)),O.status==="fulfilled"&&M(I=>({...I,[C]:O.value.indexes}))},e[14]=t,e[15]=L,e[16]=w,e[17]=d,e[18]=te):te=e[18];const z=te;let ye;e[19]!==t||e[20]!==X||e[21]!==Y?(ye=async u=>{if(Y===u){ie(null);return}if(ie(u),X[u]===void 0)try{const C=await t.readGlobalTablePage({limit:1,offset:0,table:u});xe(y=>({...y,[u]:C.columns}))}catch(C){oe(Ee(C))}},e[19]=t,e[20]=X,e[21]=Y,e[22]=ye):ye=e[22];const ce=ye,he=et(void 0);let V,J;e[23]!==n||e[24]!==o||e[25]!==z?(V=()=>{n===void 0||o===null||he.current===n||o.some(u=>u.name===n)&&(he.current=n,fe(z(n)))},J=[n,o,z],e[23]=n,e[24]=o,e[25]=z,e[26]=V,e[27]=J):(V=e[26],J=e[27]),Pe(V,J);let B;e[28]!==t?(B=async(u,C,y)=>{const[O,I]=await Promise.all([Promise.allSettled([t.query(it,{tables:[...C,...y]},Ae(u))]),Promise.all(y.map(async T=>{const ge=await Promise.allSettled([t.readGlobalTablePage({limit:1,offset:0,table:T})]),ke=ge[0].status==="fulfilled"?ge[0].value:void 0;return{columns:ke?.columns??[],refs:ke?.refs??{},table:T}}))]),Te=O[0].status==="fulfilled"?O[0].value?.columnsByTable??{}:{},we=O[0].status==="rejected",Se=new Map(I.map(mt)),$e=[...C,...y].map(T=>{const ge=Te[T]??[];return[T,ge.length>0?ge:Se.get(T)??[]]});me(T=>({...T,[u]:Object.fromEntries($e)})),G(T=>({...T,[u]:we}))},e[28]=t,e[29]=B):B=e[29];const le=B;let U,ae;e[30]!==D||e[31]!==_||e[32]!==le||e[33]!==d||e[34]!==j||e[35]!==o||e[36]!==a?(U=()=>{a!=="graph"||o===null||_===null&&D===null||j[d]!==void 0||fe(le(d,o.map(ut),(_??[]).map(ht)))},ae=[a,o,_,D,d,j,le],e[30]=D,e[31]=_,e[32]=le,e[33]=d,e[34]=j,e[35]=o,e[36]=a,e[37]=U,e[38]=ae):(U=e[37],ae=e[38]),Pe(U,ae);const E=j[d]??dt;let ne;if(e[39]!==E||e[40]!==_||e[41]!==o){let u;e[43]!==E?(u=I=>({columns:E[I.name]??Be,name:I.name,tier:"shard"}),e[43]=E,e[44]=u):u=e[44];const C=(o??[]).map(u);let y;e[45]!==E?(y=I=>({columns:E[I.name]??Be,name:I.name,tier:"global"}),e[45]=E,e[46]=y):y=e[46];const O=(_??[]).map(y);ne=[...C,...O],e[39]=E,e[40]=_,e[41]=o,e[42]=ne}else ne=e[42];const se=ne;let b;if(e[47]!==r||e[48]!==o){const u=r.trim().toLowerCase();b=(o??[]).filter(C=>C.name.toLowerCase().includes(u)),e[47]=r,e[48]=o,e[49]=b}else b=e[49];const re=b;let W;if(e[50]!==_||e[51]!==r){const u=r.trim().toLowerCase();W=(_??[]).filter(C=>C.name.toLowerCase().includes(u)),e[50]=_,e[51]=r,e[52]=W}else W=e[52];const Ne=W;let pe;return e[53]!==L||e[54]!==se||e[55]!==p||e[56]!==w||e[57]!==Ne||e[58]!==re||e[59]!==X||e[60]!==D||e[61]!==Y||e[62]!==_||e[63]!==F||e[64]!==q||e[65]!==i||e[66]!==k||e[67]!==f||e[68]!==r||e[69]!==o||e[70]!==z||e[71]!==ce||e[72]!==a?(pe={columns:L,diagramTables:se,error:p,expanded:w,filteredGlobalTables:Ne,filteredTables:re,globalColumns:X,globalError:D,globalExpanded:Y,globalTables:_,indexes:F,refresh:q,setShardKey:i,setTableFilter:h,setView:c,shardColumnsError:k,shardKey:f,tableFilter:r,tables:o,toggle:z,toggleGlobal:ce,view:a},e[53]=L,e[54]=se,e[55]=p,e[56]=w,e[57]=Ne,e[58]=re,e[59]=X,e[60]=D,e[61]=Y,e[62]=_,e[63]=F,e[64]=q,e[65]=i,e[66]=k,e[67]=f,e[68]=r,e[69]=o,e[70]=z,e[71]=ce,e[72]=a,e[73]=pe):pe=e[73],pe};function mt(s){const{columns:e,refs:m,table:n}=s;return[n,e.map(t=>{const a=m[t];return a===void 0?{name:t,optional:!1,type:""}:{name:t,optional:!1,ref:a,type:"id"}})]}function ut(s){return s.name}function ht(s){return s.name}const pt="/__lunora/schema-edit",gt=async s=>{const e=await fetch(pt,{body:JSON.stringify(s),headers:{"Content-Type":"application/json","X-Lunora-Studio":"1"},method:"POST"}),m=await e.json();return m.needsMigration===!0?{kind:"needs-migration",message:m.message??"This edit needs a migration."}:e.ok&&m.tables!==void 0?{diagnostics:m.diagnostics??[],kind:"ok",tables:m.tables}:{kind:"error",message:m.error??`schema edit failed (${String(e.status)})`}},bt=s=>{const e=Ce(32),{hasTables:m,mode:n,onAddColumn:t,onAddIndex:a,onAddTable:c,onDestructive:d}=s,i=je(),f=n==="addTable"?"default":"outline";let r;e[0]!==i?(r=i("Add table"),e[0]=i,e[1]=r):r=e[1];let h;e[2]!==c||e[3]!==f||e[4]!==r?(h=l(be,{"data-testid":"sc-editor-add-table",onClick:c,size:"xs",type:"button",variant:f,children:r}),e[2]=c,e[3]=f,e[4]=r,e[5]=h):h=e[5];const o=!m,x=n==="addColumn"?"default":"outline";let p;e[6]!==i?(p=i("Add column"),e[6]=i,e[7]=p):p=e[7];let P;e[8]!==t||e[9]!==o||e[10]!==x||e[11]!==p?(P=l(be,{"data-testid":"sc-editor-add-column",disabled:o,onClick:t,size:"xs",type:"button",variant:x,children:p}),e[8]=t,e[9]=o,e[10]=x,e[11]=p,e[12]=P):P=e[12];const S=!m,L=n==="addIndex"?"default":"outline";let v;e[13]!==i?(v=i("Add index"),e[13]=i,e[14]=v):v=e[14];let K;e[15]!==a||e[16]!==v||e[17]!==S||e[18]!==L?(K=l(be,{"data-testid":"sc-editor-add-index",disabled:S,onClick:a,size:"xs",type:"button",variant:L,children:v}),e[15]=a,e[16]=v,e[17]=S,e[18]=L,e[19]=K):K=e[19];const F=!m,M=n==="destructive"?"default":"ghost";let w;e[20]!==i?(w=i("Rename / drop / change type…"),e[20]=i,e[21]=w):w=e[21];let N;e[22]!==d||e[23]!==F||e[24]!==M||e[25]!==w?(N=l(be,{"data-testid":"sc-editor-destructive",disabled:F,onClick:d,size:"xs",type:"button",variant:M,children:w}),e[22]=d,e[23]=F,e[24]=M,e[25]=w,e[26]=N):N=e[26];let A;return e[27]!==K||e[28]!==N||e[29]!==h||e[30]!==P?(A=g("div",{className:"flex flex-wrap gap-2",children:[h,P,K,N]}),e[27]=K,e[28]=N,e[29]=h,e[30]=P,e[31]=A):A=e[31],A},ft=s=>{const e=Ce(28),{onOpenMigrations:m,result:n}=s,t=je();if(n===null){let r;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=l(Ve,{}),e[0]=r):r=e[0],r}if(n.kind==="error"){let r;return e[1]!==n.message?(r=l("p",{className:"mt-3 text-sm text-destructive","data-testid":"sc-editor-error",role:"alert",children:n.message}),e[1]=n.message,e[2]=r):r=e[2],r}if(n.kind==="needs-migration"){let r;e[3]!==n.message||e[4]!==t?(r=n.message===""?t("This edit changes stored data and must go through a migration. Review the migration before applying."):n.message,e[3]=n.message,e[4]=t,e[5]=r):r=e[5];let h;e[6]!==r?(h=l("p",{className:"text-sm text-warning",role:"alert",children:r}),e[6]=r,e[7]=h):h=e[7];let o;e[8]!==t?(o=t("Open Migrations"),e[8]=t,e[9]=o):o=e[9];let x;e[10]!==m||e[11]!==o?(x=l(be,{className:"self-start","data-testid":"sc-editor-open-migrations",onClick:m,size:"xs",type:"button",variant:"outline",children:o}),e[10]=m,e[11]=o,e[12]=x):x=e[12];let p;return e[13]!==h||e[14]!==x?(p=g("div",{className:"mt-3 flex flex-col gap-2","data-testid":"sc-editor-needs-migration",children:[h,x]}),e[13]=h,e[14]=x,e[15]=p):p=e[15],p}if(n.diagnostics.length===0){let r;return e[16]===Symbol.for("react.memo_cache_sentinel")?(r=l(Ve,{}),e[16]=r):r=e[16],r}let a;e[17]!==t?(a=t("Codegen reported diagnostics:"),e[17]=t,e[18]=a):a=e[18];let c;e[19]!==a?(c=l("p",{className:"text-sm text-destructive",role:"alert",children:a}),e[19]=a,e[20]=c):c=e[20];let d;e[21]!==n.diagnostics?(d=n.diagnostics.map(xt),e[21]=n.diagnostics,e[22]=d):d=e[22];let i;e[23]!==d?(i=l("ul",{className:"flex flex-col gap-0.5",children:d}),e[23]=d,e[24]=i):i=e[24];let f;return e[25]!==c||e[26]!==i?(f=g("div",{className:"mt-3 flex flex-col gap-1","data-testid":"sc-editor-diagnostics",children:[c,i]}),e[25]=c,e[26]=i,e[27]=f):f=e[27],f};function xt(s){return l("li",{className:"font-mono text-[11px] text-destructive",children:s},s)}const vt=[{label:"string",validator:"v.string()"},{label:"number",validator:"v.number()"},{label:"boolean",validator:"v.boolean()"},{label:"bigint",validator:"v.int64()"},{label:"bytes",validator:"v.bytes()"},{label:"any",validator:"v.any()"}],yt="v.string()",Nt=s=>s.split(",").map(e=>e.trim()).filter(e=>e!==""),Ct=s=>{const e=Ce(83),{onApplied:m,tableNames:n}=s,t=je(),a=nt(),[c,d]=$(null),[i,f]=$(!1),[r,h]=$(null),[o,x]=$(""),[p,P]=$(""),[S,L]=$(yt),[v,K]=$(n[0]??""),[F,M]=$(""),[w,N]=$(""),[A,j]=$(!1);let me;e[0]===Symbol.for("react.memo_cache_sentinel")?(me=()=>{d(null),x(""),P(""),M(""),N(""),j(!1)},e[0]=me):me=e[0];const Z=me;let k;e[1]!==m?(k=async T=>{f(!0),h(null);try{const ge=await gt(T);h(ge),ge.kind==="ok"&&(m(ge.tables),Z())}catch(ge){const ke=ge;h({kind:"error",message:ke instanceof Error?ke.message:String(ke)})}f(!1)},e[1]=m,e[2]=k):k=e[2];const G=k;let _;e[3]!==G||e[4]!==o?(_=()=>{fe(G({kind:"addTable",table:o.trim()}))},e[3]=G,e[4]=o,e[5]=_):_=e[5];const ue=_;let D;e[6]!==p||e[7]!==G||e[8]!==v||e[9]!==S?(D=()=>{fe(G({column:p.trim(),kind:"addOptionalColumn",table:v,validator:S}))},e[6]=p,e[7]=G,e[8]=v,e[9]=S,e[10]=D):D=e[10];const oe=D;let H;e[11]!==w||e[12]!==F||e[13]!==G||e[14]!==v||e[15]!==A?(H=()=>{fe(G({fields:Nt(w),kind:"addIndex",name:F.trim(),table:v,unique:A}))},e[11]=w,e[12]=F,e[13]=G,e[14]=v,e[15]=A,e[16]=H):H=e[16];const X=H;let xe;e[17]===Symbol.for("react.memo_cache_sentinel")?(xe=()=>{h(null),d("addTable")},e[17]=xe):xe=e[17];const Y=xe;let ie;e[18]===Symbol.for("react.memo_cache_sentinel")?(ie=()=>{h(null),d("addColumn")},e[18]=ie):ie=e[18];const ve=ie;let q;e[19]===Symbol.for("react.memo_cache_sentinel")?(q=()=>{h(null),d("addIndex")},e[19]=q):q=e[19];const Q=q;let ee;e[20]!==t?(ee=()=>{d("destructive"),h({kind:"needs-migration",message:t("This edit changes stored data and must go through a migration. Review the migration before applying.")})},e[20]=t,e[21]=ee):ee=e[21];const de=ee;let R;e[22]===Symbol.for("react.memo_cache_sentinel")?(R=T=>{x(T.target.value)},e[22]=R):R=e[22];const te=R;let z;e[23]===Symbol.for("react.memo_cache_sentinel")?(z=T=>{P(T.target.value)},e[23]=z):z=e[23];const ye=z;let ce;e[24]===Symbol.for("react.memo_cache_sentinel")?(ce=T=>{L(T.target.value)},e[24]=ce):ce=e[24];const he=ce;let V;e[25]===Symbol.for("react.memo_cache_sentinel")?(V=T=>{K(T.target.value)},e[25]=V):V=e[25];const J=V;let B;e[26]===Symbol.for("react.memo_cache_sentinel")?(B=T=>{M(T.target.value)},e[26]=B):B=e[26];const le=B;let U;e[27]===Symbol.for("react.memo_cache_sentinel")?(U=T=>{N(T.target.value)},e[27]=U):U=e[27];const ae=U;let E;e[28]===Symbol.for("react.memo_cache_sentinel")?(E=T=>{j(T.target.checked)},e[28]=E):E=e[28];const ne=E;let se;e[29]!==a?(se=()=>{fe(a({to:"/migrations"}))},e[29]=a,e[30]=se):se=e[30];const b=se;let re;e[31]!==t?(re=t("Edit schema"),e[31]=t,e[32]=re):re=e[32];let W;e[33]!==re?(W=l(Ke,{children:re}),e[33]=re,e[34]=W):W=e[34];let Ne;e[35]!==t?(Ne=t("Adds a table, column, or index to lunora/schema.ts and reruns codegen."),e[35]=t,e[36]=Ne):Ne=e[36];let pe;e[37]!==Ne?(pe=l(Ge,{children:Ne}),e[37]=Ne,e[38]=pe):pe=e[38];let u;e[39]!==W||e[40]!==pe?(u=g(Le,{children:[W,pe]}),e[39]=W,e[40]=pe,e[41]=u):u=e[41];const C=n.length>0;let y;e[42]!==c||e[43]!==de||e[44]!==C?(y=l(bt,{hasTables:C,mode:c,onAddColumn:ve,onAddIndex:Q,onAddTable:Y,onDestructive:de}),e[42]=c,e[43]=de,e[44]=C,e[45]=y):y=e[45];let O;e[46]!==i||e[47]!==c||e[48]!==ue||e[49]!==t||e[50]!==o?(O=c==="addTable"&&g("div",{className:"mt-3 flex flex-wrap items-end gap-2","data-testid":"sc-editor-table-form",children:[g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-table-name",children:t("Table name")}),l(Ie,{"data-testid":"sc-editor-table-name",id:"sc-editor-table-name",onChange:te,value:o})]}),l(be,{"data-testid":"sc-editor-table-apply",disabled:i||o.trim()==="",onClick:ue,size:"xs",type:"button",children:t(i?"Applying…":"Apply")}),l(be,{onClick:Z,size:"xs",type:"button",variant:"ghost",children:t("Cancel")})]}),e[46]=i,e[47]=c,e[48]=ue,e[49]=t,e[50]=o,e[51]=O):O=e[51];let I;e[52]!==i||e[53]!==p||e[54]!==c||e[55]!==oe||e[56]!==t||e[57]!==n||e[58]!==v||e[59]!==S?(I=c==="addColumn"&&g("div",{className:"mt-3 flex flex-wrap items-end gap-2","data-testid":"sc-editor-column-form",children:[g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-column-table",children:t("Table name")}),l("select",{className:"h-8 rounded-md border border-input bg-transparent px-2 text-xs","data-testid":"sc-editor-column-table",id:"sc-editor-column-table",onChange:J,value:v,children:n.map(Tt)})]}),g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-column-name",children:t("Column name")}),l(Ie,{"data-testid":"sc-editor-column-name",id:"sc-editor-column-name",onChange:ye,value:p})]}),g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-column-type",children:t("Column type")}),l("select",{className:"h-8 rounded-md border border-input bg-transparent px-2 text-xs","data-testid":"sc-editor-column-type",id:"sc-editor-column-type",onChange:he,value:S,children:vt.map(wt)})]}),l("span",{className:"text-[11px] text-muted-foreground",children:t("Optional")}),l(be,{"data-testid":"sc-editor-column-apply",disabled:i||p.trim()===""||v==="",onClick:oe,size:"xs",type:"button",children:t(i?"Applying…":"Apply")}),l(be,{onClick:Z,size:"xs",type:"button",variant:"ghost",children:t("Cancel")})]}),e[52]=i,e[53]=p,e[54]=c,e[55]=oe,e[56]=t,e[57]=n,e[58]=v,e[59]=S,e[60]=I):I=e[60];let Te;e[61]!==i||e[62]!==w||e[63]!==F||e[64]!==c||e[65]!==X||e[66]!==t||e[67]!==n||e[68]!==v||e[69]!==A?(Te=c==="addIndex"&&g("div",{className:"mt-3 flex flex-wrap items-end gap-2","data-testid":"sc-editor-index-form",children:[g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-index-table",children:t("Table name")}),l("select",{className:"h-8 rounded-md border border-input bg-transparent px-2 text-xs","data-testid":"sc-editor-index-table",id:"sc-editor-index-table",onChange:J,value:v,children:n.map(St)})]}),g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-index-name",children:t("Index name")}),l(Ie,{"data-testid":"sc-editor-index-name",id:"sc-editor-index-name",onChange:le,value:F})]}),g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-index-fields",children:t("Index fields (comma-separated)")}),l(Ie,{"data-testid":"sc-editor-index-fields",id:"sc-editor-index-fields",onChange:ae,value:w})]}),g(_e,{className:"flex items-center gap-1 text-xs",htmlFor:"sc-editor-index-unique",children:[l("input",{checked:A,"data-testid":"sc-editor-index-unique",id:"sc-editor-index-unique",onChange:ne,type:"checkbox"}),l("span",{className:"text-muted-foreground",children:t("Unique")})]}),l(be,{"data-testid":"sc-editor-index-apply",disabled:i||F.trim()===""||w.trim()==="",onClick:X,size:"xs",type:"button",children:t(i?"Applying…":"Apply")}),l(be,{onClick:Z,size:"xs",type:"button",variant:"ghost",children:t("Cancel")})]}),e[61]=i,e[62]=w,e[63]=F,e[64]=c,e[65]=X,e[66]=t,e[67]=n,e[68]=v,e[69]=A,e[70]=Te):Te=e[70];let we;e[71]!==b||e[72]!==r?(we=l(ft,{onOpenMigrations:b,result:r}),e[71]=b,e[72]=r,e[73]=we):we=e[73];let Se;e[74]!==y||e[75]!==O||e[76]!==I||e[77]!==Te||e[78]!==we?(Se=g(Me,{children:[y,O,I,Te,we]}),e[74]=y,e[75]=O,e[76]=I,e[77]=Te,e[78]=we,e[79]=Se):Se=e[79];let $e;return e[80]!==u||e[81]!==Se?($e=g(De,{"data-testid":"sc-editor",size:"sm",children:[u,Se]}),e[80]=u,e[81]=Se,e[82]=$e):$e=e[82],$e};function Tt(s){return l("option",{value:s,children:s},s)}function wt(s){return l("option",{value:s.validator,children:s.label},s.validator)}function St(s){return l("option",{value:s,children:s},s)}const Ue=[],_t=s=>{const e=Ce(5),{open:m}=s,n=m&&"rotate-90";let t;e[0]!==n?(t=We("size-3.5 shrink-0 text-muted-foreground transition-transform duration-150",n),e[0]=n,e[1]=t):t=e[1];let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=l("path",{d:"m9 6 6 6-6 6"}),e[2]=a):a=e[2];let c;return e[3]!==t?(c=l("svg",{"aria-hidden":"true",className:t,fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.8,viewBox:"0 0 24 24",children:a}),e[3]=t,e[4]=c):c=e[4],c},Xe=s=>{const e=Ce(20),{children:m,expanded:n,name:t,onToggle:a,rowCount:c,rowTestId:d,toggleTestId:i}=s;let f;e[0]!==n?(f=l(_t,{open:n}),e[0]=n,e[1]=f):f=e[1];let r;e[2]!==t?(r=l("span",{className:"truncate font-mono text-xs text-foreground",title:t,children:t}),e[2]=t,e[3]=r):r=e[3];let h;e[4]!==c?(h=g("span",{className:"ms-auto shrink-0 text-xs text-muted-foreground tabular-nums",children:["(",c,")"]}),e[4]=c,e[5]=h):h=e[5];let o;e[6]!==n||e[7]!==a||e[8]!==f||e[9]!==r||e[10]!==h||e[11]!==i?(o=g("button",{"aria-expanded":n,className:"flex w-full items-center gap-2 px-3 py-2 text-start transition-colors hover:bg-muted/50 aria-expanded:bg-muted/40","data-testid":i,onClick:a,type:"button",children:[f,r," ",h]}),e[6]=n,e[7]=a,e[8]=f,e[9]=r,e[10]=h,e[11]=i,e[12]=o):o=e[12];let x;e[13]!==m||e[14]!==n?(x=n&&l("div",{className:"px-3 pb-3 ps-8",children:m}),e[13]=m,e[14]=n,e[15]=x):x=e[15];let p;return e[16]!==d||e[17]!==o||e[18]!==x?(p=g("li",{className:"border-t border-border/60 first:border-t-0","data-testid":d,children:[o,x]}),e[16]=d,e[17]=o,e[18]=x,e[19]=p):p=e[19],p},Ye=s=>{const e=Ce(5),{columns:m,testId:n}=s;let t;e[0]!==m?(t=m.map(kt),e[0]=m,e[1]=t):t=e[1];let a;return e[2]!==t||e[3]!==n?(a=l("ul",{className:"flex flex-wrap gap-1.5 pt-1","data-testid":n,children:t}),e[2]=t,e[3]=n,e[4]=a):a=e[4],a},$t=s=>{const e=Ce(10),{heading:m,indexes:n,testId:t}=s;let a;e[0]!==m?(a=l("p",{className:"mb-1.5 font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:m}),e[0]=m,e[1]=a):a=e[1];let c;e[2]!==n?(c=n.map(It),e[2]=n,e[3]=c):c=e[3];let d;e[4]!==c||e[5]!==t?(d=l("ul",{className:"flex flex-col gap-1","data-testid":t,children:c}),e[4]=c,e[5]=t,e[6]=d):d=e[6];let i;return e[7]!==a||e[8]!==d?(i=g("div",{className:"pt-3",children:[a,d]}),e[7]=a,e[8]=d,e[9]=i):i=e[9],i},Je=s=>We("border-b-2 px-3 py-2 font-mono text-[11px] tracking-widest uppercase outline-none transition-colors",s?"border-foreground text-foreground":"border-transparent text-muted-foreground hover:text-foreground"),Zt=s=>{const e=Ce(85),{initialShardKey:m,initialTable:n,schemaEditable:t}=s,a=je();let c;e[0]!==m||e[1]!==n?(c={initialShardKey:m,initialTable:n},e[0]=m,e[1]=n,e[2]=c):c=e[2];const{columns:d,diagramTables:i,error:f,expanded:r,filteredGlobalTables:h,filteredTables:o,globalColumns:x,globalError:p,globalExpanded:P,globalTables:S,indexes:L,refresh:v,setShardKey:K,setTableFilter:F,setView:M,shardColumnsError:w,shardKey:N,tableFilter:A,tables:j,toggle:me,toggleGlobal:Z,view:k}=ct(c);let G;e[3]!==M?(G=()=>{M("list")},e[3]=M,e[4]=G):G=e[4];const _=G;let ue;e[5]!==M?(ue=()=>{M("graph")},e[5]=M,e[6]=ue):ue=e[6];const D=ue;let oe;e[7]!==F?(oe=b=>{F(b.target.value)},e[7]=F,e[8]=oe):oe=e[8];const H=oe;let X;e[9]!==v||e[10]!==N?(X=b=>{fe(v(N))},e[9]=v,e[10]=N,e[11]=X):X=e[11];const xe=X;let Y;e[12]!==j?(Y=j??[],e[12]=j,e[13]=Y):Y=e[13];let ie;e[14]!==Y?(ie=Y.map(At),e[14]=Y,e[15]=ie):ie=e[15];const ve=ie;let q;e[16]!==K||e[17]!==N?(q=l(Ze,{onChange:K,testId:"sc-shard-input",value:N}),e[16]=K,e[17]=N,e[18]=q):q=e[18];let Q;e[19]!==a?(Q=a("Schema view"),e[19]=a,e[20]=Q):Q=e[20];const ee=k==="graph",de=k==="graph";let R;e[21]!==de?(R=Je(de),e[21]=de,e[22]=R):R=e[22];let te;e[23]!==a?(te=a("Graph"),e[23]=a,e[24]=te):te=e[24];let z;e[25]!==D||e[26]!==ee||e[27]!==R||e[28]!==te?(z=l("button",{"aria-selected":ee,className:R,"data-testid":"sc-view-graph",onClick:D,role:"tab",type:"button",children:te}),e[25]=D,e[26]=ee,e[27]=R,e[28]=te,e[29]=z):z=e[29];const ye=k==="list",ce=k==="list";let he;e[30]!==ce?(he=Je(ce),e[30]=ce,e[31]=he):he=e[31];let V;e[32]!==a?(V=a("Table list"),e[32]=a,e[33]=V):V=e[33];let J;e[34]!==_||e[35]!==ye||e[36]!==he||e[37]!==V?(J=l("button",{"aria-selected":ye,className:he,"data-testid":"sc-view-list",onClick:_,role:"tab",type:"button",children:V}),e[34]=_,e[35]=ye,e[36]=he,e[37]=V,e[38]=J):J=e[38];let B;e[39]!==z||e[40]!==J||e[41]!==Q?(B=g("div",{"aria-label":Q,className:"flex items-center gap-1","data-testid":"sc-view-toggle",role:"tablist",children:[z,J]}),e[39]=z,e[40]=J,e[41]=Q,e[42]=B):B=e[42];let le;e[43]!==B||e[44]!==q?(le=g("div",{className:"flex flex-wrap items-center gap-3",children:[q,B]}),e[43]=B,e[44]=q,e[45]=le):le=e[45];let U;e[46]!==xe||e[47]!==t||e[48]!==ve?(U=t===!0&&l(Ct,{onApplied:xe,tableNames:ve}),e[46]=xe,e[47]=t,e[48]=ve,e[49]=U):U=e[49];let ae;e[50]!==H||e[51]!==a||e[52]!==A||e[53]!==k?(ae=k==="list"&&l(Ie,{"aria-label":a("Filter tables"),className:"h-8 max-w-xs","data-testid":"sc-filter",onChange:H,placeholder:a("Filter tables"),value:A}),e[50]=H,e[51]=a,e[52]=A,e[53]=k,e[54]=ae):ae=e[54];let E;e[55]!==i||e[56]!==f||e[57]!==p||e[58]!==w||e[59]!==N||e[60]!==k?(E=k==="graph"&&g("div",{className:"flex flex-col gap-2","data-testid":"sc-graph-view",children:[f!==null&&l("p",{className:"text-sm text-destructive","data-testid":"sc-error",role:"alert",children:f}),p!==null&&l("p",{className:"text-sm text-destructive","data-testid":"sc-global-error",role:"alert",children:p}),l(at,{columnsError:w[N]===!0,tables:i,testIdPrefix:"sc-graph"})]}),e[55]=i,e[56]=f,e[57]=p,e[58]=w,e[59]=N,e[60]=k,e[61]=E):E=e[61];let ne;e[62]!==d||e[63]!==f||e[64]!==r||e[65]!==h||e[66]!==o||e[67]!==x||e[68]!==p||e[69]!==P||e[70]!==S||e[71]!==L||e[72]!==N||e[73]!==a||e[74]!==j||e[75]!==me||e[76]!==Z||e[77]!==k?(ne=k==="list"&&g("div",{className:"flex flex-col gap-4",children:[g(De,{"data-testid":"sc-shard-section",size:"sm",children:[g(Le,{children:[g("div",{className:"flex items-center gap-2",children:[l(Re,{tier:"shard"}),l(Ke,{children:a("Shard tables")}),j!==null&&l(Fe,{className:"ms-auto tabular-nums",variant:"outline",children:o.length})]}),l(Ge,{children:Oe.shard.hint})]}),g(Me,{children:[f!==null&&l("p",{className:"text-sm text-destructive","data-testid":"sc-error",role:"alert",children:f}),j!==null&&j.length===0&&l("p",{className:"text-sm text-muted-foreground","data-testid":"sc-empty",children:a("No tables in this shard.")}),j!==null&&j.length>0&&o.length===0&&l("p",{className:"text-sm text-muted-foreground","data-testid":"sc-no-match",children:a("No tables match your filter.")}),o.length>0&&l("ul",{className:"-mx-3 overflow-hidden border-t border-border","data-testid":"sc-table-list",children:o.map(b=>{const re=`${N}:${b.name}`,W=L[re]??[];return g(Xe,{expanded:r===b.name,name:b.name,onToggle:()=>{fe(me(b.name))},rowCount:b.rowCount,rowTestId:`sc-table-${b.name}`,toggleTestId:`sc-toggle-${b.name}`,children:[l(Ye,{columns:d[re]??Ue,testId:`sc-columns-${b.name}`}),W.length>0&&l($t,{heading:a("Indexes"),indexes:W,testId:`sc-indexes-${b.name}`})]},b.name)})})]})]}),g(De,{"data-testid":"sc-global-section",size:"sm",children:[g(Le,{children:[g("div",{className:"flex items-center gap-2",children:[l(Re,{tier:"global"}),l(Ke,{children:a("Global tables (D1)")}),S!==null&&l(Fe,{className:"ms-auto tabular-nums",variant:"outline",children:h.length})]}),l(Ge,{children:Oe.global.hint})]}),g(Me,{children:[p!==null&&l("p",{className:"text-sm text-destructive","data-testid":"sc-global-error",role:"alert",children:p}),S!==null&&S.length===0&&l(He,{description:Oe.global.hint,testId:"sc-global-empty",title:a("No global tables.")}),S!==null&&S.length>0&&h.length===0&&l("p",{className:"text-sm text-muted-foreground","data-testid":"sc-global-no-match",children:a("No tables match your filter.")}),h.length>0&&l("ul",{className:"-mx-3 overflow-hidden border-t border-border","data-testid":"sc-global-table-list",children:h.map(b=>l(Xe,{expanded:P===b.name,name:b.name,onToggle:()=>{fe(Z(b.name))},rowCount:b.rowCount,rowTestId:`sc-global-table-${b.name}`,toggleTestId:`sc-global-toggle-${b.name}`,children:l(Ye,{columns:x[b.name]??Ue,testId:`sc-global-columns-${b.name}`})},b.name))})]})]})]}),e[62]=d,e[63]=f,e[64]=r,e[65]=h,e[66]=o,e[67]=x,e[68]=p,e[69]=P,e[70]=S,e[71]=L,e[72]=N,e[73]=a,e[74]=j,e[75]=me,e[76]=Z,e[77]=k,e[78]=ne):ne=e[78];let se;return e[79]!==le||e[80]!==U||e[81]!==ae||e[82]!==E||e[83]!==ne?(se=g("div",{className:"flex flex-col gap-4","data-testid":"lunora-schema",children:[le,U,ae,E,ne]}),e[79]=le,e[80]=U,e[81]=ae,e[82]=E,e[83]=ne,e[84]=se):se=e[84],se};function kt(s){return l("li",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-[11px] text-muted-foreground",children:s},s)}function It(s){return g("li",{className:"flex flex-wrap items-center gap-1.5 text-xs",children:[l("span",{className:"font-mono",children:s.name}),l(Fe,{variant:"outline",children:s.type}),s.unique===!0&&l(Fe,{variant:"secondary",children:"unique"}),l("span",{className:"text-muted-foreground",children:s.fields.join(", ")})]},`${s.type}:${s.name}`)}function At(s){return s.name}export{Zt as SchemaViewer};
|
|
1
|
+
import{c as Ce}from"react/compiler-runtime";import{ShardInput as Ze}from"../packem_shared/ShardInput-BVn2iCU0.js";import{g as Re,d as Oe}from"../packem_shared/storage-tier-DznqOf-q.js";import{g as Fe}from"../packem_shared/badge-BbuuAio7.js";import{f as Ke,m as Ge,n as Le,u as Me,c as De}from"../packem_shared/card-CIDGUN6K.js";import{E as He}from"../packem_shared/empty-state-Cg7t_8qu.js";import{u as Ie}from"../packem_shared/input-JHu63lTv.js";import{useT as je}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{d as Ae,b as Ee,f as fe,g as qe}from"../packem_shared/internal-zkEvTqy8.js";import{c as We}from"../packem_shared/utils-bhneXptQ.js";import{useLunora as Qe}from"@lunora/react";import{useState as $,useEffect as Pe,useRef as et}from"react";import{S as tt}from"../packem_shared/use-shard-key-B2JtNa5m.js";import{ADMIN_FUNCTIONS as ze}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{r as lt}from"../packem_shared/shard-history-DMEW5VBE.js";import{S as at}from"../packem_shared/schema-diagram-DTRaCp6Y.js";import{useNavigate as nt}from"@tanstack/react-router";import{u as be}from"../packem_shared/button-BkCrNcAs.js";import{p as _e}from"../packem_shared/label-6uP1obNF.js";import{jsx as l,jsxs as g,Fragment as Ve}from"react/jsx-runtime";const st=qe(ze.listTables),rt=qe(ze.listTableIndexes),ot=qe(ze.readTablePage),it=qe(ze.describeTables),dt={},Be=[],ct=s=>{const e=Ce(74),{initialShardKey:m,initialTable:n}=s,t=Qe(),[a,c]=$("graph"),{queryShardKey:d,setShardKey:i,shardKey:f}=tt(m),[r,h]=$(""),[o,x]=$(null),[p,P]=$(null);let S;e[0]===Symbol.for("react.memo_cache_sentinel")?(S={},e[0]=S):S=e[0];const[L,v]=$(S);let K;e[1]===Symbol.for("react.memo_cache_sentinel")?(K={},e[1]=K):K=e[1];const[F,M]=$(K),[w,N]=$(null);let A;e[2]===Symbol.for("react.memo_cache_sentinel")?(A={},e[2]=A):A=e[2];const[j,me]=$(A);let Z;e[3]===Symbol.for("react.memo_cache_sentinel")?(Z={},e[3]=Z):Z=e[3];const[k,G]=$(Z),[_,ue]=$(null),[D,oe]=$(null);let H;e[4]===Symbol.for("react.memo_cache_sentinel")?(H={},e[4]=H):H=e[4];const[X,xe]=$(H),[Y,ie]=$(null);let ve;e[5]!==t?(ve=async u=>{P(null);try{const C=await t.query(st,{},Ae(u));lt(u),x(C),v({}),M({}),N(null),me(y=>Object.fromEntries(Object.entries(y).filter(O=>{const[I]=O;return I!==u}))),G(y=>Object.fromEntries(Object.entries(y).filter(O=>{const[I]=O;return I!==u})))}catch(C){const y=C;x(null),P(Ee(y))}},e[5]=t,e[6]=ve):ve=e[6];const q=ve;let Q;e[7]!==t?(Q=async()=>{oe(null);try{ue(await t.listGlobalTables())}catch(u){const C=u;ue(null),oe(Ee(C))}},e[7]=t,e[8]=Q):Q=e[8];const ee=Q;let de,R;e[9]!==d||e[10]!==q||e[11]!==ee?(de=()=>{fe(q(d)),fe(ee())},R=[q,ee,d],e[9]=d,e[10]=q,e[11]=ee,e[12]=de,e[13]=R):(de=e[12],R=e[13]),Pe(de,R);let te;e[14]!==t||e[15]!==L||e[16]!==w||e[17]!==d?(te=async u=>{if(w===u){N(null);return}N(u);const C=`${d}:${u}`;if(L[C]!==void 0)return;const[y,O]=await Promise.allSettled([t.query(ot,{limit:1,offset:0,table:u},Ae(d)),t.query(rt,{table:u},Ae(d))]);y.status==="fulfilled"?v(I=>({...I,[C]:y.value.columns})):P(Ee(y.reason)),O.status==="fulfilled"&&M(I=>({...I,[C]:O.value.indexes}))},e[14]=t,e[15]=L,e[16]=w,e[17]=d,e[18]=te):te=e[18];const z=te;let ye;e[19]!==t||e[20]!==X||e[21]!==Y?(ye=async u=>{if(Y===u){ie(null);return}if(ie(u),X[u]===void 0)try{const C=await t.readGlobalTablePage({limit:1,offset:0,table:u});xe(y=>({...y,[u]:C.columns}))}catch(C){oe(Ee(C))}},e[19]=t,e[20]=X,e[21]=Y,e[22]=ye):ye=e[22];const ce=ye,he=et(void 0);let V,J;e[23]!==n||e[24]!==o||e[25]!==z?(V=()=>{n===void 0||o===null||he.current===n||o.some(u=>u.name===n)&&(he.current=n,fe(z(n)))},J=[n,o,z],e[23]=n,e[24]=o,e[25]=z,e[26]=V,e[27]=J):(V=e[26],J=e[27]),Pe(V,J);let B;e[28]!==t?(B=async(u,C,y)=>{const[O,I]=await Promise.all([Promise.allSettled([t.query(it,{tables:[...C,...y]},Ae(u))]),Promise.all(y.map(async T=>{const ge=await Promise.allSettled([t.readGlobalTablePage({limit:1,offset:0,table:T})]),ke=ge[0].status==="fulfilled"?ge[0].value:void 0;return{columns:ke?.columns??[],refs:ke?.refs??{},table:T}}))]),Te=O[0].status==="fulfilled"?O[0].value?.columnsByTable??{}:{},we=O[0].status==="rejected",Se=new Map(I.map(mt)),$e=[...C,...y].map(T=>{const ge=Te[T]??[];return[T,ge.length>0?ge:Se.get(T)??[]]});me(T=>({...T,[u]:Object.fromEntries($e)})),G(T=>({...T,[u]:we}))},e[28]=t,e[29]=B):B=e[29];const le=B;let U,ae;e[30]!==D||e[31]!==_||e[32]!==le||e[33]!==d||e[34]!==j||e[35]!==o||e[36]!==a?(U=()=>{a!=="graph"||o===null||_===null&&D===null||j[d]!==void 0||fe(le(d,o.map(ut),(_??[]).map(ht)))},ae=[a,o,_,D,d,j,le],e[30]=D,e[31]=_,e[32]=le,e[33]=d,e[34]=j,e[35]=o,e[36]=a,e[37]=U,e[38]=ae):(U=e[37],ae=e[38]),Pe(U,ae);const E=j[d]??dt;let ne;if(e[39]!==E||e[40]!==_||e[41]!==o){let u;e[43]!==E?(u=I=>({columns:E[I.name]??Be,name:I.name,tier:"shard"}),e[43]=E,e[44]=u):u=e[44];const C=(o??[]).map(u);let y;e[45]!==E?(y=I=>({columns:E[I.name]??Be,name:I.name,tier:"global"}),e[45]=E,e[46]=y):y=e[46];const O=(_??[]).map(y);ne=[...C,...O],e[39]=E,e[40]=_,e[41]=o,e[42]=ne}else ne=e[42];const se=ne;let b;if(e[47]!==r||e[48]!==o){const u=r.trim().toLowerCase();b=(o??[]).filter(C=>C.name.toLowerCase().includes(u)),e[47]=r,e[48]=o,e[49]=b}else b=e[49];const re=b;let W;if(e[50]!==_||e[51]!==r){const u=r.trim().toLowerCase();W=(_??[]).filter(C=>C.name.toLowerCase().includes(u)),e[50]=_,e[51]=r,e[52]=W}else W=e[52];const Ne=W;let pe;return e[53]!==L||e[54]!==se||e[55]!==p||e[56]!==w||e[57]!==Ne||e[58]!==re||e[59]!==X||e[60]!==D||e[61]!==Y||e[62]!==_||e[63]!==F||e[64]!==q||e[65]!==i||e[66]!==k||e[67]!==f||e[68]!==r||e[69]!==o||e[70]!==z||e[71]!==ce||e[72]!==a?(pe={columns:L,diagramTables:se,error:p,expanded:w,filteredGlobalTables:Ne,filteredTables:re,globalColumns:X,globalError:D,globalExpanded:Y,globalTables:_,indexes:F,refresh:q,setShardKey:i,setTableFilter:h,setView:c,shardColumnsError:k,shardKey:f,tableFilter:r,tables:o,toggle:z,toggleGlobal:ce,view:a},e[53]=L,e[54]=se,e[55]=p,e[56]=w,e[57]=Ne,e[58]=re,e[59]=X,e[60]=D,e[61]=Y,e[62]=_,e[63]=F,e[64]=q,e[65]=i,e[66]=k,e[67]=f,e[68]=r,e[69]=o,e[70]=z,e[71]=ce,e[72]=a,e[73]=pe):pe=e[73],pe};function mt(s){const{columns:e,refs:m,table:n}=s;return[n,e.map(t=>{const a=m[t];return a===void 0?{name:t,optional:!1,type:""}:{name:t,optional:!1,ref:a,type:"id"}})]}function ut(s){return s.name}function ht(s){return s.name}const pt="/__lunora/schema-edit",gt=async s=>{const e=await fetch(pt,{body:JSON.stringify(s),headers:{"Content-Type":"application/json","X-Lunora-Studio":"1"},method:"POST"}),m=await e.json();return m.needsMigration===!0?{kind:"needs-migration",message:m.message??"This edit needs a migration."}:e.ok&&m.tables!==void 0?{diagnostics:m.diagnostics??[],kind:"ok",tables:m.tables}:{kind:"error",message:m.error??`schema edit failed (${String(e.status)})`}},bt=s=>{const e=Ce(32),{hasTables:m,mode:n,onAddColumn:t,onAddIndex:a,onAddTable:c,onDestructive:d}=s,i=je(),f=n==="addTable"?"default":"outline";let r;e[0]!==i?(r=i("Add table"),e[0]=i,e[1]=r):r=e[1];let h;e[2]!==c||e[3]!==f||e[4]!==r?(h=l(be,{"data-testid":"sc-editor-add-table",onClick:c,size:"xs",type:"button",variant:f,children:r}),e[2]=c,e[3]=f,e[4]=r,e[5]=h):h=e[5];const o=!m,x=n==="addColumn"?"default":"outline";let p;e[6]!==i?(p=i("Add column"),e[6]=i,e[7]=p):p=e[7];let P;e[8]!==t||e[9]!==o||e[10]!==x||e[11]!==p?(P=l(be,{"data-testid":"sc-editor-add-column",disabled:o,onClick:t,size:"xs",type:"button",variant:x,children:p}),e[8]=t,e[9]=o,e[10]=x,e[11]=p,e[12]=P):P=e[12];const S=!m,L=n==="addIndex"?"default":"outline";let v;e[13]!==i?(v=i("Add index"),e[13]=i,e[14]=v):v=e[14];let K;e[15]!==a||e[16]!==v||e[17]!==S||e[18]!==L?(K=l(be,{"data-testid":"sc-editor-add-index",disabled:S,onClick:a,size:"xs",type:"button",variant:L,children:v}),e[15]=a,e[16]=v,e[17]=S,e[18]=L,e[19]=K):K=e[19];const F=!m,M=n==="destructive"?"default":"ghost";let w;e[20]!==i?(w=i("Rename / drop / change type…"),e[20]=i,e[21]=w):w=e[21];let N;e[22]!==d||e[23]!==F||e[24]!==M||e[25]!==w?(N=l(be,{"data-testid":"sc-editor-destructive",disabled:F,onClick:d,size:"xs",type:"button",variant:M,children:w}),e[22]=d,e[23]=F,e[24]=M,e[25]=w,e[26]=N):N=e[26];let A;return e[27]!==K||e[28]!==N||e[29]!==h||e[30]!==P?(A=g("div",{className:"flex flex-wrap gap-2",children:[h,P,K,N]}),e[27]=K,e[28]=N,e[29]=h,e[30]=P,e[31]=A):A=e[31],A},ft=s=>{const e=Ce(28),{onOpenMigrations:m,result:n}=s,t=je();if(n===null){let r;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=l(Ve,{}),e[0]=r):r=e[0],r}if(n.kind==="error"){let r;return e[1]!==n.message?(r=l("p",{className:"mt-3 text-sm text-destructive","data-testid":"sc-editor-error",role:"alert",children:n.message}),e[1]=n.message,e[2]=r):r=e[2],r}if(n.kind==="needs-migration"){let r;e[3]!==n.message||e[4]!==t?(r=n.message===""?t("This edit changes stored data and must go through a migration. Review the migration before applying."):n.message,e[3]=n.message,e[4]=t,e[5]=r):r=e[5];let h;e[6]!==r?(h=l("p",{className:"text-sm text-warning",role:"alert",children:r}),e[6]=r,e[7]=h):h=e[7];let o;e[8]!==t?(o=t("Open Migrations"),e[8]=t,e[9]=o):o=e[9];let x;e[10]!==m||e[11]!==o?(x=l(be,{className:"self-start","data-testid":"sc-editor-open-migrations",onClick:m,size:"xs",type:"button",variant:"outline",children:o}),e[10]=m,e[11]=o,e[12]=x):x=e[12];let p;return e[13]!==h||e[14]!==x?(p=g("div",{className:"mt-3 flex flex-col gap-2","data-testid":"sc-editor-needs-migration",children:[h,x]}),e[13]=h,e[14]=x,e[15]=p):p=e[15],p}if(n.diagnostics.length===0){let r;return e[16]===Symbol.for("react.memo_cache_sentinel")?(r=l(Ve,{}),e[16]=r):r=e[16],r}let a;e[17]!==t?(a=t("Codegen reported diagnostics:"),e[17]=t,e[18]=a):a=e[18];let c;e[19]!==a?(c=l("p",{className:"text-sm text-destructive",role:"alert",children:a}),e[19]=a,e[20]=c):c=e[20];let d;e[21]!==n.diagnostics?(d=n.diagnostics.map(xt),e[21]=n.diagnostics,e[22]=d):d=e[22];let i;e[23]!==d?(i=l("ul",{className:"flex flex-col gap-0.5",children:d}),e[23]=d,e[24]=i):i=e[24];let f;return e[25]!==c||e[26]!==i?(f=g("div",{className:"mt-3 flex flex-col gap-1","data-testid":"sc-editor-diagnostics",children:[c,i]}),e[25]=c,e[26]=i,e[27]=f):f=e[27],f};function xt(s){return l("li",{className:"font-mono text-[11px] text-destructive",children:s},s)}const vt=[{label:"string",validator:"v.string()"},{label:"number",validator:"v.number()"},{label:"boolean",validator:"v.boolean()"},{label:"bigint",validator:"v.int64()"},{label:"bytes",validator:"v.bytes()"},{label:"any",validator:"v.any()"}],yt="v.string()",Nt=s=>s.split(",").map(e=>e.trim()).filter(e=>e!==""),Ct=s=>{const e=Ce(83),{onApplied:m,tableNames:n}=s,t=je(),a=nt(),[c,d]=$(null),[i,f]=$(!1),[r,h]=$(null),[o,x]=$(""),[p,P]=$(""),[S,L]=$(yt),[v,K]=$(n[0]??""),[F,M]=$(""),[w,N]=$(""),[A,j]=$(!1);let me;e[0]===Symbol.for("react.memo_cache_sentinel")?(me=()=>{d(null),x(""),P(""),M(""),N(""),j(!1)},e[0]=me):me=e[0];const Z=me;let k;e[1]!==m?(k=async T=>{f(!0),h(null);try{const ge=await gt(T);h(ge),ge.kind==="ok"&&(m(ge.tables),Z())}catch(ge){const ke=ge;h({kind:"error",message:ke instanceof Error?ke.message:String(ke)})}f(!1)},e[1]=m,e[2]=k):k=e[2];const G=k;let _;e[3]!==G||e[4]!==o?(_=()=>{fe(G({kind:"addTable",table:o.trim()}))},e[3]=G,e[4]=o,e[5]=_):_=e[5];const ue=_;let D;e[6]!==p||e[7]!==G||e[8]!==v||e[9]!==S?(D=()=>{fe(G({column:p.trim(),kind:"addOptionalColumn",table:v,validator:S}))},e[6]=p,e[7]=G,e[8]=v,e[9]=S,e[10]=D):D=e[10];const oe=D;let H;e[11]!==w||e[12]!==F||e[13]!==G||e[14]!==v||e[15]!==A?(H=()=>{fe(G({fields:Nt(w),kind:"addIndex",name:F.trim(),table:v,unique:A}))},e[11]=w,e[12]=F,e[13]=G,e[14]=v,e[15]=A,e[16]=H):H=e[16];const X=H;let xe;e[17]===Symbol.for("react.memo_cache_sentinel")?(xe=()=>{h(null),d("addTable")},e[17]=xe):xe=e[17];const Y=xe;let ie;e[18]===Symbol.for("react.memo_cache_sentinel")?(ie=()=>{h(null),d("addColumn")},e[18]=ie):ie=e[18];const ve=ie;let q;e[19]===Symbol.for("react.memo_cache_sentinel")?(q=()=>{h(null),d("addIndex")},e[19]=q):q=e[19];const Q=q;let ee;e[20]!==t?(ee=()=>{d("destructive"),h({kind:"needs-migration",message:t("This edit changes stored data and must go through a migration. Review the migration before applying.")})},e[20]=t,e[21]=ee):ee=e[21];const de=ee;let R;e[22]===Symbol.for("react.memo_cache_sentinel")?(R=T=>{x(T.target.value)},e[22]=R):R=e[22];const te=R;let z;e[23]===Symbol.for("react.memo_cache_sentinel")?(z=T=>{P(T.target.value)},e[23]=z):z=e[23];const ye=z;let ce;e[24]===Symbol.for("react.memo_cache_sentinel")?(ce=T=>{L(T.target.value)},e[24]=ce):ce=e[24];const he=ce;let V;e[25]===Symbol.for("react.memo_cache_sentinel")?(V=T=>{K(T.target.value)},e[25]=V):V=e[25];const J=V;let B;e[26]===Symbol.for("react.memo_cache_sentinel")?(B=T=>{M(T.target.value)},e[26]=B):B=e[26];const le=B;let U;e[27]===Symbol.for("react.memo_cache_sentinel")?(U=T=>{N(T.target.value)},e[27]=U):U=e[27];const ae=U;let E;e[28]===Symbol.for("react.memo_cache_sentinel")?(E=T=>{j(T.target.checked)},e[28]=E):E=e[28];const ne=E;let se;e[29]!==a?(se=()=>{fe(a({to:"/migrations"}))},e[29]=a,e[30]=se):se=e[30];const b=se;let re;e[31]!==t?(re=t("Edit schema"),e[31]=t,e[32]=re):re=e[32];let W;e[33]!==re?(W=l(Ke,{children:re}),e[33]=re,e[34]=W):W=e[34];let Ne;e[35]!==t?(Ne=t("Adds a table, column, or index to lunora/schema.ts and reruns codegen."),e[35]=t,e[36]=Ne):Ne=e[36];let pe;e[37]!==Ne?(pe=l(Ge,{children:Ne}),e[37]=Ne,e[38]=pe):pe=e[38];let u;e[39]!==W||e[40]!==pe?(u=g(Le,{children:[W,pe]}),e[39]=W,e[40]=pe,e[41]=u):u=e[41];const C=n.length>0;let y;e[42]!==c||e[43]!==de||e[44]!==C?(y=l(bt,{hasTables:C,mode:c,onAddColumn:ve,onAddIndex:Q,onAddTable:Y,onDestructive:de}),e[42]=c,e[43]=de,e[44]=C,e[45]=y):y=e[45];let O;e[46]!==i||e[47]!==c||e[48]!==ue||e[49]!==t||e[50]!==o?(O=c==="addTable"&&g("div",{className:"mt-3 flex flex-wrap items-end gap-2","data-testid":"sc-editor-table-form",children:[g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-table-name",children:t("Table name")}),l(Ie,{"data-testid":"sc-editor-table-name",id:"sc-editor-table-name",onChange:te,value:o})]}),l(be,{"data-testid":"sc-editor-table-apply",disabled:i||o.trim()==="",onClick:ue,size:"xs",type:"button",children:t(i?"Applying…":"Apply")}),l(be,{onClick:Z,size:"xs",type:"button",variant:"ghost",children:t("Cancel")})]}),e[46]=i,e[47]=c,e[48]=ue,e[49]=t,e[50]=o,e[51]=O):O=e[51];let I;e[52]!==i||e[53]!==p||e[54]!==c||e[55]!==oe||e[56]!==t||e[57]!==n||e[58]!==v||e[59]!==S?(I=c==="addColumn"&&g("div",{className:"mt-3 flex flex-wrap items-end gap-2","data-testid":"sc-editor-column-form",children:[g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-column-table",children:t("Table name")}),l("select",{className:"h-8 rounded-md border border-input bg-transparent px-2 text-xs","data-testid":"sc-editor-column-table",id:"sc-editor-column-table",onChange:J,value:v,children:n.map(Tt)})]}),g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-column-name",children:t("Column name")}),l(Ie,{"data-testid":"sc-editor-column-name",id:"sc-editor-column-name",onChange:ye,value:p})]}),g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-column-type",children:t("Column type")}),l("select",{className:"h-8 rounded-md border border-input bg-transparent px-2 text-xs","data-testid":"sc-editor-column-type",id:"sc-editor-column-type",onChange:he,value:S,children:vt.map(wt)})]}),l("span",{className:"text-[11px] text-muted-foreground",children:t("Optional")}),l(be,{"data-testid":"sc-editor-column-apply",disabled:i||p.trim()===""||v==="",onClick:oe,size:"xs",type:"button",children:t(i?"Applying…":"Apply")}),l(be,{onClick:Z,size:"xs",type:"button",variant:"ghost",children:t("Cancel")})]}),e[52]=i,e[53]=p,e[54]=c,e[55]=oe,e[56]=t,e[57]=n,e[58]=v,e[59]=S,e[60]=I):I=e[60];let Te;e[61]!==i||e[62]!==w||e[63]!==F||e[64]!==c||e[65]!==X||e[66]!==t||e[67]!==n||e[68]!==v||e[69]!==A?(Te=c==="addIndex"&&g("div",{className:"mt-3 flex flex-wrap items-end gap-2","data-testid":"sc-editor-index-form",children:[g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-index-table",children:t("Table name")}),l("select",{className:"h-8 rounded-md border border-input bg-transparent px-2 text-xs","data-testid":"sc-editor-index-table",id:"sc-editor-index-table",onChange:J,value:v,children:n.map(St)})]}),g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-index-name",children:t("Index name")}),l(Ie,{"data-testid":"sc-editor-index-name",id:"sc-editor-index-name",onChange:le,value:F})]}),g("div",{className:"flex flex-col gap-1 text-xs",children:[l(_e,{htmlFor:"sc-editor-index-fields",children:t("Index fields (comma-separated)")}),l(Ie,{"data-testid":"sc-editor-index-fields",id:"sc-editor-index-fields",onChange:ae,value:w})]}),g(_e,{className:"flex items-center gap-1 text-xs",htmlFor:"sc-editor-index-unique",children:[l("input",{checked:A,"data-testid":"sc-editor-index-unique",id:"sc-editor-index-unique",onChange:ne,type:"checkbox"}),l("span",{className:"text-muted-foreground",children:t("Unique")})]}),l(be,{"data-testid":"sc-editor-index-apply",disabled:i||F.trim()===""||w.trim()==="",onClick:X,size:"xs",type:"button",children:t(i?"Applying…":"Apply")}),l(be,{onClick:Z,size:"xs",type:"button",variant:"ghost",children:t("Cancel")})]}),e[61]=i,e[62]=w,e[63]=F,e[64]=c,e[65]=X,e[66]=t,e[67]=n,e[68]=v,e[69]=A,e[70]=Te):Te=e[70];let we;e[71]!==b||e[72]!==r?(we=l(ft,{onOpenMigrations:b,result:r}),e[71]=b,e[72]=r,e[73]=we):we=e[73];let Se;e[74]!==y||e[75]!==O||e[76]!==I||e[77]!==Te||e[78]!==we?(Se=g(Me,{children:[y,O,I,Te,we]}),e[74]=y,e[75]=O,e[76]=I,e[77]=Te,e[78]=we,e[79]=Se):Se=e[79];let $e;return e[80]!==u||e[81]!==Se?($e=g(De,{"data-testid":"sc-editor",size:"sm",children:[u,Se]}),e[80]=u,e[81]=Se,e[82]=$e):$e=e[82],$e};function Tt(s){return l("option",{value:s,children:s},s)}function wt(s){return l("option",{value:s.validator,children:s.label},s.validator)}function St(s){return l("option",{value:s,children:s},s)}const Ue=[],_t=s=>{const e=Ce(5),{open:m}=s,n=m&&"rotate-90";let t;e[0]!==n?(t=We("size-3.5 shrink-0 text-muted-foreground transition-transform duration-150",n),e[0]=n,e[1]=t):t=e[1];let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=l("path",{d:"m9 6 6 6-6 6"}),e[2]=a):a=e[2];let c;return e[3]!==t?(c=l("svg",{"aria-hidden":"true",className:t,fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.8,viewBox:"0 0 24 24",children:a}),e[3]=t,e[4]=c):c=e[4],c},Xe=s=>{const e=Ce(20),{children:m,expanded:n,name:t,onToggle:a,rowCount:c,rowTestId:d,toggleTestId:i}=s;let f;e[0]!==n?(f=l(_t,{open:n}),e[0]=n,e[1]=f):f=e[1];let r;e[2]!==t?(r=l("span",{className:"truncate font-mono text-xs text-foreground",title:t,children:t}),e[2]=t,e[3]=r):r=e[3];let h;e[4]!==c?(h=g("span",{className:"ms-auto shrink-0 text-xs text-muted-foreground tabular-nums",children:["(",c,")"]}),e[4]=c,e[5]=h):h=e[5];let o;e[6]!==n||e[7]!==a||e[8]!==f||e[9]!==r||e[10]!==h||e[11]!==i?(o=g("button",{"aria-expanded":n,className:"flex w-full items-center gap-2 px-3 py-2 text-start transition-colors hover:bg-muted/50 aria-expanded:bg-muted/40","data-testid":i,onClick:a,type:"button",children:[f,r," ",h]}),e[6]=n,e[7]=a,e[8]=f,e[9]=r,e[10]=h,e[11]=i,e[12]=o):o=e[12];let x;e[13]!==m||e[14]!==n?(x=n&&l("div",{className:"px-3 pb-3 ps-8",children:m}),e[13]=m,e[14]=n,e[15]=x):x=e[15];let p;return e[16]!==d||e[17]!==o||e[18]!==x?(p=g("li",{className:"border-t border-border/60 first:border-t-0","data-testid":d,children:[o,x]}),e[16]=d,e[17]=o,e[18]=x,e[19]=p):p=e[19],p},Ye=s=>{const e=Ce(5),{columns:m,testId:n}=s;let t;e[0]!==m?(t=m.map(kt),e[0]=m,e[1]=t):t=e[1];let a;return e[2]!==t||e[3]!==n?(a=l("ul",{className:"flex flex-wrap gap-1.5 pt-1","data-testid":n,children:t}),e[2]=t,e[3]=n,e[4]=a):a=e[4],a},$t=s=>{const e=Ce(10),{heading:m,indexes:n,testId:t}=s;let a;e[0]!==m?(a=l("p",{className:"mb-1.5 font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:m}),e[0]=m,e[1]=a):a=e[1];let c;e[2]!==n?(c=n.map(It),e[2]=n,e[3]=c):c=e[3];let d;e[4]!==c||e[5]!==t?(d=l("ul",{className:"flex flex-col gap-1","data-testid":t,children:c}),e[4]=c,e[5]=t,e[6]=d):d=e[6];let i;return e[7]!==a||e[8]!==d?(i=g("div",{className:"pt-3",children:[a,d]}),e[7]=a,e[8]=d,e[9]=i):i=e[9],i},Je=s=>We("border-b-2 px-3 py-2 font-mono text-[11px] tracking-widest uppercase outline-none transition-colors",s?"border-foreground text-foreground":"border-transparent text-muted-foreground hover:text-foreground"),Zt=s=>{const e=Ce(85),{initialShardKey:m,initialTable:n,schemaEditable:t}=s,a=je();let c;e[0]!==m||e[1]!==n?(c={initialShardKey:m,initialTable:n},e[0]=m,e[1]=n,e[2]=c):c=e[2];const{columns:d,diagramTables:i,error:f,expanded:r,filteredGlobalTables:h,filteredTables:o,globalColumns:x,globalError:p,globalExpanded:P,globalTables:S,indexes:L,refresh:v,setShardKey:K,setTableFilter:F,setView:M,shardColumnsError:w,shardKey:N,tableFilter:A,tables:j,toggle:me,toggleGlobal:Z,view:k}=ct(c);let G;e[3]!==M?(G=()=>{M("list")},e[3]=M,e[4]=G):G=e[4];const _=G;let ue;e[5]!==M?(ue=()=>{M("graph")},e[5]=M,e[6]=ue):ue=e[6];const D=ue;let oe;e[7]!==F?(oe=b=>{F(b.target.value)},e[7]=F,e[8]=oe):oe=e[8];const H=oe;let X;e[9]!==v||e[10]!==N?(X=b=>{fe(v(N))},e[9]=v,e[10]=N,e[11]=X):X=e[11];const xe=X;let Y;e[12]!==j?(Y=j??[],e[12]=j,e[13]=Y):Y=e[13];let ie;e[14]!==Y?(ie=Y.map(At),e[14]=Y,e[15]=ie):ie=e[15];const ve=ie;let q;e[16]!==K||e[17]!==N?(q=l(Ze,{onChange:K,testId:"sc-shard-input",value:N}),e[16]=K,e[17]=N,e[18]=q):q=e[18];let Q;e[19]!==a?(Q=a("Schema view"),e[19]=a,e[20]=Q):Q=e[20];const ee=k==="graph",de=k==="graph";let R;e[21]!==de?(R=Je(de),e[21]=de,e[22]=R):R=e[22];let te;e[23]!==a?(te=a("Graph"),e[23]=a,e[24]=te):te=e[24];let z;e[25]!==D||e[26]!==ee||e[27]!==R||e[28]!==te?(z=l("button",{"aria-selected":ee,className:R,"data-testid":"sc-view-graph",onClick:D,role:"tab",type:"button",children:te}),e[25]=D,e[26]=ee,e[27]=R,e[28]=te,e[29]=z):z=e[29];const ye=k==="list",ce=k==="list";let he;e[30]!==ce?(he=Je(ce),e[30]=ce,e[31]=he):he=e[31];let V;e[32]!==a?(V=a("Table list"),e[32]=a,e[33]=V):V=e[33];let J;e[34]!==_||e[35]!==ye||e[36]!==he||e[37]!==V?(J=l("button",{"aria-selected":ye,className:he,"data-testid":"sc-view-list",onClick:_,role:"tab",type:"button",children:V}),e[34]=_,e[35]=ye,e[36]=he,e[37]=V,e[38]=J):J=e[38];let B;e[39]!==z||e[40]!==J||e[41]!==Q?(B=g("div",{"aria-label":Q,className:"flex items-center gap-1","data-testid":"sc-view-toggle",role:"tablist",children:[z,J]}),e[39]=z,e[40]=J,e[41]=Q,e[42]=B):B=e[42];let le;e[43]!==B||e[44]!==q?(le=g("div",{className:"flex flex-wrap items-center gap-3",children:[q,B]}),e[43]=B,e[44]=q,e[45]=le):le=e[45];let U;e[46]!==xe||e[47]!==t||e[48]!==ve?(U=t===!0&&l(Ct,{onApplied:xe,tableNames:ve}),e[46]=xe,e[47]=t,e[48]=ve,e[49]=U):U=e[49];let ae;e[50]!==H||e[51]!==a||e[52]!==A||e[53]!==k?(ae=k==="list"&&l(Ie,{"aria-label":a("Filter tables"),className:"h-8 max-w-xs","data-testid":"sc-filter",onChange:H,placeholder:a("Filter tables"),value:A}),e[50]=H,e[51]=a,e[52]=A,e[53]=k,e[54]=ae):ae=e[54];let E;e[55]!==i||e[56]!==f||e[57]!==p||e[58]!==w||e[59]!==N||e[60]!==k?(E=k==="graph"&&g("div",{className:"flex flex-col gap-2","data-testid":"sc-graph-view",children:[f!==null&&l("p",{className:"text-sm text-destructive","data-testid":"sc-error",role:"alert",children:f}),p!==null&&l("p",{className:"text-sm text-destructive","data-testid":"sc-global-error",role:"alert",children:p}),l(at,{columnsError:w[N]===!0,tables:i,testIdPrefix:"sc-graph"})]}),e[55]=i,e[56]=f,e[57]=p,e[58]=w,e[59]=N,e[60]=k,e[61]=E):E=e[61];let ne;e[62]!==d||e[63]!==f||e[64]!==r||e[65]!==h||e[66]!==o||e[67]!==x||e[68]!==p||e[69]!==P||e[70]!==S||e[71]!==L||e[72]!==N||e[73]!==a||e[74]!==j||e[75]!==me||e[76]!==Z||e[77]!==k?(ne=k==="list"&&g("div",{className:"flex flex-col gap-4",children:[g(De,{"data-testid":"sc-shard-section",size:"sm",children:[g(Le,{children:[g("div",{className:"flex items-center gap-2",children:[l(Re,{tier:"shard"}),l(Ke,{children:a("Shard tables")}),j!==null&&l(Fe,{className:"ms-auto tabular-nums",variant:"outline",children:o.length})]}),l(Ge,{children:Oe.shard.hint})]}),g(Me,{children:[f!==null&&l("p",{className:"text-sm text-destructive","data-testid":"sc-error",role:"alert",children:f}),j!==null&&j.length===0&&l("p",{className:"text-sm text-muted-foreground","data-testid":"sc-empty",children:a("No tables in this shard.")}),j!==null&&j.length>0&&o.length===0&&l("p",{className:"text-sm text-muted-foreground","data-testid":"sc-no-match",children:a("No tables match your filter.")}),o.length>0&&l("ul",{className:"-mx-3 overflow-hidden border-t border-border","data-testid":"sc-table-list",children:o.map(b=>{const re=`${N}:${b.name}`,W=L[re]??[];return g(Xe,{expanded:r===b.name,name:b.name,onToggle:()=>{fe(me(b.name))},rowCount:b.rowCount,rowTestId:`sc-table-${b.name}`,toggleTestId:`sc-toggle-${b.name}`,children:[l(Ye,{columns:d[re]??Ue,testId:`sc-columns-${b.name}`}),W.length>0&&l($t,{heading:a("Indexes"),indexes:W,testId:`sc-indexes-${b.name}`})]},b.name)})})]})]}),g(De,{"data-testid":"sc-global-section",size:"sm",children:[g(Le,{children:[g("div",{className:"flex items-center gap-2",children:[l(Re,{tier:"global"}),l(Ke,{children:a("Global tables (D1)")}),S!==null&&l(Fe,{className:"ms-auto tabular-nums",variant:"outline",children:h.length})]}),l(Ge,{children:Oe.global.hint})]}),g(Me,{children:[p!==null&&l("p",{className:"text-sm text-destructive","data-testid":"sc-global-error",role:"alert",children:p}),S!==null&&S.length===0&&l(He,{description:Oe.global.hint,testId:"sc-global-empty",title:a("No global tables.")}),S!==null&&S.length>0&&h.length===0&&l("p",{className:"text-sm text-muted-foreground","data-testid":"sc-global-no-match",children:a("No tables match your filter.")}),h.length>0&&l("ul",{className:"-mx-3 overflow-hidden border-t border-border","data-testid":"sc-global-table-list",children:h.map(b=>l(Xe,{expanded:P===b.name,name:b.name,onToggle:()=>{fe(Z(b.name))},rowCount:b.rowCount,rowTestId:`sc-global-table-${b.name}`,toggleTestId:`sc-global-toggle-${b.name}`,children:l(Ye,{columns:x[b.name]??Ue,testId:`sc-global-columns-${b.name}`})},b.name))})]})]})]}),e[62]=d,e[63]=f,e[64]=r,e[65]=h,e[66]=o,e[67]=x,e[68]=p,e[69]=P,e[70]=S,e[71]=L,e[72]=N,e[73]=a,e[74]=j,e[75]=me,e[76]=Z,e[77]=k,e[78]=ne):ne=e[78];let se;return e[79]!==le||e[80]!==U||e[81]!==ae||e[82]!==E||e[83]!==ne?(se=g("div",{className:"flex flex-col gap-4","data-testid":"lunora-schema",children:[le,U,ae,E,ne]}),e[79]=le,e[80]=U,e[81]=ae,e[82]=E,e[83]=ne,e[84]=se):se=e[84],se};function kt(s){return l("li",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-[11px] text-muted-foreground",children:s},s)}function It(s){return g("li",{className:"flex flex-wrap items-center gap-1.5 text-xs",children:[l("span",{className:"font-mono",children:s.name}),l(Fe,{variant:"outline",children:s.type}),s.unique===!0&&l(Fe,{variant:"secondary",children:"unique"}),l("span",{className:"text-muted-foreground",children:s.fields.join(", ")})]},`${s.type}:${s.name}`)}function At(s){return s.name}export{Zt as SchemaViewer};
|