@oneuptime/common 12.0.31 → 12.0.33
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/Span.ts +14 -0
- package/Models/DatabaseModels/AlertState.ts +0 -2
- package/Models/DatabaseModels/Domain.ts +1 -1
- package/Models/DatabaseModels/EnterpriseLicense.ts +56 -0
- package/Models/DatabaseModels/Incident.ts +1 -1
- package/Models/DatabaseModels/IncidentTemplate.ts +1 -1
- package/Models/DatabaseModels/Index.ts +12 -0
- package/Models/DatabaseModels/MetricType.ts +0 -2
- package/Models/DatabaseModels/Monitor.ts +76 -0
- package/Models/DatabaseModels/MonitorStatusTimeline.ts +0 -2
- package/Models/DatabaseModels/MonitorTest.ts +0 -2
- package/Models/DatabaseModels/NetworkAlertPolicy.ts +690 -0
- package/Models/DatabaseModels/NetworkDevice.ts +297 -3
- package/Models/DatabaseModels/NetworkDeviceOidTemplate.ts +3 -1
- package/Models/DatabaseModels/NetworkDeviceRole.ts +648 -0
- package/Models/DatabaseModels/NetworkSite.ts +201 -2
- package/Models/DatabaseModels/NetworkSiteType.ts +102 -3
- package/Models/DatabaseModels/NetworkSnmpCredentialProfile.ts +841 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -1
- package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +1 -1
- package/Models/DatabaseModels/StatusPageAnnouncement.ts +0 -2
- package/Models/DatabaseModels/StatusPageAnnouncementTemplate.ts +0 -2
- package/Models/DatabaseModels/StatusPagePrivateUser.ts +0 -2
- package/Models/DatabaseModels/StatusPageResource.ts +0 -2
- package/Models/DatabaseModels/StatusPageSubscriber.ts +0 -2
- package/Models/DatabaseModels/TelemetryException.ts +119 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupBatch.ts +334 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +370 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupSetting.ts +282 -0
- package/Server/API/EnterpriseLicenseAPI.ts +391 -64
- package/Server/API/LlmProviderAPI.ts +137 -22
- package/Server/EnvironmentConfig.ts +14 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.ts +55 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.ts +72 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.ts +124 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.ts +132 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.ts +79 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.ts +191 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +14 -0
- package/Server/Infrastructure/QueueWorker.ts +38 -8
- package/Server/Middleware/BearerTokenAuthorization.ts +12 -0
- package/Server/Middleware/ProjectAuthorization.ts +11 -0
- package/Server/Middleware/SCIMAuthorization.ts +12 -0
- package/Server/Middleware/TelemetryIngest.ts +11 -0
- package/Server/Services/AIBillingService.ts +101 -27
- package/Server/Services/DatabaseService.ts +39 -9
- package/Server/Services/EnterpriseLicenseInstanceService.ts +197 -0
- package/Server/Services/EnterpriseLicenseService.ts +55 -0
- package/Server/Services/Index.ts +12 -0
- package/Server/Services/MonitorService.ts +143 -21
- package/Server/Services/MonitorStatusTimelineService.ts +150 -8
- package/Server/Services/MonitorTemplateService.ts +217 -1
- package/Server/Services/NetworkAlertPolicyEngineService.ts +2159 -0
- package/Server/Services/NetworkAlertPolicyService.ts +944 -0
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +9 -10
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +60 -15
- package/Server/Services/NetworkDeviceRoleService.ts +90 -0
- package/Server/Services/NetworkDeviceService.ts +1032 -73
- package/Server/Services/NetworkSiteService.ts +1502 -129
- package/Server/Services/NetworkSiteTypeService.ts +1216 -0
- package/Server/Services/NetworkSnmpCredentialProfileService.ts +238 -0
- package/Server/Services/NotificationService.ts +118 -28
- package/Server/Services/ProjectService.ts +186 -44
- package/Server/Services/StatusPagePrivateUserService.ts +103 -3
- package/Server/Services/UserNotificationEmailRollupBatchService.ts +78 -0
- package/Server/Services/UserNotificationEmailRollupItemService.ts +79 -0
- package/Server/Services/UserNotificationEmailRollupSettingService.ts +113 -0
- package/Server/Services/UserNotificationSettingService.ts +62 -31
- package/Server/Services/UserService.ts +95 -0
- package/Server/Types/Database/QueryHelper.ts +2 -2
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +14 -3
- package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +10 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +10 -0
- package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +62 -1
- package/Server/Utils/AI/Toolbox/AlertTools.ts +15 -1
- package/Server/Utils/Billing/BillingFailureNoticeThrottle.ts +80 -0
- package/Server/Utils/DataSource/HttpFetch.ts +9 -2
- package/Server/Utils/EmailRollup/EmailRollupConstants.ts +98 -0
- package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +872 -0
- package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +781 -0
- package/Server/Utils/EmailRollup/EmailRollupWriter.ts +368 -0
- package/Server/Utils/LLM/LLMService.ts +78 -0
- package/Server/Utils/LogRedaction.ts +8 -0
- package/Server/Utils/Logger.ts +79 -1
- package/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.ts +190 -0
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +9 -2
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +61 -1
- package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +14 -0
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +49 -0
- package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +255 -4
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +41 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +43 -0
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +499 -19
- package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +66 -10
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +238 -44
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +146 -39
- package/Server/Utils/NetworkDevice/DeviceHealthAggregation.ts +31 -18
- package/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.ts +213 -0
- package/Server/Utils/OutboundUserAgent.ts +152 -0
- package/Server/Utils/StartServer.ts +51 -19
- package/Server/Utils/Telemetry/CaptureSpan.ts +32 -8
- package/Server/Utils/Telemetry/ErrorClassResolver.ts +120 -0
- package/Server/Utils/Telemetry/SpanUtil.ts +33 -0
- package/Server/Utils/Telemetry.ts +198 -51
- package/Server/Views/Partials/SensitiveUrlToken.ejs +140 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +158 -27
- package/Tests/App/Dashboard/AskAiSuggestedPrompts.test.ts +279 -0
- package/Tests/App/Dashboard/DashboardChartWidgetZoom.test.tsx +35 -8
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +107 -3
- package/Tests/App/Dashboard/DashboardEditPermissions.test.tsx +517 -0
- package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +26 -0
- package/Tests/App/Dashboard/DashboardWideChartZoom.test.tsx +401 -0
- package/Tests/App/Dashboard/DeviceStatusHero.test.tsx +588 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +18 -9
- package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +632 -0
- package/Tests/App/Dashboard/MonitorRecommendationCreateProgress.test.tsx +682 -0
- package/Tests/App/Dashboard/MonitorTemplateColumnAndFacet.test.tsx +318 -0
- package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +4 -2
- package/Tests/App/Dashboard/NetworkDeviceBulkDelete.test.tsx +357 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormMonitorBinding.test.tsx +676 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormPingMonitor.test.tsx +791 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormProbeAndSnmp.test.tsx +833 -0
- package/Tests/App/Dashboard/NetworkDeviceCriteriaFilter.test.ts +161 -0
- package/Tests/App/Dashboard/NetworkDeviceSettingsMonitoringSection.test.tsx +458 -0
- package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +626 -0
- package/Tests/App/Dashboard/PingMonitorProvisioning.test.ts +368 -0
- package/Tests/App/Dashboard/RecommendationCard.test.tsx +796 -0
- package/Tests/App/Dashboard/RecommendationToolbar.test.tsx +519 -0
- package/Tests/App/Dashboard/RecommendationsList.test.tsx +661 -0
- package/Tests/App/Dashboard/SideMenuHarness.tsx +11 -3
- package/Tests/App/Dashboard/UseBulkCreatePingMonitors.test.tsx +899 -0
- package/Tests/App/Dashboard/UseBulkSnmpCredentialProfileActions.test.tsx +732 -0
- package/Tests/App/SensitiveUrlTokenBootstrap.test.ts +256 -0
- package/Tests/App/StatusPage/StatusPageIndexPageRobotsMeta.test.ts +11 -1
- package/Tests/App/StatusPage/StatusPageLoginCodeBootstrap.test.ts +9 -4
- package/Tests/Models/DatabaseModels/ModelRegistryInvariants.test.ts +115 -41
- package/Tests/Models/NetworkSiteHierarchy.test.ts +41 -4
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +951 -7
- package/Tests/Server/API/LlmProviderConnectionTest.test.ts +522 -0
- package/Tests/Server/Infrastructure/Postgres/NetworkDeviceRoleTableMigration.test.ts +476 -0
- package/Tests/Server/Infrastructure/Postgres/NetworkSnmpCredentialProfilesAndAlertPoliciesMigration.test.ts +854 -0
- package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +18 -0
- package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +535 -0
- package/Tests/Server/Services/AIChatPrivacyPin.test.ts +560 -0
- package/Tests/Server/Services/BillingRechargeOwnerEmailGuards.test.ts +783 -0
- package/Tests/Server/Services/DatabaseServiceGenerateSlug.test.ts +215 -0
- package/Tests/Server/Services/EnterpriseLicenseInstanceServiceDeletionUsage.test.ts +707 -0
- package/Tests/Server/Services/EnterpriseLicenseServiceUsageAggregationLock.test.ts +329 -0
- package/Tests/Server/Services/MonitorServiceDeleteNetworkDeviceCleanup.test.ts +294 -0
- package/Tests/Server/Services/MonitorStatusBridgeProbePath.test.ts +802 -0
- package/Tests/Server/Services/MonitorStatusTimelineService.test.ts +72 -2
- package/Tests/Server/Services/NetworkAlertPolicyEngineHooks.test.ts +752 -0
- package/Tests/Server/Services/NetworkAlertPolicyEngineService.test.ts +1849 -0
- package/Tests/Server/Services/NetworkAlertPolicyModel.test.ts +1793 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +47 -4
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +97 -12
- package/Tests/Server/Services/NetworkDeviceAutoMonitorLifecycle.test.ts +148 -3
- package/Tests/Server/Services/NetworkDeviceMonitorBindingUpdateGuard.test.ts +514 -0
- package/Tests/Server/Services/NetworkDeviceMonitorStatusStamp.test.ts +447 -58
- package/Tests/Server/Services/NetworkDeviceMonitoringMethodTransition.test.ts +739 -0
- package/Tests/Server/Services/NetworkDevicePollingTenancy.test.ts +501 -0
- package/Tests/Server/Services/NetworkDeviceRoleModel.test.ts +672 -0
- package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +1 -1
- package/Tests/Server/Services/NetworkDeviceSiteDefaultProbe.test.ts +432 -0
- package/Tests/Server/Services/NetworkSiteMonitoringDefaults.test.ts +498 -0
- package/Tests/Server/Services/NetworkSiteRollupPolicyAndMaintenance.test.ts +337 -55
- package/Tests/Server/Services/NetworkSiteService.test.ts +1868 -131
- package/Tests/Server/Services/NetworkSiteTypeService.test.ts +1109 -0
- package/Tests/Server/Services/NetworkSnmpCredentialProfileModel.test.ts +926 -0
- package/Tests/Server/Services/NetworkSnmpCredentialProfileService.test.ts +796 -0
- package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +67 -4
- package/Tests/Server/Services/ProjectServiceNetworkSiteTypeDefaults.test.ts +214 -0
- package/Tests/Server/Services/ScheduledMaintenanceSubscriberEndTime.test.ts +369 -0
- package/Tests/Server/Services/StatusPagePrivateUserEmailChangePasswordResetExpiry.test.ts +269 -0
- package/Tests/Server/Services/UserEmailChangePasswordResetExpiry.test.ts +472 -0
- package/Tests/Server/Services/UserNotificationEmailRollupModels.test.ts +569 -0
- package/Tests/Server/Services/UserNotificationEmailRollupSettingModel.test.ts +314 -0
- package/Tests/Server/Services/UserNotificationEmailRollupSettingService.test.ts +409 -0
- package/Tests/Server/Services/UserNotificationSettingMonitorDefaults.test.ts +248 -0
- package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +856 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +145 -3
- package/Tests/Server/Types/Database/Permissions/DashboardAccessPermission.test.ts +321 -0
- package/Tests/Server/Types/Database/QueryHelperOperators.test.ts +17 -0
- package/Tests/Server/Utils/AI/AlertMonitorFilters.test.ts +124 -0
- package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +208 -0
- package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +235 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +253 -0
- package/Tests/Server/Utils/BasicCron.test.ts +283 -0
- package/Tests/Server/Utils/Captcha.test.ts +422 -0
- package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +96 -2
- package/Tests/Server/Utils/Database/MigrationFailureLog.test.ts +466 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +1096 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerClaim.test.ts +466 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +1428 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +752 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +864 -0
- package/Tests/Server/Utils/IncomingCallPhoneNumber.test.ts +174 -0
- package/Tests/Server/Utils/LoggerFaultDemotion.test.ts +346 -0
- package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +633 -0
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +196 -0
- package/Tests/Server/Utils/Monitor/DatabaseMetricWrite.test.ts +367 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +100 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +5 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +512 -31
- package/Tests/Server/Utils/Monitor/NetworkDeviceMetricUtil.test.ts +252 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +479 -42
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +351 -5
- package/Tests/Server/Utils/NetworkDevice/DeviceHealthAggregation.test.ts +136 -12
- package/Tests/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.test.ts +306 -0
- package/Tests/Server/Utils/OutboundUserAgent.test.ts +266 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClientUserAgent.test.ts +141 -0
- package/Tests/Server/Utils/Telemetry/ErrorClassResolver.test.ts +298 -0
- package/Tests/Server/Utils/Telemetry.test.ts +456 -66
- package/Tests/Types/Monitor/DatabaseMetricCatalog.test.ts +388 -0
- package/Tests/Types/Monitor/MonitorStepDatabaseMonitor.test.ts +243 -0
- package/Tests/Types/Monitor/MonitorStepDefaultTelemetryConfig.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorType.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +16 -7
- package/Tests/Types/Monitor/NetworkDeviceAlertPack.test.ts +60 -0
- package/Tests/Types/NetworkDevice/DefaultNetworkDeviceRole.test.ts +417 -0
- package/Tests/Types/NetworkDevice/NetworkAlertPolicyScope.test.ts +655 -0
- package/Tests/Types/NetworkDevice/NetworkDeviceMonitoringMethod.test.ts +115 -26
- package/Tests/Types/NetworkSite/DefaultNetworkSiteType.test.ts +39 -0
- package/Tests/Types/NotificationSetting/NotificationEmailRollupPolicy.test.ts +299 -0
- package/Tests/Types/Telemetry/ErrorClass.test.ts +483 -0
- package/Tests/UI/Components/BasicRadioButtons.test.tsx +336 -0
- package/Tests/UI/Components/Charts/ChartClickDoubleClickDisambiguation.test.tsx +221 -0
- package/Tests/UI/Components/Charts/ChartDoubleClickReset.test.tsx +220 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkDelete.test.tsx +751 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +475 -43
- package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +89 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +15 -0
- package/Tests/UI/Components/NavBarCommandKGating.test.tsx +103 -8
- package/Tests/UI/Components/ProgressBar.test.tsx +38 -2
- package/Tests/UI/Components/SideMenuItem.test.tsx +256 -4
- package/Tests/UI/Components/SideMenuSection.test.tsx +310 -0
- package/Tests/UI/Components/SideOverSubmitState.test.tsx +335 -0
- package/Tests/UI/Utils/PageScrollLock.test.tsx +377 -0
- package/Tests/UI/Utils/PermissionGate.test.ts +78 -0
- package/Tests/UI/Utils/SensitiveUrlToken.test.ts +140 -0
- package/Tests/UI/Utils/TableColumnsToCsv.test.ts +30 -0
- package/Tests/UI/Utils/UseDashboardTimeRangeZoom.test.tsx +187 -0
- package/Tests/Utils/Dashboard/DashboardResourceListSharedArgs.test.ts +302 -0
- package/Tests/Utils/Dashboard/DashboardTimeRangeZoom.test.ts +242 -0
- package/Tests/Utils/EnterpriseLicenseSeats.test.ts +69 -0
- package/Tests/Utils/EnterpriseLicenseSync.test.ts +7 -1
- package/Tests/Utils/EnterpriseLicenseUsage.test.ts +433 -2
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +280 -1
- package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
- package/Tests/Utils/Monitor/NetworkDeviceRoleCatalog.test.ts +981 -0
- package/Tests/Utils/Monitor/NetworkTopologyRoleCatalog.test.ts +865 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +38 -0
- package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +284 -23
- package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +177 -0
- package/Tests/Utils/NetworkDevice/DeviceRoleKeyUtil.test.ts +538 -0
- package/Tests/Utils/NetworkDevice/MonitoringMethodThreadedClassifiers.test.ts +992 -0
- package/Tests/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.test.ts +427 -0
- package/Tests/Utils/NetworkDevice/ReachabilityStampConsistency.test.ts +185 -0
- package/Tests/Utils/NetworkDevice/SnmpCredentialUtil.test.ts +268 -0
- package/Tests/Utils/NetworkDiscovery/AutoImportRuleMatcher.test.ts +55 -5
- package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +98 -21
- package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +98 -20
- package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +8 -7
- package/Tests/Utils/NetworkDiscovery/PingMonitorBuilderForAddress.test.ts +274 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +230 -51
- package/Tests/Utils/NetworkSite/TypeHierarchyUtil.test.ts +209 -0
- package/Tests/Utils/Slo/SloEvaluation.test.ts +171 -0
- package/Tests/Utils/Slug.test.ts +61 -1
- package/Tests/Utils/Telemetry/CaptureSpanExportGating.test.ts +145 -0
- package/Tests/jest.setup.ts +19 -0
- package/Types/AI/ExceptionAIClassification.ts +10 -24
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.ts +5 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.ts +13 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.ts +6 -0
- package/Types/Exception/ApiException.ts +10 -0
- package/Types/Exception/BadDataException.ts +11 -0
- package/Types/Exception/BadRequestException.ts +11 -0
- package/Types/Exception/Exception.ts +65 -0
- package/Types/Exception/ForbiddenException.ts +10 -0
- package/Types/Exception/NotAuthenticatedException.ts +10 -0
- package/Types/Exception/NotAuthorizedException.ts +10 -0
- package/Types/Exception/NotFoundException.ts +11 -0
- package/Types/Exception/PayloadTooLargeException.ts +11 -0
- package/Types/Exception/PaymentRequiredException.ts +10 -0
- package/Types/Exception/ServiceUnavailableException.ts +10 -0
- package/Types/Exception/SsoAuthorizationException.ts +10 -0
- package/Types/Exception/TenantNotFoundException.ts +11 -0
- package/Types/Exception/TimeoutException.ts +10 -0
- package/Types/Exception/TooManyRequestsException.ts +10 -0
- package/Types/Exception/UnableToReachServer.ts +10 -0
- package/Types/Exception/WebsiteRequestException.ts +10 -0
- package/Types/Monitor/CriteriaFilter.ts +60 -2
- package/Types/Monitor/DatabaseMetricCatalog.ts +693 -0
- package/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.ts +83 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +76 -0
- package/Types/Monitor/MonitorMetricType.ts +71 -0
- package/Types/Monitor/MonitorStep.ts +76 -0
- package/Types/Monitor/MonitorStepDatabaseMonitor.ts +171 -0
- package/Types/Monitor/MonitorStepSqlMonitor.ts +2 -20
- package/Types/Monitor/MonitorType.ts +47 -1
- package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +22 -1
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +61 -0
- package/Types/Monitor/SqlConnectionConfig.ts +31 -0
- package/Types/NetworkDevice/DefaultNetworkDeviceRole.ts +145 -0
- package/Types/NetworkDevice/NetworkAlertPolicyScope.ts +343 -0
- package/Types/NetworkDevice/NetworkDeviceMonitoringMethod.ts +42 -22
- package/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.ts +30 -0
- package/Types/NotificationSetting/NotificationEmailRollupCategory.ts +255 -0
- package/Types/NotificationSetting/NotificationEmailRollupPolicy.ts +104 -0
- package/Types/Permission.ts +135 -0
- package/Types/Probe/ProbeMonitorResponse.ts +16 -0
- package/Types/Telemetry/ErrorClass.ts +274 -0
- package/Types/Telemetry/UnitOfWork.ts +59 -0
- package/UI/Components/Charts/Area/AreaChart.tsx +7 -0
- package/UI/Components/Charts/Bar/BarChart.tsx +6 -0
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +9 -1
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +97 -35
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +14 -0
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +97 -35
- package/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.ts +13 -0
- package/UI/Components/Charts/Line/LineChart.tsx +7 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +2 -8
- package/UI/Components/EditionLabel/EditionLabel.tsx +4 -0
- package/UI/Components/Modal/Modal.tsx +2 -8
- package/UI/Components/ModelTable/BaseModelTable.tsx +50 -15
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
- package/UI/Components/Navbar/NavBar.tsx +62 -13
- package/UI/Components/Navbar/NavBarMenuModal.tsx +7 -2
- package/UI/Components/ProgressBar/ProgressBar.tsx +12 -1
- package/UI/Components/RadioButtons/BasicRadioButtons.tsx +37 -7
- package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +2 -0
- package/UI/Components/SideMenu/SideMenu.tsx +135 -7
- package/UI/Components/SideMenu/SideMenuItem.tsx +80 -85
- package/UI/Components/SideMenu/SideMenuSection.tsx +69 -25
- package/UI/Components/SideOver/SideOver.tsx +21 -20
- package/UI/Utils/PageScrollLock.ts +79 -3
- package/UI/Utils/PermissionGate.ts +61 -0
- package/UI/Utils/SensitiveUrlToken.ts +112 -0
- package/UI/Utils/TestLLMProvider.ts +11 -0
- package/UI/Utils/UseDashboardTimeRangeZoom.ts +77 -0
- package/Utils/Dashboard/DashboardTimeRangeZoom.ts +118 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +16 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +191 -11
- package/Utils/Monitor/MonitorMetricType.ts +153 -1
- package/Utils/Monitor/NetworkDeviceRoleCatalog.ts +232 -0
- package/Utils/Monitor/NetworkDeviceRoleUtil.ts +2 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +139 -36
- package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +65 -14
- package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +43 -14
- package/Utils/NetworkDevice/DeviceRoleKeyUtil.ts +137 -0
- package/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.ts +247 -0
- package/Utils/NetworkDevice/SnmpCredentialUtil.ts +68 -0
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +15 -7
- package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +52 -17
- package/Utils/NetworkDiscovery/DiscoveryImportEligibility.ts +55 -23
- package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +115 -13
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +66 -20
- package/Utils/NetworkSite/TypeHierarchyUtil.ts +313 -0
- package/Utils/Rules/RulePatternMatchUtil.ts +1 -1
- package/Utils/Slug.ts +34 -1
- package/build/dist/Models/AnalyticsModels/Span.js +14 -0
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertState.js +0 -2
- package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Domain.js +1 -1
- package/build/dist/Models/DatabaseModels/Domain.js.map +1 -1
- package/build/dist/Models/DatabaseModels/EnterpriseLicense.js +59 -0
- package/build/dist/Models/DatabaseModels/EnterpriseLicense.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +12 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricType.js +0 -2
- package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +75 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +0 -2
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTest.js +0 -2
- package/build/dist/Models/DatabaseModels/MonitorTest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js +713 -0
- package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +304 -4
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js +3 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js +677 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSite.js +200 -2
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js +102 -3
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js +878 -0
- package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncementTemplate.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncementTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageResource.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageResource.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +123 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js +363 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +402 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js +296 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js.map +1 -0
- package/build/dist/Server/API/EnterpriseLicenseAPI.js +273 -60
- package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
- package/build/dist/Server/API/LlmProviderAPI.js +108 -13
- package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +12 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.js +39 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js +111 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js +77 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js +50 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js +83 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +33 -5
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Middleware/BearerTokenAuthorization.js +12 -0
- package/build/dist/Server/Middleware/BearerTokenAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/ProjectAuthorization.js +11 -0
- package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/SCIMAuthorization.js +12 -0
- package/build/dist/Server/Middleware/SCIMAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +11 -0
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AIBillingService.js +70 -16
- package/build/dist/Server/Services/AIBillingService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +31 -5
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js +167 -0
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseService.js +39 -0
- package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +12 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +119 -21
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusTimelineService.js +127 -8
- package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +162 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js +1683 -0
- package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js.map +1 -0
- package/build/dist/Server/Services/NetworkAlertPolicyService.js +732 -0
- package/build/dist/Server/Services/NetworkAlertPolicyService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +10 -9
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +54 -11
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceRoleService.js +70 -0
- package/build/dist/Server/Services/NetworkDeviceRoleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceService.js +841 -70
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +1145 -107
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteTypeService.js +863 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js +217 -0
- package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js.map +1 -0
- package/build/dist/Server/Services/NotificationService.js +80 -17
- package/build/dist/Server/Services/NotificationService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +131 -30
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserService.js +92 -2
- package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js +76 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js +77 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js +111 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js +46 -21
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +90 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +14 -3
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +10 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +10 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +54 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +18 -4
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -1
- package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js +59 -0
- package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +2 -1
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +91 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +691 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +497 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +257 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -0
- package/build/dist/Server/Utils/LLM/LLMService.js +64 -1
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/LogRedaction.js +8 -0
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
- package/build/dist/Server/Utils/Logger.js +63 -1
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js +141 -0
- package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +8 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +51 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +7 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +37 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +158 -6
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.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 +32 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +330 -21
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +55 -10
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +178 -49
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +119 -29
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +30 -17
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -1
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js +158 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js.map +1 -0
- package/build/dist/Server/Utils/OutboundUserAgent.js +123 -0
- package/build/dist/Server/Utils/OutboundUserAgent.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +38 -14
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js +28 -8
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js +95 -0
- package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js +29 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry.js +162 -46
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Types/AI/ExceptionAIClassification.js +10 -24
- package/build/dist/Types/AI/ExceptionAIClassification.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js +2 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js.map +1 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js +7 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js.map +1 -0
- package/build/dist/Types/Exception/ApiException.js +9 -0
- package/build/dist/Types/Exception/ApiException.js.map +1 -1
- package/build/dist/Types/Exception/BadDataException.js +10 -0
- package/build/dist/Types/Exception/BadDataException.js.map +1 -1
- package/build/dist/Types/Exception/BadRequestException.js +10 -0
- package/build/dist/Types/Exception/BadRequestException.js.map +1 -1
- package/build/dist/Types/Exception/Exception.js +56 -0
- package/build/dist/Types/Exception/Exception.js.map +1 -1
- package/build/dist/Types/Exception/ForbiddenException.js +9 -0
- package/build/dist/Types/Exception/ForbiddenException.js.map +1 -1
- package/build/dist/Types/Exception/NotAuthenticatedException.js +9 -0
- package/build/dist/Types/Exception/NotAuthenticatedException.js.map +1 -1
- package/build/dist/Types/Exception/NotAuthorizedException.js +9 -0
- package/build/dist/Types/Exception/NotAuthorizedException.js.map +1 -1
- package/build/dist/Types/Exception/NotFoundException.js +10 -0
- package/build/dist/Types/Exception/NotFoundException.js.map +1 -1
- package/build/dist/Types/Exception/PayloadTooLargeException.js +10 -0
- package/build/dist/Types/Exception/PayloadTooLargeException.js.map +1 -1
- package/build/dist/Types/Exception/PaymentRequiredException.js +9 -0
- package/build/dist/Types/Exception/PaymentRequiredException.js.map +1 -1
- package/build/dist/Types/Exception/ServiceUnavailableException.js +9 -0
- package/build/dist/Types/Exception/ServiceUnavailableException.js.map +1 -1
- package/build/dist/Types/Exception/SsoAuthorizationException.js +9 -0
- package/build/dist/Types/Exception/SsoAuthorizationException.js.map +1 -1
- package/build/dist/Types/Exception/TenantNotFoundException.js +10 -0
- package/build/dist/Types/Exception/TenantNotFoundException.js.map +1 -1
- package/build/dist/Types/Exception/TimeoutException.js +9 -0
- package/build/dist/Types/Exception/TimeoutException.js.map +1 -1
- package/build/dist/Types/Exception/TooManyRequestsException.js +9 -0
- package/build/dist/Types/Exception/TooManyRequestsException.js.map +1 -1
- package/build/dist/Types/Exception/UnableToReachServer.js +9 -0
- package/build/dist/Types/Exception/UnableToReachServer.js.map +1 -1
- package/build/dist/Types/Exception/WebsiteRequestException.js +9 -0
- package/build/dist/Types/Exception/WebsiteRequestException.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +45 -2
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/DatabaseMetricCatalog.js +594 -0
- package/build/dist/Types/Monitor/DatabaseMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js +21 -0
- package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +70 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorMetricType.js +61 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +54 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js +122 -0
- package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +45 -1
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +21 -1
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -1
- package/build/dist/Types/Monitor/SqlConnectionConfig.js +2 -0
- package/build/dist/Types/Monitor/SqlConnectionConfig.js.map +1 -0
- package/build/dist/Types/NetworkDevice/DefaultNetworkDeviceRole.js +105 -0
- package/build/dist/Types/NetworkDevice/DefaultNetworkDeviceRole.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js +172 -0
- package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js +40 -22
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js.map +1 -1
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js +26 -0
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js +186 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js +87 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js.map +1 -0
- package/build/dist/Types/Permission.js +120 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/ErrorClass.js +216 -0
- package/build/dist/Types/Telemetry/ErrorClass.js.map +1 -0
- package/build/dist/Types/Telemetry/UnitOfWork.js +59 -0
- package/build/dist/Types/Telemetry/UnitOfWork.js.map +1 -0
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +6 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +79 -31
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +7 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +79 -31
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.js +14 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.js.map +1 -0
- package/build/dist/UI/Components/Charts/Line/LineChart.js +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js +2 -7
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +3 -0
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +2 -7
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +39 -13
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +39 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +44 -9
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +2 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/ProgressBar/ProgressBar.js +12 -1
- package/build/dist/UI/Components/ProgressBar/ProgressBar.js.map +1 -1
- package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js +6 -6
- package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +76 -11
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js +50 -54
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js +32 -9
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
- package/build/dist/UI/Components/SideOver/SideOver.js +5 -20
- package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
- package/build/dist/UI/Utils/PageScrollLock.js +31 -3
- package/build/dist/UI/Utils/PageScrollLock.js.map +1 -1
- package/build/dist/UI/Utils/PermissionGate.js +42 -1
- package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
- package/build/dist/UI/Utils/SensitiveUrlToken.js +97 -0
- package/build/dist/UI/Utils/SensitiveUrlToken.js.map +1 -0
- package/build/dist/UI/Utils/TestLLMProvider.js +4 -5
- package/build/dist/UI/Utils/TestLLMProvider.js.map +1 -1
- package/build/dist/UI/Utils/UseDashboardTimeRangeZoom.js +42 -0
- package/build/dist/UI/Utils/UseDashboardTimeRangeZoom.js.map +1 -0
- package/build/dist/Utils/Dashboard/DashboardTimeRangeZoom.js +74 -0
- package/build/dist/Utils/Dashboard/DashboardTimeRangeZoom.js.map +1 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +15 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +111 -9
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +109 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkDeviceRoleCatalog.js +126 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleCatalog.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js +2 -1
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +75 -35
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +27 -7
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +7 -5
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceRoleKeyUtil.js +114 -0
- package/build/dist/Utils/NetworkDevice/DeviceRoleKeyUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js +180 -0
- package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js +12 -0
- package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js +15 -5
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +44 -15
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js +52 -23
- package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +85 -13
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +30 -15
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js +191 -0
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js.map +1 -0
- package/build/dist/Utils/Rules/RulePatternMatchUtil.js +1 -1
- package/build/dist/Utils/Slug.js +31 -1
- package/build/dist/Utils/Slug.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The fault domain of a thrown value: whose problem is it?
|
|
3
|
+
*
|
|
4
|
+
* This is the canonical vocabulary for the whole platform. It was originally
|
|
5
|
+
* introduced as `ExceptionAIClassification` — an after-the-fact LLM verdict on
|
|
6
|
+
* an already-ingested exception group — but the same five values are what the
|
|
7
|
+
* emitting code needs in order to decide, at the moment an error is thrown,
|
|
8
|
+
* whether it is worth waking anyone up. That file now re-exports this one so
|
|
9
|
+
* there is exactly ONE answer to "what kind of failure is this" in the
|
|
10
|
+
* codebase, with several possible sources (declared > human > AI > default).
|
|
11
|
+
*
|
|
12
|
+
* - CodeFault: a defect in the monitored code — the only class the automatic
|
|
13
|
+
* fix lane opens pull requests for. This is the BASE DEFAULT on purpose:
|
|
14
|
+
* forgetting to classify an exception must leave it noisy, never silent.
|
|
15
|
+
* - UserError: expected consequence of invalid end-user input (bad
|
|
16
|
+
* parameters, malformed values). The right change, if any, is earlier
|
|
17
|
+
* validation and clearer error UX — routed to a human, never auto-fixed.
|
|
18
|
+
* - ExpectedDenial: an intentional check doing its job (auth failure,
|
|
19
|
+
* plan/paywall denial, scanner/fuzzer probe tripping validation).
|
|
20
|
+
* Never auto-fixed; optionally auto-archived.
|
|
21
|
+
* - Infrastructure: environmental conditions (timeouts, connection resets,
|
|
22
|
+
* resource exhaustion) where a code "fix" is usually tuning — routed to a
|
|
23
|
+
* human. NOTE: this stays an Issue. It is a real failure, just not one to
|
|
24
|
+
* auto-fix.
|
|
25
|
+
* - Unknown: triage could not decide — treated conservatively (no automatic
|
|
26
|
+
* fix, and still shown).
|
|
27
|
+
*/
|
|
28
|
+
enum ErrorClass {
|
|
29
|
+
CodeFault = "code-fault",
|
|
30
|
+
UserError = "user-error",
|
|
31
|
+
ExpectedDenial = "expected-denial",
|
|
32
|
+
Infrastructure = "infrastructure",
|
|
33
|
+
Unknown = "unknown",
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* The classes that do NOT warrant an Issue. Everything else — including
|
|
38
|
+
* Infrastructure and Unknown — stays loud.
|
|
39
|
+
*
|
|
40
|
+
* Exported as the single list so the emit path, the ingest path, the Issues
|
|
41
|
+
* list default scope and the AI detectors can never drift apart on which
|
|
42
|
+
* classes are suppressed.
|
|
43
|
+
*/
|
|
44
|
+
export const NON_ACTIONABLE_ERROR_CLASSES: ReadonlyArray<ErrorClass> = [
|
|
45
|
+
ErrorClass.UserError,
|
|
46
|
+
ErrorClass.ExpectedDenial,
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
export function isNonActionableErrorClass(value: unknown): boolean {
|
|
50
|
+
return NON_ACTIONABLE_ERROR_CLASSES.includes(value as ErrorClass);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Every value the enum can take, for validating strings that arrive from
|
|
55
|
+
* outside (an OTLP attribute, a database column written by an older release).
|
|
56
|
+
*/
|
|
57
|
+
export function toErrorClass(value: unknown): ErrorClass | null {
|
|
58
|
+
if (typeof value !== "string") {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const match: ErrorClass | undefined = Object.values(ErrorClass).find(
|
|
63
|
+
(candidate: ErrorClass) => {
|
|
64
|
+
return candidate === value;
|
|
65
|
+
},
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
return match ?? null;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/*
|
|
72
|
+
* `Symbol.for` rather than `Symbol()`: Common/ ships its own node_modules and
|
|
73
|
+
* is consumed by App/, Probe/, Runner/ and others, so this module can be
|
|
74
|
+
* instantiated more than once in a single process. A unique symbol would not
|
|
75
|
+
* match across those instances and a tag written by one copy would be
|
|
76
|
+
* invisible to another. The global symbol registry is keyed by string, so all
|
|
77
|
+
* copies agree.
|
|
78
|
+
*/
|
|
79
|
+
const ERROR_CLASS_SYMBOL: symbol = Symbol.for("oneuptime.error.class");
|
|
80
|
+
const ERROR_CLASS_AUTHORITATIVE_SYMBOL: symbol = Symbol.for(
|
|
81
|
+
"oneuptime.error.class.authoritative",
|
|
82
|
+
);
|
|
83
|
+
const ERROR_REPORTED_SYMBOL: symbol = Symbol.for("oneuptime.error.reported");
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* A fault domain plus how much to trust it.
|
|
87
|
+
*
|
|
88
|
+
* `authoritative: false` is a CLASS-LEVEL default — "BadDataException usually
|
|
89
|
+
* means the caller sent something wrong". It is a generalisation, so it is
|
|
90
|
+
* subject to the unit-of-work promotion: outside an HTTP request there is no
|
|
91
|
+
* caller, and the generalisation does not hold.
|
|
92
|
+
*
|
|
93
|
+
* `authoritative: true` is a SITE-LEVEL declaration — a developer looked at
|
|
94
|
+
* one specific throw or one specific log line and said what it is. That is a
|
|
95
|
+
* deliberate, reviewable judgment about a single place in the code, so it is
|
|
96
|
+
* never second-guessed. This is what lets a probe report "the endpoint we were
|
|
97
|
+
* asked to check is down" as a non-defect even though a probe check has no
|
|
98
|
+
* HTTP request around it.
|
|
99
|
+
*/
|
|
100
|
+
export interface DeclaredErrorClass {
|
|
101
|
+
errorClass: ErrorClass;
|
|
102
|
+
authoritative: boolean;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
type Taggable = { [key: symbol]: unknown };
|
|
106
|
+
|
|
107
|
+
function canTag(value: unknown): value is Taggable {
|
|
108
|
+
return (
|
|
109
|
+
value !== null && (typeof value === "object" || typeof value === "function")
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Attach a fault domain to a thrown value.
|
|
115
|
+
*
|
|
116
|
+
* `enumerable: false` keeps it invisible to `JSON.stringify`,
|
|
117
|
+
* `Logger.redactBody` and `Telemetry.getExceptionAttributes`, so tagging can
|
|
118
|
+
* never change what a log line or a span attribute bag looks like.
|
|
119
|
+
*
|
|
120
|
+
* Never throws: this runs from the `Exception` constructor and from catch
|
|
121
|
+
* blocks, where a frozen object or a hostile Proxy must not take down the
|
|
122
|
+
* error path. Returns the value so it can be tagged inline.
|
|
123
|
+
*/
|
|
124
|
+
export function tagErrorClass<T>(
|
|
125
|
+
value: T,
|
|
126
|
+
errorClass: ErrorClass,
|
|
127
|
+
authoritative: boolean = false,
|
|
128
|
+
): T {
|
|
129
|
+
if (!canTag(value)) {
|
|
130
|
+
return value;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
try {
|
|
134
|
+
Object.defineProperty(value, ERROR_CLASS_SYMBOL, {
|
|
135
|
+
value: errorClass,
|
|
136
|
+
enumerable: false,
|
|
137
|
+
writable: true,
|
|
138
|
+
configurable: true,
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
if (authoritative) {
|
|
142
|
+
Object.defineProperty(value, ERROR_CLASS_AUTHORITATIVE_SYMBOL, {
|
|
143
|
+
value: true,
|
|
144
|
+
enumerable: false,
|
|
145
|
+
writable: true,
|
|
146
|
+
configurable: true,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
} catch {
|
|
150
|
+
// Frozen / sealed / exotic object — the resolver falls back to CodeFault.
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return value;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Declare the fault domain for ONE specific throw or log line, overriding the
|
|
158
|
+
* class-level default and exempting it from the unit-of-work promotion.
|
|
159
|
+
*/
|
|
160
|
+
export function tagErrorClassAuthoritative<T>(
|
|
161
|
+
value: T,
|
|
162
|
+
errorClass: ErrorClass,
|
|
163
|
+
): T {
|
|
164
|
+
return tagErrorClass(value, errorClass, true);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Read the fault domain a thrown value declared for itself, or null when it
|
|
169
|
+
* declared none.
|
|
170
|
+
*
|
|
171
|
+
* A null return is meaningful and must stay distinct from
|
|
172
|
+
* `ErrorClass.Unknown`: "nobody predicted this" is the strongest possible
|
|
173
|
+
* signal that it is a bug, whereas Unknown means "we looked and could not
|
|
174
|
+
* tell". Callers turn null into CodeFault.
|
|
175
|
+
*
|
|
176
|
+
* Also duck-types off a plain `errorClass` property so an error crossing a
|
|
177
|
+
* process or module boundary (where the symbol is lost) can still declare
|
|
178
|
+
* itself.
|
|
179
|
+
*/
|
|
180
|
+
export function declaredErrorClass(value: unknown): DeclaredErrorClass | null {
|
|
181
|
+
if (!canTag(value)) {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
try {
|
|
186
|
+
const authoritative: boolean =
|
|
187
|
+
value[ERROR_CLASS_AUTHORITATIVE_SYMBOL] === true;
|
|
188
|
+
|
|
189
|
+
const tagged: ErrorClass | null = toErrorClass(value[ERROR_CLASS_SYMBOL]);
|
|
190
|
+
|
|
191
|
+
if (tagged !== null) {
|
|
192
|
+
return { errorClass: tagged, authoritative: authoritative };
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/*
|
|
196
|
+
* Duck-type off a plain property too, so an error that crossed a process
|
|
197
|
+
* or module boundary (where the symbol is lost) can still declare itself.
|
|
198
|
+
* A property survives serialization, so treat it as a deliberate
|
|
199
|
+
* declaration.
|
|
200
|
+
*/
|
|
201
|
+
const ducked: ErrorClass | null = toErrorClass(
|
|
202
|
+
(value as { errorClass?: unknown }).errorClass,
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
if (ducked !== null) {
|
|
206
|
+
return { errorClass: ducked, authoritative: true };
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return null;
|
|
210
|
+
} catch {
|
|
211
|
+
// Throwing getter on an exotic thrown value.
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Mark a thrown value as already reported, returning whether it had ALREADY
|
|
218
|
+
* been marked.
|
|
219
|
+
*
|
|
220
|
+
* This is what stops one thrown error from filing N exception events as it
|
|
221
|
+
* propagates through N `@CaptureSpan` frames. The fingerprint hashes no spanId
|
|
222
|
+
* and no span name, so without this every frame's event lands in the same
|
|
223
|
+
* group and `occuranceCount` jumps by the depth of the call stack — measured
|
|
224
|
+
* at 3 for a create with a missing field and 6 for a permission-denied
|
|
225
|
+
* get-list.
|
|
226
|
+
*
|
|
227
|
+
* Untaggable values (a thrown string, a frozen object) always report `false`,
|
|
228
|
+
* i.e. they are reported every time. Over-reporting is the safe direction.
|
|
229
|
+
*/
|
|
230
|
+
export function markErrorReported(value: unknown): boolean {
|
|
231
|
+
if (!canTag(value)) {
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
try {
|
|
236
|
+
const alreadyReported: boolean = value[ERROR_REPORTED_SYMBOL] === true;
|
|
237
|
+
|
|
238
|
+
if (!alreadyReported) {
|
|
239
|
+
Object.defineProperty(value, ERROR_REPORTED_SYMBOL, {
|
|
240
|
+
value: true,
|
|
241
|
+
enumerable: false,
|
|
242
|
+
writable: true,
|
|
243
|
+
configurable: true,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
return alreadyReported;
|
|
248
|
+
} catch {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Test seam: forget that a value was reported. Only used by tests that reuse
|
|
255
|
+
* one error object across cases.
|
|
256
|
+
*/
|
|
257
|
+
export function clearErrorReported(value: unknown): void {
|
|
258
|
+
if (!canTag(value)) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
try {
|
|
263
|
+
Object.defineProperty(value, ERROR_REPORTED_SYMBOL, {
|
|
264
|
+
value: false,
|
|
265
|
+
enumerable: false,
|
|
266
|
+
writable: true,
|
|
267
|
+
configurable: true,
|
|
268
|
+
});
|
|
269
|
+
} catch {
|
|
270
|
+
// Nothing to clear.
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
export default ErrorClass;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* What kind of work was in flight when something happened.
|
|
3
|
+
*
|
|
4
|
+
* This is the axis that makes class-based fault classification safe. The same
|
|
5
|
+
* exception class means different things depending on who asked for the work:
|
|
6
|
+
*
|
|
7
|
+
* throw new BadDataException("Monitor type required to create monitor.")
|
|
8
|
+
* -> inside an HTTP request: the caller sent a bad request. Not our bug.
|
|
9
|
+
*
|
|
10
|
+
* throw new BadDataException("No job found with name: " + name)
|
|
11
|
+
* -> inside a cron registration: an internal invariant we violated.
|
|
12
|
+
* Very much our bug.
|
|
13
|
+
*
|
|
14
|
+
* They are indistinguishable at the throw site and perfectly distinguishable
|
|
15
|
+
* by unit of work, so ErrorClassResolver promotes user-error and
|
|
16
|
+
* expected-denial back to code-fault everywhere except an HTTP request.
|
|
17
|
+
*
|
|
18
|
+
* Seed this EXPLICITLY at every entry point. TelemetryContext.runWithContext
|
|
19
|
+
* inherits the enclosing scope's attributes, so an unset value would let a
|
|
20
|
+
* request's "http-request" marker leak into background work started from
|
|
21
|
+
* inside that request.
|
|
22
|
+
*/
|
|
23
|
+
export enum UnitOfWork {
|
|
24
|
+
HttpRequest = "http-request",
|
|
25
|
+
WorkerJob = "worker-job",
|
|
26
|
+
CronJob = "cron-job",
|
|
27
|
+
ProbeCheck = "probe-check",
|
|
28
|
+
Notification = "notification",
|
|
29
|
+
Startup = "startup",
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Which deployment role produced this telemetry.
|
|
34
|
+
*
|
|
35
|
+
* Distinct from UnitOfWork, and distinct from `service.name`: the Helm chart
|
|
36
|
+
* runs the worker as a separate Deployment but from the same image and the
|
|
37
|
+
* same entrypoint (it only flips DISABLE_QUEUE_WORKERS), so worker pods report
|
|
38
|
+
* `service.name = "api"`. Until that changes — which re-keys every worker
|
|
39
|
+
* exception fingerprint and therefore needs its own release — this attribute
|
|
40
|
+
* is how "which component" becomes filterable.
|
|
41
|
+
*/
|
|
42
|
+
export enum TelemetryComponent {
|
|
43
|
+
Api = "api",
|
|
44
|
+
Worker = "worker",
|
|
45
|
+
Cron = "cron",
|
|
46
|
+
Probe = "probe",
|
|
47
|
+
Notification = "notification",
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Ambient TelemetryContext / span attribute keys. String constants rather than
|
|
52
|
+
* inline literals so the emit path, drop filters, dashboards and tests cannot
|
|
53
|
+
* drift apart on spelling.
|
|
54
|
+
*/
|
|
55
|
+
export const UNIT_OF_WORK_ATTRIBUTE_KEY: string = "oneuptime.unit_of_work";
|
|
56
|
+
export const COMPONENT_ATTRIBUTE_KEY: string = "oneuptime.component";
|
|
57
|
+
|
|
58
|
+
/** Span/log attribute carrying the resolved fault domain. */
|
|
59
|
+
export const ERROR_CLASS_ATTRIBUTE_KEY: string = "error.class";
|
|
@@ -63,6 +63,12 @@ export interface ComponentProps {
|
|
|
63
63
|
* buckets calls back with the [start, end) of the selected time range.
|
|
64
64
|
*/
|
|
65
65
|
onTimeRangeSelect?: ((startTime: Date, endTime: Date) => void) | undefined;
|
|
66
|
+
/*
|
|
67
|
+
* Double-click on the plot: undoes whatever drag-to-select produced.
|
|
68
|
+
* Supply it only when a reset is actually possible — see ChartLibrary
|
|
69
|
+
* onTimeRangeReset for why an idle handler costs click latency.
|
|
70
|
+
*/
|
|
71
|
+
onTimeRangeReset?: (() => void) | undefined;
|
|
66
72
|
// Plain click on a bucket — see ChartLibrary onBucketClick.
|
|
67
73
|
onBucketClick?:
|
|
68
74
|
| ((
|
|
@@ -241,6 +247,7 @@ const AreaChartElement: FunctionComponent<AreaInternalProps> = (
|
|
|
241
247
|
}
|
|
242
248
|
onExemplarClick={props.onExemplarClick}
|
|
243
249
|
onTimeRangeSelect={props.onTimeRangeSelect}
|
|
250
|
+
onTimeRangeReset={props.onTimeRangeReset}
|
|
244
251
|
onBucketClick={props.onBucketClick}
|
|
245
252
|
ghostCategories={props.ghostSeriesNames}
|
|
246
253
|
anomalyBandLowerKey={bandLower}
|
|
@@ -58,6 +58,11 @@ export interface ComponentProps {
|
|
|
58
58
|
* indexed by series position (index % length), matching the default palette.
|
|
59
59
|
*/
|
|
60
60
|
colors?: Array<ChartColorValue> | undefined;
|
|
61
|
+
/*
|
|
62
|
+
* Double-click on the plot: undoes a board-wide zoom. Bar panels have no
|
|
63
|
+
* drag-to-select of their own but share the dashboard's time range.
|
|
64
|
+
*/
|
|
65
|
+
onTimeRangeReset?: (() => void) | undefined;
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
export interface BarInternalProps extends ComponentProps {
|
|
@@ -152,6 +157,7 @@ const BarChartElement: FunctionComponent<BarInternalProps> = (
|
|
|
152
157
|
? formattedReferenceRegions
|
|
153
158
|
: undefined
|
|
154
159
|
}
|
|
160
|
+
onTimeRangeReset={props.onTimeRangeReset}
|
|
155
161
|
/>
|
|
156
162
|
{hasNoData && <NoDataMessage />}
|
|
157
163
|
</div>
|
|
@@ -147,9 +147,17 @@ const ChartGroup: FunctionComponent<ComponentProps> = (
|
|
|
147
147
|
return <></>;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
+
/*
|
|
151
|
+
* The way back out is only worth naming while there is something to
|
|
152
|
+
* reset — the host supplies onTimeRangeReset exactly then.
|
|
153
|
+
*/
|
|
154
|
+
const canReset: boolean = Boolean(
|
|
155
|
+
(chart.props as LineChartProps | AreaChartProps).onTimeRangeReset,
|
|
156
|
+
);
|
|
157
|
+
|
|
150
158
|
return (
|
|
151
159
|
<span className="ml-auto shrink-0 whitespace-nowrap text-[10px] text-gray-400">
|
|
152
|
-
Drag to zoom
|
|
160
|
+
{canReset ? "Drag to zoom · double-click to reset" : "Drag to zoom"}
|
|
153
161
|
</span>
|
|
154
162
|
);
|
|
155
163
|
};
|
|
@@ -40,6 +40,7 @@ import useChartAnnotations, {
|
|
|
40
40
|
UseChartAnnotationsResult,
|
|
41
41
|
} from "../Annotations/UseChartAnnotations";
|
|
42
42
|
import { cx } from "../Utils/Cx";
|
|
43
|
+
import { DOUBLE_CLICK_DISAMBIGUATION_MS } from "../Utils/DoubleClick";
|
|
43
44
|
import { getYAxisDomain } from "../Utils/GetYAxisDomain";
|
|
44
45
|
import { hasOnlyOneValueForKey } from "../Utils/HasOnlyOneValueForKey";
|
|
45
46
|
import {
|
|
@@ -625,6 +626,15 @@ interface AreaChartProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
625
626
|
formattedExemplarPoints?: Array<FormattedExemplarPoint> | undefined;
|
|
626
627
|
onExemplarClick?: ((exemplar: ExemplarPoint) => void) | undefined;
|
|
627
628
|
onTimeRangeSelect?: ((startTime: Date, endTime: Date) => void) | undefined;
|
|
629
|
+
/**
|
|
630
|
+
* Double-click on the plot surface: the counterpart to drag-to-select,
|
|
631
|
+
* for undoing the zoom it produced. Supplying it makes single clicks
|
|
632
|
+
* wait DOUBLE_CLICK_DISAMBIGUATION_MS before they act, so a double-click
|
|
633
|
+
* cannot also fire the bucket-click path twice on its way past — hosts
|
|
634
|
+
* that have nothing to reset should leave it undefined and keep clicks
|
|
635
|
+
* instant.
|
|
636
|
+
*/
|
|
637
|
+
onTimeRangeReset?: (() => void) | undefined;
|
|
628
638
|
/**
|
|
629
639
|
* Plain click on a time bucket (the plot background — dot/legend clicks
|
|
630
640
|
* and drag-selections never reach this). [bucketStart, bucketEnd) uses
|
|
@@ -693,6 +703,7 @@ const AreaChart: React.ForwardRefExoticComponent<
|
|
|
693
703
|
formattedTimeReferenceLines,
|
|
694
704
|
formattedReferenceRegions,
|
|
695
705
|
onTimeRangeSelect,
|
|
706
|
+
onTimeRangeReset,
|
|
696
707
|
onBucketClick,
|
|
697
708
|
ghostCategories,
|
|
698
709
|
...other
|
|
@@ -723,9 +734,26 @@ const AreaChart: React.ForwardRefExoticComponent<
|
|
|
723
734
|
React.useRef<number | null>(null);
|
|
724
735
|
const suppressNextClickRef: React.MutableRefObject<boolean> =
|
|
725
736
|
React.useRef<boolean>(false);
|
|
737
|
+
const hasOnTimeRangeReset: boolean = Boolean(onTimeRangeReset);
|
|
738
|
+
/*
|
|
739
|
+
* A pending single-click, held open long enough for a second click to
|
|
740
|
+
* cancel it. Only armed when onTimeRangeReset is supplied.
|
|
741
|
+
*/
|
|
742
|
+
const pendingClickTimeoutRef: React.MutableRefObject<ReturnType<
|
|
743
|
+
typeof setTimeout
|
|
744
|
+
> | null> = React.useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
726
745
|
const categoryColors: Map<string, ChartColorValue> =
|
|
727
746
|
constructCategoryColors(categories, colors);
|
|
728
747
|
|
|
748
|
+
React.useEffect(() => {
|
|
749
|
+
return () => {
|
|
750
|
+
if (pendingClickTimeoutRef.current !== null) {
|
|
751
|
+
clearTimeout(pendingClickTimeoutRef.current);
|
|
752
|
+
pendingClickTimeoutRef.current = null;
|
|
753
|
+
}
|
|
754
|
+
};
|
|
755
|
+
}, []);
|
|
756
|
+
|
|
729
757
|
/*
|
|
730
758
|
* Annotations are drawn onto the categorical axis, so the layer needs
|
|
731
759
|
* the same x values recharts is drawing — not the source dates.
|
|
@@ -971,6 +999,51 @@ const AreaChart: React.ForwardRefExoticComponent<
|
|
|
971
999
|
onTimeRangeSelect(startDate, endDate);
|
|
972
1000
|
}
|
|
973
1001
|
|
|
1002
|
+
/*
|
|
1003
|
+
* The plain-click path, split out so it can either run inline (no
|
|
1004
|
+
* reset handler) or be deferred behind the double-click window.
|
|
1005
|
+
*/
|
|
1006
|
+
function handleChartClick(chartState: RangeSelectionChartState): void {
|
|
1007
|
+
/*
|
|
1008
|
+
* A click while a legend/dot selection is active keeps its
|
|
1009
|
+
* long-standing meaning — clear the selection — and never
|
|
1010
|
+
* also pins a bucket.
|
|
1011
|
+
*/
|
|
1012
|
+
if (hasOnValueChange && (activeLegend || activeDot)) {
|
|
1013
|
+
setActiveDot(undefined);
|
|
1014
|
+
setActiveLegend(undefined);
|
|
1015
|
+
onValueChange?.(null);
|
|
1016
|
+
return;
|
|
1017
|
+
}
|
|
1018
|
+
if (!onBucketClick) {
|
|
1019
|
+
return;
|
|
1020
|
+
}
|
|
1021
|
+
const rowIndex: number | null = getRowIndexFromChartState(chartState);
|
|
1022
|
+
if (rowIndex === null) {
|
|
1023
|
+
return;
|
|
1024
|
+
}
|
|
1025
|
+
const bucketStart: Date | null = getBucketDateAtIndex(rowIndex);
|
|
1026
|
+
if (!bucketStart) {
|
|
1027
|
+
return;
|
|
1028
|
+
}
|
|
1029
|
+
/*
|
|
1030
|
+
* Cover the full bucket: width from adjacent row dates, the
|
|
1031
|
+
* same derivation drag-to-select uses.
|
|
1032
|
+
*/
|
|
1033
|
+
const adjacentBucketDate: Date | null =
|
|
1034
|
+
rowIndex > 0
|
|
1035
|
+
? getBucketDateAtIndex(rowIndex - 1)
|
|
1036
|
+
: getBucketDateAtIndex(rowIndex + 1);
|
|
1037
|
+
const clickedBucketWidthInMs: number = adjacentBucketDate
|
|
1038
|
+
? Math.abs(bucketStart.getTime() - adjacentBucketDate.getTime())
|
|
1039
|
+
: 0;
|
|
1040
|
+
onBucketClick(
|
|
1041
|
+
bucketStart,
|
|
1042
|
+
new Date(bucketStart.getTime() + clickedBucketWidthInMs),
|
|
1043
|
+
(data[rowIndex] || {}) as Record<string, number | string>,
|
|
1044
|
+
);
|
|
1045
|
+
}
|
|
1046
|
+
|
|
974
1047
|
return (
|
|
975
1048
|
<div
|
|
976
1049
|
ref={ref}
|
|
@@ -1009,46 +1082,35 @@ const AreaChart: React.ForwardRefExoticComponent<
|
|
|
1009
1082
|
if (suppressNextClickRef.current) {
|
|
1010
1083
|
return;
|
|
1011
1084
|
}
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
* long-standing meaning — clear the selection — and never
|
|
1015
|
-
* also pins a bucket.
|
|
1016
|
-
*/
|
|
1017
|
-
if (hasOnValueChange && (activeLegend || activeDot)) {
|
|
1018
|
-
setActiveDot(undefined);
|
|
1019
|
-
setActiveLegend(undefined);
|
|
1020
|
-
onValueChange?.(null);
|
|
1021
|
-
return;
|
|
1022
|
-
}
|
|
1023
|
-
if (!onBucketClick) {
|
|
1024
|
-
return;
|
|
1025
|
-
}
|
|
1026
|
-
const rowIndex: number | null =
|
|
1027
|
-
getRowIndexFromChartState(chartState);
|
|
1028
|
-
if (rowIndex === null) {
|
|
1029
|
-
return;
|
|
1030
|
-
}
|
|
1031
|
-
const bucketStart: Date | null = getBucketDateAtIndex(rowIndex);
|
|
1032
|
-
if (!bucketStart) {
|
|
1085
|
+
if (!hasOnTimeRangeReset) {
|
|
1086
|
+
handleChartClick(chartState);
|
|
1033
1087
|
return;
|
|
1034
1088
|
}
|
|
1035
1089
|
/*
|
|
1036
|
-
*
|
|
1037
|
-
*
|
|
1090
|
+
* Reset is on, so hold the click open: both clicks of a
|
|
1091
|
+
* double-click arrive before dblclick does, and neither
|
|
1092
|
+
* may pin a bucket. The second click re-arms the timer,
|
|
1093
|
+
* dblclick clears it.
|
|
1038
1094
|
*/
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
onBucketClick(
|
|
1047
|
-
bucketStart,
|
|
1048
|
-
new Date(bucketStart.getTime() + bucketWidthInMs),
|
|
1049
|
-
(data[rowIndex] || {}) as Record<string, number | string>,
|
|
1050
|
-
);
|
|
1095
|
+
if (pendingClickTimeoutRef.current !== null) {
|
|
1096
|
+
clearTimeout(pendingClickTimeoutRef.current);
|
|
1097
|
+
}
|
|
1098
|
+
pendingClickTimeoutRef.current = setTimeout(() => {
|
|
1099
|
+
pendingClickTimeoutRef.current = null;
|
|
1100
|
+
handleChartClick(chartState);
|
|
1101
|
+
}, DOUBLE_CLICK_DISAMBIGUATION_MS);
|
|
1051
1102
|
}}
|
|
1103
|
+
{...(hasOnTimeRangeReset
|
|
1104
|
+
? {
|
|
1105
|
+
onDoubleClick: () => {
|
|
1106
|
+
if (pendingClickTimeoutRef.current !== null) {
|
|
1107
|
+
clearTimeout(pendingClickTimeoutRef.current);
|
|
1108
|
+
pendingClickTimeoutRef.current = null;
|
|
1109
|
+
}
|
|
1110
|
+
onTimeRangeReset?.();
|
|
1111
|
+
},
|
|
1112
|
+
}
|
|
1113
|
+
: {})}
|
|
1052
1114
|
margin={{
|
|
1053
1115
|
bottom: (xAxisLabel
|
|
1054
1116
|
? 40
|
|
@@ -692,6 +692,12 @@ interface BarChartProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
692
692
|
referenceLines?: Array<ChartReferenceLineProps> | undefined;
|
|
693
693
|
formattedTimeReferenceLines?: Array<FormattedTimeReferenceLine> | undefined;
|
|
694
694
|
formattedReferenceRegions?: Array<FormattedReferenceRegion> | undefined;
|
|
695
|
+
/**
|
|
696
|
+
* Double-click on the plot surface. Bar charts have no drag-to-select of
|
|
697
|
+
* their own, but they sit on the same dashboards as line/area panels and
|
|
698
|
+
* must offer the same way out of a board-wide zoom.
|
|
699
|
+
*/
|
|
700
|
+
onTimeRangeReset?: (() => void) | undefined;
|
|
695
701
|
}
|
|
696
702
|
|
|
697
703
|
const BarChart: React.ForwardRefExoticComponent<
|
|
@@ -735,6 +741,7 @@ const BarChart: React.ForwardRefExoticComponent<
|
|
|
735
741
|
customTooltip,
|
|
736
742
|
formattedTimeReferenceLines,
|
|
737
743
|
formattedReferenceRegions,
|
|
744
|
+
onTimeRangeReset,
|
|
738
745
|
...other
|
|
739
746
|
} = props;
|
|
740
747
|
const CustomTooltip: React.ComponentType<any> | undefined = customTooltip;
|
|
@@ -877,6 +884,13 @@ const BarChart: React.ForwardRefExoticComponent<
|
|
|
877
884
|
onClick: handleChartClick,
|
|
878
885
|
}
|
|
879
886
|
: {})}
|
|
887
|
+
{...(onTimeRangeReset
|
|
888
|
+
? {
|
|
889
|
+
onDoubleClick: () => {
|
|
890
|
+
onTimeRangeReset();
|
|
891
|
+
},
|
|
892
|
+
}
|
|
893
|
+
: {})}
|
|
880
894
|
margin={{
|
|
881
895
|
bottom: xAxisLabel ? 40 : showXAxis ? 24 : 8,
|
|
882
896
|
left: yAxisLabel ? 20 : 0,
|