@lunora/studio 1.0.0-alpha.106 → 1.0.0-alpha.108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +15 -2
- package/dist/index.js +1 -1
- package/dist/mount.js +1 -1
- package/dist/packem_chunks/AdvisorHealthPanel.js +1 -1
- package/dist/packem_chunks/ApiTab.js +1 -1
- package/dist/packem_chunks/AuditPanel.js +1 -1
- package/dist/packem_chunks/DeploymentHealthPanel.js +1 -1
- package/dist/packem_chunks/ExportImportPanel.js +3 -3
- package/dist/packem_chunks/FileBrowser.js +4 -4
- package/dist/packem_chunks/FunctionRunner.js +1 -1
- package/dist/packem_chunks/FunctionStatsPanel.js +1 -1
- package/dist/packem_chunks/HealthPanel.js +1 -1
- package/dist/packem_chunks/InsightsPanel.js +1 -1
- package/dist/packem_chunks/LogsPanel.js +1 -1
- package/dist/packem_chunks/MailPanel.js +1 -1
- package/dist/packem_chunks/MetricsPanel.js +1 -1
- package/dist/packem_chunks/NotificationsPanel.js +1 -1
- package/dist/packem_chunks/PitrPanel.js +1 -1
- package/dist/packem_chunks/SchemaViewer.js +1 -1
- package/dist/packem_chunks/SecurityAdvisorPanel.js +1 -1
- package/dist/packem_chunks/SettingsPanel.js +1 -1
- package/dist/packem_chunks/SqlEditorPanel.js +6 -6
- package/dist/packem_chunks/TableEditor.js +1 -1
- package/dist/packem_chunks/agents-panel.js +1 -1
- package/dist/packem_chunks/analytics-panel.js +1 -1
- package/dist/packem_chunks/auth-audit-panel.js +1 -1
- package/dist/packem_chunks/auth-config-panel.js +1 -1
- package/dist/packem_chunks/auth-sessions-panel.js +1 -1
- package/dist/packem_chunks/containers-panel.js +1 -1
- package/dist/packem_chunks/dashboards-panel.js +1 -1
- package/dist/packem_chunks/evals-panel.js +1 -1
- package/dist/packem_chunks/fanout-panel.js +1 -1
- package/dist/packem_chunks/flags-panel.js +1 -1
- package/dist/packem_chunks/issues-panel.js +1 -1
- package/dist/packem_chunks/kv-browser.js +1 -1
- package/dist/packem_chunks/log-drains-panel.js +4 -4
- package/dist/packem_chunks/migrations-route.js +1 -1
- package/dist/packem_chunks/organizations-panel.js +1 -1
- package/dist/packem_chunks/payments-panel.js +1 -1
- package/dist/packem_chunks/permissions-panel.js +1 -1
- package/dist/packem_chunks/queues-panel.js +1 -1
- package/dist/packem_chunks/rls-panel.js +1 -1
- package/dist/packem_chunks/schedule-panel.js +1 -1
- package/dist/packem_chunks/sparkline.js +1 -1
- package/dist/packem_chunks/storage-rules-panel.js +1 -1
- package/dist/packem_chunks/subscriptions-panel.js +1 -1
- package/dist/packem_chunks/sync-client-panel.js +1 -1
- package/dist/packem_chunks/traces-panel.js +1 -1
- package/dist/packem_chunks/users-panel.js +1 -1
- package/dist/packem_chunks/vector-browser.js +1 -1
- package/dist/packem_chunks/workflows-panel.js +1 -1
- package/dist/packem_shared/ApiDocsPanel-BQ79UVEg.js +2 -0
- package/dist/packem_shared/ApiReferencePanel-CkCFMCBb.js +1 -0
- package/dist/packem_shared/CommandPalette-B5yLEABs.js +1 -0
- package/dist/packem_shared/ConfirmButton-Cj2SOapE.js +1 -0
- package/dist/packem_shared/ConnectionBadge-Bh16X9-u.js +1 -0
- package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.js +1 -0
- package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-1Lrg55IV.js +1 -0
- package/dist/packem_shared/DEFAULT_LOCALE-A1Yg5ORA.js +1 -0
- package/dist/packem_shared/DataBrowser-BnDIFN-S.js +1 -0
- package/dist/packem_shared/DataFilters-3nbW0uax.js +1 -0
- package/dist/packem_shared/ErrorBoundary-BWNF98VF.js +1 -0
- package/dist/packem_shared/GlobalDataBrowser-DusjXzRF.js +1 -0
- package/dist/packem_shared/HomePanel-BcaHVBJh.js +1 -0
- package/dist/packem_shared/MigrationsPanel-CCOENX4X.js +1 -0
- package/dist/packem_shared/OpenRpcReferencePanel-21OWMH45.js +1 -0
- package/dist/packem_shared/ScheduledJobs-CiO3eXgI.js +1 -0
- package/dist/packem_shared/ShardInput-XumEzeT0.js +1 -0
- package/dist/packem_shared/Studio-CHmLCjBR.js +1 -0
- package/dist/packem_shared/StudioApp-DCdbsciH.js +1 -0
- package/dist/packem_shared/StudioI18nProvider-Bl547evf.js +1 -0
- package/dist/packem_shared/advisor-view-C1KFTXSH.js +1 -0
- package/dist/packem_shared/aggregateMetrics-A-Y7OH6R.js +1 -0
- package/dist/packem_shared/alert-C2SEhYS9.js +1 -0
- package/dist/packem_shared/{badge-BbuuAio7.js → badge-cAk9Di1Q.js} +1 -1
- package/dist/packem_shared/bar-chart-CCyO67Uf.js +6 -0
- package/dist/packem_shared/browser-storage-Br_bLeBt.js +1 -0
- package/dist/packem_shared/{button-BkCrNcAs.js → button-BOPLD1un.js} +1 -1
- package/dist/packem_shared/card-BGlQzQY-.js +1 -0
- package/dist/packem_shared/cf-links-CBJ5SywP.js +1 -0
- package/dist/packem_shared/{checkbox-StT4Gob6.js → checkbox-C5w53W-E.js} +1 -1
- package/dist/packem_shared/data-grid-BFTQnkXq.js +1 -0
- package/dist/packem_shared/data-view-params-qoSTqjAj.js +1 -0
- package/dist/packem_shared/dropdown-menu-D_ewqsUU.js +2 -0
- package/dist/packem_shared/empty-state-B939z6K2.js +1 -0
- package/dist/packem_shared/error-alert-TYdKetJd.js +1 -0
- package/dist/packem_shared/grid-features-C_yXlMc_.js +6 -0
- package/dist/packem_shared/home-panel-BiJHXeDC.js +3 -0
- package/dist/packem_shared/input-CY5W3wzv.js +1 -0
- package/dist/packem_shared/internal-CwaF9YNk.js +2 -0
- package/dist/packem_shared/label-BOUo-DP0.js +1 -0
- package/dist/packem_shared/live-status-Bf7rR8o8.js +1 -0
- package/dist/packem_shared/{log-fields-CoL3hsIQ.js → log-fields-SBxKyBug.js} +1 -1
- package/dist/packem_shared/log-line-UnE93Ovi.js +1 -0
- package/dist/packem_shared/modal-shell-wGW4CKEW.js +1 -0
- package/dist/packem_shared/operation-console-provider-DoloEvon.js +1 -0
- package/dist/packem_shared/recording-client-CKn4-vUx.js +1 -0
- package/dist/packem_shared/reference-view-CUIDzLf0.js +12 -0
- package/dist/packem_shared/result-chart-Ca3YLzt8.js +1 -0
- package/dist/packem_shared/schema-diagram-DHD13TjS.js +2 -0
- package/dist/packem_shared/scroll-area-DSJftwu_.js +2 -0
- package/dist/packem_shared/select-BPISLTcv.js +2 -0
- package/dist/packem_shared/shard-history-QcjcMnCA.js +1 -0
- package/dist/packem_shared/skeleton-DFBBaJU6.js +1 -0
- package/dist/packem_shared/sparkline-BreIqzDO.js +1 -0
- package/dist/packem_shared/stat-card-B9uIvAHg.js +1 -0
- package/dist/packem_shared/{storage-tier-DznqOf-q.js → storage-tier-C2mKwYRj.js} +1 -1
- package/dist/packem_shared/studio-B3eEcBK0.js +2 -0
- package/dist/packem_shared/table-BMsuYFhk.js +2 -0
- package/dist/packem_shared/table-list-sidebar-Bluzd1_2.js +1 -0
- package/dist/packem_shared/textarea-DpO3i-Qo.js +1 -0
- package/dist/packem_shared/{trace-handoff-Dw7mwjxu.js → trace-handoff-C0CFV2ix.js} +1 -1
- package/dist/packem_shared/use-admin-query-P0RJrjsD.js +1 -0
- package/dist/packem_shared/use-async-submit-DdLd0MdK.js +1 -0
- package/dist/packem_shared/use-auth-config-z3KRWAqD.js +1 -0
- package/dist/packem_shared/use-open-trace-4tIa0SXZ.js +1 -0
- package/dist/packem_shared/use-shard-key-BsP3o5wT.js +1 -0
- package/dist/packem_shared/use-sql-assistant-CP90nLLh.js +1 -0
- package/dist/packem_shared/useDebounced-DVeQ5-oW.js +1 -0
- package/dist/packem_shared/virtual-rect-D_j7aLxX.js +1 -0
- package/dist/packem_shared/wire-codec-Dl3VeNrd.js +1 -0
- package/dist/standalone/chunk-25OIGX2A.js +1 -0
- package/dist/standalone/{chunk-OBMNLQWG.js → chunk-26VREVWU.js} +1 -1
- package/dist/standalone/chunk-2BDM6HNL.js +1 -0
- package/dist/standalone/{chunk-6WB63KTN.js → chunk-2DC6F7NH.js} +1 -1
- package/dist/standalone/chunk-3F5I435D.js +1 -0
- package/dist/standalone/{chunk-RJS7UD5U.js → chunk-3QB5JI32.js} +1 -1
- package/dist/standalone/chunk-3RYEUXY2.js +1 -0
- package/dist/standalone/chunk-44WNSIGQ.js +1 -0
- package/dist/standalone/chunk-45YWYMD5.js +1 -0
- package/dist/standalone/chunk-4MAJFNON.js +1 -0
- package/dist/standalone/chunk-4YTSKL4R.js +1 -0
- package/dist/standalone/chunk-57VX76PR.js +1 -0
- package/dist/standalone/chunk-5JLIP2HH.js +1 -0
- package/dist/standalone/chunk-5NRQIDQA.js +1 -0
- package/dist/standalone/{chunk-2ZG23BA5.js → chunk-5T7KRUPX.js} +1 -1
- package/dist/standalone/chunk-6FWN26RH.js +1 -0
- package/dist/standalone/chunk-6JGXSMKV.js +1 -0
- package/dist/standalone/{chunk-HX7IXD7I.js → chunk-6NJAHOGO.js} +1 -1
- package/dist/standalone/chunk-6SAAMM4S.js +1 -0
- package/dist/standalone/{chunk-IUYFXK4X.js → chunk-6ZPTNC34.js} +6 -6
- package/dist/standalone/chunk-74ASA4WU.js +1 -0
- package/dist/standalone/{chunk-6ST5ECQA.js → chunk-7PIHTTND.js} +1 -1
- package/dist/standalone/{chunk-GMR677FL.js → chunk-7SROZWKL.js} +1 -1
- package/dist/standalone/chunk-AECDJKXB.js +1 -0
- package/dist/standalone/{chunk-2PJNAWB3.js → chunk-AFKLFS74.js} +1 -1
- package/dist/standalone/chunk-AOAJGSYZ.js +2 -0
- package/dist/standalone/chunk-AOE75NAT.js +1 -0
- package/dist/standalone/{chunk-HFRJMPXJ.js → chunk-APRVSWBH.js} +27 -27
- package/dist/standalone/{chunk-LWE6NWQX.js → chunk-BELLXCN7.js} +1 -1
- package/dist/standalone/chunk-BORG7WUC.js +1 -0
- package/dist/standalone/{chunk-AVAC26HJ.js → chunk-BQK2C2Z4.js} +1 -1
- package/dist/standalone/chunk-BRHTM6FU.js +1 -0
- package/dist/standalone/{chunk-MWIKAR7F.js → chunk-BWEXJENB.js} +1 -1
- package/dist/standalone/chunk-C5E5PLJT.js +4 -0
- package/dist/standalone/chunk-C7E4I7JZ.js +1 -0
- package/dist/standalone/{chunk-QWGT25SE.js → chunk-CAOUXOL7.js} +1 -1
- package/dist/standalone/chunk-CEPMQS24.js +6 -0
- package/dist/standalone/chunk-CKTKI4IY.js +1 -0
- package/dist/standalone/{chunk-IC4L6G56.js → chunk-CN2AINNY.js} +1 -1
- package/dist/standalone/chunk-CP4ZFBVW.js +1 -0
- package/dist/standalone/chunk-CYX3OHJ3.js +1 -0
- package/dist/standalone/{chunk-7P7NURTD.js → chunk-D7DUQS2Y.js} +1 -1
- package/dist/standalone/{chunk-QBWRC5YX.js → chunk-DKSLOJDQ.js} +1 -1
- package/dist/standalone/chunk-DL3UOEWN.js +1 -0
- package/dist/standalone/chunk-DPNEFSEC.js +1 -0
- package/dist/standalone/{chunk-BGBLQ563.js → chunk-DUDQV6XJ.js} +1 -1
- package/dist/standalone/chunk-EDHW2EEG.js +1 -0
- package/dist/standalone/chunk-EYGF6TQS.js +1 -0
- package/dist/standalone/chunk-F7JOSNAT.js +1 -0
- package/dist/standalone/{chunk-7QOXFLZB.js → chunk-FBAZHG35.js} +1 -1
- package/dist/standalone/chunk-FLCK2WWQ.js +1 -0
- package/dist/standalone/chunk-FSWPREH3.js +1 -0
- package/dist/standalone/{chunk-ZCNMXKF2.js → chunk-GIRZD3UB.js} +2 -2
- package/dist/standalone/chunk-GZMBMNL3.js +6 -0
- package/dist/standalone/chunk-HPX3IM45.js +13 -0
- package/dist/standalone/{chunk-KUVMORDQ.js → chunk-INBA3473.js} +1 -1
- package/dist/standalone/{chunk-T6VMSOBB.js → chunk-INQICZYC.js} +1 -1
- package/dist/standalone/chunk-IWNVQHF7.js +1 -0
- package/dist/standalone/chunk-IWOZGUI2.js +1 -0
- package/dist/standalone/chunk-IYWVSMAY.js +1 -0
- package/dist/standalone/chunk-JURAVSE7.js +1 -0
- package/dist/standalone/chunk-JUWOEHDD.js +1 -0
- package/dist/standalone/{chunk-4UOFSGUS.js → chunk-JV7KTJPY.js} +1 -1
- package/dist/standalone/{chunk-XVD7HWY7.js → chunk-JVAYDDMK.js} +1 -1
- package/dist/standalone/chunk-KEKIGANB.js +1 -0
- package/dist/standalone/chunk-KFZ37KQP.js +1 -0
- package/dist/standalone/chunk-KQIHXYE6.js +1 -0
- package/dist/standalone/chunk-L4EZAHCD.js +1 -0
- package/dist/standalone/chunk-L7CJ5PGH.js +1 -0
- package/dist/standalone/{chunk-5MJ3G4DY.js → chunk-LT4XQDD2.js} +1 -1
- package/dist/standalone/chunk-M3NNNOD5.js +1 -0
- package/dist/standalone/chunk-MBEIKVJH.js +1 -0
- package/dist/standalone/chunk-MCLM2QJI.js +1 -0
- package/dist/standalone/chunk-METRMDIQ.js +1 -0
- package/dist/standalone/{chunk-OKQ3NJOW.js → chunk-MGC6PRMV.js} +1 -1
- package/dist/standalone/chunk-MOUI44OT.js +1 -0
- package/dist/standalone/{chunk-DRR3KV5L.js → chunk-MSFUDXBA.js} +1 -1
- package/dist/standalone/chunk-NIX2QSSN.js +1 -0
- package/dist/standalone/chunk-NXXGISFB.js +1 -0
- package/dist/standalone/{chunk-SBZXUGZ7.js → chunk-OE4KGVJW.js} +4 -4
- package/dist/standalone/chunk-OG57FC7W.js +1 -0
- package/dist/standalone/chunk-OLQWBGKT.js +1 -0
- package/dist/standalone/{chunk-F2I4JLFR.js → chunk-OOBJFXYB.js} +1 -1
- package/dist/standalone/chunk-P52BY657.js +1 -0
- package/dist/standalone/chunk-PHHMPYEP.js +1 -0
- package/dist/standalone/{chunk-6KWKX3RH.js → chunk-PJDKRUWT.js} +1 -1
- package/dist/standalone/chunk-PZ4QDWTI.js +1 -0
- package/dist/standalone/chunk-QZ55OWAB.js +4 -0
- package/dist/standalone/chunk-R5ZTCHCE.js +1 -0
- package/dist/standalone/chunk-RBUVNO22.js +1 -0
- package/dist/standalone/{chunk-XBDKZZ67.js → chunk-RCZTUWG3.js} +1 -1
- package/dist/standalone/chunk-S77D4SHR.js +1 -0
- package/dist/standalone/chunk-SL5R7WBN.js +1 -0
- package/dist/standalone/chunk-SMKRXJUC.js +1 -0
- package/dist/standalone/{chunk-THIXMMZD.js → chunk-SPDZUX4P.js} +1 -1
- package/dist/standalone/chunk-T2LDA6WP.js +1 -0
- package/dist/standalone/{chunk-5UY7MLRC.js → chunk-T6HLABZW.js} +1 -1
- package/dist/standalone/{chunk-BDHAGUAY.js → chunk-TBXK3FKP.js} +4 -4
- package/dist/standalone/{chunk-7QIFDWQV.js → chunk-TFMQSCGC.js} +1 -1
- package/dist/standalone/chunk-TLPWZ5NI.js +3 -0
- package/dist/standalone/chunk-TNKECJW4.js +1 -0
- package/dist/standalone/{chunk-XQCVZAGU.js → chunk-UANVABQG.js} +1 -1
- package/dist/standalone/chunk-UIF57LBO.js +1 -0
- package/dist/standalone/chunk-V6QPVFDL.js +1 -0
- package/dist/standalone/chunk-VNTEQQPP.js +1 -0
- package/dist/standalone/chunk-VR3UJA7B.js +1 -0
- package/dist/standalone/{chunk-5DVJR52Z.js → chunk-VYW2PAWC.js} +3 -3
- package/dist/standalone/chunk-VZCS5GXZ.js +1 -0
- package/dist/standalone/{chunk-XYV7TMYI.js → chunk-WHRG6S5P.js} +1 -1
- package/dist/standalone/{chunk-CKG2DTZ2.js → chunk-WIG3HCUJ.js} +1 -1
- package/dist/standalone/chunk-WUW4ZHRL.js +1 -0
- package/dist/standalone/chunk-X6Q5DWLZ.js +1 -0
- package/dist/standalone/{chunk-Z2IF3TEX.js → chunk-XGIG4EDG.js} +4 -4
- package/dist/standalone/chunk-XJSWM47N.js +1 -0
- package/dist/standalone/chunk-XQS7KSHL.js +1 -0
- package/dist/standalone/chunk-YS7HEZC2.js +1 -0
- package/dist/standalone/chunk-YUWMB6EV.js +1 -0
- package/dist/standalone/{chunk-TMGHRD6W.js → chunk-ZPGNTTQ3.js} +1 -1
- package/dist/standalone/chunk-ZQLIKKIY.js +1 -0
- package/dist/standalone/chunk-ZSOLGJFC.js +1 -0
- package/dist/standalone/studio.js +6 -6
- package/package.json +9 -9
- package/dist/packem_shared/ApiDocsPanel-Cu_QmzO0.js +0 -2
- package/dist/packem_shared/ApiReferencePanel-DuIU1P8B.js +0 -1
- package/dist/packem_shared/CommandPalette-mPR8-vIm.js +0 -1
- package/dist/packem_shared/ConfirmButton-CTL3f3kr.js +0 -1
- package/dist/packem_shared/ConnectionBadge-DOk0CQWo.js +0 -1
- package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js +0 -1
- package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-B-hcFVoi.js +0 -1
- package/dist/packem_shared/DEFAULT_LOCALE-BZ4NojpD.js +0 -1
- package/dist/packem_shared/DataBrowser-CPNKM0KZ.js +0 -1
- package/dist/packem_shared/DataFilters-B26ZeqBZ.js +0 -1
- package/dist/packem_shared/ErrorBoundary-DvzYskH7.js +0 -1
- package/dist/packem_shared/GlobalDataBrowser-BSmyOO0n.js +0 -1
- package/dist/packem_shared/HomePanel-BUO6BcYQ.js +0 -1
- package/dist/packem_shared/MigrationsPanel-BAnvY79E.js +0 -1
- package/dist/packem_shared/OpenRpcReferencePanel-DXeffPFr.js +0 -1
- package/dist/packem_shared/ScheduledJobs-pHVlh2xU.js +0 -1
- package/dist/packem_shared/ShardInput-BVn2iCU0.js +0 -1
- package/dist/packem_shared/Studio-CD66AkL1.js +0 -1
- package/dist/packem_shared/StudioApp-0Vaayv2I.js +0 -1
- package/dist/packem_shared/StudioI18nProvider-CZ5h4nrV.js +0 -1
- package/dist/packem_shared/advisor-view-CGcwvlMo.js +0 -1
- package/dist/packem_shared/aggregateMetrics-BNfajLa2.js +0 -1
- package/dist/packem_shared/alert-CVcOFuDR.js +0 -1
- package/dist/packem_shared/bar-chart-B8oDHgnw.js +0 -6
- package/dist/packem_shared/browser-storage-xjTyMKY0.js +0 -1
- package/dist/packem_shared/card-BMKx5UdA.js +0 -1
- package/dist/packem_shared/cf-links-Dmg86v1D.js +0 -1
- package/dist/packem_shared/data-grid-Ci4-tZkk.js +0 -1
- package/dist/packem_shared/data-view-params-ClrV7XgF.js +0 -1
- package/dist/packem_shared/dropdown-menu-BgS2zw1i.js +0 -2
- package/dist/packem_shared/empty-state-Cg7t_8qu.js +0 -1
- package/dist/packem_shared/error-alert-_2q2VtVG.js +0 -1
- package/dist/packem_shared/grid-features-Y2YSjhCf.js +0 -6
- package/dist/packem_shared/home-panel-Ir3YHReO.js +0 -3
- package/dist/packem_shared/input-JHu63lTv.js +0 -1
- package/dist/packem_shared/internal-zkEvTqy8.js +0 -2
- package/dist/packem_shared/label-6uP1obNF.js +0 -1
- package/dist/packem_shared/live-status-CmuRLFKf.js +0 -1
- package/dist/packem_shared/log-line-BDI826X-.js +0 -1
- package/dist/packem_shared/modal-shell-CUwwWC2o.js +0 -1
- package/dist/packem_shared/operation-console-provider-BMJNtiyB.js +0 -1
- package/dist/packem_shared/recording-client-DtUxwVNY.js +0 -1
- package/dist/packem_shared/reference-view-DncEStdm.js +0 -12
- package/dist/packem_shared/result-chart-0VgP_3FP.js +0 -1
- package/dist/packem_shared/schema-diagram-GVgnLWTf.js +0 -2
- package/dist/packem_shared/scroll-area-DTEq6Jec.js +0 -2
- package/dist/packem_shared/select-BssZMiFY.js +0 -2
- package/dist/packem_shared/shard-history-DMEW5VBE.js +0 -1
- package/dist/packem_shared/skeleton-C1wQ9M5t.js +0 -1
- package/dist/packem_shared/sparkline-BNvxiJj_.js +0 -1
- package/dist/packem_shared/stat-card-BGJdhfm6.js +0 -1
- package/dist/packem_shared/studio-CUXq5VSB.js +0 -2
- package/dist/packem_shared/table-DZAB8cs3.js +0 -2
- package/dist/packem_shared/table-list-sidebar-fz0m_4I4.js +0 -1
- package/dist/packem_shared/textarea-Bu2-jKAs.js +0 -1
- package/dist/packem_shared/use-admin-query-CnnyWJXM.js +0 -1
- package/dist/packem_shared/use-async-submit-B32whHJO.js +0 -1
- package/dist/packem_shared/use-auth-config-0EnNCdLu.js +0 -1
- package/dist/packem_shared/use-open-trace-CniEgUdp.js +0 -1
- package/dist/packem_shared/use-shard-key-B2JtNa5m.js +0 -1
- package/dist/packem_shared/use-sql-assistant-Dtw55kKM.js +0 -1
- package/dist/packem_shared/useDebounced-CU-uftxO.js +0 -1
- package/dist/packem_shared/virtual-rect-1o1veP7R.js +0 -1
- package/dist/packem_shared/wire-codec-DkrdsFXO.js +0 -1
- package/dist/standalone/chunk-25IDU7IW.js +0 -1
- package/dist/standalone/chunk-2OUPA2WJ.js +0 -1
- package/dist/standalone/chunk-2QSHLBCO.js +0 -1
- package/dist/standalone/chunk-3C3CG7ZK.js +0 -1
- package/dist/standalone/chunk-3CWGJYBB.js +0 -1
- package/dist/standalone/chunk-3DH35OZ5.js +0 -1
- package/dist/standalone/chunk-3SCGCJYS.js +0 -1
- package/dist/standalone/chunk-3XIESWL4.js +0 -1
- package/dist/standalone/chunk-54MMVNPT.js +0 -1
- package/dist/standalone/chunk-5RIKPDDA.js +0 -1
- package/dist/standalone/chunk-5Y3QLNWX.js +0 -1
- package/dist/standalone/chunk-63D4ABMW.js +0 -1
- package/dist/standalone/chunk-6QBOXH2I.js +0 -1
- package/dist/standalone/chunk-7CZI2HNL.js +0 -1
- package/dist/standalone/chunk-7T7UOTYK.js +0 -1
- package/dist/standalone/chunk-7UP7OQJG.js +0 -1
- package/dist/standalone/chunk-AXQU7ULF.js +0 -1
- package/dist/standalone/chunk-BCOT3QRZ.js +0 -1
- package/dist/standalone/chunk-BG5ELOW6.js +0 -1
- package/dist/standalone/chunk-BXJPPINU.js +0 -1
- package/dist/standalone/chunk-BZDIRP7L.js +0 -1
- package/dist/standalone/chunk-C3YACIEE.js +0 -1
- package/dist/standalone/chunk-CAOA5AM4.js +0 -1
- package/dist/standalone/chunk-CFPZYHPY.js +0 -2
- package/dist/standalone/chunk-CZZWYUTR.js +0 -1
- package/dist/standalone/chunk-DJZYD5I5.js +0 -1
- package/dist/standalone/chunk-DNEIBTLL.js +0 -1
- package/dist/standalone/chunk-EF5J67J3.js +0 -1
- package/dist/standalone/chunk-EJWTF334.js +0 -1
- package/dist/standalone/chunk-EP4JQH5X.js +0 -1
- package/dist/standalone/chunk-ESVP44Y3.js +0 -1
- package/dist/standalone/chunk-EXL35M7T.js +0 -1
- package/dist/standalone/chunk-F3J6ER2V.js +0 -13
- package/dist/standalone/chunk-FURI47Z2.js +0 -1
- package/dist/standalone/chunk-FZ2N52BV.js +0 -1
- package/dist/standalone/chunk-GG6PIGQO.js +0 -1
- package/dist/standalone/chunk-GRL5MG3Z.js +0 -1
- package/dist/standalone/chunk-HBSEWNIR.js +0 -1
- package/dist/standalone/chunk-HLENOQDN.js +0 -1
- package/dist/standalone/chunk-HPFLBYRI.js +0 -1
- package/dist/standalone/chunk-HUF7RMS3.js +0 -1
- package/dist/standalone/chunk-I6A5C46N.js +0 -1
- package/dist/standalone/chunk-IBPWTHHW.js +0 -1
- package/dist/standalone/chunk-IGCNMZSB.js +0 -1
- package/dist/standalone/chunk-IVFHIQOT.js +0 -1
- package/dist/standalone/chunk-KZRWBSYQ.js +0 -1
- package/dist/standalone/chunk-LEDWUPXM.js +0 -1
- package/dist/standalone/chunk-MLT5MMMY.js +0 -1
- package/dist/standalone/chunk-OENUM3OW.js +0 -1
- package/dist/standalone/chunk-QLQADHFE.js +0 -1
- package/dist/standalone/chunk-RA5DW5MU.js +0 -1
- package/dist/standalone/chunk-RFSPHFKM.js +0 -1
- package/dist/standalone/chunk-RMN2JN4S.js +0 -1
- package/dist/standalone/chunk-S23KCFVU.js +0 -1
- package/dist/standalone/chunk-S4665UG5.js +0 -4
- package/dist/standalone/chunk-SD4BERSA.js +0 -1
- package/dist/standalone/chunk-SFDOII3B.js +0 -1
- package/dist/standalone/chunk-SMIESS7P.js +0 -1
- package/dist/standalone/chunk-SY6ANTKE.js +0 -1
- package/dist/standalone/chunk-TCV7MMYR.js +0 -1
- package/dist/standalone/chunk-UFESYXCE.js +0 -6
- package/dist/standalone/chunk-UKI2ZYB2.js +0 -1
- package/dist/standalone/chunk-UTK6JUTY.js +0 -1
- package/dist/standalone/chunk-V53KNYRN.js +0 -1
- package/dist/standalone/chunk-VIJLMIC3.js +0 -1
- package/dist/standalone/chunk-VOY5EALQ.js +0 -1
- package/dist/standalone/chunk-VR3OBMGZ.js +0 -1
- package/dist/standalone/chunk-WJCKVELA.js +0 -1
- package/dist/standalone/chunk-WJQLNYGX.js +0 -1
- package/dist/standalone/chunk-WPK2Q33V.js +0 -6
- package/dist/standalone/chunk-WQH3LT2P.js +0 -1
- package/dist/standalone/chunk-WZ65AZKA.js +0 -1
- package/dist/standalone/chunk-XEGWCG5S.js +0 -1
- package/dist/standalone/chunk-XFGE43TZ.js +0 -1
- package/dist/standalone/chunk-XNSCEAHM.js +0 -4
- package/dist/standalone/chunk-XXQUMVWH.js +0 -1
- package/dist/standalone/chunk-Y32QIKBS.js +0 -1
- package/dist/standalone/chunk-YJ25NVR2.js +0 -3
- package/dist/standalone/chunk-ZJGP6EKR.js +0 -1
- /package/dist/standalone/{chunk-XF2B7P5A.js → chunk-W2JBKQNU.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as
|
|
1
|
+
import{c as Q}from"react/compiler-runtime";import{useState as U}from"react";import{E as V}from"../packem_shared/error-alert-TYdKetJd.js";import{L as W}from"../packem_shared/live-status-Bf7rR8o8.js";import{ShardInput as G}from"../packem_shared/ShardInput-XumEzeT0.js";import{B as J}from"../packem_shared/badge-cAk9Di1Q.js";import{B as X}from"../packem_shared/button-BOPLD1un.js";import{C as Y,a as Z}from"../packem_shared/card-BGlQzQY-.js";import{E as ee}from"../packem_shared/empty-state-B939z6K2.js";import{T as te,a as re,b as L,c as a,d as le,e as n}from"../packem_shared/table-BMsuYFhk.js";import{u as se}from"../packem_shared/use-admin-query-P0RJrjsD.js";import{u as ae}from"../packem_shared/use-shard-key-BsP3o5wT.js";import{useT as ne}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.js";import{ADMIN_FUNCTIONS as oe}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{i as ie}from"../packem_shared/internal-CwaF9YNk.js";import{c as j}from"../packem_shared/utils-bhneXptQ.js";import{jsx as t,jsxs as y}from"react/jsx-runtime";const ce={action:"outline",mutation:"default",query:"secondary"},q=r=>r<1e3?`${r<10?r.toFixed(1):Math.round(r).toString()}ms`:`${(r/1e3).toFixed(2)}s`,de=r=>r.calls===0?"—":r.errors===0?"0":`${r.errors.toString()} (${(r.errors/r.calls*100).toFixed(1)}%)`,me=r=>{const e=r.conflicts??0;return r.calls===0?"—":e===0?"0":`${e.toString()} (${(e/r.calls*100).toFixed(1)}%)`},ue={calls:(r,e)=>e.calls-r.calls,recent:(r,e)=>e.lastCalledAt-r.lastCalledAt,slowest:(r,e)=>e.maxDurationMs-r.maxDurationMs},Ae=r=>{const e=Q(47),{functions:I,initialShardKey:P}=r,s=ne(),{queryShardKey:F,setShardKey:N,shardKey:S}=ae(P),[o,H]=U("recent");let M;e[0]===Symbol.for("react.memo_cache_sentinel")?(M={},e[0]=M):M=e[0];let T;e[1]!==F?(T={live:!0,shardKey:F},e[1]=F,e[2]=T):T=e[2];const{data:O,error:i,errorSource:b,liveError:v}=se(oe.getFunctionStats,M,T),k=O?.functions??null;let w;e[3]!==I?(w=new Map((I??[]).map(fe)),e[3]=I,e[4]=w):w=e[4];const _=w;let E;e[5]===Symbol.for("react.memo_cache_sentinel")?(E=C=>{H(C.currentTarget.dataset.sort)},e[5]=E):E=e[5];const z=E;let K;if(e[6]!==i||e[7]!==b||e[8]!==_||e[9]!==v||e[10]!==N||e[11]!==S||e[12]!==o||e[13]!==k||e[14]!==s){const C=k===null?[]:k.toSorted(ue[o]);let c;e[16]!==s?(c=s("Recent"),e[16]=s,e[17]=c):c=e[17];let d;e[18]!==c?(d={key:"recent",label:c},e[18]=c,e[19]=d):d=e[19];let m;e[20]!==s?(m=s("Most called"),e[20]=s,e[21]=m):m=e[21];let u;e[22]!==m?(u={key:"calls",label:m},e[22]=m,e[23]=u):u=e[23];let f;e[24]!==s?(f=s("Slowest"),e[24]=s,e[25]=f):f=e[25];let h;e[26]!==f?(h={key:"slowest",label:f},e[26]=f,e[27]=h):h=e[27];let $;e[28]!==h||e[29]!==d||e[30]!==u?($=[d,u,h],e[28]=h,e[29]=d,e[30]=u,e[31]=$):$=e[31];const D=$;let p;e[32]!==N||e[33]!==S?(p=t(G,{onChange:N,testId:"fs-shard-input",value:S}),e[32]=N,e[33]=S,e[34]=p):p=e[34];let x;e[35]!==v?(x=t(W,{message:v,prefix:"fs"}),e[35]=v,e[36]=x):x=e[36];let g;e[37]!==D||e[38]!==o?(g=t("div",{className:"ml-auto flex items-center gap-1",role:"group",children:D.map(l=>t(X,{"data-sort":l.key,"data-testid":`fs-sort-${l.key}`,onClick:z,size:"sm",type:"button",variant:o===l.key?"secondary":"ghost",children:l.label},l.key))}),e[37]=D,e[38]=o,e[39]=g):g=e[39];let A;e[40]!==p||e[41]!==x||e[42]!==g?(A=y("div",{className:"flex flex-wrap items-center gap-2",children:[p,x,g]}),e[40]=p,e[41]=x,e[42]=g,e[43]=A):A=e[43];let B;e[44]!==i||e[45]!==b?(B=i!==null&&t(V,{error:b,testId:"fs-error"}),e[44]=i,e[45]=b,e[46]=B):B=e[46],K=y("div",{className:"flex flex-col gap-4","data-testid":"lunora-function-stats",children:[A,B,k!==null&&C.length===0&&i===null&&t(ee,{description:s("Per-function call counts, error rates, and latency land here after your first request."),icon:y("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:[t("path",{d:"M3 3v18h18"}),t("path",{d:"M7 14l4-4 3 3 5-6"})]}),testId:"fs-empty",title:s("No functions have run on this shard yet.")}),C.length>0&&t(Y,{className:"overflow-hidden py-0",children:t(Z,{className:"px-0",children:y(te,{"data-testid":"fs-table",children:[t(re,{children:y(L,{children:[t(a,{children:s("function")}),t(a,{children:s("kind")}),t(a,{className:"text-right",children:s("calls")}),t(a,{className:"text-right",children:s("errors")}),t(a,{className:"text-right",children:s("conflicts")}),t(a,{className:"text-right",children:s("avg")}),t(a,{className:"text-right",children:s("max")}),t(a,{children:s("last run")}),t(a,{children:s("last error")})]})}),t(le,{children:C.map(l=>{const R=_.get(l.path);return y(L,{"data-testid":`fs-row-${l.path}`,children:[t(n,{className:"font-medium",children:l.path}),t(n,{children:R===void 0?t("span",{className:"text-muted-foreground",children:"—"}):t(J,{variant:ce[R],children:R})}),t(n,{className:"text-right tabular-nums",children:l.calls}),t(n,{className:j("text-right tabular-nums",l.errors>0&&"text-destructive"),children:de(l)}),t(n,{className:j("text-right tabular-nums",(l.conflicts??0)>0&&"text-warning"),children:me(l)}),t(n,{className:"text-right tabular-nums",children:l.calls===0?"—":q(l.totalDurationMs/l.calls)}),t(n,{className:"text-right tabular-nums",children:l.calls===0?"—":q(l.maxDurationMs)}),t(n,{className:"text-muted-foreground",children:ie(l.lastCalledAt,"—")}),t(n,{className:"max-w-[24ch] truncate text-destructive",title:l.lastErrorMessage??void 0,children:l.lastErrorMessage??t("span",{className:"text-muted-foreground",children:"—"})})]},l.path)})})]})})})]}),e[6]=i,e[7]=b,e[8]=_,e[9]=v,e[10]=N,e[11]=S,e[12]=o,e[13]=k,e[14]=s,e[15]=K}else K=e[15];return K};function fe(r){return[r.path,r.kind]}export{Ae as FunctionStatsPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as ae}from"react/compiler-runtime";import{useLunora as pe}from"@lunora/react";import{useState as w,useRef as F,useEffect as L,useCallback as ge}from"react";import xe from"../packem_shared/ConnectionBadge-DOk0CQWo.js";import{L as ve}from"../packem_shared/live-status-CmuRLFKf.js";import{g as z}from"../packem_shared/badge-BbuuAio7.js";import{c as A}from"../packem_shared/card-BMKx5UdA.js";import{N as be}from"../packem_shared/use-admin-query-CnnyWJXM.js";import{useT as le}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as E}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{i as Ne,f as G,d as ee,b as te,g as j}from"../packem_shared/internal-zkEvTqy8.js";import{l as ye}from"../packem_shared/shard-history-DMEW5VBE.js";import{c as $}from"../packem_shared/utils-bhneXptQ.js";import{jsx as l,jsxs as d}from"react/jsx-runtime";import{shardsToAggregate as we}from"../packem_shared/aggregateMetrics-BNfajLa2.js";import{S as Q}from"../packem_shared/sparkline-BNvxiJj_.js";const ke={crit:"destructive",ok:"secondary",warn:"default"},_=(s,e)=>e===0?"—":`${(s/e*100).toFixed(1)}%`,V=(s,e,r)=>Number.isNaN(s)?"ok":s>=r?"crit":s>=e?"warn":"ok",ne=.01,oe=.05,Se=s=>{const e=ae(36),{errorCount:r,logsError:t,topErrors:a,worstFunctions:h}=s,o=le();let n;e[0]!==o?(n=o("Functions by error rate"),e[0]=o,e[1]=n):n=e[1];let f;e[2]!==n?(f=l("header",{className:"border-b border-border px-4 py-3",children:l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:n})}),e[2]=n,e[3]=f):f=e[3];let m;e[4]!==o||e[5]!==h?(m=h.length===0?l("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"hl-functions-empty",children:o("No function activity yet.")}):l("ul",{className:"divide-y divide-border",children:h.map(N=>d("li",{className:"flex flex-wrap items-center justify-between gap-2 px-4 py-2 text-xs","data-testid":"hl-fn-row",children:[l("span",{className:"truncate font-mono text-foreground",children:N.path}),d("span",{className:"flex shrink-0 items-center gap-2",children:[l("span",{className:"tabular-nums text-muted-foreground",children:o("{count} calls",{count:N.calls.toString()})}),l(z,{variant:ke[V(N.errors/N.calls,ne,oe)],children:_(N.errors,N.calls)})]})]},N.path))}),e[4]=o,e[5]=h,e[6]=m):m=e[6];let p;e[7]!==f||e[8]!==m?(p=d(A,{className:"gap-0 py-0","data-testid":"hl-functions",children:[f,m]}),e[7]=f,e[8]=m,e[9]=p):p=e[9];let v;e[10]!==o?(v=o("Recent errors"),e[10]=o,e[11]=v):v=e[11];let i;e[12]!==v?(i=l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:v}),e[12]=v,e[13]=i):i=e[13];const c=r>0?"destructive":"outline";let g;e[14]!==r||e[15]!==c?(g=l(z,{"data-testid":"hl-error-count",variant:c,children:r}),e[14]=r,e[15]=c,e[16]=g):g=e[16];let x;e[17]!==i||e[18]!==g?(x=d("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[i,g]}),e[17]=i,e[18]=g,e[19]=x):x=e[19];let k;e[20]!==t?(k=t!==null&&l("p",{className:"px-4 py-8 text-center text-sm text-destructive","data-testid":"hl-logs-error",role:"alert",children:t}),e[20]=t,e[21]=k):k=e[21];let S;e[22]!==t||e[23]!==o||e[24]!==a.length?(S=t===null&&a.length===0&&l("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"hl-errors-empty",children:o("No recent errors.")}),e[22]=t,e[23]=o,e[24]=a.length,e[25]=S):S=e[25];let q;e[26]!==a?(q=a.length>0&&l("ul",{className:"divide-y divide-border",children:a.map(qe)}),e[26]=a,e[27]=q):q=e[27];let b;e[28]!==k||e[29]!==S||e[30]!==q||e[31]!==x?(b=d(A,{className:"gap-0 py-0",children:[x,k,S,q]}),e[28]=k,e[29]=S,e[30]=q,e[31]=x,e[32]=b):b=e[32];let y;return e[33]!==b||e[34]!==p?(y=d("div",{className:"grid gap-3 lg:grid-cols-2",children:[p,b]}),e[33]=b,e[34]=p,e[35]=y):y=e[35],y};function qe(s,e){return d("li",{className:"flex flex-col gap-0.5 px-4 py-2 text-xs","data-testid":"hl-error-row",children:[d("span",{className:"flex items-center gap-2",children:[l("time",{className:"shrink-0 text-muted-foreground",children:Ne(s.timestamp)}),s.functionPath!==void 0&&l("span",{className:"truncate font-mono text-foreground",children:s.functionPath})]}),l("span",{className:"text-destructive",children:s.message})]},`${s.timestamp.toString()}-${e.toString()}`)}const re={completed:0,failed:2,in_progress:1},Ee=s=>{let e=0,r=0,t=0,a=0,h=!1;const o=[];for(const{metrics:n}of s){if(n===null){a+=1;continue}t+=1,e+=n.requests,r+=n.errors,o.push(...n.history??[]),h||=n.historyTruncated===!0}return{errors:r,failed:a,history:o,historyTruncated:h,reachable:t,requests:e}},Me=s=>{const e=new Map;for(const r of s)for(const t of r){const a=e.get(t.path);if(a===void 0){e.set(t.path,{...t});continue}a.calls+=t.calls,a.errors+=t.errors,a.totalDurationMs+=t.totalDurationMs,a.scans=(a.scans??0)+(t.scans??0),a.maxDurationMs=Math.max(a.maxDurationMs,t.maxDurationMs),a.lastCalledAt=Math.max(a.lastCalledAt,t.lastCalledAt),(t.lastErrorAt??0)>(a.lastErrorAt??0)&&(a.lastErrorAt=t.lastErrorAt,a.lastErrorMessage=t.lastErrorMessage)}return[...e.values()]},$e=s=>{const e=new Map;for(const r of s)for(const t of r){const a=e.get(t.id);if(a===void 0){e.set(t.id,t);continue}const h=re[t.status]-re[a.status];(h>0||h===0&&(t.updatedAt??0)>(a.updatedAt??0))&&e.set(t.id,t)}return[...e.values()]},Ae=j(E.getAuthMetrics),je=j(E.getFunctionStats),Ie=j(E.getLogs),Te=j(E.getMetrics),Pe=j(E.migrationStatus),Re=5,se=2e3,Ce=5,De=.1,Fe=.3,Le=1,Oe=50,_e=(s,e,r)=>s>=r?"crit":s>=e?"warn":"ok",ze=s=>{const e=new Map;for(const t of s??[]){const a=e.get(t.bucketMs)??{calls:0,errors:0};a.calls+=t.calls,a.errors+=t.errors,e.set(t.bucketMs,a)}const r=[...e.entries()].toSorted((t,a)=>t[0]-a[0]);return{errors:r.map(([,t])=>t.errors),requests:r.map(([,t])=>t.calls)}},Ke=s=>{let e=0,r=0;for(const a of s)a.status==="failed"?e+=1:a.status==="in_progress"&&(r+=1);let t="ok";return e>0?t="crit":r>0&&(t="warn"),{failed:e,level:t,running:r}},He=(s,e)=>s.failed>0?e("{count} failed",{count:s.failed.toString()}):s.running>0?e("{count} running",{count:s.running.toString()}):e("OK"),ie={crit:"bg-destructive",ok:"bg-success",warn:"bg-warning"},ce={crit:"text-destructive",ok:"text-foreground",warn:"text-warning"},Ue={crit:"bg-destructive/10 text-destructive",ok:"bg-success/10 text-success",warn:"bg-warning/10 text-warning"},Be=s=>s.includes("crit")?"crit":s.includes("warn")?"warn":"ok",O=s=>{const e=ae(19),{chart:r,label:t,level:a,testId:h,value:o}=s,n=ie[a];let f;e[0]!==n?(f=$("size-1.5 shrink-0 rounded-full",n),e[0]=n,e[1]=f):f=e[1];let m;e[2]!==f?(m=l("span",{"aria-hidden":"true",className:f}),e[2]=f,e[3]=m):m=e[3];let p;e[4]!==t||e[5]!==m?(p=d("span",{className:"flex items-center gap-1.5 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:[m,t]}),e[4]=t,e[5]=m,e[6]=p):p=e[6];const v=ce[a];let i;e[7]!==v?(i=$("truncate text-2xl font-semibold tabular-nums",v),e[7]=v,e[8]=i):i=e[8];let c;e[9]!==i||e[10]!==h||e[11]!==o?(c=l("span",{className:i,"data-testid":h,children:o}),e[9]=i,e[10]=h,e[11]=o,e[12]=c):c=e[12];let g;e[13]!==r||e[14]!==c?(g=d("div",{className:"flex items-center justify-between gap-3",children:[c,r]}),e[13]=r,e[14]=c,e[15]=g):g=e[15];let x;return e[16]!==p||e[17]!==g?(x=l(A,{className:"gap-0 py-0",children:d("div",{className:"flex flex-col gap-2.5 p-4",children:[p,g]})}),e[16]=p,e[17]=g,e[18]=x):x=e[18],x},Ge=async(s,e,r)=>{const t=await Promise.all(r.map(i=>{const c=ee(i);return Promise.allSettled([s.query(Te,{},c),s.query(je,{},c),s.query(Pe,{},c)])})),a=ee(e),h=typeof s.schedulerStatus=="function"?s.schedulerStatus():Promise.reject(new Error("scheduler status unavailable")),[o,n,f]=await Promise.allSettled([s.query(Ie,{},a),s.query(Ae,{},a),h]),m=t.map(([i,c,g])=>({functions:c.status==="fulfilled"?c.value.functions:[],metrics:i.status==="fulfilled"?i.value:null,migrations:g.status==="fulfilled"?g.value.migrations:[]})),p=Ee(m),v=t[0]?.[0];return{auth:n.status==="fulfilled"?n.value:null,entries:o.status==="fulfilled"?o.value.entries:[],functions:Me(m.map(i=>i.functions)),logsError:o.status==="rejected"?te(o.reason):null,metricsError:p.reachable===0&&v?.status==="rejected"?te(v.reason):null,migrations:$e(m.map(i=>i.migrations)),scheduler:f.status==="fulfilled"?f.value:null,totals:p}},Qe=s=>{const e=s?.history??[];return{attempts:e.map(r=>r.attempts),failures:e.map(r=>r.failures)}},dt=({initialShardKey:s})=>{const e=pe(),r=le(),[t,a]=w([]),[h,o]=w(null),[n,f]=w(null),[m,p]=w(null),[v,i]=w([]),[c,g]=w(null),[x,k]=w(null),[S,q]=w([]),[b]=w(ye),y=F(!1),N=F(!0);L(()=>(N.current=!0,()=>{N.current=!1}),[]);const I=s??"",T=ge(async()=>{if(y.current)return;y.current=!0;const u=await Ge(e,I,we(I,b));if(!N.current){y.current=!1;return}f(u.totals),p(u.metricsError),i(u.functions),q(u.migrations),a(u.entries),o(u.logsError),g(u.auth),k(u.scheduler),y.current=!1},[e,b,I]);L(()=>{G(T())},[T]);const K=F(0),M=F(null),de=()=>{const u=Date.now()-K.current;if(u>=se){K.current=Date.now(),G(T());return}M.current===null&&(M.current=setTimeout(()=>{M.current=null,K.current=Date.now(),G(T())},se-u))};L(()=>()=>{M.current!==null&&clearTimeout(M.current)},[]);const{data:W,liveError:ue}=be(E.getMetrics,{},{live:!0,shardKey:I});L(()=>{W!==void 0&&de()},[W]);const Z=t.filter(u=>u.level==="error"),me=Z.slice(0,Re),P=ze(n?.history),J=Qe(c),he=v.filter(u=>u.calls>0).toSorted((u,B)=>B.errors/B.calls-u.errors/u.calls||B.calls-u.calls).slice(0,Ce),H=Ke(S),fe=n===null||n.requests===0?0:n.errors/n.requests,U=V(fe,ne,oe),X=c===null?"ok":V(c.failureRate,De,Fe),Y=x===null?"ok":_e(x.backlog,Le,Oe),R=Be([U,X,Y,H.level]);let C,D;return R==="crit"?(C=r("Critical"),D=r("One or more service levels are breached.")):R==="warn"?(C=r("Degraded"),D=r("Some service levels need attention.")):(C=r("All systems healthy"),D=r("All service levels are within target.")),d("div",{className:"flex flex-col gap-6","data-testid":"lunora-health",children:[d(A,{className:"gap-0 py-0",children:[d("div",{className:"flex flex-wrap items-center justify-between gap-4 p-4",children:[d("div",{className:"flex items-center gap-3",children:[l("span",{"aria-hidden":"true",className:$("flex size-10 shrink-0 items-center justify-center rounded-full",Ue[R]),children:l("span",{className:$("size-3 rounded-full",ie[R])})}),d("div",{className:"grid leading-tight",children:[l("span",{className:"text-sm font-semibold text-foreground","data-testid":"hl-status",children:C}),l("span",{className:"text-[13px] text-muted-foreground",children:D})]})]}),d("div",{className:"flex flex-wrap items-center gap-4",children:[d("div",{className:"text-end",children:[l("div",{className:"font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:r("Requests")}),d("div",{className:"flex items-center justify-end gap-2",children:[P.requests.length>=2&&l(Q,{ariaLabel:r("Requests over time"),className:"h-6 w-20 text-foreground",series:P.requests,testId:"hl-spark-requests"}),l("span",{className:"text-lg font-semibold tabular-nums text-foreground","data-testid":"hl-requests",children:(n?.requests??0).toString()})]})]}),l("span",{"aria-hidden":"true",className:"h-9 w-px bg-border"}),d("div",{className:"text-end",children:[l("div",{className:"font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:r("Error rate")}),l("div",{className:$("text-lg font-semibold tabular-nums",ce[U]),"data-testid":"hl-error-rate",children:n===null?"—":_(n.errors,n.requests)})]}),l("span",{"aria-hidden":"true",className:"h-9 w-px bg-border"}),d("div",{className:"flex items-center gap-2",children:[l(xe,{}),l(ve,{message:ue,prefix:"hl"})]})]})]}),m!==null&&l("div",{className:"border-t border-border bg-destructive/5 px-4 py-2 text-sm text-destructive","data-testid":"hl-metrics-error",role:"alert",children:m}),m===null&&n?.historyTruncated===!0&&l("div",{className:"border-t border-border bg-warning/5 px-4 py-2 text-sm text-muted-foreground","data-testid":"hl-history-truncated",children:r("Showing a partial request/error history — one or more shards have more data than the trend chart can display.")})]}),d("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-4","data-testid":"hl-slo",children:[l(O,{chart:P.errors.length>=2?l(Q,{ariaLabel:r("Errors over time"),className:"h-7 w-20 text-destructive",series:P.errors,testId:"hl-spark-errors"}):void 0,label:r("Error rate"),level:U,testId:"hl-slo-errorrate",value:n===null?"—":_(n.errors,n.requests)}),l(O,{chart:J.failures.length>=2?l(Q,{ariaLabel:r("Auth failures over time"),className:"h-7 w-20 text-destructive",series:J.failures,testId:"hl-spark-auth"}):void 0,label:r("Auth failures"),level:X,testId:"hl-slo-auth",value:c===null?"—":_(c.failures,c.attempts)}),l(O,{label:r("Scheduler backlog"),level:Y,testId:"hl-slo-backlog",value:x===null?"—":x.backlog.toString()}),l(O,{label:r("Migrations"),level:H.level,testId:"hl-slo-migrations",value:He(H,r)})]}),l(Se,{errorCount:Z.length,logsError:h,topErrors:me,worstFunctions:he}),d(A,{className:"gap-0 py-0",children:[d("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r("Shards seen")}),l(z,{"data-testid":"hl-shard-count",variant:"outline",children:b.length})]}),b.length>0&&l("ul",{className:"flex flex-wrap gap-1.5 p-4",children:b.map(u=>l("li",{"data-testid":"hl-shard",children:l(z,{variant:"secondary",children:u})},u))})]})]})};export{dt as HealthPanel};
|
|
1
|
+
import{c as ae}from"react/compiler-runtime";import{useLunora as pe}from"@lunora/react";import{useState as E,useRef as D,useEffect as j,useCallback as ge}from"react";import xe from"../packem_shared/ConnectionBadge-Bh16X9-u.js";import{L as ve}from"../packem_shared/live-status-Bf7rR8o8.js";import{B as G}from"../packem_shared/badge-cAk9Di1Q.js";import{C as M}from"../packem_shared/card-BGlQzQY-.js";import{u as Ne}from"../packem_shared/use-admin-query-P0RJrjsD.js";import{useT as le}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.js";import{ADMIN_FUNCTIONS as A}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{i as be,f as $,d as ee,b as te,c as _}from"../packem_shared/internal-CwaF9YNk.js";import{l as we}from"../packem_shared/shard-history-QcjcMnCA.js";import{c as R}from"../packem_shared/utils-bhneXptQ.js";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{shardsToAggregate as Ee}from"../packem_shared/aggregateMetrics-A-Y7OH6R.js";import{S as z}from"../packem_shared/sparkline-BreIqzDO.js";const Se={crit:"destructive",ok:"secondary",warn:"default"},P=(s,e)=>e===0?"—":`${(s/e*100).toFixed(1)}%`,Q=(s,e,r)=>Number.isNaN(s)?"ok":s>=r?"crit":s>=e?"warn":"ok",ne=.01,oe=.05,ye=s=>{const e=ae(36),{errorCount:r,logsError:t,topErrors:a,worstFunctions:f}=s,o=le();let n;e[0]!==o?(n=o("Functions by error rate"),e[0]=o,e[1]=n):n=e[1];let h;e[2]!==n?(h=l("header",{className:"border-b border-border px-4 py-3",children:l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:n})}),e[2]=n,e[3]=h):h=e[3];let m;e[4]!==o||e[5]!==f?(m=f.length===0?l("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"hl-functions-empty",children:o("No function activity yet.")}):l("ul",{className:"divide-y divide-border",children:f.map(b=>u("li",{className:"flex flex-wrap items-center justify-between gap-2 px-4 py-2 text-xs","data-testid":"hl-fn-row",children:[l("span",{className:"truncate font-mono text-foreground",children:b.path}),u("span",{className:"flex shrink-0 items-center gap-2",children:[l("span",{className:"tabular-nums text-muted-foreground",children:o("{count} calls",{count:b.calls.toString()})}),l(G,{variant:Se[Q(b.errors/b.calls,ne,oe)],children:P(b.errors,b.calls)})]})]},b.path))}),e[4]=o,e[5]=f,e[6]=m):m=e[6];let p;e[7]!==h||e[8]!==m?(p=u(M,{className:"gap-0 py-0","data-testid":"hl-functions",children:[h,m]}),e[7]=h,e[8]=m,e[9]=p):p=e[9];let v;e[10]!==o?(v=o("Recent errors"),e[10]=o,e[11]=v):v=e[11];let i;e[12]!==v?(i=l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:v}),e[12]=v,e[13]=i):i=e[13];const c=r>0?"destructive":"outline";let g;e[14]!==r||e[15]!==c?(g=l(G,{"data-testid":"hl-error-count",variant:c,children:r}),e[14]=r,e[15]=c,e[16]=g):g=e[16];let x;e[17]!==i||e[18]!==g?(x=u("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[i,g]}),e[17]=i,e[18]=g,e[19]=x):x=e[19];let S;e[20]!==t?(S=t!==null&&l("p",{className:"px-4 py-8 text-center text-sm text-destructive","data-testid":"hl-logs-error",role:"alert",children:t}),e[20]=t,e[21]=S):S=e[21];let y;e[22]!==t||e[23]!==o||e[24]!==a.length?(y=t===null&&a.length===0&&l("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"hl-errors-empty",children:o("No recent errors.")}),e[22]=t,e[23]=o,e[24]=a.length,e[25]=y):y=e[25];let T;e[26]!==a?(T=a.length>0&&l("ul",{className:"divide-y divide-border",children:a.map(Te)}),e[26]=a,e[27]=T):T=e[27];let N;e[28]!==S||e[29]!==y||e[30]!==T||e[31]!==x?(N=u(M,{className:"gap-0 py-0",children:[x,S,y,T]}),e[28]=S,e[29]=y,e[30]=T,e[31]=x,e[32]=N):N=e[32];let w;return e[33]!==N||e[34]!==p?(w=u("div",{className:"grid gap-3 lg:grid-cols-2",children:[p,N]}),e[33]=N,e[34]=p,e[35]=w):w=e[35],w};function Te(s,e){return u("li",{className:"flex flex-col gap-0.5 px-4 py-2 text-xs","data-testid":"hl-error-row",children:[u("span",{className:"flex items-center gap-2",children:[l("time",{className:"shrink-0 text-muted-foreground",children:be(s.timestamp)}),s.functionPath!==void 0&&l("span",{className:"truncate font-mono text-foreground",children:s.functionPath})]}),l("span",{className:"text-destructive",children:s.message})]},`${s.timestamp.toString()}-${e.toString()}`)}const re={completed:0,failed:2,in_progress:1},Ae=s=>{let e=0,r=0,t=0,a=0,f=!1;const o=[];for(const{metrics:n}of s){if(n===null){a+=1;continue}t+=1,e+=n.requests,r+=n.errors,o.push(...n.history??[]),f||=n.historyTruncated===!0}return{errors:r,failed:a,history:o,historyTruncated:f,reachable:t,requests:e}},ke=s=>{const e=new Map;for(const r of s)for(const t of r){const a=e.get(t.path);if(a===void 0){e.set(t.path,{...t});continue}a.calls+=t.calls,a.errors+=t.errors,a.totalDurationMs+=t.totalDurationMs,a.scans=(a.scans??0)+(t.scans??0),a.maxDurationMs=Math.max(a.maxDurationMs,t.maxDurationMs),a.lastCalledAt=Math.max(a.lastCalledAt,t.lastCalledAt),(t.lastErrorAt??0)>(a.lastErrorAt??0)&&(a.lastErrorAt=t.lastErrorAt,a.lastErrorMessage=t.lastErrorMessage)}return[...e.values()]},Re=s=>{const e=new Map;for(const r of s)for(const t of r){const a=e.get(t.id);if(a===void 0){e.set(t.id,t);continue}const f=re[t.status]-re[a.status];(f>0||f===0&&(t.updatedAt??0)>(a.updatedAt??0))&&e.set(t.id,t)}return[...e.values()]},Me=_(A.getAuthMetrics),_e=_(A.getFunctionStats),Le=_(A.getLogs),Ie=_(A.getMetrics),Ce=_(A.migrationStatus),qe=5,se=2e3,Oe=5,Fe=.1,De=.3,je=1,Ue=50,Pe=(s,e,r)=>s>=r?"crit":s>=e?"warn":"ok",Ge=s=>{const e=new Map;for(const t of s??[]){const a=e.get(t.bucketMs)??{calls:0,errors:0};a.calls+=t.calls,a.errors+=t.errors,e.set(t.bucketMs,a)}const r=[...e.entries()].toSorted((t,a)=>t[0]-a[0]);return{errors:r.map(([,t])=>t.errors),requests:r.map(([,t])=>t.calls)}},Ve=s=>{let e=0,r=0;for(const a of s)a.status==="failed"?e+=1:a.status==="in_progress"&&(r+=1);let t="ok";return e>0?t="crit":r>0&&(t="warn"),{failed:e,level:t,running:r}},Be=(s,e)=>s.failed>0?e("{count} failed",{count:s.failed.toString()}):s.running>0?e("{count} running",{count:s.running.toString()}):e("OK"),ie={crit:"bg-destructive",ok:"bg-success",warn:"bg-warning"},ce={crit:"text-destructive",ok:"text-foreground",warn:"text-warning"},He={crit:"bg-destructive/10 text-destructive",ok:"bg-success/10 text-success",warn:"bg-warning/10 text-warning"},Ke=s=>s.includes("crit")?"crit":s.includes("warn")?"warn":"ok",U=s=>{const e=ae(19),{chart:r,label:t,level:a,testId:f,value:o}=s,n=ie[a];let h;e[0]!==n?(h=R("size-1.5 shrink-0 rounded-full",n),e[0]=n,e[1]=h):h=e[1];let m;e[2]!==h?(m=l("span",{"aria-hidden":"true",className:h}),e[2]=h,e[3]=m):m=e[3];let p;e[4]!==t||e[5]!==m?(p=u("span",{className:"flex items-center gap-1.5 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:[m,t]}),e[4]=t,e[5]=m,e[6]=p):p=e[6];const v=ce[a];let i;e[7]!==v?(i=R("truncate text-2xl font-semibold tabular-nums",v),e[7]=v,e[8]=i):i=e[8];let c;e[9]!==i||e[10]!==f||e[11]!==o?(c=l("span",{className:i,"data-testid":f,children:o}),e[9]=i,e[10]=f,e[11]=o,e[12]=c):c=e[12];let g;e[13]!==r||e[14]!==c?(g=u("div",{className:"flex items-center justify-between gap-3",children:[c,r]}),e[13]=r,e[14]=c,e[15]=g):g=e[15];let x;return e[16]!==p||e[17]!==g?(x=l(M,{className:"gap-0 py-0",children:u("div",{className:"flex flex-col gap-2.5 p-4",children:[p,g]})}),e[16]=p,e[17]=g,e[18]=x):x=e[18],x},$e=async(s,e,r)=>{const t=await Promise.all(r.map(i=>{const c=ee(i);return Promise.allSettled([s.query(Ie,{},c),s.query(_e,{},c),s.query(Ce,{},c)])})),a=ee(e),f=typeof s.schedulerStatus=="function"?s.schedulerStatus():Promise.reject(new Error("scheduler status unavailable")),[o,n,h]=await Promise.allSettled([s.query(Le,{},a),s.query(Me,{},a),f]),m=t.map(([i,c,g])=>({functions:c.status==="fulfilled"?c.value.functions:[],metrics:i.status==="fulfilled"?i.value:null,migrations:g.status==="fulfilled"?g.value.migrations:[]})),p=Ae(m),v=t[0]?.[0];return{auth:n.status==="fulfilled"?n.value:null,entries:o.status==="fulfilled"?o.value.entries:[],functions:ke(m.map(i=>i.functions)),logsError:o.status==="rejected"?te(o.reason):null,metricsError:p.reachable===0&&v?.status==="rejected"?te(v.reason):null,migrations:Re(m.map(i=>i.migrations)),scheduler:h.status==="fulfilled"?h.value:null,totals:p}},ze=s=>{const e=s?.history??[];return{attempts:e.map(r=>r.attempts),failures:e.map(r=>r.failures)}},ut=({initialShardKey:s})=>{const e=pe(),r=le(),[t,a]=E([]),[f,o]=E(null),[n,h]=E(null),[m,p]=E(null),[v,i]=E([]),[c,g]=E(null),[x,S]=E(null),[y,T]=E([]),[N]=E(we),w=D(!1),b=D(!0);j(()=>(b.current=!0,()=>{b.current=!1}),[]);const L=s??"",I=ge(async()=>{if(w.current)return;w.current=!0;const d=await $e(e,L,Ee(L,N));if(!b.current){w.current=!1;return}h(d.totals),p(d.metricsError),i(d.functions),T(d.migrations),a(d.entries),o(d.logsError),g(d.auth),S(d.scheduler),w.current=!1},[e,N,L]);j(()=>{$(I())},[I]);const V=D(0),k=D(null),ue=()=>{const d=Date.now()-V.current;if(d>=se){V.current=Date.now(),$(I());return}k.current===null&&(k.current=setTimeout(()=>{k.current=null,V.current=Date.now(),$(I())},se-d))};j(()=>()=>{k.current!==null&&clearTimeout(k.current)},[]);const{data:W,liveError:de}=Ne(A.getMetrics,{},{live:!0,shardKey:L});j(()=>{W!==void 0&&ue()},[W]);const X=t.filter(d=>d.level==="error"),me=X.slice(0,qe),C=Ge(n?.history),J=ze(c),fe=v.filter(d=>d.calls>0).toSorted((d,K)=>K.errors/K.calls-d.errors/d.calls||K.calls-d.calls).slice(0,Oe),B=Ve(y),he=n===null||n.requests===0?0:n.errors/n.requests,H=Q(he,ne,oe),Y=c===null?"ok":Q(c.failureRate,Fe,De),Z=x===null?"ok":Pe(x.backlog,je,Ue),q=Ke([H,Y,Z,B.level]);let O,F;return q==="crit"?(O=r("Critical"),F=r("One or more service levels are breached.")):q==="warn"?(O=r("Degraded"),F=r("Some service levels need attention.")):(O=r("All systems healthy"),F=r("All service levels are within target.")),u("div",{className:"flex flex-col gap-6","data-testid":"lunora-health",children:[u(M,{className:"gap-0 py-0",children:[u("div",{className:"flex flex-wrap items-center justify-between gap-4 p-4",children:[u("div",{className:"flex items-center gap-3",children:[l("span",{"aria-hidden":"true",className:R("flex size-10 shrink-0 items-center justify-center rounded-full",He[q]),children:l("span",{className:R("size-3 rounded-full",ie[q])})}),u("div",{className:"grid leading-tight",children:[l("span",{className:"text-sm font-semibold text-foreground","data-testid":"hl-status",children:O}),l("span",{className:"text-[13px] text-muted-foreground",children:F})]})]}),u("div",{className:"flex flex-wrap items-center gap-4",children:[u("div",{className:"text-end",children:[l("div",{className:"font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:r("Requests")}),u("div",{className:"flex items-center justify-end gap-2",children:[C.requests.length>=2&&l(z,{ariaLabel:r("Requests over time"),className:"h-6 w-20 text-foreground",series:C.requests,testId:"hl-spark-requests"}),l("span",{className:"text-lg font-semibold tabular-nums text-foreground","data-testid":"hl-requests",children:(n?.requests??0).toString()})]})]}),l("span",{"aria-hidden":"true",className:"h-9 w-px bg-border"}),u("div",{className:"text-end",children:[l("div",{className:"font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:r("Error rate")}),l("div",{className:R("text-lg font-semibold tabular-nums",ce[H]),"data-testid":"hl-error-rate",children:n===null?"—":P(n.errors,n.requests)})]}),l("span",{"aria-hidden":"true",className:"h-9 w-px bg-border"}),u("div",{className:"flex items-center gap-2",children:[l(xe,{}),l(ve,{message:de,prefix:"hl"})]})]})]}),m!==null&&l("div",{className:"border-t border-border bg-destructive/5 px-4 py-2 text-sm text-destructive","data-testid":"hl-metrics-error",role:"alert",children:m}),m===null&&n?.historyTruncated===!0&&l("div",{className:"border-t border-border bg-warning/5 px-4 py-2 text-sm text-muted-foreground","data-testid":"hl-history-truncated",children:r("Showing a partial request/error history — one or more shards have more data than the trend chart can display.")})]}),u("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-4","data-testid":"hl-slo",children:[l(U,{chart:C.errors.length>=2?l(z,{ariaLabel:r("Errors over time"),className:"h-7 w-20 text-destructive",series:C.errors,testId:"hl-spark-errors"}):void 0,label:r("Error rate"),level:H,testId:"hl-slo-errorrate",value:n===null?"—":P(n.errors,n.requests)}),l(U,{chart:J.failures.length>=2?l(z,{ariaLabel:r("Auth failures over time"),className:"h-7 w-20 text-destructive",series:J.failures,testId:"hl-spark-auth"}):void 0,label:r("Auth failures"),level:Y,testId:"hl-slo-auth",value:c===null?"—":P(c.failures,c.attempts)}),l(U,{label:r("Scheduler backlog"),level:Z,testId:"hl-slo-backlog",value:x===null?"—":x.backlog.toString()}),l(U,{label:r("Migrations"),level:B.level,testId:"hl-slo-migrations",value:Be(B,r)})]}),l(ye,{errorCount:X.length,logsError:f,topErrors:me,worstFunctions:fe}),u(M,{className:"gap-0 py-0",children:[u("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r("Shards seen")}),l(G,{"data-testid":"hl-shard-count",variant:"outline",children:N.length})]}),N.length>0&&l("ul",{className:"flex flex-wrap gap-1.5 p-4",children:N.map(d=>l("li",{"data-testid":"hl-shard",children:l(G,{variant:"secondary",children:d})},d))})]})]})};export{ut as HealthPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as
|
|
1
|
+
import{c as V}from"react/compiler-runtime";import{useLunora as ne}from"@lunora/react";import{useNavigate as se}from"@tanstack/react-router";import{useState as H,useRef as re,useEffectEvent as j,useEffect as O,useCallback as ae,useMemo as oe}from"react";import{ShardInput as ie}from"../packem_shared/ShardInput-XumEzeT0.js";import{B as ce}from"../packem_shared/button-BOPLD1un.js";import{u as N}from"../packem_shared/use-admin-query-P0RJrjsD.js";import{u as le}from"../packem_shared/use-shard-key-BsP3o5wT.js";import{useT as K}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.js";import{ADMIN_FUNCTIONS as $}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{f as A,d as L,c as R}from"../packem_shared/internal-CwaF9YNk.js";import{r as de}from"../packem_shared/shard-history-QcjcMnCA.js";import{a as J,A as ue}from"../packem_shared/advisor-view-C1KFTXSH.js";import{ConfirmButton as fe}from"../packem_shared/ConfirmButton-Cj2SOapE.js";import{jsx as g}from"react/jsx-runtime";import{deriveInsights as me}from"../packem_shared/DEFAULT_INSIGHT_THRESHOLDS-1Lrg55IV.js";import{runAdvisor as he,RUNTIME_LINTS as pe}from"@lunora/advisor";const be=t=>{const{suggestedIndex:e,table:r}=t;return!(typeof r!="string"||r.length===0||typeof e!="object"||e===null||!Array.isArray(e.fields)||e.fields.length===0)},xe=(t,e,r)=>{const n=`"${t}"`,s=`"${e}"`,i=r.map(c=>`"${c}"`).join(", ");return`CREATE INDEX IF NOT EXISTS ${s} ON ${n} (${i});`},ye=t=>{const e=V(19),{fields:r,indexName:n,table:s,testId:i}=t,c=K(),[v,h]=H(!1);let u;e[0]!==r||e[1]!==n||e[2]!==s?(u=()=>{const y="navigator"in globalThis?globalThis.navigator.clipboard:void 0;if(y===void 0)return;const x=xe(s,n,r);A(y.writeText(x)),h(!0)},e[0]=r,e[1]=n,e[2]=s,e[3]=u):u=e[3];const I=u;if(v){const y=`${i}-applied`;let x;e[4]!==c?(x=c("CREATE INDEX SQL copied to clipboard."),e[4]=c,e[5]=x):x=e[5];let w;return e[6]!==y||e[7]!==x?(w=g("span",{className:"text-xs text-muted-foreground","data-testid":y,children:x}),e[6]=y,e[7]=x,e[8]=w):w=e[8],w}let d;e[9]!==c?(d=c("Apply?"),e[9]=c,e[10]=d):d=e[10];let f;e[11]!==c||e[12]!==s?(f=c("Apply index on {table}",{table:s}),e[11]=c,e[12]=s,e[13]=f):f=e[13];let b;return e[14]!==I||e[15]!==d||e[16]!==f||e[17]!==i?(b=g(fe,{confirmLabel:d,onConfirm:I,testId:i,children:f}),e[14]=I,e[15]=d,e[16]=f,e[17]=i,e[18]=b):b=e[18],b},ve=(t,e)=>{const r=new Map;for(const n of e){const s=`${n.table} ${n.index}`;r.set(s,(r.get(s)??0)+n.reads)}return t.map(n=>({index:n.index,reads:r.get(`${n.table} ${n.index}`)??0,table:n.table}))},Se=t=>{const e=new Map;for(const r of t)for(const n of r.scannedTables??[])e.set(n.table,(e.get(n.table)??0)+n.scans);return[...e].map(([r,n])=>({scans:n,table:r}))},Q=(t,e)=>e.map(r=>({index:r.name,table:t})),Te=t=>{const e=ve(t.declaredIndexes??[],t.indexHits??[]),r=Se(t.functions??[]),n=t.shardTraffic??[],s=t.analyticsMetrics,i=s&&s.indexHits.length>0?s.indexHits:e,c=s&&s.tableScans.length>0?s.tableScans:r,v=s&&s.shardTraffic.length>0?s.shardTraffic:n,h=he({indexHits:i,schema:{tables:[]},shardTraffic:v,tableScans:c},{lints:pe,source:"runtime"}),u=t.suppressHotScanTables;return(u===void 0?h:h.filter(d=>!(d.metadata.kind==="hot_scan"&&typeof d.metadata.table=="string"&&u.has(d.metadata.table)))).map(d=>J(d))},ge=R($.listTables),Ie=R($.listTableIndexes),we=R($.listTablesIndexes),k=t=>`${(t*100).toFixed(1)}%`,X=t=>`${(t/1e3).toFixed(2)}s`,$e=t=>{if(t.length<=1)return t[0]??"";const e=t[t.length-1]??"";return`${t.slice(0,-1).join(", ")} and ${e}`},Ae=(t,e)=>({"high-error-rate":t("High error rate"),"high-evictions":t("High cache eviction rate"),"high-write-contention":t("High write contention"),"low-cache-hit-rate":t("Low cache hit rate"),"missing-index":t("Missing index"),"slow-function":t("Slow function")})[e.kind],P=(t,e)=>({"high-error-rate":t("{rate} of calls failed.",{rate:k(e.value)}),"high-evictions":t("{count} entries evicted recently.",{count:e.value}),"high-write-contention":t("{rate} of calls hit a write conflict — consider sharding to cut contention.",{rate:k(e.value)}),"low-cache-hit-rate":t("{rate} hit rate over recent traffic.",{rate:k(e.value)}),"missing-index":t("Slowest call took {duration} — it full-scanned {tables} with no index.",{duration:X(e.value),tables:$e(e.tables??[])}),"slow-function":t("Slowest call took {duration}.",{duration:X(e.value)})})[e.kind],Ee=t=>{const e=V(10),{onJump:r,table:n}=t,s=K();let i;e[0]!==r||e[1]!==n?(i=()=>{r(n)},e[0]=r,e[1]=n,e[2]=i):i=e[2];const c=i,v=`in-add-index-${n}`;let h;e[3]!==s||e[4]!==n?(h=s("Add index on {table}",{table:n}),e[3]=s,e[4]=n,e[5]=h):h=e[5];let u;return e[6]!==c||e[7]!==v||e[8]!==h?(u=g(ce,{"data-testid":v,onClick:c,size:"sm",type:"button",variant:"outline",children:h}),e[6]=c,e[7]=v,e[8]=h,e[9]=u):u=e[9],u},Ve=({initialShardKey:t,loadShardTraffic:e})=>{const r=ne(),n=se(),s=K(),{queryShardKey:i,setShardKey:c,shardKey:v}=le(t),[h,u]=H(null),[I,d]=H(null),f=re(""),b=N($.getMetrics,{},{live:!0,shardKey:i}),y=N($.getFunctionStats,{},{live:!0,shardKey:i}),x=N($.getAdvisories,{},{live:!0,shardKey:i}),w=b.data??null,B=y.data?.functions??null,D=x.data?.advisories??null,U=b.data?.indexHits??null,M=b.error!==null&&y.error!==null?b.error:null,z=e??(a=>r.shardTraffic(a)),G=async(a,p)=>{const S=a[0];if(S===void 0||S===""){f.current===p&&d(null);return}try{const o=await z(S);if(f.current!==p)return;const l=new Map;for(const m of o.shards)l.has(m.shardKey)||l.set(m.shardKey,{requests:m.requests,shardKey:m.shardKey});d([...l.values()])}catch{f.current===p&&d(null)}},W=async(a,p)=>{const S=await Promise.allSettled(a.map(async l=>[l,await r.query(Ie,{table:l},L(p))])),o=[];for(const l of S)if(l.status==="fulfilled"){const[m,T]=l.value;o.push(...Q(m,T.indexes))}return o},q=j(async a=>{f.current=a;let p=[];try{const S=await r.query(ge,{},L(a));if(f.current!==a)return;de(a),p=S.map(l=>l.name);let o=[];if(p.length>0)try{const l=await r.query(we,{tables:p},L(a));if(f.current!==a)return;for(const[m,T]of Object.entries(l.indexesByTable))o.push(...Q(m,T))}catch{if(o=await W(p,a),f.current!==a)return}u(o)}catch{f.current===a&&u(null)}await G(p,a)});O(()=>{A(q(i))},[i]);const Y=j(()=>{b.refetch(),y.refetch(),x.refetch(),A(q(i))});O(()=>{const a=()=>{document.visibilityState==="visible"&&Y()};return document.addEventListener("visibilitychange",a),()=>{document.removeEventListener("visibilitychange",a)}},[]);const C=ae(a=>{A(n({search:{table:a},to:"/schema"}))},[n]),E=me(w,B),Z=new Set(E.filter(a=>a.kind==="missing-index").flatMap(a=>a.tables??[])),F=Te({declaredIndexes:h??[],functions:B,indexHits:U,shardTraffic:I,suppressHotScanTables:Z}),_=oe(()=>{const a=E.map(o=>{const l=o.kind==="missing-index"?o.tables??[]:[];return{action:l.length>0?l.map(m=>g(Ee,{onJump:C,table:m},m)):void 0,description:o.message===void 0?P(s,o):`${P(s,o)} — ${o.message}`,entity:o.fn,issueType:Ae(s,o),key:`${o.kind}:${o.fn??""}`,level:o.severity}}),p=new Set(["unindexed_foreign_key","unindexed_relation_target"]);return[...(D??[]).map(o=>{const l=J(o);if(p.has(o.name)&&be(o.metadata)){const{table:m,suggestedIndex:T}=o.metadata,te=`in-apply-index-${m}-${T.name}`;return{...l,action:g(ye,{fields:T.fields,indexName:T.name,table:m,testId:te})}}return l}),...F,...a]},[D,E,C,F,s]),ee=g(ie,{onChange:c,testId:"in-shard-input",value:v});return g(ue,{error:M,errorSource:M===null?void 0:b.errorSource,rows:_,testId:"lunora-insights",toolbar:ee})};export{Ve as InsightsPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as q}from"react/compiler-runtime";import{useVirtualizer as Ne}from"@tanstack/react-virtual";import{useState as O,useReducer as Ce,useRef as ue,useEffect as me,useMemo as Le}from"react";import{f as he}from"../packem_shared/log-fields-CoL3hsIQ.js";import{U as Se}from"../packem_shared/error-alert-_2q2VtVG.js";import{g as ge}from"../packem_shared/badge-BbuuAio7.js";import{E as ee}from"../packem_shared/empty-state-Cg7t_8qu.js";import{N as le}from"../packem_shared/use-admin-query-CnnyWJXM.js";import{f as ke}from"../packem_shared/use-open-trace-CniEgUdp.js";import{S as $e}from"../packem_shared/use-shard-key-B2JtNa5m.js";import{useT as B}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as oe}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{r as Ie}from"../packem_shared/shard-history-DMEW5VBE.js";import{l as Te}from"../packem_shared/virtual-rect-1o1veP7R.js";import{useLunora as Re}from"@lunora/react";import{u as Pe}from"../packem_shared/button-BkCrNcAs.js";import{u as j}from"../packem_shared/input-JHu63lTv.js";import{d as Ee,n as Fe,f as fe,m as D,b as Oe,p as V}from"../packem_shared/table-DZAB8cs3.js";import ne from"../packem_shared/useDebounced-CU-uftxO.js";import{a as pe}from"../packem_shared/cf-links-Dmg86v1D.js";import{f as se,m as qe,b as ie}from"../packem_shared/internal-zkEvTqy8.js";import{L as _e,E as Me}from"../packem_shared/log-line-BDI826X-.js";import{jsx as r,jsxs as P,Fragment as Ae}from"react/jsx-runtime";import{c as W}from"../packem_shared/utils-bhneXptQ.js";import{L as Ke}from"../packem_shared/live-status-CmuRLFKf.js";import{ShardInput as Ue}from"../packem_shared/ShardInput-BVn2iCU0.js";const re=["trace","debug","log","info","warn","error","fatal"],De="LOG_ARCHIVE_NOT_CONFIGURED",Ve={cursor:void 0,error:null,loading:!1,notConfigured:!1,rows:null},je=(i,e)=>{switch(e.type){case"append":return{...i,cursor:e.cursor,error:null,loading:!1,rows:[...i.rows??[],...e.rows]};case"failed":return{cursor:void 0,error:e.message,loading:!1,notConfigured:!1,rows:null};case"loaded":return{cursor:e.cursor,error:null,loading:!1,notConfigured:!1,rows:e.rows};case"loading":return{...i,error:null,loading:!0,notConfigured:!1};case"notConfigured":return{cursor:void 0,error:null,loading:!1,notConfigured:!0,rows:null};case"pageFailed":return{...i,error:e.message,loading:!1};default:return i}},Be=i=>{const e=q(33),{row:t}=i;let n;e[0]!==t.fields?(n=he(t.fields),e[0]=t.fields,e[1]=n):n=e[1];const s=n,o=`lg-archive-row-${String(t.ts)}`;let c;e[2]!==t.ts?(c=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=c):c=e[3];let p;e[4]!==c?(p=r(V,{className:"tabular-nums whitespace-nowrap text-xs text-muted-foreground",children:c}),e[4]=c,e[5]=p):p=e[5];const m=_e[t.level];let d;e[6]!==t.level||e[7]!==m?(d=r(V,{children:r(ge,{variant:m,children:t.level})}),e[6]=t.level,e[7]=m,e[8]=d):d=e[8];let a;e[9]!==t.functionPath?(a=r(V,{className:"font-mono text-xs",children:t.functionPath}),e[9]=t.functionPath,e[10]=a):a=e[10];let h;e[11]!==t.message?(h=r("div",{className:"truncate",title:t.message,children:t.message}),e[11]=t.message,e[12]=h):h=e[12];let l;e[13]!==s?(l=s!==""&&r("div",{className:"truncate font-mono text-[11px] text-muted-foreground",title:s,children:s}),e[13]=s,e[14]=l):l=e[14];let u;e[15]!==h||e[16]!==l?(u=P(V,{className:"max-w-md",children:[h,l]}),e[15]=h,e[16]=l,e[17]=u):u=e[17];const g=t.traceId??"—";let v;e[18]!==g?(v=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:g}),e[18]=g,e[19]=v):v=e[19];const b=t.shardKey??"—";let y;e[20]!==b?(y=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:b}),e[20]=b,e[21]=y):y=e[21];const w=t.userId??"—";let x;e[22]!==w?(x=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:w}),e[22]=w,e[23]=x):x=e[23];let k;return e[24]!==u||e[25]!==v||e[26]!==y||e[27]!==x||e[28]!==o||e[29]!==p||e[30]!==d||e[31]!==a?(k=P(fe,{"data-testid":o,children:[p,d,a,u,v,y,x]}),e[24]=u,e[25]=v,e[26]=y,e[27]=x,e[28]=o,e[29]=p,e[30]=d,e[31]=a,e[32]=k):k=e[32],k},ze=({shardKey:i})=>{const e=Re(),t=B(),[n,s]=O(""),[o,c]=O(""),[p,m]=O(""),[{cursor:d,error:a,loading:h,notConfigured:l,rows:u},g]=Ce(je,Ve),v=ne(n.trim(),400),b=ne(o.trim(),400),y={...v===""?{}:{functionPathPrefix:v},...p===""?{}:{minLevel:p},...i===""?{}:{shardKey:i},...b===""?{}:{userId:b}},w=JSON.stringify(y),x=ue(w);me(()=>{const f={cancelled:!1};return x.current=w,se((async()=>{g({type:"loading"});try{const N=await e.queryLogArchive(y);f.cancelled||g({cursor:N.nextCursor,rows:N.rows,type:"loaded"})}catch(N){f.cancelled||g(qe(N)===De?{type:"notConfigured"}:{message:ie(N),type:"failed"})}})()),()=>{f.cancelled=!0}},[e,w]);const k=async()=>{if(d===void 0)return;const f=w;g({type:"loading"});try{const N=await e.queryLogArchive({...y,cursor:d});x.current===f&&g({cursor:N.nextCursor,rows:N.rows,type:"append"})}catch(N){x.current===f&&g({message:ie(N),type:"pageFailed"})}},I=f=>{s(f.target.value)},L=f=>{c(f.target.value)},C=f=>{m(f.target.value)},S=()=>{se(k())};return l?r(ee,{action:r("a",{className:"text-sm text-primary underline-offset-4 hover:underline",href:pe,rel:"noreferrer",target:"_blank",children:t("Open in Cloudflare")}),description:t("Wire pipelineLogSink to a Cloudflare Pipeline → R2 Data Catalog table and set R2_SQL_ACCOUNT_ID, R2_SQL_TOKEN, R2_SQL_BUCKET to browse the durable log archive here."),testId:"lg-archive-not-configured",title:t("Log archive not configured")}):P("div",{className:"flex flex-col gap-4","data-testid":"lg-archive",children:[P("div",{className:"flex flex-wrap items-center gap-2",children:[r(j,{"aria-label":t("Function path prefix"),className:"h-8 w-48","data-testid":"lg-archive-path",onChange:I,placeholder:t("function path…"),value:n}),r(j,{"aria-label":t("User id"),className:"h-8 w-40","data-testid":"lg-archive-user",onChange:L,placeholder:t("user id…"),value:o}),P("select",{"aria-label":t("Minimum level"),className:"h-8 rounded-md border border-border bg-background px-2 text-sm","data-testid":"lg-archive-min-level",onChange:C,value:p,children:[r("option",{value:"",children:t("min level")}),re.map(f=>r("option",{value:f,children:f},f))]})]}),a!==null&&r("p",{className:"text-sm text-destructive","data-testid":"lg-archive-error",role:"alert",children:a}),h&&u===null&&a===null&&r("p",{className:"text-sm text-muted-foreground","data-testid":"lg-archive-loading",children:t("Loading…")}),u!==null&&u.length===0&&r(ee,{description:t("No archived logs match these filters. The durable archive fills as pipelineLogSink flushes records to R2."),testId:"lg-archive-empty",title:t("No archived logs.")}),u!==null&&u.length>0&&r("div",{className:"overflow-hidden rounded-xl border border-border shadow-xs",children:P(Ee,{"data-testid":"lg-archive-table",children:[r(Fe,{children:P(fe,{children:[r(D,{children:t("Time")}),r(D,{children:t("Level")}),r(D,{children:t("Function")}),r(D,{children:t("Message")}),r(D,{children:t("Trace")}),r(D,{children:t("Shard")}),r(D,{children:t("User")})]})}),r(Oe,{children:u.map((f,N)=>r(Be,{row:f},`${String(f.ts)}-${String(N)}`))})]})}),d!==void 0&&r("div",{children:r(Pe,{"data-testid":"lg-archive-more",disabled:h,onClick:S,size:"sm",variant:"outline",children:t(h?"Loading…":"Load more")})})]})},Ge=i=>{const e=q(11),{level:t,onToggle:n,selected:s}=i;let o;e[0]!==t||e[1]!==n?(o=()=>{n(t)},e[0]=t,e[1]=n,e[2]=o):o=e[2];const c=o,p=s?"border-border bg-muted font-medium":"border-input text-muted-foreground";let m;e[3]!==p?(m=W("rounded-md border px-2 py-1 text-xs",p),e[3]=p,e[4]=m):m=e[4];const d=`logs-level-${t}`;let a;return e[5]!==t||e[6]!==c||e[7]!==s||e[8]!==m||e[9]!==d?(a=r("button",{"aria-pressed":s,className:m,"data-testid":d,onClick:c,type:"button",children:t}),e[5]=t,e[6]=c,e[7]=s,e[8]=m,e[9]=d,e[10]=a):a=e[10],a},We=i=>{const e=q(68),{levelFilter:t,onLogPathChange:n,onSearchChange:s,onTimeRangeChange:o,onToggleLevel:c,onToggleSummary:p,pathFilter:m,search:d,showSummary:a,timeRange:h}=i,l=B();let u;e[0]!==l?(u=l("Search messages"),e[0]=l,e[1]=u):u=e[1];let g;e[2]!==l?(g=l("search message"),e[2]=l,e[3]=g):g=e[3];let v;e[4]!==s||e[5]!==d||e[6]!==u||e[7]!==g?(v=r(j,{"aria-label":u,className:"h-8 w-48","data-testid":"lg-search",onChange:s,placeholder:g,value:d}),e[4]=s,e[5]=d,e[6]=u,e[7]=g,e[8]=v):v=e[8];let b;e[9]!==l?(b=l("Function path"),e[9]=l,e[10]=b):b=e[10];let y;e[11]!==l?(y=l("filter path"),e[11]=l,e[12]=y):y=e[12];let w;e[13]!==n||e[14]!==m||e[15]!==b||e[16]!==y?(w=r(j,{"aria-label":b,className:"h-8 w-40","data-testid":"logs-path-filter",onChange:n,placeholder:y,value:m}),e[13]=n,e[14]=m,e[15]=b,e[16]=y,e[17]=w):w=e[17];let x;e[18]!==l?(x=l("Level filter"),e[18]=l,e[19]=x):x=e[19];let k;e[20]!==t||e[21]!==c?(k=re.map(G=>r(Ge,{level:G,onToggle:c,selected:t.has(G)},G)),e[20]=t,e[21]=c,e[22]=k):k=e[22];let I;e[23]!==x||e[24]!==k?(I=r("div",{"aria-label":x,className:"inline-flex items-center gap-1","data-testid":"logs-level-filter",role:"group",children:k}),e[23]=x,e[24]=k,e[25]=I):I=e[25];let L;e[26]!==l?(L=l("Time range"),e[26]=l,e[27]=L):L=e[27];let C;e[28]!==l?(C=l("All time"),e[28]=l,e[29]=C):C=e[29];let S;e[30]!==C?(S=r("option",{value:"all",children:C}),e[30]=C,e[31]=S):S=e[31];let f;e[32]!==l?(f=l("Last 5m"),e[32]=l,e[33]=f):f=e[33];let N;e[34]!==f?(N=r("option",{value:"5m",children:f}),e[34]=f,e[35]=N):N=e[35];let T;e[36]!==l?(T=l("Last 15m"),e[36]=l,e[37]=T):T=e[37];let R;e[38]!==T?(R=r("option",{value:"15m",children:T}),e[38]=T,e[39]=R):R=e[39];let E;e[40]!==l?(E=l("Last hour"),e[40]=l,e[41]=E):E=e[41];let F;e[42]!==E?(F=r("option",{value:"1h",children:E}),e[42]=E,e[43]=F):F=e[43];let _;e[44]!==o||e[45]!==L||e[46]!==S||e[47]!==N||e[48]!==R||e[49]!==F||e[50]!==h?(_=P("select",{"aria-label":L,className:"h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none","data-testid":"logs-time-range",onChange:o,value:h,children:[S,N,R,F]}),e[44]=o,e[45]=L,e[46]=S,e[47]=N,e[48]=R,e[49]=F,e[50]=h,e[51]=_):_=e[51];const z=a?"border-border bg-muted font-medium":"border-input text-muted-foreground";let M;e[52]!==z?(M=W("h-8 rounded-md border px-3 text-sm",z),e[52]=z,e[53]=M):M=e[53];let K;e[54]!==a||e[55]!==l?(K=l(a?"List":"Summary"),e[54]=a,e[55]=l,e[56]=K):K=e[56];let A;e[57]!==p||e[58]!==a||e[59]!==M||e[60]!==K?(A=r("button",{"aria-pressed":a,className:M,"data-testid":"logs-summary-toggle",onClick:p,type:"button",children:K}),e[57]=p,e[58]=a,e[59]=M,e[60]=K,e[61]=A):A=e[61];let U;return e[62]!==_||e[63]!==A||e[64]!==v||e[65]!==w||e[66]!==I?(U=P("div",{className:"flex flex-wrap items-center gap-2",children:[v,w,I,_,A]}),e[62]=_,e[63]=A,e[64]=v,e[65]=w,e[66]=I,e[67]=U):U=e[67],U},Ye=i=>{const e=q(53),{onOutcomeChange:t,onPathChange:n,onTableChange:s,onUserChange:o,outcomeFilter:c,pathPrefix:p,tableFilter:m,userIdFilter:d}=i,a=B();let h;e[0]!==a?(h=a("Function path"),e[0]=a,e[1]=h):h=e[1];let l;e[2]!==a?(l=a("file:function"),e[2]=a,e[3]=l):l=e[3];let u;e[4]!==n||e[5]!==p||e[6]!==h||e[7]!==l?(u=r(j,{"aria-label":h,className:"h-8 w-44","data-testid":"lg-req-path",onChange:n,placeholder:l,value:p}),e[4]=n,e[5]=p,e[6]=h,e[7]=l,e[8]=u):u=e[8];let g;e[9]!==a?(g=a("User id"),e[9]=a,e[10]=g):g=e[10];let v;e[11]!==a?(v=a("userId"),e[11]=a,e[12]=v):v=e[12];let b;e[13]!==o||e[14]!==g||e[15]!==v||e[16]!==d?(b=r(j,{"aria-label":g,className:"h-8 w-32","data-testid":"lg-req-user",onChange:o,placeholder:v,value:d}),e[13]=o,e[14]=g,e[15]=v,e[16]=d,e[17]=b):b=e[17];let y;e[18]!==a?(y=a("Table touched"),e[18]=a,e[19]=y):y=e[19];let w;e[20]!==a?(w=a("table"),e[20]=a,e[21]=w):w=e[21];let x;e[22]!==s||e[23]!==y||e[24]!==w||e[25]!==m?(x=r(j,{"aria-label":y,className:"h-8 w-32","data-testid":"lg-req-table",onChange:s,placeholder:w,value:m}),e[22]=s,e[23]=y,e[24]=w,e[25]=m,e[26]=x):x=e[26];let k;e[27]!==a?(k=a("Outcome filter"),e[27]=a,e[28]=k):k=e[28];let I;e[29]!==a?(I=a("all"),e[29]=a,e[30]=I):I=e[30];let L;e[31]!==I?(L=r("option",{value:"all",children:I}),e[31]=I,e[32]=L):L=e[32];let C;e[33]!==a?(C=a("ok"),e[33]=a,e[34]=C):C=e[34];let S;e[35]!==C?(S=r("option",{value:"ok",children:C}),e[35]=C,e[36]=S):S=e[36];let f;e[37]!==a?(f=a("error"),e[37]=a,e[38]=f):f=e[38];let N;e[39]!==f?(N=r("option",{value:"error",children:f}),e[39]=f,e[40]=N):N=e[40];let T;e[41]!==t||e[42]!==c||e[43]!==k||e[44]!==L||e[45]!==S||e[46]!==N?(T=P("select",{"aria-label":k,className:"h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none","data-testid":"lg-req-outcome",onChange:t,value:c,children:[L,S,N]}),e[41]=t,e[42]=c,e[43]=k,e[44]=L,e[45]=S,e[46]=N,e[47]=T):T=e[47];let R;return e[48]!==T||e[49]!==u||e[50]!==b||e[51]!==x?(R=P("div",{className:"flex flex-wrap items-center gap-2",children:[u,b,x,T]}),e[48]=T,e[49]=u,e[50]=b,e[51]=x,e[52]=R):R=e[52],R},ve=i=>{const e=q(7),{bucket:t}=i;let n;e[0]!==t.key?(n=r("span",{className:"truncate text-muted-foreground",role:"gridcell",children:t.key}),e[0]=t.key,e[1]=n):n=e[1];let s;e[2]!==t.count?(s=r("span",{className:"shrink-0 tabular-nums",role:"gridcell",children:t.count}),e[2]=t.count,e[3]=s):s=e[3];let o;return e[4]!==n||e[5]!==s?(o=P("div",{className:"flex items-center justify-between gap-4 px-3 py-1 font-mono text-xs","data-testid":"logs-summary-row",role:"row",children:[n,s]}),e[4]=n,e[5]=s,e[6]=o):o=e[6],o},Qe=i=>{const e=q(31),{summary:t}=i,n=B();let s;e[0]!==t.total||e[1]!==n?(s=n("{count} entries",{count:t.total}),e[0]=t.total,e[1]=n,e[2]=s):s=e[2];let o;e[3]!==s?(o=r("p",{className:"text-xs text-muted-foreground","data-testid":"logs-summary-total",children:s}),e[3]=s,e[4]=o):o=e[4];let c;e[5]!==n?(c=n("By level"),e[5]=n,e[6]=c):c=e[6];let p;e[7]!==c?(p=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:c}),e[7]=c,e[8]=p):p=e[8];let m;e[9]!==t.byLevel?(m=t.byLevel.map(He),e[9]=t.byLevel,e[10]=m):m=e[10];let d;e[11]!==m?(d=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-levels",role:"grid",children:m}),e[11]=m,e[12]=d):d=e[12];let a;e[13]!==p||e[14]!==d?(a=P("div",{children:[p,d]}),e[13]=p,e[14]=d,e[15]=a):a=e[15];let h;e[16]!==n?(h=n("By function"),e[16]=n,e[17]=h):h=e[17];let l;e[18]!==h?(l=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:h}),e[18]=h,e[19]=l):l=e[19];let u;e[20]!==t.byPath?(u=t.byPath.map(Je),e[20]=t.byPath,e[21]=u):u=e[21];let g;e[22]!==u?(g=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-paths",role:"grid",children:u}),e[22]=u,e[23]=g):g=e[23];let v;e[24]!==g||e[25]!==l?(v=P("div",{children:[l,g]}),e[24]=g,e[25]=l,e[26]=v):v=e[26];let b;return e[27]!==v||e[28]!==o||e[29]!==a?(b=P("div",{className:"flex flex-col gap-4 rounded-xl border border-border bg-card p-4 shadow-xs","data-testid":"logs-summary",children:[o,a,v]}),e[27]=v,e[28]=o,e[29]=a,e[30]=b):b=e[30],b};function He(i){return r(ve,{bucket:i},i.key)}function Je(i){return r(ve,{bucket:i},i.key)}const Xe=i=>{const e=q(46),{liveError:t,onShardKeyChange:n,onShowArchive:s,onShowErrors:o,onShowRequests:c,shardKey:p,view:m}=i,d=B(),a=m==="requests",h=m==="requests"?"bg-muted font-medium":"text-muted-foreground";let l;e[0]!==h?(l=W("px-3 py-1 text-sm",h),e[0]=h,e[1]=l):l=e[1];let u;e[2]!==d?(u=d("Requests"),e[2]=d,e[3]=u):u=e[3];let g;e[4]!==c||e[5]!==a||e[6]!==l||e[7]!==u?(g=r("button",{"aria-selected":a,className:l,"data-testid":"lg-view-requests",onClick:c,role:"tab",type:"button",children:u}),e[4]=c,e[5]=a,e[6]=l,e[7]=u,e[8]=g):g=e[8];const v=m==="errors",b=m==="errors"?"bg-muted font-medium":"text-muted-foreground";let y;e[9]!==b?(y=W("px-3 py-1 text-sm",b),e[9]=b,e[10]=y):y=e[10];let w;e[11]!==d?(w=d("Errors"),e[11]=d,e[12]=w):w=e[12];let x;e[13]!==o||e[14]!==v||e[15]!==y||e[16]!==w?(x=r("button",{"aria-selected":v,className:y,"data-testid":"lg-view-errors",onClick:o,role:"tab",type:"button",children:w}),e[13]=o,e[14]=v,e[15]=y,e[16]=w,e[17]=x):x=e[17];const k=m==="archive",I=m==="archive"?"bg-muted font-medium":"text-muted-foreground";let L;e[18]!==I?(L=W("px-3 py-1 text-sm",I),e[18]=I,e[19]=L):L=e[19];let C;e[20]!==d?(C=d("Archive"),e[20]=d,e[21]=C):C=e[21];let S;e[22]!==s||e[23]!==k||e[24]!==L||e[25]!==C?(S=r("button",{"aria-selected":k,className:L,"data-testid":"lg-view-archive",onClick:s,role:"tab",type:"button",children:C}),e[22]=s,e[23]=k,e[24]=L,e[25]=C,e[26]=S):S=e[26];let f;e[27]!==x||e[28]!==S||e[29]!==g?(f=P("div",{className:"inline-flex overflow-hidden rounded-lg border border-border",role:"tablist",children:[g,x,S]}),e[27]=x,e[28]=S,e[29]=g,e[30]=f):f=e[30];let N;e[31]!==n||e[32]!==p?(N=r(Ue,{onChange:n,testId:"lg-shard-input",value:p}),e[31]=n,e[32]=p,e[33]=N):N=e[33];let T;e[34]!==t||e[35]!==m?(T=m!=="archive"&&r(Ke,{message:t,prefix:"lg"}),e[34]=t,e[35]=m,e[36]=T):T=e[36];let R;e[37]!==d?(R=d("Open in Cloudflare"),e[37]=d,e[38]=R):R=e[38];let E;e[39]!==R?(E=r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"lg-cf-link",href:pe,rel:"noreferrer",target:"_blank",children:R}),e[39]=R,e[40]=E):E=e[40];let F;return e[41]!==f||e[42]!==N||e[43]!==T||e[44]!==E?(F=P("div",{className:"flex flex-wrap items-center gap-2",children:[f,N,T,E]}),e[41]=f,e[42]=N,e[43]=T,e[44]=E,e[45]=F):F=e[45],F},te=400,Ze=36,et={height:te,overflow:"auto"},be={left:0,position:"absolute",top:0,width:"100%"},tt={error:"destructive",ok:"secondary"},xe=i=>{const e=q(6),{onOpenTrace:t,traceId:n}=i,s=B();let o;e[0]!==t||e[1]!==s||e[2]!==n?(o=n===void 0?null:r("button",{className:"text-primary underline-offset-2 hover:underline","data-testid":"lg-trace-link",onClick:()=>{t(n)},type:"button",children:s("Trace")}),e[0]=t,e[1]=s,e[2]=n,e[3]=o):o=e[3];let c;return e[4]!==o?(c=r("span",{className:"w-16 shrink-0 text-right",role:"gridcell",children:o}),e[4]=o,e[5]=c):c=e[5],c},rt=i=>{const e=q(13),{entry:t,index:n,measureRef:s,onOpenTrace:o,start:c}=i,p=`translateY(${String(c)}px)`;let m;e[0]!==p?(m={...be,transform:p},e[0]=p,e[1]=m):m=e[1];const d=m;let a;e[2]!==t?(a=r(Me,{entry:t}),e[2]=t,e[3]=a):a=e[3];let h;e[4]!==t.traceId||e[5]!==o?(h=r(xe,{onOpenTrace:o,traceId:t.traceId}),e[4]=t.traceId,e[5]=o,e[6]=h):h=e[6];let l;return e[7]!==n||e[8]!==s||e[9]!==d||e[10]!==a||e[11]!==h?(l=P("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":n,"data-testid":"lg-row",ref:s,role:"row",style:d,children:[a,h]}),e[7]=n,e[8]=s,e[9]=d,e[10]=a,e[11]=h,e[12]=l):l=e[12],l},de=i=>i.length===0?"—":i.join(", "),at=i=>{const e=q(41),{entry:t,index:n,measureRef:s,onOpenTrace:o,start:c}=i,p=`translateY(${String(c)}px)`;let m;e[0]!==p?(m={...be,transform:p},e[0]=p,e[1]=m):m=e[1];const d=m;let a;e[2]!==t.ts?(a=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=a):a=e[3];let h;e[4]!==a?(h=r("span",{className:"w-40 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:a}),e[4]=a,e[5]=h):h=e[5];const l=tt[t.outcome];let u;e[6]!==t.outcome||e[7]!==l?(u=r("span",{className:"w-16 shrink-0",role:"gridcell",children:r(ge,{variant:l,children:t.outcome})}),e[6]=t.outcome,e[7]=l,e[8]=u):u=e[8];let g;e[9]!==t.functionPath?(g=r("span",{className:"w-44 shrink-0 truncate",role:"gridcell",title:t.functionPath,children:t.functionPath}),e[9]=t.functionPath,e[10]=g):g=e[10];const v=t.shardKey??"—";let b;e[11]!==v?(b=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:v}),e[11]=v,e[12]=b):b=e[12];const y=t.userId??"—";let w;e[13]!==y?(w=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:y}),e[13]=y,e[14]=w):w=e[14];let x;e[15]!==t.durationMs?(x=Math.round(t.durationMs),e[15]=t.durationMs,e[16]=x):x=e[16];const k=`${String(x)}ms`;let I;e[17]!==k?(I=r("span",{className:"w-16 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:k}),e[17]=k,e[18]=I):I=e[18];let L;e[19]!==t.errorMessage||e[20]!==t.outcome||e[21]!==t.tablesRead||e[22]!==t.tablesWritten?(L=t.outcome==="error"&&t.errorMessage!==void 0?t.errorMessage:`r:${de(t.tablesRead)} · w:${de(t.tablesWritten)}`,e[19]=t.errorMessage,e[20]=t.outcome,e[21]=t.tablesRead,e[22]=t.tablesWritten,e[23]=L):L=e[23];let C;e[24]!==L?(C=r("span",{className:"flex-1 truncate text-muted-foreground",role:"gridcell",children:L}),e[24]=L,e[25]=C):C=e[25];let S;e[26]!==t.traceId||e[27]!==o?(S=r(xe,{onOpenTrace:o,traceId:t.traceId}),e[26]=t.traceId,e[27]=o,e[28]=S):S=e[28];let f;return e[29]!==n||e[30]!==s||e[31]!==d||e[32]!==w||e[33]!==I||e[34]!==C||e[35]!==S||e[36]!==h||e[37]!==u||e[38]!==g||e[39]!==b?(f=P("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":n,"data-testid":"lg-req-row",ref:s,role:"row",style:d,children:[h,u,g,b,w,I,C,S]}),e[29]=n,e[30]=s,e[31]=d,e[32]=w,e[33]=I,e[34]=C,e[35]=S,e[36]=h,e[37]=u,e[38]=g,e[39]=b,e[40]=f):f=e[40],f},ce=i=>{const{entries:e}=i??{};return Array.isArray(e)?e:[]},lt=i=>{const e={};return i.functionPathPrefix.trim()!==""&&(e.functionPathPrefix=i.functionPathPrefix.trim()),i.userId.trim()!==""&&(e.userId=i.userId.trim()),i.tableTouched.trim()!==""&&(e.tableTouched=i.tableTouched.trim()),(i.outcome==="ok"||i.outcome==="error")&&(e.outcome=i.outcome),e},ot={"5m":300*1e3,"15m":900*1e3,"1h":3600*1e3},nt=(i,e)=>{const t=e.search.trim().toLowerCase(),n=e.path.trim().toLowerCase(),s=e.range==="all"?Number.NEGATIVE_INFINITY:e.now-ot[e.range];return i.filter(o=>e.levels.size>0&&!e.levels.has(o.level)||o.timestamp<s||n!==""&&!(o.functionPath??"").toLowerCase().includes(n)?!1:t===""||o.message.toLowerCase().includes(t)||he(o.fields).toLowerCase().includes(t))},st="—",it=i=>{const e=new Map,t=new Map;for(const o of i){e.set(o.level,(e.get(o.level)??0)+1);const c=o.functionPath??st;t.set(c,(t.get(c)??0)+1)}const n=re.filter(o=>e.has(o)).map(o=>({count:e.get(o)??0,key:o})),s=[...t.entries()].map(([o,c])=>({count:c,key:o})).toSorted((o,c)=>c.count===o.count?o.key.localeCompare(c.key):c.count-o.count);return{byLevel:n,byPath:s,total:i.length}},qt=({initialShardKey:i})=>{const e=B(),[t,n]=O("requests"),{queryShardKey:s,setShardKey:o,shardKey:c}=$e(i),[p,m]=O(""),[d,a]=O(()=>new Set),[h,l]=O(""),[u,g]=O("all"),[v,b]=O(!1),[y,w]=O(""),[x,k]=O(""),[I,L]=O(""),[C,S]=O("all"),f=lt({functionPathPrefix:y,outcome:C,tableTouched:I,userId:x}),N=le(oe.getRequestLog,f,{enabled:t==="requests",live:!0,shardKey:s}),T=le(oe.getLogs,{},{enabled:t==="errors",live:!0,shardKey:s}),R=t==="requests"?N:T,{error:E,errorSource:F,isLoading:_,liveError:z}=R,M=ke(s),K=ce(T.data),A=ce(N.data);me(()=>{R.data!==void 0&&Ie(s)},[R.data,s]);const U=nt(K,{levels:d,now:Date.now(),path:h,range:u,search:p}),G=it(U),J=t==="requests"?A.length:U.length,X=t==="errors"&&v,Y=Le(()=>E!==null?"error":J===0?_?X?"summary":"list":"empty":X?"summary":"list",[J,_,E,X]),ae=ue(null),Q=Ne({count:J,estimateSize:()=>Ze,getScrollElement:()=>ae.current,initialRect:{height:te,width:800},observeElementRect:($,Z)=>Te($,Z,te),overscan:8}),ye=Q.getVirtualItems(),we={height:Q.getTotalSize(),position:"relative",width:"100%"};return P("div",{className:"flex flex-col gap-4","data-testid":"lunora-logs",children:[r(Xe,{liveError:z,onShardKeyChange:o,onShowArchive:()=>{n("archive"),b(!1)},onShowErrors:()=>{n("errors"),b(!1)},onShowRequests:()=>{n("requests"),b(!1)},shardKey:c,view:t}),t==="errors"&&r(We,{levelFilter:d,onLogPathChange:$=>{l($.target.value)},onSearchChange:$=>{m($.target.value)},onTimeRangeChange:$=>{g($.target.value)},onToggleLevel:$=>{a(Z=>{const H=new Set(Z);return H.has($)?H.delete($):H.add($),H})},onToggleSummary:()=>{b($=>!$)},pathFilter:h,search:p,showSummary:v,timeRange:u}),t==="requests"&&r(Ye,{onOutcomeChange:$=>{S($.target.value)},onPathChange:$=>{w($.target.value)},onTableChange:$=>{L($.target.value)},onUserChange:$=>{k($.target.value)},outcomeFilter:C,pathPrefix:y,tableFilter:I,userIdFilter:x}),t==="archive"?r(ze,{shardKey:s}):P(Ae,{children:[Y==="error"&&r(Se,{error:F,testId:"lg-error"}),Y==="empty"&&r(ee,{description:e("Function and request logs for this shard show up here as your app handles traffic."),icon:r("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:r("path",{d:"M4 5h16M4 12h16M4 19h10"})}),testId:"lg-empty",title:e("No logs.")}),Y==="summary"&&r(Qe,{summary:G}),Y==="list"&&r("div",{className:"rounded-xl border border-border shadow-xs","data-testid":"lg-scroll",ref:ae,style:et,children:r("div",{"aria-label":e("Recent logs"),"data-testid":"lg-table",role:"grid",style:we,children:ye.map($=>t==="requests"?r(at,{entry:A[$.index],index:$.index,measureRef:Q.measureElement,onOpenTrace:M,start:$.start},$.key):r(rt,{entry:U[$.index],index:$.index,measureRef:Q.measureElement,onOpenTrace:M,start:$.start},$.key))})})]})]})};export{qt as LogsPanel,nt as filterLogs,it as summarizeLogs};
|
|
1
|
+
import{c as q}from"react/compiler-runtime";import{useVirtualizer as Ce}from"@tanstack/react-virtual";import{useState as F,useReducer as Le,useRef as ue,useEffect as me,useMemo as Ne}from"react";import{f as fe}from"../packem_shared/log-fields-SBxKyBug.js";import{E as Se}from"../packem_shared/error-alert-TYdKetJd.js";import{B as he}from"../packem_shared/badge-cAk9Di1Q.js";import{E as ee}from"../packem_shared/empty-state-B939z6K2.js";import{u as le}from"../packem_shared/use-admin-query-P0RJrjsD.js";import{u as Te}from"../packem_shared/use-open-trace-4tIa0SXZ.js";import{u as Ie}from"../packem_shared/use-shard-key-BsP3o5wT.js";import{useT as Q}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.js";import{ADMIN_FUNCTIONS as oe}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{r as Re}from"../packem_shared/shard-history-QcjcMnCA.js";import{f as ke}from"../packem_shared/virtual-rect-D_j7aLxX.js";import{useLunora as Pe}from"@lunora/react";import{B as Ee}from"../packem_shared/button-BOPLD1un.js";import{I as D}from"../packem_shared/input-CY5W3wzv.js";import{T as Oe,a as _e,b as ge,c as B,d as Fe,e as V}from"../packem_shared/table-BMsuYFhk.js";import ae from"../packem_shared/useDebounced-DVeQ5-oW.js";import{a as pe}from"../packem_shared/cf-links-CBJ5SywP.js";import{f as ne,m as qe,b as ie}from"../packem_shared/internal-CwaF9YNk.js";import{a as Ae,L as Me}from"../packem_shared/log-line-UnE93Ovi.js";import{jsx as r,jsxs as E,Fragment as $e}from"react/jsx-runtime";import{c as H}from"../packem_shared/utils-bhneXptQ.js";import{L as Ue}from"../packem_shared/live-status-Bf7rR8o8.js";import{ShardInput as Ke}from"../packem_shared/ShardInput-XumEzeT0.js";const re=["trace","debug","log","info","warn","error","fatal"],Be="LOG_ARCHIVE_NOT_CONFIGURED",Ve={cursor:void 0,error:null,loading:!1,notConfigured:!1,rows:null},De=(i,e)=>{switch(e.type){case"append":return{...i,cursor:e.cursor,error:null,loading:!1,rows:[...i.rows??[],...e.rows]};case"failed":return{cursor:void 0,error:e.message,loading:!1,notConfigured:!1,rows:null};case"loaded":return{cursor:e.cursor,error:null,loading:!1,notConfigured:!1,rows:e.rows};case"loading":return{...i,error:null,loading:!0,notConfigured:!1};case"notConfigured":return{cursor:void 0,error:null,loading:!1,notConfigured:!0,rows:null};case"pageFailed":return{...i,error:e.message,loading:!1};default:return i}},Qe=i=>{const e=q(33),{row:t}=i;let a;e[0]!==t.fields?(a=fe(t.fields),e[0]=t.fields,e[1]=a):a=e[1];const n=a,o=`lg-archive-row-${String(t.ts)}`;let d;e[2]!==t.ts?(d=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=d):d=e[3];let p;e[4]!==d?(p=r(V,{className:"tabular-nums whitespace-nowrap text-xs text-muted-foreground",children:d}),e[4]=d,e[5]=p):p=e[5];const m=Ae[t.level];let c;e[6]!==t.level||e[7]!==m?(c=r(V,{children:r(he,{variant:m,children:t.level})}),e[6]=t.level,e[7]=m,e[8]=c):c=e[8];let s;e[9]!==t.functionPath?(s=r(V,{className:"font-mono text-xs",children:t.functionPath}),e[9]=t.functionPath,e[10]=s):s=e[10];let f;e[11]!==t.message?(f=r("div",{className:"truncate",title:t.message,children:t.message}),e[11]=t.message,e[12]=f):f=e[12];let l;e[13]!==n?(l=n!==""&&r("div",{className:"truncate font-mono text-[11px] text-muted-foreground",title:n,children:n}),e[13]=n,e[14]=l):l=e[14];let u;e[15]!==f||e[16]!==l?(u=E(V,{className:"max-w-md",children:[f,l]}),e[15]=f,e[16]=l,e[17]=u):u=e[17];const h=t.traceId??"—";let v;e[18]!==h?(v=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:h}),e[18]=h,e[19]=v):v=e[19];const b=t.shardKey??"—";let y;e[20]!==b?(y=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:b}),e[20]=b,e[21]=y):y=e[21];const w=t.userId??"—";let x;e[22]!==w?(x=r(V,{className:"font-mono text-[11px] text-muted-foreground",children:w}),e[22]=w,e[23]=x):x=e[23];let T;return e[24]!==u||e[25]!==v||e[26]!==y||e[27]!==x||e[28]!==o||e[29]!==p||e[30]!==c||e[31]!==s?(T=E(ge,{"data-testid":o,children:[p,c,s,u,v,y,x]}),e[24]=u,e[25]=v,e[26]=y,e[27]=x,e[28]=o,e[29]=p,e[30]=c,e[31]=s,e[32]=T):T=e[32],T},ze=({shardKey:i})=>{const e=Pe(),t=Q(),[a,n]=F(""),[o,d]=F(""),[p,m]=F(""),[{cursor:c,error:s,loading:f,notConfigured:l,rows:u},h]=Le(De,Ve),v=ae(a.trim(),400),b=ae(o.trim(),400),y={...v===""?{}:{functionPathPrefix:v},...p===""?{}:{minLevel:p},...i===""?{}:{shardKey:i},...b===""?{}:{userId:b}},w=JSON.stringify(y),x=ue(w);me(()=>{const g={cancelled:!1};return x.current=w,ne((async()=>{h({type:"loading"});try{const C=await e.queryLogArchive(y);g.cancelled||h({cursor:C.nextCursor,rows:C.rows,type:"loaded"})}catch(C){g.cancelled||h(qe(C)===Be?{type:"notConfigured"}:{message:ie(C),type:"failed"})}})()),()=>{g.cancelled=!0}},[e,w]);const T=async()=>{if(c===void 0)return;const g=w;h({type:"loading"});try{const C=await e.queryLogArchive({...y,cursor:c});x.current===g&&h({cursor:C.nextCursor,rows:C.rows,type:"append"})}catch(C){x.current===g&&h({message:ie(C),type:"pageFailed"})}},R=g=>{n(g.target.value)},N=g=>{d(g.target.value)},L=g=>{m(g.target.value)},S=()=>{ne(T())};return l?r(ee,{action:r("a",{className:"text-sm text-primary underline-offset-4 hover:underline",href:pe,rel:"noreferrer",target:"_blank",children:t("Open in Cloudflare")}),description:t("Wire pipelineLogSink to a Cloudflare Pipeline → R2 Data Catalog table and set R2_SQL_ACCOUNT_ID, R2_SQL_TOKEN, R2_SQL_BUCKET to browse the durable log archive here."),testId:"lg-archive-not-configured",title:t("Log archive not configured")}):E("div",{className:"flex flex-col gap-4","data-testid":"lg-archive",children:[E("div",{className:"flex flex-wrap items-center gap-2",children:[r(D,{"aria-label":t("Function path prefix"),className:"h-8 w-48","data-testid":"lg-archive-path",onChange:R,placeholder:t("function path…"),value:a}),r(D,{"aria-label":t("User id"),className:"h-8 w-40","data-testid":"lg-archive-user",onChange:N,placeholder:t("user id…"),value:o}),E("select",{"aria-label":t("Minimum level"),className:"h-8 rounded-md border border-border bg-background px-2 text-sm","data-testid":"lg-archive-min-level",onChange:L,value:p,children:[r("option",{value:"",children:t("min level")}),re.map(g=>r("option",{value:g,children:g},g))]})]}),s!==null&&r("p",{className:"text-sm text-destructive","data-testid":"lg-archive-error",role:"alert",children:s}),f&&u===null&&s===null&&r("p",{className:"text-sm text-muted-foreground","data-testid":"lg-archive-loading",children:t("Loading…")}),u!==null&&u.length===0&&r(ee,{description:t("No archived logs match these filters. The durable archive fills as pipelineLogSink flushes records to R2."),testId:"lg-archive-empty",title:t("No archived logs.")}),u!==null&&u.length>0&&r("div",{className:"overflow-hidden rounded-xl border border-border shadow-xs",children:E(Oe,{"data-testid":"lg-archive-table",children:[r(_e,{children:E(ge,{children:[r(B,{children:t("Time")}),r(B,{children:t("Level")}),r(B,{children:t("Function")}),r(B,{children:t("Message")}),r(B,{children:t("Trace")}),r(B,{children:t("Shard")}),r(B,{children:t("User")})]})}),r(Fe,{children:u.map((g,C)=>r(Qe,{row:g},`${String(g.ts)}-${String(C)}`))})]})}),c!==void 0&&r("div",{children:r(Ee,{"data-testid":"lg-archive-more",disabled:f,onClick:S,size:"sm",variant:"outline",children:t(f?"Loading…":"Load more")})})]})},Ge=i=>{const e=q(11),{level:t,onToggle:a,selected:n}=i;let o;e[0]!==t||e[1]!==a?(o=()=>{a(t)},e[0]=t,e[1]=a,e[2]=o):o=e[2];const d=o,p=n?"border-border bg-muted font-medium":"border-input text-muted-foreground";let m;e[3]!==p?(m=H("rounded-md border px-2 py-1 text-xs",p),e[3]=p,e[4]=m):m=e[4];const c=`logs-level-${t}`;let s;return e[5]!==t||e[6]!==d||e[7]!==n||e[8]!==m||e[9]!==c?(s=r("button",{"aria-pressed":n,className:m,"data-testid":c,onClick:d,type:"button",children:t}),e[5]=t,e[6]=d,e[7]=n,e[8]=m,e[9]=c,e[10]=s):s=e[10],s},He=i=>{const e=q(68),{levelFilter:t,onLogPathChange:a,onSearchChange:n,onTimeRangeChange:o,onToggleLevel:d,onToggleSummary:p,pathFilter:m,search:c,showSummary:s,timeRange:f}=i,l=Q();let u;e[0]!==l?(u=l("Search messages"),e[0]=l,e[1]=u):u=e[1];let h;e[2]!==l?(h=l("search message"),e[2]=l,e[3]=h):h=e[3];let v;e[4]!==n||e[5]!==c||e[6]!==u||e[7]!==h?(v=r(D,{"aria-label":u,className:"h-8 w-48","data-testid":"lg-search",onChange:n,placeholder:h,value:c}),e[4]=n,e[5]=c,e[6]=u,e[7]=h,e[8]=v):v=e[8];let b;e[9]!==l?(b=l("Function path"),e[9]=l,e[10]=b):b=e[10];let y;e[11]!==l?(y=l("filter path"),e[11]=l,e[12]=y):y=e[12];let w;e[13]!==a||e[14]!==m||e[15]!==b||e[16]!==y?(w=r(D,{"aria-label":b,className:"h-8 w-40","data-testid":"logs-path-filter",onChange:a,placeholder:y,value:m}),e[13]=a,e[14]=m,e[15]=b,e[16]=y,e[17]=w):w=e[17];let x;e[18]!==l?(x=l("Level filter"),e[18]=l,e[19]=x):x=e[19];let T;e[20]!==t||e[21]!==d?(T=re.map(G=>r(Ge,{level:G,onToggle:d,selected:t.has(G)},G)),e[20]=t,e[21]=d,e[22]=T):T=e[22];let R;e[23]!==x||e[24]!==T?(R=r("div",{"aria-label":x,className:"inline-flex items-center gap-1","data-testid":"logs-level-filter",role:"group",children:T}),e[23]=x,e[24]=T,e[25]=R):R=e[25];let N;e[26]!==l?(N=l("Time range"),e[26]=l,e[27]=N):N=e[27];let L;e[28]!==l?(L=l("All time"),e[28]=l,e[29]=L):L=e[29];let S;e[30]!==L?(S=r("option",{value:"all",children:L}),e[30]=L,e[31]=S):S=e[31];let g;e[32]!==l?(g=l("Last 5m"),e[32]=l,e[33]=g):g=e[33];let C;e[34]!==g?(C=r("option",{value:"5m",children:g}),e[34]=g,e[35]=C):C=e[35];let k;e[36]!==l?(k=l("Last 15m"),e[36]=l,e[37]=k):k=e[37];let P;e[38]!==k?(P=r("option",{value:"15m",children:k}),e[38]=k,e[39]=P):P=e[39];let O;e[40]!==l?(O=l("Last hour"),e[40]=l,e[41]=O):O=e[41];let _;e[42]!==O?(_=r("option",{value:"1h",children:O}),e[42]=O,e[43]=_):_=e[43];let A;e[44]!==o||e[45]!==N||e[46]!==S||e[47]!==C||e[48]!==P||e[49]!==_||e[50]!==f?(A=E("select",{"aria-label":N,className:"h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none","data-testid":"logs-time-range",onChange:o,value:f,children:[S,C,P,_]}),e[44]=o,e[45]=N,e[46]=S,e[47]=C,e[48]=P,e[49]=_,e[50]=f,e[51]=A):A=e[51];const z=s?"border-border bg-muted font-medium":"border-input text-muted-foreground";let M;e[52]!==z?(M=H("h-8 rounded-md border px-3 text-sm",z),e[52]=z,e[53]=M):M=e[53];let U;e[54]!==s||e[55]!==l?(U=l(s?"List":"Summary"),e[54]=s,e[55]=l,e[56]=U):U=e[56];let $;e[57]!==p||e[58]!==s||e[59]!==M||e[60]!==U?($=r("button",{"aria-pressed":s,className:M,"data-testid":"logs-summary-toggle",onClick:p,type:"button",children:U}),e[57]=p,e[58]=s,e[59]=M,e[60]=U,e[61]=$):$=e[61];let K;return e[62]!==A||e[63]!==$||e[64]!==v||e[65]!==w||e[66]!==R?(K=E("div",{className:"flex flex-wrap items-center gap-2",children:[v,w,R,A,$]}),e[62]=A,e[63]=$,e[64]=v,e[65]=w,e[66]=R,e[67]=K):K=e[67],K},We=i=>{const e=q(53),{onOutcomeChange:t,onPathChange:a,onTableChange:n,onUserChange:o,outcomeFilter:d,pathPrefix:p,tableFilter:m,userIdFilter:c}=i,s=Q();let f;e[0]!==s?(f=s("Function path"),e[0]=s,e[1]=f):f=e[1];let l;e[2]!==s?(l=s("file:function"),e[2]=s,e[3]=l):l=e[3];let u;e[4]!==a||e[5]!==p||e[6]!==f||e[7]!==l?(u=r(D,{"aria-label":f,className:"h-8 w-44","data-testid":"lg-req-path",onChange:a,placeholder:l,value:p}),e[4]=a,e[5]=p,e[6]=f,e[7]=l,e[8]=u):u=e[8];let h;e[9]!==s?(h=s("User id"),e[9]=s,e[10]=h):h=e[10];let v;e[11]!==s?(v=s("userId"),e[11]=s,e[12]=v):v=e[12];let b;e[13]!==o||e[14]!==h||e[15]!==v||e[16]!==c?(b=r(D,{"aria-label":h,className:"h-8 w-32","data-testid":"lg-req-user",onChange:o,placeholder:v,value:c}),e[13]=o,e[14]=h,e[15]=v,e[16]=c,e[17]=b):b=e[17];let y;e[18]!==s?(y=s("Table touched"),e[18]=s,e[19]=y):y=e[19];let w;e[20]!==s?(w=s("table"),e[20]=s,e[21]=w):w=e[21];let x;e[22]!==n||e[23]!==y||e[24]!==w||e[25]!==m?(x=r(D,{"aria-label":y,className:"h-8 w-32","data-testid":"lg-req-table",onChange:n,placeholder:w,value:m}),e[22]=n,e[23]=y,e[24]=w,e[25]=m,e[26]=x):x=e[26];let T;e[27]!==s?(T=s("Outcome filter"),e[27]=s,e[28]=T):T=e[28];let R;e[29]!==s?(R=s("all"),e[29]=s,e[30]=R):R=e[30];let N;e[31]!==R?(N=r("option",{value:"all",children:R}),e[31]=R,e[32]=N):N=e[32];let L;e[33]!==s?(L=s("ok"),e[33]=s,e[34]=L):L=e[34];let S;e[35]!==L?(S=r("option",{value:"ok",children:L}),e[35]=L,e[36]=S):S=e[36];let g;e[37]!==s?(g=s("error"),e[37]=s,e[38]=g):g=e[38];let C;e[39]!==g?(C=r("option",{value:"error",children:g}),e[39]=g,e[40]=C):C=e[40];let k;e[41]!==t||e[42]!==d||e[43]!==T||e[44]!==N||e[45]!==S||e[46]!==C?(k=E("select",{"aria-label":T,className:"h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none","data-testid":"lg-req-outcome",onChange:t,value:d,children:[N,S,C]}),e[41]=t,e[42]=d,e[43]=T,e[44]=N,e[45]=S,e[46]=C,e[47]=k):k=e[47];let P;return e[48]!==k||e[49]!==u||e[50]!==b||e[51]!==x?(P=E("div",{className:"flex flex-wrap items-center gap-2",children:[u,b,x,k]}),e[48]=k,e[49]=u,e[50]=b,e[51]=x,e[52]=P):P=e[52],P},ve=i=>{const e=q(7),{bucket:t}=i;let a;e[0]!==t.key?(a=r("span",{className:"truncate text-muted-foreground",role:"gridcell",children:t.key}),e[0]=t.key,e[1]=a):a=e[1];let n;e[2]!==t.count?(n=r("span",{className:"shrink-0 tabular-nums",role:"gridcell",children:t.count}),e[2]=t.count,e[3]=n):n=e[3];let o;return e[4]!==a||e[5]!==n?(o=E("div",{className:"flex items-center justify-between gap-4 px-3 py-1 font-mono text-xs","data-testid":"logs-summary-row",role:"row",children:[a,n]}),e[4]=a,e[5]=n,e[6]=o):o=e[6],o},Ye=i=>{const e=q(31),{summary:t}=i,a=Q();let n;e[0]!==t.total||e[1]!==a?(n=a("{count} entries",{count:t.total}),e[0]=t.total,e[1]=a,e[2]=n):n=e[2];let o;e[3]!==n?(o=r("p",{className:"text-xs text-muted-foreground","data-testid":"logs-summary-total",children:n}),e[3]=n,e[4]=o):o=e[4];let d;e[5]!==a?(d=a("By level"),e[5]=a,e[6]=d):d=e[6];let p;e[7]!==d?(p=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:d}),e[7]=d,e[8]=p):p=e[8];let m;e[9]!==t.byLevel?(m=t.byLevel.map(je),e[9]=t.byLevel,e[10]=m):m=e[10];let c;e[11]!==m?(c=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-levels",role:"grid",children:m}),e[11]=m,e[12]=c):c=e[12];let s;e[13]!==p||e[14]!==c?(s=E("div",{children:[p,c]}),e[13]=p,e[14]=c,e[15]=s):s=e[15];let f;e[16]!==a?(f=a("By function"),e[16]=a,e[17]=f):f=e[17];let l;e[18]!==f?(l=r("h4",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:f}),e[18]=f,e[19]=l):l=e[19];let u;e[20]!==t.byPath?(u=t.byPath.map(Je),e[20]=t.byPath,e[21]=u):u=e[21];let h;e[22]!==u?(h=r("div",{className:"overflow-hidden rounded-lg border border-border","data-testid":"logs-summary-paths",role:"grid",children:u}),e[22]=u,e[23]=h):h=e[23];let v;e[24]!==h||e[25]!==l?(v=E("div",{children:[l,h]}),e[24]=h,e[25]=l,e[26]=v):v=e[26];let b;return e[27]!==v||e[28]!==o||e[29]!==s?(b=E("div",{className:"flex flex-col gap-4 rounded-xl border border-border bg-card p-4 shadow-xs","data-testid":"logs-summary",children:[o,s,v]}),e[27]=v,e[28]=o,e[29]=s,e[30]=b):b=e[30],b};function je(i){return r(ve,{bucket:i},i.key)}function Je(i){return r(ve,{bucket:i},i.key)}const Xe=i=>{const e=q(46),{liveError:t,onShardKeyChange:a,onShowArchive:n,onShowErrors:o,onShowRequests:d,shardKey:p,view:m}=i,c=Q(),s=m==="requests",f=m==="requests"?"bg-muted font-medium":"text-muted-foreground";let l;e[0]!==f?(l=H("px-3 py-1 text-sm",f),e[0]=f,e[1]=l):l=e[1];let u;e[2]!==c?(u=c("Requests"),e[2]=c,e[3]=u):u=e[3];let h;e[4]!==d||e[5]!==s||e[6]!==l||e[7]!==u?(h=r("button",{"aria-selected":s,className:l,"data-testid":"lg-view-requests",onClick:d,role:"tab",type:"button",children:u}),e[4]=d,e[5]=s,e[6]=l,e[7]=u,e[8]=h):h=e[8];const v=m==="errors",b=m==="errors"?"bg-muted font-medium":"text-muted-foreground";let y;e[9]!==b?(y=H("px-3 py-1 text-sm",b),e[9]=b,e[10]=y):y=e[10];let w;e[11]!==c?(w=c("Errors"),e[11]=c,e[12]=w):w=e[12];let x;e[13]!==o||e[14]!==v||e[15]!==y||e[16]!==w?(x=r("button",{"aria-selected":v,className:y,"data-testid":"lg-view-errors",onClick:o,role:"tab",type:"button",children:w}),e[13]=o,e[14]=v,e[15]=y,e[16]=w,e[17]=x):x=e[17];const T=m==="archive",R=m==="archive"?"bg-muted font-medium":"text-muted-foreground";let N;e[18]!==R?(N=H("px-3 py-1 text-sm",R),e[18]=R,e[19]=N):N=e[19];let L;e[20]!==c?(L=c("Archive"),e[20]=c,e[21]=L):L=e[21];let S;e[22]!==n||e[23]!==T||e[24]!==N||e[25]!==L?(S=r("button",{"aria-selected":T,className:N,"data-testid":"lg-view-archive",onClick:n,role:"tab",type:"button",children:L}),e[22]=n,e[23]=T,e[24]=N,e[25]=L,e[26]=S):S=e[26];let g;e[27]!==x||e[28]!==S||e[29]!==h?(g=E("div",{className:"inline-flex overflow-hidden rounded-lg border border-border",role:"tablist",children:[h,x,S]}),e[27]=x,e[28]=S,e[29]=h,e[30]=g):g=e[30];let C;e[31]!==a||e[32]!==p?(C=r(Ke,{onChange:a,testId:"lg-shard-input",value:p}),e[31]=a,e[32]=p,e[33]=C):C=e[33];let k;e[34]!==t||e[35]!==m?(k=m!=="archive"&&r(Ue,{message:t,prefix:"lg"}),e[34]=t,e[35]=m,e[36]=k):k=e[36];let P;e[37]!==c?(P=c("Open in Cloudflare"),e[37]=c,e[38]=P):P=e[38];let O;e[39]!==P?(O=r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"lg-cf-link",href:pe,rel:"noreferrer",target:"_blank",children:P}),e[39]=P,e[40]=O):O=e[40];let _;return e[41]!==g||e[42]!==C||e[43]!==k||e[44]!==O?(_=E("div",{className:"flex flex-wrap items-center gap-2",children:[g,C,k,O]}),e[41]=g,e[42]=C,e[43]=k,e[44]=O,e[45]=_):_=e[45],_},te=400,Ze=36,et={height:te,overflow:"auto"},be={left:0,position:"absolute",top:0,width:"100%"},tt={error:"destructive",ok:"secondary"},xe=i=>{const e=q(6),{onOpenTrace:t,traceId:a}=i,n=Q();let o;e[0]!==t||e[1]!==n||e[2]!==a?(o=a===void 0?null:r("button",{className:"text-primary underline-offset-2 hover:underline","data-testid":"lg-trace-link",onClick:()=>{t(a)},type:"button",children:n("Trace")}),e[0]=t,e[1]=n,e[2]=a,e[3]=o):o=e[3];let d;return e[4]!==o?(d=r("span",{className:"w-16 shrink-0 text-right",role:"gridcell",children:o}),e[4]=o,e[5]=d):d=e[5],d},rt=i=>{const e=q(13),{entry:t,index:a,measureRef:n,onOpenTrace:o,start:d}=i,p=`translateY(${String(d)}px)`;let m;e[0]!==p?(m={...be,transform:p},e[0]=p,e[1]=m):m=e[1];const c=m;let s;e[2]!==t?(s=r(Me,{entry:t}),e[2]=t,e[3]=s):s=e[3];let f;e[4]!==t.traceId||e[5]!==o?(f=r(xe,{onOpenTrace:o,traceId:t.traceId}),e[4]=t.traceId,e[5]=o,e[6]=f):f=e[6];let l;return e[7]!==a||e[8]!==n||e[9]!==c||e[10]!==s||e[11]!==f?(l=E("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":a,"data-testid":"lg-row",ref:n,role:"row",style:c,children:[s,f]}),e[7]=a,e[8]=n,e[9]=c,e[10]=s,e[11]=f,e[12]=l):l=e[12],l},ce=i=>i.length===0?"—":i.join(", "),st=i=>{const e=q(41),{entry:t,index:a,measureRef:n,onOpenTrace:o,start:d}=i,p=`translateY(${String(d)}px)`;let m;e[0]!==p?(m={...be,transform:p},e[0]=p,e[1]=m):m=e[1];const c=m;let s;e[2]!==t.ts?(s=new Date(t.ts).toLocaleString(),e[2]=t.ts,e[3]=s):s=e[3];let f;e[4]!==s?(f=r("span",{className:"w-40 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:s}),e[4]=s,e[5]=f):f=e[5];const l=tt[t.outcome];let u;e[6]!==t.outcome||e[7]!==l?(u=r("span",{className:"w-16 shrink-0",role:"gridcell",children:r(he,{variant:l,children:t.outcome})}),e[6]=t.outcome,e[7]=l,e[8]=u):u=e[8];let h;e[9]!==t.functionPath?(h=r("span",{className:"w-44 shrink-0 truncate",role:"gridcell",title:t.functionPath,children:t.functionPath}),e[9]=t.functionPath,e[10]=h):h=e[10];const v=t.shardKey??"—";let b;e[11]!==v?(b=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:v}),e[11]=v,e[12]=b):b=e[12];const y=t.userId??"—";let w;e[13]!==y?(w=r("span",{className:"w-24 shrink-0 truncate text-muted-foreground",role:"gridcell",children:y}),e[13]=y,e[14]=w):w=e[14];let x;e[15]!==t.durationMs?(x=Math.round(t.durationMs),e[15]=t.durationMs,e[16]=x):x=e[16];const T=`${String(x)}ms`;let R;e[17]!==T?(R=r("span",{className:"w-16 shrink-0 tabular-nums text-muted-foreground",role:"gridcell",children:T}),e[17]=T,e[18]=R):R=e[18];let N;e[19]!==t.errorMessage||e[20]!==t.outcome||e[21]!==t.tablesRead||e[22]!==t.tablesWritten?(N=t.outcome==="error"&&t.errorMessage!==void 0?t.errorMessage:`r:${ce(t.tablesRead)} · w:${ce(t.tablesWritten)}`,e[19]=t.errorMessage,e[20]=t.outcome,e[21]=t.tablesRead,e[22]=t.tablesWritten,e[23]=N):N=e[23];let L;e[24]!==N?(L=r("span",{className:"flex-1 truncate text-muted-foreground",role:"gridcell",children:N}),e[24]=N,e[25]=L):L=e[25];let S;e[26]!==t.traceId||e[27]!==o?(S=r(xe,{onOpenTrace:o,traceId:t.traceId}),e[26]=t.traceId,e[27]=o,e[28]=S):S=e[28];let g;return e[29]!==a||e[30]!==n||e[31]!==c||e[32]!==w||e[33]!==R||e[34]!==L||e[35]!==S||e[36]!==f||e[37]!==u||e[38]!==h||e[39]!==b?(g=E("div",{className:"flex items-center border-b border-border px-3 py-1.5 font-mono text-xs hover:bg-muted/50","data-index":a,"data-testid":"lg-req-row",ref:n,role:"row",style:c,children:[f,u,h,b,w,R,L,S]}),e[29]=a,e[30]=n,e[31]=c,e[32]=w,e[33]=R,e[34]=L,e[35]=S,e[36]=f,e[37]=u,e[38]=h,e[39]=b,e[40]=g):g=e[40],g},de=i=>{const{entries:e}=i??{};return Array.isArray(e)?e:[]},lt=i=>{const e={};return i.functionPathPrefix.trim()!==""&&(e.functionPathPrefix=i.functionPathPrefix.trim()),i.userId.trim()!==""&&(e.userId=i.userId.trim()),i.tableTouched.trim()!==""&&(e.tableTouched=i.tableTouched.trim()),(i.outcome==="ok"||i.outcome==="error")&&(e.outcome=i.outcome),e},ot={"5m":300*1e3,"15m":900*1e3,"1h":3600*1e3},at=(i,e)=>{const t=e.search.trim().toLowerCase(),a=e.path.trim().toLowerCase(),n=e.range==="all"?Number.NEGATIVE_INFINITY:e.now-ot[e.range];return i.filter(o=>e.levels.size>0&&!e.levels.has(o.level)||o.timestamp<n||a!==""&&!(o.functionPath??"").toLowerCase().includes(a)?!1:t===""||o.message.toLowerCase().includes(t)||fe(o.fields).toLowerCase().includes(t))},nt="—",it=i=>{const e=new Map,t=new Map;for(const o of i){e.set(o.level,(e.get(o.level)??0)+1);const d=o.functionPath??nt;t.set(d,(t.get(d)??0)+1)}const a=re.filter(o=>e.has(o)).map(o=>({count:e.get(o)??0,key:o})),n=[...t.entries()].map(([o,d])=>({count:d,key:o})).toSorted((o,d)=>d.count===o.count?o.key.localeCompare(d.key):d.count-o.count);return{byLevel:a,byPath:n,total:i.length}},Wt=({initialShardKey:i})=>{const e=Q(),[t,a]=F("requests"),{queryShardKey:n,setShardKey:o,shardKey:d}=Ie(i),[p,m]=F(""),[c,s]=F(()=>new Set),[f,l]=F(""),[u,h]=F("all"),[v,b]=F(!1),[y,w]=F(""),[x,T]=F(""),[R,N]=F(""),[L,S]=F("all"),g=lt({functionPathPrefix:y,outcome:L,tableTouched:R,userId:x}),C=le(oe.getRequestLog,g,{enabled:t==="requests",live:!0,shardKey:n}),k=le(oe.getLogs,{},{enabled:t==="errors",live:!0,shardKey:n}),P=t==="requests"?C:k,{error:O,errorSource:_,isLoading:A,liveError:z}=P,M=Te(n),U=de(k.data),$=de(C.data);me(()=>{P.data!==void 0&&Re(n)},[P.data,n]);const K=at(U,{levels:c,now:Date.now(),path:f,range:u,search:p}),G=it(K),J=t==="requests"?$.length:K.length,X=t==="errors"&&v,W=Ne(()=>O!==null?"error":J===0?A?X?"summary":"list":"empty":X?"summary":"list",[J,A,O,X]),se=ue(null),Y=Ce({count:J,estimateSize:()=>Ze,getScrollElement:()=>se.current,initialRect:{height:te,width:800},observeElementRect:(I,Z)=>ke(I,Z,te),overscan:8}),ye=Y.getVirtualItems(),we={height:Y.getTotalSize(),position:"relative",width:"100%"};return E("div",{className:"flex flex-col gap-4","data-testid":"lunora-logs",children:[r(Xe,{liveError:z,onShardKeyChange:o,onShowArchive:()=>{a("archive"),b(!1)},onShowErrors:()=>{a("errors"),b(!1)},onShowRequests:()=>{a("requests"),b(!1)},shardKey:d,view:t}),t==="errors"&&r(He,{levelFilter:c,onLogPathChange:I=>{l(I.target.value)},onSearchChange:I=>{m(I.target.value)},onTimeRangeChange:I=>{h(I.target.value)},onToggleLevel:I=>{s(Z=>{const j=new Set(Z);return j.has(I)?j.delete(I):j.add(I),j})},onToggleSummary:()=>{b(I=>!I)},pathFilter:f,search:p,showSummary:v,timeRange:u}),t==="requests"&&r(We,{onOutcomeChange:I=>{S(I.target.value)},onPathChange:I=>{w(I.target.value)},onTableChange:I=>{N(I.target.value)},onUserChange:I=>{T(I.target.value)},outcomeFilter:L,pathPrefix:y,tableFilter:R,userIdFilter:x}),t==="archive"?r(ze,{shardKey:n}):E($e,{children:[W==="error"&&r(Se,{error:_,testId:"lg-error"}),W==="empty"&&r(ee,{description:e("Function and request logs for this shard show up here as your app handles traffic."),icon:r("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:r("path",{d:"M4 5h16M4 12h16M4 19h10"})}),testId:"lg-empty",title:e("No logs.")}),W==="summary"&&r(Ye,{summary:G}),W==="list"&&r("div",{className:"rounded-xl border border-border shadow-xs","data-testid":"lg-scroll",ref:se,style:et,children:r("div",{"aria-label":e("Recent logs"),"data-testid":"lg-table",role:"grid",style:we,children:ye.map(I=>t==="requests"?r(st,{entry:$[I.index],index:I.index,measureRef:Y.measureElement,onOpenTrace:M,start:I.start},I.key):r(rt,{entry:K[I.index],index:I.index,measureRef:Y.measureElement,onOpenTrace:M,start:I.start},I.key))})})]})]})};export{Wt as LogsPanel,at as filterLogs,it as summarizeLogs};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{E as ie}from"../packem_shared/error-alert-TYdKetJd.js";import{B as se}from"../packem_shared/badge-cAk9Di1Q.js";import{B as v}from"../packem_shared/button-BOPLD1un.js";import{E as oe}from"../packem_shared/empty-state-B939z6K2.js";import{I as ne}from"../packem_shared/input-CY5W3wzv.js";import{S as le}from"../packem_shared/scroll-area-DSJftwu_.js";import{Separator as de}from"@base-ui/react/separator";import{c as ce}from"../packem_shared/utils-bhneXptQ.js";import{jsx as t,jsxs as n,Fragment as me}from"react/jsx-runtime";import{useT as ue}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.js";import{c as ae,d as Y,b as Z,f as ee,g as he,i as te}from"../packem_shared/internal-CwaF9YNk.js";import{c as pe}from"react/compiler-runtime";import{useLunora as fe}from"@lunora/react";import{useState as O}from"react";import{u as be}from"../packem_shared/use-admin-query-P0RJrjsD.js";import{useAutoRefresh as xe}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.js";import{ADMIN_FUNCTIONS as X}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";function ge({className:r,orientation:e="horizontal",...s}){return t(de,{"data-slot":"separator",orientation:e,className:ce("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",r),...s})}const ve=/https?:\/\/[^\s"'<>)]+/i,re=r=>r===void 0?void 0:ve.exec(r)?.[0],N=r=>r===void 0?"":Array.isArray(r)?r.join(", "):r,Ne=r=>{if(r!==void 0)return re(r.html)??re(r.text)},we=(r,e)=>{const s=e.trim().toLowerCase();return s===""?r:r.filter(o=>`${o.subject} ${N(o.to)} ${N(o.cc)}`.toLowerCase().includes(s))},ye=(r,e)=>{if(r.length!==0)return r.find(s=>s.id===e)??r[0]},Ce=ae(X.clearCapturedMail),Se=ae(X.sendTestMail),Te=r=>{const e=pe(38),{limit:s}=r,o=fe();let p;e[0]!==s?(p={limit:s},e[0]=s,e[1]=p):p=e[1];const{data:R,error:w,errorSource:y,isLoading:x,refetch:l}=be(X.getCapturedMail,p),[C,f]=O(null),[B,S]=O(null),[g,i]=O("html"),[c,D]=O(""),b=R?.entries??[],a=w??C,h=w===null?C:y;let T;e[2]!==o||e[3]!==l?(T=async()=>{f(null);try{await o.query(Ce,{},Y("")),S(null),l()}catch(m){f(Z(m))}},e[2]=o,e[3]=l,e[4]=T):T=e[4];const H=T;let k;e[5]!==o||e[6]!==l?(k=async()=>{f(null);try{await o.query(Se,{},Y("")),l()}catch(m){f(Z(m))}},e[5]=o,e[6]=l,e[7]=k):k=e[7];const q=k;let L;e[8]!==l?(L=()=>{l()},e[8]=l,e[9]=L):L=e[9],xe(L,!0);let A;e[10]!==H?(A=()=>{ee(H())},e[10]=H,e[11]=A):A=e[11];const U=A;let E;e[12]!==q?(E=()=>{ee(q())},e[12]=q,e[13]=E):E=e[13];const W=E;let _;e[14]===Symbol.for("react.memo_cache_sentinel")?(_=m=>{D(m.currentTarget.value)},e[14]=_):_=e[14];const K=_;let M;e[15]===Symbol.for("react.memo_cache_sentinel")?(M=m=>{const{id:u}=m.currentTarget.dataset;u!==void 0&&S(u)},e[15]=M):M=e[15];const Q=M;let j;e[16]===Symbol.for("react.memo_cache_sentinel")?(j=m=>{const u=m.currentTarget.dataset.tab;(u==="headers"||u==="html"||u==="text")&&i(u)},e[16]=j):j=e[16];const V=j,I=we(b,c),$=ye(I,B),d=Ne($);let z;e[17]!==d?(z=()=>{d!==void 0&&he(d)},e[17]=d,e[18]=z):z=e[18];const G=z;let F;e[19]!==d?(F=()=>{d!==void 0&&"window"in globalThis&&globalThis.window.open(d,"_blank","noopener")},e[19]=d,e[20]=F):F=e[20];const J=F;let P;return e[21]!==b||e[22]!==a||e[23]!==h||e[24]!==c||e[25]!==x||e[26]!==d||e[27]!==U||e[28]!==G||e[29]!==K||e[30]!==J||e[31]!==Q||e[32]!==V||e[33]!==W||e[34]!==$||e[35]!==g||e[36]!==I?(P={entries:b,error:a,errorSource:h,filter:c,isLoading:x,link:d,onClear:U,onCopyLink:G,onFilterChange:K,onOpenLink:J,onSelectMessage:Q,onSelectTab:V,onSendTest:W,selected:$,tab:g,visible:I},e[21]=b,e[22]=a,e[23]=h,e[24]=c,e[25]=x,e[26]=d,e[27]=U,e[28]=G,e[29]=K,e[30]=J,e[31]=Q,e[32]=V,e[33]=W,e[34]=$,e[35]=g,e[36]=I,e[37]=P):P=e[37],P},ke=`<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data:; style-src 'unsafe-inline'; font-src data:">`,Le=r=>`${ke}${r}`,We=({limit:r=100})=>{const e=ue(),{entries:s,error:o,errorSource:p,filter:R,isLoading:w,link:y,onClear:x,onCopyLink:l,onFilterChange:C,onOpenLink:f,onSelectMessage:B,onSelectTab:S,onSendTest:g,selected:i,tab:c,visible:D}=Te({limit:r}),b=a=>e(a==="html"?"HTML":a==="text"?"Plain text":"Headers");return n("div",{className:"flex flex-col gap-4","data-testid":"mail-panel",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t(v,{"data-testid":"mail-send-test",onClick:g,size:"sm",type:"button",variant:"outline",children:e("Send test")}),t(v,{"data-testid":"mail-clear",disabled:s.length===0,onClick:x,size:"sm",type:"button",variant:"outline",children:e("Clear inbox")}),s.length>0&&t(se,{className:"ml-auto","data-testid":"mail-count",variant:"secondary",children:e("{count} messages",{count:s.length})})]}),o!==null&&t(ie,{error:p,testId:"mail-error"}),o===null&&!w&&s.length===0&&t(oe,{description:e("Email your app sends in dev is captured here — nothing is delivered."),icon:n("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:[t("path",{d:"M4 5h16v14H4z"}),t("path",{d:"m4 6 8 6 8-6"})]}),testId:"mail-empty",title:e("No captured email.")}),s.length>0&&n("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-[minmax(0,22rem)_1fr]","data-testid":"mail-reader",children:[n("div",{className:"flex flex-col gap-2",children:[t(ne,{"aria-label":e("Search messages"),"data-testid":"mail-search",onChange:C,placeholder:e("Filter messages"),type:"search",value:R}),t(le,{className:"max-h-[32rem] rounded-xl border border-border bg-card shadow-xs","data-testid":"mail-list",children:t("ul",{className:"divide-y",children:D.map(a=>{const h=a.id===i?.id;return t("li",{children:n("button",{className:`flex w-full flex-col items-start gap-0.5 px-3 py-2 text-left text-sm hover:bg-muted/60 ${h?"bg-muted":""}`,"data-active":h,"data-id":a.id,"data-testid":"mail-list-item",onClick:B,type:"button",children:[t("span",{className:"w-full truncate font-medium",children:a.subject||e("(no subject)")}),t("span",{className:"w-full truncate text-xs text-muted-foreground",children:N(a.to)}),t("span",{className:"text-xs text-muted-foreground tabular-nums",children:te(a.capturedAt,"—")})]})},a.id)})})})]}),i!==void 0&&n("div",{className:"flex min-w-0 flex-col gap-3 rounded-xl border border-border bg-card p-4 shadow-xs","data-testid":"mail-detail",children:[n("div",{className:"flex flex-col gap-1",children:[t("h2",{className:"truncate text-base font-semibold","data-testid":"mail-subject",children:i.subject||e("(no subject)")}),n("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-xs text-muted-foreground",children:[t("dt",{children:e("From")}),t("dd",{className:"truncate font-mono",children:i.from??"—"}),t("dt",{children:e("To")}),t("dd",{className:"truncate font-mono",children:N(i.to)}),i.cc!==void 0&&i.cc.length>0&&n(me,{children:[t("dt",{children:e("Cc")}),t("dd",{className:"truncate font-mono",children:N(i.cc)})]}),t("dt",{children:e("Sent")}),t("dd",{className:"tabular-nums",children:te(i.capturedAt,"—")})]})]}),n("div",{className:"flex flex-wrap items-center gap-2","data-testid":"mail-actions",children:[t(v,{"data-testid":"mail-copy-link",disabled:y===void 0,onClick:l,size:"sm",type:"button",variant:"outline",children:e("Copy link")}),t(v,{"data-testid":"mail-open-link",disabled:y===void 0,onClick:f,size:"sm",type:"button",variant:"outline",children:e("Open in new tab")})]}),t(ge,{}),t("div",{className:"flex items-center gap-1","data-testid":"mail-tabs",role:"tablist",children:["html","text","headers"].map(a=>t(v,{"aria-selected":c===a,"data-tab":a,"data-testid":`mail-tab-${a}`,onClick:S,role:"tab",size:"sm",type:"button",variant:c===a?"secondary":"ghost",children:b(a)},a))}),n("div",{className:"min-h-[12rem]",children:[c==="html"&&(i.html===void 0?t("p",{className:"text-sm text-muted-foreground",children:e("No HTML body.")}):t("iframe",{className:"h-[24rem] w-full rounded-md border bg-white","data-testid":"mail-preview-html",sandbox:"",srcDoc:Le(i.html),title:e("Email preview")})),c==="text"&&(i.text===void 0?t("p",{className:"text-sm text-muted-foreground",children:e("No text body.")}):t("pre",{className:"overflow-auto whitespace-pre-wrap rounded-md border bg-muted/30 p-3 text-xs","data-testid":"mail-preview-text",children:i.text})),c==="headers"&&(i.headers===void 0||Object.keys(i.headers).length===0?t("p",{className:"text-sm text-muted-foreground",children:e("No headers.")}):t("pre",{className:"overflow-auto whitespace-pre-wrap rounded-md border bg-muted/30 p-3 text-xs","data-testid":"mail-preview-headers",children:Object.entries(i.headers).map(([a,h])=>`${a}: ${h}`).join(`
|
|
2
2
|
`)}))]})]})]})]})};export{We as MailPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useLunora as ft}from"@lunora/react";import{useState as fe,useRef as We,useEffect as tt,useMemo as pt}from"react";import{L as xt}from"../packem_shared/live-status-CmuRLFKf.js";import{ShardInput as bt}from"../packem_shared/ShardInput-BVn2iCU0.js";import{u as rt}from"../packem_shared/button-BkCrNcAs.js";import{N as Je}from"../packem_shared/use-admin-query-CnnyWJXM.js";import{f as vt}from"../packem_shared/use-open-trace-CniEgUdp.js";import{S as yt}from"../packem_shared/use-shard-key-B2JtNa5m.js";import{useT as pe}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as ze}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{c as Nt}from"../packem_shared/cf-links-Dmg86v1D.js";import{m as St,l as Ye,f as $t,d as wt,b as qt,g as kt}from"../packem_shared/internal-zkEvTqy8.js";import{r as Mt,l as _t}from"../packem_shared/shard-history-DMEW5VBE.js";import{c as Te}from"react/compiler-runtime";import{f as Ct}from"../packem_shared/log-fields-CoL3hsIQ.js";import{g as et}from"../packem_shared/badge-BbuuAio7.js";import{c as he,f as ge,n as Ue,m as Pe,p as It}from"../packem_shared/card-BMKx5UdA.js";import{m as de,n as ct,f as He,p as oe,d as dt,b as mt}from"../packem_shared/table-DZAB8cs3.js";import{S as ut}from"../packem_shared/sparkline-BNvxiJj_.js";import{jsx as t,jsxs as o,Fragment as Ve}from"react/jsx-runtime";import{aggregateMetrics as Rt,computeLatencyPercentiles as Dt,enrichQueryStats as Ft,shardsToAggregate as Lt}from"../packem_shared/aggregateMetrics-BNfajLa2.js";import{g as me}from"../packem_shared/stat-card-BGJdhfm6.js";import{ResponsiveContainer as at,AreaChart as Tt,CartesianGrid as lt,XAxis as st,YAxis as nt,Tooltip as it,Area as Ot,LineChart as zt,Line as At}from"recharts";import{E as Kt}from"../packem_shared/empty-state-Cg7t_8qu.js";import{c as Et}from"../packem_shared/utils-bhneXptQ.js";import{w as jt,z as Ut,_ as Qe,S as Pt,x as Qt}from"../packem_shared/select-BssZMiFY.js";const Bt=(l,e)=>l<e?-1:l>e?1:0,Ze=l=>{if(l===void 0)return"null";if(typeof l=="bigint")throw new TypeError("stableStringify: cannot use a bigint in a stable JSON cache key — pass it as a string, or use stableWireKey");if(l===null||typeof l!="object")return JSON.stringify(l);if(Array.isArray(l))return`[${l.map(d=>Ze(d)).join(",")}]`;const e=Object.getPrototypeOf(l);if(e!==null&&e!==Object.prototype){const d=l.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${d} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const s=l,a=Object.keys(s).toSorted(Bt),r=[];for(const d of a){const i=s[d];i!==void 0&&r.push(`${JSON.stringify(d)}:${Ze(i)}`)}return`{${r.join(",")}}`},ht=(l,e,s)=>`${l}:${e}:${Ze(s??{})}`,gt=(l,e)=>l==="gauge"?e.last:l==="histogram"?e.sum/Math.max(1,e.count):e.sum,Jt=(l,e)=>gt(l,e),Ht=l=>gt(l.kind,l),Xe=l=>Number.isInteger(l)?l.toLocaleString():l.toLocaleString(void 0,{maximumFractionDigits:2}),Gt=l=>Array.isArray(l?.series)?l.series:[],Wt="FUNCTION_NOT_FOUND",Xt=l=>{const e=new Map;if(!Array.isArray(l?.series))return e;for(const s of l.series)e.set(ht(s.kind,s.name,s.attributes),s.points);return e},Yt={counter:"secondary",gauge:"default",histogram:"outline"},Vt=l=>{const e=Te(18),{name:s,onOpenTrace:a,traceId:r}=l,d=pe();if(r===void 0){let m;return e[0]===Symbol.for("react.memo_cache_sentinel")?(m=t("span",{className:"text-muted-foreground",children:"—"}),e[0]=m):m=e[0],m}let i;e[1]!==r?(i=r.slice(0,8),e[1]=r,e[2]=i):i=e[2];const n=i;if(a===void 0){const m=`mt-instrument-trace-${s}`;let g;return e[3]!==n||e[4]!==m||e[5]!==r?(g=t("span",{className:"text-muted-foreground","data-testid":m,title:r,children:n}),e[3]=n,e[4]=m,e[5]=r,e[6]=g):g=e[6],g}const S=`mt-instrument-trace-${s}`;let v;e[7]!==a||e[8]!==r?(v=()=>{a(r)},e[7]=a,e[8]=r,e[9]=v):v=e[9];let $;e[10]!==d||e[11]!==r?($=d("Open the exemplar trace {trace}",{trace:r}),e[10]=d,e[11]=r,e[12]=$):$=e[12];let h;return e[13]!==n||e[14]!==S||e[15]!==v||e[16]!==$?(h=t("button",{className:"text-primary underline-offset-4 hover:underline","data-testid":S,onClick:v,title:$,type:"button",children:n}),e[13]=n,e[14]=S,e[15]=v,e[16]=$,e[17]=h):h=e[17],h},Zt=l=>{const e=Te(105),{onOpenTrace:s,shardKey:a}=l,r=pe();let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d={},e[0]=d):d=e[0];let i;e[1]!==a?(i={live:!0,shardKey:a},e[1]=a,e[2]=i):i=e[2];const{data:n,error:S,errorSource:v}=Je(ze.getMetricSeries,d,i);let $;e[3]===Symbol.for("react.memo_cache_sentinel")?($={},e[3]=$):$=e[3];let h;e[4]!==a?(h={live:!0,shardKey:a},e[4]=a,e[5]=h):h=e[5];const{data:m}=Je(ze.getMetricHistory,$,h);let g,y,w,M,c,p,f,x,q,_,N,I,C;if(e[6]!==n||e[7]!==S||e[8]!==v||e[9]!==m||e[10]!==s||e[11]!==r){x=Symbol.for("react.early_return_sentinel");e:{const O=Gt(n),A=St(v)===Wt;if(S!==null&&!A){let u;e[25]!==r?(u=r("Instruments"),e[25]=r,e[26]=u):u=e[26];let E;e[27]!==u?(E=t("h3",{className:"text-sm font-semibold text-foreground",children:u}),e[27]=u,e[28]=E):E=e[28];let U;e[29]!==S||e[30]!==r?(U=r("Instruments unavailable: {error}",{error:S}),e[29]=S,e[30]=r,e[31]=U):U=e[31];let P;e[32]!==U?(P=t("span",{className:"text-xs text-muted-foreground","data-testid":"mt-instruments-error",role:"status",children:U}),e[32]=U,e[33]=P):P=e[33];let ie;e[34]!==E||e[35]!==P?(ie=o("section",{className:"flex flex-col gap-2","data-testid":"mt-instruments",children:[E,P]}),e[34]=E,e[35]=P,e[36]=ie):ie=e[36],x=ie;break e}if(O.length===0){x=null;break e}const T=Xt(m);let K;e[37]!==r?(K=u=>r(u==="counter"?"Counter":u==="gauge"?"Gauge":"Histogram"),e[37]=r,e[38]=K):K=e[38];const j=K;c="flex flex-col gap-2",p="mt-instruments";let z;e[39]!==r?(z=r("Instruments"),e[39]=r,e[40]=z):z=e[40],e[41]!==z?(f=t("h3",{className:"text-sm font-semibold text-foreground",children:z}),e[41]=z,e[42]=f):f=e[42],M=he,C="overflow-hidden py-0",w=ge,I="px-0",y=dt,_="mt-instruments-table";let B;e[43]!==r?(B=r("name"),e[43]=r,e[44]=B):B=e[44];let J;e[45]!==B?(J=t(de,{children:B}),e[45]=B,e[46]=J):J=e[46];let H;e[47]!==r?(H=r("kind"),e[47]=r,e[48]=H):H=e[48];let G;e[49]!==H?(G=t(de,{children:H}),e[49]=H,e[50]=G):G=e[50];let W;e[51]!==r?(W=r("value"),e[51]=r,e[52]=W):W=e[52];let X;e[53]!==W?(X=t(de,{className:"text-right",children:W}),e[53]=W,e[54]=X):X=e[54];let Y;e[55]!==r?(Y=r("count"),e[55]=r,e[56]=Y):Y=e[56];let V;e[57]!==Y?(V=t(de,{className:"text-right",children:Y}),e[57]=Y,e[58]=V):V=e[58];let Z;e[59]!==r?(Z=r("range"),e[59]=r,e[60]=Z):Z=e[60];let ee;e[61]!==Z?(ee=t(de,{className:"text-right",children:Z}),e[61]=Z,e[62]=ee):ee=e[62];let te;e[63]!==r?(te=r("trend"),e[63]=r,e[64]=te):te=e[64];let re;e[65]!==te?(re=t(de,{children:te}),e[65]=te,e[66]=re):re=e[66];let ae;e[67]!==r?(ae=r("trace"),e[67]=r,e[68]=ae):ae=e[68];let le;e[69]!==ae?(le=t(de,{children:ae}),e[69]=ae,e[70]=le):le=e[70];let se;e[71]!==r?(se=r("dimensions"),e[71]=r,e[72]=se):se=e[72];let ne;e[73]!==se?(ne=t(de,{children:se}),e[73]=se,e[74]=ne):ne=e[74],e[75]!==J||e[76]!==G||e[77]!==X||e[78]!==V||e[79]!==ee||e[80]!==re||e[81]!==le||e[82]!==ne?(N=t(ct,{children:o(He,{children:[J,G,X,V,ee,re,le,ne]})}),e[75]=J,e[76]=G,e[77]=X,e[78]=V,e[79]=ee,e[80]=re,e[81]=le,e[82]=ne,e[83]=N):N=e[83],g=mt,q=O.map(u=>{const E=Ct(u.attributes),U=ht(u.kind,u.name,u.attributes),P=(T.get(U)??[]).map(ie=>Jt(u.kind,ie));return o(He,{"data-testid":`mt-instrument-${u.name}`,children:[t(oe,{className:"font-mono text-xs",title:u.functionPath,children:u.name}),t(oe,{children:t(et,{variant:Yt[u.kind],children:j(u.kind)})}),t(oe,{className:"text-right font-mono tabular-nums","data-testid":`mt-instrument-value-${u.name}`,children:Xe(Ht(u))}),t(oe,{className:"text-right tabular-nums text-muted-foreground",children:u.count.toLocaleString()}),t(oe,{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:u.min===u.max?"—":`${Xe(u.min)}–${Xe(u.max)}`}),t(oe,{children:P.length>=2?t(ut,{ariaLabel:r("{name} trend",{name:u.name}),className:"h-6 w-24 text-foreground",series:P,testId:`mt-instrument-trend-${u.name}`}):t("span",{className:"text-xs text-muted-foreground",children:"—"})}),t(oe,{className:"font-mono text-xs",children:t(Vt,{name:u.name,onOpenTrace:s,traceId:u.exemplarTraceId})}),t(oe,{className:"max-w-64 truncate font-mono text-xs text-muted-foreground",title:E,children:E===""?"—":E})]},U)})}e[6]=n,e[7]=S,e[8]=v,e[9]=m,e[10]=s,e[11]=r,e[12]=g,e[13]=y,e[14]=w,e[15]=M,e[16]=c,e[17]=p,e[18]=f,e[19]=x,e[20]=q,e[21]=_,e[22]=N,e[23]=I,e[24]=C}else g=e[12],y=e[13],w=e[14],M=e[15],c=e[16],p=e[17],f=e[18],x=e[19],q=e[20],_=e[21],N=e[22],I=e[23],C=e[24];if(x!==Symbol.for("react.early_return_sentinel"))return x;let R;e[84]!==g||e[85]!==q?(R=t(g,{children:q}),e[84]=g,e[85]=q,e[86]=R):R=e[86];let k;e[87]!==y||e[88]!==R||e[89]!==_||e[90]!==N?(k=o(y,{"data-testid":_,children:[N,R]}),e[87]=y,e[88]=R,e[89]=_,e[90]=N,e[91]=k):k=e[91];let b;e[92]!==w||e[93]!==k||e[94]!==I?(b=t(w,{className:I,children:k}),e[92]=w,e[93]=k,e[94]=I,e[95]=b):b=e[95];let D;e[96]!==M||e[97]!==b||e[98]!==C?(D=t(M,{className:C,children:b}),e[96]=M,e[97]=b,e[98]=C,e[99]=D):D=e[99];let L;return e[100]!==c||e[101]!==p||e[102]!==f||e[103]!==D?(L=o("section",{className:c,"data-testid":p,children:[f,D]}),e[100]=c,e[101]=p,e[102]=f,e[103]=D,e[104]=L):L=e[104],L},er=l=>{const e=Te(74),{aggregate:s,shardResults:a}=l,r=pe();let d;e[0]!==r?(d=r("Shards"),e[0]=r,e[1]=d):d=e[1];let i;e[2]!==s.failed||e[3]!==s.reachable||e[4]!==r?(i=s.failed>0?r("{reachable} reachable, {failed} unreachable",{failed:s.failed,reachable:s.reachable}):r("{reachable} reachable",{reachable:s.reachable}),e[2]=s.failed,e[3]=s.reachable,e[4]=r,e[5]=i):i=e[5];let n;e[6]!==d||e[7]!==i?(n=t(me,{label:d,testId:"mt-agg-shards",value:i}),e[6]=d,e[7]=i,e[8]=n):n=e[8];let S;e[9]!==r?(S=r("Total requests"),e[9]=r,e[10]=S):S=e[10];let v;e[11]!==s.totalRequests||e[12]!==S?(v=t(me,{label:S,testId:"mt-agg-requests",value:s.totalRequests}),e[11]=s.totalRequests,e[12]=S,e[13]=v):v=e[13];let $;e[14]!==r?($=r("Total errors"),e[14]=r,e[15]=$):$=e[15];let h;e[16]!==s.totalErrors||e[17]!==$?(h=t(me,{label:$,testId:"mt-agg-errors",value:s.totalErrors}),e[16]=s.totalErrors,e[17]=$,e[18]=h):h=e[18];let m;e[19]!==r?(m=r("Total database size"),e[19]=r,e[20]=m):m=e[20];let g;e[21]!==s.totalDatabaseSize?(g=Ye(s.totalDatabaseSize),e[21]=s.totalDatabaseSize,e[22]=g):g=e[22];let y;e[23]!==m||e[24]!==g?(y=t(me,{label:m,testId:"mt-agg-db-size",value:g}),e[23]=m,e[24]=g,e[25]=y):y=e[25];let w;e[26]!==r?(w=r("Combined cache hit rate"),e[26]=r,e[27]=w):w=e[27];let M;e[28]!==s.hitRate||e[29]!==r?(M=s.hitRate===null?r("no cache configured"):`${(s.hitRate*100).toFixed(1)}%`,e[28]=s.hitRate,e[29]=r,e[30]=M):M=e[30];let c;e[31]!==w||e[32]!==M?(c=t(me,{label:w,testId:"mt-agg-cache",value:M}),e[31]=w,e[32]=M,e[33]=c):c=e[33];let p;e[34]!==y||e[35]!==c||e[36]!==n||e[37]!==v||e[38]!==h?(p=o("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":"mt-aggregate-stats",children:[n,v,h,y,c]}),e[34]=y,e[35]=c,e[36]=n,e[37]=v,e[38]=h,e[39]=p):p=e[39];let f;e[40]!==r?(f=r("shard"),e[40]=r,e[41]=f):f=e[41];let x;e[42]!==f?(x=t(de,{children:f}),e[42]=f,e[43]=x):x=e[43];let q;e[44]!==r?(q=r("requests"),e[44]=r,e[45]=q):q=e[45];let _;e[46]!==q?(_=t(de,{children:q}),e[46]=q,e[47]=_):_=e[47];let N;e[48]!==r?(N=r("errors"),e[48]=r,e[49]=N):N=e[49];let I;e[50]!==N?(I=t(de,{children:N}),e[50]=N,e[51]=I):I=e[51];let C;e[52]!==r?(C=r("db size"),e[52]=r,e[53]=C):C=e[53];let R;e[54]!==C?(R=t(de,{children:C}),e[54]=C,e[55]=R):R=e[55];let k;e[56]!==x||e[57]!==_||e[58]!==I||e[59]!==R?(k=t(ct,{children:o(He,{children:[x,_,I,R]})}),e[56]=x,e[57]=_,e[58]=I,e[59]=R,e[60]=k):k=e[60];let b;if(e[61]!==a||e[62]!==r){let A;e[64]!==r?(A=T=>o(He,{"data-testid":`mt-agg-row-${T.shard}`,children:[t(oe,{children:T.shard}),T.metrics===null?t(oe,{className:"text-destructive",colSpan:3,children:T.error??r("unreachable")}):o(Ve,{children:[t(oe,{className:"tabular-nums",children:T.metrics.requests}),t(oe,{className:"tabular-nums",children:T.metrics.errors}),t(oe,{className:"tabular-nums",children:Ye(T.metrics.databaseSize)})]})]},T.shard),e[64]=r,e[65]=A):A=e[65],b=a.map(A),e[61]=a,e[62]=r,e[63]=b}else b=e[63];let D;e[66]!==b?(D=t(mt,{children:b}),e[66]=b,e[67]=D):D=e[67];let L;e[68]!==k||e[69]!==D?(L=t(he,{className:"overflow-hidden py-0",children:t(ge,{className:"px-0",children:o(dt,{"data-testid":"mt-agg-table",children:[k,D]})})}),e[68]=k,e[69]=D,e[70]=L):L=e[70];let O;return e[71]!==p||e[72]!==L?(O=o("div",{className:"flex flex-col gap-4","data-testid":"mt-aggregate-view",children:[p,L]}),e[71]=p,e[72]=L,e[73]=O):O=e[73],O},tr=l=>{const e=Math.floor(l/1e3),s=Math.floor(e/3600),a=Math.floor(e%3600/60),r=e%60;return s>0?`${s.toString()}h ${a.toString()}m`:a>0?`${a.toString()}m ${r.toString()}s`:`${r.toString()}s`},rr=(l,e)=>{const s=l+e;return s===0?"—":`${(l/s*100).toFixed(1)}%`},ot=l=>l<=0?"—":l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,ar=l=>{const e=Te(75),{currentDelta:s,errorRate:a,history:r,latencyPercentiles:d,metrics:i}=l,n=pe();let S;e[0]!==r||e[1]!==n?(S=r.length>=2?t(ut,{ariaLabel:n("Requests per interval over time"),className:"h-7 w-24 text-foreground",series:r,testId:"mt-sparkline"}):void 0,e[0]=r,e[1]=n,e[2]=S):S=e[2];let v;e[3]!==s||e[4]!==r.length||e[5]!==n?(v=r.length>=2?o(Ve,{children:[t("span",{className:"font-semibold text-foreground",children:`+${s.toLocaleString()}`})," ",n("last interval")]}):t("span",{"data-testid":"mt-sparkline-empty",children:n("collecting samples…")}),e[3]=s,e[4]=r.length,e[5]=n,e[6]=v):v=e[6];let $;e[7]!==n?($=n("Requests"),e[7]=n,e[8]=$):$=e[8];let h;e[9]!==i.requests||e[10]!==S||e[11]!==v||e[12]!==$?(h=t(me,{chart:S,footer:v,label:$,testId:"mt-requests",value:i.requests}),e[9]=i.requests,e[10]=S,e[11]=v,e[12]=$,e[13]=h):h=e[13];let m;e[14]!==a||e[15]!==n?(m=n("{rate} error rate",{rate:a}),e[14]=a,e[15]=n,e[16]=m):m=e[16];let g;e[17]!==n?(g=n("Errors"),e[17]=n,e[18]=g):g=e[18];let y;e[19]!==a||e[20]!==i.errors?(y=o(Ve,{children:[i.errors," (",a,")"]}),e[19]=a,e[20]=i.errors,e[21]=y):y=e[21];let w;e[22]!==m||e[23]!==g||e[24]!==y?(w=t(me,{footer:m,label:g,testId:"mt-errors",value:y}),e[22]=m,e[23]=g,e[24]=y,e[25]=w):w=e[25];let M;e[26]!==d.p90?(M=d.p90>0?`P90 ${ot(d.p90)}`:void 0,e[26]=d.p90,e[27]=M):M=e[27];let c;e[28]!==n?(c=n("P95 latency"),e[28]=n,e[29]=c):c=e[29];let p;e[30]!==d.p95?(p=d.p95>0?ot(d.p95):"—",e[30]=d.p95,e[31]=p):p=e[31];let f;e[32]!==c||e[33]!==p||e[34]!==M?(f=t(me,{footer:M,label:c,testId:"mt-p95",value:p}),e[32]=c,e[33]=p,e[34]=M,e[35]=f):f=e[35];let x;e[36]!==i.cache||e[37]!==n?(x=i.cache===null?void 0:`${i.cache.entries.toLocaleString()} ${n("cache entries")}`,e[36]=i.cache,e[37]=n,e[38]=x):x=e[38];let q;e[39]!==n?(q=n("Database size"),e[39]=n,e[40]=q):q=e[40];let _;e[41]!==i.databaseSize?(_=Ye(i.databaseSize),e[41]=i.databaseSize,e[42]=_):_=e[42];let N;e[43]!==x||e[44]!==q||e[45]!==_?(N=t(me,{footer:x,label:q,testId:"mt-db-size",value:_}),e[43]=x,e[44]=q,e[45]=_,e[46]=N):N=e[46];let I;e[47]!==n?(I=n("Shard"),e[47]=n,e[48]=I):I=e[48];let C;e[49]!==i.shard||e[50]!==I?(C=t(me,{label:I,testId:"mt-shard",value:i.shard}),e[49]=i.shard,e[50]=I,e[51]=C):C=e[51];let R;e[52]!==n?(R=n("Uptime"),e[52]=n,e[53]=R):R=e[53];let k;e[54]!==i.uptimeMs?(k=tr(i.uptimeMs),e[54]=i.uptimeMs,e[55]=k):k=e[55];let b;e[56]!==R||e[57]!==k?(b=t(me,{label:R,testId:"mt-uptime",value:k}),e[56]=R,e[57]=k,e[58]=b):b=e[58];let D;e[59]!==n?(D=n("Cache hit rate"),e[59]=n,e[60]=D):D=e[60];let L;e[61]!==i.cache||e[62]!==n?(L=i.cache===null?n("no cache configured"):n("{rate} ({count} entries)",{count:i.cache.entries,rate:rr(i.cache.hits,i.cache.misses)}),e[61]=i.cache,e[62]=n,e[63]=L):L=e[63];let O;e[64]!==D||e[65]!==L?(O=t(me,{label:D,testId:"mt-cache",value:L}),e[64]=D,e[65]=L,e[66]=O):O=e[66];let A;return e[67]!==f||e[68]!==N||e[69]!==C||e[70]!==b||e[71]!==O||e[72]!==h||e[73]!==w?(A=o("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4","data-testid":"mt-stats",children:[h,w,f,N,C,b,O]}),e[67]=f,e[68]=N,e[69]=C,e[70]=b,e[71]=O,e[72]=h,e[73]=w,e[74]=A):A=e[74],A},Ge=l=>l>=100?"critical":l>=50?"warning":"good",Oe=l=>l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,Be=l=>l>=1e9?`${(l/1e9).toFixed(1)}B`:l>=1e6?`${(l/1e6).toFixed(1)}M`:l>=1e3?`${(l/1e3).toFixed(1)}K`:l.toLocaleString(),lr=l=>{const e=Te(3),{level:s}=l;if(s==="critical"){let r;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(et,{variant:"destructive",children:"Slow"}),e[0]=r):r=e[0],r}if(s==="warning"){let r;return e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-warning/10 px-2 py-0.5 text-xs font-medium text-warning",children:"Moderate"}),e[1]=r):r=e[1],r}let a;return e[2]===Symbol.for("react.memo_cache_sentinel")?(a=t("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-success/10 px-2 py-0.5 text-xs font-medium text-success",children:"Fast"}),e[2]=a):a=e[2],a},sr=(l,e)=>{const s=[...l];return s.sort((a,r)=>{switch(e){case"avgTime":return r.avgDurationMs-a.avgDurationMs;case"execCount":return r.execCount-a.execCount;case"rowsRead":return r.rowsRead-a.rowsRead;default:return r.totalDurationMs-a.totalDurationMs}}),s},nr=l=>{const e=Te(161),{queryStats:s}=l,a=pe(),[r,d]=fe("totalTime");let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=new Set,e[0]=i):i=e[0];const[n,S]=fe(i);let v;e[1]===Symbol.for("react.memo_cache_sentinel")?(v=C=>{C!==null&&d(C)},e[1]=v):v=e[1];const $=v;let h,m,g,y,w,M,c,p,f,x;if(e[2]!==n||e[3]!==s||e[4]!==r||e[5]!==a){g=Symbol.for("react.early_return_sentinel");e:{const C=sr(s,r);let R;e[16]!==s?(R=s.filter(ir),e[16]=s,e[17]=R):R=e[17];const k=R.length;let b;e[18]!==s?(b=s.filter(or),e[18]=s,e[19]=b):b=e[19];const D=b.length;let L;e[20]!==s?(L=s.filter(cr),e[20]=s,e[21]=L):L=e[21];const O=L.length;let A;e[22]===Symbol.for("react.memo_cache_sentinel")?(A=F=>{S(ce=>{const Q=new Set(ce);return Q.has(F)?Q.delete(F):Q.add(F),Q})},e[22]=A):A=e[22];const T=A;if(s.length===0){let F;e[23]!==a?(F=a("No query insights yet"),e[23]=a,e[24]=F):F=e[24];let ce;e[25]!==F?(ce=t("p",{className:"text-lg font-medium","data-testid":"qi-empty",children:F}),e[25]=F,e[26]=ce):ce=e[26];let Q;e[27]!==a?(Q=a("Query insights appear once statements are executed against this shard."),e[27]=a,e[28]=Q):Q=e[28];let ue;e[29]!==Q?(ue=t("p",{className:"mt-1 text-sm",children:Q}),e[29]=Q,e[30]=ue):ue=e[30];let je;e[31]!==ce||e[32]!==ue?(je=t(he,{children:t(ge,{className:"py-12",children:o("div",{className:"text-center text-muted-foreground",children:[ce,ue]})})}),e[31]=ce,e[32]=ue,e[33]=je):je=e[33],g=je;break e}c="space-y-4",p="qi-root";let K;e[34]!==a?(K=a("Critical queries"),e[34]=a,e[35]=K):K=e[35];let j;e[36]!==K?(j=t(Ue,{className:"pb-2",children:t(Pe,{className:"text-sm font-medium",children:K})}),e[36]=K,e[37]=j):j=e[37];let z;e[38]!==k?(z=t("div",{className:"text-2xl font-bold text-destructive","data-testid":"qi-critical",children:k}),e[38]=k,e[39]=z):z=e[39];let B;e[40]!==a?(B=a(">100ms avg execution"),e[40]=a,e[41]=B):B=e[41];let J;e[42]!==B?(J=t("p",{className:"text-xs text-muted-foreground",children:B}),e[42]=B,e[43]=J):J=e[43];let H;e[44]!==z||e[45]!==J?(H=o(ge,{children:[z,J]}),e[44]=z,e[45]=J,e[46]=H):H=e[46];let G;e[47]!==j||e[48]!==H?(G=o(he,{children:[j,H]}),e[47]=j,e[48]=H,e[49]=G):G=e[49];let W;e[50]!==a?(W=a("Moderate queries"),e[50]=a,e[51]=W):W=e[51];let X;e[52]!==W?(X=t(Ue,{className:"pb-2",children:t(Pe,{className:"text-sm font-medium",children:W})}),e[52]=W,e[53]=X):X=e[53];let Y;e[54]!==D?(Y=t("div",{className:"text-2xl font-bold text-warning","data-testid":"qi-moderate",children:D}),e[54]=D,e[55]=Y):Y=e[55];let V;e[56]!==a?(V=a("50–100ms avg execution"),e[56]=a,e[57]=V):V=e[57];let Z;e[58]!==V?(Z=t("p",{className:"text-xs text-muted-foreground",children:V}),e[58]=V,e[59]=Z):Z=e[59];let ee;e[60]!==Y||e[61]!==Z?(ee=o(ge,{children:[Y,Z]}),e[60]=Y,e[61]=Z,e[62]=ee):ee=e[62];let te;e[63]!==X||e[64]!==ee?(te=o(he,{children:[X,ee]}),e[63]=X,e[64]=ee,e[65]=te):te=e[65];let re;e[66]!==a?(re=a("Fast queries"),e[66]=a,e[67]=re):re=e[67];let ae;e[68]!==re?(ae=t(Ue,{className:"pb-2",children:t(Pe,{className:"text-sm font-medium",children:re})}),e[68]=re,e[69]=ae):ae=e[69];let le;e[70]!==O?(le=t("div",{className:"text-2xl font-bold text-success","data-testid":"qi-fast",children:O}),e[70]=O,e[71]=le):le=e[71];let se;e[72]!==a?(se=a("<50ms avg execution"),e[72]=a,e[73]=se):se=e[73];let ne;e[74]!==se?(ne=t("p",{className:"text-xs text-muted-foreground",children:se}),e[74]=se,e[75]=ne):ne=e[75];let u;e[76]!==le||e[77]!==ne?(u=o(ge,{children:[le,ne]}),e[76]=le,e[77]=ne,e[78]=u):u=e[78];let E;e[79]!==ae||e[80]!==u?(E=o(he,{children:[ae,u]}),e[79]=ae,e[80]=u,e[81]=E):E=e[81],e[82]!==G||e[83]!==te||e[84]!==E?(f=o("div",{className:"grid gap-4 md:grid-cols-3",children:[G,te,E]}),e[82]=G,e[83]=te,e[84]=E,e[85]=f):f=e[85];let U;e[86]!==a?(U=a("Query leaderboard"),e[86]=a,e[87]=U):U=e[87];let P;e[88]!==U?(P=t("h3",{className:"text-lg font-semibold",children:U}),e[88]=U,e[89]=P):P=e[89];let ie;e[90]!==r||e[91]!==a?(ie=a("Slow queries sorted by {sortField}",{sortField:a(r)}),e[90]=r,e[91]=a,e[92]=ie):ie=e[92];let xe;e[93]!==ie?(xe=t("p",{className:"text-sm text-muted-foreground",children:ie}),e[93]=ie,e[94]=xe):xe=e[94];let be;e[95]!==P||e[96]!==xe?(be=o("div",{children:[P,xe]}),e[95]=P,e[96]=xe,e[97]=be):be=e[97];let ve;e[98]!==a?(ve=a("Sort by"),e[98]=a,e[99]=ve):ve=e[99];let ye;e[100]!==ve?(ye=t("span",{className:"text-sm text-muted-foreground",children:ve}),e[100]=ve,e[101]=ye):ye=e[101];let Ne;e[102]!==a?(Ne=a("Sort queries by"),e[102]=a,e[103]=Ne):Ne=e[103];let Ae;e[104]===Symbol.for("react.memo_cache_sentinel")?(Ae=t(jt,{}),e[104]=Ae):Ae=e[104];let Se;e[105]!==Ne?(Se=t(Ut,{"aria-label":Ne,className:"w-[140px]","data-testid":"qi-sort",children:Ae}),e[105]=Ne,e[106]=Se):Se=e[106];let $e;e[107]!==a?($e=a("Total time"),e[107]=a,e[108]=$e):$e=e[108];let we;e[109]!==$e?(we=t(Qe,{value:"totalTime",children:$e}),e[109]=$e,e[110]=we):we=e[110];let qe;e[111]!==a?(qe=a("Avg time"),e[111]=a,e[112]=qe):qe=e[112];let ke;e[113]!==qe?(ke=t(Qe,{value:"avgTime",children:qe}),e[113]=qe,e[114]=ke):ke=e[114];let Me;e[115]!==a?(Me=a("Execution count"),e[115]=a,e[116]=Me):Me=e[116];let _e;e[117]!==Me?(_e=t(Qe,{value:"execCount",children:Me}),e[117]=Me,e[118]=_e):_e=e[118];let Ce;e[119]!==a?(Ce=a("Rows read"),e[119]=a,e[120]=Ce):Ce=e[120];let Ie;e[121]!==Ce?(Ie=t(Qe,{value:"rowsRead",children:Ce}),e[121]=Ce,e[122]=Ie):Ie=e[122];let Re;e[123]!==we||e[124]!==ke||e[125]!==_e||e[126]!==Ie?(Re=o(Pt,{children:[we,ke,_e,Ie]}),e[123]=we,e[124]=ke,e[125]=_e,e[126]=Ie,e[127]=Re):Re=e[127];let De;e[128]!==r||e[129]!==Se||e[130]!==Re?(De=o(Qt,{onValueChange:$,value:r,children:[Se,Re]}),e[128]=r,e[129]=Se,e[130]=Re,e[131]=De):De=e[131];let Fe;e[132]!==ye||e[133]!==De?(Fe=o("div",{className:"flex items-center gap-2",children:[ye,De]}),e[132]=ye,e[133]=De,e[134]=Fe):Fe=e[134],e[135]!==be||e[136]!==Fe?(x=o("div",{className:"flex items-center justify-between",children:[be,Fe]}),e[135]=be,e[136]=Fe,e[137]=x):x=e[137],m=he;let Le;e[138]!==a?(Le=a("Statements"),e[138]=a,e[139]=Le):Le=e[139];let Ke;e[140]!==Le?(Ke=t(Pe,{children:Le}),e[140]=Le,e[141]=Ke):Ke=e[141],M=o(Ue,{children:[Ke,t(It,{children:a("{count} tracked statements",{count:C.length})})]}),h=ge,y="space-y-2";let Ee;e[142]!==n||e[143]!==a?(Ee=F=>{const ce=F.normalizedSql,Q=n.has(ce),ue=Ge(F.avgDurationMs);return o("div",{className:"overflow-hidden rounded-lg border","data-testid":"qi-row",children:[o("button",{"aria-expanded":Q,className:"flex w-full items-center justify-between p-3 text-left transition-colors hover:bg-muted/50",onClick:()=>{T(ce)},type:"button",children:[o("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[t(lr,{level:ue}),t("span",{className:"max-w-[300px] truncate font-mono text-sm lg:max-w-[500px]",children:F.normalizedSql})]}),o("div",{className:"flex shrink-0 items-center gap-4",children:[o("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Oe(F.totalDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:a("total")})]}),o("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Oe(F.avgDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:a("avg")})]}),F.p95DurationMs!==void 0&&o("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Oe(F.p95DurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:a("p95")})]}),o("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Be(F.execCount)}),t("div",{className:"text-xs text-muted-foreground",children:a("calls")})]})]})]}),Q&&o("div",{className:"space-y-3 border-t bg-muted/30 p-4",children:[o("div",{children:[t("p",{className:"mb-2 text-sm font-medium",children:a("Full statement")}),t("pre",{className:"overflow-x-auto rounded-md bg-muted p-3 font-mono text-sm whitespace-pre-wrap break-all",children:F.normalizedSql})]}),o("div",{className:"grid grid-cols-2 gap-4 text-sm md:grid-cols-4",children:[F.p50DurationMs!==void 0&&o("div",{children:[t("span",{className:"text-muted-foreground",children:a("p50")}),t("span",{className:"block font-medium tabular-nums",children:Oe(F.p50DurationMs)})]}),o("div",{children:[t("span",{className:"text-muted-foreground",children:a("Exec count")}),t("span",{className:"block font-medium tabular-nums",children:Be(F.execCount)})]}),o("div",{children:[t("span",{className:"text-muted-foreground",children:a("Total time")}),t("span",{className:"block font-medium tabular-nums",children:Oe(F.totalDurationMs)})]}),o("div",{children:[t("span",{className:"text-muted-foreground",children:a("Rows read")}),t("span",{className:"block font-medium tabular-nums",children:Be(F.rowsRead)})]}),o("div",{children:[t("span",{className:"text-muted-foreground",children:a("Rows written")}),t("span",{className:"block font-medium tabular-nums",children:Be(F.rowsWritten)})]})]})]})]},ce)},e[142]=n,e[143]=a,e[144]=Ee):Ee=e[144],w=C.map(Ee)}e[2]=n,e[3]=s,e[4]=r,e[5]=a,e[6]=h,e[7]=m,e[8]=g,e[9]=y,e[10]=w,e[11]=M,e[12]=c,e[13]=p,e[14]=f,e[15]=x}else h=e[6],m=e[7],g=e[8],y=e[9],w=e[10],M=e[11],c=e[12],p=e[13],f=e[14],x=e[15];if(g!==Symbol.for("react.early_return_sentinel"))return g;let q;e[145]!==y||e[146]!==w?(q=t("div",{className:y,children:w}),e[145]=y,e[146]=w,e[147]=q):q=e[147];let _;e[148]!==h||e[149]!==q?(_=t(h,{children:q}),e[148]=h,e[149]=q,e[150]=_):_=e[150];let N;e[151]!==m||e[152]!==_||e[153]!==M?(N=o(m,{children:[M,_]}),e[151]=m,e[152]=_,e[153]=M,e[154]=N):N=e[154];let I;return e[155]!==N||e[156]!==c||e[157]!==p||e[158]!==f||e[159]!==x?(I=o("div",{className:c,"data-testid":p,children:[f,x,N]}),e[155]=N,e[156]=c,e[157]=p,e[158]=f,e[159]=x,e[160]=I):I=e[160],I};function ir(l){return Ge(l.avgDurationMs)==="critical"}function or(l){return Ge(l.avgDurationMs)==="warning"}function cr(l){return Ge(l.avgDurationMs)==="good"}const dr=["1m","5m","15m","1h"],mr=l=>new Date(l).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}),ur=l=>l.map(e=>({avg:Math.round(e.avgDurationMs*100)/100,execs:e.execCount,label:mr(e.bucketMs)})),hr=({shardKey:l=""})=>{const e=pe(),[s,a]=fe("15m"),r=Je(ze.getQueryInsights,{range:s},{live:!0,shardKey:l}).data,d=ur(r?.buckets??[]);return o("div",{className:"flex flex-col gap-4","data-testid":"qi-range",children:[o("div",{className:"flex flex-wrap items-center gap-2",children:[t("div",{className:"flex gap-1 rounded-lg border border-border p-0.5","data-testid":"qi-ranges",role:"group",children:dr.map(i=>t("button",{"aria-pressed":i===s,className:Et("rounded px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",i===s&&"bg-accent font-medium text-foreground"),"data-testid":`qi-range-${i}`,onClick:()=>{a(i)},type:"button",children:i},i))}),r?.capped===!0&&t(et,{"data-testid":"qi-capped",variant:"secondary",children:e("showing a capped set")})]}),d.length===0?t(Kt,{description:e("Statements executed in the selected window appear here, with throughput and latency over time."),testId:"qi-empty",title:e("No queries in this window.")}):o("div",{className:"grid gap-4 lg:grid-cols-2",children:[o("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-throughput",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Throughput")}),t(at,{height:140,width:"100%",children:o(Tt,{data:d,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(st,{dataKey:"label",fontSize:10,tickLine:!1}),t(nt,{allowDecimals:!1,fontSize:10,tickLine:!1,width:32}),t(it,{}),t(Ot,{dataKey:"execs",fill:"var(--color-primary)",fillOpacity:.15,stroke:"var(--color-primary)",type:"monotone"})]})})]}),o("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-latency",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Mean latency (ms)")}),t(at,{height:140,width:"100%",children:o(zt,{data:d,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(st,{dataKey:"label",fontSize:10,tickLine:!1}),t(nt,{fontSize:10,tickLine:!1,width:32}),t(it,{}),t(At,{dataKey:"avg",dot:!1,stroke:"var(--color-destructive)",type:"monotone"})]})})]})]}),t(nr,{queryStats:r?.entries??[]})]})},gr=kt(ze.getMetrics),fr=(l,e)=>l?e:"overview",Ur=({initialShardKey:l})=>{const e=ft(),s=pe(),{queryShardKey:a,setShardKey:r,shardKey:d}=yt(l),[i,n]=fe("overview"),[S,v]=fe([]),$=We(null),h=We(null),m=We(!0);tt(()=>(m.current=!0,()=>{m.current=!1}),[]);const g=vt(a),{data:y,error:w,liveError:M}=Je(ze.getMetrics,{},{live:!0,shardKey:a}),c=y??null;tt(()=>{if(y===void 0)return;Mt(a);const T=y,K=$.current,j=h.current!==null&&h.current!==T.shard;if(h.current=T.shard,$.current=T.requests,j){v([]);return}K!==null&&T.requests>=K&&v(z=>[...z,T.requests-K].slice(-30))},[y,a]);const[p,f]=fe(null),[x,q]=fe(!1),_=async()=>{q(!0);const T=Lt(d,_t());try{const K=await Promise.all(T.map(async j=>{try{const z=await e.query(gr,{},wt(j));return{error:null,metrics:z,shard:j===""?z.shard:j}}catch(z){return{error:qt(z),metrics:null,shard:j===""?"__root__":j}}}));m.current&&f(K)}finally{m.current&&q(!1)}},N=p===null?null:Rt(p),I=c===null||c.requests===0?"—":`${(c.errors/c.requests*100).toFixed(1)}%`,C=S.length>0?S.at(-1):0,R=c?Dt(c):{p90:0,p95:0},k=pt(()=>{if(!c||!("queryStats"in c))return;const T=c.queryStats;if(!(!T||!Array.isArray(T)))return Ft(T)},[c]),b=fr(k!==void 0,i),D=()=>{$t(_())},L=()=>{f(null)},O=()=>{n("overview")},A=()=>{n("query-insights")};return o("div",{className:"flex flex-col gap-4","data-testid":"lunora-metrics",children:[o("div",{className:"flex flex-wrap items-center gap-2",children:[t(bt,{onChange:r,testId:"mt-shard-input",value:d}),t(xt,{message:M,prefix:"mt"}),t(rt,{"data-testid":"mt-aggregate",disabled:x,onClick:D,size:"sm",type:"button",variant:"secondary",children:s(x?"Aggregating…":"All shards")}),p!==null&&t(rt,{"data-testid":"mt-aggregate-clear",onClick:L,size:"sm",type:"button",variant:"ghost",children:s("Hide")}),t("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"mt-cf-link",href:Nt,rel:"noreferrer",target:"_blank",children:s("Open in Cloudflare")})]}),w!==null&&t("p",{className:"text-sm text-destructive","data-testid":"mt-error",role:"alert",children:w}),k!==void 0&&o("div",{className:"flex gap-2 border-b","data-testid":"mt-tabs",children:[t("button",{className:`pb-2 text-sm font-medium transition-colors ${b==="overview"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-overview",onClick:O,type:"button",children:s("Overview")}),o("button",{className:`pb-2 text-sm font-medium transition-colors ${b==="query-insights"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-query-insights",onClick:A,type:"button",children:[s("Query insights"),k.length>0&&t("span",{className:"ml-1.5 rounded-full bg-primary/10 px-1.5 py-0.5 text-xs text-primary",children:k.length})]})]}),b==="query-insights"&&k!==void 0&&t(hr,{shardKey:a}),b==="overview"&&c!==null&&t(ar,{currentDelta:C,errorRate:I,history:S,latencyPercentiles:R,metrics:c}),b==="overview"&&c===null&&null,b==="overview"&&t(Zt,{onOpenTrace:g,shardKey:a}),b==="overview"&&N!==null&&p!==null&&t(er,{aggregate:N,shardResults:p})]})};export{Ur as MetricsPanel};
|
|
1
|
+
import{useLunora as gt}from"@lunora/react";import{useState as pe,useRef as Ge,useEffect as tt,useMemo as pt}from"react";import{L as xt}from"../packem_shared/live-status-Bf7rR8o8.js";import{ShardInput as bt}from"../packem_shared/ShardInput-XumEzeT0.js";import{B as rt}from"../packem_shared/button-BOPLD1un.js";import{u as Ue}from"../packem_shared/use-admin-query-P0RJrjsD.js";import{u as vt}from"../packem_shared/use-open-trace-4tIa0SXZ.js";import{u as yt}from"../packem_shared/use-shard-key-BsP3o5wT.js";import{useT as xe}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.js";import{ADMIN_FUNCTIONS as Le}from"../packem_shared/ADMIN_FUNCTIONS-4aE59aDq.js";import{c as Nt}from"../packem_shared/cf-links-CBJ5SywP.js";import{m as St,l as Xe,f as wt,d as qt,b as Tt,c as _t}from"../packem_shared/internal-CwaF9YNk.js";import{r as $t,l as Ct}from"../packem_shared/shard-history-QcjcMnCA.js";import{c as Ee}from"react/compiler-runtime";import{f as Rt}from"../packem_shared/log-fields-SBxKyBug.js";import{B as et}from"../packem_shared/badge-cAk9Di1Q.js";import{C as he,a as ge,c as je,d as kt,b as Be}from"../packem_shared/card-BGlQzQY-.js";import{b as Je,e as oe,T as ct,c as de,a as dt,d as mt}from"../packem_shared/table-BMsuYFhk.js";import{S as ut}from"../packem_shared/sparkline-BreIqzDO.js";import{jsxs as n,jsx as t,Fragment as Ye}from"react/jsx-runtime";import{aggregateMetrics as Mt,computeLatencyPercentiles as It,enrichQueryStats as Dt,shardsToAggregate as At}from"../packem_shared/aggregateMetrics-A-Y7OH6R.js";import{S as me}from"../packem_shared/stat-card-B9uIvAHg.js";import{ResponsiveContainer as st,AreaChart as Et,CartesianGrid as lt,XAxis as at,YAxis as it,Tooltip as nt,Area as Ft,LineChart as Lt,Line as Ot}from"recharts";import{E as zt}from"../packem_shared/empty-state-B939z6K2.js";import{c as Kt}from"../packem_shared/utils-bhneXptQ.js";import{S as Pt,a as jt,c as Qe,b as Bt,d as Qt}from"../packem_shared/select-BPISLTcv.js";const Ht=(l,e)=>l<e?-1:l>e?1:0,Ze=l=>{if(l===void 0)return"null";if(typeof l=="bigint")throw new TypeError("stableStringify: cannot use a bigint in a stable JSON cache key — pass it as a string, or use stableWireKey");if(l===null||typeof l!="object")return JSON.stringify(l);if(Array.isArray(l))return`[${l.map(d=>Ze(d)).join(",")}]`;const e=Object.getPrototypeOf(l);if(e!==null&&e!==Object.prototype){const d=l.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${d} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const a=l,s=Object.keys(a).toSorted(Ht),r=[];for(const d of s){const o=a[d];o!==void 0&&r.push(`${JSON.stringify(d)}:${Ze(o)}`)}return`{${r.join(",")}}`},ft=(l,e,a)=>`${l}:${e}:${Ze(a??{})}`,ht=(l,e)=>l==="gauge"?e.last:l==="histogram"?e.sum/Math.max(1,e.count):e.sum,Ut=(l,e)=>ht(l,e),Jt=l=>ht(l.kind,l),We=l=>Number.isInteger(l)?l.toLocaleString():l.toLocaleString(void 0,{maximumFractionDigits:2}),Vt=l=>Array.isArray(l?.series)?l.series:[],Gt="FUNCTION_NOT_FOUND",Wt=l=>{const e=new Map;if(!Array.isArray(l?.series))return e;for(const a of l.series)e.set(ft(a.kind,a.name,a.attributes),a.points);return e},Xt={counter:"secondary",gauge:"default",histogram:"outline"},Yt=l=>{const e=Ee(18),{name:a,onOpenTrace:s,traceId:r}=l,d=xe();if(r===void 0){let m;return e[0]===Symbol.for("react.memo_cache_sentinel")?(m=t("span",{className:"text-muted-foreground",children:"—"}),e[0]=m):m=e[0],m}let o;e[1]!==r?(o=r.slice(0,8),e[1]=r,e[2]=o):o=e[2];const i=o;if(s===void 0){const m=`mt-instrument-trace-${a}`;let h;return e[3]!==i||e[4]!==m||e[5]!==r?(h=t("span",{className:"text-muted-foreground","data-testid":m,title:r,children:i}),e[3]=i,e[4]=m,e[5]=r,e[6]=h):h=e[6],h}const S=`mt-instrument-trace-${a}`;let v;e[7]!==s||e[8]!==r?(v=()=>{s(r)},e[7]=s,e[8]=r,e[9]=v):v=e[9];let w;e[10]!==d||e[11]!==r?(w=d("Open the exemplar trace {trace}",{trace:r}),e[10]=d,e[11]=r,e[12]=w):w=e[12];let f;return e[13]!==i||e[14]!==S||e[15]!==v||e[16]!==w?(f=t("button",{className:"text-primary underline-offset-4 hover:underline","data-testid":S,onClick:v,title:w,type:"button",children:i}),e[13]=i,e[14]=S,e[15]=v,e[16]=w,e[17]=f):f=e[17],f},Zt=l=>{const e=Ee(105),{onOpenTrace:a,shardKey:s}=l,r=xe();let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d={},e[0]=d):d=e[0];let o;e[1]!==s?(o={live:!0,shardKey:s},e[1]=s,e[2]=o):o=e[2];const{data:i,error:S,errorSource:v}=Ue(Le.getMetricSeries,d,o);let w;e[3]===Symbol.for("react.memo_cache_sentinel")?(w={},e[3]=w):w=e[3];let f;e[4]!==s?(f={live:!0,shardKey:s},e[4]=s,e[5]=f):f=e[5];const{data:m}=Ue(Le.getMetricHistory,w,f);let h,y,q,$,c,p,g,x,T,C,N,k,R;if(e[6]!==i||e[7]!==S||e[8]!==v||e[9]!==m||e[10]!==a||e[11]!==r){x=Symbol.for("react.early_return_sentinel");e:{const F=Vt(i),O=St(v)===Gt;if(S!==null&&!O){let u;e[25]!==r?(u=r("Instruments"),e[25]=r,e[26]=u):u=e[26];let K;e[27]!==u?(K=t("h3",{className:"text-sm font-semibold text-foreground",children:u}),e[27]=u,e[28]=K):K=e[28];let j;e[29]!==S||e[30]!==r?(j=r("Instruments unavailable: {error}",{error:S}),e[29]=S,e[30]=r,e[31]=j):j=e[31];let B;e[32]!==j?(B=t("span",{className:"text-xs text-muted-foreground","data-testid":"mt-instruments-error",role:"status",children:j}),e[32]=j,e[33]=B):B=e[33];let Q;e[34]!==K||e[35]!==B?(Q=n("section",{className:"flex flex-col gap-2","data-testid":"mt-instruments",children:[K,B]}),e[34]=K,e[35]=B,e[36]=Q):Q=e[36],x=Q;break e}if(F.length===0){x=null;break e}const E=Wt(m);let z;e[37]!==r?(z=u=>r(u==="counter"?"Counter":u==="gauge"?"Gauge":"Histogram"),e[37]=r,e[38]=z):z=e[38];const P=z;c="flex flex-col gap-2",p="mt-instruments";let L;e[39]!==r?(L=r("Instruments"),e[39]=r,e[40]=L):L=e[40],e[41]!==L?(g=t("h3",{className:"text-sm font-semibold text-foreground",children:L}),e[41]=L,e[42]=g):g=e[42],$=he,R="overflow-hidden py-0",q=ge,k="px-0",y=ct,C="mt-instruments-table";let U;e[43]!==r?(U=r("name"),e[43]=r,e[44]=U):U=e[44];let J;e[45]!==U?(J=t(de,{children:U}),e[45]=U,e[46]=J):J=e[46];let V;e[47]!==r?(V=r("kind"),e[47]=r,e[48]=V):V=e[48];let G;e[49]!==V?(G=t(de,{children:V}),e[49]=V,e[50]=G):G=e[50];let W;e[51]!==r?(W=r("value"),e[51]=r,e[52]=W):W=e[52];let X;e[53]!==W?(X=t(de,{className:"text-right",children:W}),e[53]=W,e[54]=X):X=e[54];let Y;e[55]!==r?(Y=r("count"),e[55]=r,e[56]=Y):Y=e[56];let Z;e[57]!==Y?(Z=t(de,{className:"text-right",children:Y}),e[57]=Y,e[58]=Z):Z=e[58];let ee;e[59]!==r?(ee=r("range"),e[59]=r,e[60]=ee):ee=e[60];let te;e[61]!==ee?(te=t(de,{className:"text-right",children:ee}),e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==r?(re=r("trend"),e[63]=r,e[64]=re):re=e[64];let se;e[65]!==re?(se=t(de,{children:re}),e[65]=re,e[66]=se):se=e[66];let le;e[67]!==r?(le=r("trace"),e[67]=r,e[68]=le):le=e[68];let ae;e[69]!==le?(ae=t(de,{children:le}),e[69]=le,e[70]=ae):ae=e[70];let ie;e[71]!==r?(ie=r("dimensions"),e[71]=r,e[72]=ie):ie=e[72];let ne;e[73]!==ie?(ne=t(de,{children:ie}),e[73]=ie,e[74]=ne):ne=e[74],e[75]!==J||e[76]!==G||e[77]!==X||e[78]!==Z||e[79]!==te||e[80]!==se||e[81]!==ae||e[82]!==ne?(N=t(dt,{children:n(Je,{children:[J,G,X,Z,te,se,ae,ne]})}),e[75]=J,e[76]=G,e[77]=X,e[78]=Z,e[79]=te,e[80]=se,e[81]=ae,e[82]=ne,e[83]=N):N=e[83],h=mt,T=F.map(u=>{const K=Rt(u.attributes),j=ft(u.kind,u.name,u.attributes),Q=(E.get(j)??[]).map(ue=>Ut(u.kind,ue));return n(Je,{"data-testid":`mt-instrument-${u.name}`,children:[t(oe,{className:"font-mono text-xs",title:u.functionPath,children:u.name}),t(oe,{children:t(et,{variant:Xt[u.kind],children:P(u.kind)})}),t(oe,{className:"text-right font-mono tabular-nums","data-testid":`mt-instrument-value-${u.name}`,children:We(Jt(u))}),t(oe,{className:"text-right tabular-nums text-muted-foreground",children:u.count.toLocaleString()}),t(oe,{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:u.min===u.max?"—":`${We(u.min)}–${We(u.max)}`}),t(oe,{children:Q.length>=2?t(ut,{ariaLabel:r("{name} trend",{name:u.name}),className:"h-6 w-24 text-foreground",series:Q,testId:`mt-instrument-trend-${u.name}`}):t("span",{className:"text-xs text-muted-foreground",children:"—"})}),t(oe,{className:"font-mono text-xs",children:t(Yt,{name:u.name,onOpenTrace:a,traceId:u.exemplarTraceId})}),t(oe,{className:"max-w-64 truncate font-mono text-xs text-muted-foreground",title:K,children:K===""?"—":K})]},j)})}e[6]=i,e[7]=S,e[8]=v,e[9]=m,e[10]=a,e[11]=r,e[12]=h,e[13]=y,e[14]=q,e[15]=$,e[16]=c,e[17]=p,e[18]=g,e[19]=x,e[20]=T,e[21]=C,e[22]=N,e[23]=k,e[24]=R}else h=e[12],y=e[13],q=e[14],$=e[15],c=e[16],p=e[17],g=e[18],x=e[19],T=e[20],C=e[21],N=e[22],k=e[23],R=e[24];if(x!==Symbol.for("react.early_return_sentinel"))return x;let M;e[84]!==h||e[85]!==T?(M=t(h,{children:T}),e[84]=h,e[85]=T,e[86]=M):M=e[86];let _;e[87]!==y||e[88]!==M||e[89]!==C||e[90]!==N?(_=n(y,{"data-testid":C,children:[N,M]}),e[87]=y,e[88]=M,e[89]=C,e[90]=N,e[91]=_):_=e[91];let b;e[92]!==q||e[93]!==_||e[94]!==k?(b=t(q,{className:k,children:_}),e[92]=q,e[93]=_,e[94]=k,e[95]=b):b=e[95];let I;e[96]!==$||e[97]!==b||e[98]!==R?(I=t($,{className:R,children:b}),e[96]=$,e[97]=b,e[98]=R,e[99]=I):I=e[99];let A;return e[100]!==c||e[101]!==p||e[102]!==g||e[103]!==I?(A=n("section",{className:c,"data-testid":p,children:[g,I]}),e[100]=c,e[101]=p,e[102]=g,e[103]=I,e[104]=A):A=e[104],A},er=l=>{const e=Ee(74),{aggregate:a,shardResults:s}=l,r=xe();let d;e[0]!==r?(d=r("Shards"),e[0]=r,e[1]=d):d=e[1];let o;e[2]!==a.failed||e[3]!==a.reachable||e[4]!==r?(o=a.failed>0?r("{reachable} reachable, {failed} unreachable",{failed:a.failed,reachable:a.reachable}):r("{reachable} reachable",{reachable:a.reachable}),e[2]=a.failed,e[3]=a.reachable,e[4]=r,e[5]=o):o=e[5];let i;e[6]!==d||e[7]!==o?(i=t(me,{label:d,testId:"mt-agg-shards",value:o}),e[6]=d,e[7]=o,e[8]=i):i=e[8];let S;e[9]!==r?(S=r("Total requests"),e[9]=r,e[10]=S):S=e[10];let v;e[11]!==a.totalRequests||e[12]!==S?(v=t(me,{label:S,testId:"mt-agg-requests",value:a.totalRequests}),e[11]=a.totalRequests,e[12]=S,e[13]=v):v=e[13];let w;e[14]!==r?(w=r("Total errors"),e[14]=r,e[15]=w):w=e[15];let f;e[16]!==a.totalErrors||e[17]!==w?(f=t(me,{label:w,testId:"mt-agg-errors",value:a.totalErrors}),e[16]=a.totalErrors,e[17]=w,e[18]=f):f=e[18];let m;e[19]!==r?(m=r("Total database size"),e[19]=r,e[20]=m):m=e[20];let h;e[21]!==a.totalDatabaseSize?(h=Xe(a.totalDatabaseSize),e[21]=a.totalDatabaseSize,e[22]=h):h=e[22];let y;e[23]!==m||e[24]!==h?(y=t(me,{label:m,testId:"mt-agg-db-size",value:h}),e[23]=m,e[24]=h,e[25]=y):y=e[25];let q;e[26]!==r?(q=r("Combined cache hit rate"),e[26]=r,e[27]=q):q=e[27];let $;e[28]!==a.hitRate||e[29]!==r?($=a.hitRate===null?r("no cache configured"):`${(a.hitRate*100).toFixed(1)}%`,e[28]=a.hitRate,e[29]=r,e[30]=$):$=e[30];let c;e[31]!==q||e[32]!==$?(c=t(me,{label:q,testId:"mt-agg-cache",value:$}),e[31]=q,e[32]=$,e[33]=c):c=e[33];let p;e[34]!==y||e[35]!==c||e[36]!==i||e[37]!==v||e[38]!==f?(p=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":"mt-aggregate-stats",children:[i,v,f,y,c]}),e[34]=y,e[35]=c,e[36]=i,e[37]=v,e[38]=f,e[39]=p):p=e[39];let g;e[40]!==r?(g=r("shard"),e[40]=r,e[41]=g):g=e[41];let x;e[42]!==g?(x=t(de,{children:g}),e[42]=g,e[43]=x):x=e[43];let T;e[44]!==r?(T=r("requests"),e[44]=r,e[45]=T):T=e[45];let C;e[46]!==T?(C=t(de,{children:T}),e[46]=T,e[47]=C):C=e[47];let N;e[48]!==r?(N=r("errors"),e[48]=r,e[49]=N):N=e[49];let k;e[50]!==N?(k=t(de,{children:N}),e[50]=N,e[51]=k):k=e[51];let R;e[52]!==r?(R=r("db size"),e[52]=r,e[53]=R):R=e[53];let M;e[54]!==R?(M=t(de,{children:R}),e[54]=R,e[55]=M):M=e[55];let _;e[56]!==x||e[57]!==C||e[58]!==k||e[59]!==M?(_=t(dt,{children:n(Je,{children:[x,C,k,M]})}),e[56]=x,e[57]=C,e[58]=k,e[59]=M,e[60]=_):_=e[60];let b;if(e[61]!==s||e[62]!==r){let O;e[64]!==r?(O=E=>n(Je,{"data-testid":`mt-agg-row-${E.shard}`,children:[t(oe,{children:E.shard}),E.metrics===null?t(oe,{className:"text-destructive",colSpan:3,children:E.error??r("unreachable")}):n(Ye,{children:[t(oe,{className:"tabular-nums",children:E.metrics.requests}),t(oe,{className:"tabular-nums",children:E.metrics.errors}),t(oe,{className:"tabular-nums",children:Xe(E.metrics.databaseSize)})]})]},E.shard),e[64]=r,e[65]=O):O=e[65],b=s.map(O),e[61]=s,e[62]=r,e[63]=b}else b=e[63];let I;e[66]!==b?(I=t(mt,{children:b}),e[66]=b,e[67]=I):I=e[67];let A;e[68]!==_||e[69]!==I?(A=t(he,{className:"overflow-hidden py-0",children:t(ge,{className:"px-0",children:n(ct,{"data-testid":"mt-agg-table",children:[_,I]})})}),e[68]=_,e[69]=I,e[70]=A):A=e[70];let F;return e[71]!==p||e[72]!==A?(F=n("div",{className:"flex flex-col gap-4","data-testid":"mt-aggregate-view",children:[p,A]}),e[71]=p,e[72]=A,e[73]=F):F=e[73],F},tr=l=>{const e=Math.floor(l/1e3),a=Math.floor(e/3600),s=Math.floor(e%3600/60),r=e%60;return a>0?`${a.toString()}h ${s.toString()}m`:s>0?`${s.toString()}m ${r.toString()}s`:`${r.toString()}s`},rr=(l,e)=>{const a=l+e;return a===0?"—":`${(l/a*100).toFixed(1)}%`},ot=l=>l<=0?"—":l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,sr=l=>{const e=Ee(75),{currentDelta:a,errorRate:s,history:r,latencyPercentiles:d,metrics:o}=l,i=xe();let S;e[0]!==r||e[1]!==i?(S=r.length>=2?t(ut,{ariaLabel:i("Requests per interval over time"),className:"h-7 w-24 text-foreground",series:r,testId:"mt-sparkline"}):void 0,e[0]=r,e[1]=i,e[2]=S):S=e[2];let v;e[3]!==a||e[4]!==r.length||e[5]!==i?(v=r.length>=2?n(Ye,{children:[t("span",{className:"font-semibold text-foreground",children:`+${a.toLocaleString()}`})," ",i("last interval")]}):t("span",{"data-testid":"mt-sparkline-empty",children:i("collecting samples…")}),e[3]=a,e[4]=r.length,e[5]=i,e[6]=v):v=e[6];let w;e[7]!==i?(w=i("Requests"),e[7]=i,e[8]=w):w=e[8];let f;e[9]!==o.requests||e[10]!==S||e[11]!==v||e[12]!==w?(f=t(me,{chart:S,footer:v,label:w,testId:"mt-requests",value:o.requests}),e[9]=o.requests,e[10]=S,e[11]=v,e[12]=w,e[13]=f):f=e[13];let m;e[14]!==s||e[15]!==i?(m=i("{rate} error rate",{rate:s}),e[14]=s,e[15]=i,e[16]=m):m=e[16];let h;e[17]!==i?(h=i("Errors"),e[17]=i,e[18]=h):h=e[18];let y;e[19]!==s||e[20]!==o.errors?(y=n(Ye,{children:[o.errors," (",s,")"]}),e[19]=s,e[20]=o.errors,e[21]=y):y=e[21];let q;e[22]!==m||e[23]!==h||e[24]!==y?(q=t(me,{footer:m,label:h,testId:"mt-errors",value:y}),e[22]=m,e[23]=h,e[24]=y,e[25]=q):q=e[25];let $;e[26]!==d.p90?($=d.p90>0?`P90 ${ot(d.p90)}`:void 0,e[26]=d.p90,e[27]=$):$=e[27];let c;e[28]!==i?(c=i("P95 latency"),e[28]=i,e[29]=c):c=e[29];let p;e[30]!==d.p95?(p=d.p95>0?ot(d.p95):"—",e[30]=d.p95,e[31]=p):p=e[31];let g;e[32]!==c||e[33]!==p||e[34]!==$?(g=t(me,{footer:$,label:c,testId:"mt-p95",value:p}),e[32]=c,e[33]=p,e[34]=$,e[35]=g):g=e[35];let x;e[36]!==o.cache||e[37]!==i?(x=o.cache===null?void 0:`${o.cache.entries.toLocaleString()} ${i("cache entries")}`,e[36]=o.cache,e[37]=i,e[38]=x):x=e[38];let T;e[39]!==i?(T=i("Database size"),e[39]=i,e[40]=T):T=e[40];let C;e[41]!==o.databaseSize?(C=Xe(o.databaseSize),e[41]=o.databaseSize,e[42]=C):C=e[42];let N;e[43]!==x||e[44]!==T||e[45]!==C?(N=t(me,{footer:x,label:T,testId:"mt-db-size",value:C}),e[43]=x,e[44]=T,e[45]=C,e[46]=N):N=e[46];let k;e[47]!==i?(k=i("Shard"),e[47]=i,e[48]=k):k=e[48];let R;e[49]!==o.shard||e[50]!==k?(R=t(me,{label:k,testId:"mt-shard",value:o.shard}),e[49]=o.shard,e[50]=k,e[51]=R):R=e[51];let M;e[52]!==i?(M=i("Uptime"),e[52]=i,e[53]=M):M=e[53];let _;e[54]!==o.uptimeMs?(_=tr(o.uptimeMs),e[54]=o.uptimeMs,e[55]=_):_=e[55];let b;e[56]!==M||e[57]!==_?(b=t(me,{label:M,testId:"mt-uptime",value:_}),e[56]=M,e[57]=_,e[58]=b):b=e[58];let I;e[59]!==i?(I=i("Cache hit rate"),e[59]=i,e[60]=I):I=e[60];let A;e[61]!==o.cache||e[62]!==i?(A=o.cache===null?i("no cache configured"):i("{rate} ({count} entries)",{count:o.cache.entries,rate:rr(o.cache.hits,o.cache.misses)}),e[61]=o.cache,e[62]=i,e[63]=A):A=e[63];let F;e[64]!==I||e[65]!==A?(F=t(me,{label:I,testId:"mt-cache",value:A}),e[64]=I,e[65]=A,e[66]=F):F=e[66];let O;return e[67]!==g||e[68]!==N||e[69]!==R||e[70]!==b||e[71]!==F||e[72]!==f||e[73]!==q?(O=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4","data-testid":"mt-stats",children:[f,q,g,N,R,b,F]}),e[67]=g,e[68]=N,e[69]=R,e[70]=b,e[71]=F,e[72]=f,e[73]=q,e[74]=O):O=e[74],O},Ve=l=>l>=100?"critical":l>=50?"warning":"good",Fe=l=>l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,He=l=>l>=1e9?`${(l/1e9).toFixed(1)}B`:l>=1e6?`${(l/1e6).toFixed(1)}M`:l>=1e3?`${(l/1e3).toFixed(1)}K`:l.toLocaleString(),lr=l=>{const e=Ee(3),{level:a}=l;if(a==="critical"){let r;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(et,{variant:"destructive",children:"Slow"}),e[0]=r):r=e[0],r}if(a==="warning"){let r;return e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-warning/10 px-2 py-0.5 text-xs font-medium text-warning",children:"Moderate"}),e[1]=r):r=e[1],r}let s;return e[2]===Symbol.for("react.memo_cache_sentinel")?(s=t("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-success/10 px-2 py-0.5 text-xs font-medium text-success",children:"Fast"}),e[2]=s):s=e[2],s},ar=(l,e)=>{const a=[...l];return a.sort((s,r)=>{switch(e){case"avgTime":return r.avgDurationMs-s.avgDurationMs;case"execCount":return r.execCount-s.execCount;case"rowsRead":return r.rowsRead-s.rowsRead;default:return r.totalDurationMs-s.totalDurationMs}}),a},ir=l=>{const e=Ee(161),{queryStats:a}=l,s=xe(),[r,d]=pe("totalTime");let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=new Set,e[0]=o):o=e[0];const[i,S]=pe(o);let v;e[1]===Symbol.for("react.memo_cache_sentinel")?(v=R=>{R!==null&&d(R)},e[1]=v):v=e[1];const w=v;let f,m,h,y,q,$,c,p,g,x;if(e[2]!==i||e[3]!==a||e[4]!==r||e[5]!==s){h=Symbol.for("react.early_return_sentinel");e:{const R=ar(a,r);let M;e[16]!==a?(M=a.filter(nr),e[16]=a,e[17]=M):M=e[17];const _=M.length;let b;e[18]!==a?(b=a.filter(or),e[18]=a,e[19]=b):b=e[19];const I=b.length;let A;e[20]!==a?(A=a.filter(cr),e[20]=a,e[21]=A):A=e[21];const F=A.length;let O;e[22]===Symbol.for("react.memo_cache_sentinel")?(O=D=>{S(ce=>{const H=new Set(ce);return H.has(D)?H.delete(D):H.add(D),H})},e[22]=O):O=e[22];const E=O;if(a.length===0){let D;e[23]!==s?(D=s("No query insights yet"),e[23]=s,e[24]=D):D=e[24];let ce;e[25]!==D?(ce=t("p",{className:"text-lg font-medium","data-testid":"qi-empty",children:D}),e[25]=D,e[26]=ce):ce=e[26];let H;e[27]!==s?(H=s("Query insights appear once statements are executed against this shard."),e[27]=s,e[28]=H):H=e[28];let fe;e[29]!==H?(fe=t("p",{className:"mt-1 text-sm",children:H}),e[29]=H,e[30]=fe):fe=e[30];let Pe;e[31]!==ce||e[32]!==fe?(Pe=t(he,{children:t(ge,{className:"py-12",children:n("div",{className:"text-center text-muted-foreground",children:[ce,fe]})})}),e[31]=ce,e[32]=fe,e[33]=Pe):Pe=e[33],h=Pe;break e}c="space-y-4",p="qi-root";let z;e[34]!==s?(z=s("Critical queries"),e[34]=s,e[35]=z):z=e[35];let P;e[36]!==z?(P=t(je,{className:"pb-2",children:t(Be,{className:"text-sm font-medium",children:z})}),e[36]=z,e[37]=P):P=e[37];let L;e[38]!==_?(L=t("div",{className:"text-2xl font-bold text-destructive","data-testid":"qi-critical",children:_}),e[38]=_,e[39]=L):L=e[39];let U;e[40]!==s?(U=s(">100ms avg execution"),e[40]=s,e[41]=U):U=e[41];let J;e[42]!==U?(J=t("p",{className:"text-xs text-muted-foreground",children:U}),e[42]=U,e[43]=J):J=e[43];let V;e[44]!==L||e[45]!==J?(V=n(ge,{children:[L,J]}),e[44]=L,e[45]=J,e[46]=V):V=e[46];let G;e[47]!==P||e[48]!==V?(G=n(he,{children:[P,V]}),e[47]=P,e[48]=V,e[49]=G):G=e[49];let W;e[50]!==s?(W=s("Moderate queries"),e[50]=s,e[51]=W):W=e[51];let X;e[52]!==W?(X=t(je,{className:"pb-2",children:t(Be,{className:"text-sm font-medium",children:W})}),e[52]=W,e[53]=X):X=e[53];let Y;e[54]!==I?(Y=t("div",{className:"text-2xl font-bold text-warning","data-testid":"qi-moderate",children:I}),e[54]=I,e[55]=Y):Y=e[55];let Z;e[56]!==s?(Z=s("50–100ms avg execution"),e[56]=s,e[57]=Z):Z=e[57];let ee;e[58]!==Z?(ee=t("p",{className:"text-xs text-muted-foreground",children:Z}),e[58]=Z,e[59]=ee):ee=e[59];let te;e[60]!==Y||e[61]!==ee?(te=n(ge,{children:[Y,ee]}),e[60]=Y,e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==X||e[64]!==te?(re=n(he,{children:[X,te]}),e[63]=X,e[64]=te,e[65]=re):re=e[65];let se;e[66]!==s?(se=s("Fast queries"),e[66]=s,e[67]=se):se=e[67];let le;e[68]!==se?(le=t(je,{className:"pb-2",children:t(Be,{className:"text-sm font-medium",children:se})}),e[68]=se,e[69]=le):le=e[69];let ae;e[70]!==F?(ae=t("div",{className:"text-2xl font-bold text-success","data-testid":"qi-fast",children:F}),e[70]=F,e[71]=ae):ae=e[71];let ie;e[72]!==s?(ie=s("<50ms avg execution"),e[72]=s,e[73]=ie):ie=e[73];let ne;e[74]!==ie?(ne=t("p",{className:"text-xs text-muted-foreground",children:ie}),e[74]=ie,e[75]=ne):ne=e[75];let u;e[76]!==ae||e[77]!==ne?(u=n(ge,{children:[ae,ne]}),e[76]=ae,e[77]=ne,e[78]=u):u=e[78];let K;e[79]!==le||e[80]!==u?(K=n(he,{children:[le,u]}),e[79]=le,e[80]=u,e[81]=K):K=e[81],e[82]!==G||e[83]!==re||e[84]!==K?(g=n("div",{className:"grid gap-4 md:grid-cols-3",children:[G,re,K]}),e[82]=G,e[83]=re,e[84]=K,e[85]=g):g=e[85];let j;e[86]!==s?(j=s("Query leaderboard"),e[86]=s,e[87]=j):j=e[87];let B;e[88]!==j?(B=t("h3",{className:"text-lg font-semibold",children:j}),e[88]=j,e[89]=B):B=e[89];let Q;e[90]!==r||e[91]!==s?(Q=s("Slow queries sorted by {sortField}",{sortField:s(r)}),e[90]=r,e[91]=s,e[92]=Q):Q=e[92];let ue;e[93]!==Q?(ue=t("p",{className:"text-sm text-muted-foreground",children:Q}),e[93]=Q,e[94]=ue):ue=e[94];let be;e[95]!==B||e[96]!==ue?(be=n("div",{children:[B,ue]}),e[95]=B,e[96]=ue,e[97]=be):be=e[97];let ve;e[98]!==s?(ve=s("Sort by"),e[98]=s,e[99]=ve):ve=e[99];let ye;e[100]!==ve?(ye=t("span",{className:"text-sm text-muted-foreground",children:ve}),e[100]=ve,e[101]=ye):ye=e[101];let Ne;e[102]!==s?(Ne=s("Sort queries by"),e[102]=s,e[103]=Ne):Ne=e[103];let Oe;e[104]===Symbol.for("react.memo_cache_sentinel")?(Oe=t(Pt,{}),e[104]=Oe):Oe=e[104];let Se;e[105]!==Ne?(Se=t(jt,{"aria-label":Ne,className:"w-[140px]","data-testid":"qi-sort",children:Oe}),e[105]=Ne,e[106]=Se):Se=e[106];let we;e[107]!==s?(we=s("Total time"),e[107]=s,e[108]=we):we=e[108];let qe;e[109]!==we?(qe=t(Qe,{value:"totalTime",children:we}),e[109]=we,e[110]=qe):qe=e[110];let Te;e[111]!==s?(Te=s("Avg time"),e[111]=s,e[112]=Te):Te=e[112];let _e;e[113]!==Te?(_e=t(Qe,{value:"avgTime",children:Te}),e[113]=Te,e[114]=_e):_e=e[114];let $e;e[115]!==s?($e=s("Execution count"),e[115]=s,e[116]=$e):$e=e[116];let Ce;e[117]!==$e?(Ce=t(Qe,{value:"execCount",children:$e}),e[117]=$e,e[118]=Ce):Ce=e[118];let Re;e[119]!==s?(Re=s("Rows read"),e[119]=s,e[120]=Re):Re=e[120];let ke;e[121]!==Re?(ke=t(Qe,{value:"rowsRead",children:Re}),e[121]=Re,e[122]=ke):ke=e[122];let Me;e[123]!==qe||e[124]!==_e||e[125]!==Ce||e[126]!==ke?(Me=n(Bt,{children:[qe,_e,Ce,ke]}),e[123]=qe,e[124]=_e,e[125]=Ce,e[126]=ke,e[127]=Me):Me=e[127];let Ie;e[128]!==r||e[129]!==Se||e[130]!==Me?(Ie=n(Qt,{onValueChange:w,value:r,children:[Se,Me]}),e[128]=r,e[129]=Se,e[130]=Me,e[131]=Ie):Ie=e[131];let De;e[132]!==ye||e[133]!==Ie?(De=n("div",{className:"flex items-center gap-2",children:[ye,Ie]}),e[132]=ye,e[133]=Ie,e[134]=De):De=e[134],e[135]!==be||e[136]!==De?(x=n("div",{className:"flex items-center justify-between",children:[be,De]}),e[135]=be,e[136]=De,e[137]=x):x=e[137],m=he;let Ae;e[138]!==s?(Ae=s("Statements"),e[138]=s,e[139]=Ae):Ae=e[139];let ze;e[140]!==Ae?(ze=t(Be,{children:Ae}),e[140]=Ae,e[141]=ze):ze=e[141],$=n(je,{children:[ze,t(kt,{children:s("{count} tracked statements",{count:R.length})})]}),f=ge,y="space-y-2";let Ke;e[142]!==i||e[143]!==s?(Ke=D=>{const ce=D.normalizedSql,H=i.has(ce),fe=Ve(D.avgDurationMs);return n("div",{className:"overflow-hidden rounded-lg border","data-testid":"qi-row",children:[n("button",{"aria-expanded":H,className:"flex w-full items-center justify-between p-3 text-left transition-colors hover:bg-muted/50",onClick:()=>{E(ce)},type:"button",children:[n("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[t(lr,{level:fe}),t("span",{className:"max-w-[300px] truncate font-mono text-sm lg:max-w-[500px]",children:D.normalizedSql})]}),n("div",{className:"flex shrink-0 items-center gap-4",children:[n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Fe(D.totalDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("total")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Fe(D.avgDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("avg")})]}),D.p95DurationMs!==void 0&&n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Fe(D.p95DurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("p95")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:He(D.execCount)}),t("div",{className:"text-xs text-muted-foreground",children:s("calls")})]})]})]}),H&&n("div",{className:"space-y-3 border-t bg-muted/30 p-4",children:[n("div",{children:[t("p",{className:"mb-2 text-sm font-medium",children:s("Full statement")}),t("pre",{className:"overflow-x-auto rounded-md bg-muted p-3 font-mono text-sm whitespace-pre-wrap break-all",children:D.normalizedSql})]}),n("div",{className:"grid grid-cols-2 gap-4 text-sm md:grid-cols-4",children:[D.p50DurationMs!==void 0&&n("div",{children:[t("span",{className:"text-muted-foreground",children:s("p50")}),t("span",{className:"block font-medium tabular-nums",children:Fe(D.p50DurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Exec count")}),t("span",{className:"block font-medium tabular-nums",children:He(D.execCount)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Total time")}),t("span",{className:"block font-medium tabular-nums",children:Fe(D.totalDurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows read")}),t("span",{className:"block font-medium tabular-nums",children:He(D.rowsRead)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows written")}),t("span",{className:"block font-medium tabular-nums",children:He(D.rowsWritten)})]})]})]})]},ce)},e[142]=i,e[143]=s,e[144]=Ke):Ke=e[144],q=R.map(Ke)}e[2]=i,e[3]=a,e[4]=r,e[5]=s,e[6]=f,e[7]=m,e[8]=h,e[9]=y,e[10]=q,e[11]=$,e[12]=c,e[13]=p,e[14]=g,e[15]=x}else f=e[6],m=e[7],h=e[8],y=e[9],q=e[10],$=e[11],c=e[12],p=e[13],g=e[14],x=e[15];if(h!==Symbol.for("react.early_return_sentinel"))return h;let T;e[145]!==y||e[146]!==q?(T=t("div",{className:y,children:q}),e[145]=y,e[146]=q,e[147]=T):T=e[147];let C;e[148]!==f||e[149]!==T?(C=t(f,{children:T}),e[148]=f,e[149]=T,e[150]=C):C=e[150];let N;e[151]!==m||e[152]!==C||e[153]!==$?(N=n(m,{children:[$,C]}),e[151]=m,e[152]=C,e[153]=$,e[154]=N):N=e[154];let k;return e[155]!==N||e[156]!==c||e[157]!==p||e[158]!==g||e[159]!==x?(k=n("div",{className:c,"data-testid":p,children:[g,x,N]}),e[155]=N,e[156]=c,e[157]=p,e[158]=g,e[159]=x,e[160]=k):k=e[160],k};function nr(l){return Ve(l.avgDurationMs)==="critical"}function or(l){return Ve(l.avgDurationMs)==="warning"}function cr(l){return Ve(l.avgDurationMs)==="good"}const dr=["1m","5m","15m","1h"],mr=l=>new Date(l).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}),ur=l=>l.map(e=>({avg:Math.round(e.avgDurationMs*100)/100,execs:e.execCount,label:mr(e.bucketMs)})),fr=({shardKey:l=""})=>{const e=xe(),[a,s]=pe("15m"),d=Ue(Le.getQueryInsights,{range:a},{live:!0,shardKey:l}).data,o=ur(d?.buckets??[]);return n("div",{className:"flex flex-col gap-4","data-testid":"qi-range",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t("div",{className:"flex gap-1 rounded-lg border border-border p-0.5","data-testid":"qi-ranges",role:"group",children:dr.map(i=>t("button",{"aria-pressed":i===a,className:Kt("rounded px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",i===a&&"bg-accent font-medium text-foreground"),"data-testid":`qi-range-${i}`,onClick:()=>{s(i)},type:"button",children:i},i))}),d?.capped===!0&&t(et,{"data-testid":"qi-capped",variant:"secondary",children:e("showing a capped set")})]}),o.length===0?t(zt,{description:e("Statements executed in the selected window appear here, with throughput and latency over time."),testId:"qi-empty",title:e("No queries in this window.")}):n("div",{className:"grid gap-4 lg:grid-cols-2",children:[n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-throughput",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Throughput")}),t(st,{height:140,width:"100%",children:n(Et,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(at,{dataKey:"label",fontSize:10,tickLine:!1}),t(it,{allowDecimals:!1,fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(Ft,{dataKey:"execs",fill:"var(--color-primary)",fillOpacity:.15,stroke:"var(--color-primary)",type:"monotone"})]})})]}),n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-latency",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Mean latency (ms)")}),t(st,{height:140,width:"100%",children:n(Lt,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(at,{dataKey:"label",fontSize:10,tickLine:!1}),t(it,{fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(Ot,{dataKey:"avg",dot:!1,stroke:"var(--color-destructive)",type:"monotone"})]})})]})]}),t(ir,{queryStats:d?.entries??[]})]})},hr=_t(Le.getMetrics),gr=(l,e)=>l?e:"overview",jr=({initialShardKey:l})=>{const e=gt(),a=xe(),{queryShardKey:s,setShardKey:r,shardKey:d}=yt(l),[o,i]=pe("overview"),[S,v]=pe([]),w=Ge(null),f=Ge(null),m=Ge(!0);tt(()=>(m.current=!0,()=>{m.current=!1}),[]);const h=vt(s),{data:y,error:q,liveError:$}=Ue(Le.getMetrics,{},{live:!0,shardKey:s}),c=y??null;tt(()=>{if(y===void 0)return;$t(s);const E=y,z=w.current,P=f.current!==null&&f.current!==E.shard;if(f.current=E.shard,w.current=E.requests,P){v([]);return}z!==null&&E.requests>=z&&v(L=>[...L,E.requests-z].slice(-30))},[y,s]);const[p,g]=pe(null),[x,T]=pe(!1),C=async()=>{T(!0);const E=At(d,Ct());try{const z=await Promise.all(E.map(async P=>{try{const L=await e.query(hr,{},qt(P));return{error:null,metrics:L,shard:P===""?L.shard:P}}catch(L){return{error:Tt(L),metrics:null,shard:P===""?"__root__":P}}}));m.current&&g(z)}finally{m.current&&T(!1)}},N=p===null?null:Mt(p),k=c===null||c.requests===0?"—":`${(c.errors/c.requests*100).toFixed(1)}%`,R=S.length>0?S.at(-1):0,M=c?It(c):{p90:0,p95:0},_=pt(()=>{if(!c||!("queryStats"in c))return;const E=c.queryStats;if(!(!E||!Array.isArray(E)))return Dt(E)},[c]),b=gr(_!==void 0,o),I=()=>{wt(C())},A=()=>{g(null)},F=()=>{i("overview")},O=()=>{i("query-insights")};return n("div",{className:"flex flex-col gap-4","data-testid":"lunora-metrics",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t(bt,{onChange:r,testId:"mt-shard-input",value:d}),t(xt,{message:$,prefix:"mt"}),t(rt,{"data-testid":"mt-aggregate",disabled:x,onClick:I,size:"sm",type:"button",variant:"secondary",children:a(x?"Aggregating…":"All shards")}),p!==null&&t(rt,{"data-testid":"mt-aggregate-clear",onClick:A,size:"sm",type:"button",variant:"ghost",children:a("Hide")}),t("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"mt-cf-link",href:Nt,rel:"noreferrer",target:"_blank",children:a("Open in Cloudflare")})]}),q!==null&&t("p",{className:"text-sm text-destructive","data-testid":"mt-error",role:"alert",children:q}),_!==void 0&&n("div",{className:"flex gap-2 border-b","data-testid":"mt-tabs",children:[t("button",{className:`pb-2 text-sm font-medium transition-colors ${b==="overview"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-overview",onClick:F,type:"button",children:a("Overview")}),n("button",{className:`pb-2 text-sm font-medium transition-colors ${b==="query-insights"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-query-insights",onClick:O,type:"button",children:[a("Query insights"),_.length>0&&t("span",{className:"ml-1.5 rounded-full bg-primary/10 px-1.5 py-0.5 text-xs text-primary",children:_.length})]})]}),b==="query-insights"&&_!==void 0&&t(fr,{shardKey:s}),b==="overview"&&c!==null&&t(sr,{currentDelta:R,errorRate:k,history:S,latencyPercentiles:M,metrics:c}),b==="overview"&&c===null&&null,b==="overview"&&t(Zt,{onOpenTrace:h,shardKey:s}),b==="overview"&&N!==null&&p!==null&&t(er,{aggregate:N,shardResults:p})]})};export{jr as MetricsPanel};
|