@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
|
@@ -44,6 +44,19 @@ export interface MonitorCriteriaInstanceType {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
47
|
+
/*
|
|
48
|
+
* Keyword the out-of-the-box criteria for the two incoming monitor types
|
|
49
|
+
* (Incoming Request and Incoming Email) look for in the payload body.
|
|
50
|
+
*
|
|
51
|
+
* These monitors are driven by whatever the sender pushes, so the default
|
|
52
|
+
* that is useful to the most people is "the sender told us something broke":
|
|
53
|
+
* a body carrying this keyword takes the monitor offline and opens an
|
|
54
|
+
* incident, a body without it puts the monitor back online. Users who want
|
|
55
|
+
* a dead-man's-switch instead can still add an Incoming Request /
|
|
56
|
+
* Email Received criteria by hand.
|
|
57
|
+
*/
|
|
58
|
+
public static readonly DEFAULT_INCOMING_BODY_ERROR_KEYWORD: string = "error";
|
|
59
|
+
|
|
47
60
|
public data: MonitorCriteriaInstanceType | undefined = undefined;
|
|
48
61
|
|
|
49
62
|
public constructor() {
|
|
@@ -88,9 +101,9 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
88
101
|
filterCondition: FilterCondition.All,
|
|
89
102
|
filters: [
|
|
90
103
|
{
|
|
91
|
-
checkOn: CheckOn.
|
|
92
|
-
filterType: FilterType.
|
|
93
|
-
value:
|
|
104
|
+
checkOn: CheckOn.RequestBody,
|
|
105
|
+
filterType: FilterType.NotContains,
|
|
106
|
+
value: MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD,
|
|
94
107
|
},
|
|
95
108
|
],
|
|
96
109
|
incidents: [],
|
|
@@ -99,7 +112,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
99
112
|
changeMonitorStatus: true,
|
|
100
113
|
createIncidents: false,
|
|
101
114
|
name: `Check if ${arg.monitorName} is online`,
|
|
102
|
-
description: `This criteria checks if the ${arg.monitorName}
|
|
115
|
+
description: `This criteria checks if the request body of ${arg.monitorName} does not contain "${MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD}"`,
|
|
103
116
|
};
|
|
104
117
|
|
|
105
118
|
return monitorCriteriaInstance;
|
|
@@ -115,9 +128,9 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
115
128
|
filterCondition: FilterCondition.All,
|
|
116
129
|
filters: [
|
|
117
130
|
{
|
|
118
|
-
checkOn: CheckOn.
|
|
119
|
-
filterType: FilterType.
|
|
120
|
-
value:
|
|
131
|
+
checkOn: CheckOn.EmailBody,
|
|
132
|
+
filterType: FilterType.NotContains,
|
|
133
|
+
value: MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD,
|
|
121
134
|
},
|
|
122
135
|
],
|
|
123
136
|
incidents: [],
|
|
@@ -126,7 +139,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
126
139
|
changeMonitorStatus: true,
|
|
127
140
|
createIncidents: false,
|
|
128
141
|
name: `Check if ${arg.monitorName} is online`,
|
|
129
|
-
description: `This criteria checks if the ${arg.monitorName}
|
|
142
|
+
description: `This criteria checks if the email body of ${arg.monitorName} does not contain "${MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD}"`,
|
|
130
143
|
};
|
|
131
144
|
|
|
132
145
|
return monitorCriteriaInstance;
|
|
@@ -1198,15 +1211,19 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
1198
1211
|
filterCondition: FilterCondition.Any,
|
|
1199
1212
|
filters: [
|
|
1200
1213
|
{
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1214
|
+
/*
|
|
1215
|
+
* If the sender reports an error in the request body, the monitor
|
|
1216
|
+
* is offline.
|
|
1217
|
+
*/
|
|
1218
|
+
checkOn: CheckOn.RequestBody,
|
|
1219
|
+
filterType: FilterType.Contains,
|
|
1220
|
+
value: MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD,
|
|
1204
1221
|
},
|
|
1205
1222
|
],
|
|
1206
1223
|
alerts: [
|
|
1207
1224
|
{
|
|
1208
1225
|
title: `${arg.monitorName} is offline`,
|
|
1209
|
-
description: `${arg.monitorName} is currently offline.`,
|
|
1226
|
+
description: `${arg.monitorName} is currently offline. The request body contains "${MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD}".`,
|
|
1210
1227
|
alertSeverityId: arg.alertSeverityId,
|
|
1211
1228
|
autoResolveAlert: true,
|
|
1212
1229
|
id: ObjectID.generate().toString(),
|
|
@@ -1217,7 +1234,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
1217
1234
|
incidents: [
|
|
1218
1235
|
{
|
|
1219
1236
|
title: `${arg.monitorName} is offline`,
|
|
1220
|
-
description: `${arg.monitorName} is currently offline.`,
|
|
1237
|
+
description: `${arg.monitorName} is currently offline. The request body contains "${MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD}".`,
|
|
1221
1238
|
incidentSeverityId: arg.incidentSeverityId,
|
|
1222
1239
|
autoResolveIncident: true,
|
|
1223
1240
|
id: ObjectID.generate().toString(),
|
|
@@ -1227,7 +1244,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
1227
1244
|
changeMonitorStatus: true,
|
|
1228
1245
|
createIncidents: true,
|
|
1229
1246
|
name: `Check if ${arg.monitorName} is offline`,
|
|
1230
|
-
description: `This criteria checks if the ${arg.monitorName}
|
|
1247
|
+
description: `This criteria checks if the request body of ${arg.monitorName} contains "${MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD}"`,
|
|
1231
1248
|
};
|
|
1232
1249
|
}
|
|
1233
1250
|
|
|
@@ -1238,15 +1255,19 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
1238
1255
|
filterCondition: FilterCondition.Any,
|
|
1239
1256
|
filters: [
|
|
1240
1257
|
{
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1258
|
+
/*
|
|
1259
|
+
* If the received email reports an error in its body, the monitor
|
|
1260
|
+
* is offline.
|
|
1261
|
+
*/
|
|
1262
|
+
checkOn: CheckOn.EmailBody,
|
|
1263
|
+
filterType: FilterType.Contains,
|
|
1264
|
+
value: MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD,
|
|
1244
1265
|
},
|
|
1245
1266
|
],
|
|
1246
1267
|
alerts: [
|
|
1247
1268
|
{
|
|
1248
1269
|
title: `${arg.monitorName} is offline`,
|
|
1249
|
-
description: `${arg.monitorName} is currently offline.
|
|
1270
|
+
description: `${arg.monitorName} is currently offline. The email body contains "${MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD}".`,
|
|
1250
1271
|
alertSeverityId: arg.alertSeverityId,
|
|
1251
1272
|
autoResolveAlert: true,
|
|
1252
1273
|
id: ObjectID.generate().toString(),
|
|
@@ -1257,7 +1278,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
1257
1278
|
incidents: [
|
|
1258
1279
|
{
|
|
1259
1280
|
title: `${arg.monitorName} is offline`,
|
|
1260
|
-
description: `${arg.monitorName} is currently offline.
|
|
1281
|
+
description: `${arg.monitorName} is currently offline. The email body contains "${MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD}".`,
|
|
1261
1282
|
incidentSeverityId: arg.incidentSeverityId,
|
|
1262
1283
|
autoResolveIncident: true,
|
|
1263
1284
|
id: ObjectID.generate().toString(),
|
|
@@ -1267,7 +1288,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
1267
1288
|
changeMonitorStatus: true,
|
|
1268
1289
|
createIncidents: true,
|
|
1269
1290
|
name: `Check if ${arg.monitorName} is offline`,
|
|
1270
|
-
description: `This criteria checks if the ${arg.monitorName}
|
|
1291
|
+
description: `This criteria checks if the email body of ${arg.monitorName} contains "${MonitorCriteriaInstance.DEFAULT_INCOMING_BODY_ERROR_KEYWORD}"`,
|
|
1271
1292
|
};
|
|
1272
1293
|
}
|
|
1273
1294
|
|
|
@@ -5,6 +5,7 @@ import RecommendationType from "../../Recommendation/RecommendationType";
|
|
|
5
5
|
import {
|
|
6
6
|
MonitorRecommendation,
|
|
7
7
|
MonitorRecommendationArgs,
|
|
8
|
+
MonitorRecommendationContext,
|
|
8
9
|
MonitorRecommendationResourceType,
|
|
9
10
|
MonitorRecommendationSeverity,
|
|
10
11
|
buildRecommendationId,
|
|
@@ -46,6 +47,11 @@ import {
|
|
|
46
47
|
RumAlertTemplate,
|
|
47
48
|
getAllRumAlertTemplates,
|
|
48
49
|
} from "../RumAlertTemplates";
|
|
50
|
+
import {
|
|
51
|
+
ServiceAlertTemplate,
|
|
52
|
+
getAllServiceAlertTemplates,
|
|
53
|
+
getServiceAlertTemplates,
|
|
54
|
+
} from "../ServiceAlertTemplates";
|
|
49
55
|
|
|
50
56
|
/*
|
|
51
57
|
* A resource type's entry in the registry.
|
|
@@ -70,17 +76,49 @@ export interface MonitorRecommendationResourceTypeDefinition {
|
|
|
70
76
|
| "clusterIdentifier"
|
|
71
77
|
| "hostIdentifier"
|
|
72
78
|
| "fleetIdentifier"
|
|
73
|
-
| "rumApplicationId"
|
|
79
|
+
| "rumApplicationId"
|
|
80
|
+
| "serviceId";
|
|
74
81
|
icon: IconProp;
|
|
75
|
-
|
|
82
|
+
/*
|
|
83
|
+
* What to recommend for ONE resource of this type.
|
|
84
|
+
*
|
|
85
|
+
* Nine of the ten resource types ignore the argument entirely — every
|
|
86
|
+
* Kubernetes cluster is offered the same eighteen recommendations, and a
|
|
87
|
+
* zero-argument function satisfies this type, so those nine are declared
|
|
88
|
+
* exactly as they were. Services are the exception: see
|
|
89
|
+
* `MonitorRecommendationContext`.
|
|
90
|
+
*
|
|
91
|
+
* Passing no context means "nothing is known about this resource", and the
|
|
92
|
+
* only honest answer to that is the context-free subset. It does NOT mean
|
|
93
|
+
* "give me everything" — that is what `getAllPossibleRecommendations` is
|
|
94
|
+
* for, and conflating the two is how a UI ends up offering JVM monitors to
|
|
95
|
+
* a Go service.
|
|
96
|
+
*/
|
|
97
|
+
getRecommendations: (
|
|
98
|
+
context?: MonitorRecommendationContext | undefined,
|
|
99
|
+
) => Array<MonitorRecommendation>;
|
|
100
|
+
/*
|
|
101
|
+
* Every recommendation this resource type can EVER produce, across every
|
|
102
|
+
* context. Only worth setting on a resource type whose set actually varies;
|
|
103
|
+
* `getAllRecommendations` falls back to `getRecommendations()` for the rest.
|
|
104
|
+
*
|
|
105
|
+
* This is what the registry-wide invariants have to run against — globally
|
|
106
|
+
* unique recommendation ids, globally distinct coverage fingerprints,
|
|
107
|
+
* a severity every mapper understands. Running them over the context-free
|
|
108
|
+
* subset instead would leave every language-specific template unchecked,
|
|
109
|
+
* which is precisely the set most likely to collide.
|
|
110
|
+
*/
|
|
111
|
+
getAllPossibleRecommendations?:
|
|
112
|
+
| (() => Array<MonitorRecommendation>)
|
|
113
|
+
| undefined;
|
|
76
114
|
}
|
|
77
115
|
|
|
78
116
|
/*
|
|
79
|
-
* The structural shape every `<X>AlertTemplate` interface shares. The
|
|
80
|
-
* modules declare
|
|
117
|
+
* The structural shape every `<X>AlertTemplate` interface shares. The ten
|
|
118
|
+
* modules declare ten separate interfaces that differ only in the literal
|
|
81
119
|
* union used for `category` (and the args type of `getMonitorStep`), so the
|
|
82
120
|
* normalizer below widens `category` to `string` rather than trying to union
|
|
83
|
-
*
|
|
121
|
+
* ten unrelated literal unions.
|
|
84
122
|
*/
|
|
85
123
|
interface StructuralAlertTemplate {
|
|
86
124
|
id: string;
|
|
@@ -307,6 +345,55 @@ function getRumRecommendations(): Array<MonitorRecommendation> {
|
|
|
307
345
|
});
|
|
308
346
|
}
|
|
309
347
|
|
|
348
|
+
/*
|
|
349
|
+
* The Service adapter, and the only one that is two functions rather than one.
|
|
350
|
+
*
|
|
351
|
+
* `getServiceRecommendations` answers "what should THIS service be offered",
|
|
352
|
+
* which depends on its runtime. `getAllServiceRecommendations` answers "what
|
|
353
|
+
* can a service ever be offered", which does not. Both go through the same
|
|
354
|
+
* normalizer so a template cannot be shaped differently depending on which
|
|
355
|
+
* door it came through.
|
|
356
|
+
*/
|
|
357
|
+
function normalizeServiceTemplate(
|
|
358
|
+
template: ServiceAlertTemplate,
|
|
359
|
+
): MonitorRecommendation {
|
|
360
|
+
return normalize({
|
|
361
|
+
resourceType: MonitorRecommendationResourceType.Service,
|
|
362
|
+
/*
|
|
363
|
+
* Read off the template rather than fixed, because the service catalog —
|
|
364
|
+
* like RUM's — deliberately spans metric, trace and exception monitors.
|
|
365
|
+
*/
|
|
366
|
+
monitorType: template.monitorType,
|
|
367
|
+
template: template,
|
|
368
|
+
getMonitorStep: (args: MonitorRecommendationArgs) => {
|
|
369
|
+
return template.getMonitorStep({
|
|
370
|
+
serviceId: args.resourceIdentifier,
|
|
371
|
+
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
372
|
+
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
373
|
+
defaultIncidentSeverityId: args.defaultIncidentSeverityId,
|
|
374
|
+
defaultAlertSeverityId: args.defaultAlertSeverityId,
|
|
375
|
+
monitorName: args.monitorName,
|
|
376
|
+
});
|
|
377
|
+
},
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
function getServiceRecommendations(
|
|
382
|
+
context?: MonitorRecommendationContext | undefined,
|
|
383
|
+
): Array<MonitorRecommendation> {
|
|
384
|
+
return getServiceAlertTemplates(context?.serviceLanguage).map(
|
|
385
|
+
(template: ServiceAlertTemplate) => {
|
|
386
|
+
return normalizeServiceTemplate(template);
|
|
387
|
+
},
|
|
388
|
+
);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
function getAllServiceRecommendations(): Array<MonitorRecommendation> {
|
|
392
|
+
return getAllServiceAlertTemplates().map((template: ServiceAlertTemplate) => {
|
|
393
|
+
return normalizeServiceTemplate(template);
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
|
|
310
397
|
const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefinition> =
|
|
311
398
|
[
|
|
312
399
|
{
|
|
@@ -385,6 +472,19 @@ const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefiniti
|
|
|
385
472
|
icon: IconProp.Globe,
|
|
386
473
|
getRecommendations: getRumRecommendations,
|
|
387
474
|
},
|
|
475
|
+
{
|
|
476
|
+
resourceType: MonitorRecommendationResourceType.Service,
|
|
477
|
+
monitorTypes: [
|
|
478
|
+
MonitorType.Metrics,
|
|
479
|
+
MonitorType.Traces,
|
|
480
|
+
MonitorType.Exceptions,
|
|
481
|
+
],
|
|
482
|
+
resourceLabel: "Service",
|
|
483
|
+
identifierFieldName: "serviceId",
|
|
484
|
+
icon: IconProp.Code,
|
|
485
|
+
getRecommendations: getServiceRecommendations,
|
|
486
|
+
getAllPossibleRecommendations: getAllServiceRecommendations,
|
|
487
|
+
},
|
|
388
488
|
];
|
|
389
489
|
|
|
390
490
|
export default class MonitorRecommendationCatalog {
|
|
@@ -402,8 +502,14 @@ export default class MonitorRecommendationCatalog {
|
|
|
402
502
|
);
|
|
403
503
|
}
|
|
404
504
|
|
|
505
|
+
/*
|
|
506
|
+
* What to offer ONE resource. `context` is what a caller knows about that
|
|
507
|
+
* specific resource; omitting it is a valid answer meaning "nothing", and
|
|
508
|
+
* yields the subset that is true of every resource of this type.
|
|
509
|
+
*/
|
|
405
510
|
public static getRecommendations(
|
|
406
511
|
resourceType: MonitorRecommendationResourceType,
|
|
512
|
+
context?: MonitorRecommendationContext | undefined,
|
|
407
513
|
): Array<MonitorRecommendation> {
|
|
408
514
|
const definition: MonitorRecommendationResourceTypeDefinition | undefined =
|
|
409
515
|
this.getResourceTypeDefinition(resourceType);
|
|
@@ -412,13 +518,26 @@ export default class MonitorRecommendationCatalog {
|
|
|
412
518
|
return [];
|
|
413
519
|
}
|
|
414
520
|
|
|
415
|
-
return definition.getRecommendations();
|
|
521
|
+
return definition.getRecommendations(context);
|
|
416
522
|
}
|
|
417
523
|
|
|
524
|
+
/*
|
|
525
|
+
* Every recommendation the catalog can produce, for any resource, in any
|
|
526
|
+
* context.
|
|
527
|
+
*
|
|
528
|
+
* Deliberately takes no context. Its two jobs — resolving a
|
|
529
|
+
* `recommendationId` back to its recommendation, and giving the
|
|
530
|
+
* registry-wide invariant tests something exhaustive to run over — are both
|
|
531
|
+
* jobs where filtering would silently weaken the answer. Resolving an id in
|
|
532
|
+
* particular has to work from a dismissal row alone, which carries no
|
|
533
|
+
* language.
|
|
534
|
+
*/
|
|
418
535
|
public static getAllRecommendations(): Array<MonitorRecommendation> {
|
|
419
536
|
return RESOURCE_TYPE_DEFINITIONS.flatMap(
|
|
420
537
|
(definition: MonitorRecommendationResourceTypeDefinition) => {
|
|
421
|
-
return definition.
|
|
538
|
+
return definition.getAllPossibleRecommendations
|
|
539
|
+
? definition.getAllPossibleRecommendations()
|
|
540
|
+
: definition.getRecommendations();
|
|
422
541
|
},
|
|
423
542
|
);
|
|
424
543
|
}
|
|
@@ -441,10 +560,14 @@ export default class MonitorRecommendationCatalog {
|
|
|
441
560
|
*/
|
|
442
561
|
public static getCategories(
|
|
443
562
|
resourceType: MonitorRecommendationResourceType,
|
|
563
|
+
context?: MonitorRecommendationContext | undefined,
|
|
444
564
|
): Array<string> {
|
|
445
565
|
const categories: Array<string> = [];
|
|
446
566
|
|
|
447
|
-
for (const recommendation of this.getRecommendations(
|
|
567
|
+
for (const recommendation of this.getRecommendations(
|
|
568
|
+
resourceType,
|
|
569
|
+
context,
|
|
570
|
+
)) {
|
|
448
571
|
if (!categories.includes(recommendation.category)) {
|
|
449
572
|
categories.push(recommendation.category);
|
|
450
573
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import ObjectID from "../../ObjectID";
|
|
2
2
|
import RecommendationType from "../../Recommendation/RecommendationType";
|
|
3
|
+
import { ServiceLanguage } from "../../Service/ServiceLanguage";
|
|
3
4
|
import MonitorStep from "../MonitorStep";
|
|
4
5
|
import MonitorType from "../MonitorType";
|
|
5
6
|
|
|
@@ -10,9 +11,14 @@ import MonitorType from "../MonitorType";
|
|
|
10
11
|
* member here and an adapter in `MonitorRecommendationCatalog.ts`, and the
|
|
11
12
|
* catalog's own tests fail until both exist.
|
|
12
13
|
*
|
|
13
|
-
* These values are persisted
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* These values are NOT persisted directly, but they ARE written into
|
|
15
|
+
* `RecommendationDismissal.resourceType` (a free-text column) and into every
|
|
16
|
+
* `recommendationId` via `buildRecommendationId`. Renaming a member orphans
|
|
17
|
+
* the dismissals recorded under the old value, exactly as renaming a
|
|
18
|
+
* `RecommendationType` member does.
|
|
19
|
+
*
|
|
20
|
+
* They are free to differ from `MonitorType`, and they do: `DockerSwarm` here
|
|
21
|
+
* vs `"Docker Swarm"` there.
|
|
16
22
|
*/
|
|
17
23
|
export enum MonitorRecommendationResourceType {
|
|
18
24
|
Kubernetes = "Kubernetes",
|
|
@@ -24,13 +30,46 @@ export enum MonitorRecommendationResourceType {
|
|
|
24
30
|
Ceph = "Ceph",
|
|
25
31
|
IoTDevice = "IoTDevice",
|
|
26
32
|
RumApplication = "RumApplication",
|
|
33
|
+
/*
|
|
34
|
+
* An APM telemetry service — a backend process reporting OTel traces,
|
|
35
|
+
* metrics and exceptions under a `service.name`. The only resource type
|
|
36
|
+
* whose recommendation set is not a constant: see
|
|
37
|
+
* `MonitorRecommendationContext`.
|
|
38
|
+
*/
|
|
39
|
+
Service = "Service",
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
* What is known about ONE resource, for resource types whose recommendation
|
|
44
|
+
* set depends on it.
|
|
45
|
+
*
|
|
46
|
+
* Every other resource type answers "what should I monitor here?" from the
|
|
47
|
+
* resource type alone — every Kubernetes cluster gets the same eighteen
|
|
48
|
+
* recommendations. Services do not: the runtime signals worth alerting on for
|
|
49
|
+
* a Java service (heap pressure, GC pause time, thread exhaustion) do not
|
|
50
|
+
* exist on a Go service, and recommending them there produces monitors that
|
|
51
|
+
* silently never fire, which is worse than recommending nothing.
|
|
52
|
+
*
|
|
53
|
+
* Optional everywhere, and every field inside it is optional too, so a caller
|
|
54
|
+
* that knows nothing still gets the language-agnostic recommendations rather
|
|
55
|
+
* than an empty list or a guess.
|
|
56
|
+
*/
|
|
57
|
+
export interface MonitorRecommendationContext {
|
|
58
|
+
/*
|
|
59
|
+
* The service's detected runtime. `null` and `undefined` mean the same
|
|
60
|
+
* thing here — nothing identified the runtime — and both are accepted
|
|
61
|
+
* because `detectServiceLanguage` returns `null` while an absent field is
|
|
62
|
+
* `undefined`, and forcing every call site to normalize one into the other
|
|
63
|
+
* is how a `null` ends up narrowing to some default language by accident.
|
|
64
|
+
*/
|
|
65
|
+
serviceLanguage?: ServiceLanguage | null | undefined;
|
|
27
66
|
}
|
|
28
67
|
|
|
29
68
|
/*
|
|
30
69
|
* Every template module declares its own
|
|
31
70
|
* `<X>AlertTemplateSeverity = "Critical" | "Warning"` union. They are
|
|
32
71
|
* identical, so the registry uses one shared type rather than a union of
|
|
33
|
-
*
|
|
72
|
+
* ten structurally-equal unions.
|
|
34
73
|
*/
|
|
35
74
|
export type MonitorRecommendationSeverity = "Critical" | "Warning";
|
|
36
75
|
|
|
@@ -42,11 +81,12 @@ export type MonitorRecommendationSeverity = "Critical" | "Warning";
|
|
|
42
81
|
* hostIdentifier -> Host, Docker, Podman
|
|
43
82
|
* fleetIdentifier -> IoTDevice
|
|
44
83
|
* rumApplicationId -> RUM application
|
|
84
|
+
* serviceId -> APM service
|
|
45
85
|
*
|
|
46
86
|
* The registry normalizes that single difference into `resourceIdentifier`
|
|
47
87
|
* and each catalog adapter renames it back on the way into the module's own
|
|
48
88
|
* `getMonitorStep`. Nothing else about the args differs, which is why this
|
|
49
|
-
* one interface can drive all
|
|
89
|
+
* one interface can drive all ten.
|
|
50
90
|
*/
|
|
51
91
|
export interface MonitorRecommendationArgs {
|
|
52
92
|
resourceIdentifier: string;
|
|
@@ -89,9 +129,9 @@ export interface MonitorRecommendation {
|
|
|
89
129
|
* Registry-wide unique id for a recommendation.
|
|
90
130
|
*
|
|
91
131
|
* Every template module happens to self-prefix its ids today (`host-high-cpu`,
|
|
92
|
-
* `docker-high-cpu`, `podman-high-cpu`), so
|
|
93
|
-
* globally unique right now. That is a convention across
|
|
94
|
-
* maintained files, not a contract — each module only guarantees uniqueness
|
|
132
|
+
* `docker-high-cpu`, `podman-high-cpu`), so every shipped template id is in
|
|
133
|
+
* fact globally unique right now. That is a convention across ten
|
|
134
|
+
* independently maintained files, not a contract — each module only guarantees uniqueness
|
|
95
135
|
* WITHIN itself. Prefixing here makes the registry correct regardless: without
|
|
96
136
|
* it, the day two modules pick the same id, selecting one card in the UI would
|
|
97
137
|
* silently also select the other. `MonitorRecommendationCatalog.test.ts` keeps
|