@lunora/studio 1.0.0-alpha.221 → 1.0.0-alpha.223

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/index.d.mts +11 -3
  2. package/dist/index.d.ts +11 -3
  3. package/dist/index.mjs +1 -1
  4. package/dist/mount.mjs +1 -1
  5. package/dist/packem_chunks/AdvisorHealthPanel.mjs +1 -1
  6. package/dist/packem_chunks/ApiTab.mjs +1 -1
  7. package/dist/packem_chunks/AuditPanel.mjs +1 -1
  8. package/dist/packem_chunks/DeploymentHealthPanel.mjs +1 -1
  9. package/dist/packem_chunks/ExportImportPanel.mjs +1 -1
  10. package/dist/packem_chunks/FileBrowser.mjs +1 -1
  11. package/dist/packem_chunks/FunctionRunner.mjs +1 -1
  12. package/dist/packem_chunks/FunctionStatsPanel.mjs +1 -1
  13. package/dist/packem_chunks/HealthPanel.mjs +1 -1
  14. package/dist/packem_chunks/InsightsPanel.mjs +1 -1
  15. package/dist/packem_chunks/LogsPanel.mjs +1 -1
  16. package/dist/packem_chunks/MailPanel.mjs +1 -1
  17. package/dist/packem_chunks/MetricsPanel.mjs +1 -1
  18. package/dist/packem_chunks/NotificationsPanel.mjs +1 -1
  19. package/dist/packem_chunks/PitrPanel.mjs +1 -1
  20. package/dist/packem_chunks/SchemaViewer.mjs +1 -1
  21. package/dist/packem_chunks/SecurityAdvisorPanel.mjs +1 -1
  22. package/dist/packem_chunks/SettingsPanel.mjs +1 -1
  23. package/dist/packem_chunks/SqlEditorPanel.mjs +1 -1
  24. package/dist/packem_chunks/TableEditor.mjs +1 -1
  25. package/dist/packem_chunks/agents-panel.mjs +1 -1
  26. package/dist/packem_chunks/analytics-panel.mjs +1 -1
  27. package/dist/packem_chunks/auth-audit-panel.mjs +1 -1
  28. package/dist/packem_chunks/auth-config-panel.mjs +1 -1
  29. package/dist/packem_chunks/auth-sessions-panel.mjs +1 -1
  30. package/dist/packem_chunks/containers-panel.mjs +1 -1
  31. package/dist/packem_chunks/dashboards-panel.mjs +1 -1
  32. package/dist/packem_chunks/evals-panel.mjs +1 -1
  33. package/dist/packem_chunks/fanout-panel.mjs +1 -1
  34. package/dist/packem_chunks/flags-panel.mjs +1 -1
  35. package/dist/packem_chunks/issues-panel.mjs +1 -1
  36. package/dist/packem_chunks/kv-browser.mjs +1 -1
  37. package/dist/packem_chunks/log-drains-panel.mjs +1 -1
  38. package/dist/packem_chunks/migrations-route.mjs +1 -1
  39. package/dist/packem_chunks/organizations-panel.mjs +1 -1
  40. package/dist/packem_chunks/payments-panel.mjs +1 -1
  41. package/dist/packem_chunks/permissions-panel.mjs +1 -1
  42. package/dist/packem_chunks/queues-panel.mjs +1 -1
  43. package/dist/packem_chunks/reactors-panel.mjs +1 -1
  44. package/dist/packem_chunks/rls-panel.mjs +1 -1
  45. package/dist/packem_chunks/schedule-panel.mjs +1 -1
  46. package/dist/packem_chunks/storage-rules-panel.mjs +1 -1
  47. package/dist/packem_chunks/subscriptions-panel.mjs +1 -1
  48. package/dist/packem_chunks/sync-client-panel.mjs +1 -1
  49. package/dist/packem_chunks/traces-panel.mjs +1 -1
  50. package/dist/packem_chunks/users-panel.mjs +1 -1
  51. package/dist/packem_chunks/vector-browser.mjs +1 -1
  52. package/dist/packem_chunks/workflows-panel.mjs +1 -1
  53. package/dist/packem_shared/{ApiDocsPanel-DzvVLAev.mjs → ApiDocsPanel-fhDlZGE4.mjs} +1 -1
  54. package/dist/packem_shared/{ApiReferencePanel--1Y4o_-l.mjs → ApiReferencePanel-CHoHM5ME.mjs} +1 -1
  55. package/dist/packem_shared/{CommandPalette-D7GxhPrH.mjs → CommandPalette-D9ZY-qQd.mjs} +1 -1
  56. package/dist/packem_shared/DataBrowser-DWSaSSRj.mjs +4 -0
  57. package/dist/packem_shared/{GlobalDataBrowser-DSexMt80.mjs → GlobalDataBrowser-CR138dEZ.mjs} +1 -1
  58. package/dist/packem_shared/{HomePanel-BkCmY0Hl.mjs → HomePanel-fJZRA0b0.mjs} +1 -1
  59. package/dist/packem_shared/{MigrationsPanel-DLQRarWw.mjs → MigrationsPanel-QjQ4Gp9s.mjs} +1 -1
  60. package/dist/packem_shared/{OpenRpcReferencePanel-a_mbqw67.mjs → OpenRpcReferencePanel-C8ctFJVm.mjs} +1 -1
  61. package/dist/packem_shared/{ScheduledJobs-DSqsMB51.mjs → ScheduledJobs-nPx7NmOE.mjs} +1 -1
  62. package/dist/packem_shared/{Studio-BE_SzY44.mjs → Studio-DQq17PO6.mjs} +1 -1
  63. package/dist/packem_shared/{StudioApp-kVjMop0V.mjs → StudioApp-DikgPBVJ.mjs} +1 -1
  64. package/dist/packem_shared/{advisor-view-DtkbHW2O.mjs → advisor-view-BzzJg9D_.mjs} +1 -1
  65. package/dist/packem_shared/{data-grid-BPu1a997.mjs → data-grid-DIiNmDR9.mjs} +1 -1
  66. package/dist/packem_shared/{error-alert-dQk3g8WI.mjs → error-alert-DueSEkt-.mjs} +1 -1
  67. package/dist/packem_shared/{grid-features-ByxOklon.mjs → grid-features-OVIMIQan.mjs} +1 -1
  68. package/dist/packem_shared/home-panel-DBSHjxil.mjs +3 -0
  69. package/dist/packem_shared/{internal-CyDwqA67.mjs → internal-Df43vQI0.mjs} +1 -1
  70. package/dist/packem_shared/{log-line-BHZD2Aj4.mjs → log-line-BHWXobrl.mjs} +1 -1
  71. package/dist/packem_shared/{recording-client-CjRFjhya.mjs → recording-client-CyFiAE2l.mjs} +1 -1
  72. package/dist/packem_shared/{reference-view-vNXUVPlA.mjs → reference-view-DSeKRrUU.mjs} +4 -4
  73. package/dist/packem_shared/{schema-diagram-DADlbs2X.mjs → schema-diagram-CQ4vn0CN.mjs} +1 -1
  74. package/dist/packem_shared/{sql-result-table-DS4o0GoC.mjs → sql-result-table-DyK762_A.mjs} +1 -1
  75. package/dist/packem_shared/studio-ajWxPNfI.mjs +2 -0
  76. package/dist/packem_shared/{table-list-sidebar-D30qERKx.mjs → table-list-sidebar-DxvakjpR.mjs} +1 -1
  77. package/dist/packem_shared/{use-admin-query-CR9mHt0P.mjs → use-admin-query-tlBof8Yg.mjs} +1 -1
  78. package/dist/packem_shared/{use-async-submit-LWIKsZ8r.mjs → use-async-submit-CZqCMTJ_.mjs} +1 -1
  79. package/dist/packem_shared/{use-auth-config-HmTOvrWd.mjs → use-auth-config-B9hH2tQa.mjs} +1 -1
  80. package/dist/packem_shared/{use-open-trace-DdGxsEB9.mjs → use-open-trace-DMVhpnyG.mjs} +1 -1
  81. package/dist/packem_shared/{use-sql-assistant-D4XQ0v0R.mjs → use-sql-assistant-pjfGp-Ol.mjs} +1 -1
  82. package/dist/standalone/{chunk-EQVY6WGK.js → chunk-2H7LJELF.js} +1 -1
  83. package/dist/standalone/{chunk-AM7VTTNL.js → chunk-2PLDVCEP.js} +1 -1
  84. package/dist/standalone/{chunk-DXT2DY4I.js → chunk-2QSGCPIS.js} +1 -1
  85. package/dist/standalone/chunk-2UECQGYG.js +1 -0
  86. package/dist/standalone/{chunk-PVNT7VXC.js → chunk-4DLM7KCA.js} +1 -1
  87. package/dist/standalone/{chunk-FCEQTBLC.js → chunk-4IX7Z3XP.js} +1 -1
  88. package/dist/standalone/{chunk-3C25RFTP.js → chunk-4RLMVWJL.js} +1 -1
  89. package/dist/standalone/{chunk-3TE3V2QL.js → chunk-4ZHQUGP5.js} +1 -1
  90. package/dist/standalone/{chunk-2HF37UQN.js → chunk-5CEDU7OP.js} +1 -1
  91. package/dist/standalone/{chunk-GGAUC5ZI.js → chunk-5JAOC6KI.js} +1 -1
  92. package/dist/standalone/{chunk-PSBP27ZK.js → chunk-6LYYH4KG.js} +1 -1
  93. package/dist/standalone/{chunk-MMMRSTCL.js → chunk-6UFH4FWY.js} +1 -1
  94. package/dist/standalone/chunk-6ZPT7CTC.js +5 -0
  95. package/dist/standalone/{chunk-PY5P53RV.js → chunk-AANB526D.js} +1 -1
  96. package/dist/standalone/{chunk-4AZDQAT2.js → chunk-ANAVNSAK.js} +1 -1
  97. package/dist/standalone/{chunk-MDUTVBJZ.js → chunk-B2HYHTIX.js} +1 -1
  98. package/dist/standalone/{chunk-KFEWMJQS.js → chunk-BF5GZZ2N.js} +1 -1
  99. package/dist/standalone/{chunk-VQM2MKYO.js → chunk-BNFLBJXF.js} +1 -1
  100. package/dist/standalone/{chunk-WINPNKYC.js → chunk-BOASUV37.js} +1 -1
  101. package/dist/standalone/{chunk-LJVH6HRQ.js → chunk-BWLFO2IE.js} +1 -1
  102. package/dist/standalone/{chunk-6HDT763N.js → chunk-C5JRZI3P.js} +1 -1
  103. package/dist/standalone/{chunk-YBCFAAQJ.js → chunk-C7JZ7GM3.js} +1 -1
  104. package/dist/standalone/{chunk-UYKO4I36.js → chunk-CFIBDQF7.js} +1 -1
  105. package/dist/standalone/{chunk-RBJMRBC3.js → chunk-D73MZIDA.js} +1 -1
  106. package/dist/standalone/{chunk-I3TUOZM3.js → chunk-DHJHD5RD.js} +1 -1
  107. package/dist/standalone/{chunk-PSPSEIFN.js → chunk-DPJRFJGG.js} +1 -1
  108. package/dist/standalone/{chunk-ZUGCPRKB.js → chunk-EBNLDFWL.js} +1 -1
  109. package/dist/standalone/{chunk-Q2F2DRGB.js → chunk-EIISOYGA.js} +1 -1
  110. package/dist/standalone/{chunk-GYKK64E7.js → chunk-EIREQDTV.js} +1 -1
  111. package/dist/standalone/{chunk-ZHM5ZHPC.js → chunk-EJSI4PMU.js} +1 -1
  112. package/dist/standalone/{chunk-2HAWCLCS.js → chunk-EUBMVV62.js} +1 -1
  113. package/dist/standalone/{chunk-V2JKX5UU.js → chunk-FRX3HV4O.js} +2 -2
  114. package/dist/standalone/{chunk-I4VOJYXE.js → chunk-FZXPE3EA.js} +1 -1
  115. package/dist/standalone/{chunk-V2LIXSFE.js → chunk-HZ23X7G4.js} +1 -1
  116. package/dist/standalone/{chunk-DX6246CW.js → chunk-IVHSLEDF.js} +1 -1
  117. package/dist/standalone/{chunk-6RNWWWLS.js → chunk-IVSO7SEU.js} +1 -1
  118. package/dist/standalone/{chunk-GL7PC32W.js → chunk-KRYLPBID.js} +1 -1
  119. package/dist/standalone/{chunk-VQTSESFP.js → chunk-LCRAEP3B.js} +1 -1
  120. package/dist/standalone/{chunk-RE4RWXYW.js → chunk-LD7EXQJA.js} +1 -1
  121. package/dist/standalone/chunk-MK64Z2KK.js +3 -0
  122. package/dist/standalone/{chunk-DKLSANZA.js → chunk-MRAMNVDG.js} +1 -1
  123. package/dist/standalone/{chunk-3ZMF2GJ5.js → chunk-MU57Q7EJ.js} +1 -1
  124. package/dist/standalone/{chunk-ZJZNCJHY.js → chunk-NFS7FTAR.js} +1 -1
  125. package/dist/standalone/{chunk-EDEQELIO.js → chunk-NGBD2OUY.js} +1 -1
  126. package/dist/standalone/{chunk-2R6ZRXPJ.js → chunk-NNOKBVJ7.js} +1 -1
  127. package/dist/standalone/{chunk-UTPXXTQ6.js → chunk-NO3SWCXH.js} +1 -1
  128. package/dist/standalone/{chunk-PIKO7SSB.js → chunk-NSTYZZ5L.js} +1 -1
  129. package/dist/standalone/{chunk-6WPU62WQ.js → chunk-NX7UAIZ2.js} +1 -1
  130. package/dist/standalone/{chunk-TZHEXHD4.js → chunk-OCZPVECA.js} +1 -1
  131. package/dist/standalone/{chunk-4P2KFEUN.js → chunk-PJZYLISI.js} +1 -1
  132. package/dist/standalone/{chunk-H4OORJHB.js → chunk-PQPPJGH4.js} +1 -1
  133. package/dist/standalone/{chunk-6CGJCPHC.js → chunk-QYCKDIIK.js} +1 -1
  134. package/dist/standalone/{chunk-JQ63BDVF.js → chunk-QZRXRMVF.js} +1 -1
  135. package/dist/standalone/{chunk-2RMFAASK.js → chunk-SQKUZR6R.js} +1 -1
  136. package/dist/standalone/{chunk-2JLOP2EL.js → chunk-SRVHSFKC.js} +1 -1
  137. package/dist/standalone/{chunk-JNDBJAO6.js → chunk-TS5SE5EM.js} +1 -1
  138. package/dist/standalone/{chunk-FS4GMDIW.js → chunk-TXJX5ASO.js} +1 -1
  139. package/dist/standalone/{chunk-J345HOFQ.js → chunk-U775EN4P.js} +1 -1
  140. package/dist/standalone/{chunk-YV6JXZJO.js → chunk-UXXDN6Z3.js} +1 -1
  141. package/dist/standalone/{chunk-RVBRSHYE.js → chunk-VWJ4BY6M.js} +1 -1
  142. package/dist/standalone/{chunk-PUBYZCHW.js → chunk-WLA5B3GY.js} +1 -1
  143. package/dist/standalone/{chunk-PAE3ULFR.js → chunk-YGZGLWD5.js} +1 -1
  144. package/dist/standalone/{chunk-6P7CYZPR.js → chunk-YHYYGVE2.js} +1 -1
  145. package/dist/standalone/{chunk-K4HVLN3Z.js → chunk-YTMEMOHR.js} +1 -1
  146. package/dist/standalone/{chunk-IJPXZZZ5.js → chunk-Z5O2NQAV.js} +1 -1
  147. package/dist/standalone/{chunk-SEBIGECV.js → chunk-ZXEE2Z4S.js} +1 -1
  148. package/dist/standalone/chunk-ZY35EIK4.js +1 -0
  149. package/dist/standalone/studio.js +1 -1
  150. package/dist/styles.css +1 -1
  151. package/package.json +5 -5
  152. package/dist/packem_shared/DataBrowser-CKbaOtDh.mjs +0 -4
  153. package/dist/packem_shared/home-panel-B_HN6YMA.mjs +0 -3
  154. package/dist/packem_shared/studio-BVQq3QLR.mjs +0 -2
  155. package/dist/standalone/chunk-3GFF4BA4.js +0 -3
  156. package/dist/standalone/chunk-FCPY75TQ.js +0 -1
  157. package/dist/standalone/chunk-HR7W3Z5I.js +0 -1
  158. package/dist/standalone/chunk-KGCUFNFC.js +0 -5
  159. /package/dist/standalone/{chunk-6B7FVPW3.js → chunk-PTZD7RUZ.js} +0 -0
