@oneuptime/common 12.0.4 → 12.0.5
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/Models/DatabaseModels/AIRun.ts +38 -1
- package/Models/DatabaseModels/AlertFeed.ts +30 -0
- package/Models/DatabaseModels/Dashboard.ts +28 -0
- package/Models/DatabaseModels/Incident.ts +2 -0
- package/Models/DatabaseModels/IncidentEpisode.ts +1 -0
- package/Models/DatabaseModels/IncidentEpisodePublicNote.ts +1 -0
- package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
- package/Models/DatabaseModels/IncidentFeed.ts +30 -0
- package/Models/DatabaseModels/IncidentPublicNote.ts +1 -0
- package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
- package/Models/DatabaseModels/LogSavedView.ts +33 -0
- package/Models/DatabaseModels/Project.ts +231 -9
- package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -0
- package/Models/DatabaseModels/ScheduledMaintenancePublicNote.ts +1 -0
- package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
- package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.ts +4 -4
- package/Models/DatabaseModels/StatusPage.ts +28 -0
- package/Models/DatabaseModels/StatusPageAnnouncement.ts +1 -0
- package/Server/API/AIAgentDataAPI.ts +44 -55
- package/Server/API/AIInvestigationAPI.ts +175 -17
- package/Server/API/DashboardAPI.ts +10 -10
- package/Server/API/StatusPageAPI.ts +38 -19
- package/Server/EnvironmentConfig.ts +16 -0
- package/Server/Infrastructure/ClickhouseConfig.ts +15 -1
- package/Server/Infrastructure/ClickhouseDatabase.ts +1 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.ts +27 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.ts +89 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.ts +27 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.ts +40 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.ts +26 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Services/AIRunService.ts +78 -10
- package/Server/Services/AIService.ts +94 -22
- package/Server/Services/AlertFeedService.ts +5 -0
- package/Server/Services/AnalyticsDatabaseService.ts +29 -0
- package/Server/Services/DatabaseService.ts +43 -2
- package/Server/Services/IncidentFeedService.ts +5 -0
- package/Server/Services/LlmLogService.ts +46 -2
- package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +6 -0
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +4 -0
- package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +8 -5
- package/Server/Utils/AI/CodeFix/FixRunBudget.ts +90 -16
- package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +2 -0
- package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +2 -0
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +223 -22
- package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +25 -24
- package/Server/Utils/AI/SRE/ConfidenceSignal.ts +182 -71
- package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +252 -43
- package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +25 -24
- package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +47 -13
- package/Server/Utils/AI/SRE/InvestigationGrader.ts +9 -5
- package/Server/Utils/AI/SRE/InvestigationQueue.ts +141 -24
- package/Server/Utils/AI/SRE/InvestigationSubjectLock.ts +66 -0
- package/Server/Utils/AI/SRE/PostedRootCause.ts +94 -3
- package/Server/Utils/AI/SRE/README.md +1 -1
- package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +132 -10
- package/Server/Utils/AnalyticsDatabase/ClusterConfig.ts +24 -0
- package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +29 -0
- package/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.ts +56 -0
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +46 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -0
- package/Server/Utils/PasswordHash.ts +28 -4
- package/Tests/App/Dashboard/AIInvestigationHeaderStatus.test.tsx +251 -0
- package/Tests/App/Dashboard/EventStatusPanel.test.tsx +747 -0
- package/Tests/App/Dashboard/InvestigationFeedRefresh.test.tsx +480 -0
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1184 -0
- package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +500 -0
- package/Tests/App/Dashboard/PortMonitorCriteriaFilter.test.ts +93 -0
- package/Tests/App/StatusPage/PublicStatusPageAPIErrorHandling.test.ts +117 -0
- package/Tests/App/StatusPage/StatusPageModelAPIPolymorphism.test.ts +223 -0
- package/Tests/Models/DatabaseModels/PermissionCatalogueCoverage.test.ts +243 -0
- package/Tests/Server/API/AIAgentDataFixFromIncidentContext.test.ts +266 -0
- package/Tests/Server/API/AIInvestigationAPI.test.ts +594 -0
- package/Tests/Server/API/AIInvestigationCreateFixTask.test.ts +80 -0
- package/Tests/Server/API/DashboardMasterPasswordAPI.test.ts +172 -1
- package/Tests/Server/API/StatusPageMasterPasswordAPI.test.ts +335 -0
- package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +59 -5
- package/Tests/Server/Services/AIRunHumanVerdict.test.ts +127 -58
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +396 -20
- package/Tests/Server/Services/AddMasterPasswordSaltMigration.test.ts +283 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +25 -1
- package/Tests/Server/Services/DatabaseServicePerUserPasswordSalt.test.ts +45 -35
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsWithoutHooks.test.ts +54 -0
- package/Tests/Server/Services/FeedAIRunAssociation.test.ts +125 -0
- package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +418 -57
- package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +173 -14
- package/Tests/Server/Services/MasterPasswordScrypt.test.ts +567 -0
- package/Tests/Server/Services/SeparateIncidentAlertAiSettingsMigration.test.ts +194 -0
- package/Tests/Server/Utils/AI/AIAlertGating.test.ts +37 -4
- package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +330 -29
- package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +25 -0
- package/Tests/Server/Utils/AI/AIInvestigationQueue.test.ts +293 -5
- package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +59 -1
- package/Tests/Server/Utils/AI/FixFromIncidentAutoTrigger.test.ts +342 -19
- package/Tests/Server/Utils/AI/FixRunBudget.test.ts +214 -30
- package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +2 -0
- package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +65 -17
- package/Tests/Server/Utils/AI/InvestigationQueueRemediationExecution.test.ts +3 -0
- package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +313 -20
- package/Tests/Server/Utils/AI/PostedRootCause.test.ts +254 -0
- package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +4 -0
- package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +2 -0
- package/Tests/Server/Utils/AI/SubjectCodeFixRunDedupe.test.ts +44 -0
- package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +30 -0
- package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaPortTimings.test.ts +212 -0
- package/Tests/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.test.ts +401 -0
- package/Tests/Server/Utils/Monitor/MonitorMetricUtilPortTimings.test.ts +243 -0
- package/Tests/Server/Utils/PasswordHash.test.ts +30 -0
- package/Tests/Types/Dashboard/DashboardTemplates.test.ts +111 -0
- package/Tests/Types/Monitor/CephMetricCatalog.test.ts +104 -0
- package/Tests/Types/Monitor/CriteriaFilter.test.ts +4 -0
- package/Tests/Types/Monitor/DockerMetricCatalog.test.ts +109 -0
- package/Tests/Types/Monitor/DockerSwarmMetricCatalog.test.ts +118 -0
- package/Tests/Types/Monitor/HostMetricCatalog.test.ts +104 -0
- package/Tests/Types/Monitor/IotMetricCatalog.test.ts +104 -0
- package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +118 -0
- package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +42 -0
- package/Tests/Types/Monitor/MonitorStep.test.ts +38 -0
- package/Tests/Types/Monitor/MonitorStepDomainMonitor.test.ts +75 -0
- package/Tests/Types/Monitor/PodmanMetricCatalog.test.ts +109 -0
- package/Tests/Types/Monitor/ProxmoxMetricCatalog.test.ts +107 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.test.ts +151 -0
- package/Tests/Types/Permission.test.ts +137 -0
- package/Tests/Types/Rum/SessionReplayMaskingMode.test.ts +101 -0
- package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +5 -5
- package/Tests/UI/Components/CardModelDetailEdit.test.tsx +3 -5
- package/Tests/UI/Components/ErrorBoundary.test.tsx +158 -0
- package/Tests/UI/Components/FeedItemSafeMode.test.tsx +74 -0
- package/Tests/UI/Components/MoreMenu.test.tsx +756 -0
- package/Tests/UI/Components/StatusPage/ResourceGroupSection.test.tsx +62 -0
- package/Tests/UI/Monitor/PortMonitorView.test.tsx +237 -0
- package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +91 -0
- package/Tests/UI/Utils/DownloadFile.test.ts +103 -0
- package/Tests/UI/Utils/ErrorSupportBundle.test.ts +582 -0
- package/Tests/UI/Utils/Project.test.ts +31 -0
- package/Tests/UI/Utils/StatusPageModelAPIInjection.test.ts +245 -0
- package/Tests/UI/Utils/UseDashboardGridDnd.test.tsx +820 -0
- package/Tests/Utils/Dashboard/DashboardViewConfig.test.ts +329 -0
- package/Tests/Utils/Dashboard/GridLayout.test.ts +951 -0
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +117 -0
- package/Tests/Utils/RecordingRuleExpression.test.ts +327 -0
- package/Tests/Utils/StatusPage/GroupNestingLayout.test.ts +186 -0
- package/Tests/Utils/StatusPage/GroupTree.test.ts +456 -0
- package/Tests/Utils/StatusPage/OverviewGroupHierarchyVisibility.test.ts +588 -0
- package/Tests/Utils/Telemetry/SavedViewTimeRange.test.ts +244 -0
- package/Tests/Utils/Telemetry/TelemetryQueryTimeRange.test.ts +825 -0
- package/Types/AI/AIRunCodeFixRecommendation.ts +17 -0
- package/Types/AI/CodeFixTaskContext.ts +63 -3
- package/Types/AI/CodeFixTaskType.ts +3 -3
- package/Types/HashedString.ts +4 -3
- package/Types/Monitor/CriteriaFilter.ts +4 -0
- package/Types/Monitor/DomainMonitor/DomainLookupMethod.ts +23 -0
- package/Types/Monitor/DomainMonitor/DomainMonitorResponse.ts +7 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +24 -7
- package/Types/Monitor/MonitorMetricType.ts +8 -0
- package/Types/Monitor/MonitorStep.ts +10 -1
- package/Types/Monitor/MonitorStepDomainMonitor.ts +21 -0
- package/Types/Monitor/PortMonitor/PortMonitorTimings.ts +10 -0
- package/Types/Permission.ts +23 -175
- package/Types/Probe/ProbeMonitorResponse.ts +6 -0
- package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +2 -3
- package/UI/Components/ErrorBoundary.tsx +138 -11
- package/UI/Components/Feed/FeedItem.tsx +9 -2
- package/UI/Components/ModelDetail/CardModelDetail.tsx +0 -12
- package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +12 -2
- package/UI/Components/MoreMenu/MoreMenu.tsx +285 -97
- package/UI/Components/MoreMenu/MoreMenuItem.tsx +8 -5
- package/UI/Utils/DownloadFile.ts +16 -8
- package/UI/Utils/ErrorSupportBundle.ts +805 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +19 -8
- package/UI/Utils/Project.ts +4 -0
- package/UI/Utils/StatusPage.ts +8 -2
- package/UI/Utils/UseDashboardGridDnd.ts +917 -0
- package/Utils/Dashboard/DashboardViewConfig.ts +80 -36
- package/Utils/Dashboard/GridLayout.ts +523 -0
- package/Utils/Metrics/RecordingRuleExpression.ts +19 -17
- package/Utils/Monitor/MonitorMetricType.ts +44 -2
- package/Utils/StatusPage/GroupNestingLayout.ts +69 -0
- package/Utils/StatusPage/GroupTree.ts +157 -66
- package/Utils/StatusPage/ResourceUptime.ts +37 -2
- package/Utils/Telemetry/SavedViewTimeRange.ts +114 -0
- package/Utils/Telemetry/TelemetryQueryTimeRange.ts +334 -0
- package/build/dist/Models/DatabaseModels/AIRun.js +39 -1
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertFeed.js +32 -0
- package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Dashboard.js +29 -0
- package/build/dist/Models/DatabaseModels/Dashboard.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +2 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentFeed.js +32 -0
- package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/LogSavedView.js +33 -0
- package/build/dist/Models/DatabaseModels/LogSavedView.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +241 -11
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js +4 -4
- package/build/dist/Models/DatabaseModels/StatusPage.js +29 -0
- package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +1 -0
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +28 -46
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/AIInvestigationAPI.js +111 -11
- package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +8 -5
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +29 -11
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +14 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js +12 -1
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js +36 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +58 -12
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +74 -21
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/AlertFeedService.js +3 -0
- package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +29 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +21 -2
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentFeedService.js +3 -0
- package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
- package/build/dist/Server/Services/LlmLogService.js +22 -1
- package/build/dist/Server/Services/LlmLogService.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +3 -0
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +4 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +8 -5
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +63 -24
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +2 -0
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +2 -0
- package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +156 -28
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +21 -19
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +128 -49
- package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +170 -31
- package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +21 -19
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +33 -9
- package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +9 -5
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +121 -41
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js +46 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js +61 -14
- package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +79 -1
- package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js +21 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +20 -3
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js +43 -0
- package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +33 -0
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/PasswordHash.js +25 -4
- package/build/dist/Server/Utils/PasswordHash.js.map +1 -1
- package/build/dist/Types/AI/AIRunCodeFixRecommendation.js +18 -0
- package/build/dist/Types/AI/AIRunCodeFixRecommendation.js.map +1 -0
- package/build/dist/Types/AI/CodeFixTaskContext.js +23 -3
- package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -1
- package/build/dist/Types/AI/CodeFixTaskType.js +3 -3
- package/build/dist/Types/HashedString.js +4 -3
- package/build/dist/Types/HashedString.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +4 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js +24 -0
- package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +24 -7
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorMetricType.js +7 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +6 -1
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js +15 -0
- package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js +2 -0
- package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js.map +1 -0
- package/build/dist/Types/Permission.js +23 -155
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +2 -5
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
- package/build/dist/UI/Components/ErrorBoundary.js +67 -8
- package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js +2 -2
- package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +0 -12
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +12 -2
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js +193 -65
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
- package/build/dist/UI/Utils/DownloadFile.js +15 -8
- package/build/dist/UI/Utils/DownloadFile.js.map +1 -1
- package/build/dist/UI/Utils/ErrorSupportBundle.js +476 -0
- package/build/dist/UI/Utils/ErrorSupportBundle.js.map +1 -0
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +18 -8
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/Project.js +3 -0
- package/build/dist/UI/Utils/Project.js.map +1 -1
- package/build/dist/UI/Utils/StatusPage.js +4 -4
- package/build/dist/UI/Utils/StatusPage.js.map +1 -1
- package/build/dist/UI/Utils/UseDashboardGridDnd.js +551 -0
- package/build/dist/UI/Utils/UseDashboardGridDnd.js.map +1 -0
- package/build/dist/Utils/Dashboard/DashboardViewConfig.js +42 -26
- package/build/dist/Utils/Dashboard/DashboardViewConfig.js.map +1 -1
- package/build/dist/Utils/Dashboard/GridLayout.js +338 -0
- package/build/dist/Utils/Dashboard/GridLayout.js.map +1 -0
- package/build/dist/Utils/Metrics/RecordingRuleExpression.js +19 -17
- package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +38 -6
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/StatusPage/GroupNestingLayout.js +46 -0
- package/build/dist/Utils/StatusPage/GroupNestingLayout.js.map +1 -1
- package/build/dist/Utils/StatusPage/GroupTree.js +79 -34
- package/build/dist/Utils/StatusPage/GroupTree.js.map +1 -1
- package/build/dist/Utils/StatusPage/ResourceUptime.js +22 -1
- package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
- package/build/dist/Utils/Telemetry/SavedViewTimeRange.js +79 -0
- package/build/dist/Utils/Telemetry/SavedViewTimeRange.js.map +1 -0
- package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js +236 -0
- package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import InBetween from "../../Types/BaseDatabase/InBetween";
|
|
2
|
+
import TimeRange from "../../Types/Time/TimeRange";
|
|
3
|
+
/*
|
|
4
|
+
* Saved views (logs, metrics, traces) must remember the time *selection*, not
|
|
5
|
+
* the window that selection happened to resolve to when the view was saved.
|
|
6
|
+
* "Past 1 Hour" saved today has to still mean the last hour next week, so only
|
|
7
|
+
* a Custom range carries absolute timestamps; every rolling range is stored as
|
|
8
|
+
* its token alone and re-resolved against the clock each time it is applied.
|
|
9
|
+
*/
|
|
10
|
+
export const DEFAULT_SAVED_VIEW_TIME_RANGE = TimeRange.PAST_ONE_HOUR;
|
|
11
|
+
export function serializeSavedViewTimeRange(timeRange) {
|
|
12
|
+
const serialized = { range: timeRange.range };
|
|
13
|
+
if (timeRange.range === TimeRange.CUSTOM && timeRange.startAndEndDate) {
|
|
14
|
+
serialized.startValue = toIsoString(timeRange.startAndEndDate.startValue);
|
|
15
|
+
serialized.endValue = toIsoString(timeRange.startAndEndDate.endValue);
|
|
16
|
+
}
|
|
17
|
+
return serialized;
|
|
18
|
+
}
|
|
19
|
+
/*
|
|
20
|
+
* Read a stored time selection, or undefined when there is nothing usable
|
|
21
|
+
* there. The input is whatever came back out of a JSON column, so nothing
|
|
22
|
+
* about its shape is guaranteed. Callers that have another source to fall
|
|
23
|
+
* back on (e.g. a legacy absolute window) use this; callers that do not use
|
|
24
|
+
* deserializeSavedViewTimeRange below, which substitutes the default.
|
|
25
|
+
*/
|
|
26
|
+
export function readSavedViewTimeRange(saved) {
|
|
27
|
+
if (!saved || typeof saved !== "object") {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
const rawRange = saved["range"];
|
|
31
|
+
if (typeof rawRange !== "string") {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
const knownRanges = Object.values(TimeRange);
|
|
35
|
+
if (!knownRanges.includes(rawRange)) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
const range = rawRange;
|
|
39
|
+
if (range !== TimeRange.CUSTOM) {
|
|
40
|
+
return { range: range };
|
|
41
|
+
}
|
|
42
|
+
const start = toDate(saved["startValue"]);
|
|
43
|
+
const end = toDate(saved["endValue"]);
|
|
44
|
+
if (!start || !end) {
|
|
45
|
+
// A Custom range without a usable window says nothing about when to look.
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
range: TimeRange.CUSTOM,
|
|
50
|
+
startAndEndDate: new InBetween(start, end),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/*
|
|
54
|
+
* Rebuild a RangeStartAndEndDateTime from saved state. Unknown or malformed
|
|
55
|
+
* values fall back to the default (past one hour) rather than throwing or
|
|
56
|
+
* producing a nonsensical window.
|
|
57
|
+
*/
|
|
58
|
+
export function deserializeSavedViewTimeRange(saved) {
|
|
59
|
+
return (readSavedViewTimeRange(saved) || { range: DEFAULT_SAVED_VIEW_TIME_RANGE });
|
|
60
|
+
}
|
|
61
|
+
function toIsoString(value) {
|
|
62
|
+
if (value instanceof Date) {
|
|
63
|
+
return value.toISOString();
|
|
64
|
+
}
|
|
65
|
+
// Dates round-tripped through JSON come back as strings.
|
|
66
|
+
const parsed = new Date(value);
|
|
67
|
+
return isNaN(parsed.getTime()) ? String(value) : parsed.toISOString();
|
|
68
|
+
}
|
|
69
|
+
function toDate(value) {
|
|
70
|
+
if (value instanceof Date) {
|
|
71
|
+
return isNaN(value.getTime()) ? null : value;
|
|
72
|
+
}
|
|
73
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const parsed = new Date(value);
|
|
77
|
+
return isNaN(parsed.getTime()) ? null : parsed;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=SavedViewTimeRange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SavedViewTimeRange.js","sourceRoot":"","sources":["../../../../Utils/Telemetry/SavedViewTimeRange.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import InBetween from "../../Types/BaseDatabase/InBetween";
|
|
2
|
+
import { ObjectType } from "../../Types/JSON";
|
|
3
|
+
import TelemetryType from "../../Types/Telemetry/TelemetryType";
|
|
4
|
+
import TimeRange from "../../Types/Time/TimeRange";
|
|
5
|
+
/*
|
|
6
|
+
* The snapshot window that a telemetry monitor evaluated over is stamped onto
|
|
7
|
+
* the query it stores on the Incident / Alert row: logs and exceptions carry
|
|
8
|
+
* it as `time`, spans as `startTime`, metrics as `metricViewData.startAndEndDate`.
|
|
9
|
+
*
|
|
10
|
+
* Two things make that window awkward to consume on the client.
|
|
11
|
+
*
|
|
12
|
+
* 1. It does not survive the store/load round trip as Dates. The blob is
|
|
13
|
+
* persisted through `JSON.stringify`, which calls `InBetween.toJSON()` and
|
|
14
|
+
* then flattens each bound to an ISO string. On the way back
|
|
15
|
+
* `InBetween.fromJSON()` reconstructs the operator but hands those strings
|
|
16
|
+
* to the constructor untouched, so `startValue` is a `string` even though
|
|
17
|
+
* the static type says `Date`. Anything guarding on `instanceof Date`
|
|
18
|
+
* silently no-ops on an incident page.
|
|
19
|
+
*
|
|
20
|
+
* 2. Viewers that own a time-range picker (the logs viewer) need the window as
|
|
21
|
+
* a `RangeStartAndEndDateTime`, not as a query filter, because the picker
|
|
22
|
+
* state — not the query — is what drives the histogram and facet requests.
|
|
23
|
+
*
|
|
24
|
+
* These helpers are the single place that knows both shapes. They are pure so
|
|
25
|
+
* they can be unit tested without mounting a viewer.
|
|
26
|
+
*/
|
|
27
|
+
export default class TelemetryQueryTimeRange {
|
|
28
|
+
/*
|
|
29
|
+
* Field on the telemetry query that carries the snapshot window, per type.
|
|
30
|
+
* Metrics keep theirs on metricViewData instead, and profiles do not store a
|
|
31
|
+
* query at all, so both return null.
|
|
32
|
+
*/
|
|
33
|
+
static getWindowFieldName(telemetryType) {
|
|
34
|
+
if (telemetryType === TelemetryType.Log) {
|
|
35
|
+
return "time";
|
|
36
|
+
}
|
|
37
|
+
if (telemetryType === TelemetryType.Exception) {
|
|
38
|
+
return "time";
|
|
39
|
+
}
|
|
40
|
+
if (telemetryType === TelemetryType.Trace) {
|
|
41
|
+
return "startTime";
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
/*
|
|
46
|
+
* Coerce a stored window into an InBetween whose bounds are real Dates.
|
|
47
|
+
*
|
|
48
|
+
* Accepts an `InBetween` instance (bounds may be Dates, ISO strings or epoch
|
|
49
|
+
* numbers, depending on whether the value was just built or came back from
|
|
50
|
+
* storage) and the plain `{ _type: "InBetween", startValue, endValue }`
|
|
51
|
+
* object that a caller sees when it skipped `JSONFunctions.deserialize`.
|
|
52
|
+
*
|
|
53
|
+
* Returns null for anything unparseable so callers can fall back to their own
|
|
54
|
+
* default. An inverted window (start after end) is returned as-is rather than
|
|
55
|
+
* rejected: it renders as a visibly odd range the user can see and report,
|
|
56
|
+
* which beats silently swapping back to a rolling default that shows
|
|
57
|
+
* unrelated data under an incident's heading.
|
|
58
|
+
*/
|
|
59
|
+
static toDateWindow(value) {
|
|
60
|
+
if (!value || typeof value !== "object") {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
let rawStart = undefined;
|
|
64
|
+
let rawEnd = undefined;
|
|
65
|
+
if (value instanceof InBetween) {
|
|
66
|
+
/*
|
|
67
|
+
* Already in the target shape — hand back the same instance rather than
|
|
68
|
+
* an equal copy. Callers use identity to decide whether anything changed,
|
|
69
|
+
* and a fresh-but-equal object would churn React state on every load.
|
|
70
|
+
*/
|
|
71
|
+
if (this.toDate(value.startValue) === value.startValue &&
|
|
72
|
+
this.toDate(value.endValue) === value.endValue) {
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
rawStart = value.startValue;
|
|
76
|
+
rawEnd = value.endValue;
|
|
77
|
+
}
|
|
78
|
+
else if (value["_type"] === ObjectType.InBetween) {
|
|
79
|
+
rawStart = value["startValue"];
|
|
80
|
+
rawEnd = value["endValue"];
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const startDate = this.toDate(rawStart);
|
|
86
|
+
const endDate = this.toDate(rawEnd);
|
|
87
|
+
if (!startDate || !endDate) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return new InBetween(startDate, endDate);
|
|
91
|
+
}
|
|
92
|
+
static toDate(value) {
|
|
93
|
+
if (value === null || value === undefined) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
if (value instanceof Date) {
|
|
97
|
+
return Number.isNaN(value.getTime()) ? null : value;
|
|
98
|
+
}
|
|
99
|
+
if (typeof value !== "string" && typeof value !== "number") {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
/*
|
|
103
|
+
* `new Date("")` is the current time, not an Invalid Date, so an empty
|
|
104
|
+
* bound would silently become "now" and quietly widen the window instead
|
|
105
|
+
* of being reported as missing.
|
|
106
|
+
*/
|
|
107
|
+
if (typeof value === "string" && value.trim() === "") {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
const parsed = new Date(value);
|
|
111
|
+
return Number.isNaN(parsed.getTime()) ? null : parsed;
|
|
112
|
+
}
|
|
113
|
+
/*
|
|
114
|
+
* Pull the snapshot window out of a telemetry query record, whatever its
|
|
115
|
+
* telemetry type. Returns null when the monitor stored no window (older
|
|
116
|
+
* incidents, or a log monitor configured with no lastXSecondsOfLogs).
|
|
117
|
+
*/
|
|
118
|
+
static getSnapshotWindow(telemetryQuery) {
|
|
119
|
+
if (!telemetryQuery) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
if (telemetryQuery.metricViewData) {
|
|
123
|
+
const metricWindow = this.toDateWindow(telemetryQuery.metricViewData.startAndEndDate);
|
|
124
|
+
if (metricWindow) {
|
|
125
|
+
return metricWindow;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return this.getQueryWindow(telemetryQuery.telemetryQuery, telemetryQuery.telemetryType);
|
|
129
|
+
}
|
|
130
|
+
/*
|
|
131
|
+
* Same, for a bare query. `telemetryType` picks the field to read; when it is
|
|
132
|
+
* unknown both known field names are tried so a caller holding only a query
|
|
133
|
+
* (e.g. the logs viewer, which is handed a Query<Log> and nothing else) still
|
|
134
|
+
* finds the window.
|
|
135
|
+
*/
|
|
136
|
+
static getQueryWindow(query, telemetryType) {
|
|
137
|
+
if (!query) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
const fieldName = this.getWindowFieldName(telemetryType);
|
|
141
|
+
const fieldNames = fieldName
|
|
142
|
+
? [fieldName]
|
|
143
|
+
: ["time", "startTime"];
|
|
144
|
+
for (const candidate of fieldNames) {
|
|
145
|
+
const window = this.toDateWindow(query[candidate]);
|
|
146
|
+
if (window) {
|
|
147
|
+
return window;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
/*
|
|
153
|
+
* Present a snapshot window as a picker value. Always CUSTOM: the window is
|
|
154
|
+
* an absolute instant in the past, so it must never re-anchor to "now" the
|
|
155
|
+
* way a relative range like "Past 1 Hour" does.
|
|
156
|
+
*/
|
|
157
|
+
static toRangeStartAndEndDateTime(window) {
|
|
158
|
+
if (!window) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
range: TimeRange.CUSTOM,
|
|
163
|
+
startAndEndDate: window,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/*
|
|
167
|
+
* Convenience for viewers: resolve the pinned picker value for a query, or
|
|
168
|
+
* null when the query carries no window and the viewer should keep its own
|
|
169
|
+
* rolling default.
|
|
170
|
+
*/
|
|
171
|
+
static getPinnedRangeForQuery(query, telemetryType) {
|
|
172
|
+
return this.toRangeStartAndEndDateTime(this.getQueryWindow(query, telemetryType));
|
|
173
|
+
}
|
|
174
|
+
/*
|
|
175
|
+
* Value equality for two picker values. Hosts that rebuild their query on
|
|
176
|
+
* every render produce an equal-but-new window each time, so state updates
|
|
177
|
+
* have to be gated on the value rather than on object identity or a
|
|
178
|
+
* re-render loop follows.
|
|
179
|
+
*/
|
|
180
|
+
static isSameRange(a, b) {
|
|
181
|
+
if (!a || !b) {
|
|
182
|
+
return !a && !b;
|
|
183
|
+
}
|
|
184
|
+
if (a.range !== b.range) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
const aWindow = this.toDateWindow(a.startAndEndDate);
|
|
188
|
+
const bWindow = this.toDateWindow(b.startAndEndDate);
|
|
189
|
+
if (!aWindow || !bWindow) {
|
|
190
|
+
return !aWindow && !bWindow;
|
|
191
|
+
}
|
|
192
|
+
return (aWindow.startValue.getTime() === bWindow.startValue.getTime() &&
|
|
193
|
+
aWindow.endValue.getTime() === bWindow.endValue.getTime());
|
|
194
|
+
}
|
|
195
|
+
/*
|
|
196
|
+
* Rewrite a stored telemetry query so every window bound is a real Date.
|
|
197
|
+
*
|
|
198
|
+
* Consumers downstream gate real behaviour on `instanceof Date` — the metric
|
|
199
|
+
* chart skips aggregation-bucket alignment and never fetches exemplars when
|
|
200
|
+
* the bounds are strings — so hydrating once at the page's deserialize
|
|
201
|
+
* boundary is what makes those paths work on an incident.
|
|
202
|
+
*
|
|
203
|
+
* Returns the input unchanged (same reference) when there is nothing to fix,
|
|
204
|
+
* so callers can hydrate unconditionally without churning React state.
|
|
205
|
+
*/
|
|
206
|
+
static hydrate(telemetryQuery) {
|
|
207
|
+
if (!telemetryQuery) {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
let didChange = false;
|
|
211
|
+
let metricViewData = telemetryQuery.metricViewData || null;
|
|
212
|
+
if (metricViewData) {
|
|
213
|
+
const metricWindow = this.toDateWindow(metricViewData.startAndEndDate);
|
|
214
|
+
if (metricWindow && metricWindow !== metricViewData.startAndEndDate) {
|
|
215
|
+
metricViewData = Object.assign(Object.assign({}, metricViewData), { startAndEndDate: metricWindow });
|
|
216
|
+
didChange = true;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
let query = telemetryQuery.telemetryQuery || null;
|
|
220
|
+
if (query) {
|
|
221
|
+
const fieldName = this.getWindowFieldName(telemetryQuery.telemetryType);
|
|
222
|
+
if (fieldName) {
|
|
223
|
+
const window = this.toDateWindow(query[fieldName]);
|
|
224
|
+
if (window && window !== query[fieldName]) {
|
|
225
|
+
query = Object.assign(Object.assign({}, query), { [fieldName]: window });
|
|
226
|
+
didChange = true;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (!didChange) {
|
|
231
|
+
return telemetryQuery;
|
|
232
|
+
}
|
|
233
|
+
return Object.assign(Object.assign({}, telemetryQuery), { telemetryQuery: query, metricViewData: metricViewData });
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=TelemetryQueryTimeRange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryQueryTimeRange.js","sourceRoot":"","sources":["../../../../Utils/Telemetry/TelemetryQueryTimeRange.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oCAAoC,CAAC;AAE3D,OAAO,EAAc,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,aAAa,MAAM,qCAAqC,CAAC;AAEhE,OAAO,SAAS,MAAM,4BAA4B,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC1C;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAC9B,aAA+C;QAE/C,IAAI,aAAa,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,KAAK,aAAa,CAAC,SAAS,EAAE,CAAC;YAC9C,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;YAC1C,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,MAAM,CAAC,YAAY,CAAC,KAAc;QACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,GAAY,SAAS,CAAC;QAClC,IAAI,MAAM,GAAY,SAAS,CAAC;QAEhC,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B;;;;eAIG;YACH,IACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,UAAU;gBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,QAAQ,EAC9C,CAAC;gBACD,OAAO,KAAwB,CAAC;YAClC,CAAC;YAED,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC;YAC5B,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC;aAAM,IAAK,KAAoB,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;YACnE,QAAQ,GAAI,KAAoB,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,GAAI,KAAoB,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,OAAO,GAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,SAAS,CAAO,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,KAAc;QAClC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACtD,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;;;WAIG;QACH,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,iBAAiB,CAC7B,cAAiD;QAEjD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,cAAc,CAAC,cAAc,EAAE,CAAC;YAClC,MAAM,YAAY,GAA2B,IAAI,CAAC,YAAY,CAC5D,cAAc,CAAC,cAAc,CAAC,eAAe,CAC9C,CAAC;YAEF,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CACxB,cAAc,CAAC,cAAc,EAC7B,cAAc,CAAC,aAAa,CAC7B,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,cAAc,CAC1B,KAAqE,EACrE,aAAyC;QAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAkB,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACxE,MAAM,UAAU,GAAkB,SAAS;YACzC,CAAC,CAAC,CAAC,SAAS,CAAC;YACb,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE1B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,MAAM,GAA2B,IAAI,CAAC,YAAY,CACrD,KAAoB,CAAC,SAAS,CAAC,CACjC,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,0BAA0B,CACtC,MAA0C;QAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,eAAe,EAAE,MAAM;SACxB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,sBAAsB,CAClC,KAAqE,EACrE,aAAyC;QAEzC,OAAO,IAAI,CAAC,0BAA0B,CACpC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CACvB,CAA8C,EAC9C,CAA8C;QAE9C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAA2B,IAAI,CAAC,YAAY,CACvD,CAAC,CAAC,eAAe,CAClB,CAAC;QACF,MAAM,OAAO,GAA2B,IAAI,CAAC,YAAY,CACvD,CAAC,CAAC,eAAe,CAClB,CAAC;QAEF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;QAC9B,CAAC;QAED,OAAO,CACL,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;YAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,OAAO,CACnB,cAAiD;QAEjD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,SAAS,GAAY,KAAK,CAAC;QAE/B,IAAI,cAAc,GAChB,cAAc,CAAC,cAAc,IAAI,IAAI,CAAC;QAExC,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,YAAY,GAA2B,IAAI,CAAC,YAAY,CAC5D,cAAc,CAAC,eAAe,CAC/B,CAAC;YAEF,IAAI,YAAY,IAAI,YAAY,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;gBACpE,cAAc,mCACT,cAAc,KACjB,eAAe,EAAE,YAAY,GAC9B,CAAC;gBACF,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,GACP,cAAc,CAAC,cAAc,IAAI,IAAI,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GAAkB,IAAI,CAAC,kBAAkB,CACtD,cAAc,CAAC,aAAa,CAC7B,CAAC;YAEF,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,MAAM,GAA2B,IAAI,CAAC,YAAY,CACrD,KAAoB,CAAC,SAAS,CAAC,CACjC,CAAC;gBAEF,IAAI,MAAM,IAAI,MAAM,KAAM,KAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1D,KAAK,GAAG,gCACF,KAAoB,KACxB,CAAC,SAAS,CAAC,EAAE,MAAM,GACgB,CAAC;oBACtC,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,uCACK,cAAc,KACjB,cAAc,EAAE,KAAK,EACrB,cAAc,EAAE,cAAc,IAC9B;IACJ,CAAC;CACF"}
|