@lunora/studio 1.0.0-alpha.29 → 1.0.0-alpha.291

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 (354) hide show
  1. package/LICENSE.md +6 -0
  2. package/README.md +1 -1
  3. package/dist/index.d.mts +1581 -0
  4. package/dist/index.d.ts +974 -806
  5. package/dist/index.mjs +1 -0
  6. package/dist/mount.d.mts +22 -0
  7. package/dist/mount.d.ts +11 -10
  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 +3 -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/sparkline.mjs +1 -0
  54. package/dist/packem_chunks/storage-rules-panel.mjs +1 -0
  55. package/dist/packem_chunks/subscriptions-panel.mjs +1 -0
  56. package/dist/packem_chunks/sync-client-panel.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-fhDlZGE4.mjs +2 -0
  63. package/dist/packem_shared/ApiReferencePanel-nAf8tNRr.mjs +1 -0
  64. package/dist/packem_shared/CommandPalette-D9ZY-qQd.mjs +1 -0
  65. package/dist/packem_shared/ConfirmButton-DU4p72Er.mjs +1 -0
  66. package/dist/packem_shared/ConnectionBadge-B8Hj5DaE.mjs +1 -0
  67. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs +1 -0
  68. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-D5YMT0gM.mjs +1 -0
  69. package/dist/packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs +1 -0
  70. package/dist/packem_shared/DataBrowser-C14aRmmR.mjs +4 -0
  71. package/dist/packem_shared/DataFilters-CYZFt2EK.mjs +1 -0
  72. package/dist/packem_shared/ErrorBoundary-BWNF98VF.mjs +1 -0
  73. package/dist/packem_shared/GlobalDataBrowser-DhObcZDY.mjs +1 -0
  74. package/dist/packem_shared/HomePanel-CUuYsApa.mjs +1 -0
  75. package/dist/packem_shared/MigrationsPanel-CkVIwAbK.mjs +1 -0
  76. package/dist/packem_shared/OpenRpcReferencePanel-BxEr49D9.mjs +1 -0
  77. package/dist/packem_shared/STUDIO_ROOT_CLASS-C6MccdVk.mjs +1 -0
  78. package/dist/packem_shared/ScheduledJobs-BZNcYWBP.mjs +1 -0
  79. package/dist/packem_shared/ShardInput-C6mjgAh4.mjs +1 -0
  80. package/dist/packem_shared/Studio-CZjQXFHC.mjs +1 -0
  81. package/dist/packem_shared/StudioApp-C9ENwcOH.mjs +1 -0
  82. package/dist/packem_shared/StudioI18nProvider-fVsCSs5L.mjs +1 -0
  83. package/dist/packem_shared/advisor-view-DzI2RQhY.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-D7vL0y8y.d.mts +349 -0
  87. package/dist/packem_shared/app.d-D7vL0y8y.d.ts +349 -0
  88. package/dist/packem_shared/auth-pager-DiDnXsfe.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-DIiNmDR9.mjs +1 -0
  98. package/dist/packem_shared/data-view-params-DhYmAkcj.mjs +1 -0
  99. package/dist/packem_shared/diagram-export-panel-D5CVNJkp.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-DueSEkt-.mjs +1 -0
  103. package/dist/packem_shared/grid-features-OVIMIQan.mjs +6 -0
  104. package/dist/packem_shared/grid-pagination-DgzyzfBh.mjs +1 -0
  105. package/dist/packem_shared/home-panel-BcE8S2Nn.mjs +3 -0
  106. package/dist/packem_shared/input-CXhxesPC.mjs +1 -0
  107. package/dist/packem_shared/internal-Df43vQI0.mjs +2 -0
  108. package/dist/packem_shared/label-DKFzyHq6.mjs +1 -0
  109. package/dist/packem_shared/live-status-BuJdUZFU.mjs +1 -0
  110. package/dist/packem_shared/log-fields-BolUoZ9g.mjs +1 -0
  111. package/dist/packem_shared/log-line-CICyJ_kc.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-CyFiAE2l.mjs +1 -0
  116. package/dist/packem_shared/reference-view-CIHyURU6.mjs +13 -0
  117. package/dist/packem_shared/schema-diagram-C5oilX7l.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-DyK762_A.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-fK2DTLde.mjs +2 -0
  128. package/dist/packem_shared/table-D0SBiDu-.mjs +2 -0
  129. package/dist/packem_shared/table-list-sidebar-DkPO_Qtz.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-tlBof8Yg.mjs +1 -0
  133. package/dist/packem_shared/use-admin-spec-Bir7V68L.mjs +1 -0
  134. package/dist/packem_shared/use-async-submit-CZqCMTJ_.mjs +1 -0
  135. package/dist/packem_shared/use-auth-config-Z_n4ABCI.mjs +1 -0
  136. package/dist/packem_shared/use-mirrored-ref-CVDf2z1M.mjs +1 -0
  137. package/dist/packem_shared/use-open-trace-DMVhpnyG.mjs +1 -0
  138. package/dist/packem_shared/use-shard-key-BsP3o5wT.mjs +1 -0
  139. package/dist/packem_shared/use-sql-assistant-CZydTzd5.mjs +1 -0
  140. package/dist/packem_shared/useDebounced-DVeQ5-oW.mjs +1 -0
  141. package/dist/packem_shared/utils-bhneXptQ.mjs +1 -0
  142. package/dist/packem_shared/virtual-rect-D_j7aLxX.mjs +1 -0
  143. package/dist/packem_shared/wire-codec-B2DgCbKt.mjs +1 -0
  144. package/dist/standalone/chunk-253UHWDX.js +1 -0
  145. package/dist/standalone/chunk-2I4NHEKA.js +1 -0
  146. package/dist/standalone/chunk-2IKDEUCX.js +1 -0
  147. package/dist/standalone/chunk-2VA5S3IA.js +1 -0
  148. package/dist/standalone/chunk-37WYCOQ2.js +1 -0
  149. package/dist/standalone/chunk-3YXASVTP.js +1 -0
  150. package/dist/standalone/chunk-47EMK7A6.js +1 -0
  151. package/dist/standalone/chunk-4EFBLED2.js +1 -0
  152. package/dist/standalone/chunk-4ELKK7SE.js +1 -0
  153. package/dist/standalone/chunk-4GQJA35F.js +1 -0
  154. package/dist/standalone/chunk-4WD4XGC3.js +1 -0
  155. package/dist/standalone/chunk-4ZEL6BYL.js +1 -0
  156. package/dist/standalone/chunk-55UGUCQ6.js +1 -0
  157. package/dist/standalone/chunk-5B2RTXBS.js +1 -0
  158. package/dist/standalone/chunk-5O3OODSZ.js +1 -0
  159. package/dist/standalone/chunk-5QR2SQIS.js +1 -0
  160. package/dist/standalone/chunk-5QRUAQNY.js +1 -0
  161. package/dist/standalone/chunk-5UEMUPTW.js +1 -0
  162. package/dist/standalone/chunk-5XFBQCZ5.js +1 -0
  163. package/dist/standalone/chunk-627GZOJ7.js +1 -0
  164. package/dist/standalone/chunk-67YFV2GM.js +14 -0
  165. package/dist/standalone/chunk-6HLARDYO.js +1 -0
  166. package/dist/standalone/chunk-6QTAHSDD.js +1 -0
  167. package/dist/standalone/chunk-7G4Z6Q7X.js +1 -0
  168. package/dist/standalone/chunk-7GMSZEJR.js +4 -0
  169. package/dist/standalone/chunk-7HE4UK44.js +1 -0
  170. package/dist/standalone/chunk-7IU6DKN3.js +1 -0
  171. package/dist/standalone/chunk-7RKB5KS7.js +1 -0
  172. package/dist/standalone/chunk-7Y3SY37W.js +1 -0
  173. package/dist/standalone/chunk-AJEX5TMG.js +1 -0
  174. package/dist/standalone/chunk-AN4UDYUY.js +59 -0
  175. package/dist/standalone/chunk-AUAECCXB.js +1 -0
  176. package/dist/standalone/chunk-AUGKHAMQ.js +1 -0
  177. package/dist/standalone/chunk-BOMPSVRC.js +1 -0
  178. package/dist/standalone/chunk-C6SAOAML.js +1 -0
  179. package/dist/standalone/chunk-CCDX5RYT.js +1 -0
  180. package/dist/standalone/chunk-CGQMJYCW.js +1 -0
  181. package/dist/standalone/chunk-CVNG6XOK.js +1 -0
  182. package/dist/standalone/chunk-CVXNHIQW.js +1 -0
  183. package/dist/standalone/chunk-CX4FEQNT.js +1 -0
  184. package/dist/standalone/chunk-D7NNCIX4.js +1 -0
  185. package/dist/standalone/chunk-DB4FJSOK.js +1 -0
  186. package/dist/standalone/chunk-DGJMFHBV.js +9 -0
  187. package/dist/standalone/chunk-DY65YGY5.js +1 -0
  188. package/dist/standalone/chunk-DYLF2FA5.js +1 -0
  189. package/dist/standalone/chunk-E4PXACVL.js +3 -0
  190. package/dist/standalone/chunk-ECY2JC5F.js +1 -0
  191. package/dist/standalone/chunk-EK6VMAUN.js +1 -0
  192. package/dist/standalone/chunk-EQSFFE7F.js +2 -0
  193. package/dist/standalone/chunk-FJ4FPLVL.js +1 -0
  194. package/dist/standalone/chunk-FJF55TPZ.js +1 -0
  195. package/dist/standalone/chunk-FPI7AMQJ.js +1 -0
  196. package/dist/standalone/chunk-FUYEZFBP.js +1 -0
  197. package/dist/standalone/chunk-G5KWQMGT.js +1 -0
  198. package/dist/standalone/chunk-GCG65T2K.js +1 -0
  199. package/dist/standalone/chunk-GHQ2VDI2.js +1 -0
  200. package/dist/standalone/chunk-GN3LRVZ2.js +1 -0
  201. package/dist/standalone/chunk-HCTJKP5J.js +1 -0
  202. package/dist/standalone/chunk-HF4A3NUS.js +1 -0
  203. package/dist/standalone/chunk-HJHSQPHW.js +19 -0
  204. package/dist/standalone/chunk-I26MS5PJ.js +1 -0
  205. package/dist/standalone/chunk-IKKQNSLF.js +1 -0
  206. package/dist/standalone/chunk-IWZ7GVQO.js +1 -0
  207. package/dist/standalone/chunk-J6H3YTFH.js +1 -0
  208. package/dist/standalone/chunk-JHYNLMYA.js +1 -0
  209. package/dist/standalone/chunk-JQXA2OYK.js +1 -0
  210. package/dist/standalone/chunk-JZGTSH2C.js +4 -0
  211. package/dist/standalone/chunk-KGAUQL5T.js +1 -0
  212. package/dist/standalone/chunk-KVIBTEK5.js +1 -0
  213. package/dist/standalone/chunk-L56P33FH.js +1 -0
  214. package/dist/standalone/chunk-LFPYL6YU.js +1 -0
  215. package/dist/standalone/chunk-LW6ERMNX.js +1 -0
  216. package/dist/standalone/chunk-M6LSAR5C.js +1 -0
  217. package/dist/standalone/chunk-MEMHDCRE.js +1 -0
  218. package/dist/standalone/chunk-MTZ5UOQ5.js +3 -0
  219. package/dist/standalone/chunk-MVWZMWPD.js +1 -0
  220. package/dist/standalone/chunk-NCPW7WHO.js +1 -0
  221. package/dist/standalone/chunk-NDTQTKDX.js +6 -0
  222. package/dist/standalone/chunk-NGVP66OH.js +1 -0
  223. package/dist/standalone/chunk-NJGORSBO.js +1 -0
  224. package/dist/standalone/chunk-NQZALRU3.js +1 -0
  225. package/dist/standalone/chunk-NRP22GKC.js +1 -0
  226. package/dist/standalone/chunk-NXQW5E6W.js +1 -0
  227. package/dist/standalone/chunk-O5IUJQBJ.js +8 -0
  228. package/dist/standalone/chunk-OEKOZIPM.js +1 -0
  229. package/dist/standalone/chunk-OFZX4WXS.js +1 -0
  230. package/dist/standalone/chunk-OLQTBRWX.js +1 -0
  231. package/dist/standalone/chunk-OPM7ESDV.js +1 -0
  232. package/dist/standalone/chunk-OQ6I6OXT.js +2 -0
  233. package/dist/standalone/chunk-ORVHXDZV.js +1 -0
  234. package/dist/standalone/chunk-OSGXNEFA.js +1 -0
  235. package/dist/standalone/chunk-OYCUPD3Q.js +1 -0
  236. package/dist/standalone/chunk-PIMTWCRD.js +1 -0
  237. package/dist/standalone/chunk-Q6ED4KUL.js +1 -0
  238. package/dist/standalone/chunk-Q6IT6ZD7.js +1 -0
  239. package/dist/standalone/chunk-QAPKGURH.js +1 -0
  240. package/dist/standalone/chunk-QAQDMS6R.js +1 -0
  241. package/dist/standalone/chunk-QB55CQJC.js +1 -0
  242. package/dist/standalone/chunk-QJLHH3ET.js +1 -0
  243. package/dist/standalone/chunk-QLPEA5F7.js +5 -0
  244. package/dist/standalone/chunk-R6U22RSY.js +1 -0
  245. package/dist/standalone/chunk-RGMVGZV4.js +1 -0
  246. package/dist/standalone/chunk-RVZ2WOZ5.js +15 -0
  247. package/dist/standalone/chunk-RWVIV3U7.js +1 -0
  248. package/dist/standalone/chunk-RXZJYHAH.js +1 -0
  249. package/dist/standalone/chunk-S4Z7K55A.js +1 -0
  250. package/dist/standalone/chunk-SA2OGF3F.js +1 -0
  251. package/dist/standalone/chunk-SJ7BLQMI.js +1 -0
  252. package/dist/standalone/chunk-SJQERRSZ.js +1 -0
  253. package/dist/standalone/chunk-SMBKKLRX.js +1 -0
  254. package/dist/standalone/chunk-SV764LKQ.js +1 -0
  255. package/dist/standalone/chunk-UC7MNI2F.js +1 -0
  256. package/dist/standalone/chunk-UEKIUTCJ.js +1 -0
  257. package/dist/standalone/chunk-UYEZR3BI.js +1 -0
  258. package/dist/standalone/chunk-V2U4MITD.js +1 -0
  259. package/dist/standalone/chunk-VCFEO3RI.js +1 -0
  260. package/dist/standalone/chunk-VEK3S7MV.js +15 -0
  261. package/dist/standalone/chunk-VESGIGMQ.js +1 -0
  262. package/dist/standalone/chunk-W5TWX4V7.js +1 -0
  263. package/dist/standalone/chunk-WFICP5DT.js +1 -0
  264. package/dist/standalone/chunk-WJRYEML4.js +1 -0
  265. package/dist/standalone/chunk-WM6KXJGG.js +3 -0
  266. package/dist/standalone/chunk-WOPEVNW5.js +1 -0
  267. package/dist/standalone/chunk-WRQAHEWF.js +1 -0
  268. package/dist/standalone/chunk-WUJ3AOVG.js +1 -0
  269. package/dist/standalone/chunk-XGCIDUJF.js +1 -0
  270. package/dist/standalone/chunk-XHRKNCCI.js +1 -0
  271. package/dist/standalone/chunk-XQSJORIU.js +1 -0
  272. package/dist/standalone/chunk-Y3AYVFTK.js +1 -0
  273. package/dist/standalone/chunk-YRVZM2TB.js +1 -0
  274. package/dist/standalone/chunk-YVR4SEPU.js +1 -0
  275. package/dist/standalone/chunk-Z22BDS6N.js +1 -0
  276. package/dist/standalone/chunk-ZG4KF3SJ.js +1 -0
  277. package/dist/standalone/chunk-ZKJS6EBE.js +1 -0
  278. package/dist/standalone/studio.js +9 -378
  279. package/dist/styles.css +2 -2
  280. package/package.json +25 -21
  281. package/dist/index.js +0 -41
  282. package/dist/mount.js +0 -26
  283. package/dist/packem_shared/ADMIN_FUNCTIONS-CdaxLGkE.js +0 -48
  284. package/dist/packem_shared/ApiDocsPanel-BSSgtcVf.js +0 -842
  285. package/dist/packem_shared/ApiReferencePanel-D24xOjCw.js +0 -229
  286. package/dist/packem_shared/ApiTab-vo8uhE29.js +0 -251
  287. package/dist/packem_shared/AuditPanel-CBjYR6S5.js +0 -200
  288. package/dist/packem_shared/CommandPalette-L-CuSRUc.js +0 -373
  289. package/dist/packem_shared/ConfirmButton-C2eVi2Qv.js +0 -59
  290. package/dist/packem_shared/ConnectionBadge-B2DDM2Tn.js +0 -111
  291. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-Vxwaxx51.js +0 -50
  292. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-DjF0h-gA.js +0 -89
  293. package/dist/packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js +0 -27
  294. package/dist/packem_shared/DataBrowser-DBKOIVKS.js +0 -4492
  295. package/dist/packem_shared/DataFilters-FNquMaiu.js +0 -249
  296. package/dist/packem_shared/ErrorBoundary-BzAApI7J.js +0 -66
  297. package/dist/packem_shared/ExportImportPanel-DtDEy4OD.js +0 -197
  298. package/dist/packem_shared/FileBrowser-DqLRjqsM.js +0 -2932
  299. package/dist/packem_shared/FunctionRunner-BmRkCvT4.js +0 -343
  300. package/dist/packem_shared/FunctionStatsPanel-Bi3kyQvu.js +0 -375
  301. package/dist/packem_shared/GlobalDataBrowser-DOjhvhKa.js +0 -289
  302. package/dist/packem_shared/HealthPanel-C7IPO6Ts.js +0 -648
  303. package/dist/packem_shared/HomePanel-dJIkHY_i.js +0 -14
  304. package/dist/packem_shared/InsightsPanel-BD29GXXd.js +0 -461
  305. package/dist/packem_shared/LogsPanel-2JhE1qep.js +0 -827
  306. package/dist/packem_shared/MailPanel-DwNsuFJC.js +0 -440
  307. package/dist/packem_shared/MetricsPanel-CRa4ITlq.js +0 -19
  308. package/dist/packem_shared/MigrationsPanel-Z1DmSSzf.js +0 -239
  309. package/dist/packem_shared/OpenRpcReferencePanel-Dq0yyVWz.js +0 -191
  310. package/dist/packem_shared/PitrPanel-3mec0LTF.js +0 -252
  311. package/dist/packem_shared/STUDIO_ROOT_CLASS-D12gX2dV.js +0 -3
  312. package/dist/packem_shared/ScheduledJobs--Z9GTmKb.js +0 -262
  313. package/dist/packem_shared/SchemaViewer-nxDV7dZJ.js +0 -2512
  314. package/dist/packem_shared/SecurityAdvisorPanel-5tYrJdvn.js +0 -92
  315. package/dist/packem_shared/SettingsPanel-SijRekVc.js +0 -390
  316. package/dist/packem_shared/ShardInput-gx_DZXXn.js +0 -107
  317. package/dist/packem_shared/SqlEditorPanel-DI4obotI.js +0 -13
  318. package/dist/packem_shared/Studio-B_L5Q2-X.js +0 -33
  319. package/dist/packem_shared/StudioApp-wxioPfiP.js +0 -657
  320. package/dist/packem_shared/StudioI18nProvider-B-tDCZIi.js +0 -48
  321. package/dist/packem_shared/TableEditor-1T-5KYtr.js +0 -11
  322. package/dist/packem_shared/advisor-view-DzqyvUU3.js +0 -159
  323. package/dist/packem_shared/aggregateMetrics-D4nUHEKU.js +0 -108
  324. package/dist/packem_shared/app.d-B6MyY_al.d.ts +0 -300
  325. package/dist/packem_shared/badge-B2PKA1-5.js +0 -49
  326. package/dist/packem_shared/bar-chart-CzJAgqkp.js +0 -3245
  327. package/dist/packem_shared/button-BhsN2uZH.js +0 -49
  328. package/dist/packem_shared/card-DURq3ElK.js +0 -175
  329. package/dist/packem_shared/cf-links-2cktDedA.js +0 -8
  330. package/dist/packem_shared/checkbox-UNkzAxl-.js +0 -63
  331. package/dist/packem_shared/data-grid-CrapHxR-.js +0 -183
  332. package/dist/packem_shared/dropdown-menu-WY4B_eJO.js +0 -280
  333. package/dist/packem_shared/empty-state-DY_oe0k6.js +0 -98
  334. package/dist/packem_shared/grid-features-DnTbXXNb.js +0 -840
  335. package/dist/packem_shared/home-panel-VdQI_8oX.js +0 -1700
  336. package/dist/packem_shared/input-XH4r1Pt1.js +0 -53
  337. package/dist/packem_shared/internal-CvMZCVd6.js +0 -68
  338. package/dist/packem_shared/label-D8ykjn5J.js +0 -46
  339. package/dist/packem_shared/live-status-FZ0psC1z.js +0 -44
  340. package/dist/packem_shared/metrics-panel-3FSfzgEX.js +0 -1611
  341. package/dist/packem_shared/reference-view-DVyk5kXj.js +0 -2180
  342. package/dist/packem_shared/shard-history-DyebH1R5.js +0 -38
  343. package/dist/packem_shared/sparkline-10dG-_f0.js +0 -93
  344. package/dist/packem_shared/sql-editor-panel-DBuIpCXk.js +0 -2562
  345. package/dist/packem_shared/storage-tier-CL98eOvn.js +0 -85
  346. package/dist/packem_shared/studio-Dm6H5DHS.js +0 -13388
  347. package/dist/packem_shared/table-DsCa9Qp9.js +0 -246
  348. package/dist/packem_shared/table-editor-7iSgi3te.js +0 -407
  349. package/dist/packem_shared/table-list-sidebar-BbSgfLJ2.js +0 -832
  350. package/dist/packem_shared/textarea-D3gaCU_-.js +0 -46
  351. package/dist/packem_shared/use-admin-query-CFl5GUg_.js +0 -105
  352. package/dist/packem_shared/useDebounced-Dxncpg6z.js +0 -32
  353. package/dist/packem_shared/utils-B05Dmz_H.js +0 -8
  354. package/dist/packem_shared/virtual-rect-CVMUskSm.js +0 -10
