@lunora/studio 1.0.0-alpha.10 → 1.0.0-alpha.100

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 (313) hide show
  1. package/LICENSE.md +6 -0
  2. package/dist/index.d.ts +822 -781
  3. package/dist/index.js +1 -41
  4. package/dist/mount.d.ts +10 -10
  5. package/dist/mount.js +1 -26
  6. package/dist/packem_chunks/AdvisorHealthPanel.js +1 -0
  7. package/dist/packem_chunks/ApiTab.js +1 -0
  8. package/dist/packem_chunks/AuditPanel.js +1 -0
  9. package/dist/packem_chunks/DeploymentHealthPanel.js +1 -0
  10. package/dist/packem_chunks/ExportImportPanel.js +3 -0
  11. package/dist/packem_chunks/FileBrowser.js +4 -0
  12. package/dist/packem_chunks/FunctionRunner.js +1 -0
  13. package/dist/packem_chunks/FunctionStatsPanel.js +1 -0
  14. package/dist/packem_chunks/HealthPanel.js +1 -0
  15. package/dist/packem_chunks/InsightsPanel.js +1 -0
  16. package/dist/packem_chunks/LogsPanel.js +1 -0
  17. package/dist/packem_chunks/MailPanel.js +2 -0
  18. package/dist/packem_chunks/MetricsPanel.js +1 -0
  19. package/dist/packem_chunks/NotificationsPanel.js +1 -0
  20. package/dist/packem_chunks/PitrPanel.js +1 -0
  21. package/dist/packem_chunks/SchemaViewer.js +1 -0
  22. package/dist/packem_chunks/SecurityAdvisorPanel.js +1 -0
  23. package/dist/packem_chunks/SettingsPanel.js +1 -0
  24. package/dist/packem_chunks/SqlEditorPanel.js +6 -0
  25. package/dist/packem_chunks/TableEditor.js +1 -0
  26. package/dist/packem_chunks/agents-panel.js +1 -0
  27. package/dist/packem_chunks/analytics-panel.js +1 -0
  28. package/dist/packem_chunks/auth-audit-panel.js +1 -0
  29. package/dist/packem_chunks/auth-config-panel.js +1 -0
  30. package/dist/packem_chunks/auth-sessions-panel.js +1 -0
  31. package/dist/packem_chunks/containers-panel.js +1 -0
  32. package/dist/packem_chunks/dashboards-panel.js +1 -0
  33. package/dist/packem_chunks/fanout-panel.js +1 -0
  34. package/dist/packem_chunks/flags-panel.js +1 -0
  35. package/dist/packem_chunks/issues-panel.js +1 -0
  36. package/dist/packem_chunks/kv-browser.js +1 -0
  37. package/dist/packem_chunks/log-drains-panel.js +4 -0
  38. package/dist/packem_chunks/migrations-route.js +1 -0
  39. package/dist/packem_chunks/organizations-panel.js +1 -0
  40. package/dist/packem_chunks/payments-panel.js +1 -0
  41. package/dist/packem_chunks/permissions-panel.js +1 -0
  42. package/dist/packem_chunks/queues-panel.js +1 -0
  43. package/dist/packem_chunks/rls-panel.js +1 -0
  44. package/dist/packem_chunks/schedule-panel.js +1 -0
  45. package/dist/packem_chunks/sparkline.js +1 -0
  46. package/dist/packem_chunks/storage-rules-panel.js +1 -0
  47. package/dist/packem_chunks/subscriptions-panel.js +1 -0
  48. package/dist/packem_chunks/sync-client-panel.js +1 -0
  49. package/dist/packem_chunks/traces-panel.js +1 -0
  50. package/dist/packem_chunks/users-panel.js +1 -0
  51. package/dist/packem_chunks/vector-browser.js +1 -0
  52. package/dist/packem_chunks/workflows-panel.js +1 -0
  53. package/dist/packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js +1 -0
  54. package/dist/packem_shared/ApiDocsPanel-Cu_QmzO0.js +2 -0
  55. package/dist/packem_shared/ApiReferencePanel-DuIU1P8B.js +1 -0
  56. package/dist/packem_shared/CommandPalette-mPR8-vIm.js +1 -0
  57. package/dist/packem_shared/ConfirmButton-CTL3f3kr.js +1 -0
  58. package/dist/packem_shared/ConnectionBadge-DOk0CQWo.js +1 -0
  59. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js +1 -0
  60. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-B-hcFVoi.js +1 -0
  61. package/dist/packem_shared/DEFAULT_LOCALE-BZ4NojpD.js +1 -0
  62. package/dist/packem_shared/DataBrowser-CPNKM0KZ.js +1 -0
  63. package/dist/packem_shared/DataFilters-B26ZeqBZ.js +1 -0
  64. package/dist/packem_shared/ErrorBoundary-DvzYskH7.js +1 -0
  65. package/dist/packem_shared/GlobalDataBrowser-BSmyOO0n.js +1 -0
  66. package/dist/packem_shared/HomePanel-BUO6BcYQ.js +1 -0
  67. package/dist/packem_shared/MigrationsPanel-BAnvY79E.js +1 -0
  68. package/dist/packem_shared/OpenRpcReferencePanel-DXeffPFr.js +1 -0
  69. package/dist/packem_shared/STUDIO_ROOT_CLASS-C6MccdVk.js +1 -0
  70. package/dist/packem_shared/ScheduledJobs-pHVlh2xU.js +1 -0
  71. package/dist/packem_shared/ShardInput-BVn2iCU0.js +1 -0
  72. package/dist/packem_shared/Studio-DG_n-8Pc.js +1 -0
  73. package/dist/packem_shared/StudioApp-bavavhpe.js +1 -0
  74. package/dist/packem_shared/StudioI18nProvider-CZ5h4nrV.js +1 -0
  75. package/dist/packem_shared/advisor-view-CGcwvlMo.js +1 -0
  76. package/dist/packem_shared/aggregateMetrics-BNfajLa2.js +1 -0
  77. package/dist/packem_shared/alert-CVcOFuDR.js +1 -0
  78. package/dist/packem_shared/app.d-D1bPR8FO.d.ts +252 -0
  79. package/dist/packem_shared/badge-BbuuAio7.js +1 -0
  80. package/dist/packem_shared/bar-chart-B8oDHgnw.js +6 -0
  81. package/dist/packem_shared/browser-storage-xjTyMKY0.js +1 -0
  82. package/dist/packem_shared/button-BkCrNcAs.js +1 -0
  83. package/dist/packem_shared/card-BMKx5UdA.js +1 -0
  84. package/dist/packem_shared/cf-links-Dmg86v1D.js +1 -0
  85. package/dist/packem_shared/checkbox-StT4Gob6.js +1 -0
  86. package/dist/packem_shared/data-grid-Ci4-tZkk.js +1 -0
  87. package/dist/packem_shared/data-view-params-ClrV7XgF.js +1 -0
  88. package/dist/packem_shared/dropdown-menu-BgS2zw1i.js +2 -0
  89. package/dist/packem_shared/empty-state-Cg7t_8qu.js +1 -0
  90. package/dist/packem_shared/error-alert-_2q2VtVG.js +1 -0
  91. package/dist/packem_shared/grid-features-Y2YSjhCf.js +6 -0
  92. package/dist/packem_shared/home-panel-Ir3YHReO.js +3 -0
  93. package/dist/packem_shared/input-JHu63lTv.js +1 -0
  94. package/dist/packem_shared/internal-zkEvTqy8.js +2 -0
  95. package/dist/packem_shared/label-6uP1obNF.js +1 -0
  96. package/dist/packem_shared/live-status-CmuRLFKf.js +1 -0
  97. package/dist/packem_shared/log-fields-CoL3hsIQ.js +1 -0
  98. package/dist/packem_shared/modal-shell-CUwwWC2o.js +1 -0
  99. package/dist/packem_shared/operation-console-provider-BMJNtiyB.js +1 -0
  100. package/dist/packem_shared/recording-client-DtUxwVNY.js +1 -0
  101. package/dist/packem_shared/reference-view-DncEStdm.js +12 -0
  102. package/dist/packem_shared/result-chart-0VgP_3FP.js +1 -0
  103. package/dist/packem_shared/schema-diagram-GVgnLWTf.js +2 -0
  104. package/dist/packem_shared/scroll-area-DTEq6Jec.js +2 -0
  105. package/dist/packem_shared/select-BssZMiFY.js +2 -0
  106. package/dist/packem_shared/shard-history-DMEW5VBE.js +1 -0
  107. package/dist/packem_shared/skeleton-C1wQ9M5t.js +1 -0
  108. package/dist/packem_shared/sparkline-BNvxiJj_.js +1 -0
  109. package/dist/packem_shared/stat-card-BGJdhfm6.js +1 -0
  110. package/dist/packem_shared/storage-tier-DznqOf-q.js +1 -0
  111. package/dist/packem_shared/studio-C9Qvg13j.js +2 -0
  112. package/dist/packem_shared/table-DZAB8cs3.js +2 -0
  113. package/dist/packem_shared/table-list-sidebar-fz0m_4I4.js +1 -0
  114. package/dist/packem_shared/textarea-Bu2-jKAs.js +1 -0
  115. package/dist/packem_shared/trace-handoff-CuZ6WGgo.js +1 -0
  116. package/dist/packem_shared/use-admin-query-CnnyWJXM.js +1 -0
  117. package/dist/packem_shared/use-async-submit-B32whHJO.js +1 -0
  118. package/dist/packem_shared/use-auth-config-0EnNCdLu.js +1 -0
  119. package/dist/packem_shared/use-shard-key-B2JtNa5m.js +1 -0
  120. package/dist/packem_shared/use-sql-assistant-Dtw55kKM.js +1 -0
  121. package/dist/packem_shared/useDebounced-CU-uftxO.js +1 -0
  122. package/dist/packem_shared/utils-bhneXptQ.js +1 -0
  123. package/dist/packem_shared/virtual-rect-1o1veP7R.js +1 -0
  124. package/dist/packem_shared/wire-codec-DkrdsFXO.js +1 -0
  125. package/dist/standalone/chunk-2OUPA2WJ.js +1 -0
  126. package/dist/standalone/chunk-2PJNAWB3.js +1 -0
  127. package/dist/standalone/chunk-2QSHLBCO.js +1 -0
  128. package/dist/standalone/chunk-322ZP3GW.js +1 -0
  129. package/dist/standalone/chunk-3C3CG7ZK.js +1 -0
  130. package/dist/standalone/chunk-3CWGJYBB.js +1 -0
  131. package/dist/standalone/chunk-3SCGCJYS.js +1 -0
  132. package/dist/standalone/chunk-3XIESWL4.js +1 -0
  133. package/dist/standalone/chunk-4HNNNIDW.js +1 -0
  134. package/dist/standalone/chunk-4KIQ5RLS.js +1 -0
  135. package/dist/standalone/chunk-4UOFSGUS.js +1 -0
  136. package/dist/standalone/chunk-54MMVNPT.js +1 -0
  137. package/dist/standalone/chunk-55PVLIN3.js +1 -0
  138. package/dist/standalone/chunk-5GQFG6QI.js +6 -0
  139. package/dist/standalone/chunk-5NCGZJ55.js +8 -0
  140. package/dist/standalone/chunk-5PQCUZIE.js +1 -0
  141. package/dist/standalone/chunk-5Y3QLNWX.js +1 -0
  142. package/dist/standalone/chunk-6ST5ECQA.js +1 -0
  143. package/dist/standalone/chunk-6UPCJAAI.js +1 -0
  144. package/dist/standalone/chunk-6UPIWTCN.js +1 -0
  145. package/dist/standalone/chunk-6V27P65N.js +6 -0
  146. package/dist/standalone/chunk-7LJL6UC2.js +1 -0
  147. package/dist/standalone/chunk-7QIFDWQV.js +1 -0
  148. package/dist/standalone/chunk-7T7UOTYK.js +1 -0
  149. package/dist/standalone/chunk-AB5WGAX6.js +4 -0
  150. package/dist/standalone/chunk-APXXEXIX.js +1 -0
  151. package/dist/standalone/chunk-AREBQI6D.js +1 -0
  152. package/dist/standalone/chunk-AVAC26HJ.js +1 -0
  153. package/dist/standalone/chunk-BGBLQ563.js +1 -0
  154. package/dist/standalone/chunk-BQNVN2OD.js +1 -0
  155. package/dist/standalone/chunk-BUVIRYQM.js +1 -0
  156. package/dist/standalone/chunk-C2OHUG2J.js +1 -0
  157. package/dist/standalone/chunk-CFPZYHPY.js +2 -0
  158. package/dist/standalone/chunk-CJLOWFCK.js +4 -0
  159. package/dist/standalone/chunk-CZZWYUTR.js +1 -0
  160. package/dist/standalone/chunk-DB2D42KJ.js +1 -0
  161. package/dist/standalone/chunk-DBCMZ4NF.js +1 -0
  162. package/dist/standalone/chunk-DGRAPESO.js +1 -0
  163. package/dist/standalone/chunk-EALHAMLB.js +3 -0
  164. package/dist/standalone/chunk-EIK3BLGV.js +1 -0
  165. package/dist/standalone/chunk-ESVP44Y3.js +1 -0
  166. package/dist/standalone/chunk-EV2NKHXP.js +1 -0
  167. package/dist/standalone/chunk-F6W6WUAJ.js +1 -0
  168. package/dist/standalone/chunk-F7IRBXWY.js +1 -0
  169. package/dist/standalone/chunk-FKAUVTSS.js +1 -0
  170. package/dist/standalone/chunk-FMM3XUZH.js +4 -0
  171. package/dist/standalone/chunk-FURI47Z2.js +1 -0
  172. package/dist/standalone/chunk-FXCBF4XT.js +1 -0
  173. package/dist/standalone/chunk-GGADAESO.js +1 -0
  174. package/dist/standalone/chunk-GMR677FL.js +1 -0
  175. package/dist/standalone/chunk-GRL5MG3Z.js +1 -0
  176. package/dist/standalone/chunk-GRTTHN6U.js +1 -0
  177. package/dist/standalone/chunk-GVSKCIJR.js +1 -0
  178. package/dist/standalone/chunk-HGSIVV32.js +59 -0
  179. package/dist/standalone/chunk-HPFLBYRI.js +1 -0
  180. package/dist/standalone/chunk-I6A5C46N.js +1 -0
  181. package/dist/standalone/chunk-IC4L6G56.js +1 -0
  182. package/dist/standalone/chunk-IGCNMZSB.js +1 -0
  183. package/dist/standalone/chunk-IUYFXK4X.js +19 -0
  184. package/dist/standalone/chunk-IVFHIQOT.js +1 -0
  185. package/dist/standalone/chunk-IVQUDVQV.js +1 -0
  186. package/dist/standalone/chunk-JN2Y24PY.js +1 -0
  187. package/dist/standalone/chunk-JXF2J6QZ.js +3 -0
  188. package/dist/standalone/chunk-JYYXXMLM.js +1 -0
  189. package/dist/standalone/chunk-K3PSOZXH.js +1 -0
  190. package/dist/standalone/chunk-KESD5PH6.js +1 -0
  191. package/dist/standalone/chunk-LEDWUPXM.js +1 -0
  192. package/dist/standalone/chunk-LUIZB427.js +1 -0
  193. package/dist/standalone/chunk-M3NGYXDR.js +11 -0
  194. package/dist/standalone/chunk-M43KO276.js +1 -0
  195. package/dist/standalone/chunk-MKYEFQCA.js +1 -0
  196. package/dist/standalone/chunk-MLT5MMMY.js +1 -0
  197. package/dist/standalone/chunk-MQ2GKKQ6.js +13 -0
  198. package/dist/standalone/chunk-MZ2JNVMR.js +1 -0
  199. package/dist/standalone/chunk-NE4N6I57.js +1 -0
  200. package/dist/standalone/chunk-P4BOVBMR.js +1 -0
  201. package/dist/standalone/chunk-PKEBAPJY.js +1 -0
  202. package/dist/standalone/chunk-PKSAWP56.js +1 -0
  203. package/dist/standalone/chunk-PLFTCTMX.js +1 -0
  204. package/dist/standalone/chunk-PVF5J5UD.js +1 -0
  205. package/dist/standalone/chunk-QBWRC5YX.js +1 -0
  206. package/dist/standalone/chunk-QC2SRHZV.js +1 -0
  207. package/dist/standalone/chunk-QLQADHFE.js +1 -0
  208. package/dist/standalone/chunk-QNWJ5Q2O.js +1 -0
  209. package/dist/standalone/chunk-QWGT25SE.js +1 -0
  210. package/dist/standalone/chunk-QZFRZEDN.js +1 -0
  211. package/dist/standalone/chunk-RMN2JN4S.js +1 -0
  212. package/dist/standalone/chunk-RTMMB3OY.js +1 -0
  213. package/dist/standalone/chunk-SD4BERSA.js +1 -0
  214. package/dist/standalone/chunk-SFDOII3B.js +1 -0
  215. package/dist/standalone/chunk-SMIESS7P.js +1 -0
  216. package/dist/standalone/chunk-T6VMSOBB.js +1 -0
  217. package/dist/standalone/chunk-THIXMMZD.js +1 -0
  218. package/dist/standalone/chunk-TMGHRD6W.js +1 -0
  219. package/dist/standalone/chunk-UETRSNZI.js +2 -0
  220. package/dist/standalone/chunk-UF6XZKV3.js +1 -0
  221. package/dist/standalone/chunk-UF7QFJ65.js +1 -0
  222. package/dist/standalone/chunk-V53KNYRN.js +1 -0
  223. package/dist/standalone/chunk-V76WCOMM.js +1 -0
  224. package/dist/standalone/chunk-VC4WBYE6.js +1 -0
  225. package/dist/standalone/chunk-VDW32UET.js +1 -0
  226. package/dist/standalone/chunk-VJHQW5X5.js +1 -0
  227. package/dist/standalone/chunk-W25EQ7YQ.js +1 -0
  228. package/dist/standalone/chunk-WGEZGQZ5.js +1 -0
  229. package/dist/standalone/chunk-WJQLNYGX.js +1 -0
  230. package/dist/standalone/chunk-WMLKVJUX.js +1 -0
  231. package/dist/standalone/chunk-WQH3LT2P.js +1 -0
  232. package/dist/standalone/chunk-XAEG372C.js +1 -0
  233. package/dist/standalone/chunk-XBDKZZ67.js +1 -0
  234. package/dist/standalone/chunk-XF2B7P5A.js +1 -0
  235. package/dist/standalone/chunk-XHMHOSGK.js +1 -0
  236. package/dist/standalone/chunk-XQCVZAGU.js +1 -0
  237. package/dist/standalone/chunk-XXQUMVWH.js +1 -0
  238. package/dist/standalone/chunk-Y7XGNPT6.js +1 -0
  239. package/dist/standalone/chunk-YC52XCPK.js +14 -0
  240. package/dist/standalone/chunk-Z6CJGUSL.js +1 -0
  241. package/dist/standalone/chunk-ZJGP6EKR.js +1 -0
  242. package/dist/standalone/studio.js +9 -378
  243. package/dist/styles.css +2 -2
  244. package/package.json +15 -14
  245. package/dist/packem_shared/ADMIN_FUNCTIONS-DjXgvJb6.js +0 -46
  246. package/dist/packem_shared/ApiDocsPanel-yVSGHK3H.js +0 -842
  247. package/dist/packem_shared/ApiReferencePanel-1vubqG5s.js +0 -229
  248. package/dist/packem_shared/ApiTab-rwttyQ1-.js +0 -251
  249. package/dist/packem_shared/AuditPanel-D9Eh7j7E.js +0 -200
  250. package/dist/packem_shared/CommandPalette-BtgkBzZI.js +0 -373
  251. package/dist/packem_shared/ConfirmButton-C2eVi2Qv.js +0 -59
  252. package/dist/packem_shared/ConnectionBadge-B2DDM2Tn.js +0 -111
  253. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-Vxwaxx51.js +0 -50
  254. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-DjF0h-gA.js +0 -89
  255. package/dist/packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js +0 -27
  256. package/dist/packem_shared/DataBrowser-CyckZRwj.js +0 -4480
  257. package/dist/packem_shared/DataFilters-FNquMaiu.js +0 -249
  258. package/dist/packem_shared/ErrorBoundary-BzAApI7J.js +0 -66
  259. package/dist/packem_shared/ExportImportPanel-BGJqFK9X.js +0 -197
  260. package/dist/packem_shared/FileBrowser-0pCpdKPE.js +0 -2932
  261. package/dist/packem_shared/FunctionRunner-7NH3KcTg.js +0 -343
  262. package/dist/packem_shared/FunctionStatsPanel-CXynSuqT.js +0 -375
  263. package/dist/packem_shared/GlobalDataBrowser-DAxzB-Br.js +0 -289
  264. package/dist/packem_shared/HealthPanel-CyLs7qZm.js +0 -648
  265. package/dist/packem_shared/HomePanel-BOkFRbuj.js +0 -1334
  266. package/dist/packem_shared/InsightsPanel-CvXMoZuv.js +0 -461
  267. package/dist/packem_shared/LogsPanel-BrUstOk6.js +0 -827
  268. package/dist/packem_shared/MailPanel-GnnrNqL6.js +0 -440
  269. package/dist/packem_shared/MetricsPanel-BN_uUU-_.js +0 -1611
  270. package/dist/packem_shared/MigrationsPanel-DaZuUHje.js +0 -239
  271. package/dist/packem_shared/OpenRpcReferencePanel-vbcYbv3V.js +0 -191
  272. package/dist/packem_shared/PitrPanel-LJGNP_IX.js +0 -252
  273. package/dist/packem_shared/STUDIO_ROOT_CLASS-D12gX2dV.js +0 -3
  274. package/dist/packem_shared/ScheduledJobs-UmVaMbJy.js +0 -262
  275. package/dist/packem_shared/SchemaViewer-Bam6ylvw.js +0 -2512
  276. package/dist/packem_shared/SecurityAdvisorPanel-DTmjUNqt.js +0 -92
  277. package/dist/packem_shared/SettingsPanel-C2wDK-8F.js +0 -390
  278. package/dist/packem_shared/ShardInput-gx_DZXXn.js +0 -107
  279. package/dist/packem_shared/SqlEditorPanel-D5wMIxcg.js +0 -13
  280. package/dist/packem_shared/Studio-DpgYe4qt.js +0 -33
  281. package/dist/packem_shared/StudioApp-C7aaizqc.js +0 -657
  282. package/dist/packem_shared/StudioI18nProvider-B-tDCZIi.js +0 -48
  283. package/dist/packem_shared/TableEditor-DzK3Z6rL.js +0 -371
  284. package/dist/packem_shared/advisor-view-CGcfMiPq.js +0 -159
  285. package/dist/packem_shared/aggregateMetrics-D4nUHEKU.js +0 -108
  286. package/dist/packem_shared/app.d-Nbhpihxv.d.ts +0 -300
  287. package/dist/packem_shared/badge-B2PKA1-5.js +0 -49
  288. package/dist/packem_shared/bar-chart-CzJAgqkp.js +0 -3245
  289. package/dist/packem_shared/button-BhsN2uZH.js +0 -49
  290. package/dist/packem_shared/card-DURq3ElK.js +0 -175
  291. package/dist/packem_shared/cf-links-2cktDedA.js +0 -8
  292. package/dist/packem_shared/checkbox-UNkzAxl-.js +0 -63
  293. package/dist/packem_shared/data-grid-B5CaV3wS.js +0 -183
  294. package/dist/packem_shared/dropdown-menu-WY4B_eJO.js +0 -280
  295. package/dist/packem_shared/empty-state-DY_oe0k6.js +0 -98
  296. package/dist/packem_shared/grid-features-CzUfqgsM.js +0 -840
  297. package/dist/packem_shared/input-XH4r1Pt1.js +0 -53
  298. package/dist/packem_shared/internal-rXJEAhXS.js +0 -68
  299. package/dist/packem_shared/label-D8ykjn5J.js +0 -46
  300. package/dist/packem_shared/live-status-FZ0psC1z.js +0 -44
  301. package/dist/packem_shared/reference-view-B4E49Lip.js +0 -2180
  302. package/dist/packem_shared/shard-history-DyebH1R5.js +0 -38
  303. package/dist/packem_shared/sparkline-10dG-_f0.js +0 -93
  304. package/dist/packem_shared/sql-editor-panel-Smfl_FDF.js +0 -2562
  305. package/dist/packem_shared/storage-tier-CL98eOvn.js +0 -85
  306. package/dist/packem_shared/studio-9Mq0PdMi.js +0 -10831
  307. package/dist/packem_shared/table-_RzNvy3R.js +0 -246
  308. package/dist/packem_shared/table-list-sidebar-Bg7uzbvC.js +0 -832
  309. package/dist/packem_shared/textarea-D3gaCU_-.js +0 -46
  310. package/dist/packem_shared/use-admin-query-4JQW2rr1.js +0 -88
  311. package/dist/packem_shared/useDebounced-Dxncpg6z.js +0 -32
  312. package/dist/packem_shared/utils-B05Dmz_H.js +0 -8
  313. package/dist/packem_shared/virtual-rect-CVMUskSm.js +0 -10
@@ -1,461 +0,0 @@
1
- import { c } from 'react/compiler-runtime';
2
- import { useLunora } from '@lunora/react';
3
- import { useNavigate } from '@tanstack/react-router';
4
- import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
5
- import { ShardInput } from './ShardInput-gx_DZXXn.js';
6
- import { B as Button } from './button-BhsN2uZH.js';
7
- import { u as useAdminQuery } from './use-admin-query-4JQW2rr1.js';
8
- import useDebounced from './useDebounced-Dxncpg6z.js';
9
- import { useT } from './DEFAULT_LOCALE-CiX4W7Kr.js';
10
- import { ADMIN_FUNCTIONS } from './ADMIN_FUNCTIONS-DjXgvJb6.js';
11
- import { f as fireAndForget, c as callOptions, a as adminRef } from './internal-rXJEAhXS.js';
12
- import { r as recordShard } from './shard-history-DyebH1R5.js';
13
- import { a as advisoryRow, A as AdvisorView } from './advisor-view-CGcfMiPq.js';
14
- import { ConfirmButton } from './ConfirmButton-C2eVi2Qv.js';
15
- import { jsxDEV } from 'react/jsx-dev-runtime';
16
- import { deriveInsights } from './DEFAULT_INSIGHT_THRESHOLDS-DjF0h-gA.js';
17
- import { runAdvisor, RUNTIME_LINTS } from '@lunora/advisor';
18
-
19
- const hasIndexMetadata = (metadata) => {
20
- const {
21
- suggestedIndex,
22
- table
23
- } = metadata;
24
- if (typeof table !== "string" || table.length === 0) {
25
- return false;
26
- }
27
- if (typeof suggestedIndex !== "object" || suggestedIndex === null || !Array.isArray(suggestedIndex["fields"]) || suggestedIndex["fields"].length === 0) {
28
- return false;
29
- }
30
- return true;
31
- };
32
- const composeCreateIndex = (table, indexName, fields) => {
33
- const quotedTable = `"${table}"`;
34
- const quotedIndex = `"${indexName}"`;
35
- const quotedColumns = fields.map((f) => `"${f}"`).join(", ");
36
- return `CREATE INDEX IF NOT EXISTS ${quotedIndex} ON ${quotedTable} (${quotedColumns});`;
37
- };
38
-
39
- const ApplyIndexButton = (t0) => {
40
- const $ = c(19);
41
- const {
42
- fields,
43
- indexName,
44
- table,
45
- testId
46
- } = t0;
47
- const t = useT();
48
- const [applied, setApplied] = useState(false);
49
- let t1;
50
- if ($[0] !== fields || $[1] !== indexName || $[2] !== table) {
51
- t1 = () => {
52
- const clipboard = "navigator" in globalThis ? globalThis.navigator.clipboard : void 0;
53
- if (clipboard === void 0) {
54
- return;
55
- }
56
- const sql = composeCreateIndex(table, indexName, fields);
57
- fireAndForget(clipboard.writeText(sql));
58
- setApplied(true);
59
- };
60
- $[0] = fields;
61
- $[1] = indexName;
62
- $[2] = table;
63
- $[3] = t1;
64
- } else {
65
- t1 = $[3];
66
- }
67
- const onConfirm = t1;
68
- if (applied) {
69
- const t22 = `${testId}-applied`;
70
- let t32;
71
- if ($[4] !== t) {
72
- t32 = t("CREATE INDEX SQL copied to clipboard.");
73
- $[4] = t;
74
- $[5] = t32;
75
- } else {
76
- t32 = $[5];
77
- }
78
- let t42;
79
- if ($[6] !== t22 || $[7] !== t32) {
80
- t42 = /* @__PURE__ */ jsxDEV("span", {
81
- className: "text-xs text-muted-foreground",
82
- "data-testid": t22,
83
- children: t32
84
- }, void 0, false);
85
- $[6] = t22;
86
- $[7] = t32;
87
- $[8] = t42;
88
- } else {
89
- t42 = $[8];
90
- }
91
- return t42;
92
- }
93
- let t2;
94
- if ($[9] !== t) {
95
- t2 = t("Apply?");
96
- $[9] = t;
97
- $[10] = t2;
98
- } else {
99
- t2 = $[10];
100
- }
101
- let t3;
102
- if ($[11] !== t || $[12] !== table) {
103
- t3 = t("Apply index on {table}", {
104
- table
105
- });
106
- $[11] = t;
107
- $[12] = table;
108
- $[13] = t3;
109
- } else {
110
- t3 = $[13];
111
- }
112
- let t4;
113
- if ($[14] !== onConfirm || $[15] !== t2 || $[16] !== t3 || $[17] !== testId) {
114
- t4 = /* @__PURE__ */ jsxDEV(ConfirmButton, {
115
- confirmLabel: t2,
116
- onConfirm,
117
- testId,
118
- children: t3
119
- }, void 0, false);
120
- $[14] = onConfirm;
121
- $[15] = t2;
122
- $[16] = t3;
123
- $[17] = testId;
124
- $[18] = t4;
125
- } else {
126
- t4 = $[18];
127
- }
128
- return t4;
129
- };
130
-
131
- const reconcileIndexHits = (declaredIndexes, indexHits) => {
132
- const readsByKey = /* @__PURE__ */ new Map();
133
- for (const hit of indexHits) {
134
- const key = `${hit.table} ${hit.index}`;
135
- readsByKey.set(key, (readsByKey.get(key) ?? 0) + hit.reads);
136
- }
137
- return declaredIndexes.map((declared) => {
138
- return {
139
- index: declared.index,
140
- reads: readsByKey.get(`${declared.table} ${declared.index}`) ?? 0,
141
- table: declared.table
142
- };
143
- });
144
- };
145
- const aggregateTableScans = (functions) => {
146
- const scansByTable = /* @__PURE__ */ new Map();
147
- for (const callStat of functions) {
148
- for (const attribution of callStat.scannedTables ?? []) {
149
- scansByTable.set(attribution.table, (scansByTable.get(attribution.table) ?? 0) + attribution.scans);
150
- }
151
- }
152
- return [...scansByTable].map(([table, scans]) => {
153
- return {
154
- scans,
155
- table
156
- };
157
- });
158
- };
159
- const declaredIndexesFor = (table, indexes) => indexes.map((index) => {
160
- return {
161
- index: index.name,
162
- table
163
- };
164
- });
165
- const deriveRuntimeAdvisories = (inputs) => {
166
- const inDoIndexHits = reconcileIndexHits(inputs.declaredIndexes ?? [], inputs.indexHits ?? []);
167
- const inDoTableScans = aggregateTableScans(inputs.functions ?? []);
168
- const inDoShardTraffic = inputs.shardTraffic ?? [];
169
- const analytics = inputs.analyticsMetrics;
170
- const indexHits = analytics && analytics.indexHits.length > 0 ? analytics.indexHits : inDoIndexHits;
171
- const tableScans = analytics && analytics.tableScans.length > 0 ? analytics.tableScans : inDoTableScans;
172
- const shardTraffic = analytics && analytics.shardTraffic.length > 0 ? analytics.shardTraffic : inDoShardTraffic;
173
- const findings = runAdvisor({
174
- indexHits,
175
- schema: {
176
- tables: []
177
- },
178
- shardTraffic,
179
- tableScans
180
- }, {
181
- lints: RUNTIME_LINTS,
182
- source: "runtime"
183
- });
184
- const suppress = inputs.suppressHotScanTables;
185
- const visible = suppress === void 0 ? findings : findings.filter((finding) => !(finding.metadata["kind"] === "hot_scan" && typeof finding.metadata["table"] === "string" && suppress.has(finding.metadata["table"])));
186
- return visible.map((finding) => advisoryRow(finding));
187
- };
188
-
189
- const LIST_TABLES = adminRef(ADMIN_FUNCTIONS.listTables);
190
- const LIST_TABLE_INDEXES = adminRef(ADMIN_FUNCTIONS.listTableIndexes);
191
- const percent = (rate) => `${(rate * 100).toFixed(1)}%`;
192
- const seconds = (ms) => `${(ms / 1e3).toFixed(2)}s`;
193
- const tableList = (tables) => {
194
- if (tables.length <= 1) {
195
- return tables[0] ?? "";
196
- }
197
- const last = tables[tables.length - 1] ?? "";
198
- return `${tables.slice(0, -1).join(", ")} and ${last}`;
199
- };
200
- const insightTitle = (t, insight) => ({
201
- "high-error-rate": t("High error rate"),
202
- "high-evictions": t("High cache eviction rate"),
203
- "high-write-contention": t("High write contention"),
204
- "low-cache-hit-rate": t("Low cache hit rate"),
205
- "missing-index": t("Missing index"),
206
- "slow-function": t("Slow function")
207
- })[insight.kind];
208
- const insightDetail = (t, insight) => ({
209
- "high-error-rate": t("{rate} of calls failed.", {
210
- rate: percent(insight.value)
211
- }),
212
- "high-evictions": t("{count} entries evicted recently.", {
213
- count: insight.value
214
- }),
215
- "high-write-contention": t("{rate} of calls hit a write conflict — consider sharding to cut contention.", {
216
- rate: percent(insight.value)
217
- }),
218
- "low-cache-hit-rate": t("{rate} hit rate over recent traffic.", {
219
- rate: percent(insight.value)
220
- }),
221
- "missing-index": t("Slowest call took {duration} — it full-scanned {tables} with no index.", {
222
- duration: seconds(insight.value),
223
- tables: tableList(insight.tables ?? [])
224
- }),
225
- "slow-function": t("Slowest call took {duration}.", {
226
- duration: seconds(insight.value)
227
- })
228
- })[insight.kind];
229
- const AddIndexButton = (t0) => {
230
- const $ = c(10);
231
- const {
232
- onJump,
233
- table
234
- } = t0;
235
- const t = useT();
236
- let t1;
237
- if ($[0] !== onJump || $[1] !== table) {
238
- t1 = () => {
239
- onJump(table);
240
- };
241
- $[0] = onJump;
242
- $[1] = table;
243
- $[2] = t1;
244
- } else {
245
- t1 = $[2];
246
- }
247
- const onClick = t1;
248
- const t2 = `in-add-index-${table}`;
249
- let t3;
250
- if ($[3] !== t || $[4] !== table) {
251
- t3 = t("Add index on {table}", {
252
- table
253
- });
254
- $[3] = t;
255
- $[4] = table;
256
- $[5] = t3;
257
- } else {
258
- t3 = $[5];
259
- }
260
- let t4;
261
- if ($[6] !== onClick || $[7] !== t2 || $[8] !== t3) {
262
- t4 = /* @__PURE__ */ jsxDEV(Button, {
263
- "data-testid": t2,
264
- onClick,
265
- size: "sm",
266
- type: "button",
267
- variant: "outline",
268
- children: t3
269
- }, void 0, false);
270
- $[6] = onClick;
271
- $[7] = t2;
272
- $[8] = t3;
273
- $[9] = t4;
274
- } else {
275
- t4 = $[9];
276
- }
277
- return t4;
278
- };
279
- const InsightsPanel = ({
280
- initialShardKey,
281
- loadShardTraffic
282
- }) => {
283
- const client = useLunora();
284
- const navigate = useNavigate();
285
- const t = useT();
286
- const [shardKey, setShardKey] = useState(initialShardKey ?? "");
287
- const [declaredIndexes, setDeclaredIndexes] = useState(null);
288
- const [shardTraffic, setShardTraffic] = useState(null);
289
- const debouncedShard = useDebounced(shardKey.trim(), 400);
290
- const latestEnumeratedShard = useRef("");
291
- const metricsQuery = useAdminQuery(ADMIN_FUNCTIONS.getMetrics, {}, {
292
- live: true,
293
- shardKey: debouncedShard
294
- });
295
- const functionsQuery = useAdminQuery(ADMIN_FUNCTIONS.getFunctionStats, {}, {
296
- live: true,
297
- shardKey: debouncedShard
298
- });
299
- const advisoriesQuery = useAdminQuery(ADMIN_FUNCTIONS.getAdvisories, {}, {
300
- live: true,
301
- shardKey: debouncedShard
302
- });
303
- const metrics = metricsQuery.data ?? null;
304
- const functions = functionsQuery.data?.functions ?? null;
305
- const advisories = advisoriesQuery.data?.advisories ?? null;
306
- const indexHits = metricsQuery.data?.indexHits ?? null;
307
- const error = metricsQuery.error !== null && functionsQuery.error !== null ? metricsQuery.error : null;
308
- const fanShardTraffic = loadShardTraffic ?? ((table) => client.shardTraffic(table));
309
- const loadShardTrafficFeed = async (tableNames, shard) => {
310
- const seedTable = tableNames[0];
311
- if (seedTable === void 0 || seedTable === "") {
312
- if (latestEnumeratedShard.current === shard) {
313
- setShardTraffic(null);
314
- }
315
- return;
316
- }
317
- try {
318
- const traffic = await fanShardTraffic(seedTable);
319
- if (latestEnumeratedShard.current !== shard) {
320
- return;
321
- }
322
- const byShard = /* @__PURE__ */ new Map();
323
- for (const entry of traffic.shards) {
324
- if (!byShard.has(entry.shardKey)) {
325
- byShard.set(entry.shardKey, {
326
- requests: entry.requests,
327
- shardKey: entry.shardKey
328
- });
329
- }
330
- }
331
- setShardTraffic([...byShard.values()]);
332
- } catch {
333
- if (latestEnumeratedShard.current === shard) {
334
- setShardTraffic(null);
335
- }
336
- }
337
- };
338
- const enumerateShard = useCallback(
339
- async (shard) => {
340
- latestEnumeratedShard.current = shard;
341
- let tableNames = [];
342
- try {
343
- const tables = await client.query(LIST_TABLES, {}, callOptions(shard));
344
- if (latestEnumeratedShard.current !== shard) {
345
- return;
346
- }
347
- recordShard(shard);
348
- tableNames = tables.map((table) => table.name);
349
- const indexResults = await Promise.allSettled(tables.map(async (table) => [table.name, await client.query(LIST_TABLE_INDEXES, {
350
- table: table.name
351
- }, callOptions(shard))]));
352
- if (latestEnumeratedShard.current !== shard) {
353
- return;
354
- }
355
- const declared = [];
356
- for (const result of indexResults) {
357
- if (result.status === "fulfilled") {
358
- const [name, payload] = result.value;
359
- declared.push(...declaredIndexesFor(name, payload.indexes));
360
- }
361
- }
362
- setDeclaredIndexes(declared);
363
- } catch {
364
- if (latestEnumeratedShard.current === shard) {
365
- setDeclaredIndexes(null);
366
- }
367
- }
368
- await loadShardTrafficFeed(tableNames, shard);
369
- },
370
- // `fanShardTraffic`/`loadShardTrafficFeed` are render-fresh closures; the
371
- // enumeration only needs to re-run on a shard change (or a manual visibility
372
- // refresh), so they're intentionally excluded from the cache key.
373
- // eslint-disable-next-line react-hooks/exhaustive-deps
374
- [client]
375
- );
376
- useEffect(() => {
377
- fireAndForget(enumerateShard(debouncedShard));
378
- }, [debouncedShard, enumerateShard]);
379
- useEffect(() => {
380
- const onVisible = () => {
381
- if (document.visibilityState === "visible") {
382
- metricsQuery.refetch();
383
- functionsQuery.refetch();
384
- advisoriesQuery.refetch();
385
- fireAndForget(enumerateShard(debouncedShard));
386
- }
387
- };
388
- document.addEventListener("visibilitychange", onVisible);
389
- return () => {
390
- document.removeEventListener("visibilitychange", onVisible);
391
- };
392
- }, [advisoriesQuery, debouncedShard, enumerateShard, functionsQuery, metricsQuery]);
393
- const jumpToSchemaIndex = useCallback((table) => {
394
- fireAndForget(navigate({
395
- search: {
396
- table
397
- },
398
- to: "/schema"
399
- }));
400
- }, [navigate]);
401
- const insights = deriveInsights(metrics, functions);
402
- const missingIndexTables = new Set(insights.filter((insight) => insight.kind === "missing-index").flatMap((insight) => insight.tables ?? []));
403
- const runtimeRows = deriveRuntimeAdvisories({
404
- declaredIndexes: declaredIndexes ?? [],
405
- functions,
406
- indexHits,
407
- shardTraffic,
408
- suppressHotScanTables: missingIndexTables
409
- });
410
- const rows = useMemo(() => {
411
- const insightRows = insights.map((insight) => {
412
- const tables = insight.kind === "missing-index" ? insight.tables ?? [] : [];
413
- return {
414
- action: tables.length > 0 ? tables.map((table) => /* @__PURE__ */ jsxDEV(AddIndexButton, {
415
- onJump: jumpToSchemaIndex,
416
- table
417
- }, table, false)) : void 0,
418
- description: insight.message === void 0 ? insightDetail(t, insight) : `${insightDetail(t, insight)} — ${insight.message}`,
419
- entity: insight.fn,
420
- issueType: insightTitle(t, insight),
421
- key: `${insight.kind}:${insight.fn ?? ""}`,
422
- level: insight.severity
423
- };
424
- });
425
- const indexAdvisoryLints = /* @__PURE__ */ new Set(["unindexed_foreign_key", "unindexed_relation_target"]);
426
- const staticRows = (advisories ?? []).map((finding) => {
427
- const base = advisoryRow(finding);
428
- if (indexAdvisoryLints.has(finding.name) && hasIndexMetadata(finding.metadata)) {
429
- const {
430
- table,
431
- suggestedIndex
432
- } = finding.metadata;
433
- const testId = `in-apply-index-${table}-${suggestedIndex.name}`;
434
- return {
435
- ...base,
436
- action: /* @__PURE__ */ jsxDEV(ApplyIndexButton, {
437
- fields: suggestedIndex.fields,
438
- indexName: suggestedIndex.name,
439
- table,
440
- testId
441
- }, void 0, false)
442
- };
443
- }
444
- return base;
445
- });
446
- return [...staticRows, ...runtimeRows, ...insightRows];
447
- }, [advisories, insights, jumpToSchemaIndex, runtimeRows, t]);
448
- const toolbar = /* @__PURE__ */ jsxDEV(ShardInput, {
449
- onChange: setShardKey,
450
- testId: "in-shard-input",
451
- value: shardKey
452
- }, void 0, false);
453
- return /* @__PURE__ */ jsxDEV(AdvisorView, {
454
- error,
455
- rows,
456
- testId: "lunora-insights",
457
- toolbar
458
- }, void 0, false);
459
- };
460
-
461
- export { InsightsPanel };