@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
|
@@ -204,6 +204,18 @@ export function sanitizeExceptionMessage(message: string): string {
|
|
|
204
204
|
// Frame lines are indented; header/message lines are not.
|
|
205
205
|
const INDENTED_FRAME_LINE_REGEX: RegExp = /^\s/;
|
|
206
206
|
|
|
207
|
+
/*
|
|
208
|
+
* ...except in Firefox and Safari, which indent nothing: SpiderMonkey and
|
|
209
|
+
* JavaScriptCore write `fn@source:line:col` flush against column 0 and emit no
|
|
210
|
+
* header line at all. Without this second test every browser frame takes the
|
|
211
|
+
* header branch, where rule 19 rewrites the content hash in
|
|
212
|
+
* `entry.a1b2c3d4.js` to `<HEX_ID>` and rule 22 rewrites `:1:98217` to
|
|
213
|
+
* `:<LINE>:<COL>)` — destroying for Firefox and Safari exactly the file:line
|
|
214
|
+
* references the comment above promises to keep for V8 ones.
|
|
215
|
+
*/
|
|
216
|
+
const BROWSER_FRAME_LINE_REGEX: RegExp =
|
|
217
|
+
/^[^@:\n]{0,256}@(?:\[(?:native|wasm) code\]|self-hosted:\d{1,9}(?::\d{1,9})?|[A-Za-z][A-Za-z0-9+.-]{0,31}:[^\s]{1,2048}:\d{1,9}(?::\d{1,9})?)\r?$/;
|
|
218
|
+
|
|
207
219
|
export function sanitizeStackTrace(stackTrace: string): string {
|
|
208
220
|
if (!stackTrace) {
|
|
209
221
|
return "";
|
|
@@ -212,7 +224,8 @@ export function sanitizeStackTrace(stackTrace: string): string {
|
|
|
212
224
|
const normalized: string = stackTrace
|
|
213
225
|
.split("\n")
|
|
214
226
|
.map((line: string): string => {
|
|
215
|
-
return INDENTED_FRAME_LINE_REGEX.test(line)
|
|
227
|
+
return INDENTED_FRAME_LINE_REGEX.test(line) ||
|
|
228
|
+
BROWSER_FRAME_LINE_REGEX.test(line)
|
|
216
229
|
? line
|
|
217
230
|
: normalizeExceptionText(line);
|
|
218
231
|
})
|
|
@@ -56,10 +56,22 @@ const MAX_MESSAGE_LENGTH: number = 1024;
|
|
|
56
56
|
* Single pre-compiled signature for "this body plausibly contains a stack
|
|
57
57
|
* trace". Evaluated once before the (more expensive) multi-language parser.
|
|
58
58
|
* Covers: Python traceback header, JS/Java `at file:line`, Go panic/goroutine,
|
|
59
|
-
* Python `File "...", line N`,
|
|
59
|
+
* Python `File "...", line N`, a Firefox/Safari `fn@url:line:col` frame, and a
|
|
60
|
+
* typed `SomethingException`/`SomethingError`.
|
|
61
|
+
*
|
|
62
|
+
* The `fn@url:line` alternative mirrors the shape StackTraceParser's browser
|
|
63
|
+
* parser accepts and must stay in step with it. Without it a SpiderMonkey or
|
|
64
|
+
* JavaScriptCore stack reaches this gate with no `at ` frame and — unless the
|
|
65
|
+
* app happened to log a `*Error`/`*Exception` token above it — is rejected
|
|
66
|
+
* here, before the parser ever runs. The name class admits spaces (Safari's
|
|
67
|
+
* `global code@…`, Firefox's `promise callback*fn@…`) but never a colon, which
|
|
68
|
+
* is what keeps ordinary `key: value` log prose out. It also absorbs a log
|
|
69
|
+
* body's leading indentation, so do NOT prepend a `[ \t]*` — space and tab are
|
|
70
|
+
* already in the class, and the two overlapping quantifiers backtrack
|
|
71
|
+
* quadratically (a hostile 16 KB body measured 11 ms against 0.1 ms without).
|
|
60
72
|
*/
|
|
61
73
|
const LOOKS_LIKE_STACK_TRACE: RegExp =
|
|
62
|
-
/(?:Traceback \(most recent call last\)|\n\s+at\s+.+:\d+|\bpanic:\s|goroutine\s+\d+\s+\[|\n\s*File\s+"[^"]+",\s+line\s+\d
|
|
74
|
+
/(?:Traceback \(most recent call last\)|\n\s+at\s+.+:\d+|\bpanic:\s|goroutine\s+\d+\s+\[|\n\s*File\s+"[^"]+",\s+line\s+\d+|(?:^|\n)[^@:\n]{0,256}@[A-Za-z][A-Za-z0-9+.-]{0,31}:[^\s]{1,2048}:\d{1,9}|\b[A-Za-z_][\w.$]*(?:Exception|Error)\b)/;
|
|
63
75
|
|
|
64
76
|
// Header parsers for deriving exceptionType + message from a raw body.
|
|
65
77
|
const PYTHON_TRACEBACK_HEADER: RegExp = /^Traceback \(most recent call last\):/;
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
SourceCodeSnippet,
|
|
15
15
|
} from "../../../Types/Telemetry/SourceMap";
|
|
16
16
|
import BadDataException from "../../../Types/Exception/BadDataException";
|
|
17
|
+
import { SourceMapMaxFileSizeInBytes } from "../../EnvironmentConfig";
|
|
17
18
|
import {
|
|
18
19
|
AnyMap,
|
|
19
20
|
TraceMap,
|
|
@@ -28,11 +29,12 @@ export interface SourceMapBundle {
|
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
/*
|
|
31
|
-
* Hard ceiling on one map
|
|
32
|
-
*
|
|
33
|
-
*
|
|
32
|
+
* Hard ceiling on one map, from SOURCE_MAP_MAX_FILE_SIZE_BYTES. Clamped to
|
|
33
|
+
* MAX_MULTIPART_FILE_BYTES on the upload path by the config layer; also
|
|
34
|
+
* enforced on the decoded string (invalid UTF-8 bytes expand to 3-byte
|
|
35
|
+
* U+FFFD on decode, so the string can outgrow the raw file).
|
|
34
36
|
*/
|
|
35
|
-
export const MAX_SOURCE_MAP_SIZE_IN_BYTES: number =
|
|
37
|
+
export const MAX_SOURCE_MAP_SIZE_IN_BYTES: number = SourceMapMaxFileSizeInBytes;
|
|
36
38
|
|
|
37
39
|
/** Lines of context shown on each side of the resolved line. */
|
|
38
40
|
const SNIPPET_CONTEXT_LINES: number = 3;
|
|
@@ -51,7 +53,16 @@ const MAX_SNIPPET_LINE_LENGTH: number = 512;
|
|
|
51
53
|
* through unresolved so the output length always equals the input length,
|
|
52
54
|
* which the dashboard overlay relies on.
|
|
53
55
|
*/
|
|
54
|
-
const MAX_FRAMES_TO_RESOLVE: number = 500;
|
|
56
|
+
export const MAX_FRAMES_TO_RESOLVE: number = 500;
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* Hard ceiling on the frames array ONE resolve request may carry. Well above
|
|
60
|
+
* anything a runtime produces — browsers truncate stack traces long before
|
|
61
|
+
* this — so it never rejects a real trace; it exists so the request body
|
|
62
|
+
* cannot be used to drive work proportional to a caller-chosen length. The
|
|
63
|
+
* per-call resolution cap above is the tighter, non-rejecting bound.
|
|
64
|
+
*/
|
|
65
|
+
export const MAX_FRAMES_PER_RESOLVE_REQUEST: number = 10000;
|
|
55
66
|
|
|
56
67
|
interface ParsedBundle {
|
|
57
68
|
bundlePath: string;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Stack trace parser that transforms raw stack trace strings into structured frames.
|
|
3
3
|
* Supports JavaScript/Node.js, Python, Java, Go, Ruby, C#/.NET, and PHP stack traces.
|
|
4
|
+
*
|
|
5
|
+
* JavaScript is covered twice, because the engines do not agree on a format:
|
|
6
|
+
* V8 (Chrome, Edge, Node) writes `at fn (file:line:col)`, while SpiderMonkey
|
|
7
|
+
* (Firefox) and JavaScriptCore (Safari) write `fn@source:line:col`. See
|
|
8
|
+
* parseJavaScript and parseJavaScriptBrowser respectively.
|
|
4
9
|
*/
|
|
5
10
|
|
|
6
11
|
export interface StackFrame {
|
|
@@ -66,8 +71,160 @@ const LIBRARY_PATTERNS: Array<RegExp> = [
|
|
|
66
71
|
// PHP
|
|
67
72
|
/\/vendor\//,
|
|
68
73
|
/^phar:\/\//,
|
|
74
|
+
/*
|
|
75
|
+
* Browser engines and extensions. Frames sourced from an extension, from a
|
|
76
|
+
* `resource:`/`chrome:` internal, from a WebAssembly module or from one of
|
|
77
|
+
* SpiderMonkey's / JavaScriptCore's pseudo-sources are never the page's own
|
|
78
|
+
* code, so they must not be highlighted as in-app.
|
|
79
|
+
*/
|
|
80
|
+
/^moz-extension:/,
|
|
81
|
+
/^chrome-extension:/,
|
|
82
|
+
/^safari-web-extension:/,
|
|
83
|
+
/^safari-extension:/,
|
|
84
|
+
/^ms-browser-extension:/,
|
|
85
|
+
/^resource:/,
|
|
86
|
+
/^chrome:/,
|
|
87
|
+
/^about:/,
|
|
88
|
+
/^jar:/,
|
|
89
|
+
/^wasm:/,
|
|
90
|
+
/^self-hosted$/,
|
|
91
|
+
/^\[native code\]$/,
|
|
92
|
+
/^\[wasm code\]$/,
|
|
69
93
|
];
|
|
70
94
|
|
|
95
|
+
/*
|
|
96
|
+
* ---------------------------------------------------------------------------
|
|
97
|
+
* Firefox (SpiderMonkey) / Safari (JavaScriptCore) frame grammar.
|
|
98
|
+
*
|
|
99
|
+
* Neither engine writes V8's `at fn (file:line:col)`. Both write
|
|
100
|
+
*
|
|
101
|
+
* [asyncCause*]functionName@source:line[:column]
|
|
102
|
+
*
|
|
103
|
+
* with the function name optional (`@https://…` is every Firefox top-level
|
|
104
|
+
* frame) and the location sometimes absent entirely (`map@[native code]` in
|
|
105
|
+
* Safari). Because the source is a URL it carries colons of its own — the
|
|
106
|
+
* `https:`, a `:port`, a nested `blob:https:` — so the line and column are
|
|
107
|
+
* peeled off the RIGHT, never by splitting on the first colon.
|
|
108
|
+
*
|
|
109
|
+
* These constants are the grammar; parseBrowserFrame() composes them.
|
|
110
|
+
* ---------------------------------------------------------------------------
|
|
111
|
+
*/
|
|
112
|
+
|
|
113
|
+
/*
|
|
114
|
+
* The longest source a browser reports is a data: URL. Longer lines are
|
|
115
|
+
* skipped rather than handed to the regex engine — exception.stacktrace is
|
|
116
|
+
* attacker-influenceable and reaches this parser on the ingest hot path.
|
|
117
|
+
*/
|
|
118
|
+
const BROWSER_MAX_FRAME_LINE_LENGTH: number = 4096;
|
|
119
|
+
const BROWSER_MAX_FUNCTION_NAME_LENGTH: number = 256;
|
|
120
|
+
|
|
121
|
+
/*
|
|
122
|
+
* A real frame has one `@`, but a URL may carry userinfo (`https://u:p@cdn/…`)
|
|
123
|
+
* and a name may be a quoted property key (`obj["a@b"]`), so the split point is
|
|
124
|
+
* found by trying each `@` left to right until one yields a valid source. The
|
|
125
|
+
* bound keeps a line of nothing but `@` off the retry loop.
|
|
126
|
+
*/
|
|
127
|
+
const BROWSER_MAX_AT_SPLITS: number = 8;
|
|
128
|
+
|
|
129
|
+
// V8 frames belong to parseJavaScript. Never double-claim one.
|
|
130
|
+
const V8_FRAME_PREFIX: RegExp = /^at\s/;
|
|
131
|
+
|
|
132
|
+
/*
|
|
133
|
+
* Schemes a browser can legitimately name as a frame source. An allowlist on
|
|
134
|
+
* purpose: together with BROWSER_FUNCTION_NAME it is the clause that stops
|
|
135
|
+
* ordinary log prose from reading as a stack frame — `git@github.com:22:1`,
|
|
136
|
+
* `deploy@prod:8080:1` and `/app/node_modules/@scope/pkg/index.js:10:5` all
|
|
137
|
+
* fail here because what follows the `@` names no scheme. Extend it when a new
|
|
138
|
+
* engine or embedder scheme shows up in the wild.
|
|
139
|
+
*/
|
|
140
|
+
const BROWSER_SOURCE_SCHEME: RegExp =
|
|
141
|
+
/^(?:https?|file|blob|data|webpack(?:-internal)?|moz-extension|chrome-extension|safari-web-extension|safari-extension|ms-browser-extension|resource|chrome|about|jar|view-source|capacitor|ionic|wasm):/i;
|
|
142
|
+
|
|
143
|
+
/*
|
|
144
|
+
* `scheme://authority` with no path left — what remains when a URL's `:port`
|
|
145
|
+
* is peeled as if it were a line number (`@http://127.0.0.1:8080`). A real
|
|
146
|
+
* frame always has a path after the host, so this shape is always a mis-peel.
|
|
147
|
+
*/
|
|
148
|
+
const BROWSER_BARE_AUTHORITY: RegExp =
|
|
149
|
+
/^[A-Za-z][A-Za-z0-9+.-]{0,31}:\/\/[^/]*$/;
|
|
150
|
+
|
|
151
|
+
/*
|
|
152
|
+
* JavaScriptCore's native pseudo-source. A real frame, but it has no location
|
|
153
|
+
* and can never be matched to a bundle.
|
|
154
|
+
*/
|
|
155
|
+
const BROWSER_NATIVE_SOURCE: RegExp = /^\[(?:native|wasm) code\]$/;
|
|
156
|
+
|
|
157
|
+
// SpiderMonkey's source for a self-hosted builtin: `next@self-hosted:1154:9`.
|
|
158
|
+
const BROWSER_SELF_HOSTED_SOURCE: string = "self-hosted";
|
|
159
|
+
|
|
160
|
+
/*
|
|
161
|
+
* Peel `:line:column` — or just `:line` — off the RIGHT of the source. `(.*)`
|
|
162
|
+
* is greedy, so it keeps every earlier colon (the `https:`, the `:port`, the
|
|
163
|
+
* colons inside a data: URL) and only the trailing numeric groups are taken.
|
|
164
|
+
* Both groups are digit-bounded, so neither can backtrack across the line.
|
|
165
|
+
*/
|
|
166
|
+
const BROWSER_LOCATION_WITH_COLUMN: RegExp = /^(.*):(\d{1,9}):(\d{1,9})$/;
|
|
167
|
+
const BROWSER_LOCATION_LINE_ONLY: RegExp = /^(.*):(\d{1,9})$/;
|
|
168
|
+
|
|
169
|
+
/*
|
|
170
|
+
* Firefox <= 29 and Safari <= 6 emitted `fn@url:line` with no column — which
|
|
171
|
+
* is also the shape of a logged URL that merely ends in a number
|
|
172
|
+
* (`notify@https://hooks.slack.com/services/T000:200`). Requiring the source
|
|
173
|
+
* to name a script is what tells the two apart.
|
|
174
|
+
*/
|
|
175
|
+
const BROWSER_SCRIPT_EXTENSION: RegExp =
|
|
176
|
+
/\.(?:m?js|cjs|jsx|m?ts|tsx|html?|vue|svelte|astro)(?:[?#]|$)/i;
|
|
177
|
+
|
|
178
|
+
/*
|
|
179
|
+
* Firefox decorates the source of code introduced by another script:
|
|
180
|
+
* `<introducer> line <N> > <kind>`, nested for nested evals, e.g.
|
|
181
|
+
* `https://x/app.js line 12 > eval line 1 > eval`. The FIRST occurrence is the
|
|
182
|
+
* boundary: everything before it is the real file and its N is the line in
|
|
183
|
+
* that file, which is the only position a source map can resolve. A URL cannot
|
|
184
|
+
* contain a literal space, so this can never fire on an ordinary source.
|
|
185
|
+
*/
|
|
186
|
+
const BROWSER_EVAL_INTRODUCER: RegExp = / line (\d{1,9}) > /;
|
|
187
|
+
|
|
188
|
+
/*
|
|
189
|
+
* The function-name field — everything before the `@`.
|
|
190
|
+
*
|
|
191
|
+
* Firefox prefixes an async frame with `<cause>*`, where the cause may contain
|
|
192
|
+
* spaces (`promise callback*fetchAll`, `setTimeout handler*poll`), and that
|
|
193
|
+
* prefix composes with any name — including an accessor, which is why the
|
|
194
|
+
* prefix is a separate optional group rather than its own alternative. A
|
|
195
|
+
* getter that registers a promise callback really does arrive as
|
|
196
|
+
* `promise callback*get profile@…`.
|
|
197
|
+
*
|
|
198
|
+
* The name itself is JavaScriptCore's `global code` family, an ES2015 accessor
|
|
199
|
+
* or bound name (`get fullName`, `bound save`), or any single whitespace-free
|
|
200
|
+
* token — which is what carries Firefox's composed display names
|
|
201
|
+
* (`Foo.prototype.render`, `initGrid/</<`, `[16]</Grid.prototype.draw/<`). It
|
|
202
|
+
* is optional so that an anonymous async frame (`async*@url:1:1`) still parses.
|
|
203
|
+
*
|
|
204
|
+
* No alternative admits a colon, and only the accessor, `… code` and async
|
|
205
|
+
* forms admit a space. Those two exclusions are load-bearing — they are what
|
|
206
|
+
* reject `notified on-call engineer jane@https://status.example.com/app.js:1:2`
|
|
207
|
+
* (spaces) and `Connection string: svc@https://db.example.com/app.js:1:1`
|
|
208
|
+
* (colon), both of which name a perfectly valid source.
|
|
209
|
+
*/
|
|
210
|
+
const BROWSER_FUNCTION_NAME: RegExp =
|
|
211
|
+
/^(?:[A-Za-z][A-Za-z0-9 ]{0,31}\*)?(?:(?:global|module|eval|function) code|(?:get|set|bound) [^\s:]{1,200}|[^\s:]{1,256})?$/;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* A parsed Firefox/Safari frame plus the evidence parseJavaScriptBrowser needs
|
|
215
|
+
* to decide whether the stack as a whole really is a browser stack.
|
|
216
|
+
*/
|
|
217
|
+
interface BrowserFrameCandidate {
|
|
218
|
+
frame: StackFrame;
|
|
219
|
+
/*
|
|
220
|
+
* True only for a frame that could not plausibly be anything else: an
|
|
221
|
+
* explicit `@`, a source with a real URL scheme, and a line number. A
|
|
222
|
+
* pseudo-source frame (`map@[native code]`) is not an anchor — it carries no
|
|
223
|
+
* URL and no digits, so on its own it is far too easy to forge.
|
|
224
|
+
*/
|
|
225
|
+
isAnchor: boolean;
|
|
226
|
+
}
|
|
227
|
+
|
|
71
228
|
export default class StackTraceParser {
|
|
72
229
|
/**
|
|
73
230
|
* Parse a raw stack trace string into structured frames.
|
|
@@ -91,6 +248,13 @@ export default class StackTraceParser {
|
|
|
91
248
|
StackTraceParser.parseRuby,
|
|
92
249
|
StackTraceParser.parseCSharp,
|
|
93
250
|
StackTraceParser.parsePHP,
|
|
251
|
+
/*
|
|
252
|
+
* Firefox/Safari must stay LAST. The election below keeps the first
|
|
253
|
+
* parser to reach a given frame count, so a parser at the end can only
|
|
254
|
+
* win by producing strictly more frames than every language before it —
|
|
255
|
+
* it can never take a tie away from the incumbent.
|
|
256
|
+
*/
|
|
257
|
+
StackTraceParser.parseJavaScriptBrowser,
|
|
94
258
|
];
|
|
95
259
|
|
|
96
260
|
let bestFrames: StackFrame[] = [];
|
|
@@ -420,4 +584,239 @@ export default class StackTraceParser {
|
|
|
420
584
|
|
|
421
585
|
return frames;
|
|
422
586
|
}
|
|
587
|
+
/**
|
|
588
|
+
* Parse Firefox (SpiderMonkey) / Safari (JavaScriptCore) stack traces.
|
|
589
|
+
* Format: `functionName@source:line:col`, `@source:line:col` (anonymous),
|
|
590
|
+
* `fn@[native code]` (Safari), `async*fn@source:line:col` (Firefox async).
|
|
591
|
+
*
|
|
592
|
+
* Registered LAST in parse()'s parsers array on purpose. That election keeps
|
|
593
|
+
* the first parser to reach a frame count, so a parser appended at the end
|
|
594
|
+
* can only win by producing strictly more frames than every language before
|
|
595
|
+
* it — it can never take a tie away from the incumbent. A Ruby stack with a
|
|
596
|
+
* couple of browser-shaped lines in it therefore stays Ruby.
|
|
597
|
+
*
|
|
598
|
+
* Deliberately NOT accepted, because each one is indistinguishable from
|
|
599
|
+
* ordinary log text and this parser is fed arbitrary ERROR log bodies:
|
|
600
|
+
* - a bare `url:line:col` with no `@` (Safari <= 9 top-level frames), and
|
|
601
|
+
* bare `[native code]` / `global code` lines carrying no `@` at all;
|
|
602
|
+
* - a source naming no scheme, which is the shape of React Native's
|
|
603
|
+
* JavaScriptCore bundles and of `//# sourceURL=` pragma names;
|
|
604
|
+
* - a scheme outside BROWSER_SOURCE_SCHEME, such as Angular JIT's `ng:///`.
|
|
605
|
+
*/
|
|
606
|
+
private static parseJavaScriptBrowser(lines: string[]): StackFrame[] {
|
|
607
|
+
const frames: StackFrame[] = [];
|
|
608
|
+
let anchorCount: number = 0;
|
|
609
|
+
|
|
610
|
+
for (const line of lines) {
|
|
611
|
+
if (line.length === 0 || line.length > BROWSER_MAX_FRAME_LINE_LENGTH) {
|
|
612
|
+
continue;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
if (V8_FRAME_PREFIX.test(line)) {
|
|
616
|
+
continue;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
const candidate: BrowserFrameCandidate | null =
|
|
620
|
+
StackTraceParser.parseBrowserFrame(line);
|
|
621
|
+
|
|
622
|
+
if (!candidate) {
|
|
623
|
+
continue;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
if (candidate.isAnchor) {
|
|
627
|
+
anchorCount++;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
frames.push(candidate.frame);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/*
|
|
634
|
+
* A pseudo-source frame carries no URL and no digits, so two forged
|
|
635
|
+
* `x@[native code]` lines must not be able to out-count and evict a real
|
|
636
|
+
* Ruby or Python stack in parse()'s election. Nothing is trusted until the
|
|
637
|
+
* stack has produced at least one unambiguous `name@<url>:line` frame.
|
|
638
|
+
*/
|
|
639
|
+
if (anchorCount === 0) {
|
|
640
|
+
return [];
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
return frames;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
/**
|
|
647
|
+
* Split one Firefox/Safari frame line at its `@` and parse the source.
|
|
648
|
+
*
|
|
649
|
+
* The split point is searched left to right rather than taken at the first
|
|
650
|
+
* or last `@`, because both sides may legitimately contain one: a URL may
|
|
651
|
+
* carry userinfo (`send@https://user:pw@cdn.example.com/sdk.js:1:9033`) and
|
|
652
|
+
* a name may be a quoted property key (`obj["a@b"]@https://x/app.js:3:11`).
|
|
653
|
+
* The first split whose right-hand side parses as a source wins.
|
|
654
|
+
*/
|
|
655
|
+
private static parseBrowserFrame(line: string): BrowserFrameCandidate | null {
|
|
656
|
+
let searchFrom: number = 0;
|
|
657
|
+
|
|
658
|
+
for (let attempt: number = 0; attempt < BROWSER_MAX_AT_SPLITS; attempt++) {
|
|
659
|
+
const atIndex: number = line.indexOf("@", searchFrom);
|
|
660
|
+
|
|
661
|
+
if (atIndex < 0) {
|
|
662
|
+
return null;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
searchFrom = atIndex + 1;
|
|
666
|
+
|
|
667
|
+
const functionName: string = line.substring(0, atIndex);
|
|
668
|
+
const source: string = line.substring(atIndex + 1);
|
|
669
|
+
|
|
670
|
+
if (functionName.length > BROWSER_MAX_FUNCTION_NAME_LENGTH) {
|
|
671
|
+
continue;
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
// An empty name is the anonymous/top-level frame Firefox emits as `@url`.
|
|
675
|
+
if (
|
|
676
|
+
functionName.length > 0 &&
|
|
677
|
+
!BROWSER_FUNCTION_NAME.test(functionName)
|
|
678
|
+
) {
|
|
679
|
+
continue;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
const candidate: BrowserFrameCandidate | null =
|
|
683
|
+
StackTraceParser.parseBrowserSource(functionName, source);
|
|
684
|
+
|
|
685
|
+
if (candidate) {
|
|
686
|
+
return candidate;
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
return null;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
* Turn the right-hand side of a browser frame into a StackFrame, or return
|
|
695
|
+
* null when it does not name a location a browser could have reported.
|
|
696
|
+
*/
|
|
697
|
+
private static parseBrowserSource(
|
|
698
|
+
functionName: string,
|
|
699
|
+
source: string,
|
|
700
|
+
): BrowserFrameCandidate | null {
|
|
701
|
+
/*
|
|
702
|
+
* The async cause and the closure suffixes are kept verbatim
|
|
703
|
+
* (`async*loadUser`, `initGrid/<`): they are what distinguishes two
|
|
704
|
+
* otherwise identical rows in the frame viewer, they match the raw stack
|
|
705
|
+
* rendered beside it, and StackFrame has no field to move them to.
|
|
706
|
+
*/
|
|
707
|
+
const displayName: string =
|
|
708
|
+
functionName.length > 0 ? functionName : "<anonymous>";
|
|
709
|
+
|
|
710
|
+
// Safari: `map@[native code]` — a real frame with no location at all.
|
|
711
|
+
if (BROWSER_NATIVE_SOURCE.test(source)) {
|
|
712
|
+
return {
|
|
713
|
+
frame: {
|
|
714
|
+
functionName: displayName,
|
|
715
|
+
fileName: source,
|
|
716
|
+
/*
|
|
717
|
+
* StackFrame.lineNumber is not optional, and 0 is already the
|
|
718
|
+
* file-less sentinel parseJava uses for `(Native Method)`.
|
|
719
|
+
* SourceMapResolver skips any frame with lineNumber < 1, so this
|
|
720
|
+
* frame renders but is never probed against a source map.
|
|
721
|
+
*/
|
|
722
|
+
lineNumber: 0,
|
|
723
|
+
inApp: false,
|
|
724
|
+
},
|
|
725
|
+
isAnchor: false,
|
|
726
|
+
};
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
let fileName: string = "";
|
|
730
|
+
let lineNumber: number = 0;
|
|
731
|
+
let columnNumber: number | undefined = undefined;
|
|
732
|
+
|
|
733
|
+
const withColumn: RegExpMatchArray | null = source.match(
|
|
734
|
+
BROWSER_LOCATION_WITH_COLUMN,
|
|
735
|
+
);
|
|
736
|
+
|
|
737
|
+
if (withColumn) {
|
|
738
|
+
fileName = withColumn[1]!;
|
|
739
|
+
lineNumber = parseInt(withColumn[2]!, 10);
|
|
740
|
+
columnNumber = parseInt(withColumn[3]!, 10);
|
|
741
|
+
} else {
|
|
742
|
+
const lineOnly: RegExpMatchArray | null = source.match(
|
|
743
|
+
BROWSER_LOCATION_LINE_ONLY,
|
|
744
|
+
);
|
|
745
|
+
|
|
746
|
+
if (!lineOnly) {
|
|
747
|
+
return null;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
fileName = lineOnly[1]!;
|
|
751
|
+
lineNumber = parseInt(lineOnly[2]!, 10);
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
/*
|
|
755
|
+
* Firefox: `https://x/app.js line 12 > eval:1:5`. The eval'd text has no
|
|
756
|
+
* URL and no source map of its own; the only resolvable position is the
|
|
757
|
+
* introducer's — app.js line 12. The inner column belongs to the eval'd
|
|
758
|
+
* text, so it is dropped rather than reported against the wrong file.
|
|
759
|
+
*/
|
|
760
|
+
const introducer: RegExpMatchArray | null = fileName.match(
|
|
761
|
+
BROWSER_EVAL_INTRODUCER,
|
|
762
|
+
);
|
|
763
|
+
let fromEvalIntroducer: boolean = false;
|
|
764
|
+
|
|
765
|
+
if (introducer && introducer.index !== undefined) {
|
|
766
|
+
lineNumber = parseInt(introducer[1]!, 10);
|
|
767
|
+
columnNumber = undefined;
|
|
768
|
+
fileName = fileName.substring(0, introducer.index);
|
|
769
|
+
fromEvalIntroducer = true;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
if (lineNumber < 1) {
|
|
773
|
+
return null;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
// Firefox self-hosted builtins: `next@self-hosted:1154:9`.
|
|
777
|
+
if (fileName === BROWSER_SELF_HOSTED_SOURCE) {
|
|
778
|
+
return {
|
|
779
|
+
frame: {
|
|
780
|
+
functionName: displayName,
|
|
781
|
+
fileName: fileName,
|
|
782
|
+
lineNumber: lineNumber,
|
|
783
|
+
...(columnNumber === undefined ? {} : { columnNumber: columnNumber }),
|
|
784
|
+
inApp: false,
|
|
785
|
+
},
|
|
786
|
+
isAnchor: false,
|
|
787
|
+
};
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
if (
|
|
791
|
+
!BROWSER_SOURCE_SCHEME.test(fileName) ||
|
|
792
|
+
BROWSER_BARE_AUTHORITY.test(fileName)
|
|
793
|
+
) {
|
|
794
|
+
return null;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
/*
|
|
798
|
+
* A column-less frame is either a Firefox <= 29 / Safari <= 6 frame or a
|
|
799
|
+
* URL that happens to end in a number, and only the source can tell them
|
|
800
|
+
* apart. The `line N >` decoration is already unmistakable, so a frame that
|
|
801
|
+
* lost its column to an eval introducer is exempt.
|
|
802
|
+
*/
|
|
803
|
+
if (
|
|
804
|
+
columnNumber === undefined &&
|
|
805
|
+
!fromEvalIntroducer &&
|
|
806
|
+
!BROWSER_SCRIPT_EXTENSION.test(fileName)
|
|
807
|
+
) {
|
|
808
|
+
return null;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
return {
|
|
812
|
+
frame: {
|
|
813
|
+
functionName: displayName,
|
|
814
|
+
fileName: fileName,
|
|
815
|
+
lineNumber: lineNumber,
|
|
816
|
+
...(columnNumber === undefined ? {} : { columnNumber: columnNumber }),
|
|
817
|
+
inApp: StackTraceParser.isAppCode(fileName),
|
|
818
|
+
},
|
|
819
|
+
isAnchor: true,
|
|
820
|
+
};
|
|
821
|
+
}
|
|
423
822
|
}
|
|
@@ -128,12 +128,26 @@ const SECOND_SWITCH_NODE: NetworkTopologyNode = {
|
|
|
128
128
|
status: "up",
|
|
129
129
|
};
|
|
130
130
|
|
|
131
|
+
/*
|
|
132
|
+
* Carries the role stamp the topology builder puts on a node now that roles
|
|
133
|
+
* are per-project rows: `roleId` is the project's row for the classified role,
|
|
134
|
+
* and it is what the form can actually preselect - the role is a relation, and
|
|
135
|
+
* a form cannot resolve a key to a row.
|
|
136
|
+
*/
|
|
137
|
+
const PHONE_ROLE_ID: string = "b7a1a0f6-3a4b-4a0e-9c3f-4f1f7f2a91cd";
|
|
138
|
+
|
|
139
|
+
const SWITCH_ROLE_ID: string = "0c2d5b41-9f22-4a3e-8f61-2d7c6a4e8b03";
|
|
140
|
+
|
|
131
141
|
const PHONE_NODE: NetworkTopologyNode = {
|
|
132
142
|
id: "unmanaged:sep6026aaf2b46b",
|
|
133
143
|
name: "SEP6026AAF2B46B",
|
|
134
144
|
isManaged: false,
|
|
135
145
|
kind: "unmanaged",
|
|
136
146
|
role: "phone",
|
|
147
|
+
roleKey: "phone",
|
|
148
|
+
roleLabel: "IP phone",
|
|
149
|
+
roleId: PHONE_ROLE_ID,
|
|
150
|
+
isSnmpWalkableRole: false,
|
|
137
151
|
status: "unknown",
|
|
138
152
|
deviceModel: "Cisco IP Phone 8811",
|
|
139
153
|
ipAddress: "10.0.12.41",
|
|
@@ -227,7 +241,12 @@ describe("the Add to Monitoring dialog", () => {
|
|
|
227
241
|
test("opens on the role the map classified the device as", async () => {
|
|
228
242
|
const props: CapturedModalProps = await openDialog();
|
|
229
243
|
|
|
230
|
-
|
|
244
|
+
/*
|
|
245
|
+
* The row's id, not the classifier's key: the role is a relation to the
|
|
246
|
+
* project's own NetworkDeviceRole table, so this is what the picker binds
|
|
247
|
+
* to and what a rename or a custom role travels through.
|
|
248
|
+
*/
|
|
249
|
+
expect(props.initialValues["networkDeviceRole"]).toBe(PHONE_ROLE_ID);
|
|
231
250
|
});
|
|
232
251
|
|
|
233
252
|
/*
|
|
@@ -297,7 +316,18 @@ describe("the Add to Monitoring dialog", () => {
|
|
|
297
316
|
test("inherits a probe for a device that will be polled", async () => {
|
|
298
317
|
const props: CapturedModalProps = await openDialog({
|
|
299
318
|
...PHONE_NODE,
|
|
319
|
+
/*
|
|
320
|
+
* The whole role stamp, not just `role`: the configured
|
|
321
|
+
* isSnmpWalkableRole is what decides the monitoring method now, and the
|
|
322
|
+
* phone fixture carries the handset's (false). Overriding only the
|
|
323
|
+
* built-in role would leave the flag saying "nothing will poll this",
|
|
324
|
+
* which is the opposite of what this test is about.
|
|
325
|
+
*/
|
|
300
326
|
role: "switch",
|
|
327
|
+
roleKey: "switch",
|
|
328
|
+
roleLabel: "Switch",
|
|
329
|
+
roleId: SWITCH_ROLE_ID,
|
|
330
|
+
isSnmpWalkableRole: true,
|
|
301
331
|
});
|
|
302
332
|
|
|
303
333
|
expect(props.initialValues["monitoringMethod"]).toBe("SNMP");
|
|
@@ -20,13 +20,23 @@ import * as React from "react";
|
|
|
20
20
|
import getJestMockFunction, { MockFunction } from "../../MockType";
|
|
21
21
|
|
|
22
22
|
/*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
23
|
+
* The chart widget's STANDALONE fallback: what drag-to-zoom does when the
|
|
24
|
+
* host hands down no onDashboardTimeRangeSelect — the edit-mode settings
|
|
25
|
+
* preview, and any future surface that mounts the widget without owning a
|
|
26
|
+
* time range. Selecting a window narrows THIS widget, refetches for the
|
|
27
|
+
* narrowed window, and offers a way back (Reset) and a way deeper (Open in
|
|
28
|
+
* Explorer, carrying the zoomed window).
|
|
29
|
+
*
|
|
30
|
+
* On a real dashboard the shell DOES take the drag and the whole board
|
|
31
|
+
* retimes (issue #3530) — that contract lives in
|
|
32
|
+
* DashboardWideChartZoom.test.tsx. Both paths are pinned because the
|
|
33
|
+
* widget picks between them purely on whether the callback prop is
|
|
34
|
+
* present, and a host that forgets to pass it should degrade to this
|
|
35
|
+
* rather than lose the gesture.
|
|
36
|
+
*
|
|
37
|
+
* Edit mode must not zoom either way — the drag gesture belongs to widget
|
|
38
|
+
* move/resize there, and series pivots would navigate away from unsaved
|
|
39
|
+
* dashboard changes.
|
|
30
40
|
*/
|
|
31
41
|
|
|
32
42
|
const fetchResultsMock: MockFunction = getJestMockFunction();
|
|
@@ -215,7 +225,24 @@ afterEach(() => {
|
|
|
215
225
|
cleanup();
|
|
216
226
|
});
|
|
217
227
|
|
|
218
|
-
describe("dashboard chart widget drag-to-zoom", () => {
|
|
228
|
+
describe("dashboard chart widget drag-to-zoom (standalone fallback)", () => {
|
|
229
|
+
test("the fallback is what runs when the host offers no dashboard-wide zoom", async () => {
|
|
230
|
+
renderWidget();
|
|
231
|
+
|
|
232
|
+
await waitFor(() => {
|
|
233
|
+
expect(screen.getByTestId("metric-charts")).toBeInTheDocument();
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
/*
|
|
237
|
+
* Guards the branch this whole suite depends on: these props are the
|
|
238
|
+
* switch between narrowing this widget and retiming the board, and
|
|
239
|
+
* buildBaseProps deliberately leaves them off.
|
|
240
|
+
*/
|
|
241
|
+
const baseProps: DashboardBaseComponentProps = buildBaseProps();
|
|
242
|
+
expect(baseProps.onDashboardTimeRangeSelect).toBeUndefined();
|
|
243
|
+
expect(baseProps.onDashboardTimeRangeReset).toBeUndefined();
|
|
244
|
+
});
|
|
245
|
+
|
|
219
246
|
test("drag-selecting a window refetches THIS widget for that window and shows the zoom bar", async () => {
|
|
220
247
|
renderWidget();
|
|
221
248
|
|