@@ -1 +1 @@
1
- import{c as q}from"react/compiler-runtime";import{useVirtualizer as Ce}from"@tanstack/react-virtual";import{useState as F,useReducer as Le,useRef as ue,useEffect as me,useMemo as Ne}from"react";import{f as fe}from"../packem_shared/log-fields-SBxKyBug.mjs";import{E as Se}from"../packem_shared/error-alert-dQk3g8WI.mjs";import{B as he}from"../packem_shared/badge-r_5B4LHP.mjs";import{E as ee}from"../packem_shared/empty-state-D7jEML_T.mjs";import{u as le}from"../packem_shared/use-admin-query-CR9mHt0P.mjs";import{u as Te}from"../packem_shared/use-open-trace-DdGxsEB9.mjs";import{u as Ie}from"../packem_shared/use-shard-key-BsP3o5wT.mjs";import{useT as Q}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as oe}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{r as Re}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{f as ke}from"../packem_shared/virtual-rect-D_j7aLxX.mjs";import{useLunora as Pe}from"@lunora/react";import{B as Ee}from"../packem_shared/button-q0UYSmrn.mjs";import{I as D}from"../packem_shared/input-CXhxesPC.mjs";import{T as Oe,a as _e,b as ge,c as B,d as Fe,e as V}from"../packem_shared/table-D0SBiDu-.mjs";import ne from"../packem_shared/useDebounced-DVeQ5-oW.mjs";import{a as pe}from"../packem_shared/cf-links-CBJ5SywP.mjs";import{f as ae,n as qe,b as ie}from"../packem_shared/internal-CyDwqA67.mjs";import{a as Ae,L as Me}from"../packem_shared/log-line-BHZD2Aj4.mjs";import{jsx as r,jsxs as E,Fragment as $e}from"react/jsx-runtime";import{c as H}from"../packem_shared/utils-bhneXptQ.mjs";import{L as Ue}from"../packem_shared/live-status-BuJdUZFU.mjs";import{ShardInput as Ke}from"../packem_shared/ShardInput-C6mjgAh4.mjs";const re=["trace","debug","log","info","warn","error","fatal"],Be="LOG_ARCHIVE_NOT_CONFIGURED",Ve={cursor:void 0,error:null,loading:!1,notConfigured:!1,rows:null},De=(i,e)=>{switch(e.type){case"append":return{...i,cursor:e.cursor,error:null,loading:!1,rows:[...i.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{...i,error:null,loading:!0,notConfigured:!1};case"notConfigured":return{cursor:void 0,error:null,loading:!1,notConfigured:!0,rows:null};case"pageFailed":return{...i,error:e.message,loading:!1};default:return i}},Qe=i=>{const e=q(33),{row:t}=i;let n;e[0]!==t.fields?(n=fe(t.fields),e[0]=t.fields,e[1]=n):n=e[1];const a=n,o=`lg-archive-row-${String(t.ts)}`;let d;e[2]!==t.ts?(d=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=d):d=e[3];let p;e[4]!==d?(p=r(V,{className:"tabular-nums whitespace-nowrap text-xs text-muted-foreground",children:d}),e[4]=d,e[5]=p):p=e[5];const m=Ae[t.level];let c;e[6]!==t.level||e[7]!==m?(c=r(V,{children:r(he,{variant:m,children:t.level})}),e[6]=t.level,e[7]=m,e[8]=c):c=e[8];let s;e[9]!==t.functionPath?(s=r(V,{className:"font-mono text-xs",children:t.functionPath}),e[9]=t.functionPath,e[10]=s):s=e[10];let f;e[11]!==t.message?(f=r("div",{className:"truncate",title:t.message,children:t.message}),e[11]=t.message,e[12]=f):f=e[12];let l;e[13]!==a?(l=a!==""&&r("div",{className:"truncate font-mono text-[11px] text-muted-foreground",title:a,children:a}),e[13]=a,e[14]=l):l=e[14];let u;e[15]!==f||e[16]!==l?(u=E(V,{className:"max-w-md",children:[f,l]}),e[15]=f,e[16]=l,e[17]=u):u=e[17];const h=t.traceId??"—";let v;e[18]!==h?(v=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:h}),e[18]=h,e[19]=v):v=e[19];const b=t.shardKey??"—";let y;e[20]!==b?(y=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:b}),e[20]=b,e[21]=y):y=e[21];const w=t.userId??"—";let x;e[22]!==w?(x=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:w}),e[22]=w,e[23]=x):x=e[23];let T;return e[24]!==u||e[25]!==v||e[26]!==y||e[27]!==x||e[28]!==o||e[29]!==p||e[30]!==c||e[31]!==s?(T=E(ge,{"data-testid":o,children:[p,c,s,u,v,y,x]}),e[24]=u,e[25]=v,e[26]=y,e[27]=x,e[28]=o,e[29]=p,e[30]=c,e[31]=s,e[32]=T):T=e[32],T},ze=({shardKey:i})=>{const e=Pe(),t=Q(),[n,a]=F(""),[o,d]=F(""),[p,m]=F(""),[{cursor:c,error:s,loading:f,notConfigured:l,rows:u},h]=Le(De,Ve),v=ne(n.trim(),400),b=ne(o.trim(),400),y={...v===""?{}:{functionPathPrefix:v},...p===""?{}:{minLevel:p},...i===""?{}:{shardKey:i},...b===""?{}:{userId:b}},w=JSON.stringify(y),x=ue(w);me(()=>{const g={cancelled:!1};return x.current=w,ae((async()=>{h({type:"loading"});try{const C=await e.queryLogArchive(y);g.cancelled||h({cursor:C.nextCursor,rows:C.rows,type:"loaded"})}catch(C){g.cancelled||h(qe(C)===Be?{type:"notConfigured"}:{message:ie(C),type:"failed"})}})()),()=>{g.cancelled=!0}},[e,w]);const T=async()=>{if(c===void 0)return;const g=w;h({type:"loading"});try{const C=await e.queryLogArchive({...y,cursor:c});x.current===g&&h({cursor:C.nextCursor,rows:C.rows,type:"append"})}catch(C){x.current===g&&h({message:ie(C),type:"pageFailed"})}},R=g=>{a(g.target.value)},N=g=>{d(g.target.value)},L=g=>{m(g.target.value)},S=()=>{ae(T())};return l?r(ee,{action:r("a",{className:"text-sm text-primary underline-offset-4 hover:underline",href:pe,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")}):E("div",{className:"flex flex-col gap-4","data-testid":"lg-archive",children:[E("div",{className:"flex flex-wrap items-center gap-2",children:[r(D,{"aria-label":t("Function path prefix"),className:"h-8 w-48","data-testid":"lg-archive-path",onChange:R,placeholder:t("function path…"),value:n}),r(D,{"aria-label":t("User id"),className:"h-8 w-40","data-testid":"lg-archive-user",onChange:N,placeholder:t("user id…"),value:o}),E("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:L,value:p,children:[r("option",{value:"",children:t("min level")}),re.map(g=>r("option",{value:g,children:g},g))]})]}),s!==null&&r("p",{className:"text-sm text-destructive","data-testid":"lg-archive-error",role:"alert",children:s}),f&&u===null&&s===null&&r("p",{className:"text-sm text-muted-foreground","data-testid":"lg-archive-loading",children:t("Loading…")}),u!==null&&u.length===0&&r(ee,{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.")}),u!==null&&u.length>0&&r("div",{className:"overflow-hidden rounded-xl border border-border shadow-xs",children:E(Oe,{"data-testid":"lg-archive-table",children:[r(_e,{children:E(ge,{children:[r(B,{children:t("Time")}),r(B,{children:t("Level")}),r(B,{children:t("Function")}),r(B,{children:t("Message")}),r(B,{children:t("Trace")}),r(B,{children:t("Shard")}),r(B,{children:t("User")})]})}),r(Fe,{children:u.map((g,C)=>r(Qe,{row:g},`${String(g.ts)}-${String(C)}`))})]})}),c!==void 0&&r("div",{children:r(Ee,{"data-testid":"lg-archive-more",disabled:f,onClick:S,size:"sm",variant:"outline",children:t(f?"Loading…":"Load more")})})]})},Ge=i=>{const e=q(11),{level:t,onToggle:n,selected:a}=i;let o;e[0]!==t||e[1]!==n?(o=()=>{n(t)},e[0]=t,e[1]=n,e[2]=o):o=e[2];const d=o,p=a?"border-border bg-muted font-medium":"border-input text-muted-foreground";let m;e[3]!==p?(m=H("rounded-md border px-2 py-1 text-xs",p),e[3]=p,e[4]=m):m=e[4];const c=`logs-level-${t}`;let s;return e[5]!==t||e[6]!==d||e[7]!==a||e[8]!==m||e[9]!==c?(s=r("button",{"aria-pressed":a,className:m,"data-testid":c,onClick:d,type:"button",children:t}),e[5]=t,e[6]=d,e[7]=a,e[8]=m,e[9]=c,e[10]=s):s=e[10],s},He=i=>{const e=q(68),{levelFilter:t,onLogPathChange:n,onSearchChange:a,onTimeRangeChange:o,onToggleLevel:d,onToggleSummary:p,pathFilter:m,search:c,showSummary:s,timeRange:f}=i,l=Q();let u;e[0]!==l?(u=l("Search messages"),e[0]=l,e[1]=u):u=e[1];let h;e[2]!==l?(h=l("search message"),e[2]=l,e[3]=h):h=e[3];let v;e[4]!==a||e[5]!==c||e[6]!==u||e[7]!==h?(v=r(D,{"aria-label":u,className:"h-8 w-48","data-testid":"lg-search",onChange:a,placeholder:h,value:c}),e[4]=a,e[5]=c,e[6]=u,e[7]=h,e[8]=v):v=e[8];let b;e[9]!==l?(b=l("Function path"),e[9]=l,e[10]=b):b=e[10];let y;e[11]!==l?(y=l("filter path"),e[11]=l,e[12]=y):y=e[12];let w;e[13]!==n||e[14]!==m||e[15]!==b||e[16]!==y?(w=r(D,{"aria-label":b,className:"h-8 w-40","data-testid":"logs-path-filter",onChange:n,placeholder:y,value:m}),e[13]=n,e[14]=m,e[15]=b,e[16]=y,e[17]=w):w=e[17];let x;e[18]!==l?(x=l("Level filter"),e[18]=l,e[19]=x):x=e[19];let T;e[20]!==t||e[21]!==d?(T=re.map(G=>r(Ge,{level:G,onToggle:d,selected:t.has(G)},G)),e[20]=t,e[21]=d,e[22]=T):T=e[22];let R;e[23]!==x||e[24]!==T?(R=r("div",{"aria-label":x,className:"inline-flex items-center gap-1","data-testid":"logs-level-filter",role:"group",children:T}),e[23]=x,e[24]=T,e[25]=R):R=e[25];let N;e[26]!==l?(N=l("Time range"),e[26]=l,e[27]=N):N=e[27];let L;e[28]!==l?(L=l("All time"),e[28]=l,e[29]=L):L=e[29];let S;e[30]!==L?(S=r("option",{value:"all",children:L}),e[30]=L,e[31]=S):S=e[31];let g;e[32]!==l?(g=l("Last 5m"),e[32]=l,e[33]=g):g=e[33];let C;e[34]!==g?(C=r("option",{value:"5m",children:g}),e[34]=g,e[35]=C):C=e[35];let k;e[36]!==l?(k=l("Last 15m"),e[36]=l,e[37]=k):k=e[37];let P;e[38]!==k?(P=r("option",{value:"15m",children:k}),e[38]=k,e[39]=P):P=e[39];let O;e[40]!==l?(O=l("Last hour"),e[40]=l,e[41]=O):O=e[41];let _;e[42]!==O?(_=r("option",{value:"1h",children:O}),e[42]=O,e[43]=_):_=e[43];let A;e[44]!==o||e[45]!==N||e[46]!==S||e[47]!==C||e[48]!==P||e[49]!==_||e[50]!==f?(A=E("select",{"aria-label":N,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:f,children:[S,C,P,_]}),e[44]=o,e[45]=N,e[46]=S,e[47]=C,e[48]=P,e[49]=_,e[50]=f,e[51]=A):A=e[51];const z=s?"border-border bg-muted font-medium":"border-input text-muted-foreground";let M;e[52]!==z?(M=H("h-8 rounded-md border px-3 text-sm",z),e[52]=z,e[53]=M):M=e[53];let U;e[54]!==s||e[55]!==l?(U=l(s?"List":"Summary"),e[54]=s,e[55]=l,e[56]=U):U=e[56];let $;e[57]!==p||e[58]!==s||e[59]!==M||e[60]!==U?($=r("button",{"aria-pressed":s,className:M,"data-testid":"logs-summary-toggle",onClick:p,type:"button",children:U}),e[57]=p,e[58]=s,e[59]=M,e[60]=U,e[61]=$):$=e[61];let K;return e[62]!==A||e[63]!==$||e[64]!==v||e[65]!==w||e[66]!==R?(K=E("div",{className:"flex flex-wrap items-center gap-2",children:[v,w,R,A,$]}),e[62]=A,e[63]=$,e[64]=v,e[65]=w,e[66]=R,e[67]=K):K=e[67],K},We=i=>{const e=q(53),{onOutcomeChange:t,onPathChange:n,onTableChange:a,onUserChange:o,outcomeFilter:d,pathPrefix:p,tableFilter:m,userIdFilter:c}=i,s=Q();let f;e[0]!==s?(f=s("Function path"),e[0]=s,e[1]=f):f=e[1];let l;e[2]!==s?(l=s("file:function"),e[2]=s,e[3]=l):l=e[3];let u;e[4]!==n||e[5]!==p||e[6]!==f||e[7]!==l?(u=r(D,{"aria-label":f,className:"h-8 w-44","data-testid":"lg-req-path",onChange:n,placeholder:l,value:p}),e[4]=n,e[5]=p,e[6]=f,e[7]=l,e[8]=u):u=e[8];let h;e[9]!==s?(h=s("User id"),e[9]=s,e[10]=h):h=e[10];let v;e[11]!==s?(v=s("userId"),e[11]=s,e[12]=v):v=e[12];let b;e[13]!==o||e[14]!==h||e[15]!==v||e[16]!==c?(b=r(D,{"aria-label":h,className:"h-8 w-32","data-testid":"lg-req-user",onChange:o,placeholder:v,value:c}),e[13]=o,e[14]=h,e[15]=v,e[16]=c,e[17]=b):b=e[17];let y;e[18]!==s?(y=s("Table touched"),e[18]=s,e[19]=y):y=e[19];let w;e[20]!==s?(w=s("table"),e[20]=s,e[21]=w):w=e[21];let x;e[22]!==a||e[23]!==y||e[24]!==w||e[25]!==m?(x=r(D,{"aria-label":y,className:"h-8 w-32","data-testid":"lg-req-table",onChange:a,placeholder:w,value:m}),e[22]=a,e[23]=y,e[24]=w,e[25]=m,e[26]=x):x=e[26];let T;e[27]!==s?(T=s("Outcome filter"),e[27]=s,e[28]=T):T=e[28];let R;e[29]!==s?(R=s("all"),e[29]=s,e[30]=R):R=e[30];let N;e[31]!==R?(N=r("option",{value:"all",children:R}),e[31]=R,e[32]=N):N=e[32];let L;e[33]!==s?(L=s("ok"),e[33]=s,e[34]=L):L=e[34];let S;e[35]!==L?(S=r("option",{value:"ok",children:L}),e[35]=L,e[36]=S):S=e[36];let g;e[37]!==s?(g=s("error"),e[37]=s,e[38]=g):g=e[38];let C;e[39]!==g?(C=r("option",{value:"error",children:g}),e[39]=g,e[40]=C):C=e[40];let k;e[41]!==t||e[42]!==d||e[43]!==T||e[44]!==N||e[45]!==S||e[46]!==C?(k=E("select",{"aria-label":T,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:d,children:[N,S,C]}),e[41]=t,e[42]=d,e[43]=T,e[44]=N,e[45]=S,e[46]=C,e[47]=k):k=e[47];let P;return e[48]!==k||e[49]!==u||e[50]!==b||e[51]!==x?(P=E("div",{className:"flex flex-wrap items-center gap-2",children:[u,b,x,k]}),e[48]=k,e[49]=u,e[50]=b,e[51]=x,e[52]=P):P=e[52],P},ve=i=>{const e=q(7),{bucket:t}=i;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 a;e[2]!==t.count?(a=r("span",{className:"shrink-0 tabular-nums",role:"gridcell",children:t.count}),e[2]=t.count,e[3]=a):a=e[3];let o;return e[4]!==n||e[5]!==a?(o=E("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,a]}),e[4]=n,e[5]=a,e[6]=o):o=e[6],o},Ye=i=>{const e=q(31),{summary:t}=i,n=Q();let a;e[0]!==t.total||e[1]!==n?(a=n("{count} entries",{count:t.total}),e[0]=t.total,e[1]=n,e[2]=a):a=e[2];let o;e[3]!==a?(o=r("p",{className:"text-xs text-muted-foreground","data-testid":"logs-summary-total",children:a}),e[3]=a,e[4]=o):o=e[4];let d;e[5]!==n?(d=n("By level"),e[5]=n,e[6]=d):d=e[6];let p;e[7]!==d?(p=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:d}),e[7]=d,e[8]=p):p=e[8];let m;e[9]!==t.byLevel?(m=t.byLevel.map(je),e[9]=t.byLevel,e[10]=m):m=e[10];let c;e[11]!==m?(c=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-levels",role:"grid",children:m}),e[11]=m,e[12]=c):c=e[12];let s;e[13]!==p||e[14]!==c?(s=E("div",{children:[p,c]}),e[13]=p,e[14]=c,e[15]=s):s=e[15];let f;e[16]!==n?(f=n("By function"),e[16]=n,e[17]=f):f=e[17];let l;e[18]!==f?(l=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:f}),e[18]=f,e[19]=l):l=e[19];let u;e[20]!==t.byPath?(u=t.byPath.map(Je),e[20]=t.byPath,e[21]=u):u=e[21];let h;e[22]!==u?(h=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-paths",role:"grid",children:u}),e[22]=u,e[23]=h):h=e[23];let v;e[24]!==h||e[25]!==l?(v=E("div",{children:[l,h]}),e[24]=h,e[25]=l,e[26]=v):v=e[26];let b;return e[27]!==v||e[28]!==o||e[29]!==s?(b=E("div",{className:"flex flex-col gap-4 rounded-xl border border-border bg-card p-4 shadow-xs","data-testid":"logs-summary",children:[o,s,v]}),e[27]=v,e[28]=o,e[29]=s,e[30]=b):b=e[30],b};function je(i){return r(ve,{bucket:i},i.key)}function Je(i){return r(ve,{bucket:i},i.key)}const Xe=i=>{const e=q(46),{liveError:t,onShardKeyChange:n,onShowArchive:a,onShowErrors:o,onShowRequests:d,shardKey:p,view:m}=i,c=Q(),s=m==="requests",f=m==="requests"?"bg-muted font-medium":"text-muted-foreground";let l;e[0]!==f?(l=H("px-3 py-1 text-sm",f),e[0]=f,e[1]=l):l=e[1];let u;e[2]!==c?(u=c("Requests"),e[2]=c,e[3]=u):u=e[3];let h;e[4]!==d||e[5]!==s||e[6]!==l||e[7]!==u?(h=r("button",{"aria-selected":s,className:l,"data-testid":"lg-view-requests",onClick:d,role:"tab",type:"button",children:u}),e[4]=d,e[5]=s,e[6]=l,e[7]=u,e[8]=h):h=e[8];const v=m==="errors",b=m==="errors"?"bg-muted font-medium":"text-muted-foreground";let y;e[9]!==b?(y=H("px-3 py-1 text-sm",b),e[9]=b,e[10]=y):y=e[10];let w;e[11]!==c?(w=c("Errors"),e[11]=c,e[12]=w):w=e[12];let x;e[13]!==o||e[14]!==v||e[15]!==y||e[16]!==w?(x=r("button",{"aria-selected":v,className:y,"data-testid":"lg-view-errors",onClick:o,role:"tab",type:"button",children:w}),e[13]=o,e[14]=v,e[15]=y,e[16]=w,e[17]=x):x=e[17];const T=m==="archive",R=m==="archive"?"bg-muted font-medium":"text-muted-foreground";let N;e[18]!==R?(N=H("px-3 py-1 text-sm",R),e[18]=R,e[19]=N):N=e[19];let L;e[20]!==c?(L=c("Archive"),e[20]=c,e[21]=L):L=e[21];let S;e[22]!==a||e[23]!==T||e[24]!==N||e[25]!==L?(S=r("button",{"aria-selected":T,className:N,"data-testid":"lg-view-archive",onClick:a,role:"tab",type:"button",children:L}),e[22]=a,e[23]=T,e[24]=N,e[25]=L,e[26]=S):S=e[26];let g;e[27]!==x||e[28]!==S||e[29]!==h?(g=E("div",{className:"inline-flex overflow-hidden rounded-lg border border-border",role:"tablist",children:[h,x,S]}),e[27]=x,e[28]=S,e[29]=h,e[30]=g):g=e[30];let C;e[31]!==n||e[32]!==p?(C=r(Ke,{onChange:n,testId:"lg-shard-input",value:p}),e[31]=n,e[32]=p,e[33]=C):C=e[33];let k;e[34]!==t||e[35]!==m?(k=m!=="archive"&&r(Ue,{message:t,prefix:"lg"}),e[34]=t,e[35]=m,e[36]=k):k=e[36];let P;e[37]!==c?(P=c("Open in Cloudflare"),e[37]=c,e[38]=P):P=e[38];let O;e[39]!==P?(O=r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"lg-cf-link",href:pe,rel:"noreferrer",target:"_blank",children:P}),e[39]=P,e[40]=O):O=e[40];let _;return e[41]!==g||e[42]!==C||e[43]!==k||e[44]!==O?(_=E("div",{className:"flex flex-wrap items-center gap-2",children:[g,C,k,O]}),e[41]=g,e[42]=C,e[43]=k,e[44]=O,e[45]=_):_=e[45],_},te=400,Ze=36,et={height:te,overflow:"auto"},be={left:0,position:"absolute",top:0,width:"100%"},tt={error:"destructive",ok:"secondary"},xe=i=>{const e=q(6),{onOpenTrace:t,traceId:n}=i,a=Q();let o;e[0]!==t||e[1]!==a||e[2]!==n?(o=n===void 0?null:r("button",{className:"text-primary underline-offset-2 hover:underline","data-testid":"lg-trace-link",onClick:()=>{t(n)},type:"button",children:a("Trace")}),e[0]=t,e[1]=a,e[2]=n,e[3]=o):o=e[3];let d;return e[4]!==o?(d=r("span",{className:"w-16 shrink-0 text-right",role:"gridcell",children:o}),e[4]=o,e[5]=d):d=e[5],d},rt=i=>{const e=q(13),{entry:t,index:n,measureRef:a,onOpenTrace:o,start:d}=i,p=`translateY(${String(d)}px)`;let m;e[0]!==p?(m={...be,transform:p},e[0]=p,e[1]=m):m=e[1];const c=m;let s;e[2]!==t?(s=r(Me,{entry:t}),e[2]=t,e[3]=s):s=e[3];let f;e[4]!==t.traceId||e[5]!==o?(f=r(xe,{onOpenTrace:o,traceId:t.traceId}),e[4]=t.traceId,e[5]=o,e[6]=f):f=e[6];let l;return e[7]!==n||e[8]!==a||e[9]!==c||e[10]!==s||e[11]!==f?(l=E("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:a,role:"row",style:c,children:[s,f]}),e[7]=n,e[8]=a,e[9]=c,e[10]=s,e[11]=f,e[12]=l):l=e[12],l},ce=i=>i.length===0?"—":i.join(", "),st=i=>{const e=q(41),{entry:t,index:n,measureRef:a,onOpenTrace:o,start:d}=i,p=`translateY(${String(d)}px)`;let m;e[0]!==p?(m={...be,transform:p},e[0]=p,e[1]=m):m=e[1];const c=m;let s;e[2]!==t.ts?(s=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=s):s=e[3];let f;e[4]!==s?(f=r("span",{className:"w-40 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:s}),e[4]=s,e[5]=f):f=e[5];const l=tt[t.outcome];let u;e[6]!==t.outcome||e[7]!==l?(u=r("span",{className:"w-16 shrink-0",role:"gridcell",children:r(he,{variant:l,children:t.outcome})}),e[6]=t.outcome,e[7]=l,e[8]=u):u=e[8];let h;e[9]!==t.functionPath?(h=r("span",{className:"w-44 shrink-0 truncate",role:"gridcell",title:t.functionPath,children:t.functionPath}),e[9]=t.functionPath,e[10]=h):h=e[10];const v=t.shardKey??"—";let b;e[11]!==v?(b=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:v}),e[11]=v,e[12]=b):b=e[12];const y=t.userId??"—";let w;e[13]!==y?(w=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:y}),e[13]=y,e[14]=w):w=e[14];let x;e[15]!==t.durationMs?(x=Math.round(t.durationMs),e[15]=t.durationMs,e[16]=x):x=e[16];const T=`${String(x)}ms`;let R;e[17]!==T?(R=r("span",{className:"w-16 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:T}),e[17]=T,e[18]=R):R=e[18];let N;e[19]!==t.errorMessage||e[20]!==t.outcome||e[21]!==t.tablesRead||e[22]!==t.tablesWritten?(N=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]=N):N=e[23];let L;e[24]!==N?(L=r("span",{className:"flex-1 truncate text-muted-foreground",role:"gridcell",children:N}),e[24]=N,e[25]=L):L=e[25];let S;e[26]!==t.traceId||e[27]!==o?(S=r(xe,{onOpenTrace:o,traceId:t.traceId}),e[26]=t.traceId,e[27]=o,e[28]=S):S=e[28];let g;return e[29]!==n||e[30]!==a||e[31]!==c||e[32]!==w||e[33]!==R||e[34]!==L||e[35]!==S||e[36]!==f||e[37]!==u||e[38]!==h||e[39]!==b?(g=E("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:a,role:"row",style:c,children:[f,u,h,b,w,R,L,S]}),e[29]=n,e[30]=a,e[31]=c,e[32]=w,e[33]=R,e[34]=L,e[35]=S,e[36]=f,e[37]=u,e[38]=h,e[39]=b,e[40]=g):g=e[40],g},de=i=>{const{entries:e}=i??{};return Array.isArray(e)?e:[]},lt=i=>{const e={};return i.functionPathPrefix.trim()!==""&&(e.functionPathPrefix=i.functionPathPrefix.trim()),i.userId.trim()!==""&&(e.userId=i.userId.trim()),i.tableTouched.trim()!==""&&(e.tableTouched=i.tableTouched.trim()),(i.outcome==="ok"||i.outcome==="error")&&(e.outcome=i.outcome),e},ot={"5m":300*1e3,"15m":900*1e3,"1h":3600*1e3},nt=(i,e)=>{const t=e.search.trim().toLowerCase(),n=e.path.trim().toLowerCase(),a=e.range==="all"?Number.NEGATIVE_INFINITY:e.now-ot[e.range];return i.filter(o=>e.levels.size>0&&!e.levels.has(o.level)||o.timestamp<a||n!==""&&!(o.functionPath??"").toLowerCase().includes(n)?!1:t===""||o.message.toLowerCase().includes(t)||fe(o.fields).toLowerCase().includes(t))},at="—",it=i=>{const e=new Map,t=new Map;for(const o of i){e.set(o.level,(e.get(o.level)??0)+1);const d=o.functionPath??at;t.set(d,(t.get(d)??0)+1)}const n=re.filter(o=>e.has(o)).map(o=>({count:e.get(o)??0,key:o})),a=[...t.entries()].map(([o,d])=>({count:d,key:o})).toSorted((o,d)=>d.count===o.count?o.key.localeCompare(d.key):d.count-o.count);return{byLevel:n,byPath:a,total:i.length}},Wt=({initialShardKey:i})=>{const e=Q(),[t,n]=F("requests"),{queryShardKey:a,setShardKey:o,shardKey:d}=Ie(i),[p,m]=F(""),[c,s]=F(()=>new Set),[f,l]=F(""),[u,h]=F("all"),[v,b]=F(!1),[y,w]=F(""),[x,T]=F(""),[R,N]=F(""),[L,S]=F("all"),g=lt({functionPathPrefix:y,outcome:L,tableTouched:R,userId:x}),C=le(oe.getRequestLog,g,{enabled:t==="requests",live:!0,shardKey:a}),k=le(oe.getLogs,{},{enabled:t==="errors",live:!0,shardKey:a}),P=t==="requests"?C:k,{error:O,errorSource:_,isLoading:A,liveError:z}=P,M=Te(a),U=de(k.data),$=de(C.data);me(()=>{P.data!==void 0&&Re(a)},[P.data,a]);const K=nt(U,{levels:c,now:Date.now(),path:f,range:u,search:p}),G=it(K),J=t==="requests"?$.length:K.length,X=t==="errors"&&v,W=Ne(()=>O!==null?"error":J===0?A?X?"summary":"list":"empty":X?"summary":"list",[J,A,O,X]),se=ue(null),Y=Ce({count:J,estimateSize:()=>Ze,getScrollElement:()=>se.current,initialRect:{height:te,width:800},observeElementRect:(I,Z)=>ke(I,Z,te),overscan:8}),ye=Y.getVirtualItems(),we={height:Y.getTotalSize(),position:"relative",width:"100%"};return E("div",{className:"flex flex-col gap-4","data-testid":"lunora-logs",children:[r(Xe,{liveError:z,onShardKeyChange:o,onShowArchive:()=>{n("archive"),b(!1)},onShowErrors:()=>{n("errors"),b(!1)},onShowRequests:()=>{n("requests"),b(!1)},shardKey:d,view:t}),t==="errors"&&r(He,{levelFilter:c,onLogPathChange:I=>{l(I.target.value)},onSearchChange:I=>{m(I.target.value)},onTimeRangeChange:I=>{h(I.target.value)},onToggleLevel:I=>{s(Z=>{const j=new Set(Z);return j.has(I)?j.delete(I):j.add(I),j})},onToggleSummary:()=>{b(I=>!I)},pathFilter:f,search:p,showSummary:v,timeRange:u}),t==="requests"&&r(We,{onOutcomeChange:I=>{S(I.target.value)},onPathChange:I=>{w(I.target.value)},onTableChange:I=>{N(I.target.value)},onUserChange:I=>{T(I.target.value)},outcomeFilter:L,pathPrefix:y,tableFilter:R,userIdFilter:x}),t==="archive"?r(ze,{shardKey:a}):E($e,{children:[W==="error"&&r(Se,{error:_,testId:"lg-error"}),W==="empty"&&r(ee,{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.")}),W==="summary"&&r(Ye,{summary:G}),W==="list"&&r("div",{className:"rounded-xl border border-border shadow-xs","data-testid":"lg-scroll",ref:se,style:et,children:r("div",{"aria-label":e("Recent logs"),"data-testid":"lg-table",role:"grid",style:we,children:ye.map(I=>t==="requests"?r(st,{entry:$[I.index],index:I.index,measureRef:Y.measureElement,onOpenTrace:M,start:I.start},I.key):r(rt,{entry:K[I.index],index:I.index,measureRef:Y.measureElement,onOpenTrace:M,start:I.start},I.key))})})]})]})};export{Wt as LogsPanel,nt as filterLogs,it as summarizeLogs};
1
+ import{c as q}from"react/compiler-runtime";import{useVirtualizer as Ce}from"@tanstack/react-virtual";import{useState as F,useReducer as Le,useRef as ue,useEffect as me,useMemo as Ne}from"react";import{f as fe}from"../packem_shared/log-fields-SBxKyBug.mjs";import{E as Se}from"../packem_shared/error-alert-DueSEkt-.mjs";import{B as he}from"../packem_shared/badge-r_5B4LHP.mjs";import{E as ee}from"../packem_shared/empty-state-D7jEML_T.mjs";import{u as le}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{u as Te}from"../packem_shared/use-open-trace-DMVhpnyG.mjs";import{u as Ie}from"../packem_shared/use-shard-key-BsP3o5wT.mjs";import{useT as Q}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as oe}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{r as Re}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{f as ke}from"../packem_shared/virtual-rect-D_j7aLxX.mjs";import{useLunora as Pe}from"@lunora/react";import{B as Ee}from"../packem_shared/button-q0UYSmrn.mjs";import{I as D}from"../packem_shared/input-CXhxesPC.mjs";import{T as Oe,a as _e,b as ge,c as B,d as Fe,e as V}from"../packem_shared/table-D0SBiDu-.mjs";import ae from"../packem_shared/useDebounced-DVeQ5-oW.mjs";import{a as pe}from"../packem_shared/cf-links-CBJ5SywP.mjs";import{f as ne,i as qe,b as ie}from"../packem_shared/internal-Df43vQI0.mjs";import{a as Ae,L as Me}from"../packem_shared/log-line-BHWXobrl.mjs";import{jsx as r,jsxs as E,Fragment as $e}from"react/jsx-runtime";import{c as H}from"../packem_shared/utils-bhneXptQ.mjs";import{L as Ue}from"../packem_shared/live-status-BuJdUZFU.mjs";import{ShardInput as Ke}from"../packem_shared/ShardInput-C6mjgAh4.mjs";const re=["trace","debug","log","info","warn","error","fatal"],Be="LOG_ARCHIVE_NOT_CONFIGURED",Ve={cursor:void 0,error:null,loading:!1,notConfigured:!1,rows:null},De=(i,e)=>{switch(e.type){case"append":return{...i,cursor:e.cursor,error:null,loading:!1,rows:[...i.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{...i,error:null,loading:!0,notConfigured:!1};case"notConfigured":return{cursor:void 0,error:null,loading:!1,notConfigured:!0,rows:null};case"pageFailed":return{...i,error:e.message,loading:!1};default:return i}},Qe=i=>{const e=q(33),{row:t}=i;let a;e[0]!==t.fields?(a=fe(t.fields),e[0]=t.fields,e[1]=a):a=e[1];const n=a,o=`lg-archive-row-${String(t.ts)}`;let d;e[2]!==t.ts?(d=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=d):d=e[3];let p;e[4]!==d?(p=r(V,{className:"tabular-nums whitespace-nowrap text-xs text-muted-foreground",children:d}),e[4]=d,e[5]=p):p=e[5];const m=Ae[t.level];let c;e[6]!==t.level||e[7]!==m?(c=r(V,{children:r(he,{variant:m,children:t.level})}),e[6]=t.level,e[7]=m,e[8]=c):c=e[8];let s;e[9]!==t.functionPath?(s=r(V,{className:"font-mono text-xs",children:t.functionPath}),e[9]=t.functionPath,e[10]=s):s=e[10];let f;e[11]!==t.message?(f=r("div",{className:"truncate",title:t.message,children:t.message}),e[11]=t.message,e[12]=f):f=e[12];let l;e[13]!==n?(l=n!==""&&r("div",{className:"truncate font-mono text-[11px] text-muted-foreground",title:n,children:n}),e[13]=n,e[14]=l):l=e[14];let u;e[15]!==f||e[16]!==l?(u=E(V,{className:"max-w-md",children:[f,l]}),e[15]=f,e[16]=l,e[17]=u):u=e[17];const h=t.traceId??"—";let v;e[18]!==h?(v=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:h}),e[18]=h,e[19]=v):v=e[19];const b=t.shardKey??"—";let y;e[20]!==b?(y=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:b}),e[20]=b,e[21]=y):y=e[21];const w=t.userId??"—";let x;e[22]!==w?(x=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:w}),e[22]=w,e[23]=x):x=e[23];let T;return e[24]!==u||e[25]!==v||e[26]!==y||e[27]!==x||e[28]!==o||e[29]!==p||e[30]!==c||e[31]!==s?(T=E(ge,{"data-testid":o,children:[p,c,s,u,v,y,x]}),e[24]=u,e[25]=v,e[26]=y,e[27]=x,e[28]=o,e[29]=p,e[30]=c,e[31]=s,e[32]=T):T=e[32],T},ze=({shardKey:i})=>{const e=Pe(),t=Q(),[a,n]=F(""),[o,d]=F(""),[p,m]=F(""),[{cursor:c,error:s,loading:f,notConfigured:l,rows:u},h]=Le(De,Ve),v=ae(a.trim(),400),b=ae(o.trim(),400),y={...v===""?{}:{functionPathPrefix:v},...p===""?{}:{minLevel:p},...i===""?{}:{shardKey:i},...b===""?{}:{userId:b}},w=JSON.stringify(y),x=ue(w);me(()=>{const g={cancelled:!1};return x.current=w,ne((async()=>{h({type:"loading"});try{const C=await e.queryLogArchive(y);g.cancelled||h({cursor:C.nextCursor,rows:C.rows,type:"loaded"})}catch(C){g.cancelled||h(qe(C)===Be?{type:"notConfigured"}:{message:ie(C),type:"failed"})}})()),()=>{g.cancelled=!0}},[e,w]);const T=async()=>{if(c===void 0)return;const g=w;h({type:"loading"});try{const C=await e.queryLogArchive({...y,cursor:c});x.current===g&&h({cursor:C.nextCursor,rows:C.rows,type:"append"})}catch(C){x.current===g&&h({message:ie(C),type:"pageFailed"})}},R=g=>{n(g.target.value)},N=g=>{d(g.target.value)},L=g=>{m(g.target.value)},S=()=>{ne(T())};return l?r(ee,{action:r("a",{className:"text-sm text-primary underline-offset-4 hover:underline",href:pe,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")}):E("div",{className:"flex flex-col gap-4","data-testid":"lg-archive",children:[E("div",{className:"flex flex-wrap items-center gap-2",children:[r(D,{"aria-label":t("Function path prefix"),className:"h-8 w-48","data-testid":"lg-archive-path",onChange:R,placeholder:t("function path…"),value:a}),r(D,{"aria-label":t("User id"),className:"h-8 w-40","data-testid":"lg-archive-user",onChange:N,placeholder:t("user id…"),value:o}),E("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:L,value:p,children:[r("option",{value:"",children:t("min level")}),re.map(g=>r("option",{value:g,children:g},g))]})]}),s!==null&&r("p",{className:"text-sm text-destructive","data-testid":"lg-archive-error",role:"alert",children:s}),f&&u===null&&s===null&&r("p",{className:"text-sm text-muted-foreground","data-testid":"lg-archive-loading",children:t("Loading…")}),u!==null&&u.length===0&&r(ee,{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.")}),u!==null&&u.length>0&&r("div",{className:"overflow-hidden rounded-xl border border-border shadow-xs",children:E(Oe,{"data-testid":"lg-archive-table",children:[r(_e,{children:E(ge,{children:[r(B,{children:t("Time")}),r(B,{children:t("Level")}),r(B,{children:t("Function")}),r(B,{children:t("Message")}),r(B,{children:t("Trace")}),r(B,{children:t("Shard")}),r(B,{children:t("User")})]})}),r(Fe,{children:u.map((g,C)=>r(Qe,{row:g},`${String(g.ts)}-${String(C)}`))})]})}),c!==void 0&&r("div",{children:r(Ee,{"data-testid":"lg-archive-more",disabled:f,onClick:S,size:"sm",variant:"outline",children:t(f?"Loading…":"Load more")})})]})},Ge=i=>{const e=q(11),{level:t,onToggle:a,selected:n}=i;let o;e[0]!==t||e[1]!==a?(o=()=>{a(t)},e[0]=t,e[1]=a,e[2]=o):o=e[2];const d=o,p=n?"border-border bg-muted font-medium":"border-input text-muted-foreground";let m;e[3]!==p?(m=H("rounded-md border px-2 py-1 text-xs",p),e[3]=p,e[4]=m):m=e[4];const c=`logs-level-${t}`;let s;return e[5]!==t||e[6]!==d||e[7]!==n||e[8]!==m||e[9]!==c?(s=r("button",{"aria-pressed":n,className:m,"data-testid":c,onClick:d,type:"button",children:t}),e[5]=t,e[6]=d,e[7]=n,e[8]=m,e[9]=c,e[10]=s):s=e[10],s},He=i=>{const e=q(68),{levelFilter:t,onLogPathChange:a,onSearchChange:n,onTimeRangeChange:o,onToggleLevel:d,onToggleSummary:p,pathFilter:m,search:c,showSummary:s,timeRange:f}=i,l=Q();let u;e[0]!==l?(u=l("Search messages"),e[0]=l,e[1]=u):u=e[1];let h;e[2]!==l?(h=l("search message"),e[2]=l,e[3]=h):h=e[3];let v;e[4]!==n||e[5]!==c||e[6]!==u||e[7]!==h?(v=r(D,{"aria-label":u,className:"h-8 w-48","data-testid":"lg-search",onChange:n,placeholder:h,value:c}),e[4]=n,e[5]=c,e[6]=u,e[7]=h,e[8]=v):v=e[8];let b;e[9]!==l?(b=l("Function path"),e[9]=l,e[10]=b):b=e[10];let y;e[11]!==l?(y=l("filter path"),e[11]=l,e[12]=y):y=e[12];let w;e[13]!==a||e[14]!==m||e[15]!==b||e[16]!==y?(w=r(D,{"aria-label":b,className:"h-8 w-40","data-testid":"logs-path-filter",onChange:a,placeholder:y,value:m}),e[13]=a,e[14]=m,e[15]=b,e[16]=y,e[17]=w):w=e[17];let x;e[18]!==l?(x=l("Level filter"),e[18]=l,e[19]=x):x=e[19];let T;e[20]!==t||e[21]!==d?(T=re.map(G=>r(Ge,{level:G,onToggle:d,selected:t.has(G)},G)),e[20]=t,e[21]=d,e[22]=T):T=e[22];let R;e[23]!==x||e[24]!==T?(R=r("div",{"aria-label":x,className:"inline-flex items-center gap-1","data-testid":"logs-level-filter",role:"group",children:T}),e[23]=x,e[24]=T,e[25]=R):R=e[25];let N;e[26]!==l?(N=l("Time range"),e[26]=l,e[27]=N):N=e[27];let L;e[28]!==l?(L=l("All time"),e[28]=l,e[29]=L):L=e[29];let S;e[30]!==L?(S=r("option",{value:"all",children:L}),e[30]=L,e[31]=S):S=e[31];let g;e[32]!==l?(g=l("Last 5m"),e[32]=l,e[33]=g):g=e[33];let C;e[34]!==g?(C=r("option",{value:"5m",children:g}),e[34]=g,e[35]=C):C=e[35];let k;e[36]!==l?(k=l("Last 15m"),e[36]=l,e[37]=k):k=e[37];let P;e[38]!==k?(P=r("option",{value:"15m",children:k}),e[38]=k,e[39]=P):P=e[39];let O;e[40]!==l?(O=l("Last hour"),e[40]=l,e[41]=O):O=e[41];let _;e[42]!==O?(_=r("option",{value:"1h",children:O}),e[42]=O,e[43]=_):_=e[43];let A;e[44]!==o||e[45]!==N||e[46]!==S||e[47]!==C||e[48]!==P||e[49]!==_||e[50]!==f?(A=E("select",{"aria-label":N,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:f,children:[S,C,P,_]}),e[44]=o,e[45]=N,e[46]=S,e[47]=C,e[48]=P,e[49]=_,e[50]=f,e[51]=A):A=e[51];const z=s?"border-border bg-muted font-medium":"border-input text-muted-foreground";let M;e[52]!==z?(M=H("h-8 rounded-md border px-3 text-sm",z),e[52]=z,e[53]=M):M=e[53];let U;e[54]!==s||e[55]!==l?(U=l(s?"List":"Summary"),e[54]=s,e[55]=l,e[56]=U):U=e[56];let $;e[57]!==p||e[58]!==s||e[59]!==M||e[60]!==U?($=r("button",{"aria-pressed":s,className:M,"data-testid":"logs-summary-toggle",onClick:p,type:"button",children:U}),e[57]=p,e[58]=s,e[59]=M,e[60]=U,e[61]=$):$=e[61];let K;return e[62]!==A||e[63]!==$||e[64]!==v||e[65]!==w||e[66]!==R?(K=E("div",{className:"flex flex-wrap items-center gap-2",children:[v,w,R,A,$]}),e[62]=A,e[63]=$,e[64]=v,e[65]=w,e[66]=R,e[67]=K):K=e[67],K},We=i=>{const e=q(53),{onOutcomeChange:t,onPathChange:a,onTableChange:n,onUserChange:o,outcomeFilter:d,pathPrefix:p,tableFilter:m,userIdFilter:c}=i,s=Q();let f;e[0]!==s?(f=s("Function path"),e[0]=s,e[1]=f):f=e[1];let l;e[2]!==s?(l=s("file:function"),e[2]=s,e[3]=l):l=e[3];let u;e[4]!==a||e[5]!==p||e[6]!==f||e[7]!==l?(u=r(D,{"aria-label":f,className:"h-8 w-44","data-testid":"lg-req-path",onChange:a,placeholder:l,value:p}),e[4]=a,e[5]=p,e[6]=f,e[7]=l,e[8]=u):u=e[8];let h;e[9]!==s?(h=s("User id"),e[9]=s,e[10]=h):h=e[10];let v;e[11]!==s?(v=s("userId"),e[11]=s,e[12]=v):v=e[12];let b;e[13]!==o||e[14]!==h||e[15]!==v||e[16]!==c?(b=r(D,{"aria-label":h,className:"h-8 w-32","data-testid":"lg-req-user",onChange:o,placeholder:v,value:c}),e[13]=o,e[14]=h,e[15]=v,e[16]=c,e[17]=b):b=e[17];let y;e[18]!==s?(y=s("Table touched"),e[18]=s,e[19]=y):y=e[19];let w;e[20]!==s?(w=s("table"),e[20]=s,e[21]=w):w=e[21];let x;e[22]!==n||e[23]!==y||e[24]!==w||e[25]!==m?(x=r(D,{"aria-label":y,className:"h-8 w-32","data-testid":"lg-req-table",onChange:n,placeholder:w,value:m}),e[22]=n,e[23]=y,e[24]=w,e[25]=m,e[26]=x):x=e[26];let T;e[27]!==s?(T=s("Outcome filter"),e[27]=s,e[28]=T):T=e[28];let R;e[29]!==s?(R=s("all"),e[29]=s,e[30]=R):R=e[30];let N;e[31]!==R?(N=r("option",{value:"all",children:R}),e[31]=R,e[32]=N):N=e[32];let L;e[33]!==s?(L=s("ok"),e[33]=s,e[34]=L):L=e[34];let S;e[35]!==L?(S=r("option",{value:"ok",children:L}),e[35]=L,e[36]=S):S=e[36];let g;e[37]!==s?(g=s("error"),e[37]=s,e[38]=g):g=e[38];let C;e[39]!==g?(C=r("option",{value:"error",children:g}),e[39]=g,e[40]=C):C=e[40];let k;e[41]!==t||e[42]!==d||e[43]!==T||e[44]!==N||e[45]!==S||e[46]!==C?(k=E("select",{"aria-label":T,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:d,children:[N,S,C]}),e[41]=t,e[42]=d,e[43]=T,e[44]=N,e[45]=S,e[46]=C,e[47]=k):k=e[47];let P;return e[48]!==k||e[49]!==u||e[50]!==b||e[51]!==x?(P=E("div",{className:"flex flex-wrap items-center gap-2",children:[u,b,x,k]}),e[48]=k,e[49]=u,e[50]=b,e[51]=x,e[52]=P):P=e[52],P},ve=i=>{const e=q(7),{bucket:t}=i;let a;e[0]!==t.key?(a=r("span",{className:"truncate text-muted-foreground",role:"gridcell",children:t.key}),e[0]=t.key,e[1]=a):a=e[1];let n;e[2]!==t.count?(n=r("span",{className:"shrink-0 tabular-nums",role:"gridcell",children:t.count}),e[2]=t.count,e[3]=n):n=e[3];let o;return e[4]!==a||e[5]!==n?(o=E("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:[a,n]}),e[4]=a,e[5]=n,e[6]=o):o=e[6],o},Ye=i=>{const e=q(31),{summary:t}=i,a=Q();let n;e[0]!==t.total||e[1]!==a?(n=a("{count} entries",{count:t.total}),e[0]=t.total,e[1]=a,e[2]=n):n=e[2];let o;e[3]!==n?(o=r("p",{className:"text-xs text-muted-foreground","data-testid":"logs-summary-total",children:n}),e[3]=n,e[4]=o):o=e[4];let d;e[5]!==a?(d=a("By level"),e[5]=a,e[6]=d):d=e[6];let p;e[7]!==d?(p=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:d}),e[7]=d,e[8]=p):p=e[8];let m;e[9]!==t.byLevel?(m=t.byLevel.map(je),e[9]=t.byLevel,e[10]=m):m=e[10];let c;e[11]!==m?(c=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-levels",role:"grid",children:m}),e[11]=m,e[12]=c):c=e[12];let s;e[13]!==p||e[14]!==c?(s=E("div",{children:[p,c]}),e[13]=p,e[14]=c,e[15]=s):s=e[15];let f;e[16]!==a?(f=a("By function"),e[16]=a,e[17]=f):f=e[17];let l;e[18]!==f?(l=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:f}),e[18]=f,e[19]=l):l=e[19];let u;e[20]!==t.byPath?(u=t.byPath.map(Je),e[20]=t.byPath,e[21]=u):u=e[21];let h;e[22]!==u?(h=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-paths",role:"grid",children:u}),e[22]=u,e[23]=h):h=e[23];let v;e[24]!==h||e[25]!==l?(v=E("div",{children:[l,h]}),e[24]=h,e[25]=l,e[26]=v):v=e[26];let b;return e[27]!==v||e[28]!==o||e[29]!==s?(b=E("div",{className:"flex flex-col gap-4 rounded-xl border border-border bg-card p-4 shadow-xs","data-testid":"logs-summary",children:[o,s,v]}),e[27]=v,e[28]=o,e[29]=s,e[30]=b):b=e[30],b};function je(i){return r(ve,{bucket:i},i.key)}function Je(i){return r(ve,{bucket:i},i.key)}const Xe=i=>{const e=q(46),{liveError:t,onShardKeyChange:a,onShowArchive:n,onShowErrors:o,onShowRequests:d,shardKey:p,view:m}=i,c=Q(),s=m==="requests",f=m==="requests"?"bg-muted font-medium":"text-muted-foreground";let l;e[0]!==f?(l=H("px-3 py-1 text-sm",f),e[0]=f,e[1]=l):l=e[1];let u;e[2]!==c?(u=c("Requests"),e[2]=c,e[3]=u):u=e[3];let h;e[4]!==d||e[5]!==s||e[6]!==l||e[7]!==u?(h=r("button",{"aria-selected":s,className:l,"data-testid":"lg-view-requests",onClick:d,role:"tab",type:"button",children:u}),e[4]=d,e[5]=s,e[6]=l,e[7]=u,e[8]=h):h=e[8];const v=m==="errors",b=m==="errors"?"bg-muted font-medium":"text-muted-foreground";let y;e[9]!==b?(y=H("px-3 py-1 text-sm",b),e[9]=b,e[10]=y):y=e[10];let w;e[11]!==c?(w=c("Errors"),e[11]=c,e[12]=w):w=e[12];let x;e[13]!==o||e[14]!==v||e[15]!==y||e[16]!==w?(x=r("button",{"aria-selected":v,className:y,"data-testid":"lg-view-errors",onClick:o,role:"tab",type:"button",children:w}),e[13]=o,e[14]=v,e[15]=y,e[16]=w,e[17]=x):x=e[17];const T=m==="archive",R=m==="archive"?"bg-muted font-medium":"text-muted-foreground";let N;e[18]!==R?(N=H("px-3 py-1 text-sm",R),e[18]=R,e[19]=N):N=e[19];let L;e[20]!==c?(L=c("Archive"),e[20]=c,e[21]=L):L=e[21];let S;e[22]!==n||e[23]!==T||e[24]!==N||e[25]!==L?(S=r("button",{"aria-selected":T,className:N,"data-testid":"lg-view-archive",onClick:n,role:"tab",type:"button",children:L}),e[22]=n,e[23]=T,e[24]=N,e[25]=L,e[26]=S):S=e[26];let g;e[27]!==x||e[28]!==S||e[29]!==h?(g=E("div",{className:"inline-flex overflow-hidden rounded-lg border border-border",role:"tablist",children:[h,x,S]}),e[27]=x,e[28]=S,e[29]=h,e[30]=g):g=e[30];let C;e[31]!==a||e[32]!==p?(C=r(Ke,{onChange:a,testId:"lg-shard-input",value:p}),e[31]=a,e[32]=p,e[33]=C):C=e[33];let k;e[34]!==t||e[35]!==m?(k=m!=="archive"&&r(Ue,{message:t,prefix:"lg"}),e[34]=t,e[35]=m,e[36]=k):k=e[36];let P;e[37]!==c?(P=c("Open in Cloudflare"),e[37]=c,e[38]=P):P=e[38];let O;e[39]!==P?(O=r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"lg-cf-link",href:pe,rel:"noreferrer",target:"_blank",children:P}),e[39]=P,e[40]=O):O=e[40];let _;return e[41]!==g||e[42]!==C||e[43]!==k||e[44]!==O?(_=E("div",{className:"flex flex-wrap items-center gap-2",children:[g,C,k,O]}),e[41]=g,e[42]=C,e[43]=k,e[44]=O,e[45]=_):_=e[45],_},te=400,Ze=36,et={height:te,overflow:"auto"},be={left:0,position:"absolute",top:0,width:"100%"},tt={error:"destructive",ok:"secondary"},xe=i=>{const e=q(6),{onOpenTrace:t,traceId:a}=i,n=Q();let o;e[0]!==t||e[1]!==n||e[2]!==a?(o=a===void 0?null:r("button",{className:"text-primary underline-offset-2 hover:underline","data-testid":"lg-trace-link",onClick:()=>{t(a)},type:"button",children:n("Trace")}),e[0]=t,e[1]=n,e[2]=a,e[3]=o):o=e[3];let d;return e[4]!==o?(d=r("span",{className:"w-16 shrink-0 text-right",role:"gridcell",children:o}),e[4]=o,e[5]=d):d=e[5],d},rt=i=>{const e=q(13),{entry:t,index:a,measureRef:n,onOpenTrace:o,start:d}=i,p=`translateY(${String(d)}px)`;let m;e[0]!==p?(m={...be,transform:p},e[0]=p,e[1]=m):m=e[1];const c=m;let s;e[2]!==t?(s=r(Me,{entry:t}),e[2]=t,e[3]=s):s=e[3];let f;e[4]!==t.traceId||e[5]!==o?(f=r(xe,{onOpenTrace:o,traceId:t.traceId}),e[4]=t.traceId,e[5]=o,e[6]=f):f=e[6];let l;return e[7]!==a||e[8]!==n||e[9]!==c||e[10]!==s||e[11]!==f?(l=E("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":a,"data-testid":"lg-row",ref:n,role:"row",style:c,children:[s,f]}),e[7]=a,e[8]=n,e[9]=c,e[10]=s,e[11]=f,e[12]=l):l=e[12],l},ce=i=>i.length===0?"—":i.join(", "),st=i=>{const e=q(41),{entry:t,index:a,measureRef:n,onOpenTrace:o,start:d}=i,p=`translateY(${String(d)}px)`;let m;e[0]!==p?(m={...be,transform:p},e[0]=p,e[1]=m):m=e[1];const c=m;let s;e[2]!==t.ts?(s=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=s):s=e[3];let f;e[4]!==s?(f=r("span",{className:"w-40 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:s}),e[4]=s,e[5]=f):f=e[5];const l=tt[t.outcome];let u;e[6]!==t.outcome||e[7]!==l?(u=r("span",{className:"w-16 shrink-0",role:"gridcell",children:r(he,{variant:l,children:t.outcome})}),e[6]=t.outcome,e[7]=l,e[8]=u):u=e[8];let h;e[9]!==t.functionPath?(h=r("span",{className:"w-44 shrink-0 truncate",role:"gridcell",title:t.functionPath,children:t.functionPath}),e[9]=t.functionPath,e[10]=h):h=e[10];const v=t.shardKey??"—";let b;e[11]!==v?(b=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:v}),e[11]=v,e[12]=b):b=e[12];const y=t.userId??"—";let w;e[13]!==y?(w=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:y}),e[13]=y,e[14]=w):w=e[14];let x;e[15]!==t.durationMs?(x=Math.round(t.durationMs),e[15]=t.durationMs,e[16]=x):x=e[16];const T=`${String(x)}ms`;let R;e[17]!==T?(R=r("span",{className:"w-16 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:T}),e[17]=T,e[18]=R):R=e[18];let N;e[19]!==t.errorMessage||e[20]!==t.outcome||e[21]!==t.tablesRead||e[22]!==t.tablesWritten?(N=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]=N):N=e[23];let L;e[24]!==N?(L=r("span",{className:"flex-1 truncate text-muted-foreground",role:"gridcell",children:N}),e[24]=N,e[25]=L):L=e[25];let S;e[26]!==t.traceId||e[27]!==o?(S=r(xe,{onOpenTrace:o,traceId:t.traceId}),e[26]=t.traceId,e[27]=o,e[28]=S):S=e[28];let g;return e[29]!==a||e[30]!==n||e[31]!==c||e[32]!==w||e[33]!==R||e[34]!==L||e[35]!==S||e[36]!==f||e[37]!==u||e[38]!==h||e[39]!==b?(g=E("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":a,"data-testid":"lg-req-row",ref:n,role:"row",style:c,children:[f,u,h,b,w,R,L,S]}),e[29]=a,e[30]=n,e[31]=c,e[32]=w,e[33]=R,e[34]=L,e[35]=S,e[36]=f,e[37]=u,e[38]=h,e[39]=b,e[40]=g):g=e[40],g},de=i=>{const{entries:e}=i??{};return Array.isArray(e)?e:[]},lt=i=>{const e={};return i.functionPathPrefix.trim()!==""&&(e.functionPathPrefix=i.functionPathPrefix.trim()),i.userId.trim()!==""&&(e.userId=i.userId.trim()),i.tableTouched.trim()!==""&&(e.tableTouched=i.tableTouched.trim()),(i.outcome==="ok"||i.outcome==="error")&&(e.outcome=i.outcome),e},ot={"5m":300*1e3,"15m":900*1e3,"1h":3600*1e3},at=(i,e)=>{const t=e.search.trim().toLowerCase(),a=e.path.trim().toLowerCase(),n=e.range==="all"?Number.NEGATIVE_INFINITY:e.now-ot[e.range];return i.filter(o=>e.levels.size>0&&!e.levels.has(o.level)||o.timestamp<n||a!==""&&!(o.functionPath??"").toLowerCase().includes(a)?!1:t===""||o.message.toLowerCase().includes(t)||fe(o.fields).toLowerCase().includes(t))},nt="—",it=i=>{const e=new Map,t=new Map;for(const o of i){e.set(o.level,(e.get(o.level)??0)+1);const d=o.functionPath??nt;t.set(d,(t.get(d)??0)+1)}const a=re.filter(o=>e.has(o)).map(o=>({count:e.get(o)??0,key:o})),n=[...t.entries()].map(([o,d])=>({count:d,key:o})).toSorted((o,d)=>d.count===o.count?o.key.localeCompare(d.key):d.count-o.count);return{byLevel:a,byPath:n,total:i.length}},Wt=({initialShardKey:i})=>{const e=Q(),[t,a]=F("requests"),{queryShardKey:n,setShardKey:o,shardKey:d}=Ie(i),[p,m]=F(""),[c,s]=F(()=>new Set),[f,l]=F(""),[u,h]=F("all"),[v,b]=F(!1),[y,w]=F(""),[x,T]=F(""),[R,N]=F(""),[L,S]=F("all"),g=lt({functionPathPrefix:y,outcome:L,tableTouched:R,userId:x}),C=le(oe.getRequestLog,g,{enabled:t==="requests",live:!0,shardKey:n}),k=le(oe.getLogs,{},{enabled:t==="errors",live:!0,shardKey:n}),P=t==="requests"?C:k,{error:O,errorSource:_,isLoading:A,liveError:z}=P,M=Te(n),U=de(k.data),$=de(C.data);me(()=>{P.data!==void 0&&Re(n)},[P.data,n]);const K=at(U,{levels:c,now:Date.now(),path:f,range:u,search:p}),G=it(K),J=t==="requests"?$.length:K.length,X=t==="errors"&&v,W=Ne(()=>O!==null?"error":J===0?A?X?"summary":"list":"empty":X?"summary":"list",[J,A,O,X]),se=ue(null),Y=Ce({count:J,estimateSize:()=>Ze,getScrollElement:()=>se.current,initialRect:{height:te,width:800},observeElementRect:(I,Z)=>ke(I,Z,te),overscan:8}),ye=Y.getVirtualItems(),we={height:Y.getTotalSize(),position:"relative",width:"100%"};return E("div",{className:"flex flex-col gap-4","data-testid":"lunora-logs",children:[r(Xe,{liveError:z,onShardKeyChange:o,onShowArchive:()=>{a("archive"),b(!1)},onShowErrors:()=>{a("errors"),b(!1)},onShowRequests:()=>{a("requests"),b(!1)},shardKey:d,view:t}),t==="errors"&&r(He,{levelFilter:c,onLogPathChange:I=>{l(I.target.value)},onSearchChange:I=>{m(I.target.value)},onTimeRangeChange:I=>{h(I.target.value)},onToggleLevel:I=>{s(Z=>{const j=new Set(Z);return j.has(I)?j.delete(I):j.add(I),j})},onToggleSummary:()=>{b(I=>!I)},pathFilter:f,search:p,showSummary:v,timeRange:u}),t==="requests"&&r(We,{onOutcomeChange:I=>{S(I.target.value)},onPathChange:I=>{w(I.target.value)},onTableChange:I=>{N(I.target.value)},onUserChange:I=>{T(I.target.value)},outcomeFilter:L,pathPrefix:y,tableFilter:R,userIdFilter:x}),t==="archive"?r(ze,{shardKey:n}):E($e,{children:[W==="error"&&r(Se,{error:_,testId:"lg-error"}),W==="empty"&&r(ee,{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.")}),W==="summary"&&r(Ye,{summary:G}),W==="list"&&r("div",{className:"rounded-xl border border-border shadow-xs","data-testid":"lg-scroll",ref:se,style:et,children:r("div",{"aria-label":e("Recent logs"),"data-testid":"lg-table",role:"grid",style:we,children:ye.map(I=>t==="requests"?r(st,{entry:$[I.index],index:I.index,measureRef:Y.measureElement,onOpenTrace:M,start:I.start},I.key):r(rt,{entry:K[I.index],index:I.index,measureRef:Y.measureElement,onOpenTrace:M,start:I.start},I.key))})})]})]})};export{Wt as LogsPanel,at as filterLogs,it as summarizeLogs};
@@ -1,2 +1,2 @@
1
- import{E as se}from"../packem_shared/error-alert-dQk3g8WI.mjs";import{B as ie}from"../packem_shared/badge-r_5B4LHP.mjs";import{B as v}from"../packem_shared/button-q0UYSmrn.mjs";import{E as oe}from"../packem_shared/empty-state-D7jEML_T.mjs";import{I as ne}from"../packem_shared/input-CXhxesPC.mjs";import{S as le}from"../packem_shared/scroll-area-CXCQH7VT.mjs";import{Separator as de}from"@base-ui/react/separator";import{c as ce}from"../packem_shared/utils-bhneXptQ.mjs";import{jsx as t,jsxs as n,Fragment as me}from"react/jsx-runtime";import{useT as ue}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{c as ae,d as X,b as Z,f as ee,g as he,h as te}from"../packem_shared/internal-CyDwqA67.mjs";import{c as pe}from"react/compiler-runtime";import{useLunora as fe}from"@lunora/react";import{useState as R}from"react";import{u as xe}from"../packem_shared/use-admin-query-CR9mHt0P.mjs";import{useAutoRefresh as be}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{ADMIN_FUNCTIONS as J}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";function ge({className:r,orientation:e="horizontal",...i}){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",r),...i})}const ve=/https?:\/\/[^\s"'<>)]+/i,re=r=>r===void 0?void 0:ve.exec(r)?.[0],N=r=>r===void 0?"":Array.isArray(r)?r.join(", "):r,Ne=/<a\s(?:[^>]*?\s)?href\s*=\s*["'](https?:\/\/[^"'\s]+)["']/iu,we=/&(?:amp|#0*38|#x0*26);/giu,ye=r=>r===void 0?void 0:((r.html===void 0?void 0:Ne.exec(r.html)?.[1])??re(r.text)??re(r.html))?.replaceAll(we,"&"),Ce=(r,e)=>{const i=e.trim().toLowerCase();return i===""?r:r.filter(o=>`${o.subject} ${N(o.to)} ${N(o.cc)}`.toLowerCase().includes(i))},Se=(r,e)=>{if(r.length!==0)return r.find(i=>i.id===e)??r[0]},Te=ae(J.clearCapturedMail),ke=ae(J.sendTestMail),Ae=r=>{const e=pe(38),{limit:i}=r,o=fe();let p;e[0]!==i?(p={limit:i},e[0]=i,e[1]=p):p=e[1];const{data:O,error:w,errorSource:y,isLoading:b,refetch:l}=xe(J.getCapturedMail,p),[C,f]=R(null),[H,S]=R(null),[g,s]=R("html"),[c,B]=R(""),x=O?.entries??[],a=w??C,h=w===null?C:y;let T;e[2]!==o||e[3]!==l?(T=async()=>{f(null);try{await o.query(Te,{},X("")),S(null),l()}catch(m){f(Z(m))}},e[2]=o,e[3]=l,e[4]=T):T=e[4];const D=T;let k;e[5]!==o||e[6]!==l?(k=async()=>{f(null);try{await o.query(ke,{},X("")),l()}catch(m){f(Z(m))}},e[5]=o,e[6]=l,e[7]=k):k=e[7];const q=k;let A;e[8]!==l?(A=()=>{l()},e[8]=l,e[9]=A):A=e[9],be(A,!0);let E;e[10]!==D?(E=()=>{ee(D())},e[10]=D,e[11]=E):E=e[11];const U=E;let L;e[12]!==q?(L=()=>{ee(q())},e[12]=q,e[13]=L):L=e[13];const W=L;let _;e[14]===Symbol.for("react.memo_cache_sentinel")?(_=m=>{B(m.currentTarget.value)},e[14]=_):_=e[14];const K=_;let M;e[15]===Symbol.for("react.memo_cache_sentinel")?(M=m=>{const{id:u}=m.currentTarget.dataset;u!==void 0&&S(u)},e[15]=M):M=e[15];const Q=M;let I;e[16]===Symbol.for("react.memo_cache_sentinel")?(I=m=>{const u=m.currentTarget.dataset.tab;(u==="headers"||u==="html"||u==="text")&&s(u)},e[16]=I):I=e[16];const V=I,j=Ce(x,c),$=Se(j,H),d=ye($);let z;e[17]!==d?(z=()=>{d!==void 0&&he(d)},e[17]=d,e[18]=z):z=e[18];const Y=z;let F;e[19]!==d?(F=()=>{d!==void 0&&"window"in globalThis&&globalThis.window.open(d,"_blank","noopener")},e[19]=d,e[20]=F):F=e[20];const G=F;let P;return e[21]!==x||e[22]!==a||e[23]!==h||e[24]!==c||e[25]!==b||e[26]!==d||e[27]!==U||e[28]!==Y||e[29]!==K||e[30]!==G||e[31]!==Q||e[32]!==V||e[33]!==W||e[34]!==$||e[35]!==g||e[36]!==j?(P={entries:x,error:a,errorSource:h,filter:c,isLoading:b,link:d,onClear:U,onCopyLink:Y,onFilterChange:K,onOpenLink:G,onSelectMessage:Q,onSelectTab:V,onSendTest:W,selected:$,tab:g,visible:j},e[21]=x,e[22]=a,e[23]=h,e[24]=c,e[25]=b,e[26]=d,e[27]=U,e[28]=Y,e[29]=K,e[30]=G,e[31]=Q,e[32]=V,e[33]=W,e[34]=$,e[35]=g,e[36]=j,e[37]=P):P=e[37],P},Ee=`<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data:; style-src 'unsafe-inline'; font-src data:">`,Le=r=>`${Ee}${r}`,Qe=({limit:r=100})=>{const e=ue(),{entries:i,error:o,errorSource:p,filter:O,isLoading:w,link:y,onClear:b,onCopyLink:l,onFilterChange:C,onOpenLink:f,onSelectMessage:H,onSelectTab:S,onSendTest:g,selected:s,tab:c,visible:B}=Ae({limit:r}),x=a=>e(a==="html"?"HTML":a==="text"?"Plain text":"Headers");return n("div",{className:"flex flex-col gap-4","data-testid":"mail-panel",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t(v,{"data-testid":"mail-send-test",onClick:g,size:"sm",type:"button",variant:"outline",children:e("Send test")}),t(v,{"data-testid":"mail-clear",disabled:i.length===0,onClick:b,size:"sm",type:"button",variant:"outline",children:e("Clear inbox")}),i.length>0&&t(ie,{className:"ml-auto","data-testid":"mail-count",variant:"secondary",children:e("{count} messages",{count:i.length})})]}),o!==null&&t(se,{error:p,testId:"mail-error"}),o===null&&!w&&i.length===0&&t(oe,{description:e("Email your app sends in dev is captured here — nothing is delivered."),icon:n("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.")}),i.length>0&&n("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-[minmax(0,22rem)_1fr]","data-testid":"mail-reader",children:[n("div",{className:"flex flex-col gap-2",children:[t(ne,{"aria-label":e("Search messages"),"data-testid":"mail-search",onChange:C,placeholder:e("Filter messages"),type:"search",value:O}),t(le,{className:"max-h-[32rem] rounded-xl border border-border bg-card shadow-xs","data-testid":"mail-list",children:t("ul",{className:"divide-y",children:B.map(a=>{const h=a.id===s?.id;return t("li",{children:n("button",{className:`flex w-full flex-col items-start gap-0.5 px-3 py-2 text-left text-sm hover:bg-muted/60 ${h?"bg-muted":""}`,"data-active":h,"data-id":a.id,"data-testid":"mail-list-item",onClick:H,type:"button",children:[t("span",{className:"w-full truncate font-medium",children:a.subject||e("(no subject)")}),t("span",{className:"w-full truncate text-xs text-muted-foreground",children:N(a.to)}),t("span",{className:"text-xs text-muted-foreground tabular-nums",children:te(a.capturedAt,"—")})]})},a.id)})})})]}),s!==void 0&&n("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:[n("div",{className:"flex flex-col gap-1",children:[t("h2",{className:"truncate text-base font-semibold","data-testid":"mail-subject",children:s.subject||e("(no subject)")}),n("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:s.from??"—"}),t("dt",{children:e("To")}),t("dd",{className:"truncate font-mono",children:N(s.to)}),s.cc!==void 0&&s.cc.length>0&&n(me,{children:[t("dt",{children:e("Cc")}),t("dd",{className:"truncate font-mono",children:N(s.cc)})]}),t("dt",{children:e("Sent")}),t("dd",{className:"tabular-nums",children:te(s.capturedAt,"—")})]})]}),n("div",{className:"flex flex-wrap items-center gap-2","data-testid":"mail-actions",children:[t(v,{"data-testid":"mail-copy-link",disabled:y===void 0,onClick:l,size:"sm",type:"button",variant:"outline",children:e("Copy link")}),t(v,{"data-testid":"mail-open-link",disabled:y===void 0,onClick:f,size:"sm",type:"button",variant:"outline",children:e("Open in new tab")})]}),t(ge,{}),t("div",{className:"flex items-center gap-1","data-testid":"mail-tabs",role:"tablist",children:["html","text","headers"].map(a=>t(v,{"aria-selected":c===a,"data-tab":a,"data-testid":`mail-tab-${a}`,onClick:S,role:"tab",size:"sm",type:"button",variant:c===a?"secondary":"ghost",children:x(a)},a))}),n("div",{className:"min-h-[12rem]",children:[c==="html"&&(s.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:Le(s.html),title:e("Email preview")})),c==="text"&&(s.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:s.text})),c==="headers"&&(s.headers===void 0||Object.keys(s.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(s.headers).map(([a,h])=>`${a}: ${h}`).join(`
1
+ import{E as se}from"../packem_shared/error-alert-DueSEkt-.mjs";import{B as ie}from"../packem_shared/badge-r_5B4LHP.mjs";import{B as v}from"../packem_shared/button-q0UYSmrn.mjs";import{E as oe}from"../packem_shared/empty-state-D7jEML_T.mjs";import{I as ne}from"../packem_shared/input-CXhxesPC.mjs";import{S as le}from"../packem_shared/scroll-area-CXCQH7VT.mjs";import{Separator as de}from"@base-ui/react/separator";import{c as ce}from"../packem_shared/utils-bhneXptQ.mjs";import{jsx as t,jsxs as n,Fragment as me}from"react/jsx-runtime";import{useT as ue}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{c as ae,d as X,b as Z,f as ee,g as he,h as te}from"../packem_shared/internal-Df43vQI0.mjs";import{c as pe}from"react/compiler-runtime";import{useLunora as fe}from"@lunora/react";import{useState as R}from"react";import{u as xe}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{useAutoRefresh as be}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{ADMIN_FUNCTIONS as J}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";function ge({className:r,orientation:e="horizontal",...i}){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",r),...i})}const ve=/https?:\/\/[^\s"'<>)]+/i,re=r=>r===void 0?void 0:ve.exec(r)?.[0],N=r=>r===void 0?"":Array.isArray(r)?r.join(", "):r,Ne=/<a\s(?:[^>]*?\s)?href\s*=\s*["'](https?:\/\/[^"'\s]+)["']/iu,we=/&(?:amp|#0*38|#x0*26);/giu,ye=r=>r===void 0?void 0:((r.html===void 0?void 0:Ne.exec(r.html)?.[1])??re(r.text)??re(r.html))?.replaceAll(we,"&"),Ce=(r,e)=>{const i=e.trim().toLowerCase();return i===""?r:r.filter(o=>`${o.subject} ${N(o.to)} ${N(o.cc)}`.toLowerCase().includes(i))},Se=(r,e)=>{if(r.length!==0)return r.find(i=>i.id===e)??r[0]},Te=ae(J.clearCapturedMail),ke=ae(J.sendTestMail),Ae=r=>{const e=pe(38),{limit:i}=r,o=fe();let p;e[0]!==i?(p={limit:i},e[0]=i,e[1]=p):p=e[1];const{data:O,error:w,errorSource:y,isLoading:b,refetch:l}=xe(J.getCapturedMail,p),[C,f]=R(null),[H,S]=R(null),[g,s]=R("html"),[c,B]=R(""),x=O?.entries??[],a=w??C,h=w===null?C:y;let T;e[2]!==o||e[3]!==l?(T=async()=>{f(null);try{await o.query(Te,{},X("")),S(null),l()}catch(m){f(Z(m))}},e[2]=o,e[3]=l,e[4]=T):T=e[4];const D=T;let k;e[5]!==o||e[6]!==l?(k=async()=>{f(null);try{await o.query(ke,{},X("")),l()}catch(m){f(Z(m))}},e[5]=o,e[6]=l,e[7]=k):k=e[7];const q=k;let A;e[8]!==l?(A=()=>{l()},e[8]=l,e[9]=A):A=e[9],be(A,!0);let E;e[10]!==D?(E=()=>{ee(D())},e[10]=D,e[11]=E):E=e[11];const U=E;let L;e[12]!==q?(L=()=>{ee(q())},e[12]=q,e[13]=L):L=e[13];const W=L;let _;e[14]===Symbol.for("react.memo_cache_sentinel")?(_=m=>{B(m.currentTarget.value)},e[14]=_):_=e[14];const K=_;let M;e[15]===Symbol.for("react.memo_cache_sentinel")?(M=m=>{const{id:u}=m.currentTarget.dataset;u!==void 0&&S(u)},e[15]=M):M=e[15];const Q=M;let I;e[16]===Symbol.for("react.memo_cache_sentinel")?(I=m=>{const u=m.currentTarget.dataset.tab;(u==="headers"||u==="html"||u==="text")&&s(u)},e[16]=I):I=e[16];const V=I,j=Ce(x,c),$=Se(j,H),d=ye($);let z;e[17]!==d?(z=()=>{d!==void 0&&he(d)},e[17]=d,e[18]=z):z=e[18];const Y=z;let F;e[19]!==d?(F=()=>{d!==void 0&&"window"in globalThis&&globalThis.window.open(d,"_blank","noopener")},e[19]=d,e[20]=F):F=e[20];const G=F;let P;return e[21]!==x||e[22]!==a||e[23]!==h||e[24]!==c||e[25]!==b||e[26]!==d||e[27]!==U||e[28]!==Y||e[29]!==K||e[30]!==G||e[31]!==Q||e[32]!==V||e[33]!==W||e[34]!==$||e[35]!==g||e[36]!==j?(P={entries:x,error:a,errorSource:h,filter:c,isLoading:b,link:d,onClear:U,onCopyLink:Y,onFilterChange:K,onOpenLink:G,onSelectMessage:Q,onSelectTab:V,onSendTest:W,selected:$,tab:g,visible:j},e[21]=x,e[22]=a,e[23]=h,e[24]=c,e[25]=b,e[26]=d,e[27]=U,e[28]=Y,e[29]=K,e[30]=G,e[31]=Q,e[32]=V,e[33]=W,e[34]=$,e[35]=g,e[36]=j,e[37]=P):P=e[37],P},Ee=`<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data:; style-src 'unsafe-inline'; font-src data:">`,Le=r=>`${Ee}${r}`,Qe=({limit:r=100})=>{const e=ue(),{entries:i,error:o,errorSource:p,filter:O,isLoading:w,link:y,onClear:b,onCopyLink:l,onFilterChange:C,onOpenLink:f,onSelectMessage:H,onSelectTab:S,onSendTest:g,selected:s,tab:c,visible:B}=Ae({limit:r}),x=a=>e(a==="html"?"HTML":a==="text"?"Plain text":"Headers");return n("div",{className:"flex flex-col gap-4","data-testid":"mail-panel",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t(v,{"data-testid":"mail-send-test",onClick:g,size:"sm",type:"button",variant:"outline",children:e("Send test")}),t(v,{"data-testid":"mail-clear",disabled:i.length===0,onClick:b,size:"sm",type:"button",variant:"outline",children:e("Clear inbox")}),i.length>0&&t(ie,{className:"ml-auto","data-testid":"mail-count",variant:"secondary",children:e("{count} messages",{count:i.length})})]}),o!==null&&t(se,{error:p,testId:"mail-error"}),o===null&&!w&&i.length===0&&t(oe,{description:e("Email your app sends in dev is captured here — nothing is delivered."),icon:n("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.")}),i.length>0&&n("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-[minmax(0,22rem)_1fr]","data-testid":"mail-reader",children:[n("div",{className:"flex flex-col gap-2",children:[t(ne,{"aria-label":e("Search messages"),"data-testid":"mail-search",onChange:C,placeholder:e("Filter messages"),type:"search",value:O}),t(le,{className:"max-h-[32rem] rounded-xl border border-border bg-card shadow-xs","data-testid":"mail-list",children:t("ul",{className:"divide-y",children:B.map(a=>{const h=a.id===s?.id;return t("li",{children:n("button",{className:`flex w-full flex-col items-start gap-0.5 px-3 py-2 text-left text-sm hover:bg-muted/60 ${h?"bg-muted":""}`,"data-active":h,"data-id":a.id,"data-testid":"mail-list-item",onClick:H,type:"button",children:[t("span",{className:"w-full truncate font-medium",children:a.subject||e("(no subject)")}),t("span",{className:"w-full truncate text-xs text-muted-foreground",children:N(a.to)}),t("span",{className:"text-xs text-muted-foreground tabular-nums",children:te(a.capturedAt,"—")})]})},a.id)})})})]}),s!==void 0&&n("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:[n("div",{className:"flex flex-col gap-1",children:[t("h2",{className:"truncate text-base font-semibold","data-testid":"mail-subject",children:s.subject||e("(no subject)")}),n("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:s.from??"—"}),t("dt",{children:e("To")}),t("dd",{className:"truncate font-mono",children:N(s.to)}),s.cc!==void 0&&s.cc.length>0&&n(me,{children:[t("dt",{children:e("Cc")}),t("dd",{className:"truncate font-mono",children:N(s.cc)})]}),t("dt",{children:e("Sent")}),t("dd",{className:"tabular-nums",children:te(s.capturedAt,"—")})]})]}),n("div",{className:"flex flex-wrap items-center gap-2","data-testid":"mail-actions",children:[t(v,{"data-testid":"mail-copy-link",disabled:y===void 0,onClick:l,size:"sm",type:"button",variant:"outline",children:e("Copy link")}),t(v,{"data-testid":"mail-open-link",disabled:y===void 0,onClick:f,size:"sm",type:"button",variant:"outline",children:e("Open in new tab")})]}),t(ge,{}),t("div",{className:"flex items-center gap-1","data-testid":"mail-tabs",role:"tablist",children:["html","text","headers"].map(a=>t(v,{"aria-selected":c===a,"data-tab":a,"data-testid":`mail-tab-${a}`,onClick:S,role:"tab",size:"sm",type:"button",variant:c===a?"secondary":"ghost",children:x(a)},a))}),n("div",{className:"min-h-[12rem]",children:[c==="html"&&(s.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:Le(s.html),title:e("Email preview")})),c==="text"&&(s.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:s.text})),c==="headers"&&(s.headers===void 0||Object.keys(s.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(s.headers).map(([a,h])=>`${a}: ${h}`).join(`
2
2
  `)}))]})]})]})]})};export{Qe as MailPanel};
@@ -1 +1 @@
1
- import{useLunora as pt}from"@lunora/react";import{useState as pe,useRef as Ge,useEffect as tt,useMemo as xt}from"react";import{L as bt}from"../packem_shared/live-status-BuJdUZFU.mjs";import{ShardInput as yt}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{B as rt}from"../packem_shared/button-q0UYSmrn.mjs";import{u as Ue}from"../packem_shared/use-admin-query-CR9mHt0P.mjs";import{u as vt}from"../packem_shared/use-open-trace-DdGxsEB9.mjs";import{u as Nt}from"../packem_shared/use-shard-key-BsP3o5wT.mjs";import{useT as xe}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as Oe}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{c as St}from"../packem_shared/cf-links-CBJ5SywP.mjs";import{n as wt,l as Xe,f as qt,d as Tt,b as _t,c as Ct}from"../packem_shared/internal-CyDwqA67.mjs";import{r as Rt,l as kt}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{c as Fe}from"react/compiler-runtime";import{f as $t}from"../packem_shared/log-fields-SBxKyBug.mjs";import{B as et}from"../packem_shared/badge-r_5B4LHP.mjs";import{C as he,a as ge,c as Be,d as Mt,b as je}from"../packem_shared/card--2hKx4L2.mjs";import{b as Je,e as oe,T as dt,c as de,a as mt,d as ut}from"../packem_shared/table-D0SBiDu-.mjs";import{S as ft}from"../packem_shared/sparkline-B_sPPO_8.mjs";import{jsxs as n,jsx as t,Fragment as Ye}from"react/jsx-runtime";import{aggregateMetrics as It,computeLatencyPercentiles as Dt,enrichQueryStats as Et,shardsToAggregate as Ft}from"../packem_shared/aggregateMetrics-5zEJC6Ju.mjs";import{S as me}from"../packem_shared/stat-card-D0Fe04cX.mjs";import{ResponsiveContainer as st,AreaChart as At,CartesianGrid as lt,XAxis as it,YAxis as at,Tooltip as nt,Area as Ot,LineChart as Lt,Line as zt}from"recharts";import{E as Kt}from"../packem_shared/empty-state-D7jEML_T.mjs";import{c as Pt}from"../packem_shared/utils-bhneXptQ.mjs";import{S as Bt,a as jt,c as Qe,b as Qt,d as Ht}from"../packem_shared/select-DPyS18Vy.mjs";const Ut=/["\\\u0000-\u001F\uD800-\uDFFF]/,ot=l=>Ut.test(l)?JSON.stringify(l):`"${l}"`,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(typeof l=="number"){if(Number.isNaN(l))return"nan";if(l===1/0)return"inf";if(l===-1/0)return"-inf";if(Object.is(l,-0))return"-0"}if(typeof l=="string")return ot(l);if(l===null||typeof l!="object")return JSON.stringify(l);if(Array.isArray(l)){let o="[";for(let i=0;i<l.length;i++)i>0&&(o+=","),o+=Ze(l[i]);return o+"]"}const e=Object.getPrototypeOf(l);if(e!==null&&e!==Object.prototype){const o=l.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${o} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const a=l,s=Object.keys(a).sort();let r="{",u=!0;for(const o of s){const i=a[o];i!==void 0&&(u?u=!1:r+=",",r+=ot(o),r+=":",r+=Ze(i))}return r+"}"},ht=(l,e,a)=>`${l}:${e}:${Ze(a??{})}`,gt=(l,e)=>l==="gauge"?e.last:l==="histogram"?e.sum/Math.max(1,e.count):e.sum,Jt=(l,e)=>gt(l,e),Vt=l=>gt(l.kind,l),We=l=>Number.isInteger(l)?l.toLocaleString():l.toLocaleString(void 0,{maximumFractionDigits:2}),Gt=l=>Array.isArray(l?.series)?l.series:[],Wt="FUNCTION_NOT_FOUND",Xt=l=>{const e=new Map;if(!Array.isArray(l?.series))return e;for(const a of l.series)e.set(ht(a.kind,a.name,a.attributes),a.points);return e},Yt={counter:"secondary",gauge:"default",histogram:"outline"},Zt=l=>{const e=Fe(18),{name:a,onOpenTrace:s,traceId:r}=l,u=xe();if(r===void 0){let d;return e[0]===Symbol.for("react.memo_cache_sentinel")?(d=t("span",{className:"text-muted-foreground",children:"—"}),e[0]=d):d=e[0],d}let o;e[1]!==r?(o=r.slice(0,8),e[1]=r,e[2]=o):o=e[2];const i=o;if(s===void 0){const d=`mt-instrument-trace-${a}`;let g;return e[3]!==i||e[4]!==d||e[5]!==r?(g=t("span",{className:"text-muted-foreground","data-testid":d,title:r,children:i}),e[3]=i,e[4]=d,e[5]=r,e[6]=g):g=e[6],g}const f=`mt-instrument-trace-${a}`;let v;e[7]!==s||e[8]!==r?(v=()=>{s(r)},e[7]=s,e[8]=r,e[9]=v):v=e[9];let w;e[10]!==u||e[11]!==r?(w=u("Open the exemplar trace {trace}",{trace:r}),e[10]=u,e[11]=r,e[12]=w):w=e[12];let h;return e[13]!==i||e[14]!==f||e[15]!==v||e[16]!==w?(h=t("button",{className:"text-primary underline-offset-4 hover:underline","data-testid":f,onClick:v,title:w,type:"button",children:i}),e[13]=i,e[14]=f,e[15]=v,e[16]=w,e[17]=h):h=e[17],h},er=l=>{const e=Fe(105),{onOpenTrace:a,shardKey:s}=l,r=xe();let u;e[0]===Symbol.for("react.memo_cache_sentinel")?(u={},e[0]=u):u=e[0];let o;e[1]!==s?(o={live:!0,shardKey:s},e[1]=s,e[2]=o):o=e[2];const{data:i,error:f,errorSource:v}=Ue(Oe.getMetricSeries,u,o);let w;e[3]===Symbol.for("react.memo_cache_sentinel")?(w={},e[3]=w):w=e[3];let h;e[4]!==s?(h={live:!0,shardKey:s},e[4]=s,e[5]=h):h=e[5];const{data:d}=Ue(Oe.getMetricHistory,w,h);let g,N,q,C,c,x,p,b,T,R,S,M,$;if(e[6]!==i||e[7]!==f||e[8]!==v||e[9]!==d||e[10]!==a||e[11]!==r){b=Symbol.for("react.early_return_sentinel");e:{const A=Gt(i),O=wt(v)===Wt;if(f!==null&&!O){let m;e[25]!==r?(m=r("Instruments"),e[25]=r,e[26]=m):m=e[26];let K;e[27]!==m?(K=t("h3",{className:"text-sm font-semibold text-foreground",children:m}),e[27]=m,e[28]=K):K=e[28];let B;e[29]!==f||e[30]!==r?(B=r("Instruments unavailable: {error}",{error:f}),e[29]=f,e[30]=r,e[31]=B):B=e[31];let j;e[32]!==B?(j=t("span",{className:"text-xs text-muted-foreground","data-testid":"mt-instruments-error",role:"status",children:B}),e[32]=B,e[33]=j):j=e[33];let Q;e[34]!==K||e[35]!==j?(Q=n("section",{className:"flex flex-col gap-2","data-testid":"mt-instruments",children:[K,j]}),e[34]=K,e[35]=j,e[36]=Q):Q=e[36],b=Q;break e}if(A.length===0){b=null;break e}const k=Xt(d);let z;e[37]!==r?(z=m=>r(m==="counter"?"Counter":m==="gauge"?"Gauge":"Histogram"),e[37]=r,e[38]=z):z=e[38];const P=z;c="flex flex-col gap-2",x="mt-instruments";let L;e[39]!==r?(L=r("Instruments"),e[39]=r,e[40]=L):L=e[40],e[41]!==L?(p=t("h3",{className:"text-sm font-semibold text-foreground",children:L}),e[41]=L,e[42]=p):p=e[42],C=he,$="overflow-hidden py-0",q=ge,M="px-0",N=dt,R="mt-instruments-table";let U;e[43]!==r?(U=r("name"),e[43]=r,e[44]=U):U=e[44];let J;e[45]!==U?(J=t(de,{children:U}),e[45]=U,e[46]=J):J=e[46];let V;e[47]!==r?(V=r("kind"),e[47]=r,e[48]=V):V=e[48];let G;e[49]!==V?(G=t(de,{children:V}),e[49]=V,e[50]=G):G=e[50];let W;e[51]!==r?(W=r("value"),e[51]=r,e[52]=W):W=e[52];let X;e[53]!==W?(X=t(de,{className:"text-right",children:W}),e[53]=W,e[54]=X):X=e[54];let Y;e[55]!==r?(Y=r("count"),e[55]=r,e[56]=Y):Y=e[56];let Z;e[57]!==Y?(Z=t(de,{className:"text-right",children:Y}),e[57]=Y,e[58]=Z):Z=e[58];let ee;e[59]!==r?(ee=r("range"),e[59]=r,e[60]=ee):ee=e[60];let te;e[61]!==ee?(te=t(de,{className:"text-right",children:ee}),e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==r?(re=r("trend"),e[63]=r,e[64]=re):re=e[64];let se;e[65]!==re?(se=t(de,{children:re}),e[65]=re,e[66]=se):se=e[66];let le;e[67]!==r?(le=r("trace"),e[67]=r,e[68]=le):le=e[68];let ie;e[69]!==le?(ie=t(de,{children:le}),e[69]=le,e[70]=ie):ie=e[70];let ae;e[71]!==r?(ae=r("dimensions"),e[71]=r,e[72]=ae):ae=e[72];let ne;e[73]!==ae?(ne=t(de,{children:ae}),e[73]=ae,e[74]=ne):ne=e[74],e[75]!==J||e[76]!==G||e[77]!==X||e[78]!==Z||e[79]!==te||e[80]!==se||e[81]!==ie||e[82]!==ne?(S=t(mt,{children:n(Je,{children:[J,G,X,Z,te,se,ie,ne]})}),e[75]=J,e[76]=G,e[77]=X,e[78]=Z,e[79]=te,e[80]=se,e[81]=ie,e[82]=ne,e[83]=S):S=e[83],g=ut,T=A.map(m=>{const K=$t(m.attributes),B=ht(m.kind,m.name,m.attributes),Q=(k.get(B)??[]).map(ue=>Jt(m.kind,ue));return n(Je,{"data-testid":`mt-instrument-${m.name}`,children:[t(oe,{className:"font-mono text-xs",title:m.functionPath,children:m.name}),t(oe,{children:t(et,{variant:Yt[m.kind],children:P(m.kind)})}),t(oe,{className:"text-right font-mono tabular-nums","data-testid":`mt-instrument-value-${m.name}`,children:We(Vt(m))}),t(oe,{className:"text-right tabular-nums text-muted-foreground",children:m.count.toLocaleString()}),t(oe,{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:m.min===m.max?"—":`${We(m.min)}–${We(m.max)}`}),t(oe,{children:Q.length>=2?t(ft,{ariaLabel:r("{name} trend",{name:m.name}),className:"h-6 w-24 text-foreground",series:Q,testId:`mt-instrument-trend-${m.name}`}):t("span",{className:"text-xs text-muted-foreground",children:"—"})}),t(oe,{className:"font-mono text-xs",children:t(Zt,{name:m.name,onOpenTrace:a,traceId:m.exemplarTraceId})}),t(oe,{className:"max-w-64 truncate font-mono text-xs text-muted-foreground",title:K,children:K===""?"—":K})]},B)})}e[6]=i,e[7]=f,e[8]=v,e[9]=d,e[10]=a,e[11]=r,e[12]=g,e[13]=N,e[14]=q,e[15]=C,e[16]=c,e[17]=x,e[18]=p,e[19]=b,e[20]=T,e[21]=R,e[22]=S,e[23]=M,e[24]=$}else g=e[12],N=e[13],q=e[14],C=e[15],c=e[16],x=e[17],p=e[18],b=e[19],T=e[20],R=e[21],S=e[22],M=e[23],$=e[24];if(b!==Symbol.for("react.early_return_sentinel"))return b;let I;e[84]!==g||e[85]!==T?(I=t(g,{children:T}),e[84]=g,e[85]=T,e[86]=I):I=e[86];let _;e[87]!==N||e[88]!==I||e[89]!==R||e[90]!==S?(_=n(N,{"data-testid":R,children:[S,I]}),e[87]=N,e[88]=I,e[89]=R,e[90]=S,e[91]=_):_=e[91];let y;e[92]!==q||e[93]!==_||e[94]!==M?(y=t(q,{className:M,children:_}),e[92]=q,e[93]=_,e[94]=M,e[95]=y):y=e[95];let D;e[96]!==C||e[97]!==y||e[98]!==$?(D=t(C,{className:$,children:y}),e[96]=C,e[97]=y,e[98]=$,e[99]=D):D=e[99];let F;return e[100]!==c||e[101]!==x||e[102]!==p||e[103]!==D?(F=n("section",{className:c,"data-testid":x,children:[p,D]}),e[100]=c,e[101]=x,e[102]=p,e[103]=D,e[104]=F):F=e[104],F},tr=l=>{const e=Fe(74),{aggregate:a,shardResults:s}=l,r=xe();let u;e[0]!==r?(u=r("Shards"),e[0]=r,e[1]=u):u=e[1];let o;e[2]!==a.failed||e[3]!==a.reachable||e[4]!==r?(o=a.failed>0?r("{reachable} reachable, {failed} unreachable",{failed:a.failed,reachable:a.reachable}):r("{reachable} reachable",{reachable:a.reachable}),e[2]=a.failed,e[3]=a.reachable,e[4]=r,e[5]=o):o=e[5];let i;e[6]!==u||e[7]!==o?(i=t(me,{label:u,testId:"mt-agg-shards",value:o}),e[6]=u,e[7]=o,e[8]=i):i=e[8];let f;e[9]!==r?(f=r("Total requests"),e[9]=r,e[10]=f):f=e[10];let v;e[11]!==a.totalRequests||e[12]!==f?(v=t(me,{label:f,testId:"mt-agg-requests",value:a.totalRequests}),e[11]=a.totalRequests,e[12]=f,e[13]=v):v=e[13];let w;e[14]!==r?(w=r("Total errors"),e[14]=r,e[15]=w):w=e[15];let h;e[16]!==a.totalErrors||e[17]!==w?(h=t(me,{label:w,testId:"mt-agg-errors",value:a.totalErrors}),e[16]=a.totalErrors,e[17]=w,e[18]=h):h=e[18];let d;e[19]!==r?(d=r("Total database size"),e[19]=r,e[20]=d):d=e[20];let g;e[21]!==a.totalDatabaseSize?(g=Xe(a.totalDatabaseSize),e[21]=a.totalDatabaseSize,e[22]=g):g=e[22];let N;e[23]!==d||e[24]!==g?(N=t(me,{label:d,testId:"mt-agg-db-size",value:g}),e[23]=d,e[24]=g,e[25]=N):N=e[25];let q;e[26]!==r?(q=r("Combined cache hit rate"),e[26]=r,e[27]=q):q=e[27];let C;e[28]!==a.hitRate||e[29]!==r?(C=a.hitRate===null?r("no cache configured"):`${(a.hitRate*100).toFixed(1)}%`,e[28]=a.hitRate,e[29]=r,e[30]=C):C=e[30];let c;e[31]!==q||e[32]!==C?(c=t(me,{label:q,testId:"mt-agg-cache",value:C}),e[31]=q,e[32]=C,e[33]=c):c=e[33];let x;e[34]!==N||e[35]!==c||e[36]!==i||e[37]!==v||e[38]!==h?(x=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":"mt-aggregate-stats",children:[i,v,h,N,c]}),e[34]=N,e[35]=c,e[36]=i,e[37]=v,e[38]=h,e[39]=x):x=e[39];let p;e[40]!==r?(p=r("shard"),e[40]=r,e[41]=p):p=e[41];let b;e[42]!==p?(b=t(de,{children:p}),e[42]=p,e[43]=b):b=e[43];let T;e[44]!==r?(T=r("requests"),e[44]=r,e[45]=T):T=e[45];let R;e[46]!==T?(R=t(de,{children:T}),e[46]=T,e[47]=R):R=e[47];let S;e[48]!==r?(S=r("errors"),e[48]=r,e[49]=S):S=e[49];let M;e[50]!==S?(M=t(de,{children:S}),e[50]=S,e[51]=M):M=e[51];let $;e[52]!==r?($=r("db size"),e[52]=r,e[53]=$):$=e[53];let I;e[54]!==$?(I=t(de,{children:$}),e[54]=$,e[55]=I):I=e[55];let _;e[56]!==b||e[57]!==R||e[58]!==M||e[59]!==I?(_=t(mt,{children:n(Je,{children:[b,R,M,I]})}),e[56]=b,e[57]=R,e[58]=M,e[59]=I,e[60]=_):_=e[60];let y;if(e[61]!==s||e[62]!==r){let O;e[64]!==r?(O=k=>n(Je,{"data-testid":`mt-agg-row-${k.shard}`,children:[t(oe,{children:k.shard}),k.metrics===null?t(oe,{className:"text-destructive",colSpan:3,children:k.error??r("unreachable")}):n(Ye,{children:[t(oe,{className:"tabular-nums",children:k.metrics.requests}),t(oe,{className:"tabular-nums",children:k.metrics.errors}),t(oe,{className:"tabular-nums",children:Xe(k.metrics.databaseSize)})]})]},k.shard),e[64]=r,e[65]=O):O=e[65],y=s.map(O),e[61]=s,e[62]=r,e[63]=y}else y=e[63];let D;e[66]!==y?(D=t(ut,{children:y}),e[66]=y,e[67]=D):D=e[67];let F;e[68]!==_||e[69]!==D?(F=t(he,{className:"overflow-hidden py-0",children:t(ge,{className:"px-0",children:n(dt,{"data-testid":"mt-agg-table",children:[_,D]})})}),e[68]=_,e[69]=D,e[70]=F):F=e[70];let A;return e[71]!==x||e[72]!==F?(A=n("div",{className:"flex flex-col gap-4","data-testid":"mt-aggregate-view",children:[x,F]}),e[71]=x,e[72]=F,e[73]=A):A=e[73],A},rr=l=>{const e=Math.floor(l/1e3),a=Math.floor(e/3600),s=Math.floor(e%3600/60),r=e%60;return a>0?`${a.toString()}h ${s.toString()}m`:s>0?`${s.toString()}m ${r.toString()}s`:`${r.toString()}s`},sr=(l,e)=>{const a=l+e;return a===0?"—":`${(l/a*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=Fe(75),{currentDelta:a,errorRate:s,history:r,latencyPercentiles:u,metrics:o}=l,i=xe(),{cache:f}=o;let v;e[0]!==r||e[1]!==i?(v=r.length>=2?t(ft,{ariaLabel:i("Requests per interval over time"),className:"h-7 w-24 text-foreground",series:r,testId:"mt-sparkline"}):void 0,e[0]=r,e[1]=i,e[2]=v):v=e[2];let w;e[3]!==a||e[4]!==r.length||e[5]!==i?(w=r.length>=2?n(Ye,{children:[t("span",{className:"font-semibold text-foreground",children:`+${a.toLocaleString()}`})," ",i("last interval")]}):t("span",{"data-testid":"mt-sparkline-empty",children:i("collecting samples…")}),e[3]=a,e[4]=r.length,e[5]=i,e[6]=w):w=e[6];let h;e[7]!==i?(h=i("Requests"),e[7]=i,e[8]=h):h=e[8];let d;e[9]!==o.requests||e[10]!==v||e[11]!==w||e[12]!==h?(d=t(me,{chart:v,footer:w,label:h,testId:"mt-requests",value:o.requests}),e[9]=o.requests,e[10]=v,e[11]=w,e[12]=h,e[13]=d):d=e[13];let g;e[14]!==s||e[15]!==i?(g=i("{rate} error rate",{rate:s}),e[14]=s,e[15]=i,e[16]=g):g=e[16];let N;e[17]!==i?(N=i("Errors"),e[17]=i,e[18]=N):N=e[18];let q;e[19]!==s||e[20]!==o.errors?(q=n(Ye,{children:[o.errors," (",s,")"]}),e[19]=s,e[20]=o.errors,e[21]=q):q=e[21];let C;e[22]!==g||e[23]!==N||e[24]!==q?(C=t(me,{footer:g,label:N,testId:"mt-errors",value:q}),e[22]=g,e[23]=N,e[24]=q,e[25]=C):C=e[25];let c;e[26]!==u.p90?(c=u.p90>0?`P90 ${ct(u.p90)}`:void 0,e[26]=u.p90,e[27]=c):c=e[27];let x;e[28]!==i?(x=i("P95 latency"),e[28]=i,e[29]=x):x=e[29];let p;e[30]!==u.p95?(p=u.p95>0?ct(u.p95):"—",e[30]=u.p95,e[31]=p):p=e[31];let b;e[32]!==x||e[33]!==p||e[34]!==c?(b=t(me,{footer:c,label:x,testId:"mt-p95",value:p}),e[32]=x,e[33]=p,e[34]=c,e[35]=b):b=e[35];let T;e[36]!==f||e[37]!==i?(T=f?`${f.entries.toLocaleString()} ${i("cache entries")}`:void 0,e[36]=f,e[37]=i,e[38]=T):T=e[38];let R;e[39]!==i?(R=i("Database size"),e[39]=i,e[40]=R):R=e[40];let S;e[41]!==o.databaseSize?(S=Xe(o.databaseSize),e[41]=o.databaseSize,e[42]=S):S=e[42];let M;e[43]!==T||e[44]!==R||e[45]!==S?(M=t(me,{footer:T,label:R,testId:"mt-db-size",value:S}),e[43]=T,e[44]=R,e[45]=S,e[46]=M):M=e[46];let $;e[47]!==i?($=i("Shard"),e[47]=i,e[48]=$):$=e[48];let I;e[49]!==o.shard||e[50]!==$?(I=t(me,{label:$,testId:"mt-shard",value:o.shard}),e[49]=o.shard,e[50]=$,e[51]=I):I=e[51];let _;e[52]!==i?(_=i("Uptime"),e[52]=i,e[53]=_):_=e[53];let y;e[54]!==o.uptimeMs?(y=rr(o.uptimeMs),e[54]=o.uptimeMs,e[55]=y):y=e[55];let D;e[56]!==_||e[57]!==y?(D=t(me,{label:_,testId:"mt-uptime",value:y}),e[56]=_,e[57]=y,e[58]=D):D=e[58];let F;e[59]!==i?(F=i("Cache hit rate"),e[59]=i,e[60]=F):F=e[60];let A;e[61]!==f||e[62]!==i?(A=f?i("{rate} ({count} entries)",{count:f.entries,rate:sr(f.hits,f.misses)}):i("no cache configured"),e[61]=f,e[62]=i,e[63]=A):A=e[63];let O;e[64]!==F||e[65]!==A?(O=t(me,{label:F,testId:"mt-cache",value:A}),e[64]=F,e[65]=A,e[66]=O):O=e[66];let k;return e[67]!==b||e[68]!==M||e[69]!==I||e[70]!==D||e[71]!==O||e[72]!==d||e[73]!==C?(k=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4","data-testid":"mt-stats",children:[d,C,b,M,I,D,O]}),e[67]=b,e[68]=M,e[69]=I,e[70]=D,e[71]=O,e[72]=d,e[73]=C,e[74]=k):k=e[74],k},Ve=l=>l>=100?"critical":l>=50?"warning":"good",Ae=l=>l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,He=l=>l>=1e9?`${(l/1e9).toFixed(1)}B`:l>=1e6?`${(l/1e6).toFixed(1)}M`:l>=1e3?`${(l/1e3).toFixed(1)}K`:l.toLocaleString(),ir=l=>{const e=Fe(3),{level:a}=l;if(a==="critical"){let r;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(et,{variant:"destructive",children:"Slow"}),e[0]=r):r=e[0],r}if(a==="warning"){let r;return e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t("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]=r):r=e[1],r}let s;return e[2]===Symbol.for("react.memo_cache_sentinel")?(s=t("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]=s):s=e[2],s},ar=(l,e)=>{const a=[...l];return a.sort((s,r)=>{switch(e){case"avgTime":return r.avgDurationMs-s.avgDurationMs;case"execCount":return r.execCount-s.execCount;case"rowsRead":return r.rowsRead-s.rowsRead;default:return r.totalDurationMs-s.totalDurationMs}}),a},nr=l=>{const e=Fe(161),{queryStats:a}=l,s=xe(),[r,u]=pe("totalTime");let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=new Set,e[0]=o):o=e[0];const[i,f]=pe(o);let v;e[1]===Symbol.for("react.memo_cache_sentinel")?(v=$=>{$!==null&&u($)},e[1]=v):v=e[1];const w=v;let h,d,g,N,q,C,c,x,p,b;if(e[2]!==i||e[3]!==a||e[4]!==r||e[5]!==s){g=Symbol.for("react.early_return_sentinel");e:{const $=ar(a,r);let I;e[16]!==a?(I=a.filter(or),e[16]=a,e[17]=I):I=e[17];const _=I.length;let y;e[18]!==a?(y=a.filter(cr),e[18]=a,e[19]=y):y=e[19];const D=y.length;let F;e[20]!==a?(F=a.filter(dr),e[20]=a,e[21]=F):F=e[21];const A=F.length;let O;e[22]===Symbol.for("react.memo_cache_sentinel")?(O=E=>{f(ce=>{const H=new Set(ce);return H.has(E)?H.delete(E):H.add(E),H})},e[22]=O):O=e[22];const k=O;if(a.length===0){let E;e[23]!==s?(E=s("No query insights yet"),e[23]=s,e[24]=E):E=e[24];let ce;e[25]!==E?(ce=t("p",{className:"text-lg font-medium","data-testid":"qi-empty",children:E}),e[25]=E,e[26]=ce):ce=e[26];let H;e[27]!==s?(H=s("Query insights appear once statements are executed against this shard."),e[27]=s,e[28]=H):H=e[28];let fe;e[29]!==H?(fe=t("p",{className:"mt-1 text-sm",children:H}),e[29]=H,e[30]=fe):fe=e[30];let Pe;e[31]!==ce||e[32]!==fe?(Pe=t(he,{children:t(ge,{className:"py-12",children:n("div",{className:"text-center text-muted-foreground",children:[ce,fe]})})}),e[31]=ce,e[32]=fe,e[33]=Pe):Pe=e[33],g=Pe;break e}c="space-y-4",x="qi-root";let z;e[34]!==s?(z=s("Critical queries"),e[34]=s,e[35]=z):z=e[35];let P;e[36]!==z?(P=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:z})}),e[36]=z,e[37]=P):P=e[37];let L;e[38]!==_?(L=t("div",{className:"text-2xl font-bold text-destructive","data-testid":"qi-critical",children:_}),e[38]=_,e[39]=L):L=e[39];let U;e[40]!==s?(U=s(">100ms avg execution"),e[40]=s,e[41]=U):U=e[41];let J;e[42]!==U?(J=t("p",{className:"text-xs text-muted-foreground",children:U}),e[42]=U,e[43]=J):J=e[43];let V;e[44]!==L||e[45]!==J?(V=n(ge,{children:[L,J]}),e[44]=L,e[45]=J,e[46]=V):V=e[46];let G;e[47]!==P||e[48]!==V?(G=n(he,{children:[P,V]}),e[47]=P,e[48]=V,e[49]=G):G=e[49];let W;e[50]!==s?(W=s("Moderate queries"),e[50]=s,e[51]=W):W=e[51];let X;e[52]!==W?(X=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:W})}),e[52]=W,e[53]=X):X=e[53];let Y;e[54]!==D?(Y=t("div",{className:"text-2xl font-bold text-warning","data-testid":"qi-moderate",children:D}),e[54]=D,e[55]=Y):Y=e[55];let Z;e[56]!==s?(Z=s("50–100ms avg execution"),e[56]=s,e[57]=Z):Z=e[57];let ee;e[58]!==Z?(ee=t("p",{className:"text-xs text-muted-foreground",children:Z}),e[58]=Z,e[59]=ee):ee=e[59];let te;e[60]!==Y||e[61]!==ee?(te=n(ge,{children:[Y,ee]}),e[60]=Y,e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==X||e[64]!==te?(re=n(he,{children:[X,te]}),e[63]=X,e[64]=te,e[65]=re):re=e[65];let se;e[66]!==s?(se=s("Fast queries"),e[66]=s,e[67]=se):se=e[67];let le;e[68]!==se?(le=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:se})}),e[68]=se,e[69]=le):le=e[69];let ie;e[70]!==A?(ie=t("div",{className:"text-2xl font-bold text-success","data-testid":"qi-fast",children:A}),e[70]=A,e[71]=ie):ie=e[71];let ae;e[72]!==s?(ae=s("<50ms avg execution"),e[72]=s,e[73]=ae):ae=e[73];let ne;e[74]!==ae?(ne=t("p",{className:"text-xs text-muted-foreground",children:ae}),e[74]=ae,e[75]=ne):ne=e[75];let m;e[76]!==ie||e[77]!==ne?(m=n(ge,{children:[ie,ne]}),e[76]=ie,e[77]=ne,e[78]=m):m=e[78];let K;e[79]!==le||e[80]!==m?(K=n(he,{children:[le,m]}),e[79]=le,e[80]=m,e[81]=K):K=e[81],e[82]!==G||e[83]!==re||e[84]!==K?(p=n("div",{className:"grid gap-4 md:grid-cols-3",children:[G,re,K]}),e[82]=G,e[83]=re,e[84]=K,e[85]=p):p=e[85];let B;e[86]!==s?(B=s("Query leaderboard"),e[86]=s,e[87]=B):B=e[87];let j;e[88]!==B?(j=t("h3",{className:"text-lg font-semibold",children:B}),e[88]=B,e[89]=j):j=e[89];let Q;e[90]!==r||e[91]!==s?(Q=s("Slow queries sorted by {sortField}",{sortField:s(r)}),e[90]=r,e[91]=s,e[92]=Q):Q=e[92];let ue;e[93]!==Q?(ue=t("p",{className:"text-sm text-muted-foreground",children:Q}),e[93]=Q,e[94]=ue):ue=e[94];let be;e[95]!==j||e[96]!==ue?(be=n("div",{children:[j,ue]}),e[95]=j,e[96]=ue,e[97]=be):be=e[97];let ye;e[98]!==s?(ye=s("Sort by"),e[98]=s,e[99]=ye):ye=e[99];let ve;e[100]!==ye?(ve=t("span",{className:"text-sm text-muted-foreground",children:ye}),e[100]=ye,e[101]=ve):ve=e[101];let Ne;e[102]!==s?(Ne=s("Sort queries by"),e[102]=s,e[103]=Ne):Ne=e[103];let Le;e[104]===Symbol.for("react.memo_cache_sentinel")?(Le=t(Bt,{}),e[104]=Le):Le=e[104];let Se;e[105]!==Ne?(Se=t(jt,{"aria-label":Ne,className:"w-[140px]","data-testid":"qi-sort",children:Le}),e[105]=Ne,e[106]=Se):Se=e[106];let we;e[107]!==s?(we=s("Total time"),e[107]=s,e[108]=we):we=e[108];let qe;e[109]!==we?(qe=t(Qe,{value:"totalTime",children:we}),e[109]=we,e[110]=qe):qe=e[110];let Te;e[111]!==s?(Te=s("Avg time"),e[111]=s,e[112]=Te):Te=e[112];let _e;e[113]!==Te?(_e=t(Qe,{value:"avgTime",children:Te}),e[113]=Te,e[114]=_e):_e=e[114];let Ce;e[115]!==s?(Ce=s("Execution count"),e[115]=s,e[116]=Ce):Ce=e[116];let Re;e[117]!==Ce?(Re=t(Qe,{value:"execCount",children:Ce}),e[117]=Ce,e[118]=Re):Re=e[118];let ke;e[119]!==s?(ke=s("Rows read"),e[119]=s,e[120]=ke):ke=e[120];let $e;e[121]!==ke?($e=t(Qe,{value:"rowsRead",children:ke}),e[121]=ke,e[122]=$e):$e=e[122];let Me;e[123]!==qe||e[124]!==_e||e[125]!==Re||e[126]!==$e?(Me=n(Qt,{children:[qe,_e,Re,$e]}),e[123]=qe,e[124]=_e,e[125]=Re,e[126]=$e,e[127]=Me):Me=e[127];let Ie;e[128]!==r||e[129]!==Se||e[130]!==Me?(Ie=n(Ht,{onValueChange:w,value:r,children:[Se,Me]}),e[128]=r,e[129]=Se,e[130]=Me,e[131]=Ie):Ie=e[131];let De;e[132]!==ve||e[133]!==Ie?(De=n("div",{className:"flex items-center gap-2",children:[ve,Ie]}),e[132]=ve,e[133]=Ie,e[134]=De):De=e[134],e[135]!==be||e[136]!==De?(b=n("div",{className:"flex items-center justify-between",children:[be,De]}),e[135]=be,e[136]=De,e[137]=b):b=e[137],d=he;let Ee;e[138]!==s?(Ee=s("Statements"),e[138]=s,e[139]=Ee):Ee=e[139];let ze;e[140]!==Ee?(ze=t(je,{children:Ee}),e[140]=Ee,e[141]=ze):ze=e[141],C=n(Be,{children:[ze,t(Mt,{children:s("{count} tracked statements",{count:$.length})})]}),h=ge,N="space-y-2";let Ke;e[142]!==i||e[143]!==s?(Ke=E=>{const ce=E.normalizedSql,H=i.has(ce),fe=Ve(E.avgDurationMs);return n("div",{className:"overflow-hidden rounded-lg border","data-testid":"qi-row",children:[n("button",{"aria-expanded":H,className:"flex w-full items-center justify-between p-3 text-left transition-colors hover:bg-muted/50",onClick:()=>{k(ce)},type:"button",children:[n("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[t(ir,{level:fe}),t("span",{className:"max-w-[300px] truncate font-mono text-sm lg:max-w-[500px]",children:E.normalizedSql})]}),n("div",{className:"flex shrink-0 items-center gap-4",children:[n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ae(E.totalDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("total")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ae(E.avgDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("avg")})]}),E.p95DurationMs!==void 0&&n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ae(E.p95DurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("p95")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:He(E.execCount)}),t("div",{className:"text-xs text-muted-foreground",children:s("calls")})]})]})]}),H&&n("div",{className:"space-y-3 border-t bg-muted/30 p-4",children:[n("div",{children:[t("p",{className:"mb-2 text-sm font-medium",children:s("Full statement")}),t("pre",{className:"overflow-x-auto rounded-md bg-muted p-3 font-mono text-sm whitespace-pre-wrap break-all",children:E.normalizedSql})]}),n("div",{className:"grid grid-cols-2 gap-4 text-sm md:grid-cols-4",children:[E.p50DurationMs!==void 0&&n("div",{children:[t("span",{className:"text-muted-foreground",children:s("p50")}),t("span",{className:"block font-medium tabular-nums",children:Ae(E.p50DurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Exec count")}),t("span",{className:"block font-medium tabular-nums",children:He(E.execCount)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Total time")}),t("span",{className:"block font-medium tabular-nums",children:Ae(E.totalDurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows read")}),t("span",{className:"block font-medium tabular-nums",children:He(E.rowsRead)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows written")}),t("span",{className:"block font-medium tabular-nums",children:He(E.rowsWritten)})]})]})]})]},ce)},e[142]=i,e[143]=s,e[144]=Ke):Ke=e[144],q=$.map(Ke)}e[2]=i,e[3]=a,e[4]=r,e[5]=s,e[6]=h,e[7]=d,e[8]=g,e[9]=N,e[10]=q,e[11]=C,e[12]=c,e[13]=x,e[14]=p,e[15]=b}else h=e[6],d=e[7],g=e[8],N=e[9],q=e[10],C=e[11],c=e[12],x=e[13],p=e[14],b=e[15];if(g!==Symbol.for("react.early_return_sentinel"))return g;let T;e[145]!==N||e[146]!==q?(T=t("div",{className:N,children:q}),e[145]=N,e[146]=q,e[147]=T):T=e[147];let R;e[148]!==h||e[149]!==T?(R=t(h,{children:T}),e[148]=h,e[149]=T,e[150]=R):R=e[150];let S;e[151]!==d||e[152]!==R||e[153]!==C?(S=n(d,{children:[C,R]}),e[151]=d,e[152]=R,e[153]=C,e[154]=S):S=e[154];let M;return e[155]!==S||e[156]!==c||e[157]!==x||e[158]!==p||e[159]!==b?(M=n("div",{className:c,"data-testid":x,children:[p,b,S]}),e[155]=S,e[156]=c,e[157]=x,e[158]=p,e[159]=b,e[160]=M):M=e[160],M};function or(l){return Ve(l.avgDurationMs)==="critical"}function cr(l){return Ve(l.avgDurationMs)==="warning"}function dr(l){return Ve(l.avgDurationMs)==="good"}const mr=["1m","5m","15m","1h"],ur=l=>new Date(l).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}),fr=l=>l.map(e=>({avg:Math.round(e.avgDurationMs*100)/100,execs:e.execCount,label:ur(e.bucketMs)})),hr=({shardKey:l=""})=>{const e=xe(),[a,s]=pe("15m"),u=Ue(Oe.getQueryInsights,{range:a},{live:!0,shardKey:l}).data,o=fr(u?.buckets??[]);return n("div",{className:"flex flex-col gap-4","data-testid":"qi-range",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t("div",{className:"flex gap-1 rounded-lg border border-border p-0.5","data-testid":"qi-ranges",role:"group",children:mr.map(i=>t("button",{"aria-pressed":i===a,className:Pt("rounded px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",i===a&&"bg-accent font-medium text-foreground"),"data-testid":`qi-range-${i}`,onClick:()=>{s(i)},type:"button",children:i},i))}),u?.capped===!0&&t(et,{"data-testid":"qi-capped",variant:"secondary",children:e("showing a capped set")})]}),o.length===0?t(Kt,{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.")}):n("div",{className:"grid gap-4 lg:grid-cols-2",children:[n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-throughput",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Throughput")}),t(st,{height:140,width:"100%",children:n(At,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(it,{dataKey:"label",fontSize:10,tickLine:!1}),t(at,{allowDecimals:!1,fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(Ot,{dataKey:"execs",fill:"var(--color-primary)",fillOpacity:.15,stroke:"var(--color-primary)",type:"monotone"})]})})]}),n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-latency",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Mean latency (ms)")}),t(st,{height:140,width:"100%",children:n(Lt,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(it,{dataKey:"label",fontSize:10,tickLine:!1}),t(at,{fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(zt,{dataKey:"avg",dot:!1,stroke:"var(--color-destructive)",type:"monotone"})]})})]})]}),t(nr,{queryStats:u?.entries??[]})]})},gr=Ct(Oe.getMetrics),pr=(l,e)=>l?e:"overview",jr=({initialShardKey:l})=>{const e=pt(),a=xe(),{queryShardKey:s,setShardKey:r,shardKey:u}=Nt(l),[o,i]=pe("overview"),[f,v]=pe([]),w=Ge(null),h=Ge(null),d=Ge(!0);tt(()=>(d.current=!0,()=>{d.current=!1}),[]);const g=vt(s),{data:N,error:q,liveError:C}=Ue(Oe.getMetrics,{},{live:!0,shardKey:s}),c=N??null;tt(()=>{if(N===void 0)return;Rt(s);const k=N,z=w.current,P=h.current!==null&&h.current!==k.shard;if(h.current=k.shard,w.current=k.requests,P){v([]);return}z!==null&&k.requests>=z&&v(L=>[...L,k.requests-z].slice(-30))},[N,s]);const[x,p]=pe(null),[b,T]=pe(!1),R=async()=>{T(!0);const k=Ft(u,kt());try{const z=await Promise.all(k.map(async P=>{try{const L=await e.query(gr,{},Tt(P));return{error:null,metrics:L,shard:P===""?L.shard:P}}catch(L){return{error:_t(L),metrics:null,shard:P===""?"__root__":P}}}));d.current&&p(z)}finally{d.current&&T(!1)}},S=x===null?null:It(x),M=c===null||c.requests===0?"—":`${(c.errors/c.requests*100).toFixed(1)}%`,$=f.length>0?f.at(-1):0,I=c?Dt(c):{p90:0,p95:0},_=xt(()=>{if(!c||!("queryStats"in c))return;const k=c.queryStats;if(!(!k||!Array.isArray(k)))return Et(k)},[c]),y=pr(_!==void 0,o),D=()=>{qt(R())},F=()=>{p(null)},A=()=>{i("overview")},O=()=>{i("query-insights")};return n("div",{className:"flex flex-col gap-4","data-testid":"lunora-metrics",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t(yt,{onChange:r,testId:"mt-shard-input",value:u}),t(bt,{message:C,prefix:"mt"}),t(rt,{"data-testid":"mt-aggregate",disabled:b,onClick:D,size:"sm",type:"button",variant:"secondary",children:a(b?"Aggregating…":"All shards")}),x!==null&&t(rt,{"data-testid":"mt-aggregate-clear",onClick:F,size:"sm",type:"button",variant:"ghost",children:a("Hide")}),t("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"mt-cf-link",href:St,rel:"noreferrer",target:"_blank",children:a("Open in Cloudflare")})]}),q!==null&&t("p",{className:"text-sm text-destructive","data-testid":"mt-error",role:"alert",children:q}),_!==void 0&&n("div",{className:"flex gap-2 border-b","data-testid":"mt-tabs",children:[t("button",{className:`pb-2 text-sm font-medium transition-colors ${y==="overview"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-overview",onClick:A,type:"button",children:a("Overview")}),n("button",{className:`pb-2 text-sm font-medium transition-colors ${y==="query-insights"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-query-insights",onClick:O,type:"button",children:[a("Query insights"),_.length>0&&t("span",{className:"ml-1.5 rounded-full bg-primary/10 px-1.5 py-0.5 text-xs text-primary",children:_.length})]})]}),y==="query-insights"&&_!==void 0&&t(hr,{shardKey:s}),y==="overview"&&c!==null&&t(lr,{currentDelta:$,errorRate:M,history:f,latencyPercentiles:I,metrics:c}),y==="overview"&&c===null&&null,y==="overview"&&t(er,{onOpenTrace:g,shardKey:s}),y==="overview"&&S!==null&&x!==null&&t(tr,{aggregate:S,shardResults:x})]})};export{jr as MetricsPanel};
1
+ import{useLunora as pt}from"@lunora/react";import{useState as pe,useRef as Ge,useEffect as tt,useMemo as xt}from"react";import{L as bt}from"../packem_shared/live-status-BuJdUZFU.mjs";import{ShardInput as yt}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{B as rt}from"../packem_shared/button-q0UYSmrn.mjs";import{u as Ue}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{u as vt}from"../packem_shared/use-open-trace-DMVhpnyG.mjs";import{u as Nt}from"../packem_shared/use-shard-key-BsP3o5wT.mjs";import{useT as xe}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as Oe}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{c as St}from"../packem_shared/cf-links-CBJ5SywP.mjs";import{i as wt,m as Xe,f as qt,d as Tt,b as _t,c as Ct}from"../packem_shared/internal-Df43vQI0.mjs";import{r as Rt,l as kt}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{c as Fe}from"react/compiler-runtime";import{f as $t}from"../packem_shared/log-fields-SBxKyBug.mjs";import{B as et}from"../packem_shared/badge-r_5B4LHP.mjs";import{C as he,a as ge,c as Be,d as Mt,b as je}from"../packem_shared/card--2hKx4L2.mjs";import{b as Je,e as oe,T as dt,c as de,a as mt,d as ut}from"../packem_shared/table-D0SBiDu-.mjs";import{S as ft}from"../packem_shared/sparkline-B_sPPO_8.mjs";import{jsxs as n,jsx as t,Fragment as Ye}from"react/jsx-runtime";import{aggregateMetrics as It,computeLatencyPercentiles as Dt,enrichQueryStats as Et,shardsToAggregate as Ft}from"../packem_shared/aggregateMetrics-5zEJC6Ju.mjs";import{S as me}from"../packem_shared/stat-card-D0Fe04cX.mjs";import{ResponsiveContainer as st,AreaChart as At,CartesianGrid as lt,XAxis as it,YAxis as at,Tooltip as nt,Area as Ot,LineChart as Lt,Line as zt}from"recharts";import{E as Kt}from"../packem_shared/empty-state-D7jEML_T.mjs";import{c as Pt}from"../packem_shared/utils-bhneXptQ.mjs";import{S as Bt,a as jt,c as Qe,b as Qt,d as Ht}from"../packem_shared/select-DPyS18Vy.mjs";const Ut=/["\\\u0000-\u001F\uD800-\uDFFF]/,ot=l=>Ut.test(l)?JSON.stringify(l):`"${l}"`,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(typeof l=="number"){if(Number.isNaN(l))return"nan";if(l===1/0)return"inf";if(l===-1/0)return"-inf";if(Object.is(l,-0))return"-0"}if(typeof l=="string")return ot(l);if(l===null||typeof l!="object")return JSON.stringify(l);if(Array.isArray(l)){let o="[";for(let i=0;i<l.length;i++)i>0&&(o+=","),o+=Ze(l[i]);return o+"]"}const e=Object.getPrototypeOf(l);if(e!==null&&e!==Object.prototype){const o=l.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${o} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const a=l,s=Object.keys(a).sort();let r="{",u=!0;for(const o of s){const i=a[o];i!==void 0&&(u?u=!1:r+=",",r+=ot(o),r+=":",r+=Ze(i))}return r+"}"},ht=(l,e,a)=>`${l}:${e}:${Ze(a??{})}`,gt=(l,e)=>l==="gauge"?e.last:l==="histogram"?e.sum/Math.max(1,e.count):e.sum,Jt=(l,e)=>gt(l,e),Vt=l=>gt(l.kind,l),We=l=>Number.isInteger(l)?l.toLocaleString():l.toLocaleString(void 0,{maximumFractionDigits:2}),Gt=l=>Array.isArray(l?.series)?l.series:[],Wt="FUNCTION_NOT_FOUND",Xt=l=>{const e=new Map;if(!Array.isArray(l?.series))return e;for(const a of l.series)e.set(ht(a.kind,a.name,a.attributes),a.points);return e},Yt={counter:"secondary",gauge:"default",histogram:"outline"},Zt=l=>{const e=Fe(18),{name:a,onOpenTrace:s,traceId:r}=l,u=xe();if(r===void 0){let d;return e[0]===Symbol.for("react.memo_cache_sentinel")?(d=t("span",{className:"text-muted-foreground",children:"—"}),e[0]=d):d=e[0],d}let o;e[1]!==r?(o=r.slice(0,8),e[1]=r,e[2]=o):o=e[2];const i=o;if(s===void 0){const d=`mt-instrument-trace-${a}`;let g;return e[3]!==i||e[4]!==d||e[5]!==r?(g=t("span",{className:"text-muted-foreground","data-testid":d,title:r,children:i}),e[3]=i,e[4]=d,e[5]=r,e[6]=g):g=e[6],g}const f=`mt-instrument-trace-${a}`;let v;e[7]!==s||e[8]!==r?(v=()=>{s(r)},e[7]=s,e[8]=r,e[9]=v):v=e[9];let w;e[10]!==u||e[11]!==r?(w=u("Open the exemplar trace {trace}",{trace:r}),e[10]=u,e[11]=r,e[12]=w):w=e[12];let h;return e[13]!==i||e[14]!==f||e[15]!==v||e[16]!==w?(h=t("button",{className:"text-primary underline-offset-4 hover:underline","data-testid":f,onClick:v,title:w,type:"button",children:i}),e[13]=i,e[14]=f,e[15]=v,e[16]=w,e[17]=h):h=e[17],h},er=l=>{const e=Fe(105),{onOpenTrace:a,shardKey:s}=l,r=xe();let u;e[0]===Symbol.for("react.memo_cache_sentinel")?(u={},e[0]=u):u=e[0];let o;e[1]!==s?(o={live:!0,shardKey:s},e[1]=s,e[2]=o):o=e[2];const{data:i,error:f,errorSource:v}=Ue(Oe.getMetricSeries,u,o);let w;e[3]===Symbol.for("react.memo_cache_sentinel")?(w={},e[3]=w):w=e[3];let h;e[4]!==s?(h={live:!0,shardKey:s},e[4]=s,e[5]=h):h=e[5];const{data:d}=Ue(Oe.getMetricHistory,w,h);let g,N,q,C,c,x,p,b,T,R,S,M,$;if(e[6]!==i||e[7]!==f||e[8]!==v||e[9]!==d||e[10]!==a||e[11]!==r){b=Symbol.for("react.early_return_sentinel");e:{const A=Gt(i),O=wt(v)===Wt;if(f!==null&&!O){let m;e[25]!==r?(m=r("Instruments"),e[25]=r,e[26]=m):m=e[26];let K;e[27]!==m?(K=t("h3",{className:"text-sm font-semibold text-foreground",children:m}),e[27]=m,e[28]=K):K=e[28];let B;e[29]!==f||e[30]!==r?(B=r("Instruments unavailable: {error}",{error:f}),e[29]=f,e[30]=r,e[31]=B):B=e[31];let j;e[32]!==B?(j=t("span",{className:"text-xs text-muted-foreground","data-testid":"mt-instruments-error",role:"status",children:B}),e[32]=B,e[33]=j):j=e[33];let Q;e[34]!==K||e[35]!==j?(Q=n("section",{className:"flex flex-col gap-2","data-testid":"mt-instruments",children:[K,j]}),e[34]=K,e[35]=j,e[36]=Q):Q=e[36],b=Q;break e}if(A.length===0){b=null;break e}const k=Xt(d);let z;e[37]!==r?(z=m=>r(m==="counter"?"Counter":m==="gauge"?"Gauge":"Histogram"),e[37]=r,e[38]=z):z=e[38];const P=z;c="flex flex-col gap-2",x="mt-instruments";let L;e[39]!==r?(L=r("Instruments"),e[39]=r,e[40]=L):L=e[40],e[41]!==L?(p=t("h3",{className:"text-sm font-semibold text-foreground",children:L}),e[41]=L,e[42]=p):p=e[42],C=he,$="overflow-hidden py-0",q=ge,M="px-0",N=dt,R="mt-instruments-table";let U;e[43]!==r?(U=r("name"),e[43]=r,e[44]=U):U=e[44];let J;e[45]!==U?(J=t(de,{children:U}),e[45]=U,e[46]=J):J=e[46];let V;e[47]!==r?(V=r("kind"),e[47]=r,e[48]=V):V=e[48];let G;e[49]!==V?(G=t(de,{children:V}),e[49]=V,e[50]=G):G=e[50];let W;e[51]!==r?(W=r("value"),e[51]=r,e[52]=W):W=e[52];let X;e[53]!==W?(X=t(de,{className:"text-right",children:W}),e[53]=W,e[54]=X):X=e[54];let Y;e[55]!==r?(Y=r("count"),e[55]=r,e[56]=Y):Y=e[56];let Z;e[57]!==Y?(Z=t(de,{className:"text-right",children:Y}),e[57]=Y,e[58]=Z):Z=e[58];let ee;e[59]!==r?(ee=r("range"),e[59]=r,e[60]=ee):ee=e[60];let te;e[61]!==ee?(te=t(de,{className:"text-right",children:ee}),e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==r?(re=r("trend"),e[63]=r,e[64]=re):re=e[64];let se;e[65]!==re?(se=t(de,{children:re}),e[65]=re,e[66]=se):se=e[66];let le;e[67]!==r?(le=r("trace"),e[67]=r,e[68]=le):le=e[68];let ie;e[69]!==le?(ie=t(de,{children:le}),e[69]=le,e[70]=ie):ie=e[70];let ae;e[71]!==r?(ae=r("dimensions"),e[71]=r,e[72]=ae):ae=e[72];let ne;e[73]!==ae?(ne=t(de,{children:ae}),e[73]=ae,e[74]=ne):ne=e[74],e[75]!==J||e[76]!==G||e[77]!==X||e[78]!==Z||e[79]!==te||e[80]!==se||e[81]!==ie||e[82]!==ne?(S=t(mt,{children:n(Je,{children:[J,G,X,Z,te,se,ie,ne]})}),e[75]=J,e[76]=G,e[77]=X,e[78]=Z,e[79]=te,e[80]=se,e[81]=ie,e[82]=ne,e[83]=S):S=e[83],g=ut,T=A.map(m=>{const K=$t(m.attributes),B=ht(m.kind,m.name,m.attributes),Q=(k.get(B)??[]).map(ue=>Jt(m.kind,ue));return n(Je,{"data-testid":`mt-instrument-${m.name}`,children:[t(oe,{className:"font-mono text-xs",title:m.functionPath,children:m.name}),t(oe,{children:t(et,{variant:Yt[m.kind],children:P(m.kind)})}),t(oe,{className:"text-right font-mono tabular-nums","data-testid":`mt-instrument-value-${m.name}`,children:We(Vt(m))}),t(oe,{className:"text-right tabular-nums text-muted-foreground",children:m.count.toLocaleString()}),t(oe,{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:m.min===m.max?"—":`${We(m.min)}–${We(m.max)}`}),t(oe,{children:Q.length>=2?t(ft,{ariaLabel:r("{name} trend",{name:m.name}),className:"h-6 w-24 text-foreground",series:Q,testId:`mt-instrument-trend-${m.name}`}):t("span",{className:"text-xs text-muted-foreground",children:"—"})}),t(oe,{className:"font-mono text-xs",children:t(Zt,{name:m.name,onOpenTrace:a,traceId:m.exemplarTraceId})}),t(oe,{className:"max-w-64 truncate font-mono text-xs text-muted-foreground",title:K,children:K===""?"—":K})]},B)})}e[6]=i,e[7]=f,e[8]=v,e[9]=d,e[10]=a,e[11]=r,e[12]=g,e[13]=N,e[14]=q,e[15]=C,e[16]=c,e[17]=x,e[18]=p,e[19]=b,e[20]=T,e[21]=R,e[22]=S,e[23]=M,e[24]=$}else g=e[12],N=e[13],q=e[14],C=e[15],c=e[16],x=e[17],p=e[18],b=e[19],T=e[20],R=e[21],S=e[22],M=e[23],$=e[24];if(b!==Symbol.for("react.early_return_sentinel"))return b;let I;e[84]!==g||e[85]!==T?(I=t(g,{children:T}),e[84]=g,e[85]=T,e[86]=I):I=e[86];let _;e[87]!==N||e[88]!==I||e[89]!==R||e[90]!==S?(_=n(N,{"data-testid":R,children:[S,I]}),e[87]=N,e[88]=I,e[89]=R,e[90]=S,e[91]=_):_=e[91];let y;e[92]!==q||e[93]!==_||e[94]!==M?(y=t(q,{className:M,children:_}),e[92]=q,e[93]=_,e[94]=M,e[95]=y):y=e[95];let D;e[96]!==C||e[97]!==y||e[98]!==$?(D=t(C,{className:$,children:y}),e[96]=C,e[97]=y,e[98]=$,e[99]=D):D=e[99];let F;return e[100]!==c||e[101]!==x||e[102]!==p||e[103]!==D?(F=n("section",{className:c,"data-testid":x,children:[p,D]}),e[100]=c,e[101]=x,e[102]=p,e[103]=D,e[104]=F):F=e[104],F},tr=l=>{const e=Fe(74),{aggregate:a,shardResults:s}=l,r=xe();let u;e[0]!==r?(u=r("Shards"),e[0]=r,e[1]=u):u=e[1];let o;e[2]!==a.failed||e[3]!==a.reachable||e[4]!==r?(o=a.failed>0?r("{reachable} reachable, {failed} unreachable",{failed:a.failed,reachable:a.reachable}):r("{reachable} reachable",{reachable:a.reachable}),e[2]=a.failed,e[3]=a.reachable,e[4]=r,e[5]=o):o=e[5];let i;e[6]!==u||e[7]!==o?(i=t(me,{label:u,testId:"mt-agg-shards",value:o}),e[6]=u,e[7]=o,e[8]=i):i=e[8];let f;e[9]!==r?(f=r("Total requests"),e[9]=r,e[10]=f):f=e[10];let v;e[11]!==a.totalRequests||e[12]!==f?(v=t(me,{label:f,testId:"mt-agg-requests",value:a.totalRequests}),e[11]=a.totalRequests,e[12]=f,e[13]=v):v=e[13];let w;e[14]!==r?(w=r("Total errors"),e[14]=r,e[15]=w):w=e[15];let h;e[16]!==a.totalErrors||e[17]!==w?(h=t(me,{label:w,testId:"mt-agg-errors",value:a.totalErrors}),e[16]=a.totalErrors,e[17]=w,e[18]=h):h=e[18];let d;e[19]!==r?(d=r("Total database size"),e[19]=r,e[20]=d):d=e[20];let g;e[21]!==a.totalDatabaseSize?(g=Xe(a.totalDatabaseSize),e[21]=a.totalDatabaseSize,e[22]=g):g=e[22];let N;e[23]!==d||e[24]!==g?(N=t(me,{label:d,testId:"mt-agg-db-size",value:g}),e[23]=d,e[24]=g,e[25]=N):N=e[25];let q;e[26]!==r?(q=r("Combined cache hit rate"),e[26]=r,e[27]=q):q=e[27];let C;e[28]!==a.hitRate||e[29]!==r?(C=a.hitRate===null?r("no cache configured"):`${(a.hitRate*100).toFixed(1)}%`,e[28]=a.hitRate,e[29]=r,e[30]=C):C=e[30];let c;e[31]!==q||e[32]!==C?(c=t(me,{label:q,testId:"mt-agg-cache",value:C}),e[31]=q,e[32]=C,e[33]=c):c=e[33];let x;e[34]!==N||e[35]!==c||e[36]!==i||e[37]!==v||e[38]!==h?(x=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":"mt-aggregate-stats",children:[i,v,h,N,c]}),e[34]=N,e[35]=c,e[36]=i,e[37]=v,e[38]=h,e[39]=x):x=e[39];let p;e[40]!==r?(p=r("shard"),e[40]=r,e[41]=p):p=e[41];let b;e[42]!==p?(b=t(de,{children:p}),e[42]=p,e[43]=b):b=e[43];let T;e[44]!==r?(T=r("requests"),e[44]=r,e[45]=T):T=e[45];let R;e[46]!==T?(R=t(de,{children:T}),e[46]=T,e[47]=R):R=e[47];let S;e[48]!==r?(S=r("errors"),e[48]=r,e[49]=S):S=e[49];let M;e[50]!==S?(M=t(de,{children:S}),e[50]=S,e[51]=M):M=e[51];let $;e[52]!==r?($=r("db size"),e[52]=r,e[53]=$):$=e[53];let I;e[54]!==$?(I=t(de,{children:$}),e[54]=$,e[55]=I):I=e[55];let _;e[56]!==b||e[57]!==R||e[58]!==M||e[59]!==I?(_=t(mt,{children:n(Je,{children:[b,R,M,I]})}),e[56]=b,e[57]=R,e[58]=M,e[59]=I,e[60]=_):_=e[60];let y;if(e[61]!==s||e[62]!==r){let O;e[64]!==r?(O=k=>n(Je,{"data-testid":`mt-agg-row-${k.shard}`,children:[t(oe,{children:k.shard}),k.metrics===null?t(oe,{className:"text-destructive",colSpan:3,children:k.error??r("unreachable")}):n(Ye,{children:[t(oe,{className:"tabular-nums",children:k.metrics.requests}),t(oe,{className:"tabular-nums",children:k.metrics.errors}),t(oe,{className:"tabular-nums",children:Xe(k.metrics.databaseSize)})]})]},k.shard),e[64]=r,e[65]=O):O=e[65],y=s.map(O),e[61]=s,e[62]=r,e[63]=y}else y=e[63];let D;e[66]!==y?(D=t(ut,{children:y}),e[66]=y,e[67]=D):D=e[67];let F;e[68]!==_||e[69]!==D?(F=t(he,{className:"overflow-hidden py-0",children:t(ge,{className:"px-0",children:n(dt,{"data-testid":"mt-agg-table",children:[_,D]})})}),e[68]=_,e[69]=D,e[70]=F):F=e[70];let A;return e[71]!==x||e[72]!==F?(A=n("div",{className:"flex flex-col gap-4","data-testid":"mt-aggregate-view",children:[x,F]}),e[71]=x,e[72]=F,e[73]=A):A=e[73],A},rr=l=>{const e=Math.floor(l/1e3),a=Math.floor(e/3600),s=Math.floor(e%3600/60),r=e%60;return a>0?`${a.toString()}h ${s.toString()}m`:s>0?`${s.toString()}m ${r.toString()}s`:`${r.toString()}s`},sr=(l,e)=>{const a=l+e;return a===0?"—":`${(l/a*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=Fe(75),{currentDelta:a,errorRate:s,history:r,latencyPercentiles:u,metrics:o}=l,i=xe(),{cache:f}=o;let v;e[0]!==r||e[1]!==i?(v=r.length>=2?t(ft,{ariaLabel:i("Requests per interval over time"),className:"h-7 w-24 text-foreground",series:r,testId:"mt-sparkline"}):void 0,e[0]=r,e[1]=i,e[2]=v):v=e[2];let w;e[3]!==a||e[4]!==r.length||e[5]!==i?(w=r.length>=2?n(Ye,{children:[t("span",{className:"font-semibold text-foreground",children:`+${a.toLocaleString()}`})," ",i("last interval")]}):t("span",{"data-testid":"mt-sparkline-empty",children:i("collecting samples…")}),e[3]=a,e[4]=r.length,e[5]=i,e[6]=w):w=e[6];let h;e[7]!==i?(h=i("Requests"),e[7]=i,e[8]=h):h=e[8];let d;e[9]!==o.requests||e[10]!==v||e[11]!==w||e[12]!==h?(d=t(me,{chart:v,footer:w,label:h,testId:"mt-requests",value:o.requests}),e[9]=o.requests,e[10]=v,e[11]=w,e[12]=h,e[13]=d):d=e[13];let g;e[14]!==s||e[15]!==i?(g=i("{rate} error rate",{rate:s}),e[14]=s,e[15]=i,e[16]=g):g=e[16];let N;e[17]!==i?(N=i("Errors"),e[17]=i,e[18]=N):N=e[18];let q;e[19]!==s||e[20]!==o.errors?(q=n(Ye,{children:[o.errors," (",s,")"]}),e[19]=s,e[20]=o.errors,e[21]=q):q=e[21];let C;e[22]!==g||e[23]!==N||e[24]!==q?(C=t(me,{footer:g,label:N,testId:"mt-errors",value:q}),e[22]=g,e[23]=N,e[24]=q,e[25]=C):C=e[25];let c;e[26]!==u.p90?(c=u.p90>0?`P90 ${ct(u.p90)}`:void 0,e[26]=u.p90,e[27]=c):c=e[27];let x;e[28]!==i?(x=i("P95 latency"),e[28]=i,e[29]=x):x=e[29];let p;e[30]!==u.p95?(p=u.p95>0?ct(u.p95):"—",e[30]=u.p95,e[31]=p):p=e[31];let b;e[32]!==x||e[33]!==p||e[34]!==c?(b=t(me,{footer:c,label:x,testId:"mt-p95",value:p}),e[32]=x,e[33]=p,e[34]=c,e[35]=b):b=e[35];let T;e[36]!==f||e[37]!==i?(T=f?`${f.entries.toLocaleString()} ${i("cache entries")}`:void 0,e[36]=f,e[37]=i,e[38]=T):T=e[38];let R;e[39]!==i?(R=i("Database size"),e[39]=i,e[40]=R):R=e[40];let S;e[41]!==o.databaseSize?(S=Xe(o.databaseSize),e[41]=o.databaseSize,e[42]=S):S=e[42];let M;e[43]!==T||e[44]!==R||e[45]!==S?(M=t(me,{footer:T,label:R,testId:"mt-db-size",value:S}),e[43]=T,e[44]=R,e[45]=S,e[46]=M):M=e[46];let $;e[47]!==i?($=i("Shard"),e[47]=i,e[48]=$):$=e[48];let I;e[49]!==o.shard||e[50]!==$?(I=t(me,{label:$,testId:"mt-shard",value:o.shard}),e[49]=o.shard,e[50]=$,e[51]=I):I=e[51];let _;e[52]!==i?(_=i("Uptime"),e[52]=i,e[53]=_):_=e[53];let y;e[54]!==o.uptimeMs?(y=rr(o.uptimeMs),e[54]=o.uptimeMs,e[55]=y):y=e[55];let D;e[56]!==_||e[57]!==y?(D=t(me,{label:_,testId:"mt-uptime",value:y}),e[56]=_,e[57]=y,e[58]=D):D=e[58];let F;e[59]!==i?(F=i("Cache hit rate"),e[59]=i,e[60]=F):F=e[60];let A;e[61]!==f||e[62]!==i?(A=f?i("{rate} ({count} entries)",{count:f.entries,rate:sr(f.hits,f.misses)}):i("no cache configured"),e[61]=f,e[62]=i,e[63]=A):A=e[63];let O;e[64]!==F||e[65]!==A?(O=t(me,{label:F,testId:"mt-cache",value:A}),e[64]=F,e[65]=A,e[66]=O):O=e[66];let k;return e[67]!==b||e[68]!==M||e[69]!==I||e[70]!==D||e[71]!==O||e[72]!==d||e[73]!==C?(k=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4","data-testid":"mt-stats",children:[d,C,b,M,I,D,O]}),e[67]=b,e[68]=M,e[69]=I,e[70]=D,e[71]=O,e[72]=d,e[73]=C,e[74]=k):k=e[74],k},Ve=l=>l>=100?"critical":l>=50?"warning":"good",Ae=l=>l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,He=l=>l>=1e9?`${(l/1e9).toFixed(1)}B`:l>=1e6?`${(l/1e6).toFixed(1)}M`:l>=1e3?`${(l/1e3).toFixed(1)}K`:l.toLocaleString(),ir=l=>{const e=Fe(3),{level:a}=l;if(a==="critical"){let r;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(et,{variant:"destructive",children:"Slow"}),e[0]=r):r=e[0],r}if(a==="warning"){let r;return e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t("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]=r):r=e[1],r}let s;return e[2]===Symbol.for("react.memo_cache_sentinel")?(s=t("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]=s):s=e[2],s},ar=(l,e)=>{const a=[...l];return a.sort((s,r)=>{switch(e){case"avgTime":return r.avgDurationMs-s.avgDurationMs;case"execCount":return r.execCount-s.execCount;case"rowsRead":return r.rowsRead-s.rowsRead;default:return r.totalDurationMs-s.totalDurationMs}}),a},nr=l=>{const e=Fe(161),{queryStats:a}=l,s=xe(),[r,u]=pe("totalTime");let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=new Set,e[0]=o):o=e[0];const[i,f]=pe(o);let v;e[1]===Symbol.for("react.memo_cache_sentinel")?(v=$=>{$!==null&&u($)},e[1]=v):v=e[1];const w=v;let h,d,g,N,q,C,c,x,p,b;if(e[2]!==i||e[3]!==a||e[4]!==r||e[5]!==s){g=Symbol.for("react.early_return_sentinel");e:{const $=ar(a,r);let I;e[16]!==a?(I=a.filter(or),e[16]=a,e[17]=I):I=e[17];const _=I.length;let y;e[18]!==a?(y=a.filter(cr),e[18]=a,e[19]=y):y=e[19];const D=y.length;let F;e[20]!==a?(F=a.filter(dr),e[20]=a,e[21]=F):F=e[21];const A=F.length;let O;e[22]===Symbol.for("react.memo_cache_sentinel")?(O=E=>{f(ce=>{const H=new Set(ce);return H.has(E)?H.delete(E):H.add(E),H})},e[22]=O):O=e[22];const k=O;if(a.length===0){let E;e[23]!==s?(E=s("No query insights yet"),e[23]=s,e[24]=E):E=e[24];let ce;e[25]!==E?(ce=t("p",{className:"text-lg font-medium","data-testid":"qi-empty",children:E}),e[25]=E,e[26]=ce):ce=e[26];let H;e[27]!==s?(H=s("Query insights appear once statements are executed against this shard."),e[27]=s,e[28]=H):H=e[28];let fe;e[29]!==H?(fe=t("p",{className:"mt-1 text-sm",children:H}),e[29]=H,e[30]=fe):fe=e[30];let Pe;e[31]!==ce||e[32]!==fe?(Pe=t(he,{children:t(ge,{className:"py-12",children:n("div",{className:"text-center text-muted-foreground",children:[ce,fe]})})}),e[31]=ce,e[32]=fe,e[33]=Pe):Pe=e[33],g=Pe;break e}c="space-y-4",x="qi-root";let z;e[34]!==s?(z=s("Critical queries"),e[34]=s,e[35]=z):z=e[35];let P;e[36]!==z?(P=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:z})}),e[36]=z,e[37]=P):P=e[37];let L;e[38]!==_?(L=t("div",{className:"text-2xl font-bold text-destructive","data-testid":"qi-critical",children:_}),e[38]=_,e[39]=L):L=e[39];let U;e[40]!==s?(U=s(">100ms avg execution"),e[40]=s,e[41]=U):U=e[41];let J;e[42]!==U?(J=t("p",{className:"text-xs text-muted-foreground",children:U}),e[42]=U,e[43]=J):J=e[43];let V;e[44]!==L||e[45]!==J?(V=n(ge,{children:[L,J]}),e[44]=L,e[45]=J,e[46]=V):V=e[46];let G;e[47]!==P||e[48]!==V?(G=n(he,{children:[P,V]}),e[47]=P,e[48]=V,e[49]=G):G=e[49];let W;e[50]!==s?(W=s("Moderate queries"),e[50]=s,e[51]=W):W=e[51];let X;e[52]!==W?(X=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:W})}),e[52]=W,e[53]=X):X=e[53];let Y;e[54]!==D?(Y=t("div",{className:"text-2xl font-bold text-warning","data-testid":"qi-moderate",children:D}),e[54]=D,e[55]=Y):Y=e[55];let Z;e[56]!==s?(Z=s("50–100ms avg execution"),e[56]=s,e[57]=Z):Z=e[57];let ee;e[58]!==Z?(ee=t("p",{className:"text-xs text-muted-foreground",children:Z}),e[58]=Z,e[59]=ee):ee=e[59];let te;e[60]!==Y||e[61]!==ee?(te=n(ge,{children:[Y,ee]}),e[60]=Y,e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==X||e[64]!==te?(re=n(he,{children:[X,te]}),e[63]=X,e[64]=te,e[65]=re):re=e[65];let se;e[66]!==s?(se=s("Fast queries"),e[66]=s,e[67]=se):se=e[67];let le;e[68]!==se?(le=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:se})}),e[68]=se,e[69]=le):le=e[69];let ie;e[70]!==A?(ie=t("div",{className:"text-2xl font-bold text-success","data-testid":"qi-fast",children:A}),e[70]=A,e[71]=ie):ie=e[71];let ae;e[72]!==s?(ae=s("<50ms avg execution"),e[72]=s,e[73]=ae):ae=e[73];let ne;e[74]!==ae?(ne=t("p",{className:"text-xs text-muted-foreground",children:ae}),e[74]=ae,e[75]=ne):ne=e[75];let m;e[76]!==ie||e[77]!==ne?(m=n(ge,{children:[ie,ne]}),e[76]=ie,e[77]=ne,e[78]=m):m=e[78];let K;e[79]!==le||e[80]!==m?(K=n(he,{children:[le,m]}),e[79]=le,e[80]=m,e[81]=K):K=e[81],e[82]!==G||e[83]!==re||e[84]!==K?(p=n("div",{className:"grid gap-4 md:grid-cols-3",children:[G,re,K]}),e[82]=G,e[83]=re,e[84]=K,e[85]=p):p=e[85];let B;e[86]!==s?(B=s("Query leaderboard"),e[86]=s,e[87]=B):B=e[87];let j;e[88]!==B?(j=t("h3",{className:"text-lg font-semibold",children:B}),e[88]=B,e[89]=j):j=e[89];let Q;e[90]!==r||e[91]!==s?(Q=s("Slow queries sorted by {sortField}",{sortField:s(r)}),e[90]=r,e[91]=s,e[92]=Q):Q=e[92];let ue;e[93]!==Q?(ue=t("p",{className:"text-sm text-muted-foreground",children:Q}),e[93]=Q,e[94]=ue):ue=e[94];let be;e[95]!==j||e[96]!==ue?(be=n("div",{children:[j,ue]}),e[95]=j,e[96]=ue,e[97]=be):be=e[97];let ye;e[98]!==s?(ye=s("Sort by"),e[98]=s,e[99]=ye):ye=e[99];let ve;e[100]!==ye?(ve=t("span",{className:"text-sm text-muted-foreground",children:ye}),e[100]=ye,e[101]=ve):ve=e[101];let Ne;e[102]!==s?(Ne=s("Sort queries by"),e[102]=s,e[103]=Ne):Ne=e[103];let Le;e[104]===Symbol.for("react.memo_cache_sentinel")?(Le=t(Bt,{}),e[104]=Le):Le=e[104];let Se;e[105]!==Ne?(Se=t(jt,{"aria-label":Ne,className:"w-[140px]","data-testid":"qi-sort",children:Le}),e[105]=Ne,e[106]=Se):Se=e[106];let we;e[107]!==s?(we=s("Total time"),e[107]=s,e[108]=we):we=e[108];let qe;e[109]!==we?(qe=t(Qe,{value:"totalTime",children:we}),e[109]=we,e[110]=qe):qe=e[110];let Te;e[111]!==s?(Te=s("Avg time"),e[111]=s,e[112]=Te):Te=e[112];let _e;e[113]!==Te?(_e=t(Qe,{value:"avgTime",children:Te}),e[113]=Te,e[114]=_e):_e=e[114];let Ce;e[115]!==s?(Ce=s("Execution count"),e[115]=s,e[116]=Ce):Ce=e[116];let Re;e[117]!==Ce?(Re=t(Qe,{value:"execCount",children:Ce}),e[117]=Ce,e[118]=Re):Re=e[118];let ke;e[119]!==s?(ke=s("Rows read"),e[119]=s,e[120]=ke):ke=e[120];let $e;e[121]!==ke?($e=t(Qe,{value:"rowsRead",children:ke}),e[121]=ke,e[122]=$e):$e=e[122];let Me;e[123]!==qe||e[124]!==_e||e[125]!==Re||e[126]!==$e?(Me=n(Qt,{children:[qe,_e,Re,$e]}),e[123]=qe,e[124]=_e,e[125]=Re,e[126]=$e,e[127]=Me):Me=e[127];let Ie;e[128]!==r||e[129]!==Se||e[130]!==Me?(Ie=n(Ht,{onValueChange:w,value:r,children:[Se,Me]}),e[128]=r,e[129]=Se,e[130]=Me,e[131]=Ie):Ie=e[131];let De;e[132]!==ve||e[133]!==Ie?(De=n("div",{className:"flex items-center gap-2",children:[ve,Ie]}),e[132]=ve,e[133]=Ie,e[134]=De):De=e[134],e[135]!==be||e[136]!==De?(b=n("div",{className:"flex items-center justify-between",children:[be,De]}),e[135]=be,e[136]=De,e[137]=b):b=e[137],d=he;let Ee;e[138]!==s?(Ee=s("Statements"),e[138]=s,e[139]=Ee):Ee=e[139];let ze;e[140]!==Ee?(ze=t(je,{children:Ee}),e[140]=Ee,e[141]=ze):ze=e[141],C=n(Be,{children:[ze,t(Mt,{children:s("{count} tracked statements",{count:$.length})})]}),h=ge,N="space-y-2";let Ke;e[142]!==i||e[143]!==s?(Ke=E=>{const ce=E.normalizedSql,H=i.has(ce),fe=Ve(E.avgDurationMs);return n("div",{className:"overflow-hidden rounded-lg border","data-testid":"qi-row",children:[n("button",{"aria-expanded":H,className:"flex w-full items-center justify-between p-3 text-left transition-colors hover:bg-muted/50",onClick:()=>{k(ce)},type:"button",children:[n("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[t(ir,{level:fe}),t("span",{className:"max-w-[300px] truncate font-mono text-sm lg:max-w-[500px]",children:E.normalizedSql})]}),n("div",{className:"flex shrink-0 items-center gap-4",children:[n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ae(E.totalDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("total")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ae(E.avgDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("avg")})]}),E.p95DurationMs!==void 0&&n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ae(E.p95DurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("p95")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:He(E.execCount)}),t("div",{className:"text-xs text-muted-foreground",children:s("calls")})]})]})]}),H&&n("div",{className:"space-y-3 border-t bg-muted/30 p-4",children:[n("div",{children:[t("p",{className:"mb-2 text-sm font-medium",children:s("Full statement")}),t("pre",{className:"overflow-x-auto rounded-md bg-muted p-3 font-mono text-sm whitespace-pre-wrap break-all",children:E.normalizedSql})]}),n("div",{className:"grid grid-cols-2 gap-4 text-sm md:grid-cols-4",children:[E.p50DurationMs!==void 0&&n("div",{children:[t("span",{className:"text-muted-foreground",children:s("p50")}),t("span",{className:"block font-medium tabular-nums",children:Ae(E.p50DurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Exec count")}),t("span",{className:"block font-medium tabular-nums",children:He(E.execCount)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Total time")}),t("span",{className:"block font-medium tabular-nums",children:Ae(E.totalDurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows read")}),t("span",{className:"block font-medium tabular-nums",children:He(E.rowsRead)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows written")}),t("span",{className:"block font-medium tabular-nums",children:He(E.rowsWritten)})]})]})]})]},ce)},e[142]=i,e[143]=s,e[144]=Ke):Ke=e[144],q=$.map(Ke)}e[2]=i,e[3]=a,e[4]=r,e[5]=s,e[6]=h,e[7]=d,e[8]=g,e[9]=N,e[10]=q,e[11]=C,e[12]=c,e[13]=x,e[14]=p,e[15]=b}else h=e[6],d=e[7],g=e[8],N=e[9],q=e[10],C=e[11],c=e[12],x=e[13],p=e[14],b=e[15];if(g!==Symbol.for("react.early_return_sentinel"))return g;let T;e[145]!==N||e[146]!==q?(T=t("div",{className:N,children:q}),e[145]=N,e[146]=q,e[147]=T):T=e[147];let R;e[148]!==h||e[149]!==T?(R=t(h,{children:T}),e[148]=h,e[149]=T,e[150]=R):R=e[150];let S;e[151]!==d||e[152]!==R||e[153]!==C?(S=n(d,{children:[C,R]}),e[151]=d,e[152]=R,e[153]=C,e[154]=S):S=e[154];let M;return e[155]!==S||e[156]!==c||e[157]!==x||e[158]!==p||e[159]!==b?(M=n("div",{className:c,"data-testid":x,children:[p,b,S]}),e[155]=S,e[156]=c,e[157]=x,e[158]=p,e[159]=b,e[160]=M):M=e[160],M};function or(l){return Ve(l.avgDurationMs)==="critical"}function cr(l){return Ve(l.avgDurationMs)==="warning"}function dr(l){return Ve(l.avgDurationMs)==="good"}const mr=["1m","5m","15m","1h"],ur=l=>new Date(l).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}),fr=l=>l.map(e=>({avg:Math.round(e.avgDurationMs*100)/100,execs:e.execCount,label:ur(e.bucketMs)})),hr=({shardKey:l=""})=>{const e=xe(),[a,s]=pe("15m"),u=Ue(Oe.getQueryInsights,{range:a},{live:!0,shardKey:l}).data,o=fr(u?.buckets??[]);return n("div",{className:"flex flex-col gap-4","data-testid":"qi-range",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t("div",{className:"flex gap-1 rounded-lg border border-border p-0.5","data-testid":"qi-ranges",role:"group",children:mr.map(i=>t("button",{"aria-pressed":i===a,className:Pt("rounded px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",i===a&&"bg-accent font-medium text-foreground"),"data-testid":`qi-range-${i}`,onClick:()=>{s(i)},type:"button",children:i},i))}),u?.capped===!0&&t(et,{"data-testid":"qi-capped",variant:"secondary",children:e("showing a capped set")})]}),o.length===0?t(Kt,{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.")}):n("div",{className:"grid gap-4 lg:grid-cols-2",children:[n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-throughput",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Throughput")}),t(st,{height:140,width:"100%",children:n(At,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(it,{dataKey:"label",fontSize:10,tickLine:!1}),t(at,{allowDecimals:!1,fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(Ot,{dataKey:"execs",fill:"var(--color-primary)",fillOpacity:.15,stroke:"var(--color-primary)",type:"monotone"})]})})]}),n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-latency",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Mean latency (ms)")}),t(st,{height:140,width:"100%",children:n(Lt,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(it,{dataKey:"label",fontSize:10,tickLine:!1}),t(at,{fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(zt,{dataKey:"avg",dot:!1,stroke:"var(--color-destructive)",type:"monotone"})]})})]})]}),t(nr,{queryStats:u?.entries??[]})]})},gr=Ct(Oe.getMetrics),pr=(l,e)=>l?e:"overview",jr=({initialShardKey:l})=>{const e=pt(),a=xe(),{queryShardKey:s,setShardKey:r,shardKey:u}=Nt(l),[o,i]=pe("overview"),[f,v]=pe([]),w=Ge(null),h=Ge(null),d=Ge(!0);tt(()=>(d.current=!0,()=>{d.current=!1}),[]);const g=vt(s),{data:N,error:q,liveError:C}=Ue(Oe.getMetrics,{},{live:!0,shardKey:s}),c=N??null;tt(()=>{if(N===void 0)return;Rt(s);const k=N,z=w.current,P=h.current!==null&&h.current!==k.shard;if(h.current=k.shard,w.current=k.requests,P){v([]);return}z!==null&&k.requests>=z&&v(L=>[...L,k.requests-z].slice(-30))},[N,s]);const[x,p]=pe(null),[b,T]=pe(!1),R=async()=>{T(!0);const k=Ft(u,kt());try{const z=await Promise.all(k.map(async P=>{try{const L=await e.query(gr,{},Tt(P));return{error:null,metrics:L,shard:P===""?L.shard:P}}catch(L){return{error:_t(L),metrics:null,shard:P===""?"__root__":P}}}));d.current&&p(z)}finally{d.current&&T(!1)}},S=x===null?null:It(x),M=c===null||c.requests===0?"—":`${(c.errors/c.requests*100).toFixed(1)}%`,$=f.length>0?f.at(-1):0,I=c?Dt(c):{p90:0,p95:0},_=xt(()=>{if(!c||!("queryStats"in c))return;const k=c.queryStats;if(!(!k||!Array.isArray(k)))return Et(k)},[c]),y=pr(_!==void 0,o),D=()=>{qt(R())},F=()=>{p(null)},A=()=>{i("overview")},O=()=>{i("query-insights")};return n("div",{className:"flex flex-col gap-4","data-testid":"lunora-metrics",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t(yt,{onChange:r,testId:"mt-shard-input",value:u}),t(bt,{message:C,prefix:"mt"}),t(rt,{"data-testid":"mt-aggregate",disabled:b,onClick:D,size:"sm",type:"button",variant:"secondary",children:a(b?"Aggregating…":"All shards")}),x!==null&&t(rt,{"data-testid":"mt-aggregate-clear",onClick:F,size:"sm",type:"button",variant:"ghost",children:a("Hide")}),t("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"mt-cf-link",href:St,rel:"noreferrer",target:"_blank",children:a("Open in Cloudflare")})]}),q!==null&&t("p",{className:"text-sm text-destructive","data-testid":"mt-error",role:"alert",children:q}),_!==void 0&&n("div",{className:"flex gap-2 border-b","data-testid":"mt-tabs",children:[t("button",{className:`pb-2 text-sm font-medium transition-colors ${y==="overview"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-overview",onClick:A,type:"button",children:a("Overview")}),n("button",{className:`pb-2 text-sm font-medium transition-colors ${y==="query-insights"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-query-insights",onClick:O,type:"button",children:[a("Query insights"),_.length>0&&t("span",{className:"ml-1.5 rounded-full bg-primary/10 px-1.5 py-0.5 text-xs text-primary",children:_.length})]})]}),y==="query-insights"&&_!==void 0&&t(hr,{shardKey:s}),y==="overview"&&c!==null&&t(lr,{currentDelta:$,errorRate:M,history:f,latencyPercentiles:I,metrics:c}),y==="overview"&&c===null&&null,y==="overview"&&t(er,{onOpenTrace:g,shardKey:s}),y==="overview"&&S!==null&&x!==null&&t(tr,{aggregate:S,shardResults:x})]})};export{jr as MetricsPanel};
@@ -1 +1 @@
1
- import{c as D}from"react/compiler-runtime";import{useState as j}from"react";import{E as K}from"../packem_shared/error-alert-dQk3g8WI.mjs";import{B as L}from"../packem_shared/badge-r_5B4LHP.mjs";import{B as F}from"../packem_shared/button-q0UYSmrn.mjs";import{C as O,a as Q}from"../packem_shared/card--2hKx4L2.mjs";import{E as U}from"../packem_shared/empty-state-D7jEML_T.mjs";import{I as q}from"../packem_shared/input-CXhxesPC.mjs";import{T as G,a as J,b as H,c as h,d as X,e as u}from"../packem_shared/table-D0SBiDu-.mjs";import{u as Y}from"../packem_shared/use-admin-query-CR9mHt0P.mjs";import{useT as Z}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as _}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{h as ee}from"../packem_shared/internal-CyDwqA67.mjs";import{jsx as t,jsxs as x}from"react/jsx-runtime";const te=e=>e==="ok"?"success":e==="failed"?"destructive":e==="expired"?"warning":"secondary",M=e=>e.endpoint??e.id,ge=()=>{const e=D(38),r=Z(),[a,P]=j("all"),[n,V]=j("");let b;e[0]===Symbol.for("react.memo_cache_sentinel")?(b={},e[0]=b):b=e[0];const{data:T,error:i,errorSource:p,isLoading:v,refetch:g}=Y(_.listPushSubscriptions,b);let N;if(e[1]!==T?.subscriptions||e[2]!==i||e[3]!==p||e[4]!==v||e[5]!==a||e[6]!==g||e[7]!==n||e[8]!==r){const I=T?.subscriptions??[],$=n.trim().toLowerCase(),A=I.filter(s=>a!=="all"&&s.kind!==a?!1:$===""?!0:`${M(s)} ${s.userId??""}`.toLowerCase().includes($));let w;e[10]===Symbol.for("react.memo_cache_sentinel")?(w=s=>{V(s.target.value)},e[10]=w):w=e[10];const z=w;let y;e[11]!==g?(y=()=>{g()},e[11]=g,e[12]=y):y=e[12];const B=y;let C;e[13]===Symbol.for("react.memo_cache_sentinel")?(C=["all","web-push","fcm"],e[13]=C):C=e[13];const W=C;let o;e[14]!==a||e[15]!==r?(o=t("div",{className:"flex items-center gap-1","data-testid":"nt-kind-filter",role:"tablist",children:W.map(s=>t(F,{"aria-selected":a===s,"data-testid":`nt-kind-${s}`,onClick:()=>{P(s)},role:"tab",size:"sm",type:"button",variant:a===s?"secondary":"ghost",children:s==="all"?r("All"):s},s))}),e[14]=a,e[15]=r,e[16]=o):o=e[16];let l;e[17]!==r?(l=r("Filter devices"),e[17]=r,e[18]=l):l=e[18];let d;e[19]!==r?(d=r("filter endpoint, user"),e[19]=r,e[20]=d):d=e[20];let c;e[21]!==n||e[22]!==l||e[23]!==d?(c=t(q,{"aria-label":l,className:"h-8 w-56","data-testid":"nt-search",onChange:z,placeholder:d,value:n}),e[21]=n,e[22]=l,e[23]=d,e[24]=c):c=e[24];let m;e[25]!==r?(m=r("Refresh"),e[25]=r,e[26]=m):m=e[26];let f;e[27]!==B||e[28]!==m?(f=t(F,{className:"ml-auto","data-testid":"nt-refresh",onClick:B,size:"sm",type:"button",variant:"outline",children:m}),e[27]=B,e[28]=m,e[29]=f):f=e[29];const E=I.length>0&&t(L,{"data-testid":"nt-count",variant:"secondary",children:r("{count} devices",{count:I.length})});let k;e[30]!==f||e[31]!==E||e[32]!==o||e[33]!==c?(k=x("div",{className:"flex flex-wrap items-center gap-2",children:[o,c,f,E]}),e[30]=f,e[31]=E,e[32]=o,e[33]=c,e[34]=k):k=e[34];let S;e[35]!==i||e[36]!==p?(S=i!==null&&t(K,{error:p,testId:"nt-error"}),e[35]=i,e[36]=p,e[37]=S):S=e[37],N=x("div",{className:"flex flex-col gap-4","data-testid":"lunora-notifications",children:[k,S,i===null&&!v&&A.length===0&&t(U,{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.")}),A.length>0&&t(O,{className:"overflow-hidden py-0",children:t(Q,{className:"max-h-[30rem] overflow-auto px-0",children:x(G,{"data-testid":"nt-table",children:[t(J,{children:x(H,{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(X,{children:A.map(s=>{const R=M(s);return x(H,{"data-testid":"nt-row",children:[t(u,{children:t(L,{variant:"outline",children:s.kind})}),t(u,{className:"max-w-[28ch] truncate font-mono text-xs",title:R,children:R}),t(u,{className:"max-w-[16ch] truncate font-mono text-xs",children:s.userId??t("span",{className:"text-muted-foreground",children:"—"})}),t(u,{className:"text-muted-foreground tabular-nums",children:ee(s.lastSeenAt,"—")}),t(u,{children:t(L,{"data-testid":`nt-status-${s.id}`,variant:te(s.lastStatus),children:s.lastStatus??r("n/a")})}),t(u,{className:"max-w-[28ch] truncate font-mono text-xs text-muted-foreground",title:s.lastError??void 0,children:s.lastError??t("span",{className:"text-muted-foreground",children:"—"})})]},s.id)})})]})})})]}),e[1]=T?.subscriptions,e[2]=i,e[3]=p,e[4]=v,e[5]=a,e[6]=g,e[7]=n,e[8]=r,e[9]=N}else N=e[9];return N};export{ge as default};
1
+ import{c as D}from"react/compiler-runtime";import{useState as j}from"react";import{E as K}from"../packem_shared/error-alert-DueSEkt-.mjs";import{B as L}from"../packem_shared/badge-r_5B4LHP.mjs";import{B as F}from"../packem_shared/button-q0UYSmrn.mjs";import{C as O,a as Q}from"../packem_shared/card--2hKx4L2.mjs";import{E as U}from"../packem_shared/empty-state-D7jEML_T.mjs";import{I as q}from"../packem_shared/input-CXhxesPC.mjs";import{T as G,a as J,b as H,c as h,d as X,e as u}from"../packem_shared/table-D0SBiDu-.mjs";import{u as Y}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{useT as Z}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as _}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{h as ee}from"../packem_shared/internal-Df43vQI0.mjs";import{jsx as t,jsxs as x}from"react/jsx-runtime";const te=e=>e==="ok"?"success":e==="failed"?"destructive":e==="expired"?"warning":"secondary",M=e=>e.endpoint??e.id,ge=()=>{const e=D(38),r=Z(),[a,P]=j("all"),[n,V]=j("");let b;e[0]===Symbol.for("react.memo_cache_sentinel")?(b={},e[0]=b):b=e[0];const{data:T,error:i,errorSource:p,isLoading:v,refetch:g}=Y(_.listPushSubscriptions,b);let N;if(e[1]!==T?.subscriptions||e[2]!==i||e[3]!==p||e[4]!==v||e[5]!==a||e[6]!==g||e[7]!==n||e[8]!==r){const I=T?.subscriptions??[],$=n.trim().toLowerCase(),A=I.filter(s=>a!=="all"&&s.kind!==a?!1:$===""?!0:`${M(s)} ${s.userId??""}`.toLowerCase().includes($));let w;e[10]===Symbol.for("react.memo_cache_sentinel")?(w=s=>{V(s.target.value)},e[10]=w):w=e[10];const z=w;let y;e[11]!==g?(y=()=>{g()},e[11]=g,e[12]=y):y=e[12];const B=y;let C;e[13]===Symbol.for("react.memo_cache_sentinel")?(C=["all","web-push","fcm"],e[13]=C):C=e[13];const W=C;let o;e[14]!==a||e[15]!==r?(o=t("div",{className:"flex items-center gap-1","data-testid":"nt-kind-filter",role:"tablist",children:W.map(s=>t(F,{"aria-selected":a===s,"data-testid":`nt-kind-${s}`,onClick:()=>{P(s)},role:"tab",size:"sm",type:"button",variant:a===s?"secondary":"ghost",children:s==="all"?r("All"):s},s))}),e[14]=a,e[15]=r,e[16]=o):o=e[16];let l;e[17]!==r?(l=r("Filter devices"),e[17]=r,e[18]=l):l=e[18];let d;e[19]!==r?(d=r("filter endpoint, user"),e[19]=r,e[20]=d):d=e[20];let c;e[21]!==n||e[22]!==l||e[23]!==d?(c=t(q,{"aria-label":l,className:"h-8 w-56","data-testid":"nt-search",onChange:z,placeholder:d,value:n}),e[21]=n,e[22]=l,e[23]=d,e[24]=c):c=e[24];let m;e[25]!==r?(m=r("Refresh"),e[25]=r,e[26]=m):m=e[26];let f;e[27]!==B||e[28]!==m?(f=t(F,{className:"ml-auto","data-testid":"nt-refresh",onClick:B,size:"sm",type:"button",variant:"outline",children:m}),e[27]=B,e[28]=m,e[29]=f):f=e[29];const E=I.length>0&&t(L,{"data-testid":"nt-count",variant:"secondary",children:r("{count} devices",{count:I.length})});let k;e[30]!==f||e[31]!==E||e[32]!==o||e[33]!==c?(k=x("div",{className:"flex flex-wrap items-center gap-2",children:[o,c,f,E]}),e[30]=f,e[31]=E,e[32]=o,e[33]=c,e[34]=k):k=e[34];let S;e[35]!==i||e[36]!==p?(S=i!==null&&t(K,{error:p,testId:"nt-error"}),e[35]=i,e[36]=p,e[37]=S):S=e[37],N=x("div",{className:"flex flex-col gap-4","data-testid":"lunora-notifications",children:[k,S,i===null&&!v&&A.length===0&&t(U,{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.")}),A.length>0&&t(O,{className:"overflow-hidden py-0",children:t(Q,{className:"max-h-[30rem] overflow-auto px-0",children:x(G,{"data-testid":"nt-table",children:[t(J,{children:x(H,{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(X,{children:A.map(s=>{const R=M(s);return x(H,{"data-testid":"nt-row",children:[t(u,{children:t(L,{variant:"outline",children:s.kind})}),t(u,{className:"max-w-[28ch] truncate font-mono text-xs",title:R,children:R}),t(u,{className:"max-w-[16ch] truncate font-mono text-xs",children:s.userId??t("span",{className:"text-muted-foreground",children:"—"})}),t(u,{className:"text-muted-foreground tabular-nums",children:ee(s.lastSeenAt,"—")}),t(u,{children:t(L,{"data-testid":`nt-status-${s.id}`,variant:te(s.lastStatus),children:s.lastStatus??r("n/a")})}),t(u,{className:"max-w-[28ch] truncate font-mono text-xs text-muted-foreground",title:s.lastError??void 0,children:s.lastError??t("span",{className:"text-muted-foreground",children:"—"})})]},s.id)})})]})})})]}),e[1]=T?.subscriptions,e[2]=i,e[3]=p,e[4]=v,e[5]=a,e[6]=g,e[7]=n,e[8]=r,e[9]=N}else N=e[9];return N};export{ge as default};
@@ -1 +1 @@
1
- import{c as Z}from"react/compiler-runtime";import{useLunora as J}from"@lunora/react";import{useState as c,useCallback as Q,useEffect as V}from"react";import{ConfirmButton as O}from"../packem_shared/ConfirmButton-DU4p72Er.mjs";import{B as W}from"../packem_shared/badge-r_5B4LHP.mjs";import{B as X}from"../packem_shared/button-q0UYSmrn.mjs";import{I as P}from"../packem_shared/input-CXhxesPC.mjs";import{L as w}from"../packem_shared/label-DKFzyHq6.mjs";import{useAutoRefresh as Y}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{useT as S}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as E}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{d as k,b as C,f as g,c as M}from"../packem_shared/internal-CyDwqA67.mjs";import{jsxs as a,jsx as o}from"react/jsx-runtime";const T=M(E.getPitrBookmark),ee=M(E.pitrRestore),te=/^\d+$/u,F=h=>{const t=h.trim(),e=te.test(t)?Number(t):Date.parse(t),s=new Date(e);return Number.isNaN(s.getTime())?void 0:{epochMs:e,iso:s.toISOString()}},re=h=>{const t=Z(9),{text:e}=h,s=S();if(e.trim()==="")return null;let l,n,i;if(t[0]!==s||t[1]!==e){const x=F(e);l="font-mono text-xs text-muted-foreground",n="pitr-time-resolved",i=x===void 0?s("Not a time — use epoch-ms or ISO 8601."):s("Resolves to {instant} (a date-time without an offset is read in this browser's time zone; a bare date is UTC)",{instant:x.iso}),t[0]=s,t[1]=e,t[2]=l,t[3]=n,t[4]=i}else l=t[2],n=t[3],i=t[4];let m;return t[5]!==l||t[6]!==n||t[7]!==i?(m=o("p",{className:l,"data-testid":n,children:i}),t[5]=l,t[6]=n,t[7]=i,t[8]=m):m=t[8],m},xe=({initialShardKey:h})=>{const t=J(),e=S(),s=h??"",[l,n]=c(null),[i,m]=c(""),[x,B]=c(null),[b,L]=c(""),[v,U]=c(!1),[d,A]=c(null),[_,u]=c(null),[N,p]=c(!1),y=Q(async()=>{p(!0),u(null);try{const r=await t.query(T,{},k(s));n(r.current)}catch(r){u(C(r))}p(!1)},[t,s]);V(()=>{g(y())},[y]),Y(()=>{g((async()=>{try{const r=await t.query(T,{},k(s));n(r.current)}catch{}})())},!0);const q=r=>{m(r.target.value)},z=r=>{L(r.target.value)},D=r=>{U(r.target.checked)},f=F(i),K=()=>{f!==void 0&&g((async()=>{p(!0),u(null);try{const r=await t.query(T,{time:f.epochMs},k(s));B(r.forTime??null),n(r.current)}catch(r){B(null),u(C(r))}p(!1)})())},I=r=>{g((async()=>{p(!0),u(null);try{const R=await t.mutation(ee,r,k(s));A(R),await y()}catch(R){u(C(R))}p(!1)})())},j=b.trim()!==""||f!==void 0,H=e("Restore {shard} to {target}?",{shard:s===""?e("root"):s,target:b.trim()===""?f?.iso??"":e("the given bookmark")}),$=()=>{const r=v?{restart:!0}:{};b.trim()===""?r.time=f?.epochMs:r.bookmark=b.trim(),I(r)},G=()=>{d!==null&&I(v?{bookmark:d.undoBookmark,restart:!0}:{bookmark:d.undoBookmark})};return a("div",{className:"flex flex-col gap-4","data-testid":"lunora-pitr",children:[o("div",{className:"flex flex-wrap items-center gap-3",children:a("span",{className:"text-xs text-muted-foreground",children:[e("Shard"),": ",o("span",{className:"font-mono",children:s===""?e("root"):s})]})}),o("p",{className:"text-sm text-muted-foreground","data-testid":"pitr-note",children:e("In-place recovery to any moment in the last 30 days. For older or portable recovery, use the snapshot backup tier.")}),_!==null&&o("p",{className:"text-sm text-destructive","data-testid":"pitr-error",role:"alert",children:_}),a("section",{className:"rounded-xl border border-border bg-card p-3 shadow-xs",children:[o("h3",{className:"mb-2 text-sm font-semibold",children:e("Current bookmark")}),o("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-current",children:l??o("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:[o("h3",{className:"text-sm font-semibold",children:e("Restore")}),a("div",{className:"flex flex-col gap-1",children:[o(w,{htmlFor:"pitr-time",children:e("Time (ISO or epoch-ms, last 30 days)")}),a("div",{className:"flex items-center gap-2",children:[o(P,{"data-testid":"pitr-time",id:"pitr-time",onChange:q,placeholder:"2026-06-01T00:00:00.000Z",value:i}),o(X,{"data-testid":"pitr-preview",disabled:N||f===void 0,onClick:K,size:"sm",type:"button",variant:"outline",children:e("Preview")})]}),o(re,{text:i}),x!==null&&a("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-preview-bookmark",children:[e("Bookmark for that time"),": ",x]})]}),a("div",{className:"flex flex-col gap-1",children:[o(w,{htmlFor:"pitr-bookmark",children:e("Or an explicit bookmark (wins over time)")}),o(P,{"data-testid":"pitr-bookmark",id:"pitr-bookmark",onChange:z,placeholder:e("bookmark string"),value:b})]}),a(w,{className:"flex items-center gap-2 text-xs font-normal text-muted-foreground",htmlFor:"pitr-restart",children:[o("input",{checked:v,className:"size-4 accent-primary","data-testid":"pitr-restart",id:"pitr-restart",onChange:D,type:"checkbox"}),e("Restart the shard now so recovery applies immediately")]}),o("div",{children:o(O,{confirmLabel:H,disabled:N||!j,onConfirm:$,testId:"pitr-restore",children:e("Restore")})})]}),d!==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:[o("h3",{className:"text-sm font-semibold",children:e("Restore armed")}),o(W,{variant:d.restarted?"destructive":"secondary",children:d.restarted?e("restarted now"):e("on next restart")})]}),a("p",{className:"font-mono text-xs break-all text-muted-foreground",children:[e("Restored to"),": ",d.restoredTo]}),a("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-undo-bookmark",children:[e("Undo bookmark"),": ",d.undoBookmark]}),o("div",{children:o(O,{confirmLabel:e("Confirm undo"),disabled:N,onConfirm:G,testId:"pitr-undo",children:e("Undo restore")})})]})]})};export{xe as PitrPanel};
1
+ import{c as W}from"react/compiler-runtime";import{useLunora as X}from"@lunora/react";import{useState as d,useCallback as Y,useEffect as ee}from"react";import{ConfirmButton as O}from"../packem_shared/ConfirmButton-DU4p72Er.mjs";import{B as te}from"../packem_shared/badge-r_5B4LHP.mjs";import{B as re}from"../packem_shared/button-q0UYSmrn.mjs";import{I as E}from"../packem_shared/input-CXhxesPC.mjs";import{L as T}from"../packem_shared/label-DKFzyHq6.mjs";import{useAutoRefresh as oe}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{useT as U}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as M}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{d as v,i as S,b as _,f as N,c as F}from"../packem_shared/internal-Df43vQI0.mjs";import{jsxs as a,jsx as o}from"react/jsx-runtime";const B=F(M.getPitrBookmark),se=F(M.pitrRestore),ae=/^\d+$/u,q=b=>{const t=b.trim(),e=ae.test(t)?Number(t):Date.parse(t),s=new Date(e);return Number.isNaN(s.getTime())?void 0:{epochMs:e,iso:s.toISOString()}},ne=b=>{const t=W(9),{text:e}=b,s=U();if(e.trim()==="")return null;let c,i,l;if(t[0]!==s||t[1]!==e){const x=q(e);c="font-mono text-xs text-muted-foreground",i="pitr-time-resolved",l=x===void 0?s("Not a time — use epoch-ms or ISO 8601."):s("Resolves to {instant} (a date-time without an offset is read in this browser's time zone; a bare date is UTC)",{instant:x.iso}),t[0]=s,t[1]=e,t[2]=c,t[3]=i,t[4]=l}else c=t[2],i=t[3],l=t[4];let u;return t[5]!==c||t[6]!==i||t[7]!==l?(u=o("p",{className:c,"data-testid":i,children:l}),t[5]=c,t[6]=i,t[7]=l,t[8]=u):u=t[8],u},ve=({initialShardKey:b})=>{const t=X(),e=U(),s=b??"",[c,i]=d(null),[l,u]=d(""),[x,I]=d(null),[k,z]=d(""),[y,D]=d(!1),[m,K]=d(null),[A,p]=d(null),[R,f]=d(!1),[g,P]=d(!1),w=Y(async r=>{f(!0),p(null);let n;try{n={current:(await t.query(B,{},v(s))).current,error:null,unavailable:!1}}catch(C){n={current:null,error:_(C),unavailable:S(C)==="PITR_UNAVAILABLE"}}r?.aborted!==!0&&(n.error===null?i(n.current):p(n.error),P(n.unavailable),f(!1))},[t,s]);ee(()=>{const r=new AbortController;return N(w(r.signal)),()=>{r.abort()}},[w]),oe(()=>{N((async()=>{try{const r=await t.query(B,{},v(s));i(r.current)}catch{}})())},!g);const j=r=>{u(r.target.value)},H=r=>{z(r.target.value)},V=r=>{D(r.target.checked)},h=q(l),$=()=>{h!==void 0&&N((async()=>{f(!0),p(null);try{const r=await t.query(B,{time:h.epochMs},v(s));I(r.forTime??null),i(r.current)}catch(r){I(null),p(_(r))}f(!1)})())},L=r=>{N((async()=>{f(!0),p(null);try{const n=await t.mutation(se,r,v(s));K(n),await w()}catch(n){p(_(n)),S(n)==="PITR_UNAVAILABLE"&&P(!0)}f(!1)})())},G=k.trim()!==""||h!==void 0,Z=e("Restore {shard} to {target}?",{shard:s===""?e("root"):s,target:k.trim()===""?h?.iso??"":e("the given bookmark")}),J=()=>{const r=y?{restart:!0}:{};k.trim()===""?r.time=h?.epochMs:r.bookmark=k.trim(),L(r)},Q=()=>{m!==null&&L(y?{bookmark:m.undoBookmark,restart:!0}:{bookmark:m.undoBookmark})};return a("div",{className:"flex flex-col gap-4","data-testid":"lunora-pitr",children:[o("div",{className:"flex flex-wrap items-center gap-3",children:a("span",{className:"text-xs text-muted-foreground",children:[e("Shard"),": ",o("span",{className:"font-mono",children:s===""?e("root"):s})]})}),o("p",{className:"text-sm text-muted-foreground","data-testid":"pitr-note",children:e("In-place recovery to any moment in the last 30 days. For older or portable recovery, use the snapshot backup tier.")}),A!==null&&o("p",{className:"text-sm text-destructive","data-testid":"pitr-error",role:"alert",children:A}),a("section",{className:"rounded-xl border border-border bg-card p-3 shadow-xs",children:[o("h3",{className:"mb-2 text-sm font-semibold",children:e("Current bookmark")}),o("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-current",children:c??o("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:[o("h3",{className:"text-sm font-semibold",children:e("Restore")}),a("div",{className:"flex flex-col gap-1",children:[o(T,{htmlFor:"pitr-time",children:e("Time (ISO or epoch-ms, last 30 days)")}),a("div",{className:"flex items-center gap-2",children:[o(E,{"data-testid":"pitr-time",id:"pitr-time",onChange:j,placeholder:"2026-06-01T00:00:00.000Z",value:l}),o(re,{"data-testid":"pitr-preview",disabled:R||g||h===void 0,onClick:$,size:"sm",type:"button",variant:"outline",children:e("Preview")})]}),o(ne,{text:l}),x!==null&&a("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-preview-bookmark",children:[e("Bookmark for that time"),": ",x]})]}),a("div",{className:"flex flex-col gap-1",children:[o(T,{htmlFor:"pitr-bookmark",children:e("Or an explicit bookmark (wins over time)")}),o(E,{"data-testid":"pitr-bookmark",id:"pitr-bookmark",onChange:H,placeholder:e("bookmark string"),value:k})]}),a(T,{className:"flex items-center gap-2 text-xs font-normal text-muted-foreground",htmlFor:"pitr-restart",children:[o("input",{checked:y,className:"size-4 accent-primary","data-testid":"pitr-restart",id:"pitr-restart",onChange:V,type:"checkbox"}),e("Restart the shard now so recovery applies immediately")]}),o("div",{children:o(O,{confirmLabel:Z,disabled:R||g||!G,onConfirm:J,testId:"pitr-restore",children:e("Restore")})})]}),m!==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:[o("h3",{className:"text-sm font-semibold",children:e("Restore armed")}),o(te,{variant:m.restarted?"destructive":"secondary",children:m.restarted?e("restarted now"):e("on next restart")})]}),a("p",{className:"font-mono text-xs break-all text-muted-foreground",children:[e("Restored to"),": ",m.restoredTo]}),a("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-undo-bookmark",children:[e("Undo bookmark"),": ",m.undoBookmark]}),o("div",{children:o(O,{confirmLabel:e("Confirm undo"),disabled:R||g,onConfirm:Q,testId:"pitr-undo",children:e("Undo restore")})})]})]})};export{ve as PitrPanel};