@oneuptime/common 12.0.13 → 12.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/GlobalOidc.ts +20 -0
- package/Models/DatabaseModels/GlobalSso.ts +20 -0
- package/Models/DatabaseModels/MarketingConversion.ts +19 -9
- package/Models/DatabaseModels/NetworkDeviceLinkRule.ts +46 -0
- package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +14 -0
- package/Models/DatabaseModels/StatusPage.ts +7 -4
- package/Models/DatabaseModels/UserCall.ts +94 -3
- package/Models/DatabaseModels/UserEmail.ts +94 -3
- package/Models/DatabaseModels/UserIncomingCallNumber.ts +94 -3
- package/Models/DatabaseModels/UserPush.ts +37 -0
- package/Models/DatabaseModels/UserSMS.ts +94 -3
- package/Models/DatabaseModels/UserWhatsApp.ts +93 -2
- package/Server/API/BaseAPI.ts +79 -14
- package/Server/API/StatusPageAPI.ts +29 -4
- package/Server/API/UserCallAPI.ts +53 -45
- package/Server/API/UserEmailAPI.ts +53 -44
- package/Server/API/UserIncomingCallNumberAPI.ts +48 -38
- package/Server/API/UserNotificationMethodAdminAPI.ts +481 -0
- package/Server/API/UserPushAPI.ts +126 -2
- package/Server/API/UserSmsAPI.ts +53 -44
- package/Server/API/UserWhatsAppAPI.ts +53 -50
- package/Server/EnvironmentConfig.ts +7 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.ts +154 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.ts +45 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787800000000-AddScopeToNetworkDeviceLinkRule.ts +19 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787900000000-AddRestrictToAttachedProjectsToGlobalSso.ts +40 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Middleware/SlackAuthorization.ts +43 -6
- package/Server/Middleware/UserAuthorization.ts +236 -26
- package/Server/Middleware/VerificationCodeRateLimit.ts +586 -0
- package/Server/Middleware/WhatsAppAuthorization.ts +43 -3
- package/Server/Services/AnalyticsDatabaseService.ts +169 -0
- package/Server/Services/DatabaseService.ts +101 -0
- package/Server/Services/GlobalOidcProjectService.ts +126 -1
- package/Server/Services/GlobalOidcService.ts +132 -0
- package/Server/Services/GlobalSsoProjectService.ts +126 -1
- package/Server/Services/GlobalSsoService.ts +132 -0
- package/Server/Services/LogAggregationService.ts +5 -0
- package/Server/Services/PushNotificationService.ts +127 -12
- package/Server/Services/TeamMemberService.ts +53 -13
- package/Server/Services/UserCallService.ts +55 -24
- package/Server/Services/UserEmailService.ts +83 -17
- package/Server/Services/UserIncomingCallNumberService.ts +49 -85
- package/Server/Services/UserNotificationMethodAdminService.ts +1527 -0
- package/Server/Services/UserNotificationRuleService.ts +26 -0
- package/Server/Services/UserPushService.ts +89 -0
- package/Server/Services/UserSmsService.ts +50 -17
- package/Server/Services/UserWhatsAppService.ts +48 -15
- package/Server/Types/Database/QueryHelper.ts +30 -0
- package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +59 -0
- package/Server/Utils/ChannelVerification.ts +510 -0
- package/Server/Utils/CronTab.ts +73 -0
- package/Server/Utils/GlobalSsoAuthorization.ts +175 -0
- package/Server/Utils/Marketing/ConversionUploadProvider.ts +35 -5
- package/Server/Utils/Marketing/Providers/GoogleAds.ts +1 -1
- package/Server/Utils/Marketing/Providers/LinkedIn.ts +1 -1
- package/Server/Utils/Marketing/Providers/Meta.ts +1 -1
- package/Server/Utils/Marketing/Providers/MicrosoftAds.ts +1 -1
- package/Server/Utils/Marketing/Providers/Reddit.ts +1 -1
- package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +48 -33
- package/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.ts +35 -30
- package/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.ts +33 -28
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +475 -47
- package/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.ts +35 -30
- package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +47 -44
- package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +33 -28
- package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +69 -40
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +35 -29
- package/Server/Utils/Monitor/MonitorAlert.ts +24 -21
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +8 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +21 -18
- package/Server/Utils/Monitor/MonitorResource.ts +161 -21
- package/Server/Utils/Monitor/MonitorResourceContext.ts +107 -0
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +442 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +3 -3
- package/Server/Utils/Monitor/SeriesResourceLinker.ts +96 -28
- package/Server/Utils/StatusPageContentSecurityPolicy.ts +56 -0
- package/Server/Utils/StatusPageCustomizationAccess.ts +117 -0
- package/Server/Utils/TotpAuth.ts +137 -9
- package/Server/Utils/UserRegistrationToken.ts +182 -0
- package/Server/Utils/VerificationCode.ts +134 -0
- package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +173 -94
- package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +1151 -0
- package/Tests/App/Dashboard/AdminUserOnCallPages.test.tsx +905 -0
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +338 -0
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1 -1
- package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +28 -0
- package/Tests/Models/UserPushCriticalAlertColumn.test.ts +172 -0
- package/Tests/Server/API/BaseAPIGetListParallel.test.ts +519 -0
- package/Tests/Server/API/NotificationChannelVerificationAPI.test.ts +543 -0
- package/Tests/Server/API/StatusPageCustomizationOrigin.test.ts +348 -0
- package/Tests/Server/API/UserIncomingCallNumberApi.test.ts +108 -18
- package/Tests/Server/API/UserNotificationMethodAdminAPI.test.ts +963 -0
- package/Tests/Server/API/UserPushCriticalAlertsApi.test.ts +114 -0
- package/Tests/Server/API/UserSmsApi.test.ts +107 -14
- package/Tests/Server/API/UserTotpAuthAPI.test.ts +427 -0
- package/Tests/Server/Infrastructure/Postgres/FixTotpOtpUrlAlgorithmMigration.test.ts +265 -0
- package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +227 -0
- package/Tests/Server/Middleware/SlackAuthorization.test.ts +149 -0
- package/Tests/Server/Middleware/UserAuthorization.test.ts +27 -13
- package/Tests/Server/Middleware/UserAuthorizationGlobalSsoGovernance.test.ts +1455 -0
- package/Tests/Server/Middleware/UserAuthorizationSSOProvider.test.ts +91 -2
- package/Tests/Server/Middleware/VerificationCodeRateLimit.test.ts +775 -0
- package/Tests/Server/Middleware/WhatsAppAuthorization.test.ts +233 -0
- package/Tests/Server/Services/AddNetworkDeviceReachabilityColumnsMigration.test.ts +10 -62
- package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +33 -13
- package/Tests/Server/Services/AnalyticsDatabaseSortKeyBoundary.test.ts +658 -0
- package/Tests/Server/Services/CriticalOnCallAlertDelivery.test.ts +458 -0
- package/Tests/Server/Services/CriticalPushAlertPayload.test.ts +301 -0
- package/Tests/Server/Services/DatabaseServiceAtomicIncrement.test.ts +143 -0
- package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +1 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +21 -8
- package/Tests/Server/Services/GlobalSsoProviderAuthorization.test.ts +1242 -0
- package/Tests/Server/Services/LogAggregationScanMemory.test.ts +421 -0
- package/Tests/Server/Services/LogAggregationService.test.ts +2 -2
- package/Tests/Server/Services/MonitorResourceProbeAgreementHydration.test.ts +459 -0
- package/Tests/Server/Services/MonitorResourceProbeAgreementReuse.test.ts +10 -0
- package/Tests/Server/Services/NotificationChannelCodeIssuance.test.ts +401 -0
- package/Tests/Server/Services/PushNotificationDeliveryOptions.test.ts +204 -0
- package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +21 -1
- package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +290 -0
- package/Tests/Server/Services/UserNotificationMethodAdminService.test.ts +948 -0
- package/Tests/Server/Services/UserNotificationRuleExecuteItem.test.ts +1 -0
- package/Tests/Server/Services/UserPushCriticalAlertToggle.test.ts +255 -0
- package/Tests/Server/Services/UserTotpAuthEnrolment.test.ts +218 -0
- package/Tests/Server/TestingUtils/AuthenticatorApp.ts +248 -0
- package/Tests/Server/Types/AnalyticsDatabase/AggregateUtilBucketTimestamp.test.ts +416 -0
- package/Tests/Server/Types/Database/Permissions/NotificationChannelVerificationColumns.test.ts +135 -0
- package/Tests/Server/Types/Database/Permissions/OnCallScheduleRelationSelect.test.ts +504 -0
- package/Tests/Server/Types/Database/QueryHelperFindWithSameTextAnyOf.test.ts +91 -0
- package/Tests/Server/Types/Database/QueryHelperManyToManyAndEmptyValues.test.ts +551 -0
- package/Tests/Server/Types/Database/SelectUtil.test.ts +348 -0
- package/Tests/Server/Types/Workflow/Components/JsonToText.test.ts +384 -0
- package/Tests/Server/Types/Workflow/Components/MergeJson.test.ts +403 -0
- package/Tests/Server/Utils/Browser.test.ts +162 -0
- package/Tests/Server/Utils/ChannelVerification.test.ts +689 -0
- package/Tests/Server/Utils/CronTab.test.ts +116 -0
- package/Tests/Server/Utils/Express.test.ts +371 -0
- package/Tests/Server/Utils/GlobalSSOToken.test.ts +581 -0
- package/Tests/Server/Utils/GlobalSsoAuthorization.test.ts +1401 -0
- package/Tests/Server/Utils/Marketing/AdUploadableConversionTypes.test.ts +254 -0
- package/Tests/Server/Utils/Marketing/ConversionUploadProvider.test.ts +1 -1
- package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaEvaluateOverTime.test.ts +508 -0
- package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaPortTimings.test.ts +30 -9
- package/Tests/Server/Utils/Monitor/Criteria/CustomCodeMonitorCriteria.test.ts +707 -0
- package/Tests/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.test.ts +698 -0
- package/Tests/Server/Utils/Monitor/Criteria/EvaluateOverTime.test.ts +987 -0
- package/Tests/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.test.ts +916 -0
- package/Tests/Server/Utils/Monitor/Criteria/IncomingEmailBodyCriteria.test.ts +243 -0
- package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestBodyCriteria.test.ts +278 -0
- package/Tests/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.test.ts +382 -0
- package/Tests/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.test.ts +1219 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +160 -20
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +13 -8
- package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +162 -18
- package/Tests/Server/Utils/Monitor/MonitorResourceContext.test.ts +349 -0
- package/Tests/Server/Utils/Monitor/MonitorResourceIngestedStepSelection.test.ts +86 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +690 -0
- package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +7 -2
- package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +92 -18
- package/Tests/Server/Utils/PushNotificationUtilCreators.test.ts +267 -0
- package/Tests/Server/Utils/StatusPageContentSecurityPolicy.test.ts +136 -0
- package/Tests/Server/Utils/StatusPageCustomizationAccess.test.ts +223 -0
- package/Tests/Server/Utils/Telemetry/OneuptimeLabel.test.ts +439 -0
- package/Tests/Server/Utils/TotpAuth.test.ts +719 -0
- package/Tests/Server/Utils/UserRegistrationToken.test.ts +322 -0
- package/Tests/Server/Utils/VerificationCode.test.ts +296 -0
- package/Tests/Types/AutoRemediation/AutoRemediationSuggestionStatus.test.ts +192 -0
- package/Tests/Types/Call/CallRequest.test.ts +189 -0
- package/Tests/Types/Dashboard/DashboardSize.test.ts +226 -0
- package/Tests/Types/Incident/IncidentSlaStatus.test.ts +191 -0
- package/Tests/Types/Metrics/MetricDashboardMetricType.test.ts +278 -0
- package/Tests/Types/Metrics/MetricPipelineRuleType.test.ts +517 -0
- package/Tests/Types/Monitor/IncomingMonitorDefaultCriteria.test.ts +470 -0
- package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +6 -4
- package/Tests/Types/Monitor/MonitorStepConfigHelpers.test.ts +165 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +262 -5
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +1 -1
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +1 -1
- package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +905 -0
- package/Tests/Types/NetworkDevice/NetworkDeviceLinkRuleScope.test.ts +215 -0
- package/Tests/Types/Service/ServiceLanguage.test.ts +255 -0
- package/Tests/Types/TextRandomGeneration.test.ts +211 -0
- package/Tests/UI/Components/Button.test.tsx +175 -1
- package/Tests/UI/Components/CodeBlockLanguages.test.tsx +236 -0
- package/Tests/UI/Components/CommandPalette/CommandPalette.test.tsx +568 -0
- package/Tests/UI/Components/CommandPalette/CommandPaletteKeyboard.test.tsx +239 -0
- package/Tests/UI/Components/CommandPalette/CommandPaletteProviders.test.tsx +400 -0
- package/Tests/UI/Components/CommandPalette/PaletteFilter.test.ts +234 -0
- package/Tests/UI/Components/CommandPalette/RecentCommands.test.ts +97 -0
- package/Tests/UI/Components/CountModelSideMenuItemGuard.test.tsx +198 -0
- package/Tests/UI/Components/FeedItemSafeMode.test.tsx +1 -1
- package/Tests/UI/Components/Forms/FormSubmitAnalytics.test.tsx +206 -0
- package/Tests/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.test.ts +267 -0
- package/Tests/UI/Components/List.test.tsx +9 -2
- package/Tests/UI/Components/ListLoadingStates.test.tsx +173 -0
- package/Tests/UI/Components/MarkdownLazy.test.tsx +113 -0
- package/Tests/UI/Components/MarkdownMermaidRetry.test.tsx +110 -0
- package/Tests/UI/Components/ModelTable/useCustomFieldColumns.test.tsx +8 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +692 -0
- package/Tests/UI/Components/MoreMenuMotion.test.tsx +118 -0
- package/Tests/UI/Components/NavBarCommandKGating.test.tsx +178 -0
- package/Tests/UI/Components/OrderedStatesList.test.tsx +19 -2
- package/Tests/UI/Components/SideOverMotion.test.tsx +109 -0
- package/Tests/UI/Components/Skeleton.test.tsx +71 -0
- package/Tests/UI/Components/TableLoadingStates.test.tsx +279 -0
- package/Tests/UI/Components/Tabs.test.tsx +24 -0
- package/Tests/UI/Components/Toast.test.tsx +130 -7
- package/Tests/UI/Components/ToastStacking.test.tsx +198 -0
- package/Tests/UI/Utils/AIChatExport/ConversationMarkdown.test.ts +774 -0
- package/Tests/UI/Utils/AIChatExport/MarkdownBlocks.test.ts +791 -0
- package/Tests/UI/Utils/AIChatExport/MarkdownSafety.test.ts +544 -0
- package/Tests/UI/Utils/Dropdown.test.ts +423 -0
- package/Tests/UI/Utils/ModelAPITenantHeader.test.ts +122 -0
- package/Tests/UI/Utils/ModelListCache.test.ts +338 -0
- package/Tests/UI/Utils/ProjectListCacheInvalidation.test.ts +225 -0
- package/Tests/Utils/API.test.ts +16 -2
- package/Tests/Utils/Analytics.test.ts +187 -0
- package/Tests/Utils/Dashboard/Components/DashboardKubernetesResourceListShared.test.ts +347 -0
- package/Tests/Utils/Dashboard/Components/DashboardListSharedArgs.test.ts +259 -0
- package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +466 -0
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +80 -0
- package/Tests/Utils/Monitor/NetworkDeviceLinkRuleUtil.test.ts +1291 -0
- package/Tests/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.test.ts +214 -0
- package/Tests/Utils/Rum/UrlScrubberSegments.test.ts +362 -0
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/Marketing/MarketingConversion.ts +12 -0
- package/Types/Monitor/CriteriaFilter.ts +9 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +41 -20
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +131 -8
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +48 -8
- package/Types/Monitor/ServiceAlertTemplates.ts +1352 -0
- package/Types/NetworkDevice/NetworkDeviceLinkRuleScope.ts +51 -0
- package/Types/Permission.ts +35 -0
- package/Types/PushNotification/AndroidNotificationChannel.ts +26 -0
- package/Types/PushNotification/PushNotificationMessage.ts +15 -0
- package/Types/PushNotification/PushNotificationRequest.ts +8 -16
- package/Types/Service/ServiceLanguage.ts +144 -0
- package/Types/Text.ts +111 -19
- package/UI/Components/Button/Button.tsx +27 -14
- package/UI/Components/CodeBlock/CodeBlock.tsx +54 -7
- package/UI/Components/CodeBlock/LanguageRegistry.ts +103 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +790 -0
- package/UI/Components/CommandPalette/PaletteFilter.ts +196 -0
- package/UI/Components/CommandPalette/PaletteRow.tsx +173 -0
- package/UI/Components/CommandPalette/RecentCommands.ts +57 -0
- package/UI/Components/CommandPalette/Types.ts +49 -0
- package/UI/Components/CommandPalette/UseProviderSearch.ts +129 -0
- package/UI/Components/Dropdown/Dropdown.tsx +6 -1
- package/UI/Components/Feed/FeedItem.tsx +1 -1
- package/UI/Components/FormModal/BasicFormModal.tsx +12 -0
- package/UI/Components/Forms/BasicForm.tsx +13 -1
- package/UI/Components/Forms/BasicModelForm.tsx +2 -1
- package/UI/Components/Forms/ModelForm.tsx +10 -1
- package/UI/Components/Forms/Utils/FormAnalyticsName.ts +39 -0
- package/UI/Components/List/List.tsx +37 -5
- package/UI/Components/List/ListSkeleton.tsx +54 -0
- package/UI/Components/Markdown.tsx/LazyMarkdownViewer.tsx +6 -1
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +71 -26
- package/UI/Components/Modal/Modal.tsx +2 -2
- package/UI/Components/ModelFormModal/ModelFormModal.tsx +6 -1
- package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
- package/UI/Components/ModelTable/useCustomFieldColumns.ts +11 -5
- package/UI/Components/MoreMenu/MoreMenu.tsx +39 -1
- package/UI/Components/Navbar/NavBar.tsx +14 -1
- package/UI/Components/OrderedStatesList/OrderedStatesList.tsx +50 -5
- package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +40 -1
- package/UI/Components/SideOver/SideOver.tsx +37 -2
- package/UI/Components/Skeleton/Skeleton.tsx +53 -0
- package/UI/Components/Table/Table.tsx +74 -44
- package/UI/Components/Table/TableSkeletonRows.tsx +141 -0
- package/UI/Components/Tabs/Tab.tsx +1 -1
- package/UI/Components/Toast/Toast.tsx +118 -53
- package/UI/Components/Toast/ToastInit.tsx +82 -32
- package/UI/Styles/Theme.css +40 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +20 -10
- package/UI/Utils/ModelListCache.ts +188 -0
- package/UI/Utils/Project.ts +29 -0
- package/Utils/API.ts +6 -1
- package/Utils/Analytics.ts +55 -2
- package/Utils/Monitor/MonitorMetricType.ts +40 -0
- package/Utils/Monitor/NetworkDeviceLinkRuleUtil.ts +587 -37
- package/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.ts +115 -0
- package/build/dist/Models/DatabaseModels/GlobalOidc.js +21 -0
- package/build/dist/Models/DatabaseModels/GlobalOidc.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalSso.js +21 -0
- package/build/dist/Models/DatabaseModels/GlobalSso.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MarketingConversion.js +20 -10
- package/build/dist/Models/DatabaseModels/MarketingConversion.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js +47 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +14 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPage.js +4 -4
- package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserCall.js +101 -3
- package/build/dist/Models/DatabaseModels/UserCall.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserEmail.js +101 -3
- package/build/dist/Models/DatabaseModels/UserEmail.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js +101 -3
- package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserPush.js +38 -0
- package/build/dist/Models/DatabaseModels/UserPush.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserSMS.js +101 -3
- package/build/dist/Models/DatabaseModels/UserSMS.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js +100 -2
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +69 -13
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +25 -4
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/UserCallAPI.js +42 -38
- package/build/dist/Server/API/UserCallAPI.js.map +1 -1
- package/build/dist/Server/API/UserEmailAPI.js +42 -38
- package/build/dist/Server/API/UserEmailAPI.js.map +1 -1
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js +37 -32
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -1
- package/build/dist/Server/API/UserNotificationMethodAdminAPI.js +341 -0
- package/build/dist/Server/API/UserNotificationMethodAdminAPI.js.map +1 -0
- package/build/dist/Server/API/UserPushAPI.js +95 -2
- package/build/dist/Server/API/UserPushAPI.js.map +1 -1
- package/build/dist/Server/API/UserSmsAPI.js +42 -38
- package/build/dist/Server/API/UserSmsAPI.js.map +1 -1
- package/build/dist/Server/API/UserWhatsAppAPI.js +42 -40
- package/build/dist/Server/API/UserWhatsAppAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +6 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js +89 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js +40 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787800000000-AddScopeToNetworkDeviceLinkRule.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787800000000-AddScopeToNetworkDeviceLinkRule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787900000000-AddRestrictToAttachedProjectsToGlobalSso.js +29 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787900000000-AddRestrictToAttachedProjectsToGlobalSso.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/SlackAuthorization.js +28 -4
- package/build/dist/Server/Middleware/SlackAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/UserAuthorization.js +197 -22
- package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/VerificationCodeRateLimit.js +393 -0
- package/build/dist/Server/Middleware/VerificationCodeRateLimit.js.map +1 -0
- package/build/dist/Server/Middleware/WhatsAppAuthorization.js +32 -2
- package/build/dist/Server/Middleware/WhatsAppAuthorization.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +136 -0
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +74 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/GlobalOidcProjectService.js +105 -0
- package/build/dist/Server/Services/GlobalOidcProjectService.js.map +1 -1
- package/build/dist/Server/Services/GlobalOidcService.js +127 -0
- package/build/dist/Server/Services/GlobalOidcService.js.map +1 -1
- package/build/dist/Server/Services/GlobalSsoProjectService.js +105 -0
- package/build/dist/Server/Services/GlobalSsoProjectService.js.map +1 -1
- package/build/dist/Server/Services/GlobalSsoService.js +127 -0
- package/build/dist/Server/Services/GlobalSsoService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +5 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/PushNotificationService.js +69 -30
- package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +43 -7
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/UserCallService.js +54 -22
- package/build/dist/Server/Services/UserCallService.js.map +1 -1
- package/build/dist/Server/Services/UserEmailService.js +78 -17
- package/build/dist/Server/Services/UserEmailService.js.map +1 -1
- package/build/dist/Server/Services/UserIncomingCallNumberService.js +45 -74
- package/build/dist/Server/Services/UserIncomingCallNumberService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationMethodAdminService.js +1117 -0
- package/build/dist/Server/Services/UserNotificationMethodAdminService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationRuleService.js +20 -0
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserPushService.js +77 -0
- package/build/dist/Server/Services/UserPushService.js.map +1 -1
- package/build/dist/Server/Services/UserSmsService.js +50 -17
- package/build/dist/Server/Services/UserSmsService.js.map +1 -1
- package/build/dist/Server/Services/UserWhatsAppService.js +48 -15
- package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +27 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js +46 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js.map +1 -1
- package/build/dist/Server/Utils/ChannelVerification.js +348 -0
- package/build/dist/Server/Utils/ChannelVerification.js.map +1 -0
- package/build/dist/Server/Utils/CronTab.js +66 -0
- package/build/dist/Server/Utils/CronTab.js.map +1 -1
- package/build/dist/Server/Utils/GlobalSsoAuthorization.js +112 -0
- package/build/dist/Server/Utils/GlobalSsoAuthorization.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js +17 -1
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +37 -35
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.js +21 -25
- package/build/dist/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js +20 -22
- package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +370 -42
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.js +21 -25
- package/build/dist/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +34 -37
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +21 -25
- package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +64 -52
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +25 -29
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +20 -17
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +8 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +17 -14
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +123 -23
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +95 -0
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +313 -0
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +3 -3
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +67 -26
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
- package/build/dist/Server/Utils/StatusPageContentSecurityPolicy.js +39 -0
- package/build/dist/Server/Utils/StatusPageContentSecurityPolicy.js.map +1 -0
- package/build/dist/Server/Utils/StatusPageCustomizationAccess.js +85 -0
- package/build/dist/Server/Utils/StatusPageCustomizationAccess.js.map +1 -0
- package/build/dist/Server/Utils/TotpAuth.js +127 -8
- package/build/dist/Server/Utils/TotpAuth.js.map +1 -1
- package/build/dist/Server/Utils/UserRegistrationToken.js +170 -0
- package/build/dist/Server/Utils/UserRegistrationToken.js.map +1 -0
- package/build/dist/Server/Utils/VerificationCode.js +120 -0
- package/build/dist/Server/Utils/VerificationCode.js.map +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Marketing/MarketingConversion.js +10 -0
- package/build/dist/Types/Marketing/MarketingConversion.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +1 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +42 -21
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +77 -5
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +18 -6
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js +1028 -0
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceLinkRuleScope.js +46 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceLinkRuleScope.js.map +1 -0
- package/build/dist/Types/Permission.js +33 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/PushNotification/AndroidNotificationChannel.js +27 -0
- package/build/dist/Types/PushNotification/AndroidNotificationChannel.js.map +1 -0
- package/build/dist/Types/Service/ServiceLanguage.js +96 -0
- package/build/dist/Types/Service/ServiceLanguage.js.map +1 -0
- package/build/dist/Types/Text.js +82 -17
- package/build/dist/Types/Text.js.map +1 -1
- package/build/dist/UI/Components/Button/Button.js +22 -14
- package/build/dist/UI/Components/Button/Button.js.map +1 -1
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js +35 -3
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
- package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js +57 -0
- package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js +439 -0
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/PaletteFilter.js +135 -0
- package/build/dist/UI/Components/CommandPalette/PaletteFilter.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/PaletteRow.js +83 -0
- package/build/dist/UI/Components/CommandPalette/PaletteRow.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/RecentCommands.js +47 -0
- package/build/dist/UI/Components/CommandPalette/RecentCommands.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/Types.js +2 -0
- package/build/dist/UI/Components/CommandPalette/Types.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js +88 -0
- package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js.map +1 -0
- package/build/dist/UI/Components/Dropdown/Dropdown.js +6 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
- package/build/dist/UI/Components/FormModal/BasicFormModal.js +2 -1
- package/build/dist/UI/Components/FormModal/BasicFormModal.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +10 -1
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicModelForm.js +2 -1
- package/build/dist/UI/Components/Forms/BasicModelForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/ModelForm.js +4 -1
- package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/Utils/FormAnalyticsName.js +33 -0
- package/build/dist/UI/Components/Forms/Utils/FormAnalyticsName.js.map +1 -0
- package/build/dist/UI/Components/List/List.js +19 -5
- package/build/dist/UI/Components/List/List.js.map +1 -1
- package/build/dist/UI/Components/List/ListSkeleton.js +21 -0
- package/build/dist/UI/Components/List/ListSkeleton.js.map +1 -0
- package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +52 -25
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +2 -2
- package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js +2 -1
- package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +9 -2
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js +32 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +5 -1
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js +29 -5
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +23 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideOver/SideOver.js +23 -2
- package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
- package/build/dist/UI/Components/Skeleton/Skeleton.js +23 -0
- package/build/dist/UI/Components/Skeleton/Skeleton.js.map +1 -0
- package/build/dist/UI/Components/Table/Table.js +35 -24
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Components/Table/TableSkeletonRows.js +52 -0
- package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -0
- package/build/dist/UI/Components/Tabs/Tab.js +1 -1
- package/build/dist/UI/Components/Tabs/Tab.js.map +1 -1
- package/build/dist/UI/Components/Toast/Toast.js +77 -23
- package/build/dist/UI/Components/Toast/Toast.js.map +1 -1
- package/build/dist/UI/Components/Toast/ToastInit.js +37 -15
- package/build/dist/UI/Components/Toast/ToastInit.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +18 -9
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/ModelListCache.js +126 -0
- package/build/dist/UI/Utils/ModelListCache.js.map +1 -0
- package/build/dist/UI/Utils/Project.js +24 -1
- package/build/dist/UI/Utils/Project.js.map +1 -1
- package/build/dist/Utils/API.js +6 -1
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/Analytics.js +50 -2
- package/build/dist/Utils/Analytics.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +37 -0
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js +318 -37
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.js +87 -0
- package/build/dist/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.js.map +1 -0
- package/jest.config.json +1 -1
- package/package.json +2 -3
- package/Server/Utils/Monitor/MonitorClusterContext.ts +0 -182
- package/Tests/__mocks__/otpauth.js +0 -30
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +0 -141
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +0 -1
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import MonitorType from "../../../Types/Monitor/MonitorType";
|
|
2
|
+
import ObjectID from "../../../Types/ObjectID";
|
|
3
|
+
import SeriesResourceLabels from "./SeriesResourceLabels";
|
|
4
|
+
export default class MonitorStepResourceIdentity {
|
|
5
|
+
/*
|
|
6
|
+
* Every resource the monitor's configuration names, unioned across its
|
|
7
|
+
* steps and deduped. A monitor with three host steps names three
|
|
8
|
+
* hosts: the creation path does not know which step fired, and the
|
|
9
|
+
* alternative — attributing nothing — is what this module exists to
|
|
10
|
+
* fix.
|
|
11
|
+
*/
|
|
12
|
+
static extractResourceRefsFromMonitor(input) {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const refs = this.emptyRefs();
|
|
15
|
+
const monitorType = input.monitor.monitorType;
|
|
16
|
+
if (!monitorType) {
|
|
17
|
+
return refs;
|
|
18
|
+
}
|
|
19
|
+
const monitorSteps = ((_b = (_a = input.monitor.monitorSteps) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.monitorStepsInstanceArray) || [];
|
|
20
|
+
for (const monitorStep of monitorSteps) {
|
|
21
|
+
this.collectFromStep({
|
|
22
|
+
monitorStep: monitorStep,
|
|
23
|
+
monitorType: monitorType,
|
|
24
|
+
refs: refs,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return this.dedupeRefs(refs);
|
|
28
|
+
}
|
|
29
|
+
static collectFromStep(input) {
|
|
30
|
+
const stepData = input.monitorStep.data;
|
|
31
|
+
if (!stepData) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
/*
|
|
35
|
+
* 1. The declared resource identifier — the field the user picked in
|
|
36
|
+
* the monitor form. Validation makes it required for each of
|
|
37
|
+
* these types (see MonitorStep's validation), so this is the
|
|
38
|
+
* strongest signal available.
|
|
39
|
+
*/
|
|
40
|
+
const declared = this.getDeclaredIdentifier({
|
|
41
|
+
stepData: stepData,
|
|
42
|
+
monitorType: input.monitorType,
|
|
43
|
+
});
|
|
44
|
+
/*
|
|
45
|
+
* `typeof` rather than a truthiness check: step JSON is not
|
|
46
|
+
* schema-checked, so an identifier written by the API, a seed or an
|
|
47
|
+
* import can be a number or an object, and `.trim()` on those throws
|
|
48
|
+
* out of the incident/alert creation path.
|
|
49
|
+
*/
|
|
50
|
+
if (declared && typeof declared.value === "string") {
|
|
51
|
+
const identifier = declared.value.trim();
|
|
52
|
+
if (identifier.length > 0) {
|
|
53
|
+
input.refs[declared.key].push(identifier);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/*
|
|
57
|
+
* 2. Telemetry services. Real `Service._id` values written by the
|
|
58
|
+
* monitor form's service picker — a primary key, not a name, so
|
|
59
|
+
* this is the most precise identity in the whole module. Metric
|
|
60
|
+
* monitors carry the field too (RUM recommendation monitors set
|
|
61
|
+
* it), where it is optional.
|
|
62
|
+
*/
|
|
63
|
+
for (const serviceId of this.getTelemetryServiceIds({
|
|
64
|
+
stepData: stepData,
|
|
65
|
+
})) {
|
|
66
|
+
input.refs.serviceIds.push(serviceId);
|
|
67
|
+
}
|
|
68
|
+
/*
|
|
69
|
+
* 3. Metric attribute filters. A generic metric monitor names its
|
|
70
|
+
* resource nowhere else: it scopes itself with filters like
|
|
71
|
+
* `oneuptime.service.name = checkout-api`, which is exactly the
|
|
72
|
+
* key map SeriesResourceLabels already owns. Reusing that map
|
|
73
|
+
* means a filter and a group-by on the same attribute resolve to
|
|
74
|
+
* the same row.
|
|
75
|
+
*/
|
|
76
|
+
this.collectFromMetricFilters({
|
|
77
|
+
stepData: stepData,
|
|
78
|
+
monitorType: input.monitorType,
|
|
79
|
+
refs: input.refs,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
static getDeclaredIdentifier(input) {
|
|
83
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
84
|
+
const stepData = input.stepData;
|
|
85
|
+
switch (input.monitorType) {
|
|
86
|
+
case MonitorType.Host:
|
|
87
|
+
return {
|
|
88
|
+
key: "hostNames",
|
|
89
|
+
value: (_a = stepData.hostMonitor) === null || _a === void 0 ? void 0 : _a.hostIdentifier,
|
|
90
|
+
};
|
|
91
|
+
case MonitorType.Docker:
|
|
92
|
+
return {
|
|
93
|
+
key: "dockerHostNames",
|
|
94
|
+
value: (_b = stepData.dockerMonitor) === null || _b === void 0 ? void 0 : _b.hostIdentifier,
|
|
95
|
+
};
|
|
96
|
+
case MonitorType.Podman:
|
|
97
|
+
return {
|
|
98
|
+
key: "podmanHostNames",
|
|
99
|
+
value: (_c = stepData.podmanMonitor) === null || _c === void 0 ? void 0 : _c.hostIdentifier,
|
|
100
|
+
};
|
|
101
|
+
case MonitorType.Kubernetes:
|
|
102
|
+
return {
|
|
103
|
+
key: "kubernetesClusterNames",
|
|
104
|
+
value: (_d = stepData.kubernetesMonitor) === null || _d === void 0 ? void 0 : _d.clusterIdentifier,
|
|
105
|
+
};
|
|
106
|
+
case MonitorType.Proxmox:
|
|
107
|
+
return {
|
|
108
|
+
key: "proxmoxClusterNames",
|
|
109
|
+
value: (_e = stepData.proxmoxMonitor) === null || _e === void 0 ? void 0 : _e.clusterIdentifier,
|
|
110
|
+
};
|
|
111
|
+
case MonitorType.Ceph:
|
|
112
|
+
return {
|
|
113
|
+
key: "cephClusterNames",
|
|
114
|
+
value: (_f = stepData.cephMonitor) === null || _f === void 0 ? void 0 : _f.clusterIdentifier,
|
|
115
|
+
};
|
|
116
|
+
case MonitorType.DockerSwarm:
|
|
117
|
+
return {
|
|
118
|
+
key: "dockerSwarmClusterNames",
|
|
119
|
+
value: (_g = stepData.dockerSwarmMonitor) === null || _g === void 0 ? void 0 : _g.clusterIdentifier,
|
|
120
|
+
};
|
|
121
|
+
case MonitorType.IoTDevice:
|
|
122
|
+
return {
|
|
123
|
+
key: "iotFleetNames",
|
|
124
|
+
value: (_h = stepData.iotMonitor) === null || _h === void 0 ? void 0 : _h.fleetIdentifier,
|
|
125
|
+
};
|
|
126
|
+
default:
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
static getTelemetryServiceIds(input) {
|
|
131
|
+
var _a, _b, _c, _d, _e;
|
|
132
|
+
const stepData = input.stepData;
|
|
133
|
+
/*
|
|
134
|
+
* Read from every telemetry sub-config present rather than switching
|
|
135
|
+
* on monitorType: only one of them is ever populated for a given
|
|
136
|
+
* monitor, and this way a step written by an older build (or by the
|
|
137
|
+
* API, a seed, or an import) with a mismatched type still resolves.
|
|
138
|
+
*/
|
|
139
|
+
const idLists = [
|
|
140
|
+
(_a = stepData.logMonitor) === null || _a === void 0 ? void 0 : _a.telemetryServiceIds,
|
|
141
|
+
(_b = stepData.traceMonitor) === null || _b === void 0 ? void 0 : _b.telemetryServiceIds,
|
|
142
|
+
(_c = stepData.exceptionMonitor) === null || _c === void 0 ? void 0 : _c.telemetryServiceIds,
|
|
143
|
+
(_d = stepData.profileMonitor) === null || _d === void 0 ? void 0 : _d.telemetryServiceIds,
|
|
144
|
+
(_e = stepData.metricMonitor) === null || _e === void 0 ? void 0 : _e.telemetryServiceIds,
|
|
145
|
+
];
|
|
146
|
+
const serviceIds = [];
|
|
147
|
+
for (const idList of idLists) {
|
|
148
|
+
/*
|
|
149
|
+
* `Array.isArray` rather than a truthiness check: an unchecked
|
|
150
|
+
* step written by the API or an import can hold an object or a
|
|
151
|
+
* number here, and `for...of` on those throws out of the
|
|
152
|
+
* incident/alert creation path.
|
|
153
|
+
*/
|
|
154
|
+
if (!Array.isArray(idList) || idList.length === 0) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
for (const id of idList) {
|
|
158
|
+
/*
|
|
159
|
+
* An entry can be a bare string rather than a rehydrated
|
|
160
|
+
* ObjectID, for the same reason. `String()` covers both; empty
|
|
161
|
+
* values are dropped so they can't widen the lookup, and a
|
|
162
|
+
* non-scalar is dropped rather than stringified into a garbage
|
|
163
|
+
* "[object Object]" lookup key.
|
|
164
|
+
*/
|
|
165
|
+
if (id !== null &&
|
|
166
|
+
typeof id === "object" &&
|
|
167
|
+
!(id instanceof ObjectID)) {
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
const idString = String(id !== null && id !== void 0 ? id : "").trim();
|
|
171
|
+
if (idString.length > 0) {
|
|
172
|
+
serviceIds.push(idString);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return serviceIds;
|
|
177
|
+
}
|
|
178
|
+
static collectFromMetricFilters(input) {
|
|
179
|
+
const filterAttributes = this.collectMetricFilterAttributes({
|
|
180
|
+
stepData: input.stepData,
|
|
181
|
+
});
|
|
182
|
+
if (Object.keys(filterAttributes).length === 0) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const filterRefs = SeriesResourceLabels.extractResourceRefs(filterAttributes);
|
|
186
|
+
/*
|
|
187
|
+
* `resource.host.name` belongs to Host in the label key map, but on
|
|
188
|
+
* a Docker or Podman monitor the worker writes that same attribute
|
|
189
|
+
* from the step's `hostIdentifier` — which names a DockerHost /
|
|
190
|
+
* PodmanHost row, not a Host row. Honouring the map here would
|
|
191
|
+
* attach the wrong model and surface the event on an unrelated
|
|
192
|
+
* Host's Activity tab, so the declared identifier (collected above,
|
|
193
|
+
* into the right bucket) is the only host identity these two types
|
|
194
|
+
* get.
|
|
195
|
+
*/
|
|
196
|
+
const suppressHostRefs = input.monitorType === MonitorType.Docker ||
|
|
197
|
+
input.monitorType === MonitorType.Podman;
|
|
198
|
+
if (suppressHostRefs) {
|
|
199
|
+
filterRefs.hostIds = [];
|
|
200
|
+
filterRefs.hostNames = [];
|
|
201
|
+
}
|
|
202
|
+
this.mergeRefs({ target: input.refs, source: filterRefs });
|
|
203
|
+
}
|
|
204
|
+
/*
|
|
205
|
+
* The attribute filters of every metric query on the step, merged.
|
|
206
|
+
* Each infra monitor type keeps its metric view config under its own
|
|
207
|
+
* key, so read them all — exactly the set MonitorStep's own
|
|
208
|
+
* metric-view-config resolver knows about.
|
|
209
|
+
*
|
|
210
|
+
* Values accumulate into an ARRAY per key rather than overwriting: a
|
|
211
|
+
* step can hold several queries, and two of them filtering
|
|
212
|
+
* `oneuptime.service.name` on different services both name a real
|
|
213
|
+
* resource. Last-write-wins would silently drop one of them.
|
|
214
|
+
* SeriesResourceLabels.collectLabelValues already flattens
|
|
215
|
+
* array-valued labels, so the multi-value shape needs nothing extra
|
|
216
|
+
* downstream.
|
|
217
|
+
*/
|
|
218
|
+
static collectMetricFilterAttributes(input) {
|
|
219
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
220
|
+
const stepData = input.stepData;
|
|
221
|
+
const viewConfigs = [
|
|
222
|
+
(_a = stepData.metricMonitor) === null || _a === void 0 ? void 0 : _a.metricViewConfig,
|
|
223
|
+
(_b = stepData.hostMonitor) === null || _b === void 0 ? void 0 : _b.metricViewConfig,
|
|
224
|
+
(_c = stepData.kubernetesMonitor) === null || _c === void 0 ? void 0 : _c.metricViewConfig,
|
|
225
|
+
(_d = stepData.dockerMonitor) === null || _d === void 0 ? void 0 : _d.metricViewConfig,
|
|
226
|
+
(_e = stepData.podmanMonitor) === null || _e === void 0 ? void 0 : _e.metricViewConfig,
|
|
227
|
+
(_f = stepData.proxmoxMonitor) === null || _f === void 0 ? void 0 : _f.metricViewConfig,
|
|
228
|
+
(_g = stepData.cephMonitor) === null || _g === void 0 ? void 0 : _g.metricViewConfig,
|
|
229
|
+
(_h = stepData.dockerSwarmMonitor) === null || _h === void 0 ? void 0 : _h.metricViewConfig,
|
|
230
|
+
(_j = stepData.iotMonitor) === null || _j === void 0 ? void 0 : _j.metricViewConfig,
|
|
231
|
+
];
|
|
232
|
+
const valuesByKey = new Map();
|
|
233
|
+
for (const viewConfig of viewConfigs) {
|
|
234
|
+
const queryConfigs = Array.isArray(viewConfig === null || viewConfig === void 0 ? void 0 : viewConfig.queryConfigs)
|
|
235
|
+
? viewConfig.queryConfigs
|
|
236
|
+
: [];
|
|
237
|
+
for (const queryConfig of queryConfigs) {
|
|
238
|
+
const queryAttributes = (_l = (_k = queryConfig === null || queryConfig === void 0 ? void 0 : queryConfig.metricQueryData) === null || _k === void 0 ? void 0 : _k.filterData) === null || _l === void 0 ? void 0 : _l.attributes;
|
|
239
|
+
if (!queryAttributes || typeof queryAttributes !== "object") {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
for (const [key, value] of Object.entries(queryAttributes)) {
|
|
243
|
+
/*
|
|
244
|
+
* Only plain string filters identify a resource. A filter can
|
|
245
|
+
* also hold a Search or Includes instance (substring / set
|
|
246
|
+
* matching), and neither is an identity we can resolve to one
|
|
247
|
+
* row — a `Search("prod")` filter names no specific service.
|
|
248
|
+
*/
|
|
249
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
const existing = valuesByKey.get(key) || [];
|
|
253
|
+
if (!existing.includes(value)) {
|
|
254
|
+
existing.push(value);
|
|
255
|
+
}
|
|
256
|
+
valuesByKey.set(key, existing);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const attributes = {};
|
|
261
|
+
for (const [key, values] of valuesByKey) {
|
|
262
|
+
/*
|
|
263
|
+
* A single value stays a bare string so the common case reads
|
|
264
|
+
* exactly like a series label; only a genuinely multi-valued
|
|
265
|
+
* filter becomes an array.
|
|
266
|
+
*/
|
|
267
|
+
attributes[key] = values.length === 1 ? values[0] : values;
|
|
268
|
+
}
|
|
269
|
+
return attributes;
|
|
270
|
+
}
|
|
271
|
+
static mergeRefs(input) {
|
|
272
|
+
for (const key of Object.keys(input.target)) {
|
|
273
|
+
input.target[key].push(...input.source[key]);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
static dedupeRefs(refs) {
|
|
277
|
+
for (const key of Object.keys(refs)) {
|
|
278
|
+
refs[key] = Array.from(new Set(refs[key]));
|
|
279
|
+
}
|
|
280
|
+
return refs;
|
|
281
|
+
}
|
|
282
|
+
static emptyRefs() {
|
|
283
|
+
return {
|
|
284
|
+
hostIds: [],
|
|
285
|
+
hostNames: [],
|
|
286
|
+
dockerHostIds: [],
|
|
287
|
+
dockerHostNames: [],
|
|
288
|
+
podmanHostIds: [],
|
|
289
|
+
podmanHostNames: [],
|
|
290
|
+
kubernetesClusterIds: [],
|
|
291
|
+
kubernetesClusterNames: [],
|
|
292
|
+
dockerSwarmClusterNames: [],
|
|
293
|
+
proxmoxClusterNames: [],
|
|
294
|
+
cephClusterNames: [],
|
|
295
|
+
iotFleetNames: [],
|
|
296
|
+
serviceIds: [],
|
|
297
|
+
serviceNames: [],
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
/*
|
|
301
|
+
* True when the monitor's configuration names nothing at all — the
|
|
302
|
+
* common case for the ~17 monitor types that have no resource
|
|
303
|
+
* identity (Website, API, Ping, Synthetic, ...). Callers use it to
|
|
304
|
+
* skip the lookup entirely so those monitors keep costing zero
|
|
305
|
+
* database round-trips per evaluation.
|
|
306
|
+
*/
|
|
307
|
+
static isEmpty(refs) {
|
|
308
|
+
return Object.values(refs).every((values) => {
|
|
309
|
+
return values.length === 0;
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=MonitorStepResourceIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonitorStepResourceIdentity.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorStepResourceIdentity.ts"],"names":[],"mappings":"AAKA,OAAO,WAAW,MAAM,oCAAoC,CAAC;AAC7D,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,oBAEN,MAAM,wBAAwB,CAAC;AA8ChC,MAAM,CAAC,OAAO,OAAO,2BAA2B;IAC9C;;;;;;OAMG;IACI,MAAM,CAAC,8BAA8B,CAAC,KAE5C;;QACC,MAAM,IAAI,GAAuB,IAAI,CAAC,SAAS,EAAE,CAAC;QAElD,MAAM,WAAW,GAA4B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAChB,CAAA,MAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,IAAI,0CAAE,yBAAyB,KAAI,EAAE,CAAC;QAEpE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC;gBACnB,WAAW,EAAE,WAAW;gBACxB,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,KAI9B;QACC,MAAM,QAAQ,GAAwB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;QAE7D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED;;;;;WAKG;QACH,MAAM,QAAQ,GACZ,IAAI,CAAC,qBAAqB,CAAC;YACzB,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC,CAAC;QAEL;;;;;WAKG;QACH,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,UAAU,GAAW,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAEjD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED;;;;;;WAMG;QACH,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,sBAAsB,CAAC;YAClD,QAAQ,EAAE,QAAQ;SACnB,CAAC,EAAE,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAED;;;;;;;WAOG;QACH,IAAI,CAAC,wBAAwB,CAAC;YAC5B,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,KAGpC;;QACC,MAAM,QAAQ,GAAqC,KAAK,CAAC,QAAQ,CAAC;QAElE,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1B,KAAK,WAAW,CAAC,IAAI;gBACnB,OAAO;oBACL,GAAG,EAAE,WAAW;oBAChB,KAAK,EAAE,MAAA,QAAQ,CAAC,WAAW,0CAAE,cAAc;iBAC5C,CAAC;YACJ,KAAK,WAAW,CAAC,MAAM;gBACrB,OAAO;oBACL,GAAG,EAAE,iBAAiB;oBACtB,KAAK,EAAE,MAAA,QAAQ,CAAC,aAAa,0CAAE,cAAc;iBAC9C,CAAC;YACJ,KAAK,WAAW,CAAC,MAAM;gBACrB,OAAO;oBACL,GAAG,EAAE,iBAAiB;oBACtB,KAAK,EAAE,MAAA,QAAQ,CAAC,aAAa,0CAAE,cAAc;iBAC9C,CAAC;YACJ,KAAK,WAAW,CAAC,UAAU;gBACzB,OAAO;oBACL,GAAG,EAAE,wBAAwB;oBAC7B,KAAK,EAAE,MAAA,QAAQ,CAAC,iBAAiB,0CAAE,iBAAiB;iBACrD,CAAC;YACJ,KAAK,WAAW,CAAC,OAAO;gBACtB,OAAO;oBACL,GAAG,EAAE,qBAAqB;oBAC1B,KAAK,EAAE,MAAA,QAAQ,CAAC,cAAc,0CAAE,iBAAiB;iBAClD,CAAC;YACJ,KAAK,WAAW,CAAC,IAAI;gBACnB,OAAO;oBACL,GAAG,EAAE,kBAAkB;oBACvB,KAAK,EAAE,MAAA,QAAQ,CAAC,WAAW,0CAAE,iBAAiB;iBAC/C,CAAC;YACJ,KAAK,WAAW,CAAC,WAAW;gBAC1B,OAAO;oBACL,GAAG,EAAE,yBAAyB;oBAC9B,KAAK,EAAE,MAAA,QAAQ,CAAC,kBAAkB,0CAAE,iBAAiB;iBACtD,CAAC;YACJ,KAAK,WAAW,CAAC,SAAS;gBACxB,OAAO;oBACL,GAAG,EAAE,eAAe;oBACpB,KAAK,EAAE,MAAA,QAAQ,CAAC,UAAU,0CAAE,eAAe;iBAC5C,CAAC;YACJ;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,KAErC;;QACC,MAAM,QAAQ,GAAqC,KAAK,CAAC,QAAQ,CAAC;QAElE;;;;;WAKG;QACH,MAAM,OAAO,GAAuC;YAClD,MAAA,QAAQ,CAAC,UAAU,0CAAE,mBAAmB;YACxC,MAAA,QAAQ,CAAC,YAAY,0CAAE,mBAAmB;YAC1C,MAAA,QAAQ,CAAC,gBAAgB,0CAAE,mBAAmB;YAC9C,MAAA,QAAQ,CAAC,cAAc,0CAAE,mBAAmB;YAC5C,MAAA,QAAQ,CAAC,aAAa,0CAAE,mBAAmB;SAC5C,CAAC;QAEF,MAAM,UAAU,GAAkB,EAAE,CAAC;QAErC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B;;;;;eAKG;YACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,SAAS;YACX,CAAC;YAED,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;gBACxB;;;;;;mBAMG;gBACH,IACE,EAAE,KAAK,IAAI;oBACX,OAAO,EAAE,KAAK,QAAQ;oBACtB,CAAC,CAAC,EAAE,YAAY,QAAQ,CAAC,EACzB,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAW,MAAM,CAAC,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEjD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,MAAM,CAAC,wBAAwB,CAAC,KAIvC;QACC,MAAM,gBAAgB,GAAe,IAAI,CAAC,6BAA6B,CAAC;YACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GACd,oBAAoB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAE7D;;;;;;;;;WASG;QACH,MAAM,gBAAgB,GACpB,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM;YACxC,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,CAAC;QAE3C,IAAI,gBAAgB,EAAE,CAAC;YACrB,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC;YACxB,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,MAAM,CAAC,6BAA6B,CAAC,KAE5C;;QACC,MAAM,QAAQ,GAAqC,KAAK,CAAC,QAAQ,CAAC;QAElE,MAAM,WAAW,GAAyC;YACxD,MAAA,QAAQ,CAAC,aAAa,0CAAE,gBAAgB;YACxC,MAAA,QAAQ,CAAC,WAAW,0CAAE,gBAAgB;YACtC,MAAA,QAAQ,CAAC,iBAAiB,0CAAE,gBAAgB;YAC5C,MAAA,QAAQ,CAAC,aAAa,0CAAE,gBAAgB;YACxC,MAAA,QAAQ,CAAC,aAAa,0CAAE,gBAAgB;YACxC,MAAA,QAAQ,CAAC,cAAc,0CAAE,gBAAgB;YACzC,MAAA,QAAQ,CAAC,WAAW,0CAAE,gBAAgB;YACtC,MAAA,QAAQ,CAAC,kBAAkB,0CAAE,gBAAgB;YAC7C,MAAA,QAAQ,CAAC,UAAU,0CAAE,gBAAgB;SACtC,CAAC;QAEF,MAAM,WAAW,GAA+B,IAAI,GAAG,EAGpD,CAAC;QAEJ,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,YAAY,GAAiC,KAAK,CAAC,OAAO,CAC9D,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,YAAY,CACzB;gBACC,CAAC,CAAC,UAAU,CAAC,YAAY;gBACzB,CAAC,CAAC,EAAE,CAAC;YAEP,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,MAAM,eAAe,GACnB,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,0CAAE,UAAU,0CAAE,UAAU,CAAC;gBAEvD,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;oBAC5D,SAAS;gBACX,CAAC;gBAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACvC,eAA0C,CAC3C,EAAE,CAAC;oBACF;;;;;uBAKG;oBACH,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACpD,SAAS;oBACX,CAAC;oBAED,MAAM,QAAQ,GAAkB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBAE3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC9B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvB,CAAC;oBAED,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAe,EAAE,CAAC;QAElC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YACxC;;;;eAIG;YACH,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9D,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,KAGxB;QACC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAEzC,EAAE,CAAC;YACF,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,IAAwB;QAChD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAoC,EAAE,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAS,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,SAAS;QACrB,OAAO;YACL,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,aAAa,EAAE,EAAE;YACjB,eAAe,EAAE,EAAE;YACnB,aAAa,EAAE,EAAE;YACjB,eAAe,EAAE,EAAE;YACnB,oBAAoB,EAAE,EAAE;YACxB,sBAAsB,EAAE,EAAE;YAC1B,uBAAuB,EAAE,EAAE;YAC3B,mBAAmB,EAAE,EAAE;YACvB,gBAAgB,EAAE,EAAE;YACpB,aAAa,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,OAAO,CAAC,IAAwB;QAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAqB,EAAW,EAAE;YAClE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -65,7 +65,7 @@ export const PodmanHostNameLabelKeys = [
|
|
|
65
65
|
* Like Proxmox/Ceph, the shipped Swarm alert templates group by
|
|
66
66
|
* datapoint labels (`container.name`), so their series labels do NOT
|
|
67
67
|
* carry this key; the deterministic cluster link for those monitors
|
|
68
|
-
* comes from the monitor step config instead (see
|
|
68
|
+
* comes from the monitor step config instead (see MonitorResourceContext).
|
|
69
69
|
* These keys cover user-built monitors that group by the cluster
|
|
70
70
|
* attribute.
|
|
71
71
|
*/
|
|
@@ -93,7 +93,7 @@ export const KubernetesClusterNameLabelKeys = [
|
|
|
93
93
|
* datapoint labels (`id`, `ceph_daemon`, `pool_id`), so their series
|
|
94
94
|
* labels do NOT carry these keys; the deterministic cluster link for
|
|
95
95
|
* those monitors comes from the monitor step config instead (see
|
|
96
|
-
*
|
|
96
|
+
* MonitorResourceContext). These keys cover user-built monitors that
|
|
97
97
|
* group by the cluster attribute, exactly like the K8s keys above.
|
|
98
98
|
*/
|
|
99
99
|
export const ProxmoxClusterNameLabelKeys = [
|
|
@@ -113,7 +113,7 @@ export const CephClusterNameLabelKeys = [
|
|
|
113
113
|
* alert templates group by the datapoint label `device.id`, so their
|
|
114
114
|
* series labels do NOT carry these keys; the deterministic fleet link
|
|
115
115
|
* for those monitors comes from the monitor step config instead (see
|
|
116
|
-
*
|
|
116
|
+
* MonitorResourceContext). These keys cover user-built monitors that
|
|
117
117
|
* group by the fleet attribute.
|
|
118
118
|
*/
|
|
119
119
|
export const IoTFleetNameLabelKeys = [
|
|
@@ -9,6 +9,7 @@ import ProxmoxCluster from "../../../Models/DatabaseModels/ProxmoxCluster";
|
|
|
9
9
|
import Service from "../../../Models/DatabaseModels/Service";
|
|
10
10
|
import Includes from "../../../Types/BaseDatabase/Includes";
|
|
11
11
|
import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
|
|
12
|
+
import MonitorType from "../../../Types/Monitor/MonitorType";
|
|
12
13
|
import CephClusterService from "../../Services/CephClusterService";
|
|
13
14
|
import DockerHostService from "../../Services/DockerHostService";
|
|
14
15
|
import DockerSwarmClusterService from "../../Services/DockerSwarmClusterService";
|
|
@@ -18,6 +19,7 @@ import KubernetesClusterService from "../../Services/KubernetesClusterService";
|
|
|
18
19
|
import PodmanHostService from "../../Services/PodmanHostService";
|
|
19
20
|
import ProxmoxClusterService from "../../Services/ProxmoxClusterService";
|
|
20
21
|
import ServiceService from "../../Services/ServiceService";
|
|
22
|
+
import QueryHelper from "../../Types/Database/QueryHelper";
|
|
21
23
|
import SeriesResourceLabels from "./SeriesResourceLabels";
|
|
22
24
|
export default class SeriesResourceLinker {
|
|
23
25
|
/*
|
|
@@ -29,6 +31,42 @@ export default class SeriesResourceLinker {
|
|
|
29
31
|
*/
|
|
30
32
|
static async resolveResourcesFromSeriesLabels(input) {
|
|
31
33
|
const refs = SeriesResourceLabels.extractResourceRefs(input.seriesLabels);
|
|
34
|
+
/*
|
|
35
|
+
* On a Docker or Podman monitor, `resource.host.name` names the
|
|
36
|
+
* DockerHost / PodmanHost the containers run on — the agent stamps
|
|
37
|
+
* the container runtime's host under the generic key. The label key
|
|
38
|
+
* map hands that key to Host, which would attach an unrelated Host
|
|
39
|
+
* row and surface the event on that host's Activity tab. The
|
|
40
|
+
* step-config path links the right model instead
|
|
41
|
+
* (MonitorStepResourceIdentity), so drop the host refs here rather
|
|
42
|
+
* than linking a resource the event is not about.
|
|
43
|
+
*/
|
|
44
|
+
if (input.monitorType === MonitorType.Docker ||
|
|
45
|
+
input.monitorType === MonitorType.Podman) {
|
|
46
|
+
refs.hostIds = [];
|
|
47
|
+
refs.hostNames = [];
|
|
48
|
+
}
|
|
49
|
+
/*
|
|
50
|
+
* Series labels are ingest-written, so they match the resource
|
|
51
|
+
* rows' identifier columns byte for byte. See resolveResourceIds
|
|
52
|
+
* for why that rules out case-insensitive matching here.
|
|
53
|
+
*/
|
|
54
|
+
return this.resolveResourceRefs({
|
|
55
|
+
refs: refs,
|
|
56
|
+
projectId: input.projectId,
|
|
57
|
+
nameMatch: "exact",
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/*
|
|
61
|
+
* The one place that turns identifiers into database ids, shared by
|
|
62
|
+
* the series-label path and the monitor-step-config path
|
|
63
|
+
* (MonitorStepResourceIdentity). Keeping the nine-way lookup table,
|
|
64
|
+
* the project scoping and the `Includes` batching in a single
|
|
65
|
+
* function is what stops the two paths from resolving the same
|
|
66
|
+
* identifier to different rows.
|
|
67
|
+
*/
|
|
68
|
+
static async resolveResourceRefs(input) {
|
|
69
|
+
const refs = input.refs;
|
|
32
70
|
/*
|
|
33
71
|
* Proxmox / Ceph / Docker Swarm / IoT carry no `oneuptime.*.id`
|
|
34
72
|
* stamp at ingest — they are addressable by name only — so their
|
|
@@ -96,6 +134,7 @@ export default class SeriesResourceLinker {
|
|
|
96
134
|
names: spec.names,
|
|
97
135
|
nameColumn: spec.nameColumn,
|
|
98
136
|
projectId: input.projectId,
|
|
137
|
+
nameMatch: input.nameMatch,
|
|
99
138
|
findBy: spec.findBy,
|
|
100
139
|
});
|
|
101
140
|
}));
|
|
@@ -113,9 +152,10 @@ export default class SeriesResourceLinker {
|
|
|
113
152
|
}
|
|
114
153
|
/*
|
|
115
154
|
* Resolve the series' resources and MERGE them onto the alert/incident.
|
|
116
|
-
* Merging (rather than assigning) matters because
|
|
117
|
-
* writes the same
|
|
118
|
-
* config; whichever runs second must not erase the
|
|
155
|
+
* Merging (rather than assigning) matters because
|
|
156
|
+
* attachResolvedResources writes the same relations from the
|
|
157
|
+
* monitor's step config; whichever runs second must not erase the
|
|
158
|
+
* other's work.
|
|
119
159
|
*
|
|
120
160
|
* Relations the series says nothing about are left untouched —
|
|
121
161
|
* `undefined`, not `[]` — so an ungrouped event and an event whose
|
|
@@ -130,6 +170,7 @@ export default class SeriesResourceLinker {
|
|
|
130
170
|
const resolved = await this.resolveResourcesFromSeriesLabels({
|
|
131
171
|
seriesLabels: input.seriesLabels,
|
|
132
172
|
projectId: input.projectId,
|
|
173
|
+
monitorType: input.monitorType,
|
|
133
174
|
});
|
|
134
175
|
this.mergeResolvedIdsIntoModel({
|
|
135
176
|
model: input.model,
|
|
@@ -137,27 +178,19 @@ export default class SeriesResourceLinker {
|
|
|
137
178
|
});
|
|
138
179
|
}
|
|
139
180
|
/*
|
|
140
|
-
* Attach the
|
|
141
|
-
* (
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
181
|
+
* Attach the resources resolved from the monitor's own step config
|
|
182
|
+
* (MonitorResourceContext), merging with — never overwriting —
|
|
183
|
+
* anything the series-label path already linked. Both paths can
|
|
184
|
+
* resolve the same resource, so this dedupes by id.
|
|
185
|
+
*
|
|
186
|
+
* Unlike the label path this runs for ungrouped events too, and that
|
|
187
|
+
* is the whole point: an ungrouped monitor has no series labels, so
|
|
188
|
+
* before this existed it linked nothing at all.
|
|
146
189
|
*/
|
|
147
|
-
static
|
|
190
|
+
static attachResolvedResources(input) {
|
|
148
191
|
this.mergeResolvedIdsIntoModel({
|
|
149
192
|
model: input.model,
|
|
150
|
-
resolved:
|
|
151
|
-
hostIds: [],
|
|
152
|
-
dockerHostIds: [],
|
|
153
|
-
podmanHostIds: [],
|
|
154
|
-
kubernetesClusterIds: [],
|
|
155
|
-
serviceIds: [],
|
|
156
|
-
proxmoxClusterIds: input.clusterContext.proxmoxClusterIds,
|
|
157
|
-
cephClusterIds: input.clusterContext.cephClusterIds,
|
|
158
|
-
dockerSwarmClusterIds: input.clusterContext.dockerSwarmClusterIds,
|
|
159
|
-
iotFleetIds: input.clusterContext.iotFleetIds,
|
|
160
|
-
},
|
|
193
|
+
resolved: input.resolved,
|
|
161
194
|
});
|
|
162
195
|
}
|
|
163
196
|
static mergeResolvedIdsIntoModel(input) {
|
|
@@ -236,10 +269,16 @@ export default class SeriesResourceLinker {
|
|
|
236
269
|
* Costs zero round-trips when the series carries neither, which is the
|
|
237
270
|
* common case for most of the nine types on any given series.
|
|
238
271
|
*
|
|
239
|
-
*
|
|
240
|
-
* by ingest from the same attribute the series
|
|
241
|
-
* identifiers are canonicalized on both sides —
|
|
242
|
-
* what keeps a lookup from straying onto a
|
|
272
|
+
* `nameMatch: "exact"` is for series labels. Every identifier column
|
|
273
|
+
* read here is written by ingest from the same attribute the series
|
|
274
|
+
* label carries — host identifiers are canonicalized on both sides —
|
|
275
|
+
* so exact matching is what keeps a lookup from straying onto a
|
|
276
|
+
* neighbouring row.
|
|
277
|
+
*
|
|
278
|
+
* `nameMatch: "caseInsensitive"` is for monitor step configs, where
|
|
279
|
+
* the identifier was typed by a user and the row's name was stamped
|
|
280
|
+
* by an agent; the two legitimately differ by case. This mirrors what
|
|
281
|
+
* ingest discovery itself does when it keys a row by name.
|
|
243
282
|
*/
|
|
244
283
|
static async resolveResourceIds(input) {
|
|
245
284
|
if (input.ids.length === 0 && input.names.length === 0) {
|
|
@@ -263,7 +302,9 @@ export default class SeriesResourceLinker {
|
|
|
263
302
|
lookups.push(input.findBy({
|
|
264
303
|
query: {
|
|
265
304
|
projectId: input.projectId,
|
|
266
|
-
[input.nameColumn]:
|
|
305
|
+
[input.nameColumn]: input.nameMatch === "caseInsensitive"
|
|
306
|
+
? QueryHelper.findWithSameTextAnyOf(input.names)
|
|
307
|
+
: new Includes(input.names),
|
|
267
308
|
},
|
|
268
309
|
select: { _id: true },
|
|
269
310
|
skip: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeriesResourceLinker.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/SeriesResourceLinker.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,4CAA4C,CAAC;AACrE,OAAO,UAAU,MAAM,2CAA2C,CAAC;AACnE,OAAO,kBAAkB,MAAM,mDAAmD,CAAC;AACnF,OAAO,IAAI,MAAM,qCAAqC,CAAC;AACvD,OAAO,QAAQ,MAAM,yCAAyC,CAAC;AAC/D,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,UAAU,MAAM,2CAA2C,CAAC;AACnE,OAAO,cAAc,MAAM,+CAA+C,CAAC;AAC3E,OAAO,OAAO,MAAM,wCAAwC,CAAC;AAC7D,OAAO,QAAQ,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"SeriesResourceLinker.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/SeriesResourceLinker.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,4CAA4C,CAAC;AACrE,OAAO,UAAU,MAAM,2CAA2C,CAAC;AACnE,OAAO,kBAAkB,MAAM,mDAAmD,CAAC;AACnF,OAAO,IAAI,MAAM,qCAAqC,CAAC;AACvD,OAAO,QAAQ,MAAM,yCAAyC,CAAC;AAC/D,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,UAAU,MAAM,2CAA2C,CAAC;AACnE,OAAO,cAAc,MAAM,+CAA+C,CAAC;AAC3E,OAAO,OAAO,MAAM,wCAAwC,CAAC;AAC7D,OAAO,QAAQ,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,WAAW,MAAM,oCAAoC,CAAC;AAE7D,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AACnE,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,yBAAyB,MAAM,0CAA0C,CAAC;AACjF,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,wBAAwB,MAAM,yCAAyC,CAAC;AAC/E,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,oBAEN,MAAM,wBAAwB,CAAC;AAyEhC,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,KAQpD;QACC,MAAM,IAAI,GAAuB,oBAAoB,CAAC,mBAAmB,CACvE,KAAK,CAAC,YAAY,CACnB,CAAC;QAEF;;;;;;;;;WASG;QACH,IACE,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM;YACxC,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,EACxC,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,CAAC;QAED;;;;WAIG;QACH,OAAO,IAAI,CAAC,mBAAmB,CAAC;YAC9B,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAIvC;QACC,MAAM,IAAI,GAAuB,KAAK,CAAC,IAAI,CAAC;QAE5C;;;;WAIG;QACH,MAAM,KAAK,GAAkC;YAC3C;gBACE,GAAG,EAAE,IAAI,CAAC,OAAO;gBACjB,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;aAC7C;YACD;gBACE,GAAG,EAAE,IAAI,CAAC,aAAa;gBACvB,KAAK,EAAE,IAAI,CAAC,eAAe;gBAC3B,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;aACzD;YACD;gBACE,GAAG,EAAE,IAAI,CAAC,aAAa;gBACvB,KAAK,EAAE,IAAI,CAAC,eAAe;gBAC3B,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;aACzD;YACD;gBACE,GAAG,EAAE,IAAI,CAAC,oBAAoB;gBAC9B,KAAK,EAAE,IAAI,CAAC,sBAAsB;gBAClC,UAAU,EAAE,mBAAmB;gBAC/B,MAAM,EAAE,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC;aACvE;YACD;gBACE,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;aACnD;YACD;gBACE,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,mBAAmB;gBAC/B,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC;aACjE;YACD;gBACE,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,gBAAgB;gBAC5B,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;aAC3D;YACD;gBACE,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,uBAAuB;gBACnC,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAC3C,yBAAyB,CAC1B;aACF;YACD;gBACE,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,aAAa;gBACzB,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;aACrD;SACF,CAAC;QAEF,MAAM,CACJ,OAAO,EACP,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,WAAW,EACZ,GAAG,MAAM,OAAO,CAAC,GAAG,CACnB,KAAK,CAAC,GAAG,CAAC,CAAC,IAA4B,EAA0B,EAAE;YACjE,OAAO,IAAI,CAAC,kBAAkB,CAAC;gBAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,aAAa,EAAE,aAAa,IAAI,EAAE;YAClC,aAAa,EAAE,aAAa,IAAI,EAAE;YAClC,oBAAoB,EAAE,oBAAoB,IAAI,EAAE;YAChD,UAAU,EAAE,UAAU,IAAI,EAAE;YAC5B,iBAAiB,EAAE,iBAAiB,IAAI,EAAE;YAC1C,cAAc,EAAE,cAAc,IAAI,EAAE;YACpC,qBAAqB,EAAE,qBAAqB,IAAI,EAAE;YAClD,WAAW,EAAE,WAAW,IAAI,EAAE;SAC/B,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,KAS9C;QACC,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,gCAAgC,CAAC;YAC1C,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC,CAAC;QAEL,IAAI,CAAC,yBAAyB,CAAC;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,uBAAuB,CAAC,KAGrC;QACC,IAAI,CAAC,yBAAyB,CAAC;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,yBAAyB,CAAC,KAGxC;QACC,MAAM,KAAK,GAAwB,KAAK,CAAC,KAAK,CAAC;QAC/C,MAAM,QAAQ,GAA8B,KAAK,CAAC,QAAQ,CAAC;QAE3D,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAS,EAAE;gBACrE,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,KAAK,CAAC,WAAW,EACjB,QAAQ,CAAC,aAAa,EACtB,GAAe,EAAE;gBACf,OAAO,IAAI,UAAU,EAAE,CAAC;YAC1B,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,KAAK,CAAC,WAAW,EACjB,QAAQ,CAAC,aAAa,EACtB,GAAe,EAAE;gBACf,OAAO,IAAI,UAAU,EAAE,CAAC;YAC1B,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CACvC,KAAK,CAAC,kBAAkB,EACxB,QAAQ,CAAC,oBAAoB,EAC7B,GAAsB,EAAE;gBACtB,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACjC,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAC7B,KAAK,CAAC,QAAQ,EACd,QAAQ,CAAC,UAAU,EACnB,GAAY,EAAE;gBACZ,OAAO,IAAI,OAAO,EAAE,CAAC;YACvB,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CACpC,KAAK,CAAC,eAAe,EACrB,QAAQ,CAAC,iBAAiB,EAC1B,GAAmB,EAAE;gBACnB,OAAO,IAAI,cAAc,EAAE,CAAC;YAC9B,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CACjC,KAAK,CAAC,YAAY,EAClB,QAAQ,CAAC,cAAc,EACvB,GAAgB,EAAE;gBAChB,OAAO,IAAI,WAAW,EAAE,CAAC;YAC3B,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CACxC,KAAK,CAAC,mBAAmB,EACzB,QAAQ,CAAC,qBAAqB,EAC9B,GAAuB,EAAE;gBACvB,OAAO,IAAI,kBAAkB,EAAE,CAAC;YAClC,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAC9B,KAAK,CAAC,SAAS,EACf,QAAQ,CAAC,WAAW,EACpB,GAAa,EAAE;gBACb,OAAO,IAAI,QAAQ,EAAE,CAAC;YACxB,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,SAAS,CACtB,QAA8B,EAC9B,WAA0B,EAC1B,MAAe;QAEf,MAAM,MAAM,GAAa,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAgB,IAAI,GAAG,CAClC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAO,EAAU,EAAE;YAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CACH,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,SAAS;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,IAAI,GAAM,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACK,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAcvC;QACC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAgB,IAAI,GAAG,EAAU,CAAC;QAEhD,MAAM,OAAO,GAAwD,EAAE,CAAC;QAExE,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CAAC;gBACX,KAAK,EAAE;oBACL,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,GAAG,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;iBAC7B;gBACD,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;gBACrB,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,iBAAiB;gBACxB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;aACxB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CAAC;gBACX,KAAK,EAAE;oBACL,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,CAAC,KAAK,CAAC,UAAU,CAAC,EAChB,KAAK,CAAC,SAAS,KAAK,iBAAiB;wBACnC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC;wBAChD,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;iBAChC;gBACD,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;gBACrB,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,iBAAiB;gBACxB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;aACxB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GACX,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export const STATUS_PAGE_CONTENT_SECURITY_POLICY_HEADER_NAME = "Content-Security-Policy";
|
|
2
|
+
/*
|
|
3
|
+
* Fallback status pages share the authenticated application's origin. Custom
|
|
4
|
+
* domains do not, so this policy is deliberately limited to documents served
|
|
5
|
+
* below /status-page on the application host/path.
|
|
6
|
+
*
|
|
7
|
+
* The status-page template currently contains inline script elements for its
|
|
8
|
+
* Tailwind configuration and optional Google Tag Manager bootstrap. Keeping
|
|
9
|
+
* 'unsafe-inline' in script-src lets those elements continue to run, while
|
|
10
|
+
* script-src-attr 'none' uses CSP3's more-specific directive to block inline
|
|
11
|
+
* event handlers such as <img onerror>. Omitting 'unsafe-eval' separately
|
|
12
|
+
* blocks eval/new Function, which is the custom-JavaScript execution sink.
|
|
13
|
+
* HTTPS script sources remain available for Tag Manager and the tags it loads.
|
|
14
|
+
*/
|
|
15
|
+
export const STATUS_PAGE_FALLBACK_CONTENT_SECURITY_POLICY = [
|
|
16
|
+
"script-src 'self' 'unsafe-inline' https:",
|
|
17
|
+
"script-src-attr 'none'",
|
|
18
|
+
"object-src 'none'",
|
|
19
|
+
"base-uri 'none'",
|
|
20
|
+
].join("; ");
|
|
21
|
+
export const isStatusPageFallbackDocumentPath = (path) => {
|
|
22
|
+
const normalizedPath = (path || "").split("?")[0] || "";
|
|
23
|
+
return (normalizedPath === "/status-page" ||
|
|
24
|
+
normalizedPath === "/status-page/" ||
|
|
25
|
+
normalizedPath.startsWith("/status-page/"));
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Adds the fallback status page's CSP before its HTML document is rendered.
|
|
29
|
+
* Custom-domain documents (normally served from "/") are intentionally left
|
|
30
|
+
* alone because arbitrary customization remains a supported isolated-origin
|
|
31
|
+
* feature there.
|
|
32
|
+
*/
|
|
33
|
+
export default function applyStatusPageContentSecurityPolicy(req, res) {
|
|
34
|
+
if (!isStatusPageFallbackDocumentPath(req.path || "") || res.headersSent) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
res.set(STATUS_PAGE_CONTENT_SECURITY_POLICY_HEADER_NAME, STATUS_PAGE_FALLBACK_CONTENT_SECURITY_POLICY);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=StatusPageContentSecurityPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusPageContentSecurityPolicy.js","sourceRoot":"","sources":["../../../../Server/Utils/StatusPageContentSecurityPolicy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,+CAA+C,GAC1D,yBAAyB,CAAC;AAE5B;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAW;IAClE,0CAA0C;IAC1C,wBAAwB;IACxB,mBAAmB;IACnB,iBAAiB;CAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,gCAAgC,GAA8B,CACzE,IAAY,EACH,EAAE;IACX,MAAM,cAAc,GAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEhE,OAAO,CACL,cAAc,KAAK,cAAc;QACjC,cAAc,KAAK,eAAe;QAClC,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,CAC3C,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAC1D,GAAmB,EACnB,GAAoB;IAEpB,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACzE,OAAO;IACT,CAAC;IAED,GAAG,CAAC,GAAG,CACL,+CAA+C,EAC/C,4CAA4C,CAC7C,CAAC;AACJ,CAAC"}
|