@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAG,0BAAmC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The npm name of this package, which holds React pages, components and hooks of the platform.
|
|
3
|
+
*
|
|
4
|
+
* A placeholder export so the build, the pack check and the smoke imports in
|
|
5
|
+
* CI have something to load end to end. Real slices arrive as subpath
|
|
6
|
+
* exports (`@marinoscar/platform-web/<slice>`).
|
|
7
|
+
*
|
|
8
|
+
* @stability experimental
|
|
9
|
+
*/
|
|
10
|
+
export const PLATFORM_PACKAGE = '@marinoscar/platform-web';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAAmC,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { ComponentType, ReactElement, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* One enabled AI model, as the telemetry assistant's model picker shows it:
|
|
4
|
+
* only the fields the picker reads.
|
|
5
|
+
*
|
|
6
|
+
* @stability experimental
|
|
7
|
+
*/
|
|
8
|
+
export interface TelemetryAssistantModelOption {
|
|
9
|
+
/** A stable id for the option (the catalogue row's id). */
|
|
10
|
+
id: string;
|
|
11
|
+
/** The provider id, e.g. `openai`. The stored key is `<provider>:<modelId>`. */
|
|
12
|
+
provider: string;
|
|
13
|
+
/** The provider's model id. */
|
|
14
|
+
modelId: string;
|
|
15
|
+
/** What the picker shows (the catalogue's display name, else the model id). */
|
|
16
|
+
label: string;
|
|
17
|
+
/** Whether the model declares tool calling (the assistant needs it). */
|
|
18
|
+
supportsToolCalling: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* What {@link TelemetryWebAdapters.useAiEnabled} returns.
|
|
22
|
+
*
|
|
23
|
+
* @stability experimental
|
|
24
|
+
*/
|
|
25
|
+
export interface TelemetryAiEnabledState {
|
|
26
|
+
/** AI is switched on for this deployment. */
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
/** The first answer is still in flight. */
|
|
29
|
+
isLoading: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* What {@link TelemetryWebAdapters.useAssistantModels} returns.
|
|
33
|
+
*
|
|
34
|
+
* @stability experimental
|
|
35
|
+
*/
|
|
36
|
+
export interface TelemetryAssistantModelsState {
|
|
37
|
+
/** The enabled models, in the catalogue's order. */
|
|
38
|
+
models: TelemetryAssistantModelOption[];
|
|
39
|
+
/** The catalogue is still loading. */
|
|
40
|
+
isLoading: boolean;
|
|
41
|
+
/** Why the catalogue could not be read, or `null`. */
|
|
42
|
+
error: string | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The app hooks the telemetry pages call. Each `use*` member is a React hook:
|
|
46
|
+
* keep the object a module constant so the same hooks run on every render.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* // apps/web/src/platform/telemetryAdapters.ts
|
|
51
|
+
* export const appTelemetryAdapters: TelemetryWebAdapters = {
|
|
52
|
+
* useAiEnabled: () => { const { config, isLoading } = useAiConfig(); return { enabled: config.enabled, isLoading }; },
|
|
53
|
+
* useAssistantModels: () => ...,
|
|
54
|
+
* Spinner: LoadingSpinner,
|
|
55
|
+
* };
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @extensionPoint option
|
|
59
|
+
* @stability experimental
|
|
60
|
+
*/
|
|
61
|
+
export interface TelemetryWebAdapters {
|
|
62
|
+
/** AI switched on for this deployment (the reference app: `useAiConfig().config.enabled`). */
|
|
63
|
+
useAiEnabled(): TelemetryAiEnabledState;
|
|
64
|
+
/**
|
|
65
|
+
* Enabled models for the assistant picker (the reference app:
|
|
66
|
+
* `useAiModels({ enabled: true, pageSize: 100 })`). Called only for a viewer
|
|
67
|
+
* holding `ai_config:read`, which the catalogue route requires.
|
|
68
|
+
*/
|
|
69
|
+
useAssistantModels(): TelemetryAssistantModelsState;
|
|
70
|
+
/** Optional spinner for loading states; the pages default to an MUI `CircularProgress`. */
|
|
71
|
+
Spinner?: ComponentType;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The adapters in force without a provider: AI off, no models, no spinner.
|
|
75
|
+
*
|
|
76
|
+
* @stability experimental
|
|
77
|
+
*/
|
|
78
|
+
export declare const DEFAULT_TELEMETRY_WEB_ADAPTERS: TelemetryWebAdapters;
|
|
79
|
+
/**
|
|
80
|
+
* Hands the app's {@link TelemetryWebAdapters} to every telemetry page below
|
|
81
|
+
* it. Mount it once, next to the `TelemetryConfigProvider`.
|
|
82
|
+
*
|
|
83
|
+
* @param props - `adapters`: the app's adapters (a module constant); `children`: the routed tree.
|
|
84
|
+
* @returns the provider element.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```tsx
|
|
88
|
+
* <TelemetryWebAdaptersProvider adapters={appTelemetryAdapters}>{routes}</TelemetryWebAdaptersProvider>
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @extensionPoint component
|
|
92
|
+
* @stability experimental
|
|
93
|
+
*/
|
|
94
|
+
export declare function TelemetryWebAdaptersProvider(props: {
|
|
95
|
+
adapters: TelemetryWebAdapters;
|
|
96
|
+
children: ReactNode;
|
|
97
|
+
}): ReactElement;
|
|
98
|
+
/**
|
|
99
|
+
* The adapters in context, or {@link DEFAULT_TELEMETRY_WEB_ADAPTERS}.
|
|
100
|
+
*
|
|
101
|
+
* @returns the app's telemetry adapters.
|
|
102
|
+
*
|
|
103
|
+
* @stability experimental
|
|
104
|
+
*/
|
|
105
|
+
export declare function useTelemetryWebAdapters(): TelemetryWebAdapters;
|
|
106
|
+
//# sourceMappingURL=TelemetryWebAdapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryWebAdapters.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/adapters/TelemetryWebAdapters.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC5C,oDAAoD;IACpD,MAAM,EAAE,6BAA6B,EAAE,CAAC;IACxC,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,oBAAoB;IACnC,8FAA8F;IAC9F,YAAY,IAAI,uBAAuB,CAAC;IACxC;;;;OAIG;IACH,kBAAkB,IAAI,6BAA6B,CAAC;IACpD,2FAA2F;IAC3F,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAKD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,oBAG3C,CAAC;AAKH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,YAAY,CAIf;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The telemetry slice's app adapters (issue #704)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// What the telemetry pages need from the app that the platform host
|
|
7
|
+
// (`@marinoscar/platform-web/core`) does not carry: whether AI is switched on,
|
|
8
|
+
// the AI model catalogue for the assistant's model picker, and the app's
|
|
9
|
+
// spinner. The AI slice is not packaged yet, so the app keeps owning those
|
|
10
|
+
// hooks and hands them in here; copying them into this package would fork
|
|
11
|
+
// the AI slice.
|
|
12
|
+
//
|
|
13
|
+
// Without a provider every adapter answers "off": AI disabled, no models, no
|
|
14
|
+
// app spinner. The telemetry UI then hides the assistant (fail closed).
|
|
15
|
+
// =============================================================================
|
|
16
|
+
import { createContext, useContext } from 'react';
|
|
17
|
+
const AI_OFF = Object.freeze({ enabled: false, isLoading: false });
|
|
18
|
+
const NO_MODELS = Object.freeze({ models: [], isLoading: false, error: null });
|
|
19
|
+
/**
|
|
20
|
+
* The adapters in force without a provider: AI off, no models, no spinner.
|
|
21
|
+
*
|
|
22
|
+
* @stability experimental
|
|
23
|
+
*/
|
|
24
|
+
export const DEFAULT_TELEMETRY_WEB_ADAPTERS = Object.freeze({
|
|
25
|
+
useAiEnabled: () => AI_OFF,
|
|
26
|
+
useAssistantModels: () => NO_MODELS,
|
|
27
|
+
});
|
|
28
|
+
const TelemetryWebAdaptersContext = createContext(DEFAULT_TELEMETRY_WEB_ADAPTERS);
|
|
29
|
+
TelemetryWebAdaptersContext.displayName = 'TelemetryWebAdaptersContext';
|
|
30
|
+
/**
|
|
31
|
+
* Hands the app's {@link TelemetryWebAdapters} to every telemetry page below
|
|
32
|
+
* it. Mount it once, next to the `TelemetryConfigProvider`.
|
|
33
|
+
*
|
|
34
|
+
* @param props - `adapters`: the app's adapters (a module constant); `children`: the routed tree.
|
|
35
|
+
* @returns the provider element.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* <TelemetryWebAdaptersProvider adapters={appTelemetryAdapters}>{routes}</TelemetryWebAdaptersProvider>
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @extensionPoint component
|
|
43
|
+
* @stability experimental
|
|
44
|
+
*/
|
|
45
|
+
export function TelemetryWebAdaptersProvider(props) {
|
|
46
|
+
return (_jsx(TelemetryWebAdaptersContext.Provider, { value: props.adapters, children: props.children }));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The adapters in context, or {@link DEFAULT_TELEMETRY_WEB_ADAPTERS}.
|
|
50
|
+
*
|
|
51
|
+
* @returns the app's telemetry adapters.
|
|
52
|
+
*
|
|
53
|
+
* @stability experimental
|
|
54
|
+
*/
|
|
55
|
+
export function useTelemetryWebAdapters() {
|
|
56
|
+
return useContext(TelemetryWebAdaptersContext);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=TelemetryWebAdapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryWebAdapters.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/adapters/TelemetryWebAdapters.tsx"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,kDAAkD;AAClD,gFAAgF;AAChF,EAAE;AACF,oEAAoE;AACpE,+EAA+E;AAC/E,yEAAyE;AACzE,2EAA2E;AAC3E,0EAA0E;AAC1E,gBAAgB;AAChB,EAAE;AACF,6EAA6E;AAC7E,wEAAwE;AACxE,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA8ElD,MAAM,MAAM,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5F,MAAM,SAAS,GAAkC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9G;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAyB,MAAM,CAAC,MAAM,CAAC;IAChF,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM;IAC1B,kBAAkB,EAAE,GAAG,EAAE,CAAC,SAAS;CACpC,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,aAAa,CAAuB,8BAA8B,CAAC,CAAC;AACxG,2BAA2B,CAAC,WAAW,GAAG,6BAA6B,CAAC;AAExE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAG5C;IACC,OAAO,CACL,KAAC,2BAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,YAAG,KAAK,CAAC,QAAQ,GAAwC,CACrH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,CAAC,2BAA2B,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one `GET /api/telemetry/config` fetch for the authenticated shell —
|
|
3
|
+
* issue #537, epic #528. Mounted beside the app's AI config provider, for the
|
|
4
|
+
* same reasons: its endpoint is `@Auth()`, and one mount point means one
|
|
5
|
+
* request shared by the chrome and every routed page. See `telemetryConfig.ts`.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
8
|
+
import type { PlatformApiClient } from '../../../core/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* What {@link TelemetryConfigProvider} takes.
|
|
11
|
+
*
|
|
12
|
+
* @stability experimental
|
|
13
|
+
*/
|
|
14
|
+
export interface TelemetryConfigProviderProps {
|
|
15
|
+
/** The routed tree. */
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* The transport to read `GET /telemetry/config` with. Optional below a
|
|
19
|
+
* `PlatformHostProvider` (its transport is used); required above one, which
|
|
20
|
+
* is where the app mounts it: the host reads the `telemetry` feature this
|
|
21
|
+
* provider answers. Keep its identity stable.
|
|
22
|
+
*/
|
|
23
|
+
api?: PlatformApiClient;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Fetches `GET /telemetry/config` once for everything below it; every
|
|
27
|
+
* {@link useTelemetryConfig} and {@link useTelemetryFeatures} below reads that
|
|
28
|
+
* copy. Mount it once, around the authenticated shell.
|
|
29
|
+
*
|
|
30
|
+
* @param props - see {@link TelemetryConfigProviderProps}.
|
|
31
|
+
* @returns the provider element.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <TelemetryConfigProvider api={appPlatformApi}>
|
|
36
|
+
* <AppPlatformHostProvider>{shell}</AppPlatformHostProvider>
|
|
37
|
+
* </TelemetryConfigProvider>
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @stability experimental
|
|
41
|
+
*/
|
|
42
|
+
export declare function TelemetryConfigProvider({ children, api }: TelemetryConfigProviderProps): ReactElement;
|
|
43
|
+
//# sourceMappingURL=TelemetryConfigProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryConfigProvider.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/context/TelemetryConfigProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,uBAAuB;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,iBAAiB,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,4BAA4B,GAAG,YAAY,CAGrG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { TelemetryConfigContext, useTelemetryConfigQuery } from './telemetryConfig.js';
|
|
3
|
+
/**
|
|
4
|
+
* Fetches `GET /telemetry/config` once for everything below it; every
|
|
5
|
+
* {@link useTelemetryConfig} and {@link useTelemetryFeatures} below reads that
|
|
6
|
+
* copy. Mount it once, around the authenticated shell.
|
|
7
|
+
*
|
|
8
|
+
* @param props - see {@link TelemetryConfigProviderProps}.
|
|
9
|
+
* @returns the provider element.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <TelemetryConfigProvider api={appPlatformApi}>
|
|
14
|
+
* <AppPlatformHostProvider>{shell}</AppPlatformHostProvider>
|
|
15
|
+
* </TelemetryConfigProvider>
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @stability experimental
|
|
19
|
+
*/
|
|
20
|
+
export function TelemetryConfigProvider({ children, api }) {
|
|
21
|
+
const value = useTelemetryConfigQuery(api === undefined ? {} : { api });
|
|
22
|
+
return _jsx(TelemetryConfigContext.Provider, { value: value, children: children });
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=TelemetryConfigProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryConfigProvider.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/context/TelemetryConfigProvider.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAmBvF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAgC;IACrF,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACxE,OAAO,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAmC,CAAC;AACrG,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { PlatformApiClient } from '../../../core/index.js';
|
|
2
|
+
import type { TelemetryPublicConfig } from '../services/telemetry.js';
|
|
3
|
+
/**
|
|
4
|
+
* The answer assumed before the API has given one, and after it failed to.
|
|
5
|
+
*
|
|
6
|
+
* @stability experimental
|
|
7
|
+
*/
|
|
8
|
+
export declare const TELEMETRY_CONFIG_DISABLED: TelemetryPublicConfig;
|
|
9
|
+
/**
|
|
10
|
+
* What {@link useTelemetryConfig} returns.
|
|
11
|
+
*
|
|
12
|
+
* @stability experimental
|
|
13
|
+
*/
|
|
14
|
+
export interface UseTelemetryConfigReturn {
|
|
15
|
+
/** The answer; {@link TELEMETRY_CONFIG_DISABLED} until the first one arrives, and after the first fetch failed. */
|
|
16
|
+
config: TelemetryPublicConfig;
|
|
17
|
+
/** The first answer is in flight. */
|
|
18
|
+
isLoading: boolean;
|
|
19
|
+
/** Why the last fetch failed, or `null`. */
|
|
20
|
+
error: string | null;
|
|
21
|
+
/** Fetch again (the Telemetry settings page calls it after a save). */
|
|
22
|
+
refresh: () => Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The shell-wide answer; `null` means "no provider above this component".
|
|
26
|
+
*
|
|
27
|
+
* @stability experimental
|
|
28
|
+
*/
|
|
29
|
+
export declare const TelemetryConfigContext: import("react").Context<UseTelemetryConfigReturn | null>;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the `telemetry` settings feature is on for this answer.
|
|
32
|
+
*
|
|
33
|
+
* @stability experimental
|
|
34
|
+
*/
|
|
35
|
+
export declare function isTelemetryOn(config: TelemetryPublicConfig): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* The fetching implementation; `skip` makes it an inert stub.
|
|
38
|
+
*
|
|
39
|
+
* @stability experimental
|
|
40
|
+
*/
|
|
41
|
+
export declare function useTelemetryConfigQuery(options?: {
|
|
42
|
+
skip?: boolean;
|
|
43
|
+
api?: PlatformApiClient;
|
|
44
|
+
}): UseTelemetryConfigReturn;
|
|
45
|
+
/**
|
|
46
|
+
* The telemetry configuration — the shell's shared copy when there is one.
|
|
47
|
+
*
|
|
48
|
+
* @stability experimental
|
|
49
|
+
*/
|
|
50
|
+
export declare function useTelemetryConfig(): UseTelemetryConfigReturn;
|
|
51
|
+
/**
|
|
52
|
+
* The `telemetry` entry of a settings hub's feature map.
|
|
53
|
+
*
|
|
54
|
+
* @stability experimental
|
|
55
|
+
*/
|
|
56
|
+
export interface TelemetryFeatureFlags {
|
|
57
|
+
/** A telemetry store is deployed AND collection is switched on. */
|
|
58
|
+
telemetry: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The `telemetry` entry of the registries' feature map — read from the shell's
|
|
62
|
+
* provider ONLY, never fetched (the navigation chrome renders in many isolated
|
|
63
|
+
* tests; without a provider it answers "off" with no request).
|
|
64
|
+
*
|
|
65
|
+
* @stability experimental
|
|
66
|
+
*/
|
|
67
|
+
export declare function useTelemetryFeatures(): TelemetryFeatureFlags;
|
|
68
|
+
//# sourceMappingURL=telemetryConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryConfig.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/context/telemetryConfig.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGtE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,qBAItC,CAAC;AAEH;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,mHAAmH;IACnH,MAAM,EAAE,qBAAqB,CAAC;IAC9B,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uEAAuE;IACvE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,0DAAuD,CAAC;AAE3F;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,iBAAiB,CAAA;CAAO,GAAG,wBAAwB,CA2C3H;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,wBAAwB,CAI7D;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,qBAAqB,CAG5D"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether telemetry exists in this deployment, as every authenticated user may
|
|
3
|
+
* know it (`GET /api/telemetry/config`) — issue #537, epic #528.
|
|
4
|
+
*
|
|
5
|
+
* A deliberate mirror of `useAiConfig.ts`, for the same two reasons:
|
|
6
|
+
*
|
|
7
|
+
* 1. FAIL CLOSED. `config` is never `null`: until the first answer arrives,
|
|
8
|
+
* and whenever the first fetch fails, it is {@link TELEMETRY_CONFIG_DISABLED},
|
|
9
|
+
* so no telemetry surface is offered on a guess.
|
|
10
|
+
*
|
|
11
|
+
* 2. ONE FETCH PER SHELL. `TelemetryConfigProvider`
|
|
12
|
+
* (`contexts/TelemetryConfigContext.tsx`) fetches once around the
|
|
13
|
+
* authenticated shell; `useTelemetryConfig()` reads that when present and
|
|
14
|
+
* falls back to fetching for itself when rendered in isolation.
|
|
15
|
+
*
|
|
16
|
+
* The `telemetry` feature is ON when `available && enabled`: a store is
|
|
17
|
+
* deployed AND collection is switched on. `refresh()` is what the Telemetry
|
|
18
|
+
* settings page calls after a save.
|
|
19
|
+
*/
|
|
20
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
21
|
+
import { isPlatformApiError, useOptionalPlatformHost } from '../../../core/index.js';
|
|
22
|
+
import { createTelemetryClient } from '../services/client.js';
|
|
23
|
+
import { useIsMounted } from '../../internal/useIsMounted.js';
|
|
24
|
+
/**
|
|
25
|
+
* The answer assumed before the API has given one, and after it failed to.
|
|
26
|
+
*
|
|
27
|
+
* @stability experimental
|
|
28
|
+
*/
|
|
29
|
+
export const TELEMETRY_CONFIG_DISABLED = Object.freeze({
|
|
30
|
+
available: false,
|
|
31
|
+
enabled: false,
|
|
32
|
+
assistantEnabled: false,
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* The shell-wide answer; `null` means "no provider above this component".
|
|
36
|
+
*
|
|
37
|
+
* @stability experimental
|
|
38
|
+
*/
|
|
39
|
+
export const TelemetryConfigContext = createContext(null);
|
|
40
|
+
/**
|
|
41
|
+
* Whether the `telemetry` settings feature is on for this answer.
|
|
42
|
+
*
|
|
43
|
+
* @stability experimental
|
|
44
|
+
*/
|
|
45
|
+
export function isTelemetryOn(config) {
|
|
46
|
+
return config.available === true && config.enabled === true;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The fetching implementation; `skip` makes it an inert stub.
|
|
50
|
+
*
|
|
51
|
+
* @stability experimental
|
|
52
|
+
*/
|
|
53
|
+
export function useTelemetryConfigQuery(options = {}) {
|
|
54
|
+
const { skip = false } = options;
|
|
55
|
+
// The provider is mounted around the platform host (the host reads the
|
|
56
|
+
// feature this answers), so it may take the transport as a prop; anywhere
|
|
57
|
+
// else the host's transport is used.
|
|
58
|
+
const hostApi = useOptionalPlatformHost()?.api;
|
|
59
|
+
const api = options.api ?? hostApi;
|
|
60
|
+
const client = useMemo(() => (api ? createTelemetryClient(api) : null), [api]);
|
|
61
|
+
const [config, setConfig] = useState(TELEMETRY_CONFIG_DISABLED);
|
|
62
|
+
const [isLoading, setIsLoading] = useState(!skip);
|
|
63
|
+
const [error, setError] = useState(null);
|
|
64
|
+
const loaded = useRef(false);
|
|
65
|
+
const isMounted = useIsMounted();
|
|
66
|
+
const fetchConfig = useCallback(async () => {
|
|
67
|
+
try {
|
|
68
|
+
if (!loaded.current && isMounted())
|
|
69
|
+
setIsLoading(true);
|
|
70
|
+
setError(null);
|
|
71
|
+
if (client === null) {
|
|
72
|
+
throw new Error('No platform host transport to read the telemetry configuration with');
|
|
73
|
+
}
|
|
74
|
+
const data = await client.getTelemetryConfig();
|
|
75
|
+
loaded.current = true;
|
|
76
|
+
if (isMounted())
|
|
77
|
+
setConfig(data);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
if (isMounted()) {
|
|
81
|
+
if (!loaded.current)
|
|
82
|
+
setConfig(TELEMETRY_CONFIG_DISABLED);
|
|
83
|
+
setError(isPlatformApiError(err) ? err.message : 'Failed to load telemetry configuration');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
if (isMounted())
|
|
88
|
+
setIsLoading(false);
|
|
89
|
+
}
|
|
90
|
+
}, [isMounted, client]);
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
if (skip)
|
|
93
|
+
return;
|
|
94
|
+
void fetchConfig();
|
|
95
|
+
}, [fetchConfig, skip]);
|
|
96
|
+
return useMemo(() => ({ config, isLoading: skip ? false : isLoading, error, refresh: fetchConfig }), [config, isLoading, error, fetchConfig, skip]);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The telemetry configuration — the shell's shared copy when there is one.
|
|
100
|
+
*
|
|
101
|
+
* @stability experimental
|
|
102
|
+
*/
|
|
103
|
+
export function useTelemetryConfig() {
|
|
104
|
+
const shared = useContext(TelemetryConfigContext);
|
|
105
|
+
const own = useTelemetryConfigQuery({ skip: shared !== null });
|
|
106
|
+
return shared ?? own;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The `telemetry` entry of the registries' feature map — read from the shell's
|
|
110
|
+
* provider ONLY, never fetched (the navigation chrome renders in many isolated
|
|
111
|
+
* tests; without a provider it answers "off" with no request).
|
|
112
|
+
*
|
|
113
|
+
* @stability experimental
|
|
114
|
+
*/
|
|
115
|
+
export function useTelemetryFeatures() {
|
|
116
|
+
const shared = useContext(TelemetryConfigContext);
|
|
117
|
+
return { telemetry: shared ? isTelemetryOn(shared.config) : false };
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=telemetryConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryConfig.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/context/telemetryConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* What {@link RequireTelemetryEnabled} takes.
|
|
4
|
+
*
|
|
5
|
+
* @stability experimental
|
|
6
|
+
*/
|
|
7
|
+
export interface RequireTelemetryEnabledProps {
|
|
8
|
+
/** The guarded route element. */
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
/** Rendered when telemetry is off. Defaults to a replace-redirect to `/`. */
|
|
11
|
+
fallback?: ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Rendered while the first answer is in flight. Defaults to the app's
|
|
14
|
+
* spinner adapter (`TelemetryWebAdapters.Spinner`), else nothing.
|
|
15
|
+
*/
|
|
16
|
+
loading?: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Renders `children` only while the `telemetry` feature is on (a store is
|
|
20
|
+
* deployed AND collection is switched on).
|
|
21
|
+
*
|
|
22
|
+
* @param props - see {@link RequireTelemetryEnabledProps}.
|
|
23
|
+
* @returns the children, the loading element or the fallback.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* <RequirePermission permission="telemetry:query">
|
|
28
|
+
* <RequireTelemetryEnabled><TelemetryExplorerPage /></RequireTelemetryEnabled>
|
|
29
|
+
* </RequirePermission>
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @stability experimental
|
|
33
|
+
*/
|
|
34
|
+
export declare function RequireTelemetryEnabled({ children, fallback, loading, }: RequireTelemetryEnabledProps): ReactElement;
|
|
35
|
+
//# sourceMappingURL=RequireTelemetryEnabled.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequireTelemetryEnabled.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/guards/RequireTelemetryEnabled.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMrD;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,iCAAiC;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,QAAsC,EACtC,OAAO,GACR,EAAE,4BAA4B,GAAG,YAAY,CAO7C"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Route guard: render `children` only while telemetry is available AND switched
|
|
4
|
+
* on in this deployment — issue #537, epic #528. Modelled on the app's
|
|
5
|
+
* `RequireAiEnabled`.
|
|
6
|
+
*
|
|
7
|
+
* The FEATURE half of a telemetry route's gate; the app's permission gate is
|
|
8
|
+
* the permission half, and the app nests this inside it. The Telemetry
|
|
9
|
+
* settings page does NOT use it: that page is where telemetry is switched on.
|
|
10
|
+
*
|
|
11
|
+
* While the first answer is in flight this renders the loading element rather
|
|
12
|
+
* than the fallback, so a deep link is not bounced home on the provisional
|
|
13
|
+
* "off".
|
|
14
|
+
*/
|
|
15
|
+
import { createElement } from 'react';
|
|
16
|
+
import { Navigate } from 'react-router-dom';
|
|
17
|
+
import { useTelemetryWebAdapters } from '../adapters/TelemetryWebAdapters.js';
|
|
18
|
+
import { isTelemetryOn, useTelemetryConfig } from '../context/telemetryConfig.js';
|
|
19
|
+
/**
|
|
20
|
+
* Renders `children` only while the `telemetry` feature is on (a store is
|
|
21
|
+
* deployed AND collection is switched on).
|
|
22
|
+
*
|
|
23
|
+
* @param props - see {@link RequireTelemetryEnabledProps}.
|
|
24
|
+
* @returns the children, the loading element or the fallback.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* <RequirePermission permission="telemetry:query">
|
|
29
|
+
* <RequireTelemetryEnabled><TelemetryExplorerPage /></RequireTelemetryEnabled>
|
|
30
|
+
* </RequirePermission>
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @stability experimental
|
|
34
|
+
*/
|
|
35
|
+
export function RequireTelemetryEnabled({ children, fallback = _jsx(Navigate, { to: "/", replace: true }), loading, }) {
|
|
36
|
+
const { config, isLoading } = useTelemetryConfig();
|
|
37
|
+
const { Spinner } = useTelemetryWebAdapters();
|
|
38
|
+
if (isLoading)
|
|
39
|
+
return _jsx(_Fragment, { children: loading ?? (Spinner ? createElement(Spinner) : null) });
|
|
40
|
+
if (!isTelemetryOn(config))
|
|
41
|
+
return _jsx(_Fragment, { children: fallback });
|
|
42
|
+
return _jsx(_Fragment, { children: children });
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=RequireTelemetryEnabled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequireTelemetryEnabled.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/guards/RequireTelemetryEnabled.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAmBlF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,uBAAuB,CAAC,EACtC,QAAQ,EACR,QAAQ,GAAG,KAAC,QAAQ,IAAC,EAAE,EAAC,GAAG,EAAC,OAAO,SAAG,EACtC,OAAO,GACsB;IAC7B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACnD,MAAM,EAAE,OAAO,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAE9C,IAAI,SAAS;QAAE,OAAO,4BAAG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAI,CAAC;IAClF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,4BAAG,QAAQ,GAAI,CAAC;IACnD,OAAO,4BAAG,QAAQ,GAAI,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type TelemetryAdminConfig, type TelemetrySettingsUpdate, type TelemetryStatus } from '../services/telemetry.js';
|
|
2
|
+
/**
|
|
3
|
+
* What {@link useTelemetryAdmin} returns.
|
|
4
|
+
*
|
|
5
|
+
* @stability experimental
|
|
6
|
+
*/
|
|
7
|
+
export interface UseTelemetryAdminReturn {
|
|
8
|
+
/** The stored settings and their provenance, or `null` before the first load. */
|
|
9
|
+
config: TelemetryAdminConfig | null;
|
|
10
|
+
/** The latest diagnosis, or `null` before the first load. */
|
|
11
|
+
status: TelemetryStatus | null;
|
|
12
|
+
/** A (re)load is in flight. */
|
|
13
|
+
isLoading: boolean;
|
|
14
|
+
/** Why the config could not be loaded, or `null`. */
|
|
15
|
+
loadError: string | null;
|
|
16
|
+
/** Why the status could not be loaded, or `null`. */
|
|
17
|
+
statusError: string | null;
|
|
18
|
+
/** A save is in flight. */
|
|
19
|
+
isSaving: boolean;
|
|
20
|
+
/** Why the last save failed (other than a 409), or `null`. */
|
|
21
|
+
saveError: string | null;
|
|
22
|
+
/** True after a save was refused with 409 — someone else saved first. */
|
|
23
|
+
conflict: boolean;
|
|
24
|
+
/** Load the config and the status again. */
|
|
25
|
+
reload: () => Promise<void>;
|
|
26
|
+
/** Load the status again. */
|
|
27
|
+
refreshStatus: () => Promise<void>;
|
|
28
|
+
/** Resolves `true` on success. */
|
|
29
|
+
save: (settings: TelemetrySettingsUpdate) => Promise<boolean>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The Telemetry settings page's data: `GET /admin/telemetry/config` and `GET /admin/telemetry/status` together, and a save with `If-Match: <version>` (a 409 sets `conflict`). Reads the platform host's transport.
|
|
33
|
+
*
|
|
34
|
+
* @returns the config, the status and the save action.
|
|
35
|
+
* @throws Error outside a `PlatformHostProvider`.
|
|
36
|
+
*
|
|
37
|
+
* @stability experimental
|
|
38
|
+
*/
|
|
39
|
+
export declare function useTelemetryAdmin(): UseTelemetryAdminReturn;
|
|
40
|
+
//# sourceMappingURL=useTelemetryAdmin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTelemetryAdmin.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryAdmin.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAIlC;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,iFAAiF;IACjF,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpC,6DAA6D;IAC7D,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,+BAA+B;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qDAAqD;IACrD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,6BAA6B;IAC7B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,kCAAkC;IAClC,IAAI,EAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/D;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,uBAAuB,CAkF3D"}
|