@oneuptime/common 12.0.33 → 13.0.0
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/AnalyticsModels/RumSession.ts +117 -1
- package/Models/AnalyticsModels/RumSessionChunk.ts +13 -0
- package/Models/DatabaseModels/AlertCustomField.ts +77 -3
- package/Models/DatabaseModels/ApiKeyPermission.ts +3 -27
- package/Models/DatabaseModels/GlobalConfig.ts +12 -12
- package/Models/DatabaseModels/IncidentCustomField.ts +77 -3
- package/Models/DatabaseModels/InventoryItem.ts +44 -1
- package/Models/DatabaseModels/InventoryItemCustomField.ts +77 -3
- package/Models/DatabaseModels/MonitorCustomField.ts +77 -3
- package/Models/DatabaseModels/NetworkDevice.ts +126 -0
- package/Models/DatabaseModels/OnCallDutyPolicyCustomField.ts +77 -3
- package/Models/DatabaseModels/RumApplication.ts +6 -6
- package/Models/DatabaseModels/ScheduledMaintenanceCustomField.ts +77 -3
- package/Models/DatabaseModels/StatusPageCustomField.ts +77 -3
- package/Models/DatabaseModels/TeamCustomField.ts +77 -3
- package/Models/DatabaseModels/TeamMember.ts +0 -9
- package/Models/DatabaseModels/TeamMemberCustomField.ts +77 -3
- package/Models/DatabaseModels/TeamPermission.ts +3 -24
- package/Models/DatabaseModels/TelemetryIngestionKey.ts +260 -0
- package/Models/DatabaseModels/UserTelegram.ts +0 -4
- package/Scripts/benchmark-fanin-capacity.js +181 -0
- package/Server/API/TelemetryAPI.ts +1284 -164
- package/Server/API/UserNotificationSettingAPI.ts +55 -0
- package/Server/API/UserTelegramAPI.ts +48 -4
- package/Server/EnvironmentConfig.ts +82 -18
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.ts +91 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.ts +67 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.ts +139 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.ts +121 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Infrastructure/QueueWorker.ts +20 -14
- package/Server/Infrastructure/Redis.ts +8 -8
- package/Server/Infrastructure/Semaphore.ts +2 -0
- package/Server/Infrastructure/Status.ts +10 -4
- package/Server/Middleware/TelemetryIngest.ts +453 -7
- package/Server/Services/AccessTokenService.ts +1 -0
- package/Server/Services/AlertCustomFieldService.ts +98 -0
- package/Server/Services/AlertService.ts +37 -0
- package/Server/Services/ApiKeyPermissionService.ts +461 -29
- package/Server/Services/CustomFieldMappingService.ts +879 -0
- package/Server/Services/DatabaseService.ts +65 -13
- package/Server/Services/GlobalConfigService.ts +194 -0
- package/Server/Services/IncidentCustomFieldService.ts +98 -0
- package/Server/Services/IncidentService.ts +35 -0
- package/Server/Services/InventoryItemService.ts +31 -1
- package/Server/Services/MetricService.ts +194 -0
- package/Server/Services/MonitorService.ts +32 -0
- package/Server/Services/MonitorTemplateService.ts +140 -19
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +427 -66
- package/Server/Services/NetworkDeviceDiscoveryScanService.ts +87 -2
- package/Server/Services/NetworkDeviceService.ts +69 -0
- package/Server/Services/ProjectService.ts +22 -0
- package/Server/Services/RoutineEmailSettingsService.ts +73 -0
- package/Server/Services/RumSessionReplayViewService.ts +104 -24
- package/Server/Services/ScheduledMaintenanceCustomFieldService.ts +98 -0
- package/Server/Services/ScheduledMaintenanceService.ts +32 -0
- package/Server/Services/TeamMemberService.ts +78 -0
- package/Server/Services/TeamPermissionService.ts +235 -3
- package/Server/Services/TelemetryIngestionKeyService.ts +722 -19
- package/Server/Services/UserNotificationRuleService.ts +76 -25
- package/Server/Services/UserNotificationSettingService.ts +34 -6
- package/Server/Services/UserTelegramService.ts +326 -5
- package/Server/Types/Database/Permissions/ReadPermission.ts +45 -5
- package/Server/Types/Database/QueryHelper.ts +2 -0
- package/Server/Types/Database/QueryUtil.ts +56 -0
- package/Server/Types/Markdown.ts +93 -1
- package/Server/Utils/APIKey/AccessPermission.ts +5 -2
- package/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.ts +54 -0
- package/Server/Utils/CustomField/CustomFieldMappingRegistry.ts +415 -0
- package/Server/Utils/CustomField/CustomFieldMappingValidator.ts +335 -0
- package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +82 -17
- package/Server/Utils/DataSource/EgressGuard.ts +177 -8
- package/Server/Utils/EmailRollup/EmailRollupConstants.ts +38 -5
- package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +67 -5
- package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +2 -2
- package/Server/Utils/FrontendEnvironment.ts +40 -0
- package/Server/Utils/LogRedaction.ts +20 -0
- package/Server/Utils/Logger.ts +11 -0
- package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +394 -86
- package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +30 -4
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +31 -5
- package/Server/Utils/Monitor/MonitorAlert.ts +29 -6
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +312 -52
- package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +82 -9
- package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +16 -7
- package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +29 -17
- package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +107 -48
- package/Server/Utils/Monitor/MonitorIncident.ts +22 -6
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +29 -0
- package/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.ts +158 -0
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +27 -0
- package/Server/Utils/Monitor/SeriesContextEnricher.ts +304 -0
- package/Server/Utils/SSRFProtection.ts +217 -10
- package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +239 -138
- package/Server/Utils/SessionReplay/SessionReplayHealthCounters.ts +305 -0
- package/Server/Utils/SessionReplay/SessionReplayReadService.ts +1430 -289
- package/Server/Utils/StartServer.ts +2 -17
- package/Server/Utils/TelegramVerificationToken.ts +185 -0
- package/Server/Utils/Telemetry/EntityRegistry.ts +11 -1
- package/Server/Utils/Telemetry/PinServiceName.ts +197 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +83 -9
- package/Server/Utils/Telemetry/TelemetryFanInWriter.ts +38 -16
- package/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.ts +92 -0
- package/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.ts +217 -0
- package/Server/Utils/VM/VMAPI.ts +1 -0
- package/Server/Utils/VM/VMRunner.ts +975 -95
- package/Tests/App/AdminDashboard/AdminHeaderSmallScreens.test.tsx +202 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +32 -0
- package/Tests/App/Dashboard/AdoptedDeviceDrawer.test.tsx +374 -0
- package/Tests/App/Dashboard/DashboardHeaderSmallScreens.test.tsx +404 -0
- package/Tests/App/Dashboard/DashboardLabelVariables.test.tsx +580 -0
- package/Tests/App/Dashboard/DashboardMonitorLabelVariable.test.tsx +438 -0
- package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +5 -2
- package/Tests/App/Dashboard/DeviceAttachmentCard.test.tsx +273 -0
- package/Tests/App/Dashboard/DiscoveryReviewInventoryRefresh.test.tsx +505 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +468 -0
- package/Tests/App/Dashboard/EntityDetailPanel.test.tsx +163 -0
- package/Tests/App/Dashboard/InfrastructureExplorer.test.tsx +401 -0
- package/Tests/App/Dashboard/InfrastructureGraph.test.tsx +232 -0
- package/Tests/App/Dashboard/InventoryItems.test.tsx +201 -0
- package/Tests/App/Dashboard/InventoryTypeAndStatusFacets.test.tsx +798 -0
- package/Tests/App/Dashboard/NetworkTopologyLiveView.test.tsx +320 -0
- package/Tests/App/Dashboard/NetworkTopologyToolbar.test.tsx +275 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedEmptyState.test.tsx +975 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +63 -0
- package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +626 -0
- package/Tests/App/Dashboard/TopologyDataLoading.test.tsx +348 -0
- package/Tests/App/Dashboard/TopologyPageNavigation.test.tsx +331 -0
- package/Tests/App/Dashboard/UserSettingsEmailPreferences.test.tsx +603 -0
- package/Tests/App/Dashboard/UserSettingsNotificationSettings.test.tsx +324 -0
- package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +13 -4
- package/Tests/App/StatusPage/StatusPageLastUpdated.test.tsx +263 -0
- package/Tests/App/StatusPage/StatusPageOidcOrigin.test.tsx +223 -0
- package/Tests/App/StatusPage/StatusPageOverviewLiveAndSearch.test.tsx +753 -0
- package/Tests/App/StatusPage/StatusPageResourceSearchBox.test.tsx +224 -0
- package/Tests/Models/AnalyticsModels/RumSessionReplayColumns.test.ts +262 -0
- package/Tests/Models/CustomFieldMappingColumns.test.ts +166 -0
- package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +20 -6
- package/Tests/Models/InventoryItemStatus.test.ts +147 -0
- package/Tests/Models/NetworkDeviceMacAddressColumn.test.ts +294 -0
- package/Tests/ResponsiveVisibility.test.ts +115 -0
- package/Tests/ResponsiveVisibility.ts +183 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +129 -0
- package/Tests/Server/API/SessionReplayAPI.test.ts +1940 -216
- package/Tests/Server/API/UserNotificationSettingAPI.test.ts +186 -0
- package/Tests/Server/API/UserTelegramAPISecurity.test.ts +231 -0
- package/Tests/Server/EnvironmentConfigFrontendSecurity.test.ts +234 -0
- package/Tests/Server/EnvironmentConfigValkey.test.ts +227 -0
- package/Tests/Server/Infrastructure/Postgres/AddMacAddressToNetworkDeviceMigration.test.ts +365 -0
- package/Tests/Server/Infrastructure/Postgres/CustomFieldValueMappingMigration.test.ts +241 -0
- package/Tests/Server/Infrastructure/Postgres/InventoryItemArchiveMigration.test.ts +41 -0
- package/Tests/Server/Infrastructure/Postgres/SessionReplayRecordEverySessionByDefaultMigration.test.ts +169 -0
- package/Tests/Server/Infrastructure/QueueWorkerTimeout.test.ts +210 -0
- package/Tests/Server/Infrastructure/TelemetryExporterDeploymentConfig.test.ts +130 -0
- package/Tests/Server/Infrastructure/ValkeyDeploymentConfig.test.ts +265 -0
- package/Tests/Server/Middleware/HttpMetricsMiddleware.test.ts +382 -0
- package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +4 -1
- package/Tests/Server/Middleware/SCIMAuthorization.test.ts +525 -0
- package/Tests/Server/Middleware/TelemetryIngestBrowserKey.test.ts +1163 -0
- package/Tests/Server/Middleware/TelemetryIngestTokenLog.test.ts +5 -3
- package/Tests/Server/Services/AddTelemetryIngestionKeyTypeMigration.test.ts +555 -0
- package/Tests/Server/Services/ApiKeyPermissionSecurity.test.ts +678 -0
- package/Tests/Server/Services/ApiKeyPermissionService.test.ts +276 -28
- package/Tests/Server/Services/CustomFieldDropdownOptionsColumnWidth.test.ts +431 -0
- package/Tests/Server/Services/CustomFieldMappingService.test.ts +850 -0
- package/Tests/Server/Services/DatabaseServiceAggregateBy.test.ts +291 -56
- package/Tests/Server/Services/DatabaseServiceSortTiebreaker.test.ts +151 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +32 -0
- package/Tests/Server/Services/GlobalConfigService.test.ts +414 -1
- package/Tests/Server/Services/InventoryItemManualCreate.test.ts +105 -0
- package/Tests/Server/Services/InventoryItemPromotionGate.test.ts +178 -0
- package/Tests/Server/Services/MetricRawEntityKeyPrune.test.ts +592 -0
- package/Tests/Server/Services/MonitorTemplateServiceCustomFieldSync.test.ts +502 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +1351 -74
- package/Tests/Server/Services/NetworkDeviceDiscoveryScanRegistration.test.ts +520 -0
- package/Tests/Server/Services/NetworkDeviceMacAddressNormalization.test.ts +572 -0
- package/Tests/Server/Services/RoutineEmailSettingsPostgres.test.ts +329 -0
- package/Tests/Server/Services/RumSessionReplayViewService.test.ts +267 -0
- package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +9 -0
- package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +9 -0
- package/Tests/Server/Services/TeamPrivilegeEscalation.test.ts +834 -0
- package/Tests/Server/Services/TelemetryIngestionKeyPolicyResolution.test.ts +814 -0
- package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +998 -0
- package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +141 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +18 -10
- package/Tests/Server/Services/UserTelegramVerificationSecurity.test.ts +688 -0
- package/Tests/Server/Types/Database/InventoryStatusPostgres.test.ts +368 -0
- package/Tests/Server/Types/Database/Permissions/ReadBlockPermission.test.ts +261 -14
- package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroups.test.ts +169 -0
- package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroupsPostgres.test.ts +297 -0
- package/Tests/Server/Types/Markdown.test.ts +194 -1
- package/Tests/Server/Types/Workflow/Components/IncomingWebhookUtils.test.ts +279 -0
- package/Tests/Server/Types/Workflow/Components/TextToJson.test.ts +212 -0
- package/Tests/Server/Utils/AI/SRE/Insights/FixRouting.test.ts +497 -0
- package/Tests/Server/Utils/AI/Toolbox/Serializer.test.ts +383 -0
- package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +7 -3
- package/Tests/Server/Utils/AnalyticsDatabase/ClusterConfig.test.ts +315 -0
- package/Tests/Server/Utils/CustomField/CustomFieldMappingRegistry.test.ts +436 -0
- package/Tests/Server/Utils/CustomField/CustomFieldMappingValidator.test.ts +437 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +214 -0
- package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +300 -11
- package/Tests/Server/Utils/EmailRollup/EmailRollupBurstWindow.test.ts +83 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +2 -2
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerPreferences.test.ts +362 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +10 -3
- package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +77 -1
- package/Tests/Server/Utils/EventLoop.test.ts +359 -0
- package/Tests/Server/Utils/FrontendEnvironment.test.ts +190 -0
- package/Tests/Server/Utils/JsonWebToken.test.ts +30 -0
- package/Tests/Server/Utils/LogRedaction.test.ts +26 -0
- package/Tests/Server/Utils/LoggerCredentialLeak.test.ts +23 -9
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteria.test.ts +242 -0
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +590 -0
- package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +29 -0
- package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestHeaderCriteria.test.ts +236 -0
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +30 -6
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +246 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEmailEvalLogAgreement.test.ts +280 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +659 -8
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorMetricUnits.test.ts +570 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaExpectationBuilderUnits.test.ts +30 -5
- package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageBuilderUnits.test.ts +68 -21
- package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +36 -19
- package/Tests/Server/Utils/Monitor/MonitorTemplateUtilSeriesContext.test.ts +176 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.test.ts +573 -0
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +317 -0
- package/Tests/Server/Utils/Monitor/SeriesContextEnricher.test.ts +356 -0
- package/Tests/Server/Utils/SSRFProtectionCloudServiceAddresses.test.ts +595 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +198 -1
- package/Tests/Server/Utils/SessionReplay/SessionReplayHealthCounters.test.ts +453 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayReadServiceQueries.test.ts +1378 -0
- package/Tests/Server/Utils/SessionReplayOriginAllowListRefactor.test.ts +420 -0
- package/Tests/Server/Utils/TelegramVerificationToken.test.ts +253 -0
- package/Tests/Server/Utils/Telemetry/ContextSpanProcessor.test.ts +281 -0
- package/Tests/Server/Utils/Telemetry/InventoryDuplicateIdentity.test.ts +316 -0
- package/Tests/Server/Utils/Telemetry/PinServiceName.test.ts +666 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +111 -8
- package/Tests/Server/Utils/Telemetry/TelemetryFanInWriterCapacity.test.ts +458 -0
- package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.test.ts +424 -0
- package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.test.ts +528 -0
- package/Tests/Server/Utils/TelemetryExporterEnvironment.test.ts +56 -0
- package/Tests/Server/Utils/VM/VMRunnerHostBridgeLatency.test.ts +74 -0
- package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +100 -7
- package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +1176 -6
- package/Tests/Types/CustomField/CustomFieldMappingCatalog.test.ts +220 -0
- package/Tests/Types/CustomField/CustomFieldValueMapping.test.ts +348 -0
- package/Tests/Types/Database/IncludesAnyOfGroups.test.ts +106 -0
- package/Tests/Types/JSONFunctions.test.ts +300 -0
- package/Tests/Types/Monitor/CephAlertTemplates.test.ts +422 -53
- package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +495 -15
- package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +191 -45
- package/Tests/Types/Monitor/HostAlertTemplates.test.ts +370 -42
- package/Tests/Types/Monitor/IotAlertTemplates.test.ts +375 -20
- package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +636 -42
- package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +189 -0
- package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +95 -14
- package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +190 -21
- package/Tests/Types/Monitor/ProxmoxAlertTemplates.test.ts +352 -22
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationAlertDebuggability.test.ts +363 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +93 -18
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +259 -0
- package/Tests/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.test.ts +476 -0
- package/Tests/Types/Monitor/RumAlertTemplates.test.ts +136 -0
- package/Tests/Types/Monitor/SeriesContext/SeriesDebugHints.test.ts +661 -0
- package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +507 -0
- package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +270 -0
- package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +38 -10
- package/Tests/Types/Monitor/Utils/RecommendationCriteriaAssertions.ts +102 -0
- package/Tests/Types/NetworkAutomation/AutoImportRunMerge.test.ts +235 -0
- package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +66 -0
- package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +309 -1
- package/Tests/Types/NotificationSetting/RoutineEmailEvents.test.ts +47 -0
- package/Tests/Types/Rum/SessionReplayApiContracts.test.ts +608 -0
- package/Tests/Types/Rum/SessionReplayCustomEvents.test.ts +434 -0
- package/Tests/Types/Telemetry/InventoryLiveness.test.ts +99 -0
- package/Tests/Types/WebsiteRequest.test.ts +285 -3
- package/Tests/UI/Components/Charts/ChartBucketIdentity.test.ts +16 -3
- package/Tests/UI/Components/Charts/ChartTrailingBucketGap.test.ts +691 -0
- package/Tests/UI/Components/ComponentsModal.test.tsx +12 -4
- package/Tests/UI/Components/ComponentsModalUsability.test.tsx +518 -0
- package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +160 -0
- package/Tests/UI/Components/CustomFields/CustomFieldsDetailMapping.test.tsx +324 -0
- package/Tests/UI/Components/CustomFields/MapFromCustomFieldInput.test.tsx +176 -0
- package/Tests/UI/Components/Graphs/DayUptimeGraph.test.tsx +484 -0
- package/Tests/UI/Components/HeaderRightRail.test.tsx +157 -0
- package/Tests/UI/Components/IconDropdownItem.test.tsx +102 -0
- package/Tests/UI/Components/JSONTablePrototypePollution.test.tsx +117 -0
- package/Tests/UI/Components/KeyboardShortcutsModal.test.tsx +214 -0
- package/Tests/UI/Components/ModelTable/ModelTableWrapContent.test.tsx +561 -0
- package/Tests/UI/Components/MonitorGraphs/UptimeBarDayModal.test.tsx +302 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +28 -12
- package/Tests/UI/Components/ShortcutDialogGuard.test.tsx +74 -0
- package/Tests/UI/Components/StatusPage/ResourceGroupSectionAutoExpand.test.tsx +248 -0
- package/Tests/UI/Components/TableCellWrapping.test.tsx +625 -0
- package/Tests/UI/Components/TableLoadingStates.test.tsx +205 -0
- package/Tests/UI/Components/Workflow/NodePlacement.test.ts +148 -0
- package/Tests/UI/Components/Workflow/Workflow.test.tsx +981 -0
- package/Tests/UI/ConfigBrowserTelemetry.test.ts +70 -0
- package/Tests/UI/ReactRouterSingletonBuild.test.ts +133 -0
- package/Tests/UI/Rum/ChunkLoader.test.ts +1036 -2
- package/Tests/UI/Rum/FidelityNotices.test.ts +187 -0
- package/Tests/UI/Rum/InactivityMap.test.ts +341 -0
- package/Tests/UI/Rum/PrivacySummaryCard.test.tsx +259 -0
- package/Tests/UI/Rum/RecordingHealthCard.test.tsx +855 -0
- package/Tests/UI/Rum/RecordingHealthStrip.test.tsx +594 -0
- package/Tests/UI/Rum/ReplayCard.test.tsx +451 -0
- package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +536 -0
- package/Tests/UI/Rum/ReplayEngine.test.ts +2503 -0
- package/Tests/UI/Rum/ReplayEngineTypes.test.ts +171 -0
- package/Tests/UI/Rum/ReplayHeader.test.tsx +719 -0
- package/Tests/UI/Rum/ReplayLink.test.tsx +119 -0
- package/Tests/UI/Rum/ReplayPinControl.test.tsx +408 -0
- package/Tests/UI/Rum/ReplayPlaybackIntent.test.ts +152 -0
- package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +514 -0
- package/Tests/UI/Rum/ReplayRail.test.tsx +1296 -0
- package/Tests/UI/Rum/ReplayRailDetail.test.tsx +900 -0
- package/Tests/UI/Rum/ReplayScrubber.test.tsx +763 -147
- package/Tests/UI/Rum/ReplaySignalTypes.test.ts +189 -0
- package/Tests/UI/Rum/ReplaySignals.test.ts +1579 -0
- package/Tests/UI/Rum/ReplayStage.test.tsx +396 -473
- package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +918 -0
- package/Tests/UI/Rum/ReplayTimeFormat.test.ts +94 -0
- package/Tests/UI/Rum/ReplayTimeline.test.tsx +696 -0
- package/Tests/UI/Rum/ReplayUi.test.tsx +559 -0
- package/Tests/UI/Rum/SessionReplayEmptyState.test.tsx +499 -0
- package/Tests/UI/Rum/SessionReplaySearchBar.test.tsx +346 -0
- package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +545 -0
- package/Tests/UI/Rum/SessionReplayTable.test.tsx +991 -0
- package/Tests/UI/Rum/TargetedCapturePanel.test.tsx +254 -0
- package/Tests/UI/Telemetry/BrowserExporterIsolation.test.ts +71 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +5 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +1 -0
- package/Tests/UI/Utils/GlobalKeyboardShortcut.test.ts +344 -0
- package/Tests/Utils/API.test.ts +308 -0
- package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +11 -1
- package/Tests/Utils/Dashboard/LabelVariable.test.ts +257 -0
- package/Tests/Utils/Dashboard/VariableUrlState.test.ts +144 -14
- package/Tests/Utils/HTTPResponseBodyReader.test.ts +323 -0
- package/Tests/Utils/MetricUnitUtil.test.ts +81 -0
- package/Tests/Utils/Monitor/DeviceMacLearningUtil.test.ts +497 -0
- package/Tests/Utils/Monitor/MetricValueFormatter.test.ts +546 -0
- package/Tests/Utils/Monitor/MonitorTemplateCustomFieldUtil.test.ts +218 -0
- package/Tests/Utils/Monitor/NetworkTopologyEndpointAdoption.test.ts +1755 -0
- package/Tests/Utils/NetworkAutomation/AutoImportRunChain.test.ts +320 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveryScanStatus.test.ts +117 -0
- package/Tests/Utils/Rum/ChunkMath.test.ts +83 -0
- package/Tests/Utils/Rum/SessionReplayHealthDiagnosis.test.ts +993 -0
- package/Tests/Utils/Rum/SessionReplayStringMap.test.ts +245 -0
- package/Tests/Utils/StatusPage/ResourceSearch.test.ts +631 -0
- package/Tests/Utils/Telemetry/OriginAllowList.test.ts +633 -0
- package/Tests/Utils/Uptime/DayUptimeGraphUtil.test.ts +461 -0
- package/Tests/Utils/ValueFormatter.test.ts +148 -0
- package/Types/BaseDatabase/IncludesAnyOfGroups.ts +77 -0
- package/Types/CustomField/CustomFieldMappingCatalog.ts +161 -0
- package/Types/CustomField/CustomFieldMappingSourceResource.ts +19 -0
- package/Types/CustomField/CustomFieldValueMapping.ts +288 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardMonitorListComponent.ts +1 -0
- package/Types/Dashboard/DashboardVariable.ts +8 -0
- package/Types/Icon/IconProp.ts +1 -0
- package/Types/JSON.ts +4 -0
- package/Types/JSONFunctions.ts +205 -43
- package/Types/Monitor/CephAlertTemplates.ts +157 -195
- package/Types/Monitor/DockerAlertTemplates.ts +338 -128
- package/Types/Monitor/DockerSwarmAlertTemplates.ts +95 -112
- package/Types/Monitor/HostAlertTemplates.ts +302 -130
- package/Types/Monitor/IotAlertTemplates.ts +112 -104
- package/Types/Monitor/KubernetesAlertTemplates.ts +415 -224
- package/Types/Monitor/KubernetesMetricCatalog.ts +23 -19
- package/Types/Monitor/PodmanAlertTemplates.ts +116 -163
- package/Types/Monitor/ProxmoxAlertTemplates.ts +217 -99
- package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +98 -6
- package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +44 -7
- package/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.ts +383 -0
- package/Types/Monitor/RumAlertTemplates.ts +46 -7
- package/Types/Monitor/SeriesContext/SeriesDebugHints.ts +596 -0
- package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +554 -0
- package/Types/Monitor/ServiceAlertTemplates.ts +98 -11
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +13 -0
- package/Types/Monitor/UptimeHistoryLabels.ts +56 -0
- package/Types/NetworkAutomation/RuleRunResult.ts +402 -13
- package/Types/NotificationSetting/RoutineEmailEvents.ts +30 -0
- package/Types/Rum/SessionReplay.ts +209 -0
- package/Types/Rum/SessionReplayApi.ts +722 -0
- package/Types/Rum/SessionReplayCaptureTrigger.ts +21 -12
- package/Types/Rum/SessionReplayConsentMode.ts +11 -7
- package/Types/Rum/SessionReplayCustomEvents.ts +549 -0
- package/Types/Rum/SessionReplayHealth.ts +238 -0
- package/Types/SerializableObjectDictionary.ts +4 -0
- package/Types/Telemetry/InventoryLiveness.ts +56 -0
- package/Types/Telemetry/TelemetryIngestSurface.ts +95 -0
- package/Types/Telemetry/TelemetryIngestionKeyPolicy.ts +75 -0
- package/Types/Telemetry/TelemetryIngestionKeyType.ts +29 -0
- package/Types/WebsiteRequest.ts +85 -3
- package/UI/Components/CSVFileUpload/CSVFileUpload.tsx +9 -2
- package/UI/Components/Charts/Area/AreaChart.tsx +13 -2
- package/UI/Components/Charts/Bar/BarChart.tsx +6 -2
- package/UI/Components/Charts/Line/LineChart.tsx +13 -2
- package/UI/Components/Charts/Types/XAxis/XAxis.ts +29 -0
- package/UI/Components/Charts/Utils/DataPoint.ts +22 -3
- package/UI/Components/Charts/Utils/TimeAnnotation.ts +76 -9
- package/UI/Components/Charts/Utils/XAxis.ts +217 -0
- package/UI/Components/CustomFields/CustomFieldsDetail.tsx +189 -46
- package/UI/Components/CustomFields/MapFromCustomFieldInput.tsx +216 -0
- package/UI/Components/Dashboard/DashboardVariableControl.tsx +285 -0
- package/UI/Components/Graphs/DayUptimeGraph.tsx +173 -8
- package/UI/Components/Graphs/UptimeBarTooltip.tsx +22 -278
- package/UI/Components/Graphs/UptimeDaySummary.tsx +327 -0
- package/UI/Components/Header/Header.tsx +25 -9
- package/UI/Components/Header/IconDropdown/IconDropdownItem.tsx +10 -1
- package/UI/Components/Header/IconDropdown/IconDropdownMenu.tsx +6 -1
- package/UI/Components/Header/ProjectPicker/ProjectPicker.tsx +6 -1
- package/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.tsx +6 -1
- package/UI/Components/Icon/Icon.tsx +11 -0
- package/UI/Components/JSONTable/JSONTable.tsx +2 -2
- package/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.tsx +125 -0
- package/UI/Components/KeyboardShortcut/Screenshots/README.md +19 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-command-palette.png +0 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog-dark.png +0 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog.png +0 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-help-menu.png +0 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-narrow.png +0 -0
- package/UI/Components/ModelTable/Column.ts +15 -0
- package/UI/Components/Monitor/SeriesDebugCommandsViewer.tsx +64 -0
- package/UI/Components/Monitor/SeriesLabelsViewer.tsx +93 -0
- package/UI/Components/MonitorGraphs/Uptime.tsx +14 -2
- package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +63 -10
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
- package/UI/Components/StatusPage/ResourceGroupSection.tsx +40 -0
- package/UI/Components/Table/CellClassName.ts +81 -0
- package/UI/Components/Table/TableRow.tsx +20 -14
- package/UI/Components/Table/TableSkeletonRows.tsx +9 -9
- package/UI/Components/Table/Types/Column.ts +36 -0
- package/UI/Components/Tooltip/Tooltip.tsx +11 -1
- package/UI/Components/Workflow/ComponentsModal.tsx +60 -39
- package/UI/Components/Workflow/NodePlacement.ts +57 -0
- package/UI/Components/Workflow/Workflow.tsx +47 -18
- package/UI/Config.ts +15 -33
- package/UI/Utils/GlobalKeyboardShortcut.ts +208 -0
- package/UI/Utils/Telemetry/BrowserTelemetryConfig.ts +28 -0
- package/UI/Utils/Telemetry/Telemetry.ts +10 -8
- package/UI/esbuild-config.js +6 -0
- package/Utils/API.ts +129 -3
- package/Utils/Dashboard/Components/DashboardMonitorListComponent.ts +12 -1
- package/Utils/Dashboard/LabelVariable.ts +152 -0
- package/Utils/Dashboard/VariableUrlState.ts +27 -5
- package/Utils/HTTPResponseBodyReader.ts +221 -0
- package/Utils/MetricUnitUtil.ts +34 -0
- package/Utils/Monitor/DeviceMacLearningUtil.ts +177 -0
- package/Utils/Monitor/MetricValueFormatter.ts +342 -0
- package/Utils/Monitor/MonitorTemplateCustomFieldUtil.ts +124 -0
- package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +7 -2
- package/Utils/Monitor/NetworkTopologyUtil.ts +693 -0
- package/Utils/NetworkAutomation/AutoImportRunChain.ts +138 -0
- package/Utils/NetworkDiscovery/DiscoveryScanStatus.ts +77 -0
- package/Utils/Rum/ChunkMath.ts +106 -0
- package/Utils/Rum/SessionReplayHealth.ts +732 -0
- package/Utils/Rum/SessionReplayStringMap.ts +226 -0
- package/Utils/Schema/ModelSchema.ts +1 -0
- package/Utils/StatusPage/ResourceSearch.ts +290 -0
- package/Utils/Telemetry/OriginAllowList.ts +355 -0
- package/Utils/Uptime/DayUptimeGraphUtil.ts +205 -0
- package/Utils/ValueFormatter.ts +35 -1
- package/build/dist/Models/AnalyticsModels/RumSession.js +102 -19
- package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/RumSessionChunk.js +11 -9
- package/build/dist/Models/AnalyticsModels/RumSessionChunk.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ApiKeyPermission.js +3 -27
- package/build/dist/Models/DatabaseModels/ApiKeyPermission.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalConfig.js +12 -12
- package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/InventoryItem.js +34 -1
- package/build/dist/Models/DatabaseModels/InventoryItem.js.map +1 -1
- package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/MonitorCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +128 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js +6 -6
- package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/StatusPageCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/TeamCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamMember.js +0 -9
- package/build/dist/Models/DatabaseModels/TeamMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamPermission.js +3 -24
- package/build/dist/Models/DatabaseModels/TeamPermission.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js +267 -0
- package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserTelegram.js +0 -4
- package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +769 -109
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/UserNotificationSettingAPI.js +35 -0
- package/build/dist/Server/API/UserNotificationSettingAPI.js.map +1 -0
- package/build/dist/Server/API/UserTelegramAPI.js +28 -6
- package/build/dist/Server/API/UserTelegramAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +73 -14
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js +53 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js +82 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js +46 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.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/Infrastructure/QueueWorker.js +19 -7
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Infrastructure/Redis.js +8 -8
- package/build/dist/Server/Infrastructure/Redis.js.map +1 -1
- package/build/dist/Server/Infrastructure/Semaphore.js +1 -0
- package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
- package/build/dist/Server/Infrastructure/Status.js +10 -4
- package/build/dist/Server/Infrastructure/Status.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +315 -8
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AccessTokenService.js +1 -0
- package/build/dist/Server/Services/AccessTokenService.js.map +1 -1
- package/build/dist/Server/Services/AlertCustomFieldService.js +93 -0
- package/build/dist/Server/Services/AlertCustomFieldService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +34 -0
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/ApiKeyPermissionService.js +331 -28
- package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
- package/build/dist/Server/Services/CustomFieldMappingService.js +614 -0
- package/build/dist/Server/Services/CustomFieldMappingService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseService.js +58 -13
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/GlobalConfigService.js +133 -0
- package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
- package/build/dist/Server/Services/IncidentCustomFieldService.js +93 -0
- package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +32 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/InventoryItemService.js +28 -1
- package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
- package/build/dist/Server/Services/MetricService.js +163 -0
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +29 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +116 -17
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +349 -64
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +65 -0
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +54 -0
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +22 -0
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/RoutineEmailSettingsService.js +69 -0
- package/build/dist/Server/Services/RoutineEmailSettingsService.js.map +1 -0
- package/build/dist/Server/Services/RumSessionReplayViewService.js +86 -24
- package/build/dist/Server/Services/RumSessionReplayViewService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js +93 -0
- package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +29 -0
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +62 -2
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TeamPermissionService.js +166 -3
- package/build/dist/Server/Services/TeamPermissionService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js +562 -18
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationRuleService.js +60 -25
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +26 -6
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserTelegramService.js +257 -4
- package/build/dist/Server/Services/UserTelegramService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/ReadPermission.js +29 -4
- package/build/dist/Server/Types/Database/Permissions/ReadPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryUtil.js +36 -0
- package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
- package/build/dist/Server/Types/Markdown.js +75 -0
- package/build/dist/Server/Types/Markdown.js.map +1 -1
- package/build/dist/Server/Utils/APIKey/AccessPermission.js +2 -2
- package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
- package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js +27 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js.map +1 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js +226 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js.map +1 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js +189 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js.map +1 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +53 -18
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
- package/build/dist/Server/Utils/DataSource/EgressGuard.js +121 -7
- package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +38 -5
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +54 -3
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +2 -2
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -1
- package/build/dist/Server/Utils/FrontendEnvironment.js +33 -0
- package/build/dist/Server/Utils/FrontendEnvironment.js.map +1 -0
- package/build/dist/Server/Utils/LogRedaction.js +20 -0
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
- package/build/dist/Server/Utils/Logger.js +10 -0
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +323 -81
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +20 -4
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +29 -5
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +29 -6
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +254 -48
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +58 -9
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +9 -3
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +26 -12
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +74 -33
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +22 -6
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +22 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js +114 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +25 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js +237 -0
- package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js.map +1 -0
- package/build/dist/Server/Utils/SSRFProtection.js +136 -9
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +174 -89
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -1
- package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js +223 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +945 -164
- package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +3 -14
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/TelegramVerificationToken.js +129 -0
- package/build/dist/Server/Utils/TelegramVerificationToken.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +9 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/PinServiceName.js +163 -0
- package/build/dist/Server/Utils/Telemetry/PinServiceName.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +70 -13
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js +28 -15
- package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js +64 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js +171 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js.map +1 -0
- package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
- package/build/dist/Server/Utils/VM/VMRunner.js +780 -69
- package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
- package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js +54 -0
- package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js.map +1 -0
- package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js +60 -0
- package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js.map +1 -0
- package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js +20 -0
- package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js.map +1 -0
- package/build/dist/Types/CustomField/CustomFieldValueMapping.js +141 -0
- package/build/dist/Types/CustomField/CustomFieldValueMapping.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardVariable.js +1 -0
- package/build/dist/Types/Dashboard/DashboardVariable.js.map +1 -1
- package/build/dist/Types/Icon/IconProp.js +1 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/JSON.js +1 -0
- package/build/dist/Types/JSON.js.map +1 -1
- package/build/dist/Types/JSONFunctions.js +131 -37
- package/build/dist/Types/JSONFunctions.js.map +1 -1
- package/build/dist/Types/Monitor/CephAlertTemplates.js +130 -171
- package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/DockerAlertTemplates.js +286 -121
- package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +84 -105
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/HostAlertTemplates.js +250 -122
- package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/IotAlertTemplates.js +81 -81
- package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +375 -215
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +19 -19
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js +104 -153
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +156 -91
- package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +67 -6
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +38 -7
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js +261 -0
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js.map +1 -0
- package/build/dist/Types/Monitor/RumAlertTemplates.js +46 -7
- package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js +422 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js.map +1 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +441 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -0
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js +79 -15
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/UptimeHistoryLabels.js +17 -0
- package/build/dist/Types/Monitor/UptimeHistoryLabels.js.map +1 -0
- package/build/dist/Types/NetworkAutomation/RuleRunResult.js +291 -6
- package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
- package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js +29 -0
- package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplay.js +117 -0
- package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplayApi.js +181 -0
- package/build/dist/Types/Rum/SessionReplayApi.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js +21 -12
- package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplayConsentMode.js +11 -7
- package/build/dist/Types/Rum/SessionReplayConsentMode.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplayCustomEvents.js +172 -0
- package/build/dist/Types/Rum/SessionReplayCustomEvents.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplayHealth.js +37 -0
- package/build/dist/Types/Rum/SessionReplayHealth.js.map +1 -0
- package/build/dist/Types/SerializableObjectDictionary.js +4 -0
- package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
- package/build/dist/Types/Telemetry/InventoryLiveness.js +37 -0
- package/build/dist/Types/Telemetry/InventoryLiveness.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetryIngestSurface.js +85 -0
- package/build/dist/Types/Telemetry/TelemetryIngestSurface.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js +15 -0
- package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js +30 -0
- package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js.map +1 -0
- package/build/dist/Types/WebsiteRequest.js +55 -3
- package/build/dist/Types/WebsiteRequest.js.map +1 -1
- package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js +7 -0
- package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js.map +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +13 -2
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +6 -2
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js +13 -2
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Types/XAxis/XAxis.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js +15 -3
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +40 -9
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/XAxis.js +186 -0
- package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +89 -8
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js +118 -0
- package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js.map +1 -0
- package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js +137 -0
- package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js.map +1 -0
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +112 -7
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
- package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +5 -162
- package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
- package/build/dist/UI/Components/Graphs/UptimeDaySummary.js +181 -0
- package/build/dist/UI/Components/Graphs/UptimeDaySummary.js.map +1 -0
- package/build/dist/UI/Components/Header/Header.js +2 -3
- package/build/dist/UI/Components/Header/Header.js.map +1 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js +2 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js.map +1 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js +7 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js.map +1 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js +7 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js.map +1 -1
- package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js +7 -1
- package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +5 -0
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/JSONTable/JSONTable.js +2 -2
- package/build/dist/UI/Components/JSONTable/JSONTable.js.map +1 -1
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js +35 -0
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js.map +1 -0
- package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js +34 -0
- package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js.map +1 -0
- package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js +49 -0
- package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js.map +1 -0
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js +1 -1
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
- package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +32 -6
- package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +38 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js +22 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js.map +1 -1
- package/build/dist/UI/Components/Table/CellClassName.js +55 -0
- package/build/dist/UI/Components/Table/CellClassName.js.map +1 -0
- package/build/dist/UI/Components/Table/TableRow.js +16 -13
- package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
- package/build/dist/UI/Components/Table/TableSkeletonRows.js +9 -8
- package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js +25 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentsModal.js +47 -30
- package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/NodePlacement.js +37 -0
- package/build/dist/UI/Components/Workflow/NodePlacement.js.map +1 -0
- package/build/dist/UI/Components/Workflow/Workflow.js +35 -18
- package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
- package/build/dist/UI/Config.js +10 -20
- package/build/dist/UI/Config.js.map +1 -1
- package/build/dist/UI/Utils/GlobalKeyboardShortcut.js +138 -0
- package/build/dist/UI/Utils/GlobalKeyboardShortcut.js.map +1 -0
- package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js +14 -0
- package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js.map +1 -0
- package/build/dist/UI/Utils/Telemetry/Telemetry.js +7 -5
- package/build/dist/UI/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Utils/API.js +67 -5
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js +9 -1
- package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js.map +1 -1
- package/build/dist/Utils/Dashboard/LabelVariable.js +96 -0
- package/build/dist/Utils/Dashboard/LabelVariable.js.map +1 -0
- package/build/dist/Utils/Dashboard/VariableUrlState.js +19 -4
- package/build/dist/Utils/Dashboard/VariableUrlState.js.map +1 -1
- package/build/dist/Utils/HTTPResponseBodyReader.js +157 -0
- package/build/dist/Utils/HTTPResponseBodyReader.js.map +1 -0
- package/build/dist/Utils/MetricUnitUtil.js +26 -0
- package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js +112 -0
- package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/MetricValueFormatter.js +276 -0
- package/build/dist/Utils/Monitor/MetricValueFormatter.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js +101 -0
- package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +7 -2
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +484 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js +59 -0
- package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js +69 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js.map +1 -0
- package/build/dist/Utils/Rum/ChunkMath.js +76 -0
- package/build/dist/Utils/Rum/ChunkMath.js.map +1 -1
- package/build/dist/Utils/Rum/SessionReplayHealth.js +534 -0
- package/build/dist/Utils/Rum/SessionReplayHealth.js.map +1 -0
- package/build/dist/Utils/Rum/SessionReplayStringMap.js +165 -0
- package/build/dist/Utils/Rum/SessionReplayStringMap.js.map +1 -0
- package/build/dist/Utils/Schema/ModelSchema.js +1 -0
- package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
- package/build/dist/Utils/StatusPage/ResourceSearch.js +200 -0
- package/build/dist/Utils/StatusPage/ResourceSearch.js.map +1 -0
- package/build/dist/Utils/Telemetry/OriginAllowList.js +299 -0
- package/build/dist/Utils/Telemetry/OriginAllowList.js.map +1 -0
- package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js +147 -0
- package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js.map +1 -0
- package/build/dist/Utils/ValueFormatter.js +32 -1
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/jest.config.json +2 -0
- package/package.json +1 -1
- package/test-setup.sh +9 -9
- package/tsconfig.json +51 -11
|
@@ -144,6 +144,13 @@ const AreaChartElement: FunctionComponent<AreaInternalProps> = (
|
|
|
144
144
|
const formatter: (value: Date) => string = XAxisUtil.getFormatter({
|
|
145
145
|
xAxisMax: props.xAxis.options.max,
|
|
146
146
|
xAxisMin: props.xAxis.options.min,
|
|
147
|
+
/*
|
|
148
|
+
* Exemplars are placed by label with no index fallback, so they have
|
|
149
|
+
* to be formatted at the axis's own grid step — a pinned axis
|
|
150
|
+
* labelled at a different precision would put every exemplar on a
|
|
151
|
+
* category that does not exist, and they would silently vanish.
|
|
152
|
+
*/
|
|
153
|
+
precision: props.xAxis.options.precision,
|
|
147
154
|
});
|
|
148
155
|
|
|
149
156
|
return props.exemplarPoints.map((exemplar: ExemplarPoint) => {
|
|
@@ -164,8 +171,10 @@ const AreaChartElement: FunctionComponent<AreaInternalProps> = (
|
|
|
164
171
|
return TimeAnnotationUtil.formatTimeReferenceLines({
|
|
165
172
|
timeReferenceLines: props.timeReferenceLines,
|
|
166
173
|
xAxis: props.xAxis,
|
|
174
|
+
// Same series the rows were built from — keeps marker indexes aligned.
|
|
175
|
+
seriesPoints: props.data || [],
|
|
167
176
|
});
|
|
168
|
-
}, [props.timeReferenceLines, props.xAxis]);
|
|
177
|
+
}, [props.timeReferenceLines, props.xAxis, props.data]);
|
|
169
178
|
|
|
170
179
|
const formattedReferenceRegions: Array<FormattedReferenceRegion> =
|
|
171
180
|
useMemo(() => {
|
|
@@ -175,8 +184,10 @@ const AreaChartElement: FunctionComponent<AreaInternalProps> = (
|
|
|
175
184
|
return TimeAnnotationUtil.formatReferenceRegions({
|
|
176
185
|
referenceRegions: props.referenceRegions,
|
|
177
186
|
xAxis: props.xAxis,
|
|
187
|
+
// Same series the rows were built from — keeps region indexes aligned.
|
|
188
|
+
seriesPoints: props.data || [],
|
|
178
189
|
});
|
|
179
|
-
}, [props.referenceRegions, props.xAxis]);
|
|
190
|
+
}, [props.referenceRegions, props.xAxis, props.data]);
|
|
180
191
|
|
|
181
192
|
const hasNoData: boolean =
|
|
182
193
|
!props.data ||
|
|
@@ -97,8 +97,10 @@ const BarChartElement: FunctionComponent<BarInternalProps> = (
|
|
|
97
97
|
return TimeAnnotationUtil.formatTimeReferenceLines({
|
|
98
98
|
timeReferenceLines: props.timeReferenceLines,
|
|
99
99
|
xAxis: props.xAxis,
|
|
100
|
+
// Same series the rows were built from — keeps marker indexes aligned.
|
|
101
|
+
seriesPoints: props.data || [],
|
|
100
102
|
});
|
|
101
|
-
}, [props.timeReferenceLines, props.xAxis]);
|
|
103
|
+
}, [props.timeReferenceLines, props.xAxis, props.data]);
|
|
102
104
|
|
|
103
105
|
const formattedReferenceRegions: Array<FormattedReferenceRegion> =
|
|
104
106
|
useMemo(() => {
|
|
@@ -108,8 +110,10 @@ const BarChartElement: FunctionComponent<BarInternalProps> = (
|
|
|
108
110
|
return TimeAnnotationUtil.formatReferenceRegions({
|
|
109
111
|
referenceRegions: props.referenceRegions,
|
|
110
112
|
xAxis: props.xAxis,
|
|
113
|
+
// Same series the rows were built from — keeps region indexes aligned.
|
|
114
|
+
seriesPoints: props.data || [],
|
|
111
115
|
});
|
|
112
|
-
}, [props.referenceRegions, props.xAxis]);
|
|
116
|
+
}, [props.referenceRegions, props.xAxis, props.data]);
|
|
113
117
|
|
|
114
118
|
const hasNoData: boolean =
|
|
115
119
|
!props.data ||
|
|
@@ -122,6 +122,13 @@ const LineChartElement: FunctionComponent<LineInternalProps> = (
|
|
|
122
122
|
const formatter: (value: Date) => string = XAxisUtil.getFormatter({
|
|
123
123
|
xAxisMax: props.xAxis.options.max,
|
|
124
124
|
xAxisMin: props.xAxis.options.min,
|
|
125
|
+
/*
|
|
126
|
+
* Exemplars are placed by label with no index fallback, so they have
|
|
127
|
+
* to be formatted at the axis's own grid step — a pinned axis
|
|
128
|
+
* labelled at a different precision would put every exemplar on a
|
|
129
|
+
* category that does not exist, and they would silently vanish.
|
|
130
|
+
*/
|
|
131
|
+
precision: props.xAxis.options.precision,
|
|
125
132
|
});
|
|
126
133
|
|
|
127
134
|
return props.exemplarPoints.map((exemplar: ExemplarPoint) => {
|
|
@@ -142,8 +149,10 @@ const LineChartElement: FunctionComponent<LineInternalProps> = (
|
|
|
142
149
|
return TimeAnnotationUtil.formatTimeReferenceLines({
|
|
143
150
|
timeReferenceLines: props.timeReferenceLines,
|
|
144
151
|
xAxis: props.xAxis,
|
|
152
|
+
// Same series the rows were built from — keeps marker indexes aligned.
|
|
153
|
+
seriesPoints: props.data || [],
|
|
145
154
|
});
|
|
146
|
-
}, [props.timeReferenceLines, props.xAxis]);
|
|
155
|
+
}, [props.timeReferenceLines, props.xAxis, props.data]);
|
|
147
156
|
|
|
148
157
|
const formattedReferenceRegions: Array<FormattedReferenceRegion> =
|
|
149
158
|
useMemo(() => {
|
|
@@ -153,8 +162,10 @@ const LineChartElement: FunctionComponent<LineInternalProps> = (
|
|
|
153
162
|
return TimeAnnotationUtil.formatReferenceRegions({
|
|
154
163
|
referenceRegions: props.referenceRegions,
|
|
155
164
|
xAxis: props.xAxis,
|
|
165
|
+
// Same series the rows were built from — keeps region indexes aligned.
|
|
166
|
+
seriesPoints: props.data || [],
|
|
156
167
|
});
|
|
157
|
-
}, [props.referenceRegions, props.xAxis]);
|
|
168
|
+
}, [props.referenceRegions, props.xAxis, props.data]);
|
|
158
169
|
|
|
159
170
|
const hasNoData: boolean =
|
|
160
171
|
!props.data ||
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import XAxisMaxMin from "./XAxisMaxMin";
|
|
2
|
+
import XAxisPrecision from "./XAxisPrecision";
|
|
2
3
|
import XAxisType from "./XAxisType";
|
|
3
4
|
|
|
4
5
|
export enum XAxisAggregateType {
|
|
@@ -13,6 +14,34 @@ export interface XAxisOptions {
|
|
|
13
14
|
min: XAxisMaxMin;
|
|
14
15
|
max: XAxisMaxMin;
|
|
15
16
|
aggregateType: XAxisAggregateType;
|
|
17
|
+
/*
|
|
18
|
+
* Pin the grid step instead of letting XAxisUtil derive one from the
|
|
19
|
+
* window's duration.
|
|
20
|
+
*
|
|
21
|
+
* The derived ladder is a SECOND ladder: it guesses the bucket size the
|
|
22
|
+
* data was aggregated at from how long the window is. A caller that
|
|
23
|
+
* already knows the real bucket size does not have to guess, and must
|
|
24
|
+
* not — the two ladders disagree in both directions:
|
|
25
|
+
*
|
|
26
|
+
* - Finer. The derived ladder has four sub-minute tiers (<=15s / 75s /
|
|
27
|
+
* 150s / 450s) while the analytics backend's finest bucket is one
|
|
28
|
+
* minute, so every window under 7.5 minutes got a grid the data could
|
|
29
|
+
* never fill. A 5-minute metric window drew an 11-slot 30-second grid
|
|
30
|
+
* over 5 one-minute rows: every other slot empty, and the axis running
|
|
31
|
+
* a full minute past the last real point.
|
|
32
|
+
* - Coarser. Aligning a window to the bucket grid widens it slightly
|
|
33
|
+
* (the start is floored), which can tip a window sitting exactly on a
|
|
34
|
+
* tier threshold — a 3h preset, say — into the next tier. The query is
|
|
35
|
+
* still pinned to the interval derived from the RAW window, so the
|
|
36
|
+
* chart then re-averages five one-minute rows into each five-minute
|
|
37
|
+
* slot: an unweighted average of averages.
|
|
38
|
+
*
|
|
39
|
+
* Set this to the interval the DATA was actually bucketed at and each
|
|
40
|
+
* slot maps to exactly one backend bucket. Left undefined, the duration
|
|
41
|
+
* ladder applies, which is right for callers whose points are raw
|
|
42
|
+
* samples rather than server-side buckets.
|
|
43
|
+
*/
|
|
44
|
+
precision?: XAxisPrecision | undefined;
|
|
16
45
|
}
|
|
17
46
|
|
|
18
47
|
export interface XAxis {
|
|
@@ -15,6 +15,7 @@ import ChartDataPoint, {
|
|
|
15
15
|
import SeriesPoints from "../Types/SeriesPoints";
|
|
16
16
|
import { XAxis, XAxisAggregateType } from "../Types/XAxis/XAxis";
|
|
17
17
|
import XAxisMaxMin from "../Types/XAxis/XAxisMaxMin";
|
|
18
|
+
import XAxisPrecision from "../Types/XAxis/XAxisPrecision";
|
|
18
19
|
import YAxis from "../Types/YAxis/YAxis";
|
|
19
20
|
import XAxisUtil from "./XAxis";
|
|
20
21
|
|
|
@@ -31,7 +32,10 @@ export default class DataPointUtil {
|
|
|
31
32
|
xAxis: XAxis;
|
|
32
33
|
yAxis: YAxis;
|
|
33
34
|
}): Array<ChartDataPoint> {
|
|
34
|
-
const { intervals, formatter } = this.initializeXAxisData(
|
|
35
|
+
const { intervals, formatter } = this.initializeXAxisData(
|
|
36
|
+
data.xAxis,
|
|
37
|
+
data.seriesPoints,
|
|
38
|
+
);
|
|
35
39
|
const arrayOfData: ChartDataPoint[] = this.initializeArrayOfData(
|
|
36
40
|
intervals,
|
|
37
41
|
formatter,
|
|
@@ -45,7 +49,10 @@ export default class DataPointUtil {
|
|
|
45
49
|
return arrayOfData;
|
|
46
50
|
}
|
|
47
51
|
|
|
48
|
-
private static initializeXAxisData(
|
|
52
|
+
private static initializeXAxisData(
|
|
53
|
+
xAxis: XAxis,
|
|
54
|
+
seriesPoints: Array<SeriesPoints>,
|
|
55
|
+
): {
|
|
49
56
|
xAxisMax: XAxisMaxMin;
|
|
50
57
|
xAxisMin: XAxisMaxMin;
|
|
51
58
|
intervals: Array<Date>;
|
|
@@ -53,13 +60,25 @@ export default class DataPointUtil {
|
|
|
53
60
|
} {
|
|
54
61
|
const xAxisMax: XAxisMaxMin = xAxis.options.max;
|
|
55
62
|
const xAxisMin: XAxisMaxMin = xAxis.options.min;
|
|
56
|
-
const
|
|
63
|
+
const precision: XAxisPrecision | undefined = xAxis.options.precision;
|
|
64
|
+
/*
|
|
65
|
+
* Renderable, not raw: the grid's final slot is the bucket holding the
|
|
66
|
+
* window end, which the query only partly covered and which therefore
|
|
67
|
+
* comes back empty whenever the window ends on or just past a bucket
|
|
68
|
+
* boundary. XAxisUtil drops that one slot (and only that one, and only
|
|
69
|
+
* when nothing landed in it) so the axis stops at the last point there
|
|
70
|
+
* is data for instead of a bucket beyond it.
|
|
71
|
+
*/
|
|
72
|
+
const intervals: Array<Date> = XAxisUtil.getRenderableIntervals({
|
|
57
73
|
xAxisMax,
|
|
58
74
|
xAxisMin,
|
|
75
|
+
precision,
|
|
76
|
+
seriesPoints,
|
|
59
77
|
});
|
|
60
78
|
const formatter: (value: Date) => string = XAxisUtil.getFormatter({
|
|
61
79
|
xAxisMax,
|
|
62
80
|
xAxisMin,
|
|
81
|
+
precision,
|
|
63
82
|
});
|
|
64
83
|
return { xAxisMax, xAxisMin, intervals, formatter };
|
|
65
84
|
}
|
|
@@ -2,7 +2,9 @@ import ChartReferenceRegionProps from "../Types/ReferenceRegionProps";
|
|
|
2
2
|
import ChartTimeReferenceLineProps from "../Types/TimeReferenceLineProps";
|
|
3
3
|
import FormattedReferenceRegion from "../ChartLibrary/Types/FormattedReferenceRegion";
|
|
4
4
|
import FormattedTimeReferenceLine from "../ChartLibrary/Types/FormattedTimeReferenceLine";
|
|
5
|
+
import SeriesPoints from "../Types/SeriesPoints";
|
|
5
6
|
import { XAxis } from "../Types/XAxis/XAxis";
|
|
7
|
+
import XAxisMaxMin from "../Types/XAxis/XAxisMaxMin";
|
|
6
8
|
import XAxisUtil from "./XAxis";
|
|
7
9
|
|
|
8
10
|
interface AxisBuckets {
|
|
@@ -16,17 +18,38 @@ interface AxisBuckets {
|
|
|
16
18
|
*/
|
|
17
19
|
labelToIndex: Map<string, number>;
|
|
18
20
|
formatter: (value: Date) => string;
|
|
21
|
+
/*
|
|
22
|
+
* The axis's own maximum, kept alongside the slots because the slots no
|
|
23
|
+
* longer imply it — see getWindowEndInMs.
|
|
24
|
+
*/
|
|
25
|
+
xAxisMax: XAxisMaxMin;
|
|
19
26
|
}
|
|
20
27
|
|
|
21
28
|
export default class TimeAnnotationUtil {
|
|
22
|
-
|
|
23
|
-
|
|
29
|
+
/*
|
|
30
|
+
* `seriesPoints` is not used to place anything — it is what lets this
|
|
31
|
+
* rebuild the SAME slot array DataPointUtil built. XAxisUtil drops an
|
|
32
|
+
* unfillable trailing slot, and whether it does depends on the series, so
|
|
33
|
+
* an annotation resolved against a grid built without them would index
|
|
34
|
+
* into an array one longer than the chart's rows: every marker in the
|
|
35
|
+
* final bucket would land past the end of the axis. Chart wrappers pass
|
|
36
|
+
* the series they are drawing; callers that pass none get the raw grid,
|
|
37
|
+
* which is what DataPointUtil gives them too.
|
|
38
|
+
*/
|
|
39
|
+
private static getAxisBuckets(
|
|
40
|
+
xAxis: XAxis,
|
|
41
|
+
seriesPoints?: Array<SeriesPoints> | undefined,
|
|
42
|
+
): AxisBuckets {
|
|
43
|
+
const intervals: Array<Date> = XAxisUtil.getRenderableIntervals({
|
|
24
44
|
xAxisMin: xAxis.options.min,
|
|
25
45
|
xAxisMax: xAxis.options.max,
|
|
46
|
+
precision: xAxis.options.precision,
|
|
47
|
+
seriesPoints: seriesPoints,
|
|
26
48
|
});
|
|
27
49
|
const formatter: (value: Date) => string = XAxisUtil.getFormatter({
|
|
28
50
|
xAxisMin: xAxis.options.min,
|
|
29
51
|
xAxisMax: xAxis.options.max,
|
|
52
|
+
precision: xAxis.options.precision,
|
|
30
53
|
});
|
|
31
54
|
const labels: Array<string> = intervals.map((interval: Date) => {
|
|
32
55
|
return formatter(interval);
|
|
@@ -38,14 +61,32 @@ export default class TimeAnnotationUtil {
|
|
|
38
61
|
labelToIndex.set(label, index);
|
|
39
62
|
}
|
|
40
63
|
}
|
|
41
|
-
return {
|
|
64
|
+
return {
|
|
65
|
+
intervals,
|
|
66
|
+
labels,
|
|
67
|
+
labelToIndex,
|
|
68
|
+
formatter,
|
|
69
|
+
xAxisMax: xAxis.options.max,
|
|
70
|
+
};
|
|
42
71
|
}
|
|
43
72
|
|
|
44
73
|
/*
|
|
45
74
|
* End of the charted window: last bucket start plus one bucket width
|
|
46
75
|
* (buckets extend past their start date).
|
|
76
|
+
*
|
|
77
|
+
* Held up to the axis's own maximum, because the grid can legitimately
|
|
78
|
+
* stop SHORT of it — XAxisUtil drops a trailing slot no data could land
|
|
79
|
+
* in. Reconstructing the window from the slots alone would then pull this
|
|
80
|
+
* bound backwards by a bucket and start rejecting the very markers that
|
|
81
|
+
* sit at the window edge as "outside the charted window": on an alert the
|
|
82
|
+
* declared-at marker is at the window end exactly, and it would vanish
|
|
83
|
+
* from the chart it exists to annotate. Such a marker resolves instead to
|
|
84
|
+
* the last bucket that is still on the axis, which is where its data is.
|
|
47
85
|
*/
|
|
48
|
-
private static getWindowEndInMs(
|
|
86
|
+
private static getWindowEndInMs(
|
|
87
|
+
intervals: Array<Date>,
|
|
88
|
+
xAxisMax: XAxisMaxMin,
|
|
89
|
+
): number {
|
|
49
90
|
const lastInterval: Date | undefined = intervals[intervals.length - 1];
|
|
50
91
|
if (!lastInterval) {
|
|
51
92
|
return Number.NEGATIVE_INFINITY;
|
|
@@ -55,7 +96,11 @@ export default class TimeAnnotationUtil {
|
|
|
55
96
|
const bucketWidthInMs: number = secondToLastInterval
|
|
56
97
|
? lastInterval.getTime() - secondToLastInterval.getTime()
|
|
57
98
|
: 0;
|
|
58
|
-
|
|
99
|
+
const gridEndInMs: number = lastInterval.getTime() + bucketWidthInMs;
|
|
100
|
+
const axisMaxInMs: number =
|
|
101
|
+
typeof xAxisMax === "number" ? xAxisMax : xAxisMax.getTime();
|
|
102
|
+
|
|
103
|
+
return Math.max(gridEndInMs, axisMaxInMs);
|
|
59
104
|
}
|
|
60
105
|
|
|
61
106
|
/*
|
|
@@ -113,7 +158,10 @@ export default class TimeAnnotationUtil {
|
|
|
113
158
|
if (!firstInterval || data.date.getTime() < firstInterval.getTime()) {
|
|
114
159
|
return null;
|
|
115
160
|
}
|
|
116
|
-
if (
|
|
161
|
+
if (
|
|
162
|
+
data.date.getTime() >
|
|
163
|
+
this.getWindowEndInMs(intervals, data.buckets.xAxisMax)
|
|
164
|
+
) {
|
|
117
165
|
return null;
|
|
118
166
|
}
|
|
119
167
|
|
|
@@ -130,8 +178,16 @@ export default class TimeAnnotationUtil {
|
|
|
130
178
|
public static formatTimeReferenceLines(data: {
|
|
131
179
|
timeReferenceLines: Array<ChartTimeReferenceLineProps>;
|
|
132
180
|
xAxis: XAxis;
|
|
181
|
+
/*
|
|
182
|
+
* The series the chart is drawing. Only used to rebuild the same slot
|
|
183
|
+
* array the rows were built from — see getAxisBuckets.
|
|
184
|
+
*/
|
|
185
|
+
seriesPoints?: Array<SeriesPoints> | undefined;
|
|
133
186
|
}): Array<FormattedTimeReferenceLine> {
|
|
134
|
-
const buckets: AxisBuckets = this.getAxisBuckets(
|
|
187
|
+
const buckets: AxisBuckets = this.getAxisBuckets(
|
|
188
|
+
data.xAxis,
|
|
189
|
+
data.seriesPoints,
|
|
190
|
+
);
|
|
135
191
|
|
|
136
192
|
const formatted: Array<FormattedTimeReferenceLine> = [];
|
|
137
193
|
for (const timeReferenceLine of data.timeReferenceLines) {
|
|
@@ -154,15 +210,26 @@ export default class TimeAnnotationUtil {
|
|
|
154
210
|
public static formatReferenceRegions(data: {
|
|
155
211
|
referenceRegions: Array<ChartReferenceRegionProps>;
|
|
156
212
|
xAxis: XAxis;
|
|
213
|
+
/*
|
|
214
|
+
* The series the chart is drawing. Only used to rebuild the same slot
|
|
215
|
+
* array the rows were built from — see getAxisBuckets.
|
|
216
|
+
*/
|
|
217
|
+
seriesPoints?: Array<SeriesPoints> | undefined;
|
|
157
218
|
}): Array<FormattedReferenceRegion> {
|
|
158
|
-
const buckets: AxisBuckets = this.getAxisBuckets(
|
|
219
|
+
const buckets: AxisBuckets = this.getAxisBuckets(
|
|
220
|
+
data.xAxis,
|
|
221
|
+
data.seriesPoints,
|
|
222
|
+
);
|
|
159
223
|
const firstInterval: Date | undefined = buckets.intervals[0];
|
|
160
224
|
const lastIndex: number = buckets.labels.length - 1;
|
|
161
225
|
const lastLabel: string | undefined = buckets.labels[lastIndex];
|
|
162
226
|
if (!firstInterval || lastLabel === undefined) {
|
|
163
227
|
return [];
|
|
164
228
|
}
|
|
165
|
-
const windowEndInMs: number = this.getWindowEndInMs(
|
|
229
|
+
const windowEndInMs: number = this.getWindowEndInMs(
|
|
230
|
+
buckets.intervals,
|
|
231
|
+
buckets.xAxisMax,
|
|
232
|
+
);
|
|
166
233
|
|
|
167
234
|
const formatted: Array<FormattedReferenceRegion> = [];
|
|
168
235
|
for (const referenceRegion of data.referenceRegions) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import AggregationInterval from "../../../../Types/BaseDatabase/AggregationInterval";
|
|
1
2
|
import OneUptimeDate from "../../../../Types/Date";
|
|
2
3
|
import NotImplementedException from "../../../../Types/Exception/NotImplementedException";
|
|
4
|
+
import SeriesPoints from "../Types/SeriesPoints";
|
|
3
5
|
import XAxisMaxMin from "../Types/XAxis/XAxisMaxMin";
|
|
4
6
|
import XAxisPrecision from "../Types/XAxis/XAxisPrecision";
|
|
5
7
|
|
|
@@ -8,6 +10,49 @@ export default class XAxisUtil {
|
|
|
8
10
|
return new Date(value.getTime());
|
|
9
11
|
}
|
|
10
12
|
|
|
13
|
+
/*
|
|
14
|
+
* The grid step a caller should pin when its points are buckets the
|
|
15
|
+
* analytics backend produced, rather than raw samples.
|
|
16
|
+
*
|
|
17
|
+
* This is the bridge between the two ladders. AggregationInterval is what
|
|
18
|
+
* the server was asked to bucket by (AggregationIntervalUtil owns that
|
|
19
|
+
* decision, and the server compiles it into `toStartOfInterval`);
|
|
20
|
+
* XAxisPrecision is the step this file walks the axis at. Pinning the
|
|
21
|
+
* translation of one to the other is what makes "one slot == one backend
|
|
22
|
+
* bucket" a fact rather than a coincidence of two duration ladders
|
|
23
|
+
* agreeing.
|
|
24
|
+
*
|
|
25
|
+
* `Total` is the one interval with no grid at all — it collapses the whole
|
|
26
|
+
* window into a single aggregate whose timestamp is the earliest sample,
|
|
27
|
+
* not a bucket start — so it pins nothing and the duration ladder applies.
|
|
28
|
+
*/
|
|
29
|
+
public static getPrecisionForAggregationInterval(
|
|
30
|
+
interval: AggregationInterval,
|
|
31
|
+
): XAxisPrecision | undefined {
|
|
32
|
+
switch (interval) {
|
|
33
|
+
case AggregationInterval.Minute:
|
|
34
|
+
return XAxisPrecision.EVERY_MINUTE;
|
|
35
|
+
case AggregationInterval.FiveMinutes:
|
|
36
|
+
return XAxisPrecision.EVERY_FIVE_MINUTES;
|
|
37
|
+
case AggregationInterval.FifteenMinutes:
|
|
38
|
+
return XAxisPrecision.EVERY_FIFTEEN_MINUTES;
|
|
39
|
+
case AggregationInterval.ThirtyMinutes:
|
|
40
|
+
return XAxisPrecision.EVERY_THIRTY_MINUTES;
|
|
41
|
+
case AggregationInterval.Hour:
|
|
42
|
+
return XAxisPrecision.EVERY_HOUR;
|
|
43
|
+
case AggregationInterval.Day:
|
|
44
|
+
return XAxisPrecision.EVERY_DAY;
|
|
45
|
+
case AggregationInterval.Week:
|
|
46
|
+
return XAxisPrecision.EVERY_WEEK;
|
|
47
|
+
case AggregationInterval.Month:
|
|
48
|
+
return XAxisPrecision.EVERY_MONTH;
|
|
49
|
+
case AggregationInterval.Year:
|
|
50
|
+
return XAxisPrecision.EVERY_YEAR;
|
|
51
|
+
default:
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
11
56
|
/*
|
|
12
57
|
* A chart's x-axis label is not decoration — it IS the identity of its
|
|
13
58
|
* bucket. DataPointUtil places a series row by finding the first row
|
|
@@ -110,7 +155,18 @@ export default class XAxisUtil {
|
|
|
110
155
|
public static getPrecision(data: {
|
|
111
156
|
xAxisMin: XAxisMaxMin;
|
|
112
157
|
xAxisMax: XAxisMaxMin;
|
|
158
|
+
precision?: XAxisPrecision | undefined;
|
|
113
159
|
}): XAxisPrecision {
|
|
160
|
+
/*
|
|
161
|
+
* An explicit pin wins outright — see XAxisOptions.precision for why a
|
|
162
|
+
* caller that knows the bucket size must not have it re-guessed from the
|
|
163
|
+
* window duration. Checked before the Date guard so a pinned axis stays
|
|
164
|
+
* pinned regardless of how its bounds are expressed.
|
|
165
|
+
*/
|
|
166
|
+
if (data.precision) {
|
|
167
|
+
return data.precision;
|
|
168
|
+
}
|
|
169
|
+
|
|
114
170
|
if (
|
|
115
171
|
typeof data.xAxisMax === "number" ||
|
|
116
172
|
typeof data.xAxisMin === "number"
|
|
@@ -184,6 +240,7 @@ export default class XAxisUtil {
|
|
|
184
240
|
public static getPrecisionIntervals(data: {
|
|
185
241
|
xAxisMin: XAxisMaxMin;
|
|
186
242
|
xAxisMax: XAxisMaxMin;
|
|
243
|
+
precision?: XAxisPrecision | undefined;
|
|
187
244
|
}): Array<Date> {
|
|
188
245
|
const precision: XAxisPrecision = XAxisUtil.getPrecision(data);
|
|
189
246
|
|
|
@@ -280,9 +337,169 @@ export default class XAxisUtil {
|
|
|
280
337
|
return intervals;
|
|
281
338
|
}
|
|
282
339
|
|
|
340
|
+
/*
|
|
341
|
+
* How much of the LAST slot's bucket has to lie inside the window before
|
|
342
|
+
* an empty slot is worth an axis position. Half.
|
|
343
|
+
*
|
|
344
|
+
* The bound has to sit somewhere between the two ends it separates, and
|
|
345
|
+
* both ends are real:
|
|
346
|
+
*
|
|
347
|
+
* - Near zero coverage means the bucket is not in the window in any
|
|
348
|
+
* meaningful sense. The alert snapshot that prompted this covered
|
|
349
|
+
* 243 MILLISECONDS of a 60-second bucket (its window ends at the
|
|
350
|
+
* instant the alert was declared, which fell just past a minute
|
|
351
|
+
* boundary); a window that ends exactly on a boundary covers none of
|
|
352
|
+
* the next bucket at all. Those slots cannot carry data, and an
|
|
353
|
+
* unfillable slot at the right-hand edge is the reported gap.
|
|
354
|
+
* - Most-of-the-bucket coverage means an empty slot is INFORMATION.
|
|
355
|
+
* "Last 7 days" ends mid-afternoon, so today's bucket is ~60% inside
|
|
356
|
+
* the window; if a count chart has nothing in it, that empty final bar
|
|
357
|
+
* says "nothing today", and dropping the tick would hide it.
|
|
358
|
+
*
|
|
359
|
+
* A half-covered bucket is the natural line between "barely touched" and
|
|
360
|
+
* "genuinely part of this window", and it keeps every rolling window
|
|
361
|
+
* anchored at `now` — where the in-progress bucket is on average half
|
|
362
|
+
* elapsed — on the safe side.
|
|
363
|
+
*/
|
|
364
|
+
private static readonly MIN_TRAILING_BUCKET_COVERAGE: number = 0.5;
|
|
365
|
+
|
|
366
|
+
/*
|
|
367
|
+
* The intervals a chart should actually RENDER, which is the raw grid
|
|
368
|
+
* minus a trailing slot that no data could ever land in.
|
|
369
|
+
*
|
|
370
|
+
* getPrecisionIntervals walks inclusively to the window end, so the final
|
|
371
|
+
* slot is the start of whichever bucket CONTAINS that end. That bucket
|
|
372
|
+
* runs past the end of the window, so the query never covered all of it —
|
|
373
|
+
* and when the window ends at or just after a bucket boundary it covered
|
|
374
|
+
* essentially none of it. The backend returns rows only for buckets that
|
|
375
|
+
* had samples, so such a slot comes back empty every time; and because the
|
|
376
|
+
* recharts x-axis is categorical over exactly these slots, an empty one at
|
|
377
|
+
* the end is not a rounding detail — it stretches the axis a whole bucket
|
|
378
|
+
* past the last plotted point. On a 5-minute alert snapshot that is a
|
|
379
|
+
* fifth of the chart left blank.
|
|
380
|
+
*
|
|
381
|
+
* Only ever ONE slot is dropped, and only when BOTH hold:
|
|
382
|
+
*
|
|
383
|
+
* - it carries no data, so a live in-progress bucket keeps rendering
|
|
384
|
+
* (dropping populated trailing buckets would make every now-anchored
|
|
385
|
+
* chart lag by a bucket — the opposite complaint), and
|
|
386
|
+
* - the window covers less than half of it, so an empty bucket that the
|
|
387
|
+
* window really does span stays on the axis.
|
|
388
|
+
*
|
|
389
|
+
* Dropping at most one is what keeps a genuine outage visible: a source
|
|
390
|
+
* that stopped reporting three buckets before the window end still leaves
|
|
391
|
+
* two blank slots on the axis, which is the truth. Callers with no series
|
|
392
|
+
* to check get the raw grid unchanged.
|
|
393
|
+
*/
|
|
394
|
+
public static getRenderableIntervals(data: {
|
|
395
|
+
xAxisMin: XAxisMaxMin;
|
|
396
|
+
xAxisMax: XAxisMaxMin;
|
|
397
|
+
precision?: XAxisPrecision | undefined;
|
|
398
|
+
seriesPoints?: Array<SeriesPoints> | undefined;
|
|
399
|
+
}): Array<Date> {
|
|
400
|
+
const intervals: Array<Date> = XAxisUtil.getPrecisionIntervals(data);
|
|
401
|
+
|
|
402
|
+
if (!data.seriesPoints || intervals.length < 2) {
|
|
403
|
+
return intervals;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
const lastInterval: Date = intervals[intervals.length - 1]!;
|
|
407
|
+
const previousInterval: Date = intervals[intervals.length - 2]!;
|
|
408
|
+
|
|
409
|
+
/*
|
|
410
|
+
* Bucket width read off the grid itself rather than recomputed from the
|
|
411
|
+
* precision: the walk steps in wall-clock time, so a month, a year or a
|
|
412
|
+
* daylight-saving day is exactly as wide as the grid says it is.
|
|
413
|
+
*/
|
|
414
|
+
const bucketWidthInMs: number =
|
|
415
|
+
lastInterval.getTime() - previousInterval.getTime();
|
|
416
|
+
if (bucketWidthInMs <= 0) {
|
|
417
|
+
return intervals;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/*
|
|
421
|
+
* Emptiness — and the bucket boundary below — are decided with the SAME
|
|
422
|
+
* formatter that DataPointUtil uses to place a datapoint on a row.
|
|
423
|
+
* Anything else would let the two disagree about which bucket the last
|
|
424
|
+
* slot IS, and the whole point of trimming here rather than in
|
|
425
|
+
* DataPointUtil is that the rows, the categorical axis and the
|
|
426
|
+
* annotation indexes are built from one array.
|
|
427
|
+
*/
|
|
428
|
+
const formatter: (value: Date) => string = XAxisUtil.getFormatter(data);
|
|
429
|
+
const lastLabel: string = formatter(lastInterval);
|
|
430
|
+
|
|
431
|
+
/*
|
|
432
|
+
* A slot's DATE and the bucket it collects into are not the same thing.
|
|
433
|
+
* The walk starts at the window's own start, so on most charts the grid
|
|
434
|
+
* is anchored mid-bucket: a "last 7 days" axis stepping a day from
|
|
435
|
+
* 28 Aug 14:42 ends on a slot dated 4 Sep 14:42, which the formatter
|
|
436
|
+
* floors to the label "4 Sep" — the bucket [4 Sep 00:00, 5 Sep 00:00),
|
|
437
|
+
* of which the window covers nearly fifteen hours.
|
|
438
|
+
*
|
|
439
|
+
* Coverage can therefore only be measured off the slot's date when the
|
|
440
|
+
* slot IS its bucket's start, which is what this asks: a slot on a
|
|
441
|
+
* boundary has a different label one millisecond before it. When the
|
|
442
|
+
* grid is anchored mid-bucket the window necessarily spans everything
|
|
443
|
+
* from the bucket's real start up to the window end, which is most of
|
|
444
|
+
* it, so the slot stays — the conservative answer, and the one that
|
|
445
|
+
* keeps an empty "today" bar on a daily count chart.
|
|
446
|
+
*
|
|
447
|
+
* The alert snapshot is the aligned case (MetricView floors the window
|
|
448
|
+
* start onto the bucket grid), which is exactly when the slot date is
|
|
449
|
+
* the bucket start and the coverage measured below is the real one.
|
|
450
|
+
*/
|
|
451
|
+
const isSlotOnBucketBoundary: boolean =
|
|
452
|
+
formatter(new Date(lastInterval.getTime() - 1)) !== lastLabel;
|
|
453
|
+
if (!isSlotOnBucketBoundary) {
|
|
454
|
+
return intervals;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
const windowEndInMs: number =
|
|
458
|
+
typeof data.xAxisMax === "number"
|
|
459
|
+
? data.xAxisMax
|
|
460
|
+
: OneUptimeDate.fromString(data.xAxisMax).getTime();
|
|
461
|
+
const coverage: number =
|
|
462
|
+
(windowEndInMs - lastInterval.getTime()) / bucketWidthInMs;
|
|
463
|
+
if (coverage >= XAxisUtil.MIN_TRAILING_BUCKET_COVERAGE) {
|
|
464
|
+
return intervals;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
const slotLabels: Set<string> = new Set<string>(
|
|
468
|
+
intervals.map((interval: Date) => {
|
|
469
|
+
return formatter(interval);
|
|
470
|
+
}),
|
|
471
|
+
);
|
|
472
|
+
|
|
473
|
+
let hasAnyData: boolean = false;
|
|
474
|
+
for (const series of data.seriesPoints) {
|
|
475
|
+
for (const point of series.data) {
|
|
476
|
+
const label: string = formatter(point.x);
|
|
477
|
+
if (label === lastLabel) {
|
|
478
|
+
// The trailing bucket is populated — it stays.
|
|
479
|
+
return intervals;
|
|
480
|
+
}
|
|
481
|
+
if (!hasAnyData && slotLabels.has(label)) {
|
|
482
|
+
hasAnyData = true;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/*
|
|
488
|
+
* A chart with nothing on it anywhere keeps its full grid, so an empty
|
|
489
|
+
* chart still draws an axis spanning the window the user asked for
|
|
490
|
+
* instead of one silently a bucket short.
|
|
491
|
+
*/
|
|
492
|
+
if (!hasAnyData) {
|
|
493
|
+
return intervals;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
return intervals.slice(0, intervals.length - 1);
|
|
497
|
+
}
|
|
498
|
+
|
|
283
499
|
public static getFormatter(data: {
|
|
284
500
|
xAxisMin: XAxisMaxMin;
|
|
285
501
|
xAxisMax: XAxisMaxMin;
|
|
502
|
+
precision?: XAxisPrecision | undefined;
|
|
286
503
|
}): (value: Date) => string {
|
|
287
504
|
const precision: XAxisPrecision = XAxisUtil.getPrecision(data);
|
|
288
505
|
|