@@ -1,1700 +0,0 @@
1
- import { c } from 'react/compiler-runtime';
2
- import { useNavigate } from '@tanstack/react-router';
3
- import { B as Bar, E as EvilBarChart } from './bar-chart-CzJAgqkp.js';
4
- import { B as Badge } from './badge-B2PKA1-5.js';
5
- import { a as CardContent, C as Card } from './card-DURq3ElK.js';
6
- import { E as EmptyState } from './empty-state-DY_oe0k6.js';
7
- import { u as useAdminQuery } from './use-admin-query-CFl5GUg_.js';
8
- import { useT } from './DEFAULT_LOCALE-CiX4W7Kr.js';
9
- import { ADMIN_FUNCTIONS } from './ADMIN_FUNCTIONS-CdaxLGkE.js';
10
- import { f as fireAndForget, c as callOptions, a as adminRef, h as formatBytes } from './internal-CvMZCVd6.js';
11
- import { c as cn } from './utils-B05Dmz_H.js';
12
- import { deriveInsights } from './DEFAULT_INSIGHT_THRESHOLDS-DjF0h-gA.js';
13
- import { useLunora } from '@lunora/react';
14
- import { useState, useEffect } from 'react';
15
- import { jsxDEV } from 'react/jsx-dev-runtime';
16
-
17
- const STUDIO_FEATURES = adminRef(ADMIN_FUNCTIONS.studioFeatures);
18
- const DEFAULT_STUDIO_FEATURES = {
19
- analytics: true,
20
- auth: true,
21
- flags: true,
22
- kv: true,
23
- mail: true,
24
- payments: true,
25
- queues: true,
26
- scheduler: true,
27
- storage: true,
28
- vectors: true,
29
- workflows: true
30
- };
31
- const coerceFeatures = (raw) => {
32
- if (raw === null || typeof raw !== "object") {
33
- return DEFAULT_STUDIO_FEATURES;
34
- }
35
- const record = raw;
36
- const flag = (key) => typeof record[key] === "boolean" ? record[key] : true;
37
- return {
38
- analytics: flag("analytics"),
39
- auth: flag("auth"),
40
- flags: flag("flags"),
41
- kv: flag("kv"),
42
- mail: flag("mail"),
43
- payments: flag("payments"),
44
- queues: flag("queues"),
45
- scheduler: flag("scheduler"),
46
- storage: flag("storage"),
47
- vectors: flag("vectors"),
48
- workflows: flag("workflows")
49
- };
50
- };
51
- const useStudioFeatures = () => {
52
- const $ = c(3);
53
- const client = useLunora();
54
- const [features, setFeatures] = useState(DEFAULT_STUDIO_FEATURES);
55
- let t0;
56
- let t1;
57
- if ($[0] !== client) {
58
- t0 = () => {
59
- fireAndForget((async () => {
60
- try {
61
- setFeatures(coerceFeatures(await client.query(STUDIO_FEATURES, {}, callOptions(""))));
62
- } catch {
63
- }
64
- })());
65
- };
66
- t1 = [client];
67
- $[0] = client;
68
- $[1] = t0;
69
- $[2] = t1;
70
- } else {
71
- t0 = $[1];
72
- t1 = $[2];
73
- }
74
- useEffect(t0, t1);
75
- return features;
76
- };
77
-
78
- const ChevronRight$1 = () => {
79
- const $ = c(1);
80
- let t0;
81
- if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82
- t0 = /* @__PURE__ */ jsxDEV("svg", {
83
- "aria-hidden": "true",
84
- className: "size-4 text-muted-foreground",
85
- fill: "none",
86
- stroke: "currentColor",
87
- strokeWidth: 1.6,
88
- viewBox: "0 0 24 24",
89
- children: /* @__PURE__ */ jsxDEV("path", {
90
- d: "m9 6 6 6-6 6",
91
- strokeLinecap: "round",
92
- strokeLinejoin: "round"
93
- }, void 0, false)
94
- }, void 0, false);
95
- $[0] = t0;
96
- } else {
97
- t0 = $[0];
98
- }
99
- return t0;
100
- };
101
- const BindingCard = (t0) => {
102
- const $ = c(24);
103
- const {
104
- group
105
- } = t0;
106
- const t = useT();
107
- const navigate = useNavigate();
108
- let t1;
109
- if ($[0] !== group.tab || $[1] !== navigate) {
110
- t1 = () => {
111
- fireAndForget(navigate({
112
- to: `/${group.tab}`
113
- }));
114
- };
115
- $[0] = group.tab;
116
- $[1] = navigate;
117
- $[2] = t1;
118
- } else {
119
- t1 = $[2];
120
- }
121
- const onOpen = t1;
122
- const count = group.bindings.length;
123
- let t2;
124
- if ($[3] !== group.label) {
125
- t2 = /* @__PURE__ */ jsxDEV("span", {
126
- className: "text-sm font-medium text-foreground",
127
- children: group.label
128
- }, void 0, false);
129
- $[3] = group.label;
130
- $[4] = t2;
131
- } else {
132
- t2 = $[4];
133
- }
134
- let t3;
135
- if ($[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
136
- t3 = /* @__PURE__ */ jsxDEV(ChevronRight$1, {}, void 0, false);
137
- $[5] = t3;
138
- } else {
139
- t3 = $[5];
140
- }
141
- let t4;
142
- if ($[6] !== t2) {
143
- t4 = /* @__PURE__ */ jsxDEV("div", {
144
- className: "flex items-center justify-between",
145
- children: [t2, t3]
146
- }, void 0, true);
147
- $[6] = t2;
148
- $[7] = t4;
149
- } else {
150
- t4 = $[7];
151
- }
152
- let t5;
153
- if ($[8] !== count || $[9] !== t) {
154
- t5 = count === 1 ? t("1 binding") : t("{count} bindings", {
155
- count
156
- });
157
- $[8] = count;
158
- $[9] = t;
159
- $[10] = t5;
160
- } else {
161
- t5 = $[10];
162
- }
163
- let t6;
164
- if ($[11] !== t5) {
165
- t6 = /* @__PURE__ */ jsxDEV("span", {
166
- className: "text-xs text-muted-foreground",
167
- children: t5
168
- }, void 0, false);
169
- $[11] = t5;
170
- $[12] = t6;
171
- } else {
172
- t6 = $[12];
173
- }
174
- let t7;
175
- if ($[13] !== count || $[14] !== group.bindings) {
176
- t7 = count > 0 && /* @__PURE__ */ jsxDEV("div", {
177
- className: "flex flex-wrap gap-1.5",
178
- children: group.bindings.map(_temp$1)
179
- }, void 0, false);
180
- $[13] = count;
181
- $[14] = group.bindings;
182
- $[15] = t7;
183
- } else {
184
- t7 = $[15];
185
- }
186
- let t8;
187
- if ($[16] !== t4 || $[17] !== t6 || $[18] !== t7) {
188
- t8 = /* @__PURE__ */ jsxDEV(CardContent, {
189
- className: "flex flex-col gap-2 py-4",
190
- children: [t4, t6, t7]
191
- }, void 0, true);
192
- $[16] = t4;
193
- $[17] = t6;
194
- $[18] = t7;
195
- $[19] = t8;
196
- } else {
197
- t8 = $[19];
198
- }
199
- let t9;
200
- if ($[20] !== group.testId || $[21] !== onOpen || $[22] !== t8) {
201
- t9 = /* @__PURE__ */ jsxDEV(Card, {
202
- className: "cursor-pointer gap-0 py-0 transition-colors hover:bg-muted/40",
203
- "data-testid": group.testId,
204
- onClick: onOpen,
205
- children: t8
206
- }, void 0, false);
207
- $[20] = group.testId;
208
- $[21] = onOpen;
209
- $[22] = t8;
210
- $[23] = t9;
211
- } else {
212
- t9 = $[23];
213
- }
214
- return t9;
215
- };
216
- const TAB_ORDER = ["kv", "files", "vectors"];
217
- const upsertCard = (current, card) => [...current.filter((group) => group.tab !== card.tab), card].toSorted((a, b) => TAB_ORDER.indexOf(a.tab) - TAB_ORDER.indexOf(b.tab));
218
- const BindingsOverview = () => {
219
- const $ = c(19);
220
- const client = useLunora();
221
- const features = useStudioFeatures();
222
- const t = useT();
223
- let t0;
224
- if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
225
- t0 = [];
226
- $[0] = t0;
227
- } else {
228
- t0 = $[0];
229
- }
230
- const [groups, setGroups] = useState(t0);
231
- let t1;
232
- let t2;
233
- if ($[1] !== client || $[2] !== features.kv || $[3] !== features.storage || $[4] !== features.vectors || $[5] !== t) {
234
- t1 = () => {
235
- const token = {
236
- cancelled: false
237
- };
238
- const sources = [{
239
- enabled: features.kv,
240
- label: t("KV Namespaces"),
241
- load: async () => {
242
- const namespaces = await client.listKvNamespaces();
243
- return namespaces.map(_temp2$1);
244
- },
245
- tab: "kv",
246
- testId: "home-binding-kv"
247
- }, {
248
- enabled: features.storage,
249
- label: t("R2 Buckets"),
250
- load: () => client.listStorageBuckets(),
251
- tab: "files",
252
- testId: "home-binding-r2"
253
- }, {
254
- enabled: features.vectors,
255
- label: t("Vectorize Indexes"),
256
- load: async () => {
257
- const indexes = await client.listVectorIndexes();
258
- return indexes.map(_temp3$1);
259
- },
260
- tab: "vectors",
261
- testId: "home-binding-vectors"
262
- }];
263
- for (const source of sources) {
264
- if (!source.enabled) {
265
- continue;
266
- }
267
- fireAndForget((async () => {
268
- try {
269
- const bindings = await source.load();
270
- if (!token.cancelled) {
271
- const card = {
272
- bindings,
273
- label: source.label,
274
- tab: source.tab,
275
- testId: source.testId
276
- };
277
- setGroups((current) => upsertCard(current, card));
278
- }
279
- } catch {
280
- }
281
- })());
282
- }
283
- return () => {
284
- token.cancelled = true;
285
- };
286
- };
287
- t2 = [client, features.kv, features.storage, features.vectors, t];
288
- $[1] = client;
289
- $[2] = features.kv;
290
- $[3] = features.storage;
291
- $[4] = features.vectors;
292
- $[5] = t;
293
- $[6] = t1;
294
- $[7] = t2;
295
- } else {
296
- t1 = $[6];
297
- t2 = $[7];
298
- }
299
- useEffect(t1, t2);
300
- if (groups.length === 0) {
301
- return null;
302
- }
303
- let t3;
304
- if ($[8] !== t) {
305
- t3 = t("Bindings");
306
- $[8] = t;
307
- $[9] = t3;
308
- } else {
309
- t3 = $[9];
310
- }
311
- let t4;
312
- if ($[10] !== t3) {
313
- t4 = /* @__PURE__ */ jsxDEV("h2", {
314
- className: "text-sm font-semibold tracking-tight text-foreground",
315
- children: t3
316
- }, void 0, false);
317
- $[10] = t3;
318
- $[11] = t4;
319
- } else {
320
- t4 = $[11];
321
- }
322
- let t5;
323
- if ($[12] !== groups) {
324
- t5 = groups.map(_temp4$1);
325
- $[12] = groups;
326
- $[13] = t5;
327
- } else {
328
- t5 = $[13];
329
- }
330
- let t6;
331
- if ($[14] !== t5) {
332
- t6 = /* @__PURE__ */ jsxDEV("div", {
333
- className: "grid gap-3 sm:grid-cols-2 lg:grid-cols-3",
334
- children: t5
335
- }, void 0, false);
336
- $[14] = t5;
337
- $[15] = t6;
338
- } else {
339
- t6 = $[15];
340
- }
341
- let t7;
342
- if ($[16] !== t4 || $[17] !== t6) {
343
- t7 = /* @__PURE__ */ jsxDEV("section", {
344
- className: "flex flex-col gap-3",
345
- "data-testid": "home-bindings",
346
- children: [t4, t6]
347
- }, void 0, true);
348
- $[16] = t4;
349
- $[17] = t6;
350
- $[18] = t7;
351
- } else {
352
- t7 = $[18];
353
- }
354
- return t7;
355
- };
356
- function _temp$1(binding) {
357
- return /* @__PURE__ */ jsxDEV(Badge, {
358
- variant: "secondary",
359
- children: binding
360
- }, binding, false);
361
- }
362
- function _temp2$1(ns) {
363
- return ns.binding;
364
- }
365
- function _temp3$1(index) {
366
- return index.name;
367
- }
368
- function _temp4$1(group) {
369
- return /* @__PURE__ */ jsxDEV(BindingCard, {
370
- group
371
- }, group.tab, false);
372
- }
373
-
374
- const formatMs = (ms) => {
375
- if (ms < 1e3) {
376
- return `${String(Math.round(ms))}ms`;
377
- }
378
- const digits = ms >= 1e4 ? 0 : 1;
379
- return `${(ms / 1e3).toFixed(digits)}s`;
380
- };
381
- const relativeTime = (ts, now) => {
382
- const seconds = Math.max(0, Math.round((now - ts) / 1e3));
383
- if (seconds < 60) {
384
- return `${String(seconds)}s ago`;
385
- }
386
- const minutes = Math.round(seconds / 60);
387
- if (minutes < 60) {
388
- return `${String(minutes)}m ago`;
389
- }
390
- const hours = Math.round(minutes / 60);
391
- return hours < 24 ? `${String(hours)}h ago` : `${String(Math.round(hours / 24))}d ago`;
392
- };
393
- const SPARKLINE_CONFIG = {
394
- value: {
395
- colors: {
396
- dark: ["var(--foreground)"],
397
- light: ["var(--foreground)"]
398
- },
399
- label: ""
400
- }
401
- };
402
- const Sparkline = (t0) => {
403
- const $ = c(6);
404
- const {
405
- data
406
- } = t0;
407
- let t1;
408
- let t2;
409
- if ($[0] !== data) {
410
- t2 = /* @__PURE__ */ Symbol.for("react.early_return_sentinel");
411
- bb0: {
412
- const bars = data.slice(-16);
413
- if (bars.length < 3) {
414
- t2 = null;
415
- break bb0;
416
- }
417
- t1 = bars.map(_temp);
418
- }
419
- $[0] = data;
420
- $[1] = t1;
421
- $[2] = t2;
422
- } else {
423
- t1 = $[1];
424
- t2 = $[2];
425
- }
426
- if (t2 !== /* @__PURE__ */ Symbol.for("react.early_return_sentinel")) {
427
- return t2;
428
- }
429
- const rows = t1;
430
- let t3;
431
- if ($[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
432
- t3 = /* @__PURE__ */ jsxDEV(Bar, {
433
- dataKey: "value"
434
- }, void 0, false);
435
- $[3] = t3;
436
- } else {
437
- t3 = $[3];
438
- }
439
- let t4;
440
- if ($[4] !== rows) {
441
- t4 = /* @__PURE__ */ jsxDEV("div", {
442
- "aria-hidden": "true",
443
- className: "h-8 w-28",
444
- children: /* @__PURE__ */ jsxDEV(EvilBarChart, {
445
- animationType: "none",
446
- barCategoryGap: 1,
447
- className: "h-8 w-full",
448
- config: SPARKLINE_CONFIG,
449
- data: rows,
450
- children: t3
451
- }, void 0, false)
452
- }, void 0, false);
453
- $[4] = rows;
454
- $[5] = t4;
455
- } else {
456
- t4 = $[5];
457
- }
458
- return t4;
459
- };
460
- const bucketSeries = (history, field) => {
461
- if (history === void 0 || history.length === 0) {
462
- return [];
463
- }
464
- const byBucket = /* @__PURE__ */ new Map();
465
- for (const bucket of history) {
466
- byBucket.set(bucket.bucketMs, (byBucket.get(bucket.bucketMs) ?? 0) + bucket[field]);
467
- }
468
- return [...byBucket.entries()].toSorted(([a], [b]) => a - b).map(([, total]) => total);
469
- };
470
- const seriesDelta = (series, higherIsBetter = true) => {
471
- if (series.length < 4) {
472
- return null;
473
- }
474
- const mid = Math.floor(series.length / 2);
475
- const earlier = series.slice(0, mid).reduce((sum, value) => sum + value, 0);
476
- const recent = series.slice(mid).reduce((sum, value) => sum + value, 0);
477
- if (earlier === 0) {
478
- return null;
479
- }
480
- const pct = (recent - earlier) / earlier * 100;
481
- return {
482
- positive: higherIsBetter ? pct >= 0 : pct <= 0,
483
- text: `${pct >= 0 ? "+" : ""}${pct.toFixed(1)}%`
484
- };
485
- };
486
- const StatCard = (t0) => {
487
- const $ = c(24);
488
- const {
489
- delta,
490
- footer,
491
- label,
492
- trend,
493
- unit,
494
- value
495
- } = t0;
496
- const t = useT();
497
- let t1;
498
- if ($[0] !== label) {
499
- t1 = /* @__PURE__ */ jsxDEV("span", {
500
- className: "font-mono text-[11px] tracking-wide text-muted-foreground uppercase",
501
- children: label
502
- }, void 0, false);
503
- $[0] = label;
504
- $[1] = t1;
505
- } else {
506
- t1 = $[1];
507
- }
508
- let t2;
509
- if ($[2] !== value) {
510
- t2 = /* @__PURE__ */ jsxDEV("span", {
511
- className: "text-2xl font-semibold tabular-nums text-foreground",
512
- children: value
513
- }, void 0, false);
514
- $[2] = value;
515
- $[3] = t2;
516
- } else {
517
- t2 = $[3];
518
- }
519
- let t3;
520
- if ($[4] !== unit) {
521
- t3 = unit !== void 0 && /* @__PURE__ */ jsxDEV("span", {
522
- className: "text-xs text-muted-foreground",
523
- children: unit
524
- }, void 0, false);
525
- $[4] = unit;
526
- $[5] = t3;
527
- } else {
528
- t3 = $[5];
529
- }
530
- let t4;
531
- if ($[6] !== t2 || $[7] !== t3) {
532
- t4 = /* @__PURE__ */ jsxDEV("span", {
533
- className: "flex items-baseline gap-1.5",
534
- children: [t2, t3]
535
- }, void 0, true);
536
- $[6] = t2;
537
- $[7] = t3;
538
- $[8] = t4;
539
- } else {
540
- t4 = $[8];
541
- }
542
- let t5;
543
- if ($[9] !== trend) {
544
- t5 = trend !== void 0 && /* @__PURE__ */ jsxDEV(Sparkline, {
545
- data: trend
546
- }, void 0, false);
547
- $[9] = trend;
548
- $[10] = t5;
549
- } else {
550
- t5 = $[10];
551
- }
552
- let t6;
553
- if ($[11] !== t4 || $[12] !== t5) {
554
- t6 = /* @__PURE__ */ jsxDEV("div", {
555
- className: "flex items-center justify-between gap-3",
556
- children: [t4, t5]
557
- }, void 0, true);
558
- $[11] = t4;
559
- $[12] = t5;
560
- $[13] = t6;
561
- } else {
562
- t6 = $[13];
563
- }
564
- let t7;
565
- if ($[14] !== t1 || $[15] !== t6) {
566
- t7 = /* @__PURE__ */ jsxDEV("div", {
567
- className: "flex flex-col gap-2.5 p-4",
568
- children: [t1, t6]
569
- }, void 0, true);
570
- $[14] = t1;
571
- $[15] = t6;
572
- $[16] = t7;
573
- } else {
574
- t7 = $[16];
575
- }
576
- let t8;
577
- if ($[17] !== delta || $[18] !== footer || $[19] !== t) {
578
- t8 = delta == null ? footer != null && /* @__PURE__ */ jsxDEV("div", {
579
- className: "border-t border-border bg-muted/50 px-4 py-2.5 text-[11px] text-muted-foreground",
580
- children: footer
581
- }, void 0, false) : /* @__PURE__ */ jsxDEV("div", {
582
- className: "border-t border-border bg-muted/50 px-4 py-2.5 text-[11px]",
583
- children: [/* @__PURE__ */ jsxDEV("span", {
584
- className: cn("font-semibold", delta.positive ? "text-success" : "text-destructive"),
585
- children: delta.text
586
- }, void 0, false), " ", /* @__PURE__ */ jsxDEV("span", {
587
- className: "text-muted-foreground",
588
- children: t("vs. prev.")
589
- }, void 0, false)]
590
- }, void 0, true);
591
- $[17] = delta;
592
- $[18] = footer;
593
- $[19] = t;
594
- $[20] = t8;
595
- } else {
596
- t8 = $[20];
597
- }
598
- let t9;
599
- if ($[21] !== t7 || $[22] !== t8) {
600
- t9 = /* @__PURE__ */ jsxDEV(Card, {
601
- className: "justify-between gap-0 py-0",
602
- children: [t7, t8]
603
- }, void 0, true);
604
- $[21] = t7;
605
- $[22] = t8;
606
- $[23] = t9;
607
- } else {
608
- t9 = $[23];
609
- }
610
- return t9;
611
- };
612
- const ChevronRight = () => {
613
- const $ = c(1);
614
- let t0;
615
- if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
616
- t0 = /* @__PURE__ */ jsxDEV("svg", {
617
- "aria-hidden": "true",
618
- className: "size-3.5",
619
- fill: "none",
620
- stroke: "currentColor",
621
- strokeLinecap: "round",
622
- strokeLinejoin: "round",
623
- strokeWidth: 1.8,
624
- viewBox: "0 0 24 24",
625
- children: /* @__PURE__ */ jsxDEV("path", {
626
- d: "m9 6 6 6-6 6"
627
- }, void 0, false)
628
- }, void 0, false);
629
- $[0] = t0;
630
- } else {
631
- t0 = $[0];
632
- }
633
- return t0;
634
- };
635
- const ConnectCard = (t0) => {
636
- const $ = c(7);
637
- const {
638
- command,
639
- label
640
- } = t0;
641
- let t1;
642
- if ($[0] !== label) {
643
- t1 = /* @__PURE__ */ jsxDEV("div", {
644
- className: "p-4",
645
- children: /* @__PURE__ */ jsxDEV("span", {
646
- className: "text-sm font-medium text-foreground",
647
- children: label
648
- }, void 0, false)
649
- }, void 0, false);
650
- $[0] = label;
651
- $[1] = t1;
652
- } else {
653
- t1 = $[1];
654
- }
655
- let t2;
656
- if ($[2] !== command) {
657
- t2 = /* @__PURE__ */ jsxDEV("div", {
658
- className: "border-t border-border bg-muted/50 px-4 py-2.5",
659
- children: /* @__PURE__ */ jsxDEV("code", {
660
- className: "font-mono text-xs text-muted-foreground",
661
- children: command
662
- }, void 0, false)
663
- }, void 0, false);
664
- $[2] = command;
665
- $[3] = t2;
666
- } else {
667
- t2 = $[3];
668
- }
669
- let t3;
670
- if ($[4] !== t1 || $[5] !== t2) {
671
- t3 = /* @__PURE__ */ jsxDEV(Card, {
672
- className: "justify-between gap-0 py-0",
673
- children: [t1, t2]
674
- }, void 0, true);
675
- $[4] = t1;
676
- $[5] = t2;
677
- $[6] = t3;
678
- } else {
679
- t3 = $[6];
680
- }
681
- return t3;
682
- };
683
- const AdvisorCard = (t0) => {
684
- const $ = c(18);
685
- const {
686
- count,
687
- onView,
688
- testId,
689
- title
690
- } = t0;
691
- const t = useT();
692
- let t1;
693
- if ($[0] !== title) {
694
- t1 = /* @__PURE__ */ jsxDEV("span", {
695
- className: "font-mono text-[11px] tracking-wide text-muted-foreground uppercase",
696
- children: title
697
- }, void 0, false);
698
- $[0] = title;
699
- $[1] = t1;
700
- } else {
701
- t1 = $[1];
702
- }
703
- let t2;
704
- if ($[2] !== count || $[3] !== t) {
705
- t2 = count === null ? /* @__PURE__ */ jsxDEV("span", {
706
- className: "text-xs text-muted-foreground",
707
- children: t("No data yet")
708
- }, void 0, false) : /* @__PURE__ */ jsxDEV(Badge, {
709
- variant: count > 0 ? "destructive" : "success",
710
- children: count > 0 ? count : t("All clear")
711
- }, void 0, false);
712
- $[2] = count;
713
- $[3] = t;
714
- $[4] = t2;
715
- } else {
716
- t2 = $[4];
717
- }
718
- let t3;
719
- if ($[5] !== t1 || $[6] !== t2) {
720
- t3 = /* @__PURE__ */ jsxDEV("div", {
721
- className: "flex items-start justify-between gap-2 p-4",
722
- children: [t1, t2]
723
- }, void 0, true);
724
- $[5] = t1;
725
- $[6] = t2;
726
- $[7] = t3;
727
- } else {
728
- t3 = $[7];
729
- }
730
- let t4;
731
- if ($[8] !== t) {
732
- t4 = t("View");
733
- $[8] = t;
734
- $[9] = t4;
735
- } else {
736
- t4 = $[9];
737
- }
738
- let t5;
739
- if ($[10] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
740
- t5 = /* @__PURE__ */ jsxDEV(ChevronRight, {}, void 0, false);
741
- $[10] = t5;
742
- } else {
743
- t5 = $[10];
744
- }
745
- let t6;
746
- if ($[11] !== onView || $[12] !== t4) {
747
- t6 = /* @__PURE__ */ jsxDEV("button", {
748
- className: "flex items-center gap-1 border-t border-border bg-muted/50 px-4 py-2.5 text-[12px] font-medium text-foreground outline-none transition-colors hover:bg-muted focus-visible:bg-muted",
749
- onClick: onView,
750
- type: "button",
751
- children: [t4, t5]
752
- }, void 0, true);
753
- $[11] = onView;
754
- $[12] = t4;
755
- $[13] = t6;
756
- } else {
757
- t6 = $[13];
758
- }
759
- let t7;
760
- if ($[14] !== t3 || $[15] !== t6 || $[16] !== testId) {
761
- t7 = /* @__PURE__ */ jsxDEV(Card, {
762
- className: "justify-between gap-0 py-0",
763
- "data-testid": testId,
764
- children: [t3, t6]
765
- }, void 0, true);
766
- $[14] = t3;
767
- $[15] = t6;
768
- $[16] = testId;
769
- $[17] = t7;
770
- } else {
771
- t7 = $[17];
772
- }
773
- return t7;
774
- };
775
- const TopFunctionsCard = (t0) => {
776
- const $ = c(7);
777
- const {
778
- functions
779
- } = t0;
780
- const t = useT();
781
- let t1;
782
- if ($[0] !== functions || $[1] !== t) {
783
- const top = [...functions].toSorted(_temp2).slice(0, 5);
784
- let t2;
785
- if ($[3] !== t) {
786
- t2 = t("Top functions");
787
- $[3] = t;
788
- $[4] = t2;
789
- } else {
790
- t2 = $[4];
791
- }
792
- let t3;
793
- if ($[5] !== t2) {
794
- t3 = /* @__PURE__ */ jsxDEV("div", {
795
- className: "border-b border-border px-4 py-3",
796
- children: /* @__PURE__ */ jsxDEV("span", {
797
- className: "font-mono text-[11px] tracking-wide text-muted-foreground uppercase",
798
- children: t2
799
- }, void 0, false)
800
- }, void 0, false);
801
- $[5] = t2;
802
- $[6] = t3;
803
- } else {
804
- t3 = $[6];
805
- }
806
- t1 = /* @__PURE__ */ jsxDEV(Card, {
807
- className: "gap-0 py-0",
808
- "data-testid": "home-top-functions",
809
- children: [t3, top.length === 0 ? /* @__PURE__ */ jsxDEV("p", {
810
- className: "px-4 py-8 text-center text-xs text-muted-foreground",
811
- children: t("No functions called yet.")
812
- }, void 0, false) : /* @__PURE__ */ jsxDEV("div", {
813
- className: "divide-y divide-border",
814
- children: [/* @__PURE__ */ jsxDEV("div", {
815
- className: "grid grid-cols-[1fr_auto_auto_auto] gap-4 px-4 py-1.5 font-mono text-[10px] tracking-wide text-muted-foreground uppercase",
816
- children: [/* @__PURE__ */ jsxDEV("span", {
817
- children: t("Function")
818
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
819
- className: "text-end",
820
- children: t("Calls")
821
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
822
- className: "w-12 text-end",
823
- children: t("Avg")
824
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
825
- className: "w-8 text-end",
826
- children: t("Err")
827
- }, void 0, false)]
828
- }, void 0, true), top.map(_temp3)]
829
- }, void 0, true)]
830
- }, void 0, true);
831
- $[0] = functions;
832
- $[1] = t;
833
- $[2] = t1;
834
- } else {
835
- t1 = $[2];
836
- }
837
- return t1;
838
- };
839
- const LiveConnectionsCard = (t0) => {
840
- const $ = c(26);
841
- const {
842
- subs
843
- } = t0;
844
- const t = useT();
845
- let t1;
846
- if ($[0] !== t) {
847
- t1 = t("Live connections");
848
- $[0] = t;
849
- $[1] = t1;
850
- } else {
851
- t1 = $[1];
852
- }
853
- let t2;
854
- if ($[2] !== t1) {
855
- t2 = /* @__PURE__ */ jsxDEV("span", {
856
- className: "font-mono text-[11px] tracking-wide text-muted-foreground uppercase",
857
- children: t1
858
- }, void 0, false);
859
- $[2] = t1;
860
- $[3] = t2;
861
- } else {
862
- t2 = $[3];
863
- }
864
- const t3 = subs?.totalConnections ?? 0;
865
- let t4;
866
- if ($[4] !== t3) {
867
- t4 = t3.toLocaleString();
868
- $[4] = t3;
869
- $[5] = t4;
870
- } else {
871
- t4 = $[5];
872
- }
873
- let t5;
874
- if ($[6] !== t4) {
875
- t5 = /* @__PURE__ */ jsxDEV("span", {
876
- className: "text-2xl font-semibold tabular-nums text-foreground",
877
- children: t4
878
- }, void 0, false);
879
- $[6] = t4;
880
- $[7] = t5;
881
- } else {
882
- t5 = $[7];
883
- }
884
- let t6;
885
- if ($[8] !== t) {
886
- t6 = t("sockets");
887
- $[8] = t;
888
- $[9] = t6;
889
- } else {
890
- t6 = $[9];
891
- }
892
- let t7;
893
- if ($[10] !== t6) {
894
- t7 = /* @__PURE__ */ jsxDEV("span", {
895
- className: "text-xs text-muted-foreground",
896
- children: t6
897
- }, void 0, false);
898
- $[10] = t6;
899
- $[11] = t7;
900
- } else {
901
- t7 = $[11];
902
- }
903
- let t8;
904
- if ($[12] !== t5 || $[13] !== t7) {
905
- t8 = /* @__PURE__ */ jsxDEV("span", {
906
- className: "flex items-baseline gap-1.5",
907
- children: [t5, t7]
908
- }, void 0, true);
909
- $[12] = t5;
910
- $[13] = t7;
911
- $[14] = t8;
912
- } else {
913
- t8 = $[14];
914
- }
915
- const t9 = subs?.totalSubscriptions ?? 0;
916
- let t10;
917
- if ($[15] !== t9) {
918
- t10 = t9.toLocaleString();
919
- $[15] = t9;
920
- $[16] = t10;
921
- } else {
922
- t10 = $[16];
923
- }
924
- let t11;
925
- if ($[17] !== t) {
926
- t11 = t("active subscriptions");
927
- $[17] = t;
928
- $[18] = t11;
929
- } else {
930
- t11 = $[18];
931
- }
932
- let t12;
933
- if ($[19] !== t10 || $[20] !== t11) {
934
- t12 = /* @__PURE__ */ jsxDEV("span", {
935
- className: "text-[11px] text-muted-foreground",
936
- children: [t10, " ", t11]
937
- }, void 0, true);
938
- $[19] = t10;
939
- $[20] = t11;
940
- $[21] = t12;
941
- } else {
942
- t12 = $[21];
943
- }
944
- let t13;
945
- if ($[22] !== t12 || $[23] !== t2 || $[24] !== t8) {
946
- t13 = /* @__PURE__ */ jsxDEV(Card, {
947
- "data-testid": "home-live-connections",
948
- children: /* @__PURE__ */ jsxDEV(CardContent, {
949
- className: "flex flex-col gap-2.5 py-4",
950
- children: [t2, t8, t12]
951
- }, void 0, true)
952
- }, void 0, false);
953
- $[22] = t12;
954
- $[23] = t2;
955
- $[24] = t8;
956
- $[25] = t13;
957
- } else {
958
- t13 = $[25];
959
- }
960
- return t13;
961
- };
962
- const RecentActivityCard = (t0) => {
963
- const $ = c(7);
964
- const {
965
- entries
966
- } = t0;
967
- const t = useT();
968
- let t1;
969
- if ($[0] !== entries || $[1] !== t) {
970
- const now = Date.now();
971
- let t2;
972
- if ($[3] !== t) {
973
- t2 = t("Recent activity");
974
- $[3] = t;
975
- $[4] = t2;
976
- } else {
977
- t2 = $[4];
978
- }
979
- let t3;
980
- if ($[5] !== t2) {
981
- t3 = /* @__PURE__ */ jsxDEV("div", {
982
- className: "border-b border-border px-4 py-3",
983
- children: /* @__PURE__ */ jsxDEV("span", {
984
- className: "font-mono text-[11px] tracking-wide text-muted-foreground uppercase",
985
- children: t2
986
- }, void 0, false)
987
- }, void 0, false);
988
- $[5] = t2;
989
- $[6] = t3;
990
- } else {
991
- t3 = $[6];
992
- }
993
- t1 = /* @__PURE__ */ jsxDEV(Card, {
994
- className: "gap-0 py-0",
995
- "data-testid": "home-recent-activity",
996
- children: [t3, entries.length === 0 ? /* @__PURE__ */ jsxDEV("p", {
997
- className: "px-4 py-8 text-center text-xs text-muted-foreground",
998
- children: t("No recent activity.")
999
- }, void 0, false) : /* @__PURE__ */ jsxDEV("ul", {
1000
- className: "divide-y divide-border",
1001
- children: entries.slice(0, 5).map((entry) => /* @__PURE__ */ jsxDEV("li", {
1002
- className: "flex items-center justify-between gap-3 px-4 py-2 text-[13px]",
1003
- children: [/* @__PURE__ */ jsxDEV("span", {
1004
- className: "flex min-w-0 items-center gap-2",
1005
- children: [/* @__PURE__ */ jsxDEV("span", {
1006
- "aria-hidden": "true",
1007
- className: "size-1.5 shrink-0 rounded-full bg-muted-foreground/40"
1008
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
1009
- className: "truncate text-foreground",
1010
- children: [entry.op, entry.table !== void 0 && /* @__PURE__ */ jsxDEV("span", {
1011
- className: "text-muted-foreground",
1012
- children: [" · ", entry.table, entry.id === void 0 ? "" : `#${entry.id}`]
1013
- }, void 0, true)]
1014
- }, void 0, true)]
1015
- }, void 0, true), /* @__PURE__ */ jsxDEV("span", {
1016
- className: "shrink-0 text-xs tabular-nums text-muted-foreground",
1017
- children: relativeTime(entry.ts, now)
1018
- }, void 0, false)]
1019
- }, entry.seq, true))
1020
- }, void 0, false)]
1021
- }, void 0, true);
1022
- $[0] = entries;
1023
- $[1] = t;
1024
- $[2] = t1;
1025
- } else {
1026
- t1 = $[2];
1027
- }
1028
- return t1;
1029
- };
1030
- const averageLatencyMs = (functions) => {
1031
- const calls = functions.reduce((sum, function_) => sum + function_.calls, 0);
1032
- if (calls === 0) {
1033
- return null;
1034
- }
1035
- return functions.reduce((sum, function_) => sum + function_.totalDurationMs, 0) / calls;
1036
- };
1037
- const HomePanel = (t0) => {
1038
- const $ = c(150);
1039
- const {
1040
- initialShardKey
1041
- } = t0;
1042
- const t = useT();
1043
- const navigate = useNavigate();
1044
- const shard = initialShardKey ?? "";
1045
- let t1;
1046
- if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1047
- t1 = {};
1048
- $[0] = t1;
1049
- } else {
1050
- t1 = $[0];
1051
- }
1052
- let t2;
1053
- if ($[1] !== shard) {
1054
- t2 = {
1055
- shardKey: shard
1056
- };
1057
- $[1] = shard;
1058
- $[2] = t2;
1059
- } else {
1060
- t2 = $[2];
1061
- }
1062
- const metricsQuery = useAdminQuery(ADMIN_FUNCTIONS.getMetrics, t1, t2);
1063
- let t3;
1064
- if ($[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1065
- t3 = {};
1066
- $[3] = t3;
1067
- } else {
1068
- t3 = $[3];
1069
- }
1070
- let t4;
1071
- if ($[4] !== shard) {
1072
- t4 = {
1073
- shardKey: shard
1074
- };
1075
- $[4] = shard;
1076
- $[5] = t4;
1077
- } else {
1078
- t4 = $[5];
1079
- }
1080
- const statsQuery = useAdminQuery(ADMIN_FUNCTIONS.getFunctionStats, t3, t4);
1081
- let t5;
1082
- let t6;
1083
- if ($[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1084
- t5 = {};
1085
- t6 = {
1086
- shardKey: ""
1087
- };
1088
- $[6] = t5;
1089
- $[7] = t6;
1090
- } else {
1091
- t5 = $[6];
1092
- t6 = $[7];
1093
- }
1094
- const auditQuery = useAdminQuery(ADMIN_FUNCTIONS.getSecurityAudit, t5, t6);
1095
- let t7;
1096
- if ($[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1097
- t7 = {};
1098
- $[8] = t7;
1099
- } else {
1100
- t7 = $[8];
1101
- }
1102
- let t8;
1103
- if ($[9] !== shard) {
1104
- t8 = {
1105
- shardKey: shard
1106
- };
1107
- $[9] = shard;
1108
- $[10] = t8;
1109
- } else {
1110
- t8 = $[10];
1111
- }
1112
- const subscriptionsQuery = useAdminQuery(ADMIN_FUNCTIONS.listSubscriptions, t7, t8);
1113
- let t9;
1114
- if ($[11] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1115
- t9 = {};
1116
- $[11] = t9;
1117
- } else {
1118
- t9 = $[11];
1119
- }
1120
- let t10;
1121
- if ($[12] !== shard) {
1122
- t10 = {
1123
- shardKey: shard
1124
- };
1125
- $[12] = shard;
1126
- $[13] = t10;
1127
- } else {
1128
- t10 = $[13];
1129
- }
1130
- const auditLogQuery = useAdminQuery(ADMIN_FUNCTIONS.getAuditLog, t9, t10);
1131
- const metrics = metricsQuery.data ?? null;
1132
- let T0;
1133
- let activity;
1134
- let cacheHitRate;
1135
- let functions;
1136
- let performanceCount;
1137
- let securityCount;
1138
- let subscriptions;
1139
- let t11;
1140
- let t12;
1141
- let t13;
1142
- let t14;
1143
- let t15;
1144
- let t16;
1145
- let t17;
1146
- let t18;
1147
- let t19;
1148
- let viewPerformance;
1149
- let viewSecurity;
1150
- if ($[14] !== auditLogQuery.data || $[15] !== auditQuery.data || $[16] !== metrics || $[17] !== metricsQuery.data || $[18] !== navigate || $[19] !== statsQuery.data || $[20] !== subscriptionsQuery.data || $[21] !== t) {
1151
- functions = Array.isArray(statsQuery.data?.functions) ? statsQuery.data.functions : [];
1152
- subscriptions = subscriptionsQuery.data ?? null;
1153
- let t202;
1154
- if ($[40] !== auditLogQuery.data) {
1155
- t202 = Array.isArray(auditLogQuery.data?.entries) ? auditLogQuery.data.entries : [];
1156
- $[40] = auditLogQuery.data;
1157
- $[41] = t202;
1158
- } else {
1159
- t202 = $[41];
1160
- }
1161
- activity = t202;
1162
- performanceCount = metricsQuery.data === void 0 || statsQuery.data === void 0 ? null : deriveInsights(metrics, functions).length;
1163
- securityCount = Array.isArray(auditQuery.data?.findings) ? auditQuery.data.findings.length : null;
1164
- let t212;
1165
- if ($[42] !== navigate) {
1166
- t212 = () => {
1167
- fireAndForget(navigate({
1168
- to: "/security"
1169
- }));
1170
- };
1171
- $[42] = navigate;
1172
- $[43] = t212;
1173
- } else {
1174
- t212 = $[43];
1175
- }
1176
- viewSecurity = t212;
1177
- let t222;
1178
- if ($[44] !== navigate) {
1179
- t222 = () => {
1180
- fireAndForget(navigate({
1181
- to: "/insights"
1182
- }));
1183
- };
1184
- $[44] = navigate;
1185
- $[45] = t222;
1186
- } else {
1187
- t222 = $[45];
1188
- }
1189
- viewPerformance = t222;
1190
- const requestSeries = bucketSeries(metrics?.history, "calls");
1191
- const errorSeries = bucketSeries(metrics?.history, "errors");
1192
- const avgLatency = averageLatencyMs(functions);
1193
- const maxLatency = Math.max(0, ...functions.map(_temp4));
1194
- const cache = metrics?.cache;
1195
- let t232;
1196
- if ($[46] !== cache) {
1197
- t232 = cache != null && cache.hits + cache.misses > 0 ? Math.round(cache.hits / (cache.hits + cache.misses) * 100) : null;
1198
- $[46] = cache;
1199
- $[47] = t232;
1200
- } else {
1201
- t232 = $[47];
1202
- }
1203
- cacheHitRate = t232;
1204
- t18 = "flex flex-col gap-6";
1205
- t19 = "lunora-home";
1206
- t14 = "grid gap-3 sm:grid-cols-2 xl:grid-cols-4";
1207
- t15 = "home-health";
1208
- const t242 = seriesDelta(requestSeries);
1209
- let t252;
1210
- if ($[48] !== t) {
1211
- t252 = t("Requests");
1212
- $[48] = t;
1213
- $[49] = t252;
1214
- } else {
1215
- t252 = $[49];
1216
- }
1217
- const t262 = metrics?.requests ?? 0;
1218
- let t272;
1219
- if ($[50] !== t262) {
1220
- t272 = t262.toLocaleString();
1221
- $[50] = t262;
1222
- $[51] = t272;
1223
- } else {
1224
- t272 = $[51];
1225
- }
1226
- if ($[52] !== requestSeries || $[53] !== t242 || $[54] !== t252 || $[55] !== t272) {
1227
- t16 = /* @__PURE__ */ jsxDEV(StatCard, {
1228
- delta: t242,
1229
- label: t252,
1230
- trend: requestSeries,
1231
- value: t272
1232
- }, void 0, false);
1233
- $[52] = requestSeries;
1234
- $[53] = t242;
1235
- $[54] = t252;
1236
- $[55] = t272;
1237
- $[56] = t16;
1238
- } else {
1239
- t16 = $[56];
1240
- }
1241
- const t282 = seriesDelta(errorSeries, false);
1242
- let t292;
1243
- if ($[57] !== t) {
1244
- t292 = t("Errors");
1245
- $[57] = t;
1246
- $[58] = t292;
1247
- } else {
1248
- t292 = $[58];
1249
- }
1250
- const t302 = metrics?.errors ?? 0;
1251
- let t312;
1252
- if ($[59] !== t302) {
1253
- t312 = t302.toLocaleString();
1254
- $[59] = t302;
1255
- $[60] = t312;
1256
- } else {
1257
- t312 = $[60];
1258
- }
1259
- if ($[61] !== errorSeries || $[62] !== t282 || $[63] !== t292 || $[64] !== t312) {
1260
- t17 = /* @__PURE__ */ jsxDEV(StatCard, {
1261
- delta: t282,
1262
- label: t292,
1263
- trend: errorSeries,
1264
- value: t312
1265
- }, void 0, false);
1266
- $[61] = errorSeries;
1267
- $[62] = t282;
1268
- $[63] = t292;
1269
- $[64] = t312;
1270
- $[65] = t17;
1271
- } else {
1272
- t17 = $[65];
1273
- }
1274
- T0 = StatCard;
1275
- if ($[66] !== maxLatency || $[67] !== t) {
1276
- t11 = maxLatency > 0 ? `${t("max")} ${formatMs(maxLatency)}` : void 0;
1277
- $[66] = maxLatency;
1278
- $[67] = t;
1279
- $[68] = t11;
1280
- } else {
1281
- t11 = $[68];
1282
- }
1283
- if ($[69] !== t) {
1284
- t12 = t("Avg latency");
1285
- $[69] = t;
1286
- $[70] = t12;
1287
- } else {
1288
- t12 = $[70];
1289
- }
1290
- t13 = avgLatency === null ? "—" : formatMs(avgLatency);
1291
- $[14] = auditLogQuery.data;
1292
- $[15] = auditQuery.data;
1293
- $[16] = metrics;
1294
- $[17] = metricsQuery.data;
1295
- $[18] = navigate;
1296
- $[19] = statsQuery.data;
1297
- $[20] = subscriptionsQuery.data;
1298
- $[21] = t;
1299
- $[22] = T0;
1300
- $[23] = activity;
1301
- $[24] = cacheHitRate;
1302
- $[25] = functions;
1303
- $[26] = performanceCount;
1304
- $[27] = securityCount;
1305
- $[28] = subscriptions;
1306
- $[29] = t11;
1307
- $[30] = t12;
1308
- $[31] = t13;
1309
- $[32] = t14;
1310
- $[33] = t15;
1311
- $[34] = t16;
1312
- $[35] = t17;
1313
- $[36] = t18;
1314
- $[37] = t19;
1315
- $[38] = viewPerformance;
1316
- $[39] = viewSecurity;
1317
- } else {
1318
- T0 = $[22];
1319
- activity = $[23];
1320
- cacheHitRate = $[24];
1321
- functions = $[25];
1322
- performanceCount = $[26];
1323
- securityCount = $[27];
1324
- subscriptions = $[28];
1325
- t11 = $[29];
1326
- t12 = $[30];
1327
- t13 = $[31];
1328
- t14 = $[32];
1329
- t15 = $[33];
1330
- t16 = $[34];
1331
- t17 = $[35];
1332
- t18 = $[36];
1333
- t19 = $[37];
1334
- viewPerformance = $[38];
1335
- viewSecurity = $[39];
1336
- }
1337
- let t20;
1338
- if ($[71] !== T0 || $[72] !== t11 || $[73] !== t12 || $[74] !== t13) {
1339
- t20 = /* @__PURE__ */ jsxDEV(T0, {
1340
- footer: t11,
1341
- label: t12,
1342
- value: t13
1343
- }, void 0, false);
1344
- $[71] = T0;
1345
- $[72] = t11;
1346
- $[73] = t12;
1347
- $[74] = t13;
1348
- $[75] = t20;
1349
- } else {
1350
- t20 = $[75];
1351
- }
1352
- let t21;
1353
- if ($[76] !== cacheHitRate || $[77] !== t) {
1354
- t21 = cacheHitRate === null ? void 0 : `${String(cacheHitRate)}% ${t("cache hit")}`;
1355
- $[76] = cacheHitRate;
1356
- $[77] = t;
1357
- $[78] = t21;
1358
- } else {
1359
- t21 = $[78];
1360
- }
1361
- let t22;
1362
- if ($[79] !== t) {
1363
- t22 = t("Database size");
1364
- $[79] = t;
1365
- $[80] = t22;
1366
- } else {
1367
- t22 = $[80];
1368
- }
1369
- const t23 = metrics?.databaseSize ?? null;
1370
- let t24;
1371
- if ($[81] !== t23) {
1372
- t24 = formatBytes(t23);
1373
- $[81] = t23;
1374
- $[82] = t24;
1375
- } else {
1376
- t24 = $[82];
1377
- }
1378
- let t25;
1379
- if ($[83] !== t21 || $[84] !== t22 || $[85] !== t24) {
1380
- t25 = /* @__PURE__ */ jsxDEV(StatCard, {
1381
- footer: t21,
1382
- label: t22,
1383
- value: t24
1384
- }, void 0, false);
1385
- $[83] = t21;
1386
- $[84] = t22;
1387
- $[85] = t24;
1388
- $[86] = t25;
1389
- } else {
1390
- t25 = $[86];
1391
- }
1392
- let t26;
1393
- if ($[87] !== t14 || $[88] !== t15 || $[89] !== t16 || $[90] !== t17 || $[91] !== t20 || $[92] !== t25) {
1394
- t26 = /* @__PURE__ */ jsxDEV("div", {
1395
- className: t14,
1396
- "data-testid": t15,
1397
- children: [t16, t17, t20, t25]
1398
- }, void 0, true);
1399
- $[87] = t14;
1400
- $[88] = t15;
1401
- $[89] = t16;
1402
- $[90] = t17;
1403
- $[91] = t20;
1404
- $[92] = t25;
1405
- $[93] = t26;
1406
- } else {
1407
- t26 = $[93];
1408
- }
1409
- let t27;
1410
- if ($[94] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1411
- t27 = /* @__PURE__ */ jsxDEV(BindingsOverview, {}, void 0, false);
1412
- $[94] = t27;
1413
- } else {
1414
- t27 = $[94];
1415
- }
1416
- let t28;
1417
- if ($[95] !== functions) {
1418
- t28 = /* @__PURE__ */ jsxDEV("div", {
1419
- className: "lg:col-span-2",
1420
- children: /* @__PURE__ */ jsxDEV(TopFunctionsCard, {
1421
- functions
1422
- }, void 0, false)
1423
- }, void 0, false);
1424
- $[95] = functions;
1425
- $[96] = t28;
1426
- } else {
1427
- t28 = $[96];
1428
- }
1429
- let t29;
1430
- if ($[97] !== subscriptions) {
1431
- t29 = /* @__PURE__ */ jsxDEV(LiveConnectionsCard, {
1432
- subs: subscriptions
1433
- }, void 0, false);
1434
- $[97] = subscriptions;
1435
- $[98] = t29;
1436
- } else {
1437
- t29 = $[98];
1438
- }
1439
- let t30;
1440
- if ($[99] !== activity) {
1441
- t30 = /* @__PURE__ */ jsxDEV(RecentActivityCard, {
1442
- entries: activity
1443
- }, void 0, false);
1444
- $[99] = activity;
1445
- $[100] = t30;
1446
- } else {
1447
- t30 = $[100];
1448
- }
1449
- let t31;
1450
- if ($[101] !== t29 || $[102] !== t30) {
1451
- t31 = /* @__PURE__ */ jsxDEV("div", {
1452
- className: "flex flex-col gap-3",
1453
- children: [t29, t30]
1454
- }, void 0, true);
1455
- $[101] = t29;
1456
- $[102] = t30;
1457
- $[103] = t31;
1458
- } else {
1459
- t31 = $[103];
1460
- }
1461
- let t32;
1462
- if ($[104] !== t28 || $[105] !== t31) {
1463
- t32 = /* @__PURE__ */ jsxDEV("div", {
1464
- className: "grid gap-3 lg:grid-cols-3",
1465
- children: [t28, t31]
1466
- }, void 0, true);
1467
- $[104] = t28;
1468
- $[105] = t31;
1469
- $[106] = t32;
1470
- } else {
1471
- t32 = $[106];
1472
- }
1473
- let t33;
1474
- if ($[107] !== t) {
1475
- t33 = t("Advisors");
1476
- $[107] = t;
1477
- $[108] = t33;
1478
- } else {
1479
- t33 = $[108];
1480
- }
1481
- let t34;
1482
- if ($[109] !== t33) {
1483
- t34 = /* @__PURE__ */ jsxDEV("h2", {
1484
- className: "text-sm font-semibold tracking-tight text-foreground",
1485
- children: t33
1486
- }, void 0, false);
1487
- $[109] = t33;
1488
- $[110] = t34;
1489
- } else {
1490
- t34 = $[110];
1491
- }
1492
- let t35;
1493
- if ($[111] !== performanceCount || $[112] !== securityCount || $[113] !== t || $[114] !== viewPerformance || $[115] !== viewSecurity) {
1494
- t35 = securityCount === 0 && performanceCount === 0 ? /* @__PURE__ */ jsxDEV(EmptyState, {
1495
- description: t("No security or performance issues detected."),
1496
- icon: /* @__PURE__ */ jsxDEV("svg", {
1497
- "aria-hidden": "true",
1498
- fill: "none",
1499
- stroke: "currentColor",
1500
- strokeLinecap: "round",
1501
- strokeLinejoin: "round",
1502
- strokeWidth: 1.6,
1503
- viewBox: "0 0 24 24",
1504
- children: [/* @__PURE__ */ jsxDEV("path", {
1505
- d: "M12 3 4 6v5c0 5 3.4 8.5 8 10 4.6-1.5 8-5 8-10V6l-8-3Z"
1506
- }, void 0, false), /* @__PURE__ */ jsxDEV("path", {
1507
- d: "m9 12 2 2 4-4"
1508
- }, void 0, false)]
1509
- }, void 0, true),
1510
- testId: "home-advisors-clear",
1511
- title: t("No issues found")
1512
- }, void 0, false) : /* @__PURE__ */ jsxDEV("div", {
1513
- className: "grid gap-3 sm:grid-cols-2",
1514
- children: [/* @__PURE__ */ jsxDEV(AdvisorCard, {
1515
- count: securityCount,
1516
- onView: viewSecurity,
1517
- testId: "home-security",
1518
- title: t("Security findings")
1519
- }, void 0, false), /* @__PURE__ */ jsxDEV(AdvisorCard, {
1520
- count: performanceCount,
1521
- onView: viewPerformance,
1522
- testId: "home-performance",
1523
- title: t("Performance issues")
1524
- }, void 0, false)]
1525
- }, void 0, true);
1526
- $[111] = performanceCount;
1527
- $[112] = securityCount;
1528
- $[113] = t;
1529
- $[114] = viewPerformance;
1530
- $[115] = viewSecurity;
1531
- $[116] = t35;
1532
- } else {
1533
- t35 = $[116];
1534
- }
1535
- let t36;
1536
- if ($[117] !== t34 || $[118] !== t35) {
1537
- t36 = /* @__PURE__ */ jsxDEV("section", {
1538
- className: "flex flex-col gap-3",
1539
- "data-testid": "home-advisors",
1540
- children: [t34, t35]
1541
- }, void 0, true);
1542
- $[117] = t34;
1543
- $[118] = t35;
1544
- $[119] = t36;
1545
- } else {
1546
- t36 = $[119];
1547
- }
1548
- let t37;
1549
- if ($[120] !== t) {
1550
- t37 = t("Get connected");
1551
- $[120] = t;
1552
- $[121] = t37;
1553
- } else {
1554
- t37 = $[121];
1555
- }
1556
- let t38;
1557
- if ($[122] !== t37) {
1558
- t38 = /* @__PURE__ */ jsxDEV("h2", {
1559
- className: "text-sm font-semibold tracking-tight text-foreground",
1560
- children: t37
1561
- }, void 0, false);
1562
- $[122] = t37;
1563
- $[123] = t38;
1564
- } else {
1565
- t38 = $[123];
1566
- }
1567
- let t39;
1568
- if ($[124] !== t) {
1569
- t39 = t("Client SDK");
1570
- $[124] = t;
1571
- $[125] = t39;
1572
- } else {
1573
- t39 = $[125];
1574
- }
1575
- let t40;
1576
- if ($[126] !== t39) {
1577
- t40 = /* @__PURE__ */ jsxDEV(ConnectCard, {
1578
- command: "npm i @lunora/client",
1579
- label: t39
1580
- }, void 0, false);
1581
- $[126] = t39;
1582
- $[127] = t40;
1583
- } else {
1584
- t40 = $[127];
1585
- }
1586
- let t41;
1587
- if ($[128] !== t) {
1588
- t41 = t("React");
1589
- $[128] = t;
1590
- $[129] = t41;
1591
- } else {
1592
- t41 = $[129];
1593
- }
1594
- let t42;
1595
- if ($[130] !== t41) {
1596
- t42 = /* @__PURE__ */ jsxDEV(ConnectCard, {
1597
- command: "npm i @lunora/react",
1598
- label: t41
1599
- }, void 0, false);
1600
- $[130] = t41;
1601
- $[131] = t42;
1602
- } else {
1603
- t42 = $[131];
1604
- }
1605
- let t43;
1606
- if ($[132] !== t) {
1607
- t43 = t("CLI");
1608
- $[132] = t;
1609
- $[133] = t43;
1610
- } else {
1611
- t43 = $[133];
1612
- }
1613
- let t44;
1614
- if ($[134] !== t43) {
1615
- t44 = /* @__PURE__ */ jsxDEV(ConnectCard, {
1616
- command: "lunora dev",
1617
- label: t43
1618
- }, void 0, false);
1619
- $[134] = t43;
1620
- $[135] = t44;
1621
- } else {
1622
- t44 = $[135];
1623
- }
1624
- let t45;
1625
- if ($[136] !== t40 || $[137] !== t42 || $[138] !== t44) {
1626
- t45 = /* @__PURE__ */ jsxDEV("div", {
1627
- className: "grid gap-3 sm:grid-cols-3",
1628
- children: [t40, t42, t44]
1629
- }, void 0, true);
1630
- $[136] = t40;
1631
- $[137] = t42;
1632
- $[138] = t44;
1633
- $[139] = t45;
1634
- } else {
1635
- t45 = $[139];
1636
- }
1637
- let t46;
1638
- if ($[140] !== t38 || $[141] !== t45) {
1639
- t46 = /* @__PURE__ */ jsxDEV("section", {
1640
- className: "flex flex-col gap-3",
1641
- "data-testid": "home-get-connected",
1642
- children: [t38, t45]
1643
- }, void 0, true);
1644
- $[140] = t38;
1645
- $[141] = t45;
1646
- $[142] = t46;
1647
- } else {
1648
- t46 = $[142];
1649
- }
1650
- let t47;
1651
- if ($[143] !== t18 || $[144] !== t19 || $[145] !== t26 || $[146] !== t32 || $[147] !== t36 || $[148] !== t46) {
1652
- t47 = /* @__PURE__ */ jsxDEV("div", {
1653
- className: t18,
1654
- "data-testid": t19,
1655
- children: [t26, t27, t32, t36, t46]
1656
- }, void 0, true);
1657
- $[143] = t18;
1658
- $[144] = t19;
1659
- $[145] = t26;
1660
- $[146] = t32;
1661
- $[147] = t36;
1662
- $[148] = t46;
1663
- $[149] = t47;
1664
- } else {
1665
- t47 = $[149];
1666
- }
1667
- return t47;
1668
- };
1669
- function _temp(value, index) {
1670
- return {
1671
- index,
1672
- value
1673
- };
1674
- }
1675
- function _temp2(a, b) {
1676
- return b.calls - a.calls;
1677
- }
1678
- function _temp3(function_) {
1679
- return /* @__PURE__ */ jsxDEV("div", {
1680
- className: "grid grid-cols-[1fr_auto_auto_auto] items-center gap-4 px-4 py-2 text-[13px]",
1681
- children: [/* @__PURE__ */ jsxDEV("span", {
1682
- className: "truncate font-mono text-xs text-foreground",
1683
- children: function_.path
1684
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
1685
- className: "text-end tabular-nums",
1686
- children: function_.calls.toLocaleString()
1687
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
1688
- className: "w-12 text-end tabular-nums text-muted-foreground",
1689
- children: formatMs(function_.calls > 0 ? function_.totalDurationMs / function_.calls : 0)
1690
- }, void 0, false), /* @__PURE__ */ jsxDEV("span", {
1691
- className: cn("w-8 text-end tabular-nums", function_.errors > 0 ? "text-destructive" : "text-muted-foreground"),
1692
- children: function_.errors
1693
- }, void 0, false)]
1694
- }, function_.path, true);
1695
- }
1696
- function _temp4(function_) {
1697
- return function_.maxDurationMs;
1698
- }
1699
-
1700
- export { HomePanel as H, useStudioFeatures as u };