@lunora/studio 1.0.0-alpha.35 → 1.0.0-alpha.350

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 (475) hide show
  1. package/LICENSE.md +6 -0
  2. package/README.md +4 -4
  3. package/dist/index.d.mts +1618 -0
  4. package/dist/index.d.ts +1010 -809
  5. package/dist/index.mjs +1 -0
  6. package/dist/mount.d.mts +23 -0
  7. package/dist/mount.d.ts +13 -11
  8. package/dist/mount.mjs +1 -0
  9. package/dist/packem_chunks/AdvisorHealthPanel.mjs +1 -0
  10. package/dist/packem_chunks/ApiTab.mjs +1 -0
  11. package/dist/packem_chunks/AuditPanel.mjs +1 -0
  12. package/dist/packem_chunks/DeploymentHealthPanel.mjs +1 -0
  13. package/dist/packem_chunks/ExportImportPanel.mjs +8 -0
  14. package/dist/packem_chunks/FileBrowser.mjs +4 -0
  15. package/dist/packem_chunks/FunctionRunner.mjs +1 -0
  16. package/dist/packem_chunks/FunctionStatsPanel.mjs +1 -0
  17. package/dist/packem_chunks/HealthPanel.mjs +1 -0
  18. package/dist/packem_chunks/InsightsPanel.mjs +1 -0
  19. package/dist/packem_chunks/LogsPanel.mjs +1 -0
  20. package/dist/packem_chunks/MailPanel.mjs +2 -0
  21. package/dist/packem_chunks/MetricsPanel.mjs +1 -0
  22. package/dist/packem_chunks/NotificationsPanel.mjs +1 -0
  23. package/dist/packem_chunks/PitrPanel.mjs +1 -0
  24. package/dist/packem_chunks/SchemaViewer.mjs +1 -0
  25. package/dist/packem_chunks/SecurityAdvisorPanel.mjs +1 -0
  26. package/dist/packem_chunks/SettingsPanel.mjs +1 -0
  27. package/dist/packem_chunks/SqlEditorPanel.mjs +10 -0
  28. package/dist/packem_chunks/TableEditor.mjs +1 -0
  29. package/dist/packem_chunks/agents-panel.mjs +1 -0
  30. package/dist/packem_chunks/ai-usage-panel.mjs +1 -0
  31. package/dist/packem_chunks/analytics-panel.mjs +1 -0
  32. package/dist/packem_chunks/architecture-panel.mjs +1 -0
  33. package/dist/packem_chunks/auth-audit-panel.mjs +1 -0
  34. package/dist/packem_chunks/auth-config-panel.mjs +1 -0
  35. package/dist/packem_chunks/auth-sessions-panel.mjs +1 -0
  36. package/dist/packem_chunks/containers-panel.mjs +1 -0
  37. package/dist/packem_chunks/dashboards-panel.mjs +1 -0
  38. package/dist/packem_chunks/evals-panel.mjs +1 -0
  39. package/dist/packem_chunks/fanout-panel.mjs +1 -0
  40. package/dist/packem_chunks/flags-panel.mjs +1 -0
  41. package/dist/packem_chunks/issues-panel.mjs +1 -0
  42. package/dist/packem_chunks/kv-browser.mjs +1 -0
  43. package/dist/packem_chunks/log-drains-panel.mjs +4 -0
  44. package/dist/packem_chunks/migrations-route.mjs +1 -0
  45. package/dist/packem_chunks/organizations-panel.mjs +1 -0
  46. package/dist/packem_chunks/payments-panel.mjs +1 -0
  47. package/dist/packem_chunks/permissions-panel.mjs +1 -0
  48. package/dist/packem_chunks/privacy-requests-panel.mjs +1 -0
  49. package/dist/packem_chunks/queues-panel.mjs +1 -0
  50. package/dist/packem_chunks/reactors-panel.mjs +1 -0
  51. package/dist/packem_chunks/rls-panel.mjs +1 -0
  52. package/dist/packem_chunks/schedule-panel.mjs +1 -0
  53. package/dist/packem_chunks/storage-rules-panel.mjs +1 -0
  54. package/dist/packem_chunks/subscriptions-panel.mjs +1 -0
  55. package/dist/packem_chunks/sync-client-panel.mjs +1 -0
  56. package/dist/packem_chunks/theme-indicator.mjs +1 -0
  57. package/dist/packem_chunks/traces-panel.mjs +1 -0
  58. package/dist/packem_chunks/users-panel.mjs +1 -0
  59. package/dist/packem_chunks/vector-browser.mjs +1 -0
  60. package/dist/packem_chunks/workflows-panel.mjs +1 -0
  61. package/dist/packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs +1 -0
  62. package/dist/packem_shared/ApiDocsPanel-B_RaW7Br.mjs +2 -0
  63. package/dist/packem_shared/ApiReferencePanel-u9Rrljdf.mjs +1 -0
  64. package/dist/packem_shared/CommandPalette-5OsK8PNe.mjs +1 -0
  65. package/dist/packem_shared/ConfirmButton-CIXYF6Mg.mjs +1 -0
  66. package/dist/packem_shared/ConnectionBadge-BfcoN-VE.mjs +1 -0
  67. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-CG7Q45ZS.mjs +1 -0
  68. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-D5YMT0gM.mjs +1 -0
  69. package/dist/packem_shared/DEFAULT_LOCALE-BQ3jRT74.mjs +1 -0
  70. package/dist/packem_shared/DataBrowser-Cc1qZX-4.mjs +4 -0
  71. package/dist/packem_shared/DataFilters--ocFTVT2.mjs +1 -0
  72. package/dist/packem_shared/ErrorBoundary-BWNF98VF.mjs +1 -0
  73. package/dist/packem_shared/GlobalDataBrowser-Hq6gTlkb.mjs +1 -0
  74. package/dist/packem_shared/HomePanel-DeyYLVxc.mjs +1 -0
  75. package/dist/packem_shared/MigrationsPanel-CMZYYcQ5.mjs +1 -0
  76. package/dist/packem_shared/OpenRpcReferencePanel-E9cDfHRv.mjs +1 -0
  77. package/dist/packem_shared/STUDIO_ROOT_CLASS-C6MccdVk.mjs +1 -0
  78. package/dist/packem_shared/ScheduledJobs-D4CUj7aX.mjs +1 -0
  79. package/dist/packem_shared/ShardInput-CoySruKZ.mjs +1 -0
  80. package/dist/packem_shared/Studio-BhTqTeGb.mjs +1 -0
  81. package/dist/packem_shared/StudioApp-B1d0beD4.mjs +1 -0
  82. package/dist/packem_shared/StudioI18nProvider-CGXCPnQn.mjs +1 -0
  83. package/dist/packem_shared/advisor-view-fNcNYW2Q.mjs +1 -0
  84. package/dist/packem_shared/aggregateMetrics-DKFJc-o5.mjs +1 -0
  85. package/dist/packem_shared/alert-PB5W11MM.mjs +1 -0
  86. package/dist/packem_shared/app.d-D425h1XO.d.mts +352 -0
  87. package/dist/packem_shared/app.d-D425h1XO.d.ts +352 -0
  88. package/dist/packem_shared/auth-pager-DW77WeZw.mjs +1 -0
  89. package/dist/packem_shared/badge-r_5B4LHP.mjs +1 -0
  90. package/dist/packem_shared/bar-chart-BCsEIQoQ.mjs +6 -0
  91. package/dist/packem_shared/browser-storage-BH1MxLZs.mjs +1 -0
  92. package/dist/packem_shared/button-q0UYSmrn.mjs +1 -0
  93. package/dist/packem_shared/card-By2O8ULa.mjs +1 -0
  94. package/dist/packem_shared/cf-links-CBJ5SywP.mjs +1 -0
  95. package/dist/packem_shared/checkbox-CnS9cyCz.mjs +1 -0
  96. package/dist/packem_shared/control-button-BOZ5K-FC.mjs +1 -0
  97. package/dist/packem_shared/data-grid-r3isM8Nq.mjs +1 -0
  98. package/dist/packem_shared/data-view-params-C-_G-biH.mjs +1 -0
  99. package/dist/packem_shared/diagram-export-panel-aBDQdX4e.mjs +2 -0
  100. package/dist/packem_shared/dropdown-menu-jLZenfWH.mjs +2 -0
  101. package/dist/packem_shared/empty-state-D7jEML_T.mjs +1 -0
  102. package/dist/packem_shared/error-alert-54TiaMvZ.mjs +1 -0
  103. package/dist/packem_shared/grid-features-2c5SaBtH.mjs +6 -0
  104. package/dist/packem_shared/grid-pagination-DY2erU65.mjs +1 -0
  105. package/dist/packem_shared/home-panel-0XMGe1hP.mjs +3 -0
  106. package/dist/packem_shared/input-CXhxesPC.mjs +1 -0
  107. package/dist/packem_shared/internal-BXEjuLPN.mjs +2 -0
  108. package/dist/packem_shared/label-DKFzyHq6.mjs +1 -0
  109. package/dist/packem_shared/live-status-D1GasNsH.mjs +1 -0
  110. package/dist/packem_shared/log-fields-BolUoZ9g.mjs +1 -0
  111. package/dist/packem_shared/log-line-BWDt_F56.mjs +1 -0
  112. package/dist/packem_shared/metrics-format-1sNGG47R.mjs +1 -0
  113. package/dist/packem_shared/modal-shell-CDztwLnv.mjs +1 -0
  114. package/dist/packem_shared/operation-console-provider-DoloEvon.mjs +1 -0
  115. package/dist/packem_shared/recording-client-MbGZ28I0.mjs +1 -0
  116. package/dist/packem_shared/reference-view-DCEC5kjY.mjs +13 -0
  117. package/dist/packem_shared/schema-diagram-k7cFl7Wp.mjs +2 -0
  118. package/dist/packem_shared/scroll-area-CXCQH7VT.mjs +2 -0
  119. package/dist/packem_shared/select-DPyS18Vy.mjs +2 -0
  120. package/dist/packem_shared/shard-history-CaO3C4KQ.mjs +1 -0
  121. package/dist/packem_shared/shortcuts-B9gDaXmw.mjs +1 -0
  122. package/dist/packem_shared/skeleton-DX1gfixl.mjs +1 -0
  123. package/dist/packem_shared/sparkline-B_sPPO_8.mjs +1 -0
  124. package/dist/packem_shared/sql-result-table-CatgdmMh.mjs +1 -0
  125. package/dist/packem_shared/stat-card-BAv73QtB.mjs +1 -0
  126. package/dist/packem_shared/storage-tier-C2mKwYRj.mjs +1 -0
  127. package/dist/packem_shared/studio-CA3ZKwVK.mjs +2 -0
  128. package/dist/packem_shared/table-D0SBiDu-.mjs +2 -0
  129. package/dist/packem_shared/table-list-sidebar-nA7g7uSk.mjs +1 -0
  130. package/dist/packem_shared/textarea--40GKAyz.mjs +1 -0
  131. package/dist/packem_shared/trace-handoff-BV3EWqy_.mjs +1 -0
  132. package/dist/packem_shared/use-admin-query-BW9IuacC.mjs +1 -0
  133. package/dist/packem_shared/use-admin-spec-BdNLZbTO.mjs +1 -0
  134. package/dist/packem_shared/use-async-submit-2eBBD0-m.mjs +1 -0
  135. package/dist/packem_shared/use-auth-config-KO9tnI39.mjs +1 -0
  136. package/dist/packem_shared/use-mirrored-ref-CVDf2z1M.mjs +1 -0
  137. package/dist/packem_shared/use-open-trace-B_0LbTD7.mjs +1 -0
  138. package/dist/packem_shared/use-shard-key-BsP3o5wT.mjs +1 -0
  139. package/dist/packem_shared/use-sql-assistant-DXnqbBs-.mjs +1 -0
  140. package/dist/packem_shared/use-studio-client-DCA50tF2.mjs +1 -0
  141. package/dist/packem_shared/useDebounced-DVeQ5-oW.mjs +1 -0
  142. package/dist/packem_shared/utils-bhneXptQ.mjs +1 -0
  143. package/dist/packem_shared/virtual-rect-D_j7aLxX.mjs +1 -0
  144. package/dist/standalone/chunk-26OKWFLO.js +1 -0
  145. package/dist/standalone/chunk-2EL4EMYZ.js +1 -0
  146. package/dist/standalone/chunk-2O6KKVH2.js +1 -0
  147. package/dist/standalone/chunk-2WNL74MI.js +4 -0
  148. package/dist/standalone/chunk-2X6O33OX.js +1 -0
  149. package/dist/standalone/chunk-2ZO7XY3Z.js +1 -0
  150. package/dist/standalone/chunk-3GXPALXG.js +1 -0
  151. package/dist/standalone/chunk-3Y5K3IQO.js +1 -0
  152. package/dist/standalone/chunk-4C4THJUD.js +1 -0
  153. package/dist/standalone/chunk-4IEMXFUB.js +1 -0
  154. package/dist/standalone/chunk-4SQBAPY6.js +1 -0
  155. package/dist/standalone/chunk-4ZEL6BYL.js +1 -0
  156. package/dist/standalone/chunk-5DNGK3NT.js +1 -0
  157. package/dist/standalone/chunk-5J32EGHF.js +1 -0
  158. package/dist/standalone/chunk-5NZWQEEJ.js +1 -0
  159. package/dist/standalone/chunk-6I42AM75.js +1 -0
  160. package/dist/standalone/chunk-6M7FLLMT.js +1 -0
  161. package/dist/standalone/chunk-6QEXGYWH.js +1 -0
  162. package/dist/standalone/chunk-7AZYREIY.js +1 -0
  163. package/dist/standalone/chunk-7F3S5OQT.js +1 -0
  164. package/dist/standalone/chunk-7MN724WR.js +1 -0
  165. package/dist/standalone/chunk-7RGYCU6F.js +1 -0
  166. package/dist/standalone/chunk-A566HCBX.js +1 -0
  167. package/dist/standalone/chunk-AOHKAKKL.js +1 -0
  168. package/dist/standalone/chunk-AP4PC2M4.js +1 -0
  169. package/dist/standalone/chunk-B3AXFXAD.js +1 -0
  170. package/dist/standalone/chunk-B7MHW3A5.js +1 -0
  171. package/dist/standalone/chunk-BHOLL76W.js +8 -0
  172. package/dist/standalone/chunk-BTRYFPZH.js +1 -0
  173. package/dist/standalone/chunk-BVKQA5OL.js +1 -0
  174. package/dist/standalone/chunk-CGZVMM3P.js +1 -0
  175. package/dist/standalone/chunk-CIVMATZK.js +3 -0
  176. package/dist/standalone/chunk-CLINNLLE.js +1 -0
  177. package/dist/standalone/chunk-CTE6RPXC.js +1 -0
  178. package/dist/standalone/chunk-CW57Q264.js +1 -0
  179. package/dist/standalone/chunk-D7JK65OK.js +1 -0
  180. package/dist/standalone/chunk-DBVJ5VLI.js +1 -0
  181. package/dist/standalone/chunk-DS7HZKZ2.js +6 -0
  182. package/dist/standalone/chunk-DX55P3KZ.js +1 -0
  183. package/dist/standalone/chunk-E26OT26O.js +1 -0
  184. package/dist/standalone/chunk-E32FS6PE.js +5 -0
  185. package/dist/standalone/chunk-E3VSRIQU.js +1 -0
  186. package/dist/standalone/chunk-EDGOSJXL.js +1 -0
  187. package/dist/standalone/chunk-EOR73TZZ.js +1 -0
  188. package/dist/standalone/chunk-F5LTDUMB.js +1 -0
  189. package/dist/standalone/chunk-FLVDICZL.js +1 -0
  190. package/dist/standalone/chunk-FPIUVV7Q.js +1 -0
  191. package/dist/standalone/chunk-GMW2DYFU.js +1 -0
  192. package/dist/standalone/chunk-GPOSJNMV.js +14 -0
  193. package/dist/standalone/chunk-GQYA5W5T.js +1 -0
  194. package/dist/standalone/chunk-HFYFYNSX.js +1 -0
  195. package/dist/standalone/chunk-HKLF627N.js +1 -0
  196. package/dist/standalone/chunk-HKPDPKXD.js +1 -0
  197. package/dist/standalone/chunk-HLAAOW33.js +1 -0
  198. package/dist/standalone/chunk-HOPAJ5F6.js +15 -0
  199. package/dist/standalone/chunk-IBJVVHV5.js +1 -0
  200. package/dist/standalone/chunk-IH2CJZF2.js +1 -0
  201. package/dist/standalone/chunk-JAHK7RRJ.js +1 -0
  202. package/dist/standalone/chunk-JG2C7SS2.js +1 -0
  203. package/dist/standalone/chunk-JGMQQ3S7.js +1 -0
  204. package/dist/standalone/chunk-JTGGWF7R.js +1 -0
  205. package/dist/standalone/chunk-KFNDET5D.js +1 -0
  206. package/dist/standalone/chunk-KRPXOSBL.js +1 -0
  207. package/dist/standalone/chunk-KYONGQQ4.js +1 -0
  208. package/dist/standalone/chunk-LIGOLZND.js +1 -0
  209. package/dist/standalone/chunk-LKCO3E2B.js +1 -0
  210. package/dist/standalone/chunk-LOV52GLG.js +1 -0
  211. package/dist/standalone/chunk-LPINY2IJ.js +19 -0
  212. package/dist/standalone/chunk-LRXCL6IA.js +1 -0
  213. package/dist/standalone/chunk-LUHXNZI4.js +2 -0
  214. package/dist/standalone/chunk-MD67S53Z.js +1 -0
  215. package/dist/standalone/chunk-MDAXV2XH.js +4 -0
  216. package/dist/standalone/chunk-MFNO5BFR.js +8 -0
  217. package/dist/standalone/chunk-MMJTKSHL.js +1 -0
  218. package/dist/standalone/chunk-NGVP66OH.js +1 -0
  219. package/dist/standalone/chunk-NMVFSJM7.js +1 -0
  220. package/dist/standalone/chunk-NVHHB5EV.js +2 -0
  221. package/dist/standalone/chunk-O3FDK56W.js +1 -0
  222. package/dist/standalone/chunk-OECMBE6Q.js +1 -0
  223. package/dist/standalone/chunk-OSJ7HV7B.js +1 -0
  224. package/dist/standalone/chunk-OUFWXYEF.js +1 -0
  225. package/dist/standalone/chunk-OXFKZ4BM.js +1 -0
  226. package/dist/standalone/chunk-P5GAJKDW.js +1 -0
  227. package/dist/standalone/chunk-P6L6ABWO.js +1 -0
  228. package/dist/standalone/chunk-PZZWUL5U.js +1 -0
  229. package/dist/standalone/chunk-QAQVT4FS.js +1 -0
  230. package/dist/standalone/chunk-R36QXQZX.js +1 -0
  231. package/dist/standalone/chunk-R3KLR5EP.js +1 -0
  232. package/dist/standalone/chunk-RXVXXRYD.js +1 -0
  233. package/dist/standalone/chunk-S7XAAH7U.js +1 -0
  234. package/dist/standalone/chunk-SDQH4HR6.js +3 -0
  235. package/dist/standalone/chunk-SFY646MC.js +1 -0
  236. package/dist/standalone/chunk-SJLEEYCR.js +1 -0
  237. package/dist/standalone/chunk-SLIDAWNX.js +1 -0
  238. package/dist/standalone/chunk-SOO2HXV6.js +1 -0
  239. package/dist/standalone/chunk-SXD6JQXF.js +1 -0
  240. package/dist/standalone/{chunk-BJGBHGK3.js → chunk-SYGCASPT.js} +1 -1
  241. package/dist/standalone/chunk-TDVDZ7XQ.js +1 -0
  242. package/dist/standalone/chunk-TRZTGE4R.js +1 -0
  243. package/dist/standalone/chunk-TWMS2TMF.js +1 -0
  244. package/dist/standalone/chunk-U76DVXTR.js +21 -0
  245. package/dist/standalone/chunk-UTX6IBA3.js +1 -0
  246. package/dist/standalone/chunk-UYEZR3BI.js +1 -0
  247. package/dist/standalone/chunk-UZIBQZ2F.js +1 -0
  248. package/dist/standalone/chunk-VB6YJKPA.js +1 -0
  249. package/dist/standalone/chunk-VEWQWS3J.js +1 -0
  250. package/dist/standalone/chunk-W2BCSK5S.js +1 -0
  251. package/dist/standalone/chunk-W2XSKODB.js +1 -0
  252. package/dist/standalone/chunk-W7MRISE3.js +1 -0
  253. package/dist/standalone/chunk-W7Z35E2E.js +1 -0
  254. package/dist/standalone/chunk-WIET27J3.js +1 -0
  255. package/dist/standalone/chunk-WQGT24W6.js +1 -0
  256. package/dist/standalone/chunk-WS36BO4R.js +1 -0
  257. package/dist/standalone/chunk-WZTY3ZYI.js +1 -0
  258. package/dist/standalone/chunk-X5KWBDTF.js +1 -0
  259. package/dist/standalone/chunk-X74GEPSG.js +1 -0
  260. package/dist/standalone/chunk-XBZUJDHD.js +1 -0
  261. package/dist/standalone/chunk-XMEVNOCA.js +1 -0
  262. package/dist/standalone/chunk-XWEDIIIT.js +1 -0
  263. package/dist/standalone/chunk-XYR5NST4.js +1 -0
  264. package/dist/standalone/chunk-YHTHRYP5.js +1 -0
  265. package/dist/standalone/chunk-YJ2WHOGO.js +1 -0
  266. package/dist/standalone/chunk-YJWR6ZWC.js +1 -0
  267. package/dist/standalone/chunk-Z5EV64KS.js +1 -0
  268. package/dist/standalone/chunk-ZBFWT34B.js +59 -0
  269. package/dist/standalone/chunk-ZBON5T5A.js +1 -0
  270. package/dist/standalone/chunk-ZGSL4DPP.js +1 -0
  271. package/dist/standalone/chunk-ZMQ6PKLN.js +1 -0
  272. package/dist/standalone/chunk-ZTOREMGH.js +1 -0
  273. package/dist/standalone/chunk-ZTOXQK4V.js +1 -0
  274. package/dist/standalone/chunk-ZWDORIZY.js +1 -0
  275. package/dist/standalone/chunk-ZZAJHNZ6.js +1 -0
  276. package/dist/standalone/studio.js +9 -214
  277. package/dist/styles.css +2 -2
  278. package/package.json +26 -22
  279. package/dist/index.js +0 -41
  280. package/dist/mount.js +0 -27
  281. package/dist/packem_chunks/ApiTab.js +0 -251
  282. package/dist/packem_chunks/AuditPanel.js +0 -200
  283. package/dist/packem_chunks/ExportImportPanel.js +0 -198
  284. package/dist/packem_chunks/FileBrowser.js +0 -2932
  285. package/dist/packem_chunks/FunctionRunner.js +0 -343
  286. package/dist/packem_chunks/FunctionStatsPanel.js +0 -377
  287. package/dist/packem_chunks/HealthPanel.js +0 -648
  288. package/dist/packem_chunks/InsightsPanel.js +0 -462
  289. package/dist/packem_chunks/LogsPanel.js +0 -827
  290. package/dist/packem_chunks/MailPanel.js +0 -353
  291. package/dist/packem_chunks/MetricsPanel.js +0 -1344
  292. package/dist/packem_chunks/MigrationsPanel.js +0 -239
  293. package/dist/packem_chunks/PitrPanel.js +0 -252
  294. package/dist/packem_chunks/SchemaViewer.js +0 -2513
  295. package/dist/packem_chunks/SecurityAdvisorPanel.js +0 -95
  296. package/dist/packem_chunks/SettingsPanel.js +0 -391
  297. package/dist/packem_chunks/SqlEditorPanel.js +0 -2323
  298. package/dist/packem_chunks/TableEditor.js +0 -313
  299. package/dist/packem_chunks/analytics-panel.js +0 -261
  300. package/dist/packem_chunks/auth-config-panel.js +0 -179
  301. package/dist/packem_chunks/auth-sessions-panel.js +0 -175
  302. package/dist/packem_chunks/containers-panel.js +0 -247
  303. package/dist/packem_chunks/dashboards-panel.js +0 -780
  304. package/dist/packem_chunks/fanout-panel.js +0 -482
  305. package/dist/packem_chunks/flags-panel.js +0 -176
  306. package/dist/packem_chunks/kv-browser.js +0 -1896
  307. package/dist/packem_chunks/log-drains-panel.js +0 -273
  308. package/dist/packem_chunks/organizations-panel.js +0 -670
  309. package/dist/packem_chunks/payments-panel.js +0 -186
  310. package/dist/packem_chunks/permissions-panel.js +0 -805
  311. package/dist/packem_chunks/queues-panel.js +0 -1052
  312. package/dist/packem_chunks/rls-panel.js +0 -315
  313. package/dist/packem_chunks/schedule-panel.js +0 -831
  314. package/dist/packem_chunks/sparkline.js +0 -79
  315. package/dist/packem_chunks/storage-rules-panel.js +0 -140
  316. package/dist/packem_chunks/subscriptions-panel.js +0 -238
  317. package/dist/packem_chunks/users-panel.js +0 -1265
  318. package/dist/packem_chunks/vector-browser.js +0 -281
  319. package/dist/packem_chunks/workflows-panel.js +0 -562
  320. package/dist/packem_shared/ADMIN_FUNCTIONS-BHHJi3Gb.js +0 -52
  321. package/dist/packem_shared/ApiDocsPanel-D4CJf2ad.js +0 -842
  322. package/dist/packem_shared/ApiReferencePanel-Co_wpRF2.js +0 -230
  323. package/dist/packem_shared/CommandPalette-BUPpbpMc.js +0 -373
  324. package/dist/packem_shared/ConfirmButton-C2eVi2Qv.js +0 -59
  325. package/dist/packem_shared/ConnectionBadge-B2DDM2Tn.js +0 -111
  326. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-Vxwaxx51.js +0 -50
  327. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-DjF0h-gA.js +0 -89
  328. package/dist/packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js +0 -27
  329. package/dist/packem_shared/DataBrowser-BeVNxSVm.js +0 -4493
  330. package/dist/packem_shared/DataFilters-FNquMaiu.js +0 -249
  331. package/dist/packem_shared/ErrorBoundary-BzAApI7J.js +0 -66
  332. package/dist/packem_shared/GlobalDataBrowser-ErfvIs1S.js +0 -289
  333. package/dist/packem_shared/HomePanel-D9MQk8I7.js +0 -14
  334. package/dist/packem_shared/OpenRpcReferencePanel-DLWzrIx9.js +0 -192
  335. package/dist/packem_shared/STUDIO_ROOT_CLASS-D12gX2dV.js +0 -3
  336. package/dist/packem_shared/ScheduledJobs-ClaNpZsg.js +0 -262
  337. package/dist/packem_shared/ShardInput-gx_DZXXn.js +0 -107
  338. package/dist/packem_shared/Studio-C48P1K5W.js +0 -16
  339. package/dist/packem_shared/StudioApp-Cqh-SYm2.js +0 -657
  340. package/dist/packem_shared/StudioI18nProvider-B-tDCZIi.js +0 -48
  341. package/dist/packem_shared/advisor-view-D3-U4kRR.js +0 -159
  342. package/dist/packem_shared/aggregateMetrics-D4nUHEKU.js +0 -108
  343. package/dist/packem_shared/alert-CdAET2K_.js +0 -68
  344. package/dist/packem_shared/app.d-CNLRTrWw.d.ts +0 -300
  345. package/dist/packem_shared/badge-B2PKA1-5.js +0 -49
  346. package/dist/packem_shared/bar-chart-DSwcWIRy.js +0 -3246
  347. package/dist/packem_shared/browser-storage-tLOxkIHd.js +0 -185
  348. package/dist/packem_shared/button-BhsN2uZH.js +0 -49
  349. package/dist/packem_shared/card-DURq3ElK.js +0 -175
  350. package/dist/packem_shared/cf-links-BZfRdxSE.js +0 -8
  351. package/dist/packem_shared/checkbox-UNkzAxl-.js +0 -63
  352. package/dist/packem_shared/data-grid-Jz8FqQ2C.js +0 -183
  353. package/dist/packem_shared/data-view-params-Cd6yRVbv.js +0 -96
  354. package/dist/packem_shared/dropdown-menu-WY4B_eJO.js +0 -280
  355. package/dist/packem_shared/empty-state-DY_oe0k6.js +0 -98
  356. package/dist/packem_shared/error-alert-BBT6D22d.js +0 -114
  357. package/dist/packem_shared/grid-features-CUr8Z1_O.js +0 -745
  358. package/dist/packem_shared/home-panel-CoGxi-oj.js +0 -1639
  359. package/dist/packem_shared/input-XH4r1Pt1.js +0 -53
  360. package/dist/packem_shared/internal-DTsYVn-g.js +0 -97
  361. package/dist/packem_shared/label-D8ykjn5J.js +0 -46
  362. package/dist/packem_shared/live-status-FZ0psC1z.js +0 -44
  363. package/dist/packem_shared/modal-shell-hyaJvIJ6.js +0 -100
  364. package/dist/packem_shared/reference-view-CSKyUyPl.js +0 -2141
  365. package/dist/packem_shared/scroll-area-DLhcy-ml.js +0 -93
  366. package/dist/packem_shared/select-UkNYCT3s.js +0 -273
  367. package/dist/packem_shared/shard-history-DyebH1R5.js +0 -38
  368. package/dist/packem_shared/skeleton-CGhL0p20.js +0 -45
  369. package/dist/packem_shared/sparkline-BnA1kC9X.js +0 -93
  370. package/dist/packem_shared/storage-tier-CL98eOvn.js +0 -85
  371. package/dist/packem_shared/studio-CPHA_-3I.js +0 -4015
  372. package/dist/packem_shared/table-DsCa9Qp9.js +0 -246
  373. package/dist/packem_shared/table-list-sidebar-B5psdSV1.js +0 -832
  374. package/dist/packem_shared/textarea-D3gaCU_-.js +0 -46
  375. package/dist/packem_shared/use-admin-query-BHPKmPuj.js +0 -106
  376. package/dist/packem_shared/use-auth-capabilities-C-VH0oJJ.js +0 -32
  377. package/dist/packem_shared/useDebounced-Dxncpg6z.js +0 -32
  378. package/dist/packem_shared/utils-B05Dmz_H.js +0 -8
  379. package/dist/packem_shared/virtual-rect-CVMUskSm.js +0 -10
  380. package/dist/standalone/chunk-25VHPD2I.js +0 -1
  381. package/dist/standalone/chunk-2GGMGPEP.js +0 -1
  382. package/dist/standalone/chunk-2K47A3P6.js +0 -1
  383. package/dist/standalone/chunk-2NGUNNGW.js +0 -1
  384. package/dist/standalone/chunk-3CJW6NWG.js +0 -4
  385. package/dist/standalone/chunk-3OA7PECS.js +0 -6
  386. package/dist/standalone/chunk-46K3NKPA.js +0 -1
  387. package/dist/standalone/chunk-474C2O7W.js +0 -1
  388. package/dist/standalone/chunk-4H2OJBXO.js +0 -1
  389. package/dist/standalone/chunk-4QHKBC77.js +0 -1
  390. package/dist/standalone/chunk-55YA7ZZI.js +0 -76
  391. package/dist/standalone/chunk-5OH3VPZF.js +0 -1
  392. package/dist/standalone/chunk-5OIBXYZM.js +0 -1
  393. package/dist/standalone/chunk-6GFEVKJP.js +0 -1
  394. package/dist/standalone/chunk-6UGM5IHN.js +0 -4
  395. package/dist/standalone/chunk-6WRZP62V.js +0 -1
  396. package/dist/standalone/chunk-764T6X6X.js +0 -1
  397. package/dist/standalone/chunk-7TJJXVSE.js +0 -1
  398. package/dist/standalone/chunk-7VF3IAAW.js +0 -2
  399. package/dist/standalone/chunk-7WNJ4Q7Z.js +0 -8
  400. package/dist/standalone/chunk-AHILM3ZP.js +0 -1
  401. package/dist/standalone/chunk-AJIUI7DD.js +0 -1
  402. package/dist/standalone/chunk-BACPICH6.js +0 -1
  403. package/dist/standalone/chunk-BI35RXKQ.js +0 -1
  404. package/dist/standalone/chunk-BOXSWNXZ.js +0 -1
  405. package/dist/standalone/chunk-BQUQS7QN.js +0 -1
  406. package/dist/standalone/chunk-CKSHCYGC.js +0 -2
  407. package/dist/standalone/chunk-DORBUITF.js +0 -1
  408. package/dist/standalone/chunk-DVC6YWVP.js +0 -1
  409. package/dist/standalone/chunk-DVKPRFIJ.js +0 -1
  410. package/dist/standalone/chunk-DWDILV2E.js +0 -1
  411. package/dist/standalone/chunk-DWTBY343.js +0 -1
  412. package/dist/standalone/chunk-EIQW6ACH.js +0 -1
  413. package/dist/standalone/chunk-EUIHTPKI.js +0 -1
  414. package/dist/standalone/chunk-FCSPAJW4.js +0 -1
  415. package/dist/standalone/chunk-FKO3HO6I.js +0 -4
  416. package/dist/standalone/chunk-GMSGZDDH.js +0 -13
  417. package/dist/standalone/chunk-GTM65MVX.js +0 -1
  418. package/dist/standalone/chunk-HV7G6DFP.js +0 -5
  419. package/dist/standalone/chunk-ILCTSAOB.js +0 -1
  420. package/dist/standalone/chunk-IODYGARQ.js +0 -1
  421. package/dist/standalone/chunk-J6J54MBP.js +0 -1
  422. package/dist/standalone/chunk-JE2YOAB7.js +0 -4
  423. package/dist/standalone/chunk-JFSZIUZT.js +0 -4
  424. package/dist/standalone/chunk-JSEXCW5Q.js +0 -1
  425. package/dist/standalone/chunk-K3GNLVYK.js +0 -1
  426. package/dist/standalone/chunk-KEGAWN6Y.js +0 -1
  427. package/dist/standalone/chunk-KZ6INM5M.js +0 -1
  428. package/dist/standalone/chunk-LD2R263D.js +0 -1
  429. package/dist/standalone/chunk-LI43EKM6.js +0 -1
  430. package/dist/standalone/chunk-M55U7NHO.js +0 -1
  431. package/dist/standalone/chunk-MPTM7ZU3.js +0 -3
  432. package/dist/standalone/chunk-MPYFGAOW.js +0 -1
  433. package/dist/standalone/chunk-NJFMWO6P.js +0 -1
  434. package/dist/standalone/chunk-O3NAGRTR.js +0 -1
  435. package/dist/standalone/chunk-O77VNUFD.js +0 -1
  436. package/dist/standalone/chunk-OCHNCAXJ.js +0 -1
  437. package/dist/standalone/chunk-PACH5AHG.js +0 -1
  438. package/dist/standalone/chunk-PN5NCZDX.js +0 -1
  439. package/dist/standalone/chunk-PVZI3CXP.js +0 -19
  440. package/dist/standalone/chunk-PZ7HD5T2.js +0 -1
  441. package/dist/standalone/chunk-QAFAJBAW.js +0 -1
  442. package/dist/standalone/chunk-QBAT52GB.js +0 -1
  443. package/dist/standalone/chunk-QLM6FYZW.js +0 -2
  444. package/dist/standalone/chunk-RRAFQ5G2.js +0 -1
  445. package/dist/standalone/chunk-RRCPZMC2.js +0 -22
  446. package/dist/standalone/chunk-RSEEHNFI.js +0 -1
  447. package/dist/standalone/chunk-SEU5V7I6.js +0 -1
  448. package/dist/standalone/chunk-SLKF2L74.js +0 -1
  449. package/dist/standalone/chunk-SVR644RF.js +0 -1
  450. package/dist/standalone/chunk-TAD43CG5.js +0 -1
  451. package/dist/standalone/chunk-TBMYIZIO.js +0 -1
  452. package/dist/standalone/chunk-TDL7NEWA.js +0 -1
  453. package/dist/standalone/chunk-TO4JQX7W.js +0 -1
  454. package/dist/standalone/chunk-TQ36RWOP.js +0 -1
  455. package/dist/standalone/chunk-U4OAQPBT.js +0 -1
  456. package/dist/standalone/chunk-UII66UVF.js +0 -1
  457. package/dist/standalone/chunk-UK64ZSUW.js +0 -1
  458. package/dist/standalone/chunk-VLXV72QE.js +0 -1
  459. package/dist/standalone/chunk-VSHUSN6T.js +0 -1
  460. package/dist/standalone/chunk-VTGBPW24.js +0 -1
  461. package/dist/standalone/chunk-WXPWVBIY.js +0 -1
  462. package/dist/standalone/chunk-X6F22DBL.js +0 -1
  463. package/dist/standalone/chunk-X7MMBSNW.js +0 -1
  464. package/dist/standalone/chunk-XGMIDFUK.js +0 -1
  465. package/dist/standalone/chunk-XNJNSCLM.js +0 -1
  466. package/dist/standalone/chunk-XUGSA2NG.js +0 -1
  467. package/dist/standalone/chunk-XZE2RNDA.js +0 -1
  468. package/dist/standalone/chunk-Y2ZPNDL7.js +0 -4
  469. package/dist/standalone/chunk-YAECF5LW.js +0 -1
  470. package/dist/standalone/chunk-YEVCU7TB.js +0 -13
  471. package/dist/standalone/chunk-YV43BOP7.js +0 -1
  472. package/dist/standalone/chunk-ZHVTQ37P.js +0 -1
  473. package/dist/standalone/chunk-ZPP2KOR4.js +0 -1
  474. package/dist/standalone/chunk-ZPUO7FNI.js +0 -1
  475. package/dist/standalone/chunk-ZU4DZ6NK.js +0 -1
