@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,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telemetry API client (issue #537, epic #528).
|
|
3
|
+
*
|
|
4
|
+
* The routes this client calls (epic #528):
|
|
5
|
+
*
|
|
6
|
+
* - `GET /telemetry/config` (#534, any signed-in user)
|
|
7
|
+
* - `GET /admin/telemetry/config` (#534, `telemetry:read`)
|
|
8
|
+
* - `PUT /admin/telemetry/config` (#534, `telemetry:write`, If-Match)
|
|
9
|
+
* - `GET /admin/telemetry/status` (#534, `telemetry:read`)
|
|
10
|
+
* - `POST /admin/telemetry/query` (#535, `telemetry:query`)
|
|
11
|
+
* - `GET /admin/telemetry/schema` (#535, `telemetry:query`)
|
|
12
|
+
* - `POST /admin/telemetry/export` (#535, `telemetry:query`)
|
|
13
|
+
* - `POST /admin/telemetry/assistant/stream` (#536, `telemetry:query` + `ai:use`)
|
|
14
|
+
*
|
|
15
|
+
* The browser only presents and collects. Whether a statement is read-only,
|
|
16
|
+
* how many rows it may return and how long it may run are decided by the API;
|
|
17
|
+
* the SQL typed here is sent verbatim and the server's guard is the gate.
|
|
18
|
+
*
|
|
19
|
+
* THE WIRE SHAPES ARE `@marinoscar/platform-contract/telemetry` (#702): the
|
|
20
|
+
* same zod schemas the API's DTOs wrap. This file aliases the contract's types
|
|
21
|
+
* to the names the components already use, and re-exports its zod-free
|
|
22
|
+
* constants. Types are imported with `import type` and values come from the
|
|
23
|
+
* contract's constants module only, so zod never reaches the bundle
|
|
24
|
+
* (`"sideEffects": false`). Where a web type deliberately differs from the
|
|
25
|
+
* wire (looser, for a server ahead of or behind this build, or narrower, for
|
|
26
|
+
* a form), it is derived from the contract type, says why, and
|
|
27
|
+
* `src/__tests__/services/telemetryContract.test.ts` pins the relation.
|
|
28
|
+
*/
|
|
29
|
+
import { TELEMETRY_CONNECTION_DEFAULTS, TELEMETRY_CONNECTION_SOURCES, TELEMETRY_EXPORT_FORMATS as TELEMETRY_EXPORT_WIRE_FORMATS, TELEMETRY_INSTANCE_ID_PATTERN, TELEMETRY_LIMITS, TELEMETRY_SQL_MAX_LENGTH, } from '@marinoscar/platform-contract/telemetry';
|
|
30
|
+
import { isPlatformApiError } from '../../../core/index.js';
|
|
31
|
+
/** The bounds of every numeric setting; the settings schema is built from them. */
|
|
32
|
+
export { TELEMETRY_LIMITS };
|
|
33
|
+
/**
|
|
34
|
+
* `telemetry.instanceId`'s pattern: 1-63 characters, lowercase letters,
|
|
35
|
+
* digits, `.`, `_` or `-`, starting with a letter or digit. A convenience for
|
|
36
|
+
* inline feedback — the API is the gate.
|
|
37
|
+
*/
|
|
38
|
+
export { TELEMETRY_INSTANCE_ID_PATTERN };
|
|
39
|
+
// =============================================================================
|
|
40
|
+
// GreptimeDB connection (#558)
|
|
41
|
+
// =============================================================================
|
|
42
|
+
//
|
|
43
|
+
// - `GET /admin/telemetry/connection` (`telemetry:read`)
|
|
44
|
+
// - `PUT /admin/telemetry/connection` (`telemetry:write`, If-Match)
|
|
45
|
+
// - `DELETE /admin/telemetry/connection` (`telemetry:write`, If-Match)
|
|
46
|
+
// - `POST /admin/telemetry/connection/test` (`telemetry:write`, always 200)
|
|
47
|
+
//
|
|
48
|
+
// Passwords are WRITE-ONLY: they appear in request bodies and never in a
|
|
49
|
+
// response, which carries only a masked `credentials.<login>` status. Its
|
|
50
|
+
// `version` is the stored connection's own counter — NOT `/config`'s.
|
|
51
|
+
export { TELEMETRY_CONNECTION_SOURCES };
|
|
52
|
+
/** GreptimeDB's Postgres-wire port and database when nothing says otherwise. */
|
|
53
|
+
export { TELEMETRY_CONNECTION_DEFAULTS };
|
|
54
|
+
/**
|
|
55
|
+
* Whether a connection-test probe was skipped rather than run.
|
|
56
|
+
*
|
|
57
|
+
* @param probe - one probe of a {@link TelemetryConnectionTestResult}.
|
|
58
|
+
* @returns `true` for a skipped probe.
|
|
59
|
+
*
|
|
60
|
+
* @stability experimental
|
|
61
|
+
*/
|
|
62
|
+
export function isTelemetryProbeSkipped(probe) {
|
|
63
|
+
return 'skipped' in probe && probe.skipped === true;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The longest statement `POST /admin/telemetry/query` accepts. The API
|
|
67
|
+
* enforces it; the browser uses it only to ignore an oversized SQL handoff
|
|
68
|
+
* into the explorer (#579).
|
|
69
|
+
*/
|
|
70
|
+
export { TELEMETRY_SQL_MAX_LENGTH };
|
|
71
|
+
/**
|
|
72
|
+
* The export formats in MENU order (CSV, Excel, Parquet, NDJSON), which is
|
|
73
|
+
* not the wire enum's order (`csv, ndjson, xlsx, parquet`): a display list
|
|
74
|
+
* over the contract's `TELEMETRY_EXPORT_FORMATS`, holding exactly its values
|
|
75
|
+
* (pinned in telemetryContract.test.ts).
|
|
76
|
+
*
|
|
77
|
+
* @stability experimental
|
|
78
|
+
*/
|
|
79
|
+
export const TELEMETRY_EXPORT_MENU_ORDER = ['csv', 'xlsx', 'parquet', 'ndjson'];
|
|
80
|
+
/**
|
|
81
|
+
* The export menu's formats, in menu order: {@link TELEMETRY_EXPORT_MENU_ORDER}.
|
|
82
|
+
*
|
|
83
|
+
* @stability experimental
|
|
84
|
+
*/
|
|
85
|
+
export const TELEMETRY_EXPORT_FORMATS = TELEMETRY_EXPORT_MENU_ORDER;
|
|
86
|
+
/** The wire enum of export formats, in its own order. */
|
|
87
|
+
export { TELEMETRY_EXPORT_WIRE_FORMATS };
|
|
88
|
+
/**
|
|
89
|
+
* The export menu's label of each format.
|
|
90
|
+
*
|
|
91
|
+
* @stability experimental
|
|
92
|
+
*/
|
|
93
|
+
export const TELEMETRY_EXPORT_LABELS = {
|
|
94
|
+
csv: 'CSV',
|
|
95
|
+
xlsx: 'Excel (.xlsx)',
|
|
96
|
+
parquet: 'Parquet',
|
|
97
|
+
ndjson: 'NDJSON',
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* The telemetry REASONS the explorer routes answer with. The envelope's
|
|
101
|
+
* `code` is derived from the HTTP status; the reason is `details.reason`
|
|
102
|
+
* (read it with {@link telemetryErrorReason}).
|
|
103
|
+
*
|
|
104
|
+
* @stability experimental
|
|
105
|
+
*/
|
|
106
|
+
export const TELEMETRY_ERROR_REASONS = [
|
|
107
|
+
'TELEMETRY_NOT_CONFIGURED', // 503
|
|
108
|
+
'TELEMETRY_UNREACHABLE', // 503
|
|
109
|
+
'TELEMETRY_DISABLED', // 409
|
|
110
|
+
'TELEMETRY_QUERY_REJECTED', // 400 — the SQL guard refused it
|
|
111
|
+
'TELEMETRY_QUERY_FAILED', // 400 — the database reported an error (+ details.sqlState)
|
|
112
|
+
'TELEMETRY_QUERY_TIMEOUT', // 504 (+ details.timeoutMs)
|
|
113
|
+
'TELEMETRY_ASSISTANT_DISABLED', // 409
|
|
114
|
+
];
|
|
115
|
+
/**
|
|
116
|
+
* `details.reason` of a telemetry API error, or `null`.
|
|
117
|
+
*
|
|
118
|
+
* @stability experimental
|
|
119
|
+
*/
|
|
120
|
+
export function telemetryErrorReason(err) {
|
|
121
|
+
if (!isPlatformApiError(err))
|
|
122
|
+
return null;
|
|
123
|
+
const details = err.details;
|
|
124
|
+
if (typeof details === 'object' && details !== null && 'reason' in details) {
|
|
125
|
+
const reason = details.reason;
|
|
126
|
+
return typeof reason === 'string' ? reason : null;
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* `telemetry-<timestamp>.<ext>` — what the server's Content-Disposition names it too.
|
|
132
|
+
*
|
|
133
|
+
* @stability experimental
|
|
134
|
+
*/
|
|
135
|
+
export function telemetryExportFilename(format, now = new Date()) {
|
|
136
|
+
const stamp = now.toISOString().replace(/[:.]/g, '-');
|
|
137
|
+
return `telemetry-${stamp}.${format}`;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Hand a Blob to the browser as a download (object URL + anchor + revoke).
|
|
141
|
+
*
|
|
142
|
+
* @stability experimental
|
|
143
|
+
*/
|
|
144
|
+
export function downloadBlob(blob, filename) {
|
|
145
|
+
if (typeof document === 'undefined' || typeof URL.createObjectURL !== 'function')
|
|
146
|
+
return false;
|
|
147
|
+
const url = URL.createObjectURL(blob);
|
|
148
|
+
try {
|
|
149
|
+
const anchor = document.createElement('a');
|
|
150
|
+
anchor.href = url;
|
|
151
|
+
anchor.download = filename;
|
|
152
|
+
anchor.rel = 'noopener';
|
|
153
|
+
anchor.style.display = 'none';
|
|
154
|
+
document.body.appendChild(anchor);
|
|
155
|
+
anchor.click();
|
|
156
|
+
anchor.remove();
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
finally {
|
|
160
|
+
// Deferred: revoking synchronously can cancel the download in some browsers.
|
|
161
|
+
setTimeout(() => URL.revokeObjectURL(url), 0);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The filename from a `Content-Disposition` header (`filename*=UTF-8''…` or
|
|
166
|
+
* `filename="…"` / `filename=…`), or `null`. Path separators are stripped.
|
|
167
|
+
*
|
|
168
|
+
* @stability experimental
|
|
169
|
+
*/
|
|
170
|
+
export function filenameFromContentDisposition(header) {
|
|
171
|
+
if (!header)
|
|
172
|
+
return null;
|
|
173
|
+
let name = null;
|
|
174
|
+
const extended = /filename\*\s*=\s*(?:UTF-8|utf-8)''([^;]+)/.exec(header);
|
|
175
|
+
if (extended) {
|
|
176
|
+
try {
|
|
177
|
+
name = decodeURIComponent(extended[1].trim().replace(/^"|"$/g, ''));
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
name = null;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (!name) {
|
|
184
|
+
const plain = /filename\s*=\s*("([^"]*)"|[^;]+)/i.exec(header);
|
|
185
|
+
name = plain ? (plain[2] ?? plain[1]).trim() : null;
|
|
186
|
+
}
|
|
187
|
+
const safe = name?.replace(/[/\\]/g, '_').trim();
|
|
188
|
+
return safe ? safe : null;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/services/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telemetry Dashboard API client — issue #578, epic #576.
|
|
3
|
+
*
|
|
4
|
+
* The wire shapes are `@marinoscar/platform-contract/telemetry` (#702), the
|
|
5
|
+
* same zod schemas `packages/platform-api/src/telemetry/dto/telemetry-dashboard.dto.ts`
|
|
6
|
+
* wraps:
|
|
7
|
+
*
|
|
8
|
+
* - `GET /admin/telemetry/dashboard/summary` (`telemetry:query`)
|
|
9
|
+
* - `GET /admin/telemetry/dashboard/timeseries` (`telemetry:query`, `panel=api|logs`)
|
|
10
|
+
* - `GET /admin/telemetry/dashboard/top` (`telemetry:query`, `kind=routes|errors`)
|
|
11
|
+
* - `GET /admin/telemetry/dashboard/events` (`telemetry:query`)
|
|
12
|
+
* - `GET /admin/telemetry/dashboard/filters` (`telemetry:query`)
|
|
13
|
+
* - `GET /admin/telemetry/dashboard/metrics` (`telemetry:query`, `group=host|database|…`, #601/#602)
|
|
14
|
+
*
|
|
15
|
+
* The browser only presents. The verdict, its reasons, the tiles, what a
|
|
16
|
+
* "route" is and how severities are banded are all decided by the API; the SQL
|
|
17
|
+
* it ran comes back in `sql` so a panel can offer "open in explorer" (#579).
|
|
18
|
+
*
|
|
19
|
+
* This file aliases the contract's types to the names the components use and
|
|
20
|
+
* re-exports its zod-free constants (`import type` and constants only, so zod
|
|
21
|
+
* never reaches the bundle). Where a web type deliberately differs from the
|
|
22
|
+
* wire it is derived from the contract type and says why;
|
|
23
|
+
* `src/__tests__/services/telemetryContract.test.ts` pins each relation.
|
|
24
|
+
*/
|
|
25
|
+
import { DASHBOARD_FILTER_VALUE_MAX, DASHBOARD_MAX_SPAN_MS, DASHBOARD_RANGE_MS, DASHBOARD_RANGES, DASHBOARD_SEARCH_MAX_LENGTH, DEFAULT_DASHBOARD_RANGE } from '@marinoscar/platform-contract/telemetry';
|
|
26
|
+
import type { DashboardBucketCount, DashboardEventSeverity, DashboardRange as ContractDashboardRange, DashboardTopKind as ContractDashboardTopKind, DashboardPanel, MetricGroupId, MetricUnit, TelemetryDashboardApiBucket, TelemetryDashboardEnvelope, TelemetryDashboardEvent, TelemetryDashboardEvents, TelemetryDashboardEventsQuery, TelemetryDashboardFilters, TelemetryDashboardLogsBucket, TelemetryDashboardMetricCell, TelemetryDashboardMetricColumn, TelemetryDashboardMetricGroup, TelemetryDashboardMetricPoint, TelemetryDashboardMetrics, TelemetryDashboardMetricSeries, TelemetryDashboardMetricsQuery, TelemetryDashboardMetricTable, TelemetryDashboardQuery, TelemetryDashboardSummary, TelemetryDashboardTile, TelemetryDashboardTimeseries, TelemetryDashboardTop, TelemetryDashboardTopError, TelemetryDashboardTopRoute, TelemetryDashboardUnknownRoute, TelemetryDashboardUnknownRoutes, VerdictLevel } from '@marinoscar/platform-contract/telemetry';
|
|
27
|
+
export { DASHBOARD_RANGES, DEFAULT_DASHBOARD_RANGE, DASHBOARD_RANGE_MS };
|
|
28
|
+
/**
|
|
29
|
+
* A relative dashboard window: `15m`, `1h`, `6h`, `24h` or `7d`.
|
|
30
|
+
*
|
|
31
|
+
* @stability experimental
|
|
32
|
+
*/
|
|
33
|
+
export type DashboardRange = ContractDashboardRange;
|
|
34
|
+
/**
|
|
35
|
+
* Display labels of the relative windows (web only).
|
|
36
|
+
*
|
|
37
|
+
* @stability experimental
|
|
38
|
+
*/
|
|
39
|
+
export declare const DASHBOARD_RANGE_LABELS: Record<DashboardRange, string>;
|
|
40
|
+
/**
|
|
41
|
+
* The severities `events` filters on (the contract's `DASHBOARD_EVENT_SEVERITIES`).
|
|
42
|
+
*
|
|
43
|
+
* @stability experimental
|
|
44
|
+
*/
|
|
45
|
+
export declare const DASHBOARD_SEVERITIES: readonly ["error", "warn", "info"];
|
|
46
|
+
/**
|
|
47
|
+
* A log severity the event panels filter on (`error`, `warn`, `info`).
|
|
48
|
+
*
|
|
49
|
+
* @stability experimental
|
|
50
|
+
*/
|
|
51
|
+
export type DashboardSeverity = DashboardEventSeverity;
|
|
52
|
+
/**
|
|
53
|
+
* What the events feed asks for until the user picks (web only; the API's own default is the same).
|
|
54
|
+
*
|
|
55
|
+
* @stability experimental
|
|
56
|
+
*/
|
|
57
|
+
export declare const DEFAULT_DASHBOARD_SEVERITIES: DashboardSeverity[];
|
|
58
|
+
/** The longest `q` the events route accepts. */
|
|
59
|
+
export { DASHBOARD_SEARCH_MAX_LENGTH };
|
|
60
|
+
/** The longest absolute window, and the longest filter value, the dashboard routes accept. */
|
|
61
|
+
export { DASHBOARD_MAX_SPAN_MS, DASHBOARD_FILTER_VALUE_MAX };
|
|
62
|
+
/**
|
|
63
|
+
* How many time buckets a timeseries asks for.
|
|
64
|
+
*
|
|
65
|
+
* @stability experimental
|
|
66
|
+
*/
|
|
67
|
+
export type DashboardBuckets = DashboardBucketCount;
|
|
68
|
+
/**
|
|
69
|
+
* The query every endpoint shares. `range` XOR `from` + `to`.
|
|
70
|
+
*
|
|
71
|
+
* @stability experimental
|
|
72
|
+
*/
|
|
73
|
+
export type DashboardQuery = TelemetryDashboardQuery;
|
|
74
|
+
/**
|
|
75
|
+
* `/metrics` also takes `host` (a value of `/filters` `hosts`). It applies to
|
|
76
|
+
* the collector-scraped tables only, so it is sent to `/metrics` alone.
|
|
77
|
+
* `group` is not part of it: {@link TelemetryClient.getDashboardMetrics} takes it separately.
|
|
78
|
+
*
|
|
79
|
+
* @stability experimental
|
|
80
|
+
*/
|
|
81
|
+
export type DashboardMetricsQuery = Omit<TelemetryDashboardMetricsQuery, 'group'>;
|
|
82
|
+
/**
|
|
83
|
+
* The events query. INTENTIONALLY DIFFERENT from the wire: `severity` is a
|
|
84
|
+
* list here, serialised to the wire's comma-separated string by
|
|
85
|
+
* {@link dashboardSearchParams}.
|
|
86
|
+
*
|
|
87
|
+
* @stability experimental
|
|
88
|
+
*/
|
|
89
|
+
export type DashboardEventsQuery = Omit<TelemetryDashboardEventsQuery, 'severity'> & {
|
|
90
|
+
/** The severities to include; serialised as a comma-separated list. */
|
|
91
|
+
severity?: DashboardSeverity[];
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* What every dashboard response except `/metrics` starts with: the resolved window and bucket size, when the store was read, whether a row cap cut a list short, and the statements run.
|
|
95
|
+
*
|
|
96
|
+
* @stability experimental
|
|
97
|
+
*/
|
|
98
|
+
export type DashboardEnvelope = TelemetryDashboardEnvelope;
|
|
99
|
+
/**
|
|
100
|
+
* The summary's verdict: `healthy`, `degraded`, `critical` or `no_data`.
|
|
101
|
+
*
|
|
102
|
+
* @stability experimental
|
|
103
|
+
*/
|
|
104
|
+
export type DashboardVerdictLevel = VerdictLevel;
|
|
105
|
+
/**
|
|
106
|
+
* A tile. `value` may be a string (`int8`/`numeric`, or a timestamp's ISO text).
|
|
107
|
+
*
|
|
108
|
+
* @stability experimental
|
|
109
|
+
*/
|
|
110
|
+
export type DashboardTile = TelemetryDashboardTile;
|
|
111
|
+
/**
|
|
112
|
+
* One unknown API route of the summary (#650): a method + path no route of the running API matches.
|
|
113
|
+
*
|
|
114
|
+
* @stability experimental
|
|
115
|
+
*/
|
|
116
|
+
export type DashboardUnknownRoute = TelemetryDashboardUnknownRoute;
|
|
117
|
+
/**
|
|
118
|
+
* Requests to API routes that do not exist (#650). INTENTIONALLY LOOSER than
|
|
119
|
+
* the wire: `sql` is optional so a web build ahead of its API renders (the
|
|
120
|
+
* "Open in Explorer" action is then disabled). The contract's type is
|
|
121
|
+
* assignable to it.
|
|
122
|
+
*
|
|
123
|
+
* @stability experimental
|
|
124
|
+
*/
|
|
125
|
+
export type DashboardUnknownRoutes = Omit<TelemetryDashboardUnknownRoutes, 'sql'> & {
|
|
126
|
+
/** The explorer statements behind the block, primary first (a list here). */
|
|
127
|
+
sql?: string[];
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* `GET …/summary`, with the looser {@link DashboardUnknownRoutes}.
|
|
131
|
+
*
|
|
132
|
+
* @stability experimental
|
|
133
|
+
*/
|
|
134
|
+
export type DashboardSummary = Omit<TelemetryDashboardSummary, 'unknownRoutes'> & {
|
|
135
|
+
/** #650. Absent when the store cannot tell unknown routes apart yet: unknown, not zero. */
|
|
136
|
+
unknownRoutes?: DashboardUnknownRoutes;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* One API timeline bucket: request counts by status class and latency.
|
|
140
|
+
*
|
|
141
|
+
* @stability experimental
|
|
142
|
+
*/
|
|
143
|
+
export type DashboardApiBucket = TelemetryDashboardApiBucket;
|
|
144
|
+
/**
|
|
145
|
+
* One log timeline bucket: record counts by severity.
|
|
146
|
+
*
|
|
147
|
+
* @stability experimental
|
|
148
|
+
*/
|
|
149
|
+
export type DashboardLogsBucket = TelemetryDashboardLogsBucket;
|
|
150
|
+
/**
|
|
151
|
+
* `GET …/timeseries?panel=api`. INTENTIONALLY NARROWER than the wire (whose
|
|
152
|
+
* `buckets` is a union for either panel): the panel requested decides the
|
|
153
|
+
* bucket shape. Assignable to the contract's type.
|
|
154
|
+
*
|
|
155
|
+
* @stability experimental
|
|
156
|
+
*/
|
|
157
|
+
export type DashboardApiTimeseries = Omit<TelemetryDashboardTimeseries, 'panel' | 'buckets'> & {
|
|
158
|
+
/** The API timeline. */
|
|
159
|
+
panel: 'api';
|
|
160
|
+
/** The API buckets, oldest first. */
|
|
161
|
+
buckets: DashboardApiBucket[];
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* `GET …/timeseries?panel=logs`; narrowed like {@link DashboardApiTimeseries}.
|
|
165
|
+
*
|
|
166
|
+
* @stability experimental
|
|
167
|
+
*/
|
|
168
|
+
export type DashboardLogsTimeseries = Omit<TelemetryDashboardTimeseries, 'panel' | 'buckets'> & {
|
|
169
|
+
/** The log timeline. */
|
|
170
|
+
panel: 'logs';
|
|
171
|
+
/** The log buckets, oldest first. */
|
|
172
|
+
buckets: DashboardLogsBucket[];
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Which timeline `GET …/timeseries` draws: `api` or `logs`.
|
|
176
|
+
*
|
|
177
|
+
* @stability experimental
|
|
178
|
+
*/
|
|
179
|
+
export type DashboardTimeseriesPanel = DashboardPanel;
|
|
180
|
+
/**
|
|
181
|
+
* The `GET …/timeseries` answer for `panel`: {@link DashboardApiTimeseries} or {@link DashboardLogsTimeseries}.
|
|
182
|
+
*
|
|
183
|
+
* @stability experimental
|
|
184
|
+
*/
|
|
185
|
+
export type DashboardTimeseries<P extends DashboardTimeseriesPanel> = P extends 'api' ? DashboardApiTimeseries : DashboardLogsTimeseries;
|
|
186
|
+
/**
|
|
187
|
+
* One route of `top?kind=routes`. INTENTIONALLY LOOSER than the wire:
|
|
188
|
+
* `clientErrors`, `unknownRequests` and `unknown` (#650) are optional so a web
|
|
189
|
+
* build ahead of its API renders; the API always sends them. The contract's
|
|
190
|
+
* type is assignable to it.
|
|
191
|
+
*
|
|
192
|
+
* @stability experimental
|
|
193
|
+
*/
|
|
194
|
+
export type DashboardTopRoute = Omit<TelemetryDashboardTopRoute, 'clientErrors' | 'unknownRequests' | 'unknown'> & Partial<Pick<TelemetryDashboardTopRoute, 'clientErrors' | 'unknownRequests' | 'unknown'>>;
|
|
195
|
+
/**
|
|
196
|
+
* One row of the top failing errors.
|
|
197
|
+
*
|
|
198
|
+
* @stability experimental
|
|
199
|
+
*/
|
|
200
|
+
export type DashboardTopError = TelemetryDashboardTopError;
|
|
201
|
+
/**
|
|
202
|
+
* Which list `GET …/top` returns: `routes` or `errors`.
|
|
203
|
+
*
|
|
204
|
+
* @stability experimental
|
|
205
|
+
*/
|
|
206
|
+
export type DashboardTopKind = ContractDashboardTopKind;
|
|
207
|
+
/**
|
|
208
|
+
* `GET …/top?kind=routes`; narrowed like {@link DashboardApiTimeseries}.
|
|
209
|
+
*
|
|
210
|
+
* @stability experimental
|
|
211
|
+
*/
|
|
212
|
+
export type DashboardTopRoutes = Omit<TelemetryDashboardTop, 'kind' | 'items'> & {
|
|
213
|
+
/** The top failing routes. */
|
|
214
|
+
kind: 'routes';
|
|
215
|
+
/** The routes, worst first. */
|
|
216
|
+
items: DashboardTopRoute[];
|
|
217
|
+
};
|
|
218
|
+
/**
|
|
219
|
+
* `GET …/top?kind=errors`; narrowed like {@link DashboardApiTimeseries}.
|
|
220
|
+
*
|
|
221
|
+
* @stability experimental
|
|
222
|
+
*/
|
|
223
|
+
export type DashboardTopErrors = Omit<TelemetryDashboardTop, 'kind' | 'items'> & {
|
|
224
|
+
/** The top errors. */
|
|
225
|
+
kind: 'errors';
|
|
226
|
+
/** The errors, most frequent first. */
|
|
227
|
+
items: DashboardTopError[];
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* The `GET …/top` answer for `kind`: {@link DashboardTopRoutes} or {@link DashboardTopErrors}.
|
|
231
|
+
*
|
|
232
|
+
* @stability experimental
|
|
233
|
+
*/
|
|
234
|
+
export type DashboardTop<K extends DashboardTopKind> = K extends 'routes' ? DashboardTopRoutes : DashboardTopErrors;
|
|
235
|
+
/**
|
|
236
|
+
* One log event. `severity` is lower-case text (`error`, `warn`, `info`, `debug`, …).
|
|
237
|
+
*
|
|
238
|
+
* @stability experimental
|
|
239
|
+
*/
|
|
240
|
+
export type DashboardEvent = TelemetryDashboardEvent;
|
|
241
|
+
/**
|
|
242
|
+
* `GET …/events`: a page of log and span events, newest first, with the next cursor.
|
|
243
|
+
*
|
|
244
|
+
* @stability experimental
|
|
245
|
+
*/
|
|
246
|
+
export type DashboardEvents = TelemetryDashboardEvents;
|
|
247
|
+
/**
|
|
248
|
+
* `GET …/filters`: the services, instances and hosts seen in the window (the filter bar's choices).
|
|
249
|
+
*
|
|
250
|
+
* @stability experimental
|
|
251
|
+
*/
|
|
252
|
+
export type DashboardFilters = TelemetryDashboardFilters;
|
|
253
|
+
/**
|
|
254
|
+
* A metric group id, as `/metric-groups` lists it (#680): the platform's six
|
|
255
|
+
* (`host`, `database`, `queue`, `nodes`, `uptime`, `pipeline`) and any the
|
|
256
|
+
* application registers. The page renders whatever the API lists.
|
|
257
|
+
*
|
|
258
|
+
* @stability experimental
|
|
259
|
+
*/
|
|
260
|
+
export type DashboardMetricGroup = MetricGroupId;
|
|
261
|
+
/**
|
|
262
|
+
* One entry of `GET …/metric-groups` (#680): a dashboard section, in `order`.
|
|
263
|
+
*
|
|
264
|
+
* @stability experimental
|
|
265
|
+
*/
|
|
266
|
+
export type DashboardMetricGroupMeta = TelemetryDashboardMetricGroup;
|
|
267
|
+
/**
|
|
268
|
+
* The display unit of a tile, series or table column (the contract's `METRIC_UNITS`).
|
|
269
|
+
*
|
|
270
|
+
* @stability experimental
|
|
271
|
+
*/
|
|
272
|
+
export type DashboardMetricUnit = MetricUnit;
|
|
273
|
+
/**
|
|
274
|
+
* One point of a metric series: a bucket start and its value.
|
|
275
|
+
*
|
|
276
|
+
* @stability experimental
|
|
277
|
+
*/
|
|
278
|
+
export type DashboardMetricPoint = TelemetryDashboardMetricPoint;
|
|
279
|
+
/**
|
|
280
|
+
* One metric line: its key, label, unit and points (optionally one per `groupBy` value).
|
|
281
|
+
*
|
|
282
|
+
* @stability experimental
|
|
283
|
+
*/
|
|
284
|
+
export type DashboardMetricSeries = TelemetryDashboardMetricSeries;
|
|
285
|
+
/**
|
|
286
|
+
* One column of a metric table: key, label and unit.
|
|
287
|
+
*
|
|
288
|
+
* @stability experimental
|
|
289
|
+
*/
|
|
290
|
+
export type DashboardMetricColumn = TelemetryDashboardMetricColumn;
|
|
291
|
+
/**
|
|
292
|
+
* One cell of a metric table row (a number, a string, a boolean or `null`).
|
|
293
|
+
*
|
|
294
|
+
* @stability experimental
|
|
295
|
+
*/
|
|
296
|
+
export type DashboardMetricCell = TelemetryDashboardMetricCell;
|
|
297
|
+
/**
|
|
298
|
+
* One metric table: columns and rows (for example disks, or databases).
|
|
299
|
+
*
|
|
300
|
+
* @stability experimental
|
|
301
|
+
*/
|
|
302
|
+
export type DashboardMetricTable = TelemetryDashboardMetricTable;
|
|
303
|
+
/**
|
|
304
|
+
* `GET …/metrics?group=…`: one metric group's tiles, series and tables.
|
|
305
|
+
*
|
|
306
|
+
* @stability experimental
|
|
307
|
+
*/
|
|
308
|
+
export type DashboardMetrics = TelemetryDashboardMetrics;
|
|
309
|
+
/**
|
|
310
|
+
* Serialise a dashboard query. Absent values are left out, never sent empty.
|
|
311
|
+
*
|
|
312
|
+
* @stability experimental
|
|
313
|
+
*/
|
|
314
|
+
export declare function dashboardSearchParams(query: DashboardQuery & Partial<Pick<DashboardEventsQuery, 'severity' | 'q' | 'cursor'>> & Partial<Pick<DashboardMetricsQuery, 'host'>>, extra?: Record<string, string>): URLSearchParams;
|
|
315
|
+
/**
|
|
316
|
+
* `sql` as a list, primary first — what a panel's actions (#579) receive.
|
|
317
|
+
*
|
|
318
|
+
* @stability experimental
|
|
319
|
+
*/
|
|
320
|
+
export declare function sqlList(sql: string | string[] | undefined | null): string[];
|
|
321
|
+
//# sourceMappingURL=telemetryDashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryDashboard.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/services/telemetryDashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telemetry Dashboard API client — issue #578, epic #576.
|
|
3
|
+
*
|
|
4
|
+
* The wire shapes are `@marinoscar/platform-contract/telemetry` (#702), the
|
|
5
|
+
* same zod schemas `packages/platform-api/src/telemetry/dto/telemetry-dashboard.dto.ts`
|
|
6
|
+
* wraps:
|
|
7
|
+
*
|
|
8
|
+
* - `GET /admin/telemetry/dashboard/summary` (`telemetry:query`)
|
|
9
|
+
* - `GET /admin/telemetry/dashboard/timeseries` (`telemetry:query`, `panel=api|logs`)
|
|
10
|
+
* - `GET /admin/telemetry/dashboard/top` (`telemetry:query`, `kind=routes|errors`)
|
|
11
|
+
* - `GET /admin/telemetry/dashboard/events` (`telemetry:query`)
|
|
12
|
+
* - `GET /admin/telemetry/dashboard/filters` (`telemetry:query`)
|
|
13
|
+
* - `GET /admin/telemetry/dashboard/metrics` (`telemetry:query`, `group=host|database|…`, #601/#602)
|
|
14
|
+
*
|
|
15
|
+
* The browser only presents. The verdict, its reasons, the tiles, what a
|
|
16
|
+
* "route" is and how severities are banded are all decided by the API; the SQL
|
|
17
|
+
* it ran comes back in `sql` so a panel can offer "open in explorer" (#579).
|
|
18
|
+
*
|
|
19
|
+
* This file aliases the contract's types to the names the components use and
|
|
20
|
+
* re-exports its zod-free constants (`import type` and constants only, so zod
|
|
21
|
+
* never reaches the bundle). Where a web type deliberately differs from the
|
|
22
|
+
* wire it is derived from the contract type and says why;
|
|
23
|
+
* `src/__tests__/services/telemetryContract.test.ts` pins each relation.
|
|
24
|
+
*/
|
|
25
|
+
import { DASHBOARD_EVENT_SEVERITIES, DASHBOARD_FILTER_VALUE_MAX, DASHBOARD_MAX_SPAN_MS, DASHBOARD_RANGE_MS, DASHBOARD_RANGES, DASHBOARD_SEARCH_MAX_LENGTH, DEFAULT_DASHBOARD_RANGE, } from '@marinoscar/platform-contract/telemetry';
|
|
26
|
+
// =============================================================================
|
|
27
|
+
// Request
|
|
28
|
+
// =============================================================================
|
|
29
|
+
export { DASHBOARD_RANGES, DEFAULT_DASHBOARD_RANGE, DASHBOARD_RANGE_MS };
|
|
30
|
+
/**
|
|
31
|
+
* Display labels of the relative windows (web only).
|
|
32
|
+
*
|
|
33
|
+
* @stability experimental
|
|
34
|
+
*/
|
|
35
|
+
export const DASHBOARD_RANGE_LABELS = {
|
|
36
|
+
'15m': 'Last 15 minutes',
|
|
37
|
+
'1h': 'Last hour',
|
|
38
|
+
'6h': 'Last 6 hours',
|
|
39
|
+
'24h': 'Last 24 hours',
|
|
40
|
+
'7d': 'Last 7 days',
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* The severities `events` filters on (the contract's `DASHBOARD_EVENT_SEVERITIES`).
|
|
44
|
+
*
|
|
45
|
+
* @stability experimental
|
|
46
|
+
*/
|
|
47
|
+
export const DASHBOARD_SEVERITIES = DASHBOARD_EVENT_SEVERITIES;
|
|
48
|
+
/**
|
|
49
|
+
* What the events feed asks for until the user picks (web only; the API's own default is the same).
|
|
50
|
+
*
|
|
51
|
+
* @stability experimental
|
|
52
|
+
*/
|
|
53
|
+
export const DEFAULT_DASHBOARD_SEVERITIES = ['error', 'warn'];
|
|
54
|
+
/** The longest `q` the events route accepts. */
|
|
55
|
+
export { DASHBOARD_SEARCH_MAX_LENGTH };
|
|
56
|
+
/** The longest absolute window, and the longest filter value, the dashboard routes accept. */
|
|
57
|
+
export { DASHBOARD_MAX_SPAN_MS, DASHBOARD_FILTER_VALUE_MAX };
|
|
58
|
+
// =============================================================================
|
|
59
|
+
// Calls
|
|
60
|
+
// =============================================================================
|
|
61
|
+
/**
|
|
62
|
+
* Serialise a dashboard query. Absent values are left out, never sent empty.
|
|
63
|
+
*
|
|
64
|
+
* @stability experimental
|
|
65
|
+
*/
|
|
66
|
+
export function dashboardSearchParams(query, extra = {}) {
|
|
67
|
+
const params = new URLSearchParams();
|
|
68
|
+
for (const [key, value] of Object.entries(extra))
|
|
69
|
+
params.set(key, value);
|
|
70
|
+
if (query.from && query.to) {
|
|
71
|
+
params.set('from', query.from);
|
|
72
|
+
params.set('to', query.to);
|
|
73
|
+
}
|
|
74
|
+
else if (query.range) {
|
|
75
|
+
params.set('range', query.range);
|
|
76
|
+
}
|
|
77
|
+
if (query.service)
|
|
78
|
+
params.set('service', query.service);
|
|
79
|
+
if (query.instance)
|
|
80
|
+
params.set('instance', query.instance);
|
|
81
|
+
if (query.host)
|
|
82
|
+
params.set('host', query.host);
|
|
83
|
+
if (query.buckets)
|
|
84
|
+
params.set('buckets', query.buckets);
|
|
85
|
+
if (query.severity && query.severity.length > 0)
|
|
86
|
+
params.set('severity', query.severity.join(','));
|
|
87
|
+
if (query.q)
|
|
88
|
+
params.set('q', query.q);
|
|
89
|
+
if (query.cursor)
|
|
90
|
+
params.set('cursor', query.cursor);
|
|
91
|
+
return params;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* `sql` as a list, primary first — what a panel's actions (#579) receive.
|
|
95
|
+
*
|
|
96
|
+
* @stability experimental
|
|
97
|
+
*/
|
|
98
|
+
export function sqlList(sql) {
|
|
99
|
+
if (!sql)
|
|
100
|
+
return [];
|
|
101
|
+
return (Array.isArray(sql) ? sql : [sql]).filter((statement) => statement.trim() !== '');
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=telemetryDashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryDashboard.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/services/telemetryDashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a stable getter for "is this component still mounted?".
|
|
3
|
+
*
|
|
4
|
+
* Used to guard `setState` in the tail of an async operation. A ref rather
|
|
5
|
+
* than state, and a getter rather than the ref itself, so callers can hold it
|
|
6
|
+
* in a `useCallback` dependency list without invalidating on every render.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useIsMounted(): () => boolean;
|
|
9
|
+
//# sourceMappingURL=useIsMounted.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsMounted.d.ts","sourceRoot":"","sources":["../../../src/telemetry/internal/useIsMounted.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,MAAM,OAAO,CAW5C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a stable getter for "is this component still mounted?".
|
|
4
|
+
*
|
|
5
|
+
* Used to guard `setState` in the tail of an async operation. A ref rather
|
|
6
|
+
* than state, and a getter rather than the ref itself, so callers can hold it
|
|
7
|
+
* in a `useCallback` dependency list without invalidating on every render.
|
|
8
|
+
*/
|
|
9
|
+
export function useIsMounted() {
|
|
10
|
+
const mounted = useRef(true);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
mounted.current = true;
|
|
13
|
+
return () => {
|
|
14
|
+
mounted.current = false;
|
|
15
|
+
};
|
|
16
|
+
}, []);
|
|
17
|
+
return useCallback(() => mounted.current, []);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=useIsMounted.js.map
|