@oneuptime/common 12.0.30 → 12.0.32
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/SecurityEvent.ts +48 -16
- package/Models/AnalyticsModels/ThreatIntelIndicator.ts +10 -5
- package/Models/DatabaseModels/AlertSeverity.ts +44 -0
- package/Models/DatabaseModels/AlertState.ts +0 -2
- package/Models/DatabaseModels/DetectionRule.ts +16 -5
- package/Models/DatabaseModels/Domain.ts +1 -1
- package/Models/DatabaseModels/GoogleSecOpsConnection.ts +14 -5
- package/Models/DatabaseModels/Incident.ts +1 -1
- package/Models/DatabaseModels/IncidentSeverity.ts +44 -0
- package/Models/DatabaseModels/IncidentTemplate.ts +1 -1
- package/Models/DatabaseModels/Index.ts +4 -0
- package/Models/DatabaseModels/MetricType.ts +0 -2
- package/Models/DatabaseModels/MonitorStatusTimeline.ts +0 -2
- package/Models/DatabaseModels/MonitorTest.ts +0 -2
- package/Models/DatabaseModels/NetworkDevice.ts +234 -5
- package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +88 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +22 -0
- package/Models/DatabaseModels/NetworkDeviceOidTemplate.ts +501 -0
- package/Models/DatabaseModels/NetworkDeviceRole.ts +648 -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/ThreatIntelFeed.ts +16 -5
- package/Server/API/GlobalConfigAPI.ts +362 -183
- package/Server/API/TelemetryAPI.ts +42 -4
- package/Server/EnvironmentConfig.ts +112 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.ts +59 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.ts +72 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
- package/Server/Middleware/MultipartFormData.ts +118 -32
- package/Server/Services/AlertEpisodeLabelRuleEngineService.ts +9 -1
- package/Server/Services/AlertEpisodeOnCallRuleEngineService.ts +9 -1
- package/Server/Services/AlertEpisodeOwnerRuleEngineService.ts +9 -1
- package/Server/Services/AlertEpisodePrivacyRuleEngineService.ts +9 -1
- package/Server/Services/AlertGroupingEngineService.ts +9 -1
- package/Server/Services/AlertLabelRuleEngineService.ts +9 -1
- package/Server/Services/AlertOnCallRuleEngineService.ts +9 -1
- package/Server/Services/AlertOwnerRuleEngineService.ts +9 -1
- package/Server/Services/AlertPrivacyRuleEngineService.ts +9 -1
- package/Server/Services/AlertReminderRuleService.ts +9 -1
- package/Server/Services/AutoRemediationRuleEngineService.ts +9 -1
- package/Server/Services/CephClusterLabelRuleEngineService.ts +9 -1
- package/Server/Services/CephClusterOwnerRuleEngineService.ts +9 -1
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +9 -1
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +9 -1
- package/Server/Services/DashboardLabelRuleEngineService.ts +9 -1
- package/Server/Services/DashboardOwnerRuleEngineService.ts +9 -1
- package/Server/Services/DatabaseService.ts +39 -9
- package/Server/Services/DockerHostLabelRuleEngineService.ts +9 -1
- package/Server/Services/DockerHostOwnerRuleEngineService.ts +9 -1
- package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +9 -1
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +9 -1
- package/Server/Services/HostLabelRuleEngineService.ts +9 -1
- package/Server/Services/HostOwnerRuleEngineService.ts +9 -1
- package/Server/Services/IncidentEpisodeLabelRuleEngineService.ts +9 -1
- package/Server/Services/IncidentEpisodeOnCallRuleEngineService.ts +9 -1
- package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +9 -1
- package/Server/Services/IncidentEpisodePrivacyRuleEngineService.ts +9 -1
- package/Server/Services/IncidentGroupingEngineService.ts +9 -1
- package/Server/Services/IncidentLabelRuleEngineService.ts +9 -1
- package/Server/Services/IncidentOnCallRuleEngineService.ts +9 -1
- package/Server/Services/IncidentOwnerRuleEngineService.ts +9 -1
- package/Server/Services/IncidentPrivacyRuleEngineService.ts +9 -1
- package/Server/Services/IncidentReminderRuleService.ts +9 -1
- package/Server/Services/IncidentSlaRuleService.ts +9 -1
- package/Server/Services/IncomingCallPolicyLabelRuleEngineService.ts +9 -1
- package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +9 -1
- package/Server/Services/Index.ts +4 -0
- package/Server/Services/IoTFleetLabelRuleEngineService.ts +9 -1
- package/Server/Services/IoTFleetOwnerRuleEngineService.ts +9 -1
- package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +9 -1
- package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +9 -1
- package/Server/Services/KubernetesResourceService.ts +5 -1
- package/Server/Services/MonitorLabelRuleEngineService.ts +9 -1
- package/Server/Services/MonitorOwnerRuleEngineService.ts +9 -1
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +35 -0
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +96 -0
- package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +9 -1
- package/Server/Services/NetworkDeviceOidTemplateService.ts +201 -0
- package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +9 -1
- package/Server/Services/NetworkDeviceRoleService.ts +90 -0
- package/Server/Services/NetworkDeviceService.ts +209 -1
- package/Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts +9 -1
- package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +9 -1
- package/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts +9 -1
- package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +9 -1
- package/Server/Services/PodmanHostLabelRuleEngineService.ts +9 -1
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +9 -1
- package/Server/Services/ProjectService.ts +85 -0
- package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +9 -1
- package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +9 -1
- package/Server/Services/RumApplicationLabelRuleEngineService.ts +9 -1
- package/Server/Services/RumApplicationOwnerRuleEngineService.ts +9 -1
- package/Server/Services/RunbookLabelRuleEngineService.ts +9 -1
- package/Server/Services/RunbookOwnerRuleEngineService.ts +9 -1
- package/Server/Services/RunbookRuleEngineService.ts +9 -1
- package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +9 -1
- package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +9 -1
- package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +9 -1
- package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +9 -1
- package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +9 -1
- package/Server/Services/ServiceLabelRuleEngineService.ts +9 -1
- package/Server/Services/ServiceOwnerRuleEngineService.ts +9 -1
- package/Server/Services/StatusPageLabelRuleEngineService.ts +9 -1
- package/Server/Services/StatusPageMonitorRuleEngineService.ts +7 -0
- package/Server/Services/StatusPageOwnerRuleEngineService.ts +9 -1
- package/Server/Services/TelemetrySourceMapService.ts +266 -23
- package/Server/Services/UserNotificationSettingService.ts +0 -6
- package/Server/Services/UserService.ts +27 -0
- package/Server/Services/WorkflowLabelRuleEngineService.ts +9 -1
- package/Server/Services/WorkflowOwnerRuleEngineService.ts +9 -1
- package/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.ts +186 -0
- package/Server/Utils/Monitor/CapturedMetricAttributeUtil.ts +245 -0
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +21 -2
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +55 -21
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +32 -0
- package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +15 -2
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +18 -1
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +10 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +34 -0
- package/Server/Utils/Rules/RuleEngineRuleRead.ts +48 -0
- package/Server/Utils/Telemetry/ExceptionSanitizer.ts +14 -1
- package/Server/Utils/Telemetry/LogExceptionExtractor.ts +14 -2
- package/Server/Utils/Telemetry/SourceMapResolver.ts +16 -5
- package/Server/Utils/Telemetry/StackTraceParser.ts +399 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +31 -1
- package/Tests/App/Dashboard/DashboardChartWidgetZoom.test.tsx +35 -8
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +107 -3
- package/Tests/App/Dashboard/DashboardWideChartZoom.test.tsx +401 -0
- package/Tests/App/Dashboard/EventOverlayHook.test.tsx +125 -0
- package/Tests/App/Dashboard/HeaderImageAssets.test.tsx +93 -0
- package/Tests/App/Dashboard/MonitorTemplateColumnAndFacet.test.tsx +318 -0
- package/Tests/App/Dashboard/NetworkDeviceBulkDelete.test.tsx +357 -0
- package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +590 -0
- package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +3 -3
- package/Tests/App/Dashboard/SideMenuHarness.tsx +11 -3
- package/Tests/App/Dashboard/UserElementEmail.test.tsx +12 -4
- package/Tests/App/Dashboard/UserEmailCallSites.test.tsx +1 -1
- package/Tests/Models/DatabaseModels/DomainRoleTierCoverage.test.ts +14 -0
- package/Tests/Models/DatabaseModels/ModelRegistryInvariants.test.ts +543 -0
- package/Tests/Models/SecurityDomainAccessControl.test.ts +429 -0
- package/Tests/Server/API/GlobalConfigLicense.test.ts +657 -0
- package/Tests/Server/API/SecurityEventAttributesAPI.test.ts +84 -6
- package/Tests/Server/API/TelemetryResolveStackTraceAPI.test.ts +805 -0
- package/Tests/Server/Infrastructure/Postgres/AddOnCallCalendarFeedsMigration.test.ts +32 -7
- package/Tests/Server/Infrastructure/Postgres/NetworkDeviceRoleTableMigration.test.ts +476 -0
- package/Tests/Server/Middleware/IdentityRateLimit.test.ts +1144 -0
- package/Tests/Server/Middleware/MultipartFormData.test.ts +618 -3
- package/Tests/Server/Services/DatabaseServiceGenerateSlug.test.ts +215 -0
- package/Tests/Server/Services/MonitorLabelRuleEngineScale.test.ts +520 -0
- package/Tests/Server/Services/NetworkDeviceOidTemplateService.test.ts +332 -0
- package/Tests/Server/Services/NetworkDeviceOidTemplateWriteGuards.test.ts +409 -0
- package/Tests/Server/Services/NetworkDeviceRoleModel.test.ts +672 -0
- package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +1 -1
- package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +67 -4
- package/Tests/Server/Services/RuleEngineRuleFetchLimit.test.ts +239 -0
- package/Tests/Server/Services/ScheduledMaintenanceSubscriberEndTime.test.ts +369 -0
- package/Tests/Server/Services/TelemetrySourceMapService.test.ts +1210 -2
- package/Tests/Server/Services/UserNotificationSettingMonitorDefaults.test.ts +248 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +43 -2
- package/Tests/Server/Services/UserServiceSeatLimit.test.ts +182 -0
- package/Tests/Server/Types/AnalyticsDatabase/SecurityEventModelPermission.test.ts +255 -0
- package/Tests/Server/Types/Database/Permissions/ReadBlockPermission.test.ts +212 -0
- package/Tests/Server/Types/Database/Permissions/SecurityRoleAccess.test.ts +413 -0
- package/Tests/Server/Utils/BasicCron.test.ts +283 -0
- package/Tests/Server/Utils/CodeRepository.test.ts +689 -0
- package/Tests/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.test.ts +495 -0
- package/Tests/Server/Utils/ExceptionSanitizer.test.ts +77 -0
- package/Tests/Server/Utils/IncomingCallPhoneNumber.test.ts +174 -0
- package/Tests/Server/Utils/Monitor/CapturedMetricAttributeUtil.test.ts +284 -0
- package/Tests/Server/Utils/Monitor/MonitorCustomMetricAttributes.test.ts +503 -0
- package/Tests/Server/Utils/Monitor/MonitorTemplatePrototypePollution.test.ts +106 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkLogWritePath.test.ts +33 -4
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +14 -4
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +44 -0
- package/Tests/Server/Utils/OpenAPISpec.test.ts +536 -0
- package/Tests/Server/Utils/Rules/RuleEngineRuleRead.test.ts +115 -0
- package/Tests/Server/Utils/StackTraceParser.test.ts +610 -0
- package/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.ts +0 -0
- package/Tests/Server/Utils/Telemetry/SourceMapLimits.test.ts +656 -0
- package/Tests/Server/Utils/Telemetry/SourceMapResolver.test.ts +100 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpOidListUtil.test.ts +454 -0
- package/Tests/Types/NetworkDevice/DefaultNetworkDeviceRole.test.ts +417 -0
- package/Tests/Types/SecurityRolePermissions.test.ts +193 -0
- package/Tests/UI/Components/Charts/AnnotationLayout.test.ts +773 -0
- package/Tests/UI/Components/Charts/ChartAnnotationRail.test.tsx +789 -0
- package/Tests/UI/Components/Charts/ChartBucketIdentity.test.ts +254 -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/Charts/TimeAnnotation.test.ts +471 -0
- package/Tests/UI/Components/EditionLabelLicenseRefresh.test.tsx +405 -0
- package/Tests/UI/Components/ErrorMessageRefreshControl.test.tsx +83 -0
- package/Tests/UI/Components/MarkdownConverters.test.ts +686 -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/BaseModelTableDeleteAndEmptyStates.test.tsx +341 -0
- package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +89 -0
- package/Tests/UI/Components/NavBarCommandKGating.test.tsx +103 -8
- package/Tests/UI/Components/OrderedStatesList.test.tsx +5 -5
- package/Tests/UI/Components/PendingProjectInvitations.test.tsx +1 -1
- package/Tests/UI/Components/SideMenuItem.test.tsx +30 -0
- package/Tests/UI/Components/TableSortAndMobileColumns.test.tsx +195 -0
- package/Tests/UI/Components/XAxis.test.ts +270 -5
- package/Tests/UI/Components/XAxisDaylightSaving.test.ts +113 -0
- package/Tests/UI/Styles/ChartFocusRing.test.ts +153 -0
- package/Tests/UI/Styles/ChartFocusRingCoverage.test.tsx +377 -0
- package/Tests/UI/Styles/ThemeStylesheet.ts +162 -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 +507 -0
- package/Tests/Utils/Monitor/NetworkDeviceRoleCatalog.test.ts +981 -0
- package/Tests/Utils/Monitor/NetworkTopologyRoleCatalog.test.ts +865 -0
- package/Tests/Utils/NetworkDevice/DeviceRoleKeyUtil.test.ts +538 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +951 -1
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +238 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +1056 -0
- package/Tests/Utils/NetworkDiscovery/ReverseDnsNameUtil.test.ts +882 -0
- package/Tests/Utils/Slo/SloEvaluation.test.ts +171 -0
- package/Tests/Utils/Slug.test.ts +61 -1
- package/Tests/jest.setup.ts +19 -0
- package/Types/Date.ts +39 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +61 -0
- package/Types/Monitor/SnmpMonitor/SnmpOidListUtil.ts +333 -0
- package/Types/NetworkDevice/DefaultNetworkDeviceRole.ts +145 -0
- package/Types/Permission.ts +141 -0
- package/Types/Rum/SessionReplay.ts +21 -0
- package/Types/Telemetry/SourceMap.ts +8 -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/Annotations/AnnotationHoverCard.tsx +176 -0
- package/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.ts +745 -0
- package/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.tsx +576 -0
- package/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.tsx +204 -0
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +554 -545
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +337 -371
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +549 -540
- package/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.ts +7 -3
- package/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.ts +14 -3
- package/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.ts +13 -0
- package/UI/Components/Charts/Line/LineChart.tsx +7 -0
- package/UI/Components/Charts/Types/ChartEventKind.ts +13 -0
- package/UI/Components/Charts/Types/ReferenceRegionProps.ts +6 -0
- package/UI/Components/Charts/Types/TimeReferenceLineProps.ts +20 -3
- package/UI/Components/Charts/Utils/TimeAnnotation.ts +69 -35
- package/UI/Components/Charts/Utils/XAxis.ts +125 -18
- package/UI/Components/EditionLabel/EditionLabel.tsx +280 -26
- package/UI/Components/ErrorMessage/ErrorMessage.tsx +21 -10
- package/UI/Components/Feed/FeedItem.tsx +4 -5
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +1 -2
- package/UI/Components/Header/UserProfile/UserProfile.tsx +1 -2
- package/UI/Components/Image/Image.tsx +20 -3
- package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
- package/UI/Components/MemberRoleAssignment/MemberRoleAssignment.tsx +1 -2
- package/UI/Components/ModelTable/BaseModelTable.tsx +200 -39
- package/UI/Components/Navbar/NavBar.tsx +62 -13
- package/UI/Components/Navbar/NavBarMenuModal.tsx +7 -2
- package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +2 -0
- package/UI/Components/SideMenu/SideMenu.tsx +12 -2
- package/UI/Components/SideMenu/SideMenuItem.tsx +4 -1
- package/UI/Components/SideMenu/SideMenuSection.tsx +14 -2
- package/UI/Components/Table/TableHeader.tsx +64 -48
- package/UI/Components/Table/TableRow.tsx +13 -3
- package/UI/Styles/Theme.css +38 -0
- package/UI/Utils/UseDashboardTimeRangeZoom.ts +77 -0
- package/Utils/Dashboard/DashboardTimeRangeZoom.ts +118 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +271 -0
- package/Utils/Monitor/NetworkDeviceRoleCatalog.ts +232 -0
- package/Utils/Monitor/NetworkDeviceRoleUtil.ts +2 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +116 -33
- package/Utils/NetworkDevice/DeviceRoleKeyUtil.ts +137 -0
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +6 -0
- package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +141 -10
- package/Utils/NetworkDiscovery/DiscoveredHostUtil.ts +55 -3
- package/Utils/NetworkDiscovery/ReverseDnsNameUtil.ts +151 -0
- package/Utils/Rules/RuleEngineLimits.ts +32 -0
- package/Utils/Rules/RulePatternMatchUtil.ts +1 -1
- package/Utils/Slug.ts +34 -1
- package/build/dist/Models/AnalyticsModels/SecurityEvent.js +48 -16
- package/build/dist/Models/AnalyticsModels/SecurityEvent.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js +10 -5
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertSeverity.js +46 -1
- package/build/dist/Models/DatabaseModels/AlertSeverity.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/DetectionRule.js +16 -5
- package/build/dist/Models/DatabaseModels/DetectionRule.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/GoogleSecOpsConnection.js +14 -5
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.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/IncidentSeverity.js +46 -1
- package/build/dist/Models/DatabaseModels/IncidentSeverity.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 +4 -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/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/NetworkDevice.js +239 -6
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +88 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js +521 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js +677 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.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/ThreatIntelFeed.js +16 -5
- package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js.map +1 -1
- package/build/dist/Server/API/GlobalConfigAPI.js +293 -176
- package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +31 -3
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +83 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.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/Index.js +6 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/MultipartFormData.js +93 -28
- package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertGroupingEngineService.js +8 -1
- package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOnCallRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertReminderRuleService.js +8 -1
- package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DashboardLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DashboardLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.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/DockerHostLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentGroupingEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentReminderRuleService.js +8 -1
- package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/IncidentSlaRuleService.js +8 -1
- package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +4 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesResourceService.js +5 -1
- package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -1
- package/build/dist/Server/Services/MonitorLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/MonitorLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +30 -21
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +64 -0
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOidTemplateService.js +180 -0
- package/build/dist/Server/Services/NetworkDeviceOidTemplateService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.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 +154 -1
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +65 -0
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RunbookLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RunbookRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +8 -1
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +6 -0
- package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/TelemetrySourceMapService.js +213 -19
- package/build/dist/Server/Services/TelemetrySourceMapService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +0 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +25 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js +145 -0
- package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/CapturedMetricAttributeUtil.js +201 -0
- package/build/dist/Server/Utils/Monitor/CapturedMetricAttributeUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +19 -2
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +42 -23
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +29 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +11 -2
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +16 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +10 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +33 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Rules/RuleEngineRuleRead.js +37 -0
- package/build/dist/Server/Utils/Rules/RuleEngineRuleRead.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ExceptionSanitizer.js +12 -1
- package/build/dist/Server/Utils/Telemetry/ExceptionSanitizer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js +14 -2
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js +15 -5
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/StackTraceParser.js +307 -0
- package/build/dist/Server/Utils/Telemetry/StackTraceParser.js.map +1 -1
- package/build/dist/Types/Date.js +27 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpOidListUtil.js +253 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpOidListUtil.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/Permission.js +126 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplay.js +19 -0
- package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
- 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/Annotations/AnnotationHoverCard.js +83 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.js +531 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js +264 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.js +122 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +262 -234
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +146 -153
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +261 -233
- 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/Charts/Types/ChartEventKind.js +14 -0
- package/build/dist/UI/Components/Charts/Types/ChartEventKind.js.map +1 -0
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +57 -28
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/XAxis.js +103 -17
- package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +198 -23
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js +15 -5
- package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js +4 -5
- package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -2
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
- package/build/dist/UI/Components/Header/UserProfile/UserProfile.js.map +1 -1
- package/build/dist/UI/Components/Image/Image.js +6 -1
- package/build/dist/UI/Components/Image/Image.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
- package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js +1 -2
- package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +143 -36
- package/build/dist/UI/Components/ModelTable/BaseModelTable.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/SideMenu/CountModelSideMenuItem.js +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +9 -6
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js +7 -2
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
- package/build/dist/UI/Components/Table/TableHeader.js +20 -22
- package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
- package/build/dist/UI/Components/Table/TableRow.js +13 -4
- package/build/dist/UI/Components/Table/TableRow.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 +153 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +1 -0
- 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 +67 -32
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.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/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +127 -7
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js +50 -3
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/ReverseDnsNameUtil.js +132 -0
- package/build/dist/Utils/NetworkDiscovery/ReverseDnsNameUtil.js.map +1 -0
- package/build/dist/Utils/Rules/RuleEngineLimits.js +31 -0
- package/build/dist/Utils/Rules/RuleEngineLimits.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/jest.config.json +1 -0
- package/package.json +2 -2
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
BulkActionOnClickProps,
|
|
33
33
|
} from "../BulkUpdate/BulkUpdateForm";
|
|
34
34
|
import Button, { ButtonSize, ButtonStyleType } from "../Button/Button";
|
|
35
|
+
import CopyTextButton from "../CopyTextButton/CopyTextButton";
|
|
35
36
|
import MoreMenu from "../MoreMenu/MoreMenu";
|
|
36
37
|
import MoreMenuItem from "../MoreMenu/MoreMenuItem";
|
|
37
38
|
import Card, {
|
|
@@ -200,6 +201,13 @@ export enum ModalTableBulkDefaultActions {
|
|
|
200
201
|
export interface BulkActionProps<T extends BaseModel | AnalyticsBaseModel> {
|
|
201
202
|
buttons: Array<BulkActionButtonSchema<T> | ModalTableBulkDefaultActions>;
|
|
202
203
|
matchBulkSelectedItemByField?: keyof T | undefined; // which field to use to match selected items. For exmaple this could be '_id'
|
|
204
|
+
/**
|
|
205
|
+
* Appended to the bulk Delete confirmation, for a surface where deleting the
|
|
206
|
+
* selected rows also removes records the user did not select, or where a
|
|
207
|
+
* reversible alternative exists. The default sentence only says the deletion
|
|
208
|
+
* cannot be undone - it cannot know what else goes with it.
|
|
209
|
+
*/
|
|
210
|
+
deleteConfirmationWarning?: string | undefined;
|
|
203
211
|
}
|
|
204
212
|
|
|
205
213
|
export interface BaseTableProps<
|
|
@@ -418,6 +426,72 @@ export enum ModalType {
|
|
|
418
426
|
Edit,
|
|
419
427
|
}
|
|
420
428
|
|
|
429
|
+
/*
|
|
430
|
+
* The fields a row is worth naming itself by, in the order a human would pick
|
|
431
|
+
* one. `title` is not decoration here: incidents, alerts and scheduled
|
|
432
|
+
* maintenance key on `title` rather than `name`, and those are exactly the
|
|
433
|
+
* tables where deleting the row next to the one you meant hurts most.
|
|
434
|
+
*
|
|
435
|
+
* Only the fields the table already selected are present on the row, so this
|
|
436
|
+
* reads whatever is there and gives up quietly rather than guessing.
|
|
437
|
+
*/
|
|
438
|
+
const ITEM_LABEL_FIELDS: Array<string> = [
|
|
439
|
+
"name",
|
|
440
|
+
"title",
|
|
441
|
+
"slug",
|
|
442
|
+
"email",
|
|
443
|
+
"username",
|
|
444
|
+
"domain",
|
|
445
|
+
];
|
|
446
|
+
|
|
447
|
+
type ReadLabelFieldFunction = (value: unknown) => string;
|
|
448
|
+
|
|
449
|
+
/*
|
|
450
|
+
* Some of these fields arrive as objects with a meaningful toString - Name,
|
|
451
|
+
* Email, ObjectID all define one. Anything that does not is skipped rather
|
|
452
|
+
* than rendered as "[object Object]".
|
|
453
|
+
*/
|
|
454
|
+
const readLabelField: ReadLabelFieldFunction = (value: unknown): string => {
|
|
455
|
+
if (typeof value === "string") {
|
|
456
|
+
return value.trim();
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
if (value === null || value === undefined) {
|
|
460
|
+
return "";
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
const text: string = String(value);
|
|
464
|
+
|
|
465
|
+
return text === "[object Object]" ? "" : text.trim();
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
type GetItemLabelFunction = (item: unknown) => string;
|
|
469
|
+
|
|
470
|
+
/*
|
|
471
|
+
* Every per-row Delete in the product opened the same dialog: "Are you sure
|
|
472
|
+
* you want to delete this monitor?" - a sentence equally true of the row that
|
|
473
|
+
* was clicked and of the twenty either side of it. That is precisely the
|
|
474
|
+
* moment a user wants to be told which one, and the one moment the dialog
|
|
475
|
+
* would not say.
|
|
476
|
+
*/
|
|
477
|
+
const getItemLabel: GetItemLabelFunction = (item: unknown): string => {
|
|
478
|
+
if (!item || typeof item !== "object") {
|
|
479
|
+
return "";
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
const record: Record<string, unknown> = item as Record<string, unknown>;
|
|
483
|
+
|
|
484
|
+
for (const field of ITEM_LABEL_FIELDS) {
|
|
485
|
+
const label: string = readLabelField(record[field]);
|
|
486
|
+
|
|
487
|
+
if (label) {
|
|
488
|
+
return label;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
return "";
|
|
493
|
+
};
|
|
494
|
+
|
|
421
495
|
const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
422
496
|
props: ComponentProps<TBaseModel>,
|
|
423
497
|
) => ReactElement = <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
@@ -2856,7 +2930,12 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
2856
2930
|
items.length === 1
|
|
2857
2931
|
? props.singularName || model.singularName || "item"
|
|
2858
2932
|
: props.pluralName || model.pluralName || "items";
|
|
2859
|
-
|
|
2933
|
+
|
|
2934
|
+
const warning: string = props.bulkActions?.deleteConfirmationWarning
|
|
2935
|
+
? ` ${props.bulkActions.deleteConfirmationWarning}`
|
|
2936
|
+
: "";
|
|
2937
|
+
|
|
2938
|
+
return `Are you sure you want to delete ${items.length} ${itemLabel}? This action cannot be undone.${warning}`;
|
|
2860
2939
|
},
|
|
2861
2940
|
confirmTitle: (items: Array<TBaseModel>) => {
|
|
2862
2941
|
const itemLabel: string =
|
|
@@ -2879,26 +2958,41 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
2879
2958
|
const failedItems: Array<BulkActionFailed<TBaseModel>> = [];
|
|
2880
2959
|
|
|
2881
2960
|
for (let i: number = 0; i < items.length; i++) {
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2961
|
+
const item: TBaseModel = items[i]!;
|
|
2962
|
+
|
|
2963
|
+
// remove items from inProgressItems
|
|
2964
|
+
inProgressItems.splice(inProgressItems.indexOf(item), 1);
|
|
2886
2965
|
|
|
2966
|
+
try {
|
|
2887
2967
|
await props.callbacks.deleteItem(item);
|
|
2888
2968
|
successItems.push(item);
|
|
2889
|
-
|
|
2890
|
-
onProgressInfo({
|
|
2891
|
-
inProgressItems: inProgressItems,
|
|
2892
|
-
successItems: successItems,
|
|
2893
|
-
failed: failedItems,
|
|
2894
|
-
totalItems: items,
|
|
2895
|
-
});
|
|
2896
2969
|
} catch (err) {
|
|
2897
2970
|
failedItems.push({
|
|
2898
|
-
item:
|
|
2971
|
+
item: item,
|
|
2899
2972
|
failedMessage: API.getFriendlyMessage(err),
|
|
2900
2973
|
});
|
|
2901
2974
|
}
|
|
2975
|
+
|
|
2976
|
+
/*
|
|
2977
|
+
* Reported after a failure as well as after a success. This used to
|
|
2978
|
+
* sit inside the `try`, so a row that failed moved neither the
|
|
2979
|
+
* progress bar nor the failure list until some later row succeeded
|
|
2980
|
+
* - and a run whose trailing rows all failed (or one where every
|
|
2981
|
+
* row failed, which is what a permission or constraint problem
|
|
2982
|
+
* looks like) ended with the modal still showing the counts from
|
|
2983
|
+
* before them. Deleting hundreds of rows at once is exactly where
|
|
2984
|
+
* partial failure is expected, so it has to be visible.
|
|
2985
|
+
*
|
|
2986
|
+
* Copies, not the live arrays: the progress info goes into React
|
|
2987
|
+
* state, and pushing into the same array reference leaves the
|
|
2988
|
+
* previous render's snapshot mutated underneath it.
|
|
2989
|
+
*/
|
|
2990
|
+
onProgressInfo({
|
|
2991
|
+
inProgressItems: [...inProgressItems],
|
|
2992
|
+
successItems: [...successItems],
|
|
2993
|
+
failed: [...failedItems],
|
|
2994
|
+
totalItems: items,
|
|
2995
|
+
});
|
|
2902
2996
|
}
|
|
2903
2997
|
|
|
2904
2998
|
onBulkActionEnd();
|
|
@@ -2921,6 +3015,54 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
2921
3015
|
return isSearchActive() ? false : isLoading;
|
|
2922
3016
|
};
|
|
2923
3017
|
|
|
3018
|
+
type HasFilterAppliedFunction = (
|
|
3019
|
+
dataToCheck: FilterData<TBaseModel>,
|
|
3020
|
+
) => boolean;
|
|
3021
|
+
|
|
3022
|
+
/*
|
|
3023
|
+
* Lifted out of the onFilterChanged callback below, which is where this test
|
|
3024
|
+
* used to live inline. Two definitions of "a filter is applied" in one
|
|
3025
|
+
* component is exactly the kind of thing that drifts apart.
|
|
3026
|
+
*/
|
|
3027
|
+
const hasFilterApplied: HasFilterAppliedFunction = (
|
|
3028
|
+
dataToCheck: FilterData<TBaseModel>,
|
|
3029
|
+
): boolean => {
|
|
3030
|
+
for (const key in dataToCheck) {
|
|
3031
|
+
if (dataToCheck[key]) {
|
|
3032
|
+
return true;
|
|
3033
|
+
}
|
|
3034
|
+
}
|
|
3035
|
+
|
|
3036
|
+
return false;
|
|
3037
|
+
};
|
|
3038
|
+
|
|
3039
|
+
type GetNoItemsMessageFunction = () => string | ReactElement;
|
|
3040
|
+
|
|
3041
|
+
/*
|
|
3042
|
+
* An empty table has two quite different causes and used to have one
|
|
3043
|
+
* sentence for both. A monitors table with nothing in it said "No monitor"
|
|
3044
|
+
* - ungrammatical, and worse, it said the same thing after a search that
|
|
3045
|
+
* matched nothing, so a typo in the search box looked exactly like an empty
|
|
3046
|
+
* project. A caller's own noItemsMessage is deliberately overridden while a
|
|
3047
|
+
* search or filter is active: those are usually "create your first X"
|
|
3048
|
+
* panels, and offering one to someone whose search just missed is wrong.
|
|
3049
|
+
*/
|
|
3050
|
+
const getNoItemsMessage: GetNoItemsMessageFunction = ():
|
|
3051
|
+
| string
|
|
3052
|
+
| ReactElement => {
|
|
3053
|
+
const plural: string = (
|
|
3054
|
+
props.pluralName ||
|
|
3055
|
+
model.pluralName ||
|
|
3056
|
+
"items"
|
|
3057
|
+
).toLocaleLowerCase();
|
|
3058
|
+
|
|
3059
|
+
if (isSearchActive() || hasFilterApplied(filterData)) {
|
|
3060
|
+
return `${tx("No")} ${plural} ${tx("match your search or filters.")}`;
|
|
3061
|
+
}
|
|
3062
|
+
|
|
3063
|
+
return props.noItemsMessage || `${tx("No")} ${plural} ${tx("yet.")}`;
|
|
3064
|
+
};
|
|
3065
|
+
|
|
2924
3066
|
const getTable: GetReactElementFunction = (): ReactElement => {
|
|
2925
3067
|
return (
|
|
2926
3068
|
<Table
|
|
@@ -2929,17 +3071,8 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
2929
3071
|
setTableView(null);
|
|
2930
3072
|
|
|
2931
3073
|
// check if there's anything in the filter data and update the isFilterApplied prop.
|
|
2932
|
-
let isFilterApplied: boolean = false;
|
|
2933
|
-
|
|
2934
|
-
for (const key in filterData) {
|
|
2935
|
-
if (filterData[key]) {
|
|
2936
|
-
isFilterApplied = true;
|
|
2937
|
-
break;
|
|
2938
|
-
}
|
|
2939
|
-
}
|
|
2940
|
-
|
|
2941
3074
|
if (props.onFilterApplied) {
|
|
2942
|
-
props.onFilterApplied(
|
|
3075
|
+
props.onFilterApplied(hasFilterApplied(filterData));
|
|
2943
3076
|
}
|
|
2944
3077
|
}}
|
|
2945
3078
|
filterData={filterData}
|
|
@@ -3010,9 +3143,17 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
3010
3143
|
},
|
|
3011
3144
|
);
|
|
3012
3145
|
|
|
3146
|
+
/*
|
|
3147
|
+
* On a table that already offers bulk actions the gate decides on
|
|
3148
|
+
* its own, because there is no selection column left to grow: the
|
|
3149
|
+
* row checkboxes are already there. That covers the locked case, and
|
|
3150
|
+
* it also covers a master admin - allowed everything by the gate, but
|
|
3151
|
+
* holding no project permission for `userCanDelete` to find, so the
|
|
3152
|
+
* Delete they are entitled to used to be missing from a menu whose
|
|
3153
|
+
* every other action worked (issue #3559).
|
|
3154
|
+
*/
|
|
3013
3155
|
const canAutoInjectDelete: boolean =
|
|
3014
|
-
userCanDelete ||
|
|
3015
|
-
(bulkDeleteGate.disabled && sourceButtons.length > 0);
|
|
3156
|
+
userCanDelete || (bulkDeleteGate.show && sourceButtons.length > 0);
|
|
3016
3157
|
|
|
3017
3158
|
if (canAutoInjectDelete && !alreadyHasDeleteAction) {
|
|
3018
3159
|
sourceButtons.push(ModalTableBulkDefaultActions.Delete);
|
|
@@ -3127,9 +3268,8 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
3127
3268
|
matchBulkSelectedItemByField={matchBulkSelectedItemByField || "_id"}
|
|
3128
3269
|
bulkItemToString={(item: TBaseModel) => {
|
|
3129
3270
|
const label: string = props.singularName || item.singularName || "";
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
"";
|
|
3271
|
+
// Same deriver the delete confirmation uses, so the two cannot drift.
|
|
3272
|
+
const name: string = getItemLabel(item);
|
|
3133
3273
|
if (name) {
|
|
3134
3274
|
return label ? `${label}: ${name}` : name;
|
|
3135
3275
|
}
|
|
@@ -3200,7 +3340,7 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
3200
3340
|
|
|
3201
3341
|
setItemsOnPage(newItemsOnPage);
|
|
3202
3342
|
}}
|
|
3203
|
-
noItemsMessage={
|
|
3343
|
+
noItemsMessage={getNoItemsMessage()}
|
|
3204
3344
|
onRefreshClick={async () => {
|
|
3205
3345
|
await fetchItems();
|
|
3206
3346
|
}}
|
|
@@ -3256,7 +3396,7 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
3256
3396
|
shouldAddItemInTheEnd={
|
|
3257
3397
|
props.orderedStatesListProps.shouldAddItemInTheEnd
|
|
3258
3398
|
}
|
|
3259
|
-
noItemsMessage={
|
|
3399
|
+
noItemsMessage={getNoItemsMessage()}
|
|
3260
3400
|
onRefreshClick={async () => {
|
|
3261
3401
|
await fetchItems();
|
|
3262
3402
|
}}
|
|
@@ -3343,7 +3483,7 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
3343
3483
|
|
|
3344
3484
|
setItemsOnPage(newItemsOnPage);
|
|
3345
3485
|
}}
|
|
3346
|
-
noItemsMessage={
|
|
3486
|
+
noItemsMessage={getNoItemsMessage()}
|
|
3347
3487
|
onRefreshClick={async () => {
|
|
3348
3488
|
await fetchItems();
|
|
3349
3489
|
}}
|
|
@@ -4498,11 +4638,18 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
4498
4638
|
{showDeleteConfirmModal && (
|
|
4499
4639
|
<ConfirmModal
|
|
4500
4640
|
title={`Delete ${props.singularName || model.singularName}`}
|
|
4501
|
-
description={
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
|
|
4641
|
+
description={((): string => {
|
|
4642
|
+
const label: string = (
|
|
4643
|
+
props.singularName ||
|
|
4644
|
+
model.singularName ||
|
|
4645
|
+
"item"
|
|
4646
|
+
).toLowerCase();
|
|
4647
|
+
const name: string = getItemLabel(currentDeleteableItem);
|
|
4648
|
+
|
|
4649
|
+
return `Are you sure you want to delete ${
|
|
4650
|
+
name ? `"${name}"` : `this ${label}`
|
|
4651
|
+
}? This action cannot be undone.`;
|
|
4652
|
+
})()}
|
|
4506
4653
|
onClose={() => {
|
|
4507
4654
|
setShowDeleteConfirmModal(false);
|
|
4508
4655
|
}}
|
|
@@ -4535,10 +4682,24 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
4535
4682
|
description={
|
|
4536
4683
|
<div>
|
|
4537
4684
|
<span>
|
|
4538
|
-
ID of this {props.singularName || model.singularName || ""}:
|
|
4539
|
-
{viewId}
|
|
4685
|
+
ID of this {props.singularName || model.singularName || ""}:
|
|
4540
4686
|
</span>
|
|
4541
|
-
|
|
4687
|
+
{/*
|
|
4688
|
+
* Handing over the id is the entire point of this dialog, and it
|
|
4689
|
+
* used to be inline prose the user had to select by hand - an
|
|
4690
|
+
* awkward drag over a 36-character UUID, and easy to clip a
|
|
4691
|
+
* character. It gets its own row and a copy button now.
|
|
4692
|
+
*/}
|
|
4693
|
+
<div className="mt-2 flex items-center gap-2 rounded-md border border-gray-200 bg-gray-50 px-3 py-2">
|
|
4694
|
+
<code className="flex-1 break-all font-mono text-xs text-gray-800">
|
|
4695
|
+
{viewId}
|
|
4696
|
+
</code>
|
|
4697
|
+
<CopyTextButton
|
|
4698
|
+
textToBeCopied={viewId || ""}
|
|
4699
|
+
size="sm"
|
|
4700
|
+
title="Copy ID to clipboard"
|
|
4701
|
+
/>
|
|
4702
|
+
</div>
|
|
4542
4703
|
<br />
|
|
4543
4704
|
|
|
4544
4705
|
<span>
|
|
@@ -66,11 +66,11 @@ export interface ComponentProps {
|
|
|
66
66
|
link: URL;
|
|
67
67
|
};
|
|
68
68
|
/*
|
|
69
|
-
* When true,
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* shortcut.
|
|
69
|
+
* When true, Cmd/Ctrl+K never opens or toggles the products menu — for apps
|
|
70
|
+
* where another surface (e.g. a command palette) owns that shortcut. The
|
|
71
|
+
* menu itself stays usable via its trigger button; if it is already open,
|
|
72
|
+
* the owner's chord dismisses it without consuming the event. Defaults to
|
|
73
|
+
* false so existing consumers keep the products shortcut.
|
|
74
74
|
*/
|
|
75
75
|
disableCommandKShortcut?: boolean | undefined;
|
|
76
76
|
className?: string;
|
|
@@ -85,6 +85,22 @@ export interface ComponentProps {
|
|
|
85
85
|
const MOBILE_MENU_BOTTOM_GAP_IN_PX: number = 16;
|
|
86
86
|
const MOBILE_MENU_MIN_HEIGHT_IN_PX: number = 160;
|
|
87
87
|
|
|
88
|
+
/*
|
|
89
|
+
* Keep the products-menu shortcut and the dashboard command palette on the
|
|
90
|
+
* same definition of Cmd/Ctrl+K. In particular, modified chords such as
|
|
91
|
+
* Cmd+Shift+K must be left alone for the browser or another feature.
|
|
92
|
+
*/
|
|
93
|
+
const isCommandKShortcut: (event: KeyboardEvent) => boolean = (
|
|
94
|
+
event: KeyboardEvent,
|
|
95
|
+
): boolean => {
|
|
96
|
+
return (
|
|
97
|
+
(event.metaKey || event.ctrlKey) &&
|
|
98
|
+
!event.shiftKey &&
|
|
99
|
+
!event.altKey &&
|
|
100
|
+
event.key.toLowerCase() === "k"
|
|
101
|
+
);
|
|
102
|
+
};
|
|
103
|
+
|
|
88
104
|
const Navbar: FunctionComponent<ComponentProps> = (
|
|
89
105
|
props: ComponentProps,
|
|
90
106
|
): ReactElement => {
|
|
@@ -96,6 +112,9 @@ const Navbar: FunctionComponent<ComponentProps> = (
|
|
|
96
112
|
const [mobileMenuMaxHeight, setMobileMenuMaxHeight] = useState<
|
|
97
113
|
number | undefined
|
|
98
114
|
>(undefined);
|
|
115
|
+
const hasMoreMenu: boolean = Boolean(
|
|
116
|
+
!props.children && props.moreMenuItems && props.moreMenuItems.length > 0,
|
|
117
|
+
);
|
|
99
118
|
|
|
100
119
|
// Use the existing outside click hook for mobile menu
|
|
101
120
|
const {
|
|
@@ -173,27 +192,56 @@ const Navbar: FunctionComponent<ComponentProps> = (
|
|
|
173
192
|
|
|
174
193
|
// Open/close the products menu with Cmd/Ctrl + K from anywhere.
|
|
175
194
|
useEffect(() => {
|
|
176
|
-
if (props.disableCommandKShortcut) {
|
|
177
|
-
// Another surface
|
|
195
|
+
if (props.disableCommandKShortcut || !hasMoreMenu) {
|
|
196
|
+
// Another surface owns Cmd/Ctrl+K, or there is no products menu to open.
|
|
178
197
|
return;
|
|
179
198
|
}
|
|
180
199
|
|
|
181
200
|
const handleGlobalKeyDown: (event: KeyboardEvent) => void = (
|
|
182
201
|
event: KeyboardEvent,
|
|
183
202
|
): void => {
|
|
184
|
-
if ((event
|
|
185
|
-
|
|
186
|
-
setIsMoreMenuVisible((visible: boolean) => {
|
|
187
|
-
return !visible;
|
|
188
|
-
});
|
|
203
|
+
if (!isCommandKShortcut(event) || event.defaultPrevented) {
|
|
204
|
+
return;
|
|
189
205
|
}
|
|
206
|
+
|
|
207
|
+
event.preventDefault();
|
|
208
|
+
setIsMoreMenuVisible((visible: boolean) => {
|
|
209
|
+
return !visible;
|
|
210
|
+
});
|
|
190
211
|
};
|
|
191
212
|
|
|
192
213
|
document.addEventListener("keydown", handleGlobalKeyDown);
|
|
193
214
|
return () => {
|
|
194
215
|
document.removeEventListener("keydown", handleGlobalKeyDown);
|
|
195
216
|
};
|
|
196
|
-
}, [props.disableCommandKShortcut]);
|
|
217
|
+
}, [hasMoreMenu, props.disableCommandKShortcut]);
|
|
218
|
+
|
|
219
|
+
/*
|
|
220
|
+
* When the dashboard has surrendered Cmd/Ctrl+K to its command palette, an
|
|
221
|
+
* already-open products modal must get out of the way before the palette
|
|
222
|
+
* opens. This close-only listener deliberately does not prevent or stop the
|
|
223
|
+
* event: the real shortcut owner still needs to receive the same keydown.
|
|
224
|
+
* It also ignores defaultPrevented so the result is deterministic regardless
|
|
225
|
+
* of which document listener React registered first.
|
|
226
|
+
*/
|
|
227
|
+
useEffect(() => {
|
|
228
|
+
if (!props.disableCommandKShortcut || !hasMoreMenu || !isMoreMenuVisible) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
const closeProductsOnCommandK: (event: KeyboardEvent) => void = (
|
|
233
|
+
event: KeyboardEvent,
|
|
234
|
+
): void => {
|
|
235
|
+
if (isCommandKShortcut(event)) {
|
|
236
|
+
setIsMoreMenuVisible(false);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
document.addEventListener("keydown", closeProductsOnCommandK);
|
|
241
|
+
return () => {
|
|
242
|
+
document.removeEventListener("keydown", closeProductsOnCommandK);
|
|
243
|
+
};
|
|
244
|
+
}, [hasMoreMenu, isMoreMenuVisible, props.disableCommandKShortcut]);
|
|
197
245
|
|
|
198
246
|
// More menu open/close.
|
|
199
247
|
const openMoreMenu: () => void = (): void => {
|
|
@@ -488,6 +536,7 @@ const Navbar: FunctionComponent<ComponentProps> = (
|
|
|
488
536
|
footer={props.moreMenuFooter}
|
|
489
537
|
searchPlaceholder={props.moreMenuSearchPlaceholder}
|
|
490
538
|
noResultsText={props.moreMenuNoResultsText}
|
|
539
|
+
showCommandKShortcutHint={!props.disableCommandKShortcut}
|
|
491
540
|
keyboardHint={props.moreMenuKeyboardHint}
|
|
492
541
|
recentLabel={props.moreMenuRecentLabel}
|
|
493
542
|
onClose={closeMoreMenu}
|
|
@@ -129,6 +129,11 @@ export interface ComponentProps {
|
|
|
129
129
|
| undefined;
|
|
130
130
|
searchPlaceholder?: string | undefined;
|
|
131
131
|
noResultsText?: string | undefined;
|
|
132
|
+
/*
|
|
133
|
+
* Defaults to visible for direct/legacy consumers. Dashboard hides it when
|
|
134
|
+
* its command palette owns Cmd/Ctrl+K instead of this products menu.
|
|
135
|
+
*/
|
|
136
|
+
showCommandKShortcutHint?: boolean | undefined;
|
|
132
137
|
keyboardHint?: string | undefined;
|
|
133
138
|
recentLabel?: string | undefined;
|
|
134
139
|
onClose: () => void;
|
|
@@ -502,14 +507,14 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
|
|
|
502
507
|
>
|
|
503
508
|
<Icon icon={IconProp.Close} className="h-4 w-4" />
|
|
504
509
|
</button>
|
|
505
|
-
) : (
|
|
510
|
+
) : props.showCommandKShortcutHint !== false ? (
|
|
506
511
|
/* OS-appropriate hint: ⌘ K on a Mac, Ctrl K elsewhere. */
|
|
507
512
|
<KeyboardShortcut
|
|
508
513
|
keys={[KeyboardKey.Mod, "K"]}
|
|
509
514
|
size={KeyboardShortcutSize.Small}
|
|
510
515
|
className="hidden sm:inline-flex"
|
|
511
516
|
/>
|
|
512
|
-
)}
|
|
517
|
+
) : null}
|
|
513
518
|
</div>
|
|
514
519
|
|
|
515
520
|
{/* Body */}
|
|
@@ -21,6 +21,7 @@ export const REFRESH_SIDEBAR_COUNT_EVENT: string = "REFRESH_SIDEBAR_COUNTS";
|
|
|
21
21
|
|
|
22
22
|
export interface ComponentProps<TBaseModel extends BaseModel> {
|
|
23
23
|
link: Link;
|
|
24
|
+
activeRoute?: Link["to"] | undefined;
|
|
24
25
|
modelType?: { new (): TBaseModel } | undefined;
|
|
25
26
|
badgeType?: BadgeType | undefined;
|
|
26
27
|
countQuery?: Query<TBaseModel> | undefined;
|
|
@@ -136,6 +137,7 @@ const CountModelSideMenuItem: <TBaseModel extends BaseModel>(
|
|
|
136
137
|
return (
|
|
137
138
|
<SideMenuItem
|
|
138
139
|
link={props.link}
|
|
140
|
+
activeRoute={props.activeRoute}
|
|
139
141
|
badge={!isLoading && !error ? count : undefined}
|
|
140
142
|
badgeType={props.badgeType}
|
|
141
143
|
icon={props.icon}
|
|
@@ -20,6 +20,8 @@ import { RequestOptions } from "../../Utils/ModelAPI/ModelAPI";
|
|
|
20
20
|
|
|
21
21
|
export interface SideMenuItemProps {
|
|
22
22
|
link: Link;
|
|
23
|
+
// Use a different route for selection when the link target also changes query state.
|
|
24
|
+
activeRoute?: Link["to"] | undefined;
|
|
23
25
|
showAlert?: boolean;
|
|
24
26
|
showWarning?: boolean;
|
|
25
27
|
badge?: number;
|
|
@@ -106,7 +108,7 @@ const SideMenu: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
|
|
|
106
108
|
if (props.sections) {
|
|
107
109
|
for (const section of props.sections) {
|
|
108
110
|
for (const item of section.items) {
|
|
109
|
-
if (Navigation.isOnThisPage(item.link.to)) {
|
|
111
|
+
if (Navigation.isOnThisPage(item.activeRoute || item.link.to)) {
|
|
110
112
|
const result: {
|
|
111
113
|
sectionTitle: string;
|
|
112
114
|
itemTitle: string;
|
|
@@ -127,7 +129,7 @@ const SideMenu: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
|
|
|
127
129
|
// Check direct items
|
|
128
130
|
if (props.items) {
|
|
129
131
|
for (const item of props.items) {
|
|
130
|
-
if (Navigation.isOnThisPage(item.link.to)) {
|
|
132
|
+
if (Navigation.isOnThisPage(item.activeRoute || item.link.to)) {
|
|
131
133
|
const result: {
|
|
132
134
|
itemTitle: string;
|
|
133
135
|
icon?: IconProp;
|
|
@@ -184,9 +186,13 @@ const SideMenu: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
|
|
|
184
186
|
icon?: IconProp;
|
|
185
187
|
defaultCollapsed?: boolean;
|
|
186
188
|
collapsible?: boolean;
|
|
189
|
+
isActive: boolean;
|
|
187
190
|
} = {
|
|
188
191
|
key: `section-${sectionIndex}`,
|
|
189
192
|
title: section.title,
|
|
193
|
+
isActive: section.items.some((item: SideMenuItemProps): boolean => {
|
|
194
|
+
return Navigation.isOnThisPage(item.activeRoute || item.link.to);
|
|
195
|
+
}),
|
|
190
196
|
};
|
|
191
197
|
|
|
192
198
|
if (section.icon) {
|
|
@@ -209,6 +215,7 @@ const SideMenu: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
|
|
|
209
215
|
<CountModelSideMenuItem
|
|
210
216
|
key={`section-${sectionIndex}-count-item-${itemIndex}`}
|
|
211
217
|
link={item.link}
|
|
218
|
+
activeRoute={item.activeRoute}
|
|
212
219
|
badgeType={item.badgeType}
|
|
213
220
|
modelType={item.modelType as any}
|
|
214
221
|
countQuery={item.countQuery as any}
|
|
@@ -225,6 +232,7 @@ const SideMenu: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
|
|
|
225
232
|
<SideMenuItem
|
|
226
233
|
key={`section-${sectionIndex}-item-${itemIndex}`}
|
|
227
234
|
link={item.link}
|
|
235
|
+
activeRoute={item.activeRoute}
|
|
228
236
|
showAlert={item.showAlert}
|
|
229
237
|
showWarning={item.showWarning}
|
|
230
238
|
badge={item.badge}
|
|
@@ -252,6 +260,7 @@ const SideMenu: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
|
|
|
252
260
|
<CountModelSideMenuItem
|
|
253
261
|
key={`count-item-${itemIndex}`}
|
|
254
262
|
link={item.link}
|
|
263
|
+
activeRoute={item.activeRoute}
|
|
255
264
|
badgeType={item.badgeType}
|
|
256
265
|
modelType={item.modelType as any}
|
|
257
266
|
countQuery={item.countQuery as any}
|
|
@@ -267,6 +276,7 @@ const SideMenu: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
|
|
|
267
276
|
<SideMenuItem
|
|
268
277
|
key={`item-${itemIndex}`}
|
|
269
278
|
link={item.link}
|
|
279
|
+
activeRoute={item.activeRoute}
|
|
270
280
|
showAlert={item.showAlert}
|
|
271
281
|
showWarning={item.showWarning}
|
|
272
282
|
badge={item.badge}
|
|
@@ -9,6 +9,7 @@ import React, { FunctionComponent } from "react";
|
|
|
9
9
|
|
|
10
10
|
export interface ComponentProps {
|
|
11
11
|
link: Link;
|
|
12
|
+
activeRoute?: Link["to"] | undefined;
|
|
12
13
|
showAlert?: undefined | boolean;
|
|
13
14
|
showWarning?: undefined | boolean;
|
|
14
15
|
badge?: undefined | number;
|
|
@@ -23,7 +24,9 @@ const SideMenuItem: FunctionComponent<ComponentProps> = (
|
|
|
23
24
|
props: ComponentProps,
|
|
24
25
|
) => {
|
|
25
26
|
const { translateString } = useTranslateValue();
|
|
26
|
-
const isActive: boolean = Navigation.isOnThisPage(
|
|
27
|
+
const isActive: boolean = Navigation.isOnThisPage(
|
|
28
|
+
props.activeRoute || props.link.to,
|
|
29
|
+
);
|
|
27
30
|
const isSubItemActive: boolean = props.subItemLink
|
|
28
31
|
? Navigation.isOnThisPage(props.subItemLink.to)
|
|
29
32
|
: false;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import Icon from "../Icon/Icon";
|
|
2
2
|
import useTranslateValue from "../../Utils/Translation";
|
|
3
3
|
import IconProp from "../../../Types/Icon/IconProp";
|
|
4
|
-
import React, {
|
|
4
|
+
import React, {
|
|
5
|
+
FunctionComponent,
|
|
6
|
+
ReactElement,
|
|
7
|
+
useEffect,
|
|
8
|
+
useState,
|
|
9
|
+
} from "react";
|
|
5
10
|
|
|
6
11
|
export interface ComponentProps {
|
|
7
12
|
title: string;
|
|
@@ -9,6 +14,7 @@ export interface ComponentProps {
|
|
|
9
14
|
defaultCollapsed?: boolean;
|
|
10
15
|
collapsible?: boolean;
|
|
11
16
|
icon?: IconProp;
|
|
17
|
+
isActive?: boolean;
|
|
12
18
|
}
|
|
13
19
|
|
|
14
20
|
const SideMenuSection: FunctionComponent<ComponentProps> = (
|
|
@@ -16,12 +22,18 @@ const SideMenuSection: FunctionComponent<ComponentProps> = (
|
|
|
16
22
|
) => {
|
|
17
23
|
const { translateString } = useTranslateValue();
|
|
18
24
|
const [isCollapsed, setIsCollapsed] = useState<boolean>(
|
|
19
|
-
props.defaultCollapsed
|
|
25
|
+
Boolean(props.defaultCollapsed && !props.isActive),
|
|
20
26
|
);
|
|
21
27
|
const translatedTitle: string = translateString(props.title) || props.title;
|
|
22
28
|
|
|
23
29
|
const isCollapsible: boolean = props.collapsible ?? true;
|
|
24
30
|
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (props.isActive) {
|
|
33
|
+
setIsCollapsed(false);
|
|
34
|
+
}
|
|
35
|
+
}, [props.isActive]);
|
|
36
|
+
|
|
25
37
|
const handleToggle: () => void = (): void => {
|
|
26
38
|
if (isCollapsible) {
|
|
27
39
|
setIsCollapsed(!isCollapsed);
|