@@ -1,1344 +0,0 @@
1
- import { c } from 'react/compiler-runtime';
2
- import { useLunora } from '@lunora/react';
3
- import { useState, useRef, useEffect, useMemo } from 'react';
4
- import { L as LiveError } from '../packem_shared/live-status-FZ0psC1z.js';
5
- import { ShardInput } from '../packem_shared/ShardInput-gx_DZXXn.js';
6
- import { B as Button } from '../packem_shared/button-BhsN2uZH.js';
7
- import { a as CardContent, C as Card, b as CardHeader, c as CardTitle, d as CardDescription } from '../packem_shared/card-DURq3ElK.js';
8
- import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from '../packem_shared/table-DsCa9Qp9.js';
9
- import { u as useAdminQuery } from '../packem_shared/use-admin-query-BHPKmPuj.js';
10
- import useDebounced from '../packem_shared/useDebounced-Dxncpg6z.js';
11
- import { useT } from '../packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js';
12
- import { ADMIN_FUNCTIONS } from '../packem_shared/ADMIN_FUNCTIONS-BHHJi3Gb.js';
13
- import { c as CLOUDFLARE_DURABLE_OBJECTS_URL } from '../packem_shared/cf-links-BZfRdxSE.js';
14
- import { j as formatBytes, f as fireAndForget, c as callOptions, e as errorMessage, a as adminRef } from '../packem_shared/internal-DTsYVn-g.js';
15
- import { r as recordShard, l as loadRecentShards } from '../packem_shared/shard-history-DyebH1R5.js';
16
- import { aggregateMetrics, computeLatencyPercentiles, enrichQueryStats, shardsToAggregate } from '../packem_shared/aggregateMetrics-D4nUHEKU.js';
17
- import { B as Badge } from '../packem_shared/badge-B2PKA1-5.js';
18
- import { S as SelectValue, a as SelectTrigger, b as SelectItem, c as SelectContent, d as Select } from '../packem_shared/select-UkNYCT3s.js';
19
- import { jsxDEV, Fragment } from 'react/jsx-dev-runtime';
20
- import { S as Sparkline } from '../packem_shared/sparkline-BnA1kC9X.js';
21
-
22
- const performanceLevel = (avgMs) => {
23
- if (avgMs >= 100) {
24
- return "critical";
25
- }
26
- if (avgMs >= 50) {
27
- return "warning";
28
- }
29
- return "good";
30
- };
31
- const formatLatency = (ms) => {
32
- if (ms < 1) {
33
- return `${(ms * 1e3).toFixed(0)}μs`;
34
- }
35
- if (ms < 1e3) {
36
- return `${ms.toFixed(1)}ms`;
37
- }
38
- return `${(ms / 1e3).toFixed(2)}s`;
39
- };
40
- const formatCount = (n) => {
41
- if (n >= 1e9) {
42
- return `${(n / 1e9).toFixed(1)}B`;
43
- }
44
- if (n >= 1e6) {
45
- return `${(n / 1e6).toFixed(1)}M`;
46
- }
47
- if (n >= 1e3) {
48
- return `${(n / 1e3).toFixed(1)}K`;
49
- }
50
- return n.toLocaleString();
51
- };
52
- const PerformanceBadge = (t0) => {
53
- const $ = c(3);
54
- const {
55
- level
56
- } = t0;
57
- if (level === "critical") {
58
- let t12;
59
- if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
60
- t12 = /* @__PURE__ */ jsxDEV(Badge, {
61
- variant: "destructive",
62
- children: "Slow"
63
- }, void 0, false);
64
- $[0] = t12;
65
- } else {
66
- t12 = $[0];
67
- }
68
- return t12;
69
- }
70
- if (level === "warning") {
71
- let t12;
72
- if ($[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
73
- t12 = /* @__PURE__ */ jsxDEV("span", {
74
- 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",
75
- children: "Moderate"
76
- }, void 0, false);
77
- $[1] = t12;
78
- } else {
79
- t12 = $[1];
80
- }
81
- return t12;
82
- }
83
- let t1;
84
- if ($[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
85
- t1 = /* @__PURE__ */ jsxDEV("span", {
86
- 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",
87
- children: "Fast"
88
- }, void 0, false);
89
- $[2] = t1;
90
- } else {
91
- t1 = $[2];
92
- }
93
- return t1;
94
- };
95
- const QueryInsights = (t0) => {
96
- const $ = c(152);
97
- const {
98
- queryStats
99
- } = t0;
100
- const t = useT();
101
- const [sortField, setSortField] = useState("totalTime");
102
- let t1;
103
- if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
104
- t1 = /* @__PURE__ */ new Set();
105
- $[0] = t1;
106
- } else {
107
- t1 = $[0];
108
- }
109
- const [expanded, setExpanded] = useState(t1);
110
- let t2;
111
- if ($[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
112
- t2 = (value) => {
113
- if (value !== null) {
114
- setSortField(value);
115
- }
116
- };
117
- $[1] = t2;
118
- } else {
119
- t2 = $[1];
120
- }
121
- const handleSortChange = t2;
122
- let copy;
123
- if ($[2] !== queryStats || $[3] !== sortField) {
124
- copy = [...queryStats];
125
- let t310;
126
- if ($[5] !== sortField) {
127
- t310 = (a, b) => {
128
- switch (sortField) {
129
- case "avgTime": {
130
- return b.avgDurationMs - a.avgDurationMs;
131
- }
132
- case "execCount": {
133
- return b.execCount - a.execCount;
134
- }
135
- case "rowsRead": {
136
- return b.rowsRead - a.rowsRead;
137
- }
138
- default: {
139
- return b.totalDurationMs - a.totalDurationMs;
140
- }
141
- }
142
- };
143
- $[5] = sortField;
144
- $[6] = t310;
145
- } else {
146
- t310 = $[6];
147
- }
148
- copy.sort(t310);
149
- $[2] = queryStats;
150
- $[3] = sortField;
151
- $[4] = copy;
152
- } else {
153
- copy = $[4];
154
- }
155
- const sorted = copy;
156
- let t3;
157
- if ($[7] !== queryStats) {
158
- t3 = queryStats.filter(_temp);
159
- $[7] = queryStats;
160
- $[8] = t3;
161
- } else {
162
- t3 = $[8];
163
- }
164
- const critical = t3.length;
165
- let t4;
166
- if ($[9] !== queryStats) {
167
- t4 = queryStats.filter(_temp2);
168
- $[9] = queryStats;
169
- $[10] = t4;
170
- } else {
171
- t4 = $[10];
172
- }
173
- const moderate = t4.length;
174
- let t5;
175
- if ($[11] !== queryStats) {
176
- t5 = queryStats.filter(_temp3);
177
- $[11] = queryStats;
178
- $[12] = t5;
179
- } else {
180
- t5 = $[12];
181
- }
182
- const fast = t5.length;
183
- let t6;
184
- if ($[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
185
- t6 = (key) => {
186
- setExpanded((previous) => {
187
- const next = new Set(previous);
188
- if (next.has(key)) {
189
- next.delete(key);
190
- } else {
191
- next.add(key);
192
- }
193
- return next;
194
- });
195
- };
196
- $[13] = t6;
197
- } else {
198
- t6 = $[13];
199
- }
200
- const toggleExpand = t6;
201
- if (queryStats.length === 0) {
202
- let t72;
203
- if ($[14] !== t) {
204
- t72 = t("No query insights yet");
205
- $[14] = t;
206
- $[15] = t72;
207
- } else {
208
- t72 = $[15];
209
- }
210
- let t82;
211
- if ($[16] !== t72) {
212
- t82 = /* @__PURE__ */ jsxDEV("p", {
213
- className: "text-lg font-medium",
214
- "data-testid": "qi-empty",
215
- children: t72
216
- }, void 0, false);
217
- $[16] = t72;
218
- $[17] = t82;
219
- } else {
220
- t82 = $[17];
221
- }
222
- let t92;
223
- if ($[18] !== t) {
224
- t92 = t("Query insights appear once statements are executed against this shard.");
225
- $[18] = t;
226
- $[19] = t92;
227
- } else {
228
- t92 = $[19];
229
- }
230
- let t102;
231
- if ($[20] !== t92) {
232
- t102 = /* @__PURE__ */ jsxDEV("p", {
233
- className: "mt-1 text-sm",
234
- children: t92
235
- }, void 0, false);
236
- $[20] = t92;
237
- $[21] = t102;
238
- } else {
239
- t102 = $[21];
240
- }
241
- let t112;
242
- if ($[22] !== t102 || $[23] !== t82) {
243
- t112 = /* @__PURE__ */ jsxDEV(Card, {
244
- children: /* @__PURE__ */ jsxDEV(CardContent, {
245
- className: "py-12",
246
- children: /* @__PURE__ */ jsxDEV("div", {
247
- className: "text-center text-muted-foreground",
248
- children: [t82, t102]
249
- }, void 0, true)
250
- }, void 0, false)
251
- }, void 0, false);
252
- $[22] = t102;
253
- $[23] = t82;
254
- $[24] = t112;
255
- } else {
256
- t112 = $[24];
257
- }
258
- return t112;
259
- }
260
- let t7;
261
- if ($[25] !== t) {
262
- t7 = t("Critical queries");
263
- $[25] = t;
264
- $[26] = t7;
265
- } else {
266
- t7 = $[26];
267
- }
268
- let t8;
269
- if ($[27] !== t7) {
270
- t8 = /* @__PURE__ */ jsxDEV(CardHeader, {
271
- className: "pb-2",
272
- children: /* @__PURE__ */ jsxDEV(CardTitle, {
273
- className: "text-sm font-medium",
274
- children: t7
275
- }, void 0, false)
276
- }, void 0, false);
277
- $[27] = t7;
278
- $[28] = t8;
279
- } else {
280
- t8 = $[28];
281
- }
282
- let t9;
283
- if ($[29] !== critical) {
284
- t9 = /* @__PURE__ */ jsxDEV("div", {
285
- className: "text-2xl font-bold text-destructive",
286
- "data-testid": "qi-critical",
287
- children: critical
288
- }, void 0, false);
289
- $[29] = critical;
290
- $[30] = t9;
291
- } else {
292
- t9 = $[30];
293
- }
294
- let t10;
295
- if ($[31] !== t) {
296
- t10 = t(">100ms avg execution");
297
- $[31] = t;
298
- $[32] = t10;
299
- } else {
300
- t10 = $[32];
301
- }
302
- let t11;
303
- if ($[33] !== t10) {
304
- t11 = /* @__PURE__ */ jsxDEV("p", {
305
- className: "text-xs text-muted-foreground",
306
- children: t10
307
- }, void 0, false);
308
- $[33] = t10;
309
- $[34] = t11;
310
- } else {
311
- t11 = $[34];
312
- }
313
- let t12;
314
- if ($[35] !== t11 || $[36] !== t9) {
315
- t12 = /* @__PURE__ */ jsxDEV(CardContent, {
316
- children: [t9, t11]
317
- }, void 0, true);
318
- $[35] = t11;
319
- $[36] = t9;
320
- $[37] = t12;
321
- } else {
322
- t12 = $[37];
323
- }
324
- let t13;
325
- if ($[38] !== t12 || $[39] !== t8) {
326
- t13 = /* @__PURE__ */ jsxDEV(Card, {
327
- children: [t8, t12]
328
- }, void 0, true);
329
- $[38] = t12;
330
- $[39] = t8;
331
- $[40] = t13;
332
- } else {
333
- t13 = $[40];
334
- }
335
- let t14;
336
- if ($[41] !== t) {
337
- t14 = t("Moderate queries");
338
- $[41] = t;
339
- $[42] = t14;
340
- } else {
341
- t14 = $[42];
342
- }
343
- let t15;
344
- if ($[43] !== t14) {
345
- t15 = /* @__PURE__ */ jsxDEV(CardHeader, {
346
- className: "pb-2",
347
- children: /* @__PURE__ */ jsxDEV(CardTitle, {
348
- className: "text-sm font-medium",
349
- children: t14
350
- }, void 0, false)
351
- }, void 0, false);
352
- $[43] = t14;
353
- $[44] = t15;
354
- } else {
355
- t15 = $[44];
356
- }
357
- let t16;
358
- if ($[45] !== moderate) {
359
- t16 = /* @__PURE__ */ jsxDEV("div", {
360
- className: "text-2xl font-bold text-warning",
361
- "data-testid": "qi-moderate",
362
- children: moderate
363
- }, void 0, false);
364
- $[45] = moderate;
365
- $[46] = t16;
366
- } else {
367
- t16 = $[46];
368
- }
369
- let t17;
370
- if ($[47] !== t) {
371
- t17 = t("50–100ms avg execution");
372
- $[47] = t;
373
- $[48] = t17;
374
- } else {
375
- t17 = $[48];
376
- }
377
- let t18;
378
- if ($[49] !== t17) {
379
- t18 = /* @__PURE__ */ jsxDEV("p", {
380
- className: "text-xs text-muted-foreground",
381
- children: t17
382
- }, void 0, false);
383
- $[49] = t17;
384
- $[50] = t18;
385
- } else {
386
- t18 = $[50];
387
- }
388
- let t19;
389
- if ($[51] !== t16 || $[52] !== t18) {
390
- t19 = /* @__PURE__ */ jsxDEV(CardContent, {
391
- children: [t16, t18]
392
- }, void 0, true);
393
- $[51] = t16;
394
- $[52] = t18;
395
- $[53] = t19;
396
- } else {
397
- t19 = $[53];
398
- }
399
- let t20;
400
- if ($[54] !== t15 || $[55] !== t19) {
401
- t20 = /* @__PURE__ */ jsxDEV(Card, {
402
- children: [t15, t19]
403
- }, void 0, true);
404
- $[54] = t15;
405
- $[55] = t19;
406
- $[56] = t20;
407
- } else {
408
- t20 = $[56];
409
- }
410
- let t21;
411
- if ($[57] !== t) {
412
- t21 = t("Fast queries");
413
- $[57] = t;
414
- $[58] = t21;
415
- } else {
416
- t21 = $[58];
417
- }
418
- let t22;
419
- if ($[59] !== t21) {
420
- t22 = /* @__PURE__ */ jsxDEV(CardHeader, {
421
- className: "pb-2",
422
- children: /* @__PURE__ */ jsxDEV(CardTitle, {
423
- className: "text-sm font-medium",
424
- children: t21
425
- }, void 0, false)
426
- }, void 0, false);
427
- $[59] = t21;
428
- $[60] = t22;
429
- } else {
430
- t22 = $[60];
431
- }
432
- let t23;
433
- if ($[61] !== fast) {
434
- t23 = /* @__PURE__ */ jsxDEV("div", {
435
- className: "text-2xl font-bold text-success",
436
- "data-testid": "qi-fast",
437
- children: fast
438
- }, void 0, false);
439
- $[61] = fast;
440
- $[62] = t23;
441
- } else {
442
- t23 = $[62];
443
- }
444
- let t24;
445
- if ($[63] !== t) {
446
- t24 = t("<50ms avg execution");
447
- $[63] = t;
448
- $[64] = t24;
449
- } else {
450
- t24 = $[64];
451
- }
452
- let t25;
453
- if ($[65] !== t24) {
454
- t25 = /* @__PURE__ */ jsxDEV("p", {
455
- className: "text-xs text-muted-foreground",
456
- children: t24
457
- }, void 0, false);
458
- $[65] = t24;
459
- $[66] = t25;
460
- } else {
461
- t25 = $[66];
462
- }
463
- let t26;
464
- if ($[67] !== t23 || $[68] !== t25) {
465
- t26 = /* @__PURE__ */ jsxDEV(CardContent, {
466
- children: [t23, t25]
467
- }, void 0, true);
468
- $[67] = t23;
469
- $[68] = t25;
470
- $[69] = t26;
471
- } else {
472
- t26 = $[69];
473
- }
474
- let t27;
475
- if ($[70] !== t22 || $[71] !== t26) {
476
- t27 = /* @__PURE__ */ jsxDEV(Card, {
477
- children: [t22, t26]
478
- }, void 0, true);
479
- $[70] = t22;
480
- $[71] = t26;
481
- $[72] = t27;
482
- } else {
483
- t27 = $[72];
484
- }
485
- let t28;
486
- if ($[73] !== t13 || $[74] !== t20 || $[75] !== t27) {
487
- t28 = /* @__PURE__ */ jsxDEV("div", {
488
- className: "grid gap-4 md:grid-cols-3",
489
- children: [t13, t20, t27]
490
- }, void 0, true);
491
- $[73] = t13;
492
- $[74] = t20;
493
- $[75] = t27;
494
- $[76] = t28;
495
- } else {
496
- t28 = $[76];
497
- }
498
- let t29;
499
- if ($[77] !== t) {
500
- t29 = t("Query leaderboard");
501
- $[77] = t;
502
- $[78] = t29;
503
- } else {
504
- t29 = $[78];
505
- }
506
- let t30;
507
- if ($[79] !== t29) {
508
- t30 = /* @__PURE__ */ jsxDEV("h3", {
509
- className: "text-lg font-semibold",
510
- children: t29
511
- }, void 0, false);
512
- $[79] = t29;
513
- $[80] = t30;
514
- } else {
515
- t30 = $[80];
516
- }
517
- let t31;
518
- if ($[81] !== sortField || $[82] !== t) {
519
- t31 = t("Slow queries sorted by {sortField}", {
520
- sortField: t(sortField)
521
- });
522
- $[81] = sortField;
523
- $[82] = t;
524
- $[83] = t31;
525
- } else {
526
- t31 = $[83];
527
- }
528
- let t32;
529
- if ($[84] !== t31) {
530
- t32 = /* @__PURE__ */ jsxDEV("p", {
531
- className: "text-sm text-muted-foreground",
532
- children: t31
533
- }, void 0, false);
534
- $[84] = t31;
535
- $[85] = t32;
536
- } else {
537
- t32 = $[85];
538
- }
539
- let t33;
540
- if ($[86] !== t30 || $[87] !== t32) {
541
- t33 = /* @__PURE__ */ jsxDEV("div", {
542
- children: [t30, t32]
543
- }, void 0, true);
544
- $[86] = t30;
545
- $[87] = t32;
546
- $[88] = t33;
547
- } else {
548
- t33 = $[88];
549
- }
550
- let t34;
551
- if ($[89] !== t) {
552
- t34 = t("Sort by");
553
- $[89] = t;
554
- $[90] = t34;
555
- } else {
556
- t34 = $[90];
557
- }
558
- let t35;
559
- if ($[91] !== t34) {
560
- t35 = /* @__PURE__ */ jsxDEV("span", {
561
- className: "text-sm text-muted-foreground",
562
- children: t34
563
- }, void 0, false);
564
- $[91] = t34;
565
- $[92] = t35;
566
- } else {
567
- t35 = $[92];
568
- }
569
- let t36;
570
- if ($[93] !== t) {
571
- t36 = t("Sort queries by");
572
- $[93] = t;
573
- $[94] = t36;
574
- } else {
575
- t36 = $[94];
576
- }
577
- let t37;
578
- if ($[95] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
579
- t37 = /* @__PURE__ */ jsxDEV(SelectValue, {}, void 0, false);
580
- $[95] = t37;
581
- } else {
582
- t37 = $[95];
583
- }
584
- let t38;
585
- if ($[96] !== t36) {
586
- t38 = /* @__PURE__ */ jsxDEV(SelectTrigger, {
587
- "aria-label": t36,
588
- className: "w-[140px]",
589
- "data-testid": "qi-sort",
590
- children: t37
591
- }, void 0, false);
592
- $[96] = t36;
593
- $[97] = t38;
594
- } else {
595
- t38 = $[97];
596
- }
597
- let t39;
598
- if ($[98] !== t) {
599
- t39 = t("Total time");
600
- $[98] = t;
601
- $[99] = t39;
602
- } else {
603
- t39 = $[99];
604
- }
605
- let t40;
606
- if ($[100] !== t39) {
607
- t40 = /* @__PURE__ */ jsxDEV(SelectItem, {
608
- value: "totalTime",
609
- children: t39
610
- }, void 0, false);
611
- $[100] = t39;
612
- $[101] = t40;
613
- } else {
614
- t40 = $[101];
615
- }
616
- let t41;
617
- if ($[102] !== t) {
618
- t41 = t("Avg time");
619
- $[102] = t;
620
- $[103] = t41;
621
- } else {
622
- t41 = $[103];
623
- }
624
- let t42;
625
- if ($[104] !== t41) {
626
- t42 = /* @__PURE__ */ jsxDEV(SelectItem, {
627
- value: "avgTime",
628
- children: t41
629
- }, void 0, false);
630
- $[104] = t41;
631
- $[105] = t42;
632
- } else {
633
- t42 = $[105];
634
- }
635
- let t43;
636
- if ($[106] !== t) {
637
- t43 = t("Execution count");
638
- $[106] = t;
639
- $[107] = t43;
640
- } else {
641
- t43 = $[107];
642
- }
643
- let t44;
644
- if ($[108] !== t43) {
645
- t44 = /* @__PURE__ */ jsxDEV(SelectItem, {
646
- value: "execCount",
647
- children: t43
648
- }, void 0, false);
649
- $[108] = t43;
650
- $[109] = t44;
651
- } else {
652
- t44 = $[109];
653
- }
654
- let t45;
655
- if ($[110] !== t) {
656
- t45 = t("Rows read");
657
- $[110] = t;
658
- $[111] = t45;
659
- } else {
660
- t45 = $[111];
661
- }
662
- let t46;
663
- if ($[112] !== t45) {
664
- t46 = /* @__PURE__ */ jsxDEV(SelectItem, {
665
- value: "rowsRead",
666
- children: t45
667
- }, void 0, false);
668
- $[112] = t45;
669
- $[113] = t46;
670
- } else {
671
- t46 = $[113];
672
- }
673
- let t47;
674
- if ($[114] !== t40 || $[115] !== t42 || $[116] !== t44 || $[117] !== t46) {
675
- t47 = /* @__PURE__ */ jsxDEV(SelectContent, {
676
- children: [t40, t42, t44, t46]
677
- }, void 0, true);
678
- $[114] = t40;
679
- $[115] = t42;
680
- $[116] = t44;
681
- $[117] = t46;
682
- $[118] = t47;
683
- } else {
684
- t47 = $[118];
685
- }
686
- let t48;
687
- if ($[119] !== sortField || $[120] !== t38 || $[121] !== t47) {
688
- t48 = /* @__PURE__ */ jsxDEV(Select, {
689
- onValueChange: handleSortChange,
690
- value: sortField,
691
- children: [t38, t47]
692
- }, void 0, true);
693
- $[119] = sortField;
694
- $[120] = t38;
695
- $[121] = t47;
696
- $[122] = t48;
697
- } else {
698
- t48 = $[122];
699
- }
700
- let t49;
701
- if ($[123] !== t35 || $[124] !== t48) {
702
- t49 = /* @__PURE__ */ jsxDEV("div", {
703
- className: "flex items-center gap-2",
704
- children: [t35, t48]
705
- }, void 0, true);
706
- $[123] = t35;
707
- $[124] = t48;
708
- $[125] = t49;
709
- } else {
710
- t49 = $[125];
711
- }
712
- let t50;
713
- if ($[126] !== t33 || $[127] !== t49) {
714
- t50 = /* @__PURE__ */ jsxDEV("div", {
715
- className: "flex items-center justify-between",
716
- children: [t33, t49]
717
- }, void 0, true);
718
- $[126] = t33;
719
- $[127] = t49;
720
- $[128] = t50;
721
- } else {
722
- t50 = $[128];
723
- }
724
- let t51;
725
- if ($[129] !== t) {
726
- t51 = t("Statements");
727
- $[129] = t;
728
- $[130] = t51;
729
- } else {
730
- t51 = $[130];
731
- }
732
- let t52;
733
- if ($[131] !== t51) {
734
- t52 = /* @__PURE__ */ jsxDEV(CardTitle, {
735
- children: t51
736
- }, void 0, false);
737
- $[131] = t51;
738
- $[132] = t52;
739
- } else {
740
- t52 = $[132];
741
- }
742
- let t53;
743
- if ($[133] !== sorted.length || $[134] !== t) {
744
- t53 = t("{count} tracked statements", {
745
- count: sorted.length
746
- });
747
- $[133] = sorted.length;
748
- $[134] = t;
749
- $[135] = t53;
750
- } else {
751
- t53 = $[135];
752
- }
753
- let t54;
754
- if ($[136] !== t53) {
755
- t54 = /* @__PURE__ */ jsxDEV(CardDescription, {
756
- children: t53
757
- }, void 0, false);
758
- $[136] = t53;
759
- $[137] = t54;
760
- } else {
761
- t54 = $[137];
762
- }
763
- let t55;
764
- if ($[138] !== t52 || $[139] !== t54) {
765
- t55 = /* @__PURE__ */ jsxDEV(CardHeader, {
766
- children: [t52, t54]
767
- }, void 0, true);
768
- $[138] = t52;
769
- $[139] = t54;
770
- $[140] = t55;
771
- } else {
772
- t55 = $[140];
773
- }
774
- let t56;
775
- if ($[141] !== expanded || $[142] !== sorted || $[143] !== t) {
776
- t56 = /* @__PURE__ */ jsxDEV(CardContent, {
777
- children: /* @__PURE__ */ jsxDEV("div", {
778
- className: "space-y-2",
779
- children: sorted.map((stat) => {
780
- const key_0 = stat.normalizedSql;
781
- const isExpanded = expanded.has(key_0);
782
- const level = performanceLevel(stat.avgDurationMs);
783
- return /* @__PURE__ */ jsxDEV("div", {
784
- className: "overflow-hidden rounded-lg border",
785
- "data-testid": "qi-row",
786
- children: [/* @__PURE__ */ jsxDEV("button", {
787
- "aria-expanded": isExpanded,
788
- className: "flex w-full items-center justify-between p-3 text-left transition-colors hover:bg-muted/50",
789
- onClick: () => {
790
- toggleExpand(key_0);
791
- },
792
- type: "button",
793
- children: [/* @__PURE__ */ jsxDEV("div", {
794
- className: "flex min-w-0 flex-1 items-center gap-3",
795
- children: [/* @__PURE__ */ jsxDEV(PerformanceBadge, {
796
- level
797
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
798
- className: "max-w-[300px] truncate font-mono text-sm lg:max-w-[500px]",
799
- children: stat.normalizedSql
800
- }, void 0, false)]
801
- }, void 0, true), /* @__PURE__ */ jsxDEV("div", {
802
- className: "flex shrink-0 items-center gap-4",
803
- children: [/* @__PURE__ */ jsxDEV("div", {
804
- className: "text-right",
805
- children: [/* @__PURE__ */ jsxDEV("div", {
806
- className: "text-sm font-medium",
807
- children: formatLatency(stat.totalDurationMs)
808
- }, void 0, false), /* @__PURE__ */ jsxDEV("div", {
809
- className: "text-xs text-muted-foreground",
810
- children: t("total")
811
- }, void 0, false)]
812
- }, void 0, true), /* @__PURE__ */ jsxDEV("div", {
813
- className: "text-right",
814
- children: [/* @__PURE__ */ jsxDEV("div", {
815
- className: "text-sm font-medium",
816
- children: formatLatency(stat.avgDurationMs)
817
- }, void 0, false), /* @__PURE__ */ jsxDEV("div", {
818
- className: "text-xs text-muted-foreground",
819
- children: t("avg")
820
- }, void 0, false)]
821
- }, void 0, true), /* @__PURE__ */ jsxDEV("div", {
822
- className: "text-right",
823
- children: [/* @__PURE__ */ jsxDEV("div", {
824
- className: "text-sm font-medium",
825
- children: formatCount(stat.execCount)
826
- }, void 0, false), /* @__PURE__ */ jsxDEV("div", {
827
- className: "text-xs text-muted-foreground",
828
- children: t("calls")
829
- }, void 0, false)]
830
- }, void 0, true)]
831
- }, void 0, true)]
832
- }, void 0, true), isExpanded && /* @__PURE__ */ jsxDEV("div", {
833
- className: "space-y-3 border-t bg-muted/30 p-4",
834
- children: [/* @__PURE__ */ jsxDEV("div", {
835
- children: [/* @__PURE__ */ jsxDEV("p", {
836
- className: "mb-2 text-sm font-medium",
837
- children: t("Full statement")
838
- }, void 0, false), /* @__PURE__ */ jsxDEV("pre", {
839
- className: "overflow-x-auto rounded-md bg-muted p-3 font-mono text-sm whitespace-pre-wrap break-all",
840
- children: stat.normalizedSql
841
- }, void 0, false)]
842
- }, void 0, true), /* @__PURE__ */ jsxDEV("div", {
843
- className: "grid grid-cols-2 gap-4 text-sm md:grid-cols-4",
844
- children: [/* @__PURE__ */ jsxDEV("div", {
845
- children: [/* @__PURE__ */ jsxDEV("span", {
846
- className: "text-muted-foreground",
847
- children: t("Exec count")
848
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
849
- className: "block font-medium tabular-nums",
850
- children: formatCount(stat.execCount)
851
- }, void 0, false)]
852
- }, void 0, true), /* @__PURE__ */ jsxDEV("div", {
853
- children: [/* @__PURE__ */ jsxDEV("span", {
854
- className: "text-muted-foreground",
855
- children: t("Total time")
856
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
857
- className: "block font-medium tabular-nums",
858
- children: formatLatency(stat.totalDurationMs)
859
- }, void 0, false)]
860
- }, void 0, true), /* @__PURE__ */ jsxDEV("div", {
861
- children: [/* @__PURE__ */ jsxDEV("span", {
862
- className: "text-muted-foreground",
863
- children: t("Rows read")
864
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
865
- className: "block font-medium tabular-nums",
866
- children: formatCount(stat.rowsRead)
867
- }, void 0, false)]
868
- }, void 0, true), /* @__PURE__ */ jsxDEV("div", {
869
- children: [/* @__PURE__ */ jsxDEV("span", {
870
- className: "text-muted-foreground",
871
- children: t("Rows written")
872
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
873
- className: "block font-medium tabular-nums",
874
- children: formatCount(stat.rowsWritten)
875
- }, void 0, false)]
876
- }, void 0, true)]
877
- }, void 0, true)]
878
- }, void 0, true)]
879
- }, key_0, true);
880
- })
881
- }, void 0, false)
882
- }, void 0, false);
883
- $[141] = expanded;
884
- $[142] = sorted;
885
- $[143] = t;
886
- $[144] = t56;
887
- } else {
888
- t56 = $[144];
889
- }
890
- let t57;
891
- if ($[145] !== t55 || $[146] !== t56) {
892
- t57 = /* @__PURE__ */ jsxDEV(Card, {
893
- children: [t55, t56]
894
- }, void 0, true);
895
- $[145] = t55;
896
- $[146] = t56;
897
- $[147] = t57;
898
- } else {
899
- t57 = $[147];
900
- }
901
- let t58;
902
- if ($[148] !== t28 || $[149] !== t50 || $[150] !== t57) {
903
- t58 = /* @__PURE__ */ jsxDEV("div", {
904
- className: "space-y-4",
905
- "data-testid": "qi-root",
906
- children: [t28, t50, t57]
907
- }, void 0, true);
908
- $[148] = t28;
909
- $[149] = t50;
910
- $[150] = t57;
911
- $[151] = t58;
912
- } else {
913
- t58 = $[151];
914
- }
915
- return t58;
916
- };
917
- function _temp(q) {
918
- return performanceLevel(q.avgDurationMs) === "critical";
919
- }
920
- function _temp2(q_0) {
921
- return performanceLevel(q_0.avgDurationMs) === "warning";
922
- }
923
- function _temp3(q_1) {
924
- return performanceLevel(q_1.avgDurationMs) === "good";
925
- }
926
-
927
- const GET_METRICS = adminRef(ADMIN_FUNCTIONS.getMetrics);
928
- const formatDuration = (ms) => {
929
- const totalSeconds = Math.floor(ms / 1e3);
930
- const hours = Math.floor(totalSeconds / 3600);
931
- const minutes = Math.floor(totalSeconds % 3600 / 60);
932
- const seconds = totalSeconds % 60;
933
- if (hours > 0) {
934
- return `${hours.toString()}h ${minutes.toString()}m`;
935
- }
936
- if (minutes > 0) {
937
- return `${minutes.toString()}m ${seconds.toString()}s`;
938
- }
939
- return `${seconds.toString()}s`;
940
- };
941
- const resolveTab = (hasQueryStats, activeTab) => hasQueryStats ? activeTab : "overview";
942
- const hitRate = (hits, misses) => {
943
- const total = hits + misses;
944
- return total === 0 ? "—" : `${(hits / total * 100).toFixed(1)}%`;
945
- };
946
- const StatCard = (t0) => {
947
- const $ = c(16);
948
- const {
949
- chart,
950
- footer,
951
- label,
952
- testId,
953
- value
954
- } = t0;
955
- let t1;
956
- if ($[0] !== label) {
957
- t1 = /* @__PURE__ */ jsxDEV("span", {
958
- className: "font-mono text-[11px] tracking-wide text-muted-foreground uppercase",
959
- children: label
960
- }, void 0, false);
961
- $[0] = label;
962
- $[1] = t1;
963
- } else {
964
- t1 = $[1];
965
- }
966
- let t2;
967
- if ($[2] !== testId || $[3] !== value) {
968
- t2 = /* @__PURE__ */ jsxDEV("span", {
969
- className: "truncate text-2xl font-semibold tabular-nums text-foreground",
970
- "data-testid": testId,
971
- children: value
972
- }, void 0, false);
973
- $[2] = testId;
974
- $[3] = value;
975
- $[4] = t2;
976
- } else {
977
- t2 = $[4];
978
- }
979
- let t3;
980
- if ($[5] !== chart || $[6] !== t2) {
981
- t3 = /* @__PURE__ */ jsxDEV("div", {
982
- className: "flex items-center justify-between gap-3",
983
- children: [t2, chart]
984
- }, void 0, true);
985
- $[5] = chart;
986
- $[6] = t2;
987
- $[7] = t3;
988
- } else {
989
- t3 = $[7];
990
- }
991
- let t4;
992
- if ($[8] !== t1 || $[9] !== t3) {
993
- t4 = /* @__PURE__ */ jsxDEV("div", {
994
- className: "flex flex-col gap-2.5 p-4",
995
- children: [t1, t3]
996
- }, void 0, true);
997
- $[8] = t1;
998
- $[9] = t3;
999
- $[10] = t4;
1000
- } else {
1001
- t4 = $[10];
1002
- }
1003
- let t5;
1004
- if ($[11] !== footer) {
1005
- t5 = footer != null && /* @__PURE__ */ jsxDEV("div", {
1006
- className: "border-t border-border bg-muted/50 px-4 py-2.5 text-[11px] text-muted-foreground",
1007
- children: footer
1008
- }, void 0, false);
1009
- $[11] = footer;
1010
- $[12] = t5;
1011
- } else {
1012
- t5 = $[12];
1013
- }
1014
- let t6;
1015
- if ($[13] !== t4 || $[14] !== t5) {
1016
- t6 = /* @__PURE__ */ jsxDEV(Card, {
1017
- className: "justify-between gap-0 py-0",
1018
- children: [t4, t5]
1019
- }, void 0, true);
1020
- $[13] = t4;
1021
- $[14] = t5;
1022
- $[15] = t6;
1023
- } else {
1024
- t6 = $[15];
1025
- }
1026
- return t6;
1027
- };
1028
- const MetricsPanel = ({
1029
- initialShardKey
1030
- }) => {
1031
- const client = useLunora();
1032
- const t = useT();
1033
- const [shardKey, setShardKey] = useState(initialShardKey ?? "");
1034
- const [activeTab, setActiveTab] = useState("overview");
1035
- const [history, setHistory] = useState([]);
1036
- const lastRequestsRef = useRef(null);
1037
- const lastShardRef = useRef(null);
1038
- const mountedRef = useRef(true);
1039
- useEffect(() => {
1040
- mountedRef.current = true;
1041
- return () => {
1042
- mountedRef.current = false;
1043
- };
1044
- }, []);
1045
- const debouncedShard = useDebounced(shardKey.trim(), 400);
1046
- const {
1047
- data,
1048
- error,
1049
- liveError
1050
- } = useAdminQuery(ADMIN_FUNCTIONS.getMetrics, {}, {
1051
- live: true,
1052
- shardKey: debouncedShard
1053
- });
1054
- const metrics = data ?? null;
1055
- useEffect(() => {
1056
- if (data === void 0) {
1057
- return;
1058
- }
1059
- recordShard(debouncedShard);
1060
- const next = data;
1061
- const previous = lastRequestsRef.current;
1062
- const shardChanged = lastShardRef.current !== null && lastShardRef.current !== next.shard;
1063
- lastShardRef.current = next.shard;
1064
- lastRequestsRef.current = next.requests;
1065
- if (shardChanged) {
1066
- setHistory([]);
1067
- return;
1068
- }
1069
- if (previous !== null && next.requests >= previous) {
1070
- setHistory((prior) => [...prior, next.requests - previous].slice(-30));
1071
- }
1072
- }, [data, debouncedShard]);
1073
- const [shardResults, setShardResults] = useState(null);
1074
- const [aggregating, setAggregating] = useState(false);
1075
- const aggregateAll = async () => {
1076
- setAggregating(true);
1077
- const shards = shardsToAggregate(shardKey, loadRecentShards());
1078
- try {
1079
- const results = await Promise.all(shards.map(async (shard) => {
1080
- try {
1081
- const snapshot = await client.query(GET_METRICS, {}, callOptions(shard));
1082
- return {
1083
- error: null,
1084
- metrics: snapshot,
1085
- shard: shard === "" ? snapshot.shard : shard
1086
- };
1087
- } catch (error_) {
1088
- return {
1089
- error: errorMessage(error_),
1090
- metrics: null,
1091
- shard: shard === "" ? "__root__" : shard
1092
- };
1093
- }
1094
- }));
1095
- if (mountedRef.current) {
1096
- setShardResults(results);
1097
- }
1098
- } finally {
1099
- if (mountedRef.current) {
1100
- setAggregating(false);
1101
- }
1102
- }
1103
- };
1104
- const aggregate = shardResults === null ? null : aggregateMetrics(shardResults);
1105
- const errorRate = metrics === null || metrics.requests === 0 ? "—" : `${(metrics.errors / metrics.requests * 100).toFixed(1)}%`;
1106
- const currentDelta = history.length > 0 ? history.at(-1) : 0;
1107
- const latencyPercentiles = metrics ? computeLatencyPercentiles(metrics) : {
1108
- p90: 0,
1109
- p95: 0
1110
- };
1111
- const formatMs = (ms) => {
1112
- if (ms <= 0) {
1113
- return "—";
1114
- }
1115
- if (ms < 1) {
1116
- return `${(ms * 1e3).toFixed(0)}μs`;
1117
- }
1118
- if (ms < 1e3) {
1119
- return `${ms.toFixed(1)}ms`;
1120
- }
1121
- return `${(ms / 1e3).toFixed(2)}s`;
1122
- };
1123
- const queryStats = useMemo(() => {
1124
- if (!metrics || !("queryStats" in metrics)) {
1125
- return void 0;
1126
- }
1127
- const snapQs = metrics.queryStats;
1128
- if (!snapQs || !Array.isArray(snapQs)) {
1129
- return void 0;
1130
- }
1131
- return enrichQueryStats(snapQs);
1132
- }, [metrics]);
1133
- const effectiveTab = resolveTab(queryStats !== void 0, activeTab);
1134
- const runAggregate = () => {
1135
- fireAndForget(aggregateAll());
1136
- };
1137
- const clearAggregate = () => {
1138
- setShardResults(null);
1139
- };
1140
- const switchToOverview = () => {
1141
- setActiveTab("overview");
1142
- };
1143
- const switchToQueryInsights = () => {
1144
- setActiveTab("query-insights");
1145
- };
1146
- return /* @__PURE__ */ jsxDEV("div", {
1147
- className: "flex flex-col gap-4",
1148
- "data-testid": "lunora-metrics",
1149
- children: [/* @__PURE__ */ jsxDEV("div", {
1150
- className: "flex flex-wrap items-center gap-2",
1151
- children: [/* @__PURE__ */ jsxDEV(ShardInput, {
1152
- onChange: setShardKey,
1153
- testId: "mt-shard-input",
1154
- value: shardKey
1155
- }, void 0, false), /* @__PURE__ */ jsxDEV(LiveError, {
1156
- message: liveError,
1157
- prefix: "mt"
1158
- }, void 0, false), /* @__PURE__ */ jsxDEV(Button, {
1159
- "data-testid": "mt-aggregate",
1160
- disabled: aggregating,
1161
- onClick: runAggregate,
1162
- size: "sm",
1163
- type: "button",
1164
- variant: "secondary",
1165
- children: aggregating ? t("Aggregating…") : t("All shards")
1166
- }, void 0, false), shardResults !== null && /* @__PURE__ */ jsxDEV(Button, {
1167
- "data-testid": "mt-aggregate-clear",
1168
- onClick: clearAggregate,
1169
- size: "sm",
1170
- type: "button",
1171
- variant: "ghost",
1172
- children: t("Hide")
1173
- }, void 0, false), /* @__PURE__ */ jsxDEV("a", {
1174
- className: "text-sm text-primary underline-offset-4 hover:underline",
1175
- "data-testid": "mt-cf-link",
1176
- href: CLOUDFLARE_DURABLE_OBJECTS_URL,
1177
- rel: "noreferrer",
1178
- target: "_blank",
1179
- children: t("Open in Cloudflare")
1180
- }, void 0, false)]
1181
- }, void 0, true), error !== null && /* @__PURE__ */ jsxDEV("p", {
1182
- className: "text-sm text-destructive",
1183
- "data-testid": "mt-error",
1184
- role: "alert",
1185
- children: error
1186
- }, void 0, false), queryStats !== void 0 && /* @__PURE__ */ jsxDEV("div", {
1187
- className: "flex gap-2 border-b",
1188
- "data-testid": "mt-tabs",
1189
- children: [/* @__PURE__ */ jsxDEV("button", {
1190
- className: `pb-2 text-sm font-medium transition-colors ${effectiveTab === "overview" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"}`,
1191
- "data-testid": "mt-tab-overview",
1192
- onClick: switchToOverview,
1193
- type: "button",
1194
- children: t("Overview")
1195
- }, void 0, false), /* @__PURE__ */ jsxDEV("button", {
1196
- className: `pb-2 text-sm font-medium transition-colors ${effectiveTab === "query-insights" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"}`,
1197
- "data-testid": "mt-tab-query-insights",
1198
- onClick: switchToQueryInsights,
1199
- type: "button",
1200
- children: [t("Query insights"), queryStats.length > 0 && /* @__PURE__ */ jsxDEV("span", {
1201
- className: "ml-1.5 rounded-full bg-primary/10 px-1.5 py-0.5 text-xs text-primary",
1202
- children: queryStats.length
1203
- }, void 0, false)]
1204
- }, void 0, true)]
1205
- }, void 0, true), effectiveTab === "query-insights" && queryStats !== void 0 && /* @__PURE__ */ jsxDEV(QueryInsights, {
1206
- queryStats
1207
- }, void 0, false), effectiveTab === "overview" && metrics !== null && /* @__PURE__ */ jsxDEV("dl", {
1208
- className: "grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",
1209
- "data-testid": "mt-stats",
1210
- children: [/* @__PURE__ */ jsxDEV(StatCard, {
1211
- chart: history.length >= 2 ? /* @__PURE__ */ jsxDEV(Sparkline, {
1212
- ariaLabel: t("Requests per interval over time"),
1213
- className: "h-7 w-24 text-foreground",
1214
- series: history,
1215
- testId: "mt-sparkline"
1216
- }, void 0, false) : void 0,
1217
- footer: history.length >= 2 ? /* @__PURE__ */ jsxDEV(Fragment, {
1218
- children: [/* @__PURE__ */ jsxDEV("span", {
1219
- className: "font-semibold text-foreground",
1220
- children: `+${currentDelta.toLocaleString()}`
1221
- }, void 0, false), " ", t("last interval")]
1222
- }, void 0, true) : /* @__PURE__ */ jsxDEV("span", {
1223
- "data-testid": "mt-sparkline-empty",
1224
- children: t("collecting samples…")
1225
- }, void 0, false),
1226
- label: t("Requests"),
1227
- testId: "mt-requests",
1228
- value: metrics.requests
1229
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1230
- footer: t("{rate} error rate", {
1231
- rate: errorRate
1232
- }),
1233
- label: t("Errors"),
1234
- testId: "mt-errors",
1235
- value: /* @__PURE__ */ jsxDEV(Fragment, {
1236
- children: [metrics.errors, " (", errorRate, ")"]
1237
- }, void 0, true)
1238
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1239
- footer: latencyPercentiles.p90 > 0 ? `P90 ${formatMs(latencyPercentiles.p90)}` : void 0,
1240
- label: t("P95 latency"),
1241
- testId: "mt-p95",
1242
- value: latencyPercentiles.p95 > 0 ? formatMs(latencyPercentiles.p95) : "—"
1243
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1244
- footer: metrics.cache === null ? void 0 : `${metrics.cache.entries.toLocaleString()} ${t("cache entries")}`,
1245
- label: t("Database size"),
1246
- testId: "mt-db-size",
1247
- value: formatBytes(metrics.databaseSize)
1248
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1249
- label: t("Shard"),
1250
- testId: "mt-shard",
1251
- value: metrics.shard
1252
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1253
- label: t("Uptime"),
1254
- testId: "mt-uptime",
1255
- value: formatDuration(metrics.uptimeMs)
1256
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1257
- label: t("Cache hit rate"),
1258
- testId: "mt-cache",
1259
- value: metrics.cache === null ? t("no cache configured") : t("{rate} ({count} entries)", {
1260
- count: metrics.cache.entries,
1261
- rate: hitRate(metrics.cache.hits, metrics.cache.misses)
1262
- })
1263
- }, void 0, false)]
1264
- }, void 0, true), effectiveTab === "overview" && metrics === null && null, effectiveTab === "overview" && aggregate !== null && shardResults !== null && /* @__PURE__ */ jsxDEV("div", {
1265
- className: "flex flex-col gap-4",
1266
- "data-testid": "mt-aggregate-view",
1267
- children: [/* @__PURE__ */ jsxDEV("dl", {
1268
- className: "grid gap-3 sm:grid-cols-2 lg:grid-cols-3",
1269
- "data-testid": "mt-aggregate-stats",
1270
- children: [/* @__PURE__ */ jsxDEV(StatCard, {
1271
- label: t("Shards"),
1272
- testId: "mt-agg-shards",
1273
- value: aggregate.failed > 0 ? t("{reachable} reachable, {failed} unreachable", {
1274
- failed: aggregate.failed,
1275
- reachable: aggregate.reachable
1276
- }) : t("{reachable} reachable", {
1277
- reachable: aggregate.reachable
1278
- })
1279
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1280
- label: t("Total requests"),
1281
- testId: "mt-agg-requests",
1282
- value: aggregate.totalRequests
1283
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1284
- label: t("Total errors"),
1285
- testId: "mt-agg-errors",
1286
- value: aggregate.totalErrors
1287
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1288
- label: t("Total database size"),
1289
- testId: "mt-agg-db-size",
1290
- value: formatBytes(aggregate.totalDatabaseSize)
1291
- }, void 0, false), /* @__PURE__ */ jsxDEV(StatCard, {
1292
- label: t("Combined cache hit rate"),
1293
- testId: "mt-agg-cache",
1294
- value: aggregate.hitRate === null ? t("no cache configured") : `${(aggregate.hitRate * 100).toFixed(1)}%`
1295
- }, void 0, false)]
1296
- }, void 0, true), /* @__PURE__ */ jsxDEV(Card, {
1297
- className: "overflow-hidden py-0",
1298
- children: /* @__PURE__ */ jsxDEV(CardContent, {
1299
- className: "px-0",
1300
- children: /* @__PURE__ */ jsxDEV(Table, {
1301
- "data-testid": "mt-agg-table",
1302
- children: [/* @__PURE__ */ jsxDEV(TableHeader, {
1303
- children: /* @__PURE__ */ jsxDEV(TableRow, {
1304
- children: [/* @__PURE__ */ jsxDEV(TableHead, {
1305
- children: t("shard")
1306
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
1307
- children: t("requests")
1308
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
1309
- children: t("errors")
1310
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
1311
- children: t("db size")
1312
- }, void 0, false)]
1313
- }, void 0, true)
1314
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableBody, {
1315
- children: shardResults.map((result) => /* @__PURE__ */ jsxDEV(TableRow, {
1316
- "data-testid": `mt-agg-row-${result.shard}`,
1317
- children: [/* @__PURE__ */ jsxDEV(TableCell, {
1318
- children: result.shard
1319
- }, void 0, false), result.metrics === null ? /* @__PURE__ */ jsxDEV(TableCell, {
1320
- className: "text-destructive",
1321
- colSpan: 3,
1322
- children: result.error ?? t("unreachable")
1323
- }, void 0, false) : /* @__PURE__ */ jsxDEV(Fragment, {
1324
- children: [/* @__PURE__ */ jsxDEV(TableCell, {
1325
- className: "tabular-nums",
1326
- children: result.metrics.requests
1327
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
1328
- className: "tabular-nums",
1329
- children: result.metrics.errors
1330
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
1331
- className: "tabular-nums",
1332
- children: formatBytes(result.metrics.databaseSize)
1333
- }, void 0, false)]
1334
- }, void 0, true)]
1335
- }, result.shard, true))
1336
- }, void 0, false)]
1337
- }, void 0, true)
1338
- }, void 0, false)
1339
- }, void 0, false)]
1340
- }, void 0, true)]
1341
- }, void 0, true);
1342
- };
1343
-
1344
- export { MetricsPanel };