@marinoscar/platform-web 0.0.0-stage → 0.1.0-next.3
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/CHANGELOG.md +42 -0
- package/LICENSE +21 -0
- package/README.md +96 -2
- package/dist/core/api-client.d.ts +112 -0
- package/dist/core/api-client.d.ts.map +1 -0
- package/dist/core/api-client.js +24 -0
- package/dist/core/api-client.js.map +1 -0
- package/dist/core/host.d.ts +74 -0
- package/dist/core/host.d.ts.map +1 -0
- package/dist/core/host.js +84 -0
- package/dist/core/host.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/settings-page.d.ts +47 -0
- package/dist/core/settings-page.d.ts.map +1 -0
- package/dist/core/settings-page.js +5 -0
- package/dist/core/settings-page.js.map +1 -0
- package/dist/core/viewer.d.ts +14 -0
- package/dist/core/viewer.d.ts.map +1 -0
- package/dist/core/viewer.js +4 -0
- package/dist/core/viewer.js.map +1 -0
- package/dist/doctor/headless/categories.d.ts +31 -0
- package/dist/doctor/headless/categories.d.ts.map +1 -0
- package/dist/doctor/headless/categories.js +41 -0
- package/dist/doctor/headless/categories.js.map +1 -0
- package/dist/doctor/headless/client.d.ts +33 -0
- package/dist/doctor/headless/client.d.ts.map +1 -0
- package/dist/doctor/headless/client.js +31 -0
- package/dist/doctor/headless/client.js.map +1 -0
- package/dist/doctor/headless/contract.d.ts +18 -0
- package/dist/doctor/headless/contract.d.ts.map +1 -0
- package/dist/doctor/headless/contract.js +15 -0
- package/dist/doctor/headless/contract.js.map +1 -0
- package/dist/doctor/headless/index.d.ts +12 -0
- package/dist/doctor/headless/index.d.ts.map +1 -0
- package/dist/doctor/headless/index.js +8 -0
- package/dist/doctor/headless/index.js.map +1 -0
- package/dist/doctor/headless/use-doctor.d.ts +36 -0
- package/dist/doctor/headless/use-doctor.d.ts.map +1 -0
- package/dist/doctor/headless/use-doctor.js +80 -0
- package/dist/doctor/headless/use-doctor.js.map +1 -0
- package/dist/doctor/headless/use-support-bundle-download.d.ts +68 -0
- package/dist/doctor/headless/use-support-bundle-download.d.ts.map +1 -0
- package/dist/doctor/headless/use-support-bundle-download.js +135 -0
- package/dist/doctor/headless/use-support-bundle-download.js.map +1 -0
- package/dist/doctor/internal/relative-time.d.ts +2 -0
- package/dist/doctor/internal/relative-time.d.ts.map +1 -0
- package/dist/doctor/internal/relative-time.js +29 -0
- package/dist/doctor/internal/relative-time.js.map +1 -0
- package/dist/doctor/internal/status-colors.d.ts +5 -0
- package/dist/doctor/internal/status-colors.d.ts.map +1 -0
- package/dist/doctor/internal/status-colors.js +29 -0
- package/dist/doctor/internal/status-colors.js.map +1 -0
- package/dist/doctor/internal/use-is-mounted.d.ts +2 -0
- package/dist/doctor/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/doctor/internal/use-is-mounted.js +15 -0
- package/dist/doctor/internal/use-is-mounted.js.map +1 -0
- package/dist/doctor/ui/check-row.d.ts +54 -0
- package/dist/doctor/ui/check-row.d.ts.map +1 -0
- package/dist/doctor/ui/check-row.js +100 -0
- package/dist/doctor/ui/check-row.js.map +1 -0
- package/dist/doctor/ui/copy.d.ts +3 -0
- package/dist/doctor/ui/copy.d.ts.map +1 -0
- package/dist/doctor/ui/copy.js +6 -0
- package/dist/doctor/ui/copy.js.map +1 -0
- package/dist/doctor/ui/doctor-page.d.ts +50 -0
- package/dist/doctor/ui/doctor-page.d.ts.map +1 -0
- package/dist/doctor/ui/doctor-page.js +152 -0
- package/dist/doctor/ui/doctor-page.js.map +1 -0
- package/dist/doctor/ui/index.d.ts +8 -0
- package/dist/doctor/ui/index.d.ts.map +1 -0
- package/dist/doctor/ui/index.js +7 -0
- package/dist/doctor/ui/index.js.map +1 -0
- package/dist/doctor/ui/settings-page.d.ts +20 -0
- package/dist/doctor/ui/settings-page.d.ts.map +1 -0
- package/dist/doctor/ui/settings-page.js +32 -0
- package/dist/doctor/ui/settings-page.js.map +1 -0
- package/dist/doctor/ui/support-bundle-button.d.ts +37 -0
- package/dist/doctor/ui/support-bundle-button.d.ts.map +1 -0
- package/dist/doctor/ui/support-bundle-button.js +39 -0
- package/dist/doctor/ui/support-bundle-button.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/telemetry/headless/adapters/TelemetryWebAdapters.d.ts +106 -0
- package/dist/telemetry/headless/adapters/TelemetryWebAdapters.d.ts.map +1 -0
- package/dist/telemetry/headless/adapters/TelemetryWebAdapters.js +58 -0
- package/dist/telemetry/headless/adapters/TelemetryWebAdapters.js.map +1 -0
- package/dist/telemetry/headless/context/TelemetryConfigProvider.d.ts +43 -0
- package/dist/telemetry/headless/context/TelemetryConfigProvider.d.ts.map +1 -0
- package/dist/telemetry/headless/context/TelemetryConfigProvider.js +24 -0
- package/dist/telemetry/headless/context/TelemetryConfigProvider.js.map +1 -0
- package/dist/telemetry/headless/context/telemetryConfig.d.ts +68 -0
- package/dist/telemetry/headless/context/telemetryConfig.d.ts.map +1 -0
- package/dist/telemetry/headless/context/telemetryConfig.js +119 -0
- package/dist/telemetry/headless/context/telemetryConfig.js.map +1 -0
- package/dist/telemetry/headless/guards/RequireTelemetryEnabled.d.ts +35 -0
- package/dist/telemetry/headless/guards/RequireTelemetryEnabled.d.ts.map +1 -0
- package/dist/telemetry/headless/guards/RequireTelemetryEnabled.js +44 -0
- package/dist/telemetry/headless/guards/RequireTelemetryEnabled.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAdmin.d.ts +40 -0
- package/dist/telemetry/headless/hooks/useTelemetryAdmin.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAdmin.js +111 -0
- package/dist/telemetry/headless/hooks/useTelemetryAdmin.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistant.d.ts +120 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistant.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistant.js +185 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistant.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.d.ts +12 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.js +36 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryConnection.d.ts +46 -0
- package/dist/telemetry/headless/hooks/useTelemetryConnection.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryConnection.js +133 -0
- package/dist/telemetry/headless/hooks/useTelemetryConnection.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts +147 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.js +231 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryExplorer.d.ts +95 -0
- package/dist/telemetry/headless/hooks/useTelemetryExplorer.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryExplorer.js +197 -0
- package/dist/telemetry/headless/hooks/useTelemetryExplorer.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryStack.d.ts +69 -0
- package/dist/telemetry/headless/hooks/useTelemetryStack.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryStack.js +129 -0
- package/dist/telemetry/headless/hooks/useTelemetryStack.js.map +1 -0
- package/dist/telemetry/headless/index.d.ts +34 -0
- package/dist/telemetry/headless/index.d.ts.map +1 -0
- package/dist/telemetry/headless/index.js +34 -0
- package/dist/telemetry/headless/index.js.map +1 -0
- package/dist/telemetry/headless/lib/assistantExport.d.ts +12 -0
- package/dist/telemetry/headless/lib/assistantExport.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/assistantExport.js +116 -0
- package/dist/telemetry/headless/lib/assistantExport.js.map +1 -0
- package/dist/telemetry/headless/lib/dashboard/assistantPrompt.d.ts +91 -0
- package/dist/telemetry/headless/lib/dashboard/assistantPrompt.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/dashboard/assistantPrompt.js +246 -0
- package/dist/telemetry/headless/lib/dashboard/assistantPrompt.js.map +1 -0
- package/dist/telemetry/headless/lib/dashboardState.d.ts +58 -0
- package/dist/telemetry/headless/lib/dashboardState.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/dashboardState.js +153 -0
- package/dist/telemetry/headless/lib/dashboardState.js.map +1 -0
- package/dist/telemetry/headless/lib/explorerHandoff.d.ts +62 -0
- package/dist/telemetry/headless/lib/explorerHandoff.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/explorerHandoff.js +77 -0
- package/dist/telemetry/headless/lib/explorerHandoff.js.map +1 -0
- package/dist/telemetry/headless/lib/format.d.ts +113 -0
- package/dist/telemetry/headless/lib/format.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/format.js +280 -0
- package/dist/telemetry/headless/lib/format.js.map +1 -0
- package/dist/telemetry/headless/lib/metrics/metricSections.d.ts +44 -0
- package/dist/telemetry/headless/lib/metrics/metricSections.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/metrics/metricSections.js +61 -0
- package/dist/telemetry/headless/lib/metrics/metricSections.js.map +1 -0
- package/dist/telemetry/headless/lib/metrics/topNPreference.d.ts +15 -0
- package/dist/telemetry/headless/lib/metrics/topNPreference.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/metrics/topNPreference.js +33 -0
- package/dist/telemetry/headless/lib/metrics/topNPreference.js.map +1 -0
- package/dist/telemetry/headless/lib/queryHistory.d.ts +20 -0
- package/dist/telemetry/headless/lib/queryHistory.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/queryHistory.js +53 -0
- package/dist/telemetry/headless/lib/queryHistory.js.map +1 -0
- package/dist/telemetry/headless/lib/starterQueries.d.ts +48 -0
- package/dist/telemetry/headless/lib/starterQueries.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/starterQueries.js +84 -0
- package/dist/telemetry/headless/lib/starterQueries.js.map +1 -0
- package/dist/telemetry/headless/lib/traceLink.d.ts +26 -0
- package/dist/telemetry/headless/lib/traceLink.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/traceLink.js +32 -0
- package/dist/telemetry/headless/lib/traceLink.js.map +1 -0
- package/dist/telemetry/headless/lib/unknownRoutes.d.ts +23 -0
- package/dist/telemetry/headless/lib/unknownRoutes.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/unknownRoutes.js +35 -0
- package/dist/telemetry/headless/lib/unknownRoutes.js.map +1 -0
- package/dist/telemetry/headless/services/client.d.ts +144 -0
- package/dist/telemetry/headless/services/client.d.ts.map +1 -0
- package/dist/telemetry/headless/services/client.js +144 -0
- package/dist/telemetry/headless/services/client.js.map +1 -0
- package/dist/telemetry/headless/services/telemetry.d.ts +483 -0
- package/dist/telemetry/headless/services/telemetry.d.ts.map +1 -0
- package/dist/telemetry/headless/services/telemetry.js +190 -0
- package/dist/telemetry/headless/services/telemetry.js.map +1 -0
- package/dist/telemetry/headless/services/telemetryDashboard.d.ts +321 -0
- package/dist/telemetry/headless/services/telemetryDashboard.d.ts.map +1 -0
- package/dist/telemetry/headless/services/telemetryDashboard.js +103 -0
- package/dist/telemetry/headless/services/telemetryDashboard.js.map +1 -0
- package/dist/telemetry/internal/useIsMounted.d.ts +9 -0
- package/dist/telemetry/internal/useIsMounted.d.ts.map +1 -0
- package/dist/telemetry/internal/useIsMounted.js +19 -0
- package/dist/telemetry/internal/useIsMounted.js.map +1 -0
- package/dist/telemetry/internal/useVisiblePolling.d.ts +55 -0
- package/dist/telemetry/internal/useVisiblePolling.d.ts.map +1 -0
- package/dist/telemetry/internal/useVisiblePolling.js +96 -0
- package/dist/telemetry/internal/useVisiblePolling.js.map +1 -0
- package/dist/telemetry/internal/visuallyHidden.d.ts +12 -0
- package/dist/telemetry/internal/visuallyHidden.d.ts.map +1 -0
- package/dist/telemetry/internal/visuallyHidden.js +15 -0
- package/dist/telemetry/internal/visuallyHidden.js.map +1 -0
- package/dist/telemetry/theme/augment.d.ts +65 -0
- package/dist/telemetry/theme/augment.d.ts.map +1 -0
- package/dist/telemetry/theme/augment.js +37 -0
- package/dist/telemetry/theme/augment.js.map +1 -0
- package/dist/telemetry/theme/telemetryTokens.d.ts +121 -0
- package/dist/telemetry/theme/telemetryTokens.d.ts.map +1 -0
- package/dist/telemetry/theme/telemetryTokens.js +129 -0
- package/dist/telemetry/theme/telemetryTokens.js.map +1 -0
- package/dist/telemetry/ui/admin.d.ts +35 -0
- package/dist/telemetry/ui/admin.d.ts.map +1 -0
- package/dist/telemetry/ui/admin.js +58 -0
- package/dist/telemetry/ui/admin.js.map +1 -0
- package/dist/telemetry/ui/components/AssistantContainer.d.ts +35 -0
- package/dist/telemetry/ui/components/AssistantContainer.d.ts.map +1 -0
- package/dist/telemetry/ui/components/AssistantContainer.js +83 -0
- package/dist/telemetry/ui/components/AssistantContainer.js.map +1 -0
- package/dist/telemetry/ui/components/AssistantPanel.d.ts +22 -0
- package/dist/telemetry/ui/components/AssistantPanel.d.ts.map +1 -0
- package/dist/telemetry/ui/components/AssistantPanel.js +150 -0
- package/dist/telemetry/ui/components/AssistantPanel.js.map +1 -0
- package/dist/telemetry/ui/components/AssistantReport.d.ts +13 -0
- package/dist/telemetry/ui/components/AssistantReport.d.ts.map +1 -0
- package/dist/telemetry/ui/components/AssistantReport.js +89 -0
- package/dist/telemetry/ui/components/AssistantReport.js.map +1 -0
- package/dist/telemetry/ui/components/AssistantTimeline.d.ts +10 -0
- package/dist/telemetry/ui/components/AssistantTimeline.d.ts.map +1 -0
- package/dist/telemetry/ui/components/AssistantTimeline.js +84 -0
- package/dist/telemetry/ui/components/AssistantTimeline.js.map +1 -0
- package/dist/telemetry/ui/components/ResultsGrid.d.ts +10 -0
- package/dist/telemetry/ui/components/ResultsGrid.d.ts.map +1 -0
- package/dist/telemetry/ui/components/ResultsGrid.js +71 -0
- package/dist/telemetry/ui/components/ResultsGrid.js.map +1 -0
- package/dist/telemetry/ui/components/SchemaPanel.d.ts +9 -0
- package/dist/telemetry/ui/components/SchemaPanel.d.ts.map +1 -0
- package/dist/telemetry/ui/components/SchemaPanel.js +42 -0
- package/dist/telemetry/ui/components/SchemaPanel.js.map +1 -0
- package/dist/telemetry/ui/components/SqlEditor.d.ts +21 -0
- package/dist/telemetry/ui/components/SqlEditor.d.ts.map +1 -0
- package/dist/telemetry/ui/components/SqlEditor.js +60 -0
- package/dist/telemetry/ui/components/SqlEditor.js.map +1 -0
- package/dist/telemetry/ui/components/TelemetryConnectionSection.d.ts +14 -0
- package/dist/telemetry/ui/components/TelemetryConnectionSection.d.ts.map +1 -0
- package/dist/telemetry/ui/components/TelemetryConnectionSection.js +243 -0
- package/dist/telemetry/ui/components/TelemetryConnectionSection.js.map +1 -0
- package/dist/telemetry/ui/components/TelemetryCrossLink.d.ts +12 -0
- package/dist/telemetry/ui/components/TelemetryCrossLink.d.ts.map +1 -0
- package/dist/telemetry/ui/components/TelemetryCrossLink.js +21 -0
- package/dist/telemetry/ui/components/TelemetryCrossLink.js.map +1 -0
- package/dist/telemetry/ui/components/TelemetryServicesSection.d.ts +23 -0
- package/dist/telemetry/ui/components/TelemetryServicesSection.d.ts.map +1 -0
- package/dist/telemetry/ui/components/TelemetryServicesSection.js +138 -0
- package/dist/telemetry/ui/components/TelemetryServicesSection.js.map +1 -0
- package/dist/telemetry/ui/components/TelemetrySpinner.d.ts +3 -0
- package/dist/telemetry/ui/components/TelemetrySpinner.d.ts.map +1 -0
- package/dist/telemetry/ui/components/TelemetrySpinner.js +14 -0
- package/dist/telemetry/ui/components/TelemetrySpinner.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.d.ts +17 -0
- package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.js +70 -0
- package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.d.ts +39 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.js +143 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.d.ts +58 -0
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.js +62 -0
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/EventsFeed.d.ts +21 -0
- package/dist/telemetry/ui/components/dashboard/EventsFeed.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/EventsFeed.js +96 -0
- package/dist/telemetry/ui/components/dashboard/EventsFeed.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/KpiTiles.d.ts +13 -0
- package/dist/telemetry/ui/components/dashboard/KpiTiles.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/KpiTiles.js +82 -0
- package/dist/telemetry/ui/components/dashboard/KpiTiles.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/LogSeverityChart.d.ts +8 -0
- package/dist/telemetry/ui/components/dashboard/LogSeverityChart.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/LogSeverityChart.js +34 -0
- package/dist/telemetry/ui/components/dashboard/LogSeverityChart.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/TopProblems.d.ts +19 -0
- package/dist/telemetry/ui/components/dashboard/TopProblems.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/TopProblems.js +61 -0
- package/dist/telemetry/ui/components/dashboard/TopProblems.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.d.ts +12 -0
- package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.js +36 -0
- package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/VerdictBanner.d.ts +35 -0
- package/dist/telemetry/ui/components/dashboard/VerdictBanner.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/VerdictBanner.js +68 -0
- package/dist/telemetry/ui/components/dashboard/VerdictBanner.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/ZoomBrush.d.ts +9 -0
- package/dist/telemetry/ui/components/dashboard/ZoomBrush.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/ZoomBrush.js +96 -0
- package/dist/telemetry/ui/components/dashboard/ZoomBrush.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts +75 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js +247 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.d.ts +19 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.js +64 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.d.ts +74 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.js +126 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/severity.d.ts +43 -0
- package/dist/telemetry/ui/components/dashboard/severity.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/severity.js +66 -0
- package/dist/telemetry/ui/components/dashboard/severity.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/timelineAxis.d.ts +11 -0
- package/dist/telemetry/ui/components/dashboard/timelineAxis.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/timelineAxis.js +20 -0
- package/dist/telemetry/ui/components/dashboard/timelineAxis.js.map +1 -0
- package/dist/telemetry/ui/dashboard-page.d.ts +2 -0
- package/dist/telemetry/ui/dashboard-page.d.ts.map +1 -0
- package/dist/telemetry/ui/dashboard-page.js +6 -0
- package/dist/telemetry/ui/dashboard-page.js.map +1 -0
- package/dist/telemetry/ui/explorer-page.d.ts +2 -0
- package/dist/telemetry/ui/explorer-page.d.ts.map +1 -0
- package/dist/telemetry/ui/explorer-page.js +6 -0
- package/dist/telemetry/ui/explorer-page.js.map +1 -0
- package/dist/telemetry/ui/index.d.ts +6 -0
- package/dist/telemetry/ui/index.d.ts.map +1 -0
- package/dist/telemetry/ui/index.js +10 -0
- package/dist/telemetry/ui/index.js.map +1 -0
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.d.ts +14 -0
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.d.ts.map +1 -0
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.js +286 -0
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.js.map +1 -0
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.d.ts +15 -0
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.d.ts.map +1 -0
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.js +197 -0
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.js.map +1 -0
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.d.ts +28 -0
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.d.ts.map +1 -0
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.js +278 -0
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.js.map +1 -0
- package/dist/telemetry/ui/settings-page.d.ts +2 -0
- package/dist/telemetry/ui/settings-page.d.ts.map +1 -0
- package/dist/telemetry/ui/settings-page.js +6 -0
- package/dist/telemetry/ui/settings-page.js.map +1 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +4 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/test-platform-host.d.ts +108 -0
- package/dist/testing/test-platform-host.d.ts.map +1 -0
- package/dist/testing/test-platform-host.js +101 -0
- package/dist/testing/test-platform-host.js.map +1 -0
- package/package.json +132 -4
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback titles for two platform groups whose dashboard title is not their
|
|
3
|
+
* id, used only while (or when) the API's group metadata does not list the
|
|
4
|
+
* group. The metadata always wins: an app group (EvoPath's `coach`) is titled
|
|
5
|
+
* from it with no entry here.
|
|
6
|
+
*
|
|
7
|
+
* @stability experimental
|
|
8
|
+
*/
|
|
9
|
+
export const METRIC_SECTION_TITLES = Object.freeze({
|
|
10
|
+
host: 'Infrastructure',
|
|
11
|
+
uptime: 'Uptime & dependencies',
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* The section title the API gives `group`; else {@link METRIC_SECTION_TITLES};
|
|
15
|
+
* else the id itself.
|
|
16
|
+
*
|
|
17
|
+
* @param group - the metric group id.
|
|
18
|
+
* @param groups - the API's group metadata (`GET …/metric-groups`).
|
|
19
|
+
* @returns the title to show.
|
|
20
|
+
*
|
|
21
|
+
* @stability experimental
|
|
22
|
+
*/
|
|
23
|
+
export function metricSectionTitle(group, groups = []) {
|
|
24
|
+
return groups.find((section) => section.id === group)?.title ?? METRIC_SECTION_TITLES[group] ?? group;
|
|
25
|
+
}
|
|
26
|
+
/** The DOM id of a section's anchor (the verdict banner scrolls to it). */
|
|
27
|
+
export function metricSectionAnchor(group) {
|
|
28
|
+
return `telemetry-section-${group}`;
|
|
29
|
+
}
|
|
30
|
+
/** The section's `DashboardPanel` id (tests, and the ⋮ menu focus return). */
|
|
31
|
+
export function metricPanelId(group) {
|
|
32
|
+
return `panel-metrics-${group}`;
|
|
33
|
+
}
|
|
34
|
+
const REASON_PATTERNS = [
|
|
35
|
+
[/^Disk \S+% full/, 'host'],
|
|
36
|
+
[/^Memory \S+% used/, 'host'],
|
|
37
|
+
[/^Database connections at/, 'database'],
|
|
38
|
+
[/^Oldest pending job waiting/, 'queue'],
|
|
39
|
+
[/^Last successful backup/, 'queue'],
|
|
40
|
+
[/job type\(s\) have pending work and no eligible worker node/, 'nodes'],
|
|
41
|
+
[/worker node\(s\) stale/, 'nodes'],
|
|
42
|
+
[/^TLS certificate (expires|expired)/, 'uptime'],
|
|
43
|
+
[/^Uptime check (failed|failing)/, 'uptime'],
|
|
44
|
+
[/^Collector failed to export/, 'pipeline'],
|
|
45
|
+
];
|
|
46
|
+
/** The section a verdict reason is about, or null for the traffic and no-data rules. */
|
|
47
|
+
export function verdictReasonGroup(reason) {
|
|
48
|
+
for (const [pattern, group] of REASON_PATTERNS)
|
|
49
|
+
if (pattern.test(reason))
|
|
50
|
+
return group;
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/** Scroll a section into view and move focus to it (its region is focusable for this). */
|
|
54
|
+
export function scrollToMetricSection(group) {
|
|
55
|
+
const target = document.getElementById(metricSectionAnchor(group));
|
|
56
|
+
if (!target)
|
|
57
|
+
return;
|
|
58
|
+
target.scrollIntoView?.({ behavior: 'smooth', block: 'start' });
|
|
59
|
+
target.focus({ preventScroll: true });
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=metricSections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metricSections.js","sourceRoot":"","sources":["../../../../../src/telemetry/headless/lib/metrics/metricSections.ts"],"names":[],"mappings":"AAiBA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA4D,MAAM,CAAC,MAAM,CAAC;IAC1G,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE,uBAAuB;CAChC,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA2B,EAC3B,SAAoE,EAAE;IAEtE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACxG,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,KAA2B;IAC7D,OAAO,qBAAqB,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,KAA2B;IACvD,OAAO,iBAAiB,KAAK,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,eAAe,GAA8C;IACjE,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC3B,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAC7B,CAAC,0BAA0B,EAAE,UAAU,CAAC;IACxC,CAAC,6BAA6B,EAAE,OAAO,CAAC;IACxC,CAAC,yBAAyB,EAAE,OAAO,CAAC;IACpC,CAAC,6DAA6D,EAAE,OAAO,CAAC;IACxE,CAAC,wBAAwB,EAAE,OAAO,CAAC;IACnC,CAAC,oCAAoC,EAAE,QAAQ,CAAC;IAChD,CAAC,gCAAgC,EAAE,QAAQ,CAAC;IAC5C,CAAC,6BAA6B,EAAE,UAAU,CAAC;CAC5C,CAAC;AAEF,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,eAAe;QAAE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;IACvF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,qBAAqB,CAAC,KAA2B;IAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The "Top N" row limit a viewer picked for a dashboard table — issue #632.
|
|
3
|
+
*
|
|
4
|
+
* Per-viewer convenience in `localStorage`, modelled on the explorer's query
|
|
5
|
+
* history (`../../queryHistory.ts`): every access is wrapped in try/catch
|
|
6
|
+
* (private mode, blocked storage), and a missing, corrupt or no-longer-offered
|
|
7
|
+
* value reads as `null`, so the caller falls back to the table's default.
|
|
8
|
+
*/
|
|
9
|
+
/** A row limit: a count, or every row the API returned. */
|
|
10
|
+
export type TopNOption = number | 'all';
|
|
11
|
+
export declare function topNStorageKey(tableKey: string): string;
|
|
12
|
+
/** The stored choice for `tableKey`, if it is still one of `options`. */
|
|
13
|
+
export declare function readTopN(tableKey: string, options: readonly TopNOption[]): TopNOption | null;
|
|
14
|
+
export declare function writeTopN(tableKey: string, value: TopNOption): void;
|
|
15
|
+
//# sourceMappingURL=topNPreference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topNPreference.d.ts","sourceRoot":"","sources":["../../../../../src/telemetry/headless/lib/metrics/topNPreference.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,2DAA2D;AAC3D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAExC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,GAAG,IAAI,CAS5F;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAMnE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The "Top N" row limit a viewer picked for a dashboard table — issue #632.
|
|
3
|
+
*
|
|
4
|
+
* Per-viewer convenience in `localStorage`, modelled on the explorer's query
|
|
5
|
+
* history (`../../queryHistory.ts`): every access is wrapped in try/catch
|
|
6
|
+
* (private mode, blocked storage), and a missing, corrupt or no-longer-offered
|
|
7
|
+
* value reads as `null`, so the caller falls back to the table's default.
|
|
8
|
+
*/
|
|
9
|
+
export function topNStorageKey(tableKey) {
|
|
10
|
+
return `telemetry.dashboard.${tableKey}.topN`;
|
|
11
|
+
}
|
|
12
|
+
/** The stored choice for `tableKey`, if it is still one of `options`. */
|
|
13
|
+
export function readTopN(tableKey, options) {
|
|
14
|
+
try {
|
|
15
|
+
const raw = window.localStorage.getItem(topNStorageKey(tableKey));
|
|
16
|
+
if (raw === null)
|
|
17
|
+
return null;
|
|
18
|
+
const value = raw === 'all' ? 'all' : Number(raw);
|
|
19
|
+
return options.includes(value) ? value : null;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function writeTopN(tableKey, value) {
|
|
26
|
+
try {
|
|
27
|
+
window.localStorage.setItem(topNStorageKey(tableKey), String(value));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Storage unavailable — the choice still holds for this page view.
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=topNPreference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topNPreference.js","sourceRoot":"","sources":["../../../../../src/telemetry/headless/lib/metrics/topNPreference.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,uBAAuB,QAAQ,OAAO,CAAC;AAChD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,OAA8B;IACvE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,KAAK,GAAe,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAiB;IAC3D,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The explorer's per-browser query history — issue #537, epic #528.
|
|
3
|
+
*
|
|
4
|
+
* The last {@link QUERY_HISTORY_LIMIT} distinct queries, newest first, in
|
|
5
|
+
* `localStorage`. A per-viewer convenience only: every access is wrapped in
|
|
6
|
+
* try/catch (private mode, blocked storage), and a missing or corrupt value
|
|
7
|
+
* reads as an empty history.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The `localStorage` key of the explorer's query history.
|
|
11
|
+
*
|
|
12
|
+
* @stability experimental
|
|
13
|
+
*/
|
|
14
|
+
export declare const QUERY_HISTORY_KEY = "telemetry-explorer:history";
|
|
15
|
+
export declare const QUERY_HISTORY_LIMIT = 20;
|
|
16
|
+
export declare function readQueryHistory(): string[];
|
|
17
|
+
/** Record `sql` as the newest entry and return the new history. */
|
|
18
|
+
export declare function pushQueryHistory(sql: string): string[];
|
|
19
|
+
export declare function clearQueryHistory(): void;
|
|
20
|
+
//# sourceMappingURL=queryHistory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryHistory.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/queryHistory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,+BAA+B,CAAC;AAC9D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAW3C;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CActD;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The explorer's per-browser query history — issue #537, epic #528.
|
|
3
|
+
*
|
|
4
|
+
* The last {@link QUERY_HISTORY_LIMIT} distinct queries, newest first, in
|
|
5
|
+
* `localStorage`. A per-viewer convenience only: every access is wrapped in
|
|
6
|
+
* try/catch (private mode, blocked storage), and a missing or corrupt value
|
|
7
|
+
* reads as an empty history.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The `localStorage` key of the explorer's query history.
|
|
11
|
+
*
|
|
12
|
+
* @stability experimental
|
|
13
|
+
*/
|
|
14
|
+
export const QUERY_HISTORY_KEY = 'telemetry-explorer:history';
|
|
15
|
+
export const QUERY_HISTORY_LIMIT = 20;
|
|
16
|
+
export function readQueryHistory() {
|
|
17
|
+
try {
|
|
18
|
+
const raw = window.localStorage.getItem(QUERY_HISTORY_KEY);
|
|
19
|
+
if (!raw)
|
|
20
|
+
return [];
|
|
21
|
+
const parsed = JSON.parse(raw);
|
|
22
|
+
return Array.isArray(parsed)
|
|
23
|
+
? parsed.filter((entry) => typeof entry === 'string').slice(0, QUERY_HISTORY_LIMIT)
|
|
24
|
+
: [];
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Record `sql` as the newest entry and return the new history. */
|
|
31
|
+
export function pushQueryHistory(sql) {
|
|
32
|
+
const trimmed = sql.trim();
|
|
33
|
+
const current = readQueryHistory();
|
|
34
|
+
if (!trimmed)
|
|
35
|
+
return current;
|
|
36
|
+
const next = [trimmed, ...current.filter((entry) => entry !== trimmed)].slice(0, QUERY_HISTORY_LIMIT);
|
|
37
|
+
try {
|
|
38
|
+
window.localStorage.setItem(QUERY_HISTORY_KEY, JSON.stringify(next));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Storage unavailable — the in-memory list still updates for this session.
|
|
42
|
+
}
|
|
43
|
+
return next;
|
|
44
|
+
}
|
|
45
|
+
export function clearQueryHistory() {
|
|
46
|
+
try {
|
|
47
|
+
window.localStorage.removeItem(QUERY_HISTORY_KEY);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Nothing to do.
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=queryHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryHistory.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/queryHistory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,4BAA4B,CAAC;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC;YACpG,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAC3E,CAAC,EACD,mBAAmB,CACpB,CAAC;IACF,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Starter queries for the Telemetry Explorer — issue #537, epic #528.
|
|
3
|
+
*
|
|
4
|
+
* Written against GreptimeDB's OpenTelemetry tables (`opentelemetry_traces`,
|
|
5
|
+
* `opentelemetry_logs`). Span attribute columns are flattened with dots in
|
|
6
|
+
* their names, so any such column must be double-quoted (see
|
|
7
|
+
* {@link quoteIdentifier}).
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* One starter query of the explorer's menu.
|
|
11
|
+
*
|
|
12
|
+
* @stability experimental
|
|
13
|
+
*/
|
|
14
|
+
export interface StarterQuery {
|
|
15
|
+
/** A stable id (`recent-errors`, ...). */
|
|
16
|
+
id: string;
|
|
17
|
+
/** The menu label. */
|
|
18
|
+
title: string;
|
|
19
|
+
/** The statement the editor is seeded with. */
|
|
20
|
+
sql: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const TRACE_ID_PLACEHOLDER = "<trace_id>";
|
|
23
|
+
/**
|
|
24
|
+
* The explorer's starter queries, in menu order; the first seeds the editor.
|
|
25
|
+
*
|
|
26
|
+
* @stability experimental
|
|
27
|
+
*/
|
|
28
|
+
export declare const STARTER_QUERIES: StarterQuery[];
|
|
29
|
+
/** Escape a value for a single-quoted SQL string literal. */
|
|
30
|
+
export declare function sqlStringLiteral(value: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* The query a click on a `trace_id` value runs: every span of the trace, then
|
|
33
|
+
* every log line that carries it, in one result (a UNION over the shared
|
|
34
|
+
* columns, labelled by `kind`).
|
|
35
|
+
*
|
|
36
|
+
* @param traceId - the trace id (escaped as a string literal).
|
|
37
|
+
* @returns the statement.
|
|
38
|
+
*
|
|
39
|
+
* @stability experimental
|
|
40
|
+
*/
|
|
41
|
+
export declare function traceQuery(traceId: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* An identifier as it must be written in SQL: bare when it is a plain
|
|
44
|
+
* lower-case name, double-quoted (with `"` doubled) otherwise — which is every
|
|
45
|
+
* flattened attribute column (`span_attributes.http.route`).
|
|
46
|
+
*/
|
|
47
|
+
export declare function quoteIdentifier(name: string): string;
|
|
48
|
+
//# sourceMappingURL=starterQueries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"starterQueries.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/starterQueries.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,EA+BzC,CAAC;AAEF,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAalD;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Starter queries for the Telemetry Explorer — issue #537, epic #528.
|
|
3
|
+
*
|
|
4
|
+
* Written against GreptimeDB's OpenTelemetry tables (`opentelemetry_traces`,
|
|
5
|
+
* `opentelemetry_logs`). Span attribute columns are flattened with dots in
|
|
6
|
+
* their names, so any such column must be double-quoted (see
|
|
7
|
+
* {@link quoteIdentifier}).
|
|
8
|
+
*/
|
|
9
|
+
export const TRACE_ID_PLACEHOLDER = '<trace_id>';
|
|
10
|
+
/**
|
|
11
|
+
* The explorer's starter queries, in menu order; the first seeds the editor.
|
|
12
|
+
*
|
|
13
|
+
* @stability experimental
|
|
14
|
+
*/
|
|
15
|
+
export const STARTER_QUERIES = [
|
|
16
|
+
{
|
|
17
|
+
id: 'recent-errors',
|
|
18
|
+
title: 'Recent errors (24h)',
|
|
19
|
+
sql: "SELECT timestamp, service_name, span_name, span_status_message, trace_id FROM opentelemetry_traces WHERE span_status_code = 'STATUS_CODE_ERROR' AND timestamp > now() - INTERVAL '24 hours' ORDER BY timestamp DESC LIMIT 200",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: 'slowest-routes',
|
|
23
|
+
title: 'Slowest routes (p95, 1h)',
|
|
24
|
+
sql: "SELECT span_name, count(*) AS calls, approx_percentile_cont(duration_nano / 1000000.0, 0.95) AS p95_ms, max(duration_nano) / 1000000.0 AS max_ms FROM opentelemetry_traces WHERE span_kind = 'SPAN_KIND_SERVER' AND timestamp > now() - INTERVAL '1 hour' GROUP BY span_name ORDER BY p95_ms DESC LIMIT 20",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: 'requests-per-service',
|
|
28
|
+
title: 'Requests per service (24h)',
|
|
29
|
+
sql: "SELECT service_name, count(*) AS spans FROM opentelemetry_traces WHERE timestamp > now() - INTERVAL '24 hours' GROUP BY service_name ORDER BY spans DESC",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'log-warnings',
|
|
33
|
+
title: 'Recent warnings and errors in logs',
|
|
34
|
+
sql: 'SELECT timestamp, severity_text, body, trace_id FROM opentelemetry_logs WHERE severity_number >= 13 ORDER BY timestamp DESC LIMIT 200',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: 'trace-by-id',
|
|
38
|
+
title: 'Full trace by ID',
|
|
39
|
+
sql: `SELECT timestamp, span_name, duration_nano / 1000000.0 AS ms, span_status_code, parent_span_id, span_id FROM opentelemetry_traces WHERE trace_id = '${TRACE_ID_PLACEHOLDER}' ORDER BY timestamp`,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: 'tables-and-sizes',
|
|
43
|
+
title: 'Tables and sizes',
|
|
44
|
+
sql: "SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_rows DESC",
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
/** Escape a value for a single-quoted SQL string literal. */
|
|
48
|
+
export function sqlStringLiteral(value) {
|
|
49
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The query a click on a `trace_id` value runs: every span of the trace, then
|
|
53
|
+
* every log line that carries it, in one result (a UNION over the shared
|
|
54
|
+
* columns, labelled by `kind`).
|
|
55
|
+
*
|
|
56
|
+
* @param traceId - the trace id (escaped as a string literal).
|
|
57
|
+
* @returns the statement.
|
|
58
|
+
*
|
|
59
|
+
* @stability experimental
|
|
60
|
+
*/
|
|
61
|
+
export function traceQuery(traceId) {
|
|
62
|
+
const id = sqlStringLiteral(traceId);
|
|
63
|
+
// Only columns the OTLP logs table is known to carry (the starter queries'
|
|
64
|
+
// own, plus `span_id`) are read from it; `ms` is a typed NULL for log rows
|
|
65
|
+
// so the UNION's column types line up.
|
|
66
|
+
return [
|
|
67
|
+
"SELECT 'span' AS kind, timestamp, span_name AS name, duration_nano / 1000000.0 AS ms, span_status_code AS status, span_id",
|
|
68
|
+
`FROM opentelemetry_traces WHERE trace_id = ${id}`,
|
|
69
|
+
'UNION ALL',
|
|
70
|
+
"SELECT 'log' AS kind, timestamp, body AS name, CAST(NULL AS DOUBLE) AS ms, severity_text AS status, span_id",
|
|
71
|
+
`FROM opentelemetry_logs WHERE trace_id = ${id}`,
|
|
72
|
+
'ORDER BY timestamp',
|
|
73
|
+
].join('\n');
|
|
74
|
+
}
|
|
75
|
+
const BARE_IDENTIFIER = /^[a-z_][a-z0-9_]*$/;
|
|
76
|
+
/**
|
|
77
|
+
* An identifier as it must be written in SQL: bare when it is a plain
|
|
78
|
+
* lower-case name, double-quoted (with `"` doubled) otherwise — which is every
|
|
79
|
+
* flattened attribute column (`span_attributes.http.route`).
|
|
80
|
+
*/
|
|
81
|
+
export function quoteIdentifier(name) {
|
|
82
|
+
return BARE_IDENTIFIER.test(name) ? name : `"${name.replace(/"/g, '""')}"`;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=starterQueries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"starterQueries.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/starterQueries.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,+NAA+N;KACrO;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,0BAA0B;QACjC,GAAG,EAAE,4SAA4S;KAClT;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,4BAA4B;QACnC,GAAG,EAAE,0JAA0J;KAChK;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,oCAAoC;QAC3C,GAAG,EAAE,uIAAuI;KAC7I;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,uJAAuJ,oBAAoB,sBAAsB;KACvM;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,kBAAkB;QACzB,GAAG,EAAE,qHAAqH;KAC3H;CACF,CAAC;AAEF,6DAA6D;AAC7D,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrC,2EAA2E;IAC3E,2EAA2E;IAC3E,uCAAuC;IACvC,OAAO;QACL,2HAA2H;QAC3H,8CAA8C,EAAE,EAAE;QAClD,WAAW;QACX,6GAA6G;QAC7G,4CAA4C,EAAE,EAAE;QAChD,oBAAoB;KACrB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "View trace" from a dashboard log event — issue #579, epic #576.
|
|
3
|
+
*
|
|
4
|
+
* An OpenTelemetry trace id is 16 bytes, written as 32 lower-case hex digits
|
|
5
|
+
* (W3C Trace Context). Only an id of exactly that shape gets a link.
|
|
6
|
+
*/
|
|
7
|
+
export declare const TRACE_ID_PATTERN: RegExp;
|
|
8
|
+
export declare function isTraceId(value: unknown): value is string;
|
|
9
|
+
/**
|
|
10
|
+
* Every span of one trace, for the explorer.
|
|
11
|
+
*
|
|
12
|
+
* THE ONE STATEMENT THE BROWSER BUILDS. Every other dashboard → explorer
|
|
13
|
+
* handoff carries SQL the API reported running; this one is written here
|
|
14
|
+
* because no dashboard endpoint runs it. It is safe because:
|
|
15
|
+
*
|
|
16
|
+
* 1. the only interpolated value is `traceId`, and it is accepted only when
|
|
17
|
+
* it matches {@link TRACE_ID_PATTERN} — 32 characters from `[0-9a-f]`, so
|
|
18
|
+
* it cannot contain a quote, whitespace, a comment or anything else that
|
|
19
|
+
* could end the string literal; any other input throws;
|
|
20
|
+
* 2. it is never run by the browser: it lands in the explorer's editor and
|
|
21
|
+
* runs only when the reader presses Run, as any typed statement would;
|
|
22
|
+
* 3. the API's SQL guard, not this function, decides whether it may run
|
|
23
|
+
* (read-only, row and time limits) — exactly as for typed SQL.
|
|
24
|
+
*/
|
|
25
|
+
export declare function traceExplorerSql(traceId: string): string;
|
|
26
|
+
//# sourceMappingURL=traceLink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceLink.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/traceLink.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AAEjD,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "View trace" from a dashboard log event — issue #579, epic #576.
|
|
3
|
+
*
|
|
4
|
+
* An OpenTelemetry trace id is 16 bytes, written as 32 lower-case hex digits
|
|
5
|
+
* (W3C Trace Context). Only an id of exactly that shape gets a link.
|
|
6
|
+
*/
|
|
7
|
+
export const TRACE_ID_PATTERN = /^[0-9a-f]{32}$/;
|
|
8
|
+
export function isTraceId(value) {
|
|
9
|
+
return typeof value === 'string' && TRACE_ID_PATTERN.test(value);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Every span of one trace, for the explorer.
|
|
13
|
+
*
|
|
14
|
+
* THE ONE STATEMENT THE BROWSER BUILDS. Every other dashboard → explorer
|
|
15
|
+
* handoff carries SQL the API reported running; this one is written here
|
|
16
|
+
* because no dashboard endpoint runs it. It is safe because:
|
|
17
|
+
*
|
|
18
|
+
* 1. the only interpolated value is `traceId`, and it is accepted only when
|
|
19
|
+
* it matches {@link TRACE_ID_PATTERN} — 32 characters from `[0-9a-f]`, so
|
|
20
|
+
* it cannot contain a quote, whitespace, a comment or anything else that
|
|
21
|
+
* could end the string literal; any other input throws;
|
|
22
|
+
* 2. it is never run by the browser: it lands in the explorer's editor and
|
|
23
|
+
* runs only when the reader presses Run, as any typed statement would;
|
|
24
|
+
* 3. the API's SQL guard, not this function, decides whether it may run
|
|
25
|
+
* (read-only, row and time limits) — exactly as for typed SQL.
|
|
26
|
+
*/
|
|
27
|
+
export function traceExplorerSql(traceId) {
|
|
28
|
+
if (!isTraceId(traceId))
|
|
29
|
+
throw new Error('Not an OpenTelemetry trace id');
|
|
30
|
+
return `SELECT * FROM opentelemetry_traces WHERE trace_id = '${traceId}' ORDER BY "timestamp" LIMIT 1000`;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=traceLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceLink.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/traceLink.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC1E,OAAO,wDAAwD,OAAO,mCAAmC,CAAC;AAC5G,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unknown API routes on the Telemetry Dashboard — issue #650.
|
|
3
|
+
*
|
|
4
|
+
* Pure helpers for the "Unknown API routes" panel (`UnknownRoutesPanel.tsx`),
|
|
5
|
+
* kept apart from the component so the page can use them too.
|
|
6
|
+
*/
|
|
7
|
+
import { type DashboardUnknownRoutes } from '../services/telemetryDashboard.js';
|
|
8
|
+
/** DOM id of the panel's region: the verdict reason about unknown routes scrolls here. */
|
|
9
|
+
export declare const UNKNOWN_ROUTES_ANCHOR = "telemetry-unknown-routes";
|
|
10
|
+
/**
|
|
11
|
+
* The statements the API reports it ran for `unknownRoutes`, for "Open in
|
|
12
|
+
* Explorer": `unknownRoutes.sql` as sent (per-route list first, then the
|
|
13
|
+
* totals), never rebuilt or picked out of the summary's `sql`. Empty when an
|
|
14
|
+
* older API omits the field, which disables the action.
|
|
15
|
+
*/
|
|
16
|
+
export declare function unknownRoutesSql(block: DashboardUnknownRoutes | null | undefined): string[];
|
|
17
|
+
/** Whether the panel has anything to show: the block is present and counted at least one request. */
|
|
18
|
+
export declare function hasUnknownRoutes(block: DashboardUnknownRoutes | undefined | null): block is DashboardUnknownRoutes;
|
|
19
|
+
/** A verdict reason about unknown API routes (the API's wording, #650). */
|
|
20
|
+
export declare function isUnknownRoutesReason(reason: string): boolean;
|
|
21
|
+
/** Scroll the panel into view and move focus to it. */
|
|
22
|
+
export declare function scrollToUnknownRoutes(): void;
|
|
23
|
+
//# sourceMappingURL=unknownRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unknownRoutes.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/unknownRoutes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAW,KAAK,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEzF,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAE3F;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,IAAI,sBAAsB,CAElH;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,uDAAuD;AACvD,wBAAgB,qBAAqB,IAAI,IAAI,CAK5C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unknown API routes on the Telemetry Dashboard — issue #650.
|
|
3
|
+
*
|
|
4
|
+
* Pure helpers for the "Unknown API routes" panel (`UnknownRoutesPanel.tsx`),
|
|
5
|
+
* kept apart from the component so the page can use them too.
|
|
6
|
+
*/
|
|
7
|
+
import { sqlList } from '../services/telemetryDashboard.js';
|
|
8
|
+
/** DOM id of the panel's region: the verdict reason about unknown routes scrolls here. */
|
|
9
|
+
export const UNKNOWN_ROUTES_ANCHOR = 'telemetry-unknown-routes';
|
|
10
|
+
/**
|
|
11
|
+
* The statements the API reports it ran for `unknownRoutes`, for "Open in
|
|
12
|
+
* Explorer": `unknownRoutes.sql` as sent (per-route list first, then the
|
|
13
|
+
* totals), never rebuilt or picked out of the summary's `sql`. Empty when an
|
|
14
|
+
* older API omits the field, which disables the action.
|
|
15
|
+
*/
|
|
16
|
+
export function unknownRoutesSql(block) {
|
|
17
|
+
return sqlList(block?.sql);
|
|
18
|
+
}
|
|
19
|
+
/** Whether the panel has anything to show: the block is present and counted at least one request. */
|
|
20
|
+
export function hasUnknownRoutes(block) {
|
|
21
|
+
return !!block && block.requests > 0;
|
|
22
|
+
}
|
|
23
|
+
/** A verdict reason about unknown API routes (the API's wording, #650). */
|
|
24
|
+
export function isUnknownRoutesReason(reason) {
|
|
25
|
+
return /\bto unknown API routes\b/.test(reason);
|
|
26
|
+
}
|
|
27
|
+
/** Scroll the panel into view and move focus to it. */
|
|
28
|
+
export function scrollToUnknownRoutes() {
|
|
29
|
+
const target = document.getElementById(UNKNOWN_ROUTES_ANCHOR);
|
|
30
|
+
if (!target)
|
|
31
|
+
return;
|
|
32
|
+
target.scrollIntoView?.({ behavior: 'smooth', block: 'start' });
|
|
33
|
+
target.focus({ preventScroll: true });
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=unknownRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unknownRoutes.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/unknownRoutes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAA+B,MAAM,mCAAmC,CAAC;AAEzF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAgD;IAC/E,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,gBAAgB,CAAC,KAAgD;IAC/E,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The telemetry API client (issues #537, #558, #567, #578, #680; packaged by
|
|
3
|
+
* #704).
|
|
4
|
+
*
|
|
5
|
+
* Every call goes through the app's transport (`PlatformApiClient`, the
|
|
6
|
+
* `@marinoscar/platform-web/core` port): the auth header, the token refresh
|
|
7
|
+
* and the maintenance handling stay in the app. Paths are relative to the API
|
|
8
|
+
* base. The routes and the permission each one enforces:
|
|
9
|
+
*
|
|
10
|
+
* - `GET /telemetry/config` (any signed-in user)
|
|
11
|
+
* - `GET /admin/telemetry/config` (`telemetry:read`)
|
|
12
|
+
* - `PUT /admin/telemetry/config` (`telemetry:write`, If-Match)
|
|
13
|
+
* - `GET /admin/telemetry/status` (`telemetry:read`)
|
|
14
|
+
* - `GET|PUT|DELETE /admin/telemetry/connection`, `POST …/connection/test`
|
|
15
|
+
* (`telemetry:read` / `telemetry:write`)
|
|
16
|
+
* - `GET /admin/telemetry/stack`, `POST …/stack/deploy`
|
|
17
|
+
* (`system_settings:read` / `system_settings:write`)
|
|
18
|
+
* - `POST /admin/telemetry/query`, `GET …/schema`, `POST …/export`
|
|
19
|
+
* (`telemetry:query`)
|
|
20
|
+
* - `POST /admin/telemetry/assistant/stream` (`telemetry:query` + `ai:use`)
|
|
21
|
+
* - `GET /admin/telemetry/dashboard/*` (`telemetry:query`)
|
|
22
|
+
*
|
|
23
|
+
* The browser only presents and collects. Whether a statement is read-only,
|
|
24
|
+
* how many rows it may return and how long it may run are decided by the API.
|
|
25
|
+
*/
|
|
26
|
+
import type { PlatformApiClient } from '../../../core/index.js';
|
|
27
|
+
import type { TelemetryAdminConfig, TelemetryAssistantHandlers, TelemetryAssistantRequest, TelemetryConnection, TelemetryConnectionInput, TelemetryConnectionTestResult, TelemetryExportFormat, TelemetryExportResult, TelemetryPublicConfig, TelemetryQueryResult, TelemetrySchema, TelemetrySettingsUpdate, TelemetryStack, TelemetryStatus } from './telemetry.js';
|
|
28
|
+
import type { DashboardEvents, DashboardEventsQuery, DashboardFilters, DashboardMetricGroup, DashboardMetricGroupMeta, DashboardMetrics, DashboardMetricsQuery, DashboardQuery, DashboardSummary, DashboardTimeseries, DashboardTimeseriesPanel, DashboardTop, DashboardTopKind } from './telemetryDashboard.js';
|
|
29
|
+
/**
|
|
30
|
+
* Options a dashboard read takes.
|
|
31
|
+
*
|
|
32
|
+
* @stability experimental
|
|
33
|
+
*/
|
|
34
|
+
export interface TelemetryRequestOptions {
|
|
35
|
+
/** Aborts the request (a superseded range, an unmount). */
|
|
36
|
+
signal?: AbortSignal;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The telemetry routes as methods. Build one with
|
|
40
|
+
* {@link createTelemetryClient}; inside a page, {@link useTelemetryClient}
|
|
41
|
+
* builds it from the platform host.
|
|
42
|
+
*
|
|
43
|
+
* @stability experimental
|
|
44
|
+
*/
|
|
45
|
+
export interface TelemetryClient {
|
|
46
|
+
/** `GET /telemetry/config`: the feature flag every signed-in client reads. */
|
|
47
|
+
getTelemetryConfig(): Promise<TelemetryPublicConfig>;
|
|
48
|
+
/** `GET /admin/telemetry/config`: the settings plus provenance. */
|
|
49
|
+
getTelemetryAdminConfig(): Promise<TelemetryAdminConfig>;
|
|
50
|
+
/**
|
|
51
|
+
* `PUT /admin/telemetry/config`. `expectedVersion` travels as `If-Match`; a
|
|
52
|
+
* stale version answers 409.
|
|
53
|
+
*/
|
|
54
|
+
updateTelemetryAdminConfig(settings: TelemetrySettingsUpdate, expectedVersion?: number): Promise<TelemetryAdminConfig>;
|
|
55
|
+
/** `GET /admin/telemetry/status`: a diagnosis, always 200. */
|
|
56
|
+
getTelemetryStatus(): Promise<TelemetryStatus>;
|
|
57
|
+
/** `GET /admin/telemetry/connection`. */
|
|
58
|
+
getTelemetryConnection(): Promise<TelemetryConnection>;
|
|
59
|
+
/** `PUT /admin/telemetry/connection`, `If-Match` from `expectedVersion`. */
|
|
60
|
+
updateTelemetryConnection(input: TelemetryConnectionInput, expectedVersion?: number): Promise<TelemetryConnection>;
|
|
61
|
+
/** `DELETE /admin/telemetry/connection`: the deployment default (or none) is in force again. */
|
|
62
|
+
resetTelemetryConnection(expectedVersion?: number): Promise<TelemetryConnection>;
|
|
63
|
+
/** `POST /admin/telemetry/connection/test`: a diagnosis, always 200. */
|
|
64
|
+
testTelemetryConnection(input: TelemetryConnectionInput): Promise<TelemetryConnectionTestResult>;
|
|
65
|
+
/** `GET /admin/telemetry/stack`. */
|
|
66
|
+
getTelemetryStack(): Promise<TelemetryStack>;
|
|
67
|
+
/** `POST /admin/telemetry/stack/deploy`: enqueue a (re)deploy of the telemetry services. */
|
|
68
|
+
deployTelemetryStack(): Promise<TelemetryStackDeployAccepted>;
|
|
69
|
+
/** `POST /admin/telemetry/query`. */
|
|
70
|
+
runTelemetryQuery(sql: string, options?: {
|
|
71
|
+
maxRows?: number;
|
|
72
|
+
signal?: AbortSignal;
|
|
73
|
+
}): Promise<TelemetryQueryResult>;
|
|
74
|
+
/** `GET /admin/telemetry/schema`. */
|
|
75
|
+
getTelemetrySchema(): Promise<TelemetrySchema>;
|
|
76
|
+
/**
|
|
77
|
+
* `POST /admin/telemetry/export`: fetched as a Blob through the app's
|
|
78
|
+
* transport, then handed to the browser as a download named by
|
|
79
|
+
* `Content-Disposition`. Resolves with the filename and the
|
|
80
|
+
* row-count/truncation headers. Rejects when the transport has no
|
|
81
|
+
* `postBlob`.
|
|
82
|
+
*/
|
|
83
|
+
exportTelemetry(sql: string, format: TelemetryExportFormat): Promise<TelemetryExportResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Stream one assistant turn. Resolves when the stream ends (or quietly on
|
|
86
|
+
* abort). Rejects with a `PlatformApiError` when a gate refused the request
|
|
87
|
+
* before the first byte (`TELEMETRY_ASSISTANT_DISABLED`, `AI_DISABLED`, ...),
|
|
88
|
+
* and when the transport has no `postSse`.
|
|
89
|
+
*/
|
|
90
|
+
streamTelemetryAssistant(request: TelemetryAssistantRequest, handlers?: TelemetryAssistantHandlers): Promise<void>;
|
|
91
|
+
/** `GET …/dashboard/summary`. */
|
|
92
|
+
getDashboardSummary(query: DashboardQuery, options?: TelemetryRequestOptions): Promise<DashboardSummary>;
|
|
93
|
+
/** `GET …/dashboard/timeseries?panel=…`. */
|
|
94
|
+
getDashboardTimeseries<P extends DashboardTimeseriesPanel>(panel: P, query: DashboardQuery, options?: TelemetryRequestOptions): Promise<DashboardTimeseries<P>>;
|
|
95
|
+
/** `GET …/dashboard/top?kind=…`. */
|
|
96
|
+
getDashboardTop<K extends DashboardTopKind>(kind: K, query: DashboardQuery, options?: TelemetryRequestOptions): Promise<DashboardTop<K>>;
|
|
97
|
+
/** `GET …/dashboard/events`. */
|
|
98
|
+
getDashboardEvents(query: DashboardEventsQuery, options?: TelemetryRequestOptions): Promise<DashboardEvents>;
|
|
99
|
+
/** `GET …/dashboard/filters`. */
|
|
100
|
+
getDashboardFilters(query: DashboardQuery, options?: TelemetryRequestOptions): Promise<DashboardFilters>;
|
|
101
|
+
/** `GET …/dashboard/metrics?group=…`: one metric group's tiles, series and tables. */
|
|
102
|
+
getDashboardMetrics(group: DashboardMetricGroup, query: DashboardMetricsQuery, options?: TelemetryRequestOptions): Promise<DashboardMetrics>;
|
|
103
|
+
/**
|
|
104
|
+
* `GET …/dashboard/metric-groups`: every registered metric group, in
|
|
105
|
+
* dashboard order (the platform's and the app's own).
|
|
106
|
+
*/
|
|
107
|
+
getDashboardMetricGroups(options?: TelemetryRequestOptions): Promise<DashboardMetricGroupMeta[]>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* What `POST /admin/telemetry/stack/deploy` answers (202).
|
|
111
|
+
*
|
|
112
|
+
* @stability experimental
|
|
113
|
+
*/
|
|
114
|
+
export interface TelemetryStackDeployAccepted {
|
|
115
|
+
/** The queued `telemetry.stack.deploy` job. */
|
|
116
|
+
jobId: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* The telemetry routes over the app's transport.
|
|
120
|
+
*
|
|
121
|
+
* @param api - the app's transport (`usePlatformApi()`, or any `PlatformApiClient`).
|
|
122
|
+
* @returns a {@link TelemetryClient}.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* const telemetry = createTelemetryClient(host.api);
|
|
127
|
+
* const status = await telemetry.getTelemetryStatus();
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* @stability experimental
|
|
131
|
+
*/
|
|
132
|
+
export declare function createTelemetryClient(api: PlatformApiClient): TelemetryClient;
|
|
133
|
+
/**
|
|
134
|
+
* The telemetry client over the platform host's transport, memoised on it (a
|
|
135
|
+
* stable transport gives a stable client, so hooks keyed on it never refetch
|
|
136
|
+
* on a re-render).
|
|
137
|
+
*
|
|
138
|
+
* @returns a {@link TelemetryClient}.
|
|
139
|
+
* @throws Error outside a `PlatformHostProvider`.
|
|
140
|
+
*
|
|
141
|
+
* @stability experimental
|
|
142
|
+
*/
|
|
143
|
+
export declare function useTelemetryClient(): TelemetryClient;
|
|
144
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/services/client.ts"],"names":[],"mappings":"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"}
|