@oneuptime/common 12.0.12 → 12.0.14
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/DatabaseBaseModel/DatabaseBaseModel.ts +32 -5
- package/Models/DatabaseModels/NetworkDevice.ts +64 -0
- package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +14 -0
- package/Models/DatabaseModels/StatusPage.ts +59 -0
- package/Models/DatabaseModels/StatusPageOidc.ts +2 -0
- 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/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +19 -2
- package/Server/API/AIChatAPI.ts +55 -56
- package/Server/API/BaseAPI.ts +79 -14
- package/Server/API/CommonAPI.ts +89 -0
- package/Server/API/MicrosoftTeamsAPI.ts +20 -9
- package/Server/API/SlackAPI.ts +13 -10
- package/Server/API/StatusPageAPI.ts +2197 -2128
- package/Server/API/TelemetryAPI.ts +72 -3
- 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/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.ts +154 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.ts +30 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.ts +45 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Middleware/UserAuthorization.ts +11 -2
- package/Server/Middleware/VerificationCodeRateLimit.ts +586 -0
- package/Server/Services/AnalyticsDatabaseService.ts +169 -0
- package/Server/Services/ApiKeyPermissionService.ts +116 -2
- package/Server/Services/DatabaseService.ts +118 -6
- package/Server/Services/LogAggregationService.ts +39 -0
- package/Server/Services/LogService.ts +21 -0
- package/Server/Services/NetworkSiteService.ts +12 -0
- package/Server/Services/PushNotificationService.ts +127 -12
- package/Server/Services/SpanService.ts +21 -0
- package/Server/Services/TeamMemberService.ts +53 -13
- package/Server/Services/TraceAggregationService.ts +15 -0
- 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/Services/WorkspaceNotificationRuleService.ts +172 -220
- package/Server/Types/AnalyticsDatabase/ModelPermission.ts +9 -0
- package/Server/Types/Database/Permissions/AccessControlPermission.ts +47 -16
- package/Server/Types/Database/QueryHelper.ts +30 -0
- package/Server/Utils/APIKey/AccessPermission.ts +16 -40
- package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +59 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +144 -0
- package/Server/Utils/ChannelVerification.ts +510 -0
- package/Server/Utils/LogRedaction.ts +576 -0
- package/Server/Utils/Logger.ts +123 -46
- package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +13 -16
- package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +94 -23
- package/Server/Utils/Monitor/MonitorAlert.ts +24 -21
- package/Server/Utils/Monitor/MonitorIncident.ts +21 -18
- package/Server/Utils/Monitor/MonitorResource.ts +29 -9
- package/Server/Utils/Monitor/MonitorResourceContext.ts +107 -0
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +442 -0
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +28 -7
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +3 -3
- package/Server/Utils/Monitor/SeriesResourceLinker.ts +96 -28
- package/Server/Utils/SessionReplay/SessionReplayGateCacheStore.ts +56 -10
- package/Server/Utils/StartServer.ts +30 -9
- package/Server/Utils/StatusPageSearchEngineIndexing.ts +33 -0
- package/Server/Utils/Telemetry/ResourceEntityFilter.ts +441 -0
- package/Server/Utils/TotpAuth.ts +137 -9
- package/Server/Utils/UserRegistrationToken.ts +182 -0
- package/Server/Utils/VerificationCode.ts +134 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +488 -46
- 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 +328 -0
- package/Tests/App/StatusPage/StatusPageIndexPageRobotsMeta.test.ts +130 -0
- package/Tests/Models/DatabaseModels/DatabaseBaseModelToJSONObjectCache.test.ts +180 -0
- package/Tests/Models/StatusPageEnableSearchEngineIndexing.test.ts +157 -0
- package/Tests/Models/UserPushCriticalAlertColumn.test.ts +172 -0
- package/Tests/Server/API/AIChatCancelAndFeedback.test.ts +23 -1
- package/Tests/Server/API/AIChatRouteAuthorization.test.ts +785 -0
- package/Tests/Server/API/BaseAPIApiKeyAuth.test.ts +21 -8
- package/Tests/Server/API/BaseAPIGetListParallel.test.ts +519 -0
- package/Tests/Server/API/CommonAPIAuthGuard.test.ts +290 -0
- package/Tests/Server/API/MicrosoftTeamsManifest.test.ts +7 -1
- package/Tests/Server/API/NotificationChannelVerificationAPI.test.ts +543 -0
- package/Tests/Server/API/StatusPageOverviewCache.test.ts +474 -0
- package/Tests/Server/API/StatusPageSeoSearchEngineIndexing.test.ts +189 -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/InMemoryTTLCache.test.ts +158 -0
- package/Tests/Server/Infrastructure/Postgres/DeviceRoleAndDeclaredLinkParentMigration.test.ts +9 -60
- package/Tests/Server/Infrastructure/Postgres/FixTotpOtpUrlAlgorithmMigration.test.ts +315 -0
- package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +24 -15
- package/Tests/Server/Middleware/UserAuthorization.test.ts +79 -0
- package/Tests/Server/Middleware/VerificationCodeRateLimit.test.ts +775 -0
- package/Tests/Server/Services/AddNetworkDeviceReachabilityColumnsMigration.test.ts +280 -0
- package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +33 -13
- package/Tests/Server/Services/AnalyticsDatabaseSortKeyBoundary.test.ts +658 -0
- package/Tests/Server/Services/ApiKeyPermissionService.test.ts +347 -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/DatabaseServiceUpdateDebugLogging.test.ts +282 -0
- package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +1 -0
- package/Tests/Server/Services/LogAggregationScanMemory.test.ts +421 -0
- package/Tests/Server/Services/LogAggregationService.test.ts +2 -2
- package/Tests/Server/Services/NetworkSiteService.test.ts +56 -2
- 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/TelemetryResourceFacetFilters.test.ts +267 -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/Services/WorkspaceNotificationRuleTestRuleChannels.test.ts +702 -0
- package/Tests/Server/TestingUtils/AuthenticatorApp.ts +248 -0
- package/Tests/Server/Types/Database/Permissions/AccessControlPermission.test.ts +165 -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/Workflow/Components/JsonToText.test.ts +384 -0
- package/Tests/Server/Types/Workflow/Components/MergeJson.test.ts +403 -0
- package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +48 -36
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +213 -0
- package/Tests/Server/Utils/Browser.test.ts +162 -0
- package/Tests/Server/Utils/ChannelVerification.test.ts +689 -0
- package/Tests/Server/Utils/Express.test.ts +371 -0
- package/Tests/Server/Utils/LogRedaction.test.ts +415 -0
- package/Tests/Server/Utils/LoggerCredentialLeak.test.ts +245 -0
- 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/IncomingEmailBodyCriteria.test.ts +243 -0
- package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestBodyCriteria.test.ts +278 -0
- package/Tests/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.test.ts +374 -4
- 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 +455 -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/NetworkDeviceReachabilityRoundTrip.test.ts +369 -0
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +86 -8
- package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +92 -18
- package/Tests/Server/Utils/PrivacyFilterUtil.test.ts +64 -0
- package/Tests/Server/Utils/PushNotificationUtilCreators.test.ts +267 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayGateCacheStore.test.ts +207 -0
- package/Tests/Server/Utils/StartServerBodyVerify.test.ts +335 -0
- package/Tests/Server/Utils/StatusPageSearchEngineIndexing.test.ts +60 -0
- package/Tests/Server/Utils/Telemetry/OneuptimeLabel.test.ts +439 -0
- package/Tests/Server/Utils/Telemetry/ResourceEntityFilter.test.ts +435 -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/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +607 -62
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsInstalledTeamIdSpace.test.ts +778 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsTeamInstalls.test.ts +44 -10
- package/Tests/Types/API/HostnameFromAuthority.test.ts +164 -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/Database/AccessControl/ColumnAccessControlCache.test.ts +344 -0
- package/Tests/Types/Database/DatabasePropertyFindOperator.test.ts +518 -0
- package/Tests/Types/Database/TableColumnMetadataCache.test.ts +286 -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/MonitorStep.test.ts +100 -0
- package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +360 -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/Service/ServiceLanguage.test.ts +255 -0
- package/Tests/Types/StatusPage/SearchEngineIndexing.test.ts +86 -0
- package/Tests/Types/Telemetry/ResourceEntityFacet.test.ts +254 -0
- package/Tests/Types/TextRandomGeneration.test.ts +211 -0
- package/Tests/UI/Components/Button.test.tsx +175 -1
- package/Tests/UI/Components/CardSelect.test.tsx +1021 -0
- 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/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/MasterPage.test.tsx +36 -1
- 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/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/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 +66 -1
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +115 -6
- package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +610 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +114 -45
- package/Tests/Utils/Rum/UrlScrubberSegments.test.ts +362 -0
- package/Types/API/Hostname.ts +79 -0
- package/Types/Database/AccessControl/ColumnAccessControl.ts +33 -11
- package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +33 -11
- package/Types/Database/DatabaseProperty.ts +38 -0
- package/Types/Database/TableColumn.ts +34 -7
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/Events/Recurring.ts +16 -1
- package/Types/Monitor/MonitorCriteriaInstance.ts +41 -20
- package/Types/Monitor/MonitorStep.ts +13 -1
- package/Types/Monitor/MonitorType.ts +345 -40
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +131 -8
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +48 -8
- package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +43 -0
- package/Types/Monitor/ServiceAlertTemplates.ts +1352 -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/StatusPage/SearchEngineIndexing.ts +61 -0
- package/Types/Telemetry/ResourceEntityFacet.ts +211 -0
- package/Types/Text.ts +111 -19
- package/UI/Components/Button/Button.tsx +27 -14
- package/UI/Components/CardSelect/CardSelect.tsx +714 -105
- 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/EmptyState/EmptyState.tsx +8 -1
- package/UI/Components/Feed/FeedItem.tsx +1 -1
- package/UI/Components/Footer/Footer.tsx +32 -6
- package/UI/Components/Forms/Fields/FormField.tsx +3 -0
- package/UI/Components/Forms/Types/Field.ts +8 -0
- package/UI/Components/List/List.tsx +37 -5
- package/UI/Components/List/ListSkeleton.tsx +54 -0
- package/UI/Components/Loader/PageLoader.tsx +29 -8
- package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +26 -4
- package/UI/Components/Markdown.tsx/LazyMarkdownViewer.tsx +23 -2
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +71 -26
- package/UI/Components/MasterPage/MasterPage.tsx +24 -11
- package/UI/Components/Modal/Modal.tsx +2 -2
- 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/Monitor/MonitorMetricType.ts +16 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +60 -8
- package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +262 -0
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +41 -24
- package/Utils/Telemetry/CrossSignalScope.ts +75 -4
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +20 -4
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +66 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.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 +60 -0
- package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOidc.js +2 -0
- package/build/dist/Models/DatabaseModels/StatusPageOidc.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/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
- package/build/dist/Server/API/AIChatAPI.js +48 -35
- package/build/dist/Server/API/AIChatAPI.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/CommonAPI.js +59 -0
- package/build/dist/Server/API/CommonAPI.js.map +1 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js +20 -6
- package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/SlackAPI.js +13 -10
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +745 -673
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +34 -3
- package/build/dist/Server/API/TelemetryAPI.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/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/1787500000000-AddEnableSearchEngineIndexingToStatusPage.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.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/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/UserAuthorization.js +6 -2
- 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/Services/AnalyticsDatabaseService.js +136 -0
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/ApiKeyPermissionService.js +90 -1
- package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +89 -6
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +7 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/LogService.js +16 -0
- package/build/dist/Server/Services/LogService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +12 -0
- package/build/dist/Server/Services/NetworkSiteService.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/SpanService.js +16 -0
- package/build/dist/Server/Services/SpanService.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/TraceAggregationService.js +2 -0
- package/build/dist/Server/Services/TraceAggregationService.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/Services/WorkspaceNotificationRuleService.js +137 -164
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +9 -0
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js +21 -13
- package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.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/APIKey/AccessPermission.js +9 -32
- package/build/dist/Server/Utils/APIKey/AccessPermission.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/AnalyticsDatabase/StatementGenerator.js +87 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.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/LogRedaction.js +449 -0
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -0
- package/build/dist/Server/Utils/Logger.js +98 -45
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +13 -12
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +65 -13
- package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.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/MonitorIncident.js +17 -14
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +20 -3
- 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/NetworkInventoryUtil.js +27 -7
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- 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/SessionReplay/SessionReplayGateCacheStore.js +29 -10
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +10 -7
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/StatusPageSearchEngineIndexing.js +24 -0
- package/build/dist/Server/Utils/StatusPageSearchEngineIndexing.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +311 -0
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.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/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +366 -37
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/API/Hostname.js +63 -0
- package/build/dist/Types/API/Hostname.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +20 -6
- package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +20 -6
- package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
- package/build/dist/Types/Database/DatabaseProperty.js +38 -0
- package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
- package/build/dist/Types/Database/TableColumn.js +24 -6
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Events/Recurring.js +13 -1
- package/build/dist/Types/Events/Recurring.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/MonitorStep.js +9 -1
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +330 -31
- package/build/dist/Types/Monitor/MonitorType.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/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/StatusPage/SearchEngineIndexing.js +55 -0
- package/build/dist/Types/StatusPage/SearchEngineIndexing.js.map +1 -0
- package/build/dist/Types/Telemetry/ResourceEntityFacet.js +156 -0
- package/build/dist/Types/Telemetry/ResourceEntityFacet.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/CardSelect/CardSelect.js +360 -40
- package/build/dist/UI/Components/CardSelect/CardSelect.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/EmptyState/EmptyState.js +1 -1
- package/build/dist/UI/Components/EmptyState/EmptyState.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/Footer/Footer.js +7 -4
- package/build/dist/UI/Components/Footer/Footer.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- 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/Loader/PageLoader.js +15 -5
- package/build/dist/UI/Components/Loader/PageLoader.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +16 -3
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js +13 -1
- 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/MasterPage/MasterPage.js +10 -2
- package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +2 -2
- 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/Monitor/MonitorMetricType.js +13 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +34 -7
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +177 -0
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +23 -27
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
- package/build/dist/Utils/Telemetry/CrossSignalScope.js +44 -4
- package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
- 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
package/Types/API/Hostname.ts
CHANGED
|
@@ -182,6 +182,85 @@ export default class Hostname extends DatabaseProperty {
|
|
|
182
182
|
return new Hostname(hostname);
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
+
/*
|
|
186
|
+
* Splits a URL authority into its bare host and its port, using the same
|
|
187
|
+
* structure isValid() already understands: optional userinfo, then either
|
|
188
|
+
* a bracketed IPv6 literal, an unbracketed IPv6 literal, or a host with an
|
|
189
|
+
* optional ":port".
|
|
190
|
+
*
|
|
191
|
+
* fromString() is NOT a substitute. It splits on the FIRST colon, so it
|
|
192
|
+
* turns "[::1]:8080" into a host of "[" and a port of "", and any IPv6
|
|
193
|
+
* literal into nonsense. Callers that hold an authority (a URL's host
|
|
194
|
+
* component) and need the two parts apart must use this.
|
|
195
|
+
*
|
|
196
|
+
* Userinfo is dropped rather than preserved: the caller asked for a host
|
|
197
|
+
* to connect to, and credentials are not part of one. Anything that needs
|
|
198
|
+
* the original string still has the authority it passed in.
|
|
199
|
+
*/
|
|
200
|
+
public static fromAuthority(authority: string): Hostname {
|
|
201
|
+
const trimmedAuthority: string = (authority || "").trim();
|
|
202
|
+
|
|
203
|
+
if (!trimmedAuthority) {
|
|
204
|
+
return new Hostname("");
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/*
|
|
208
|
+
* Split on the LAST "@" for the same reason isValid() does: userinfo may
|
|
209
|
+
* itself contain an "@", and everything after the final one is the
|
|
210
|
+
* authority proper.
|
|
211
|
+
*/
|
|
212
|
+
const atIndex: number = trimmedAuthority.lastIndexOf("@");
|
|
213
|
+
const hostAndPort: string =
|
|
214
|
+
atIndex === -1
|
|
215
|
+
? trimmedAuthority
|
|
216
|
+
: trimmedAuthority.substring(atIndex + 1);
|
|
217
|
+
|
|
218
|
+
if (!hostAndPort) {
|
|
219
|
+
return new Hostname("");
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Bracketed IPv6, with or without a port: "[::1]", "[::1]:8080".
|
|
223
|
+
const bracketedIpv6Match: RegExpMatchArray | null = hostAndPort.match(
|
|
224
|
+
/^(\[[0-9a-fA-F:.]+\])(?::(\d{1,5}))?$/,
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
if (bracketedIpv6Match) {
|
|
228
|
+
const ipv6Host: string = bracketedIpv6Match[1] as string;
|
|
229
|
+
const ipv6Port: string | undefined = bracketedIpv6Match[2];
|
|
230
|
+
|
|
231
|
+
return ipv6Port
|
|
232
|
+
? new Hostname(ipv6Host, ipv6Port)
|
|
233
|
+
: new Hostname(ipv6Host);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/*
|
|
237
|
+
* Unbracketed IPv6 literal: two or more colons cannot be a "host:port",
|
|
238
|
+
* so every colon belongs to the address itself and there is no port.
|
|
239
|
+
*/
|
|
240
|
+
if ((hostAndPort.match(/:/g) || []).length > 1) {
|
|
241
|
+
return new Hostname(hostAndPort);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
const colonIndex: number = hostAndPort.indexOf(":");
|
|
245
|
+
|
|
246
|
+
if (colonIndex === -1) {
|
|
247
|
+
return new Hostname(hostAndPort);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
const host: string = hostAndPort.substring(0, colonIndex);
|
|
251
|
+
const port: string = hostAndPort.substring(colonIndex + 1);
|
|
252
|
+
|
|
253
|
+
/*
|
|
254
|
+
* A trailing colon with no digits ("host:") is not a port. Keep the host
|
|
255
|
+
* and drop the empty port rather than constructing an invalid Port.
|
|
256
|
+
*/
|
|
257
|
+
if (!port) {
|
|
258
|
+
return new Hostname(host);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
return new Hostname(host, port);
|
|
262
|
+
}
|
|
263
|
+
|
|
185
264
|
public static override toDatabase(
|
|
186
265
|
value: Hostname | FindOperator<Hostname>,
|
|
187
266
|
): string | null {
|
|
@@ -30,20 +30,42 @@ type GetColumnAccessControlForAllColumnsFunction = <T extends BaseModel>(
|
|
|
30
30
|
target: T,
|
|
31
31
|
) => Dictionary<ColumnAccessControl>;
|
|
32
32
|
|
|
33
|
+
/*
|
|
34
|
+
* Per-class cache. Safe to key on the constructor because every decorated
|
|
35
|
+
* column is initialised to `undefined` in the class body, so Object.keys()
|
|
36
|
+
* is identical for every instance of a class (see OwnerOnlyColumn.ts).
|
|
37
|
+
* Callers must treat the returned dictionary as read-only.
|
|
38
|
+
*/
|
|
39
|
+
const accessControlCache: WeakMap<
|
|
40
|
+
{ new (): BaseModel },
|
|
41
|
+
Dictionary<ColumnAccessControl>
|
|
42
|
+
> = new WeakMap();
|
|
43
|
+
|
|
33
44
|
export const getColumnAccessControlForAllColumns: GetColumnAccessControlForAllColumnsFunction =
|
|
34
45
|
<T extends BaseModel>(target: T): Dictionary<ColumnAccessControl> => {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
const modelClass: { new (): BaseModel } = target.constructor as {
|
|
47
|
+
new (): BaseModel;
|
|
48
|
+
};
|
|
49
|
+
let cached: Dictionary<ColumnAccessControl> | undefined =
|
|
50
|
+
accessControlCache.get(modelClass);
|
|
51
|
+
|
|
52
|
+
if (!cached) {
|
|
53
|
+
const dictonary: Dictionary<ColumnAccessControl> = {};
|
|
54
|
+
const keys: Array<string> = Object.keys(target);
|
|
55
|
+
|
|
56
|
+
for (const key of keys) {
|
|
57
|
+
const accessControl: ColumnAccessControl | undefined =
|
|
58
|
+
Reflect.getMetadata(accessControlSymbol, target, key) as
|
|
59
|
+
| ColumnAccessControl
|
|
60
|
+
| undefined;
|
|
61
|
+
if (accessControl) {
|
|
62
|
+
dictonary[key] = accessControl;
|
|
63
|
+
}
|
|
45
64
|
}
|
|
65
|
+
|
|
66
|
+
cached = dictonary;
|
|
67
|
+
accessControlCache.set(modelClass, cached);
|
|
46
68
|
}
|
|
47
69
|
|
|
48
|
-
return
|
|
70
|
+
return cached;
|
|
49
71
|
};
|
|
@@ -30,20 +30,42 @@ type GetColumnBillingAccessControlForAllColumnsFunction = <T extends BaseModel>(
|
|
|
30
30
|
target: T,
|
|
31
31
|
) => Dictionary<ColumnBillingAccessControl>;
|
|
32
32
|
|
|
33
|
+
/*
|
|
34
|
+
* Per-class cache. Safe to key on the constructor because every decorated
|
|
35
|
+
* column is initialised to `undefined` in the class body, so Object.keys()
|
|
36
|
+
* is identical for every instance of a class (see OwnerOnlyColumn.ts).
|
|
37
|
+
* Callers must treat the returned dictionary as read-only.
|
|
38
|
+
*/
|
|
39
|
+
const billingAccessControlCache: WeakMap<
|
|
40
|
+
{ new (): BaseModel },
|
|
41
|
+
Dictionary<ColumnBillingAccessControl>
|
|
42
|
+
> = new WeakMap();
|
|
43
|
+
|
|
33
44
|
export const getColumnBillingAccessControlForAllColumns: GetColumnBillingAccessControlForAllColumnsFunction =
|
|
34
45
|
<T extends BaseModel>(target: T): Dictionary<ColumnBillingAccessControl> => {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
const modelClass: { new (): BaseModel } = target.constructor as {
|
|
47
|
+
new (): BaseModel;
|
|
48
|
+
};
|
|
49
|
+
let cached: Dictionary<ColumnBillingAccessControl> | undefined =
|
|
50
|
+
billingAccessControlCache.get(modelClass);
|
|
51
|
+
|
|
52
|
+
if (!cached) {
|
|
53
|
+
const dictonary: Dictionary<ColumnBillingAccessControl> = {};
|
|
54
|
+
const keys: Array<string> = Object.keys(target);
|
|
55
|
+
|
|
56
|
+
for (const key of keys) {
|
|
57
|
+
const accessControl: ColumnBillingAccessControl | undefined =
|
|
58
|
+
Reflect.getMetadata(accessControlSymbol, target, key) as
|
|
59
|
+
| ColumnBillingAccessControl
|
|
60
|
+
| undefined;
|
|
61
|
+
if (accessControl) {
|
|
62
|
+
dictonary[key] = accessControl;
|
|
63
|
+
}
|
|
45
64
|
}
|
|
65
|
+
|
|
66
|
+
cached = dictonary;
|
|
67
|
+
billingAccessControlCache.set(modelClass, cached);
|
|
46
68
|
}
|
|
47
69
|
|
|
48
|
-
return
|
|
70
|
+
return cached;
|
|
49
71
|
};
|
|
@@ -39,6 +39,44 @@ export default class DatabaseProperty extends SerializableObject {
|
|
|
39
39
|
return value as any;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
/*
|
|
43
|
+
* A FindOperator reaches a transformer when the query value is an
|
|
44
|
+
* operator rather than a plain value. Two ways in:
|
|
45
|
+
*
|
|
46
|
+
* - Nested. `And(Equal(id), Raw(privacyClause))` — the shape every
|
|
47
|
+
* privacy/scope filter builds (Server/Utils/PrivacyFilterUtil.ts).
|
|
48
|
+
* TypeORM calls `operator.transformValue(column.transformer)`
|
|
49
|
+
* (SelectQueryBuilder.buildWhere), and FindOperator.transformValue
|
|
50
|
+
* hands each CHILD OPERATOR to this function whenever the operator
|
|
51
|
+
* carries multiple parameters — which And() and Or() both do.
|
|
52
|
+
* - Top level. ColumnMetadata.getEntityValue applies the transformer to
|
|
53
|
+
* the whole criteria of a .where()/.update()/.delete() call.
|
|
54
|
+
*
|
|
55
|
+
* Every toDatabase() below expects a value, so an operator makes it
|
|
56
|
+
* produce garbage: "[object Object]" from the string-ish types (ObjectID
|
|
57
|
+
* included — a uuid column then fails with Postgres 22P02 invalid input
|
|
58
|
+
* syntax for type uuid), `null` from Port, a serialized operator from the
|
|
59
|
+
* JSON types. The child is REPLACED by that garbage, so the caller's own
|
|
60
|
+
* predicate is lost and the privacy clause it was ANDed with can no
|
|
61
|
+
* longer match anything.
|
|
62
|
+
*
|
|
63
|
+
* Transform the operator's leaf value(s) in place and hand the operator
|
|
64
|
+
* back, so `And`/`Or`/`In`/`Not`/`Between` keep their structure and only
|
|
65
|
+
* the leaves are converted. Recursion terminates because transformValue
|
|
66
|
+
* always descends into the operator's value, and a leaf is never a
|
|
67
|
+
* FindOperator.
|
|
68
|
+
*
|
|
69
|
+
* NOTE: transformValue mutates. One query object can legitimately be
|
|
70
|
+
* transformed more than once — BaseAPI.getList shares it between findBy
|
|
71
|
+
* and countBy — so every toDatabase() has to be a fixpoint: handed its
|
|
72
|
+
* own output it must return that output unchanged. Tests/Types/Database/
|
|
73
|
+
* DatabasePropertyFindOperator.test.ts enforces that for each type.
|
|
74
|
+
*/
|
|
75
|
+
if (value instanceof FindOperator) {
|
|
76
|
+
value.transformValue(this.getDatabaseTransformer());
|
|
77
|
+
return value as any;
|
|
78
|
+
}
|
|
79
|
+
|
|
42
80
|
return this.toDatabase(value);
|
|
43
81
|
}
|
|
44
82
|
|
|
@@ -63,21 +63,48 @@ type GetTableColumnsFunction = <T extends BaseModel>(
|
|
|
63
63
|
target: T,
|
|
64
64
|
) => Dictionary<TableColumnMetadata>;
|
|
65
65
|
|
|
66
|
+
/*
|
|
67
|
+
* Per-class cache. Safe to key on the constructor because every decorated
|
|
68
|
+
* column is initialised to `undefined` in the class body, so Object.keys()
|
|
69
|
+
* is identical for every instance of a class (see OwnerOnlyColumn.ts).
|
|
70
|
+
*/
|
|
71
|
+
const tableColumnsCache: WeakMap<
|
|
72
|
+
{ new (): BaseModel },
|
|
73
|
+
Dictionary<TableColumnMetadata>
|
|
74
|
+
> = new WeakMap();
|
|
75
|
+
|
|
66
76
|
export const getTableColumns: GetTableColumnsFunction = <T extends BaseModel>(
|
|
67
77
|
target: T,
|
|
68
78
|
): Dictionary<TableColumnMetadata> => {
|
|
69
|
-
const
|
|
70
|
-
|
|
79
|
+
const modelClass: { new (): BaseModel } = target.constructor as {
|
|
80
|
+
new (): BaseModel;
|
|
81
|
+
};
|
|
82
|
+
let cached: Dictionary<TableColumnMetadata> | undefined =
|
|
83
|
+
tableColumnsCache.get(modelClass);
|
|
84
|
+
|
|
85
|
+
if (!cached) {
|
|
86
|
+
const dictonary: Dictionary<TableColumnMetadata> = {};
|
|
87
|
+
const keys: Array<string> = Object.keys(target);
|
|
71
88
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
dictonary[key] = Reflect.getMetadata(
|
|
89
|
+
for (const key of keys) {
|
|
90
|
+
const metadata: TableColumnMetadata | undefined = Reflect.getMetadata(
|
|
75
91
|
tableColumn,
|
|
76
92
|
target,
|
|
77
93
|
key,
|
|
78
|
-
) as TableColumnMetadata;
|
|
94
|
+
) as TableColumnMetadata | undefined;
|
|
95
|
+
if (metadata) {
|
|
96
|
+
dictonary[key] = metadata;
|
|
97
|
+
}
|
|
79
98
|
}
|
|
99
|
+
|
|
100
|
+
cached = dictonary;
|
|
101
|
+
tableColumnsCache.set(modelClass, cached);
|
|
80
102
|
}
|
|
81
103
|
|
|
82
|
-
|
|
104
|
+
/*
|
|
105
|
+
* Hand out a copy, not the cached dictionary itself: callers mutate the
|
|
106
|
+
* result (the API reference docs delete entries from it), which would
|
|
107
|
+
* otherwise strip columns from every later call for the same class.
|
|
108
|
+
*/
|
|
109
|
+
return { ...cached };
|
|
83
110
|
};
|
|
@@ -3,6 +3,7 @@ enum EmailTemplateType {
|
|
|
3
3
|
ForgotPassword = "ForgotPassword.hbs",
|
|
4
4
|
ProbeOffline = "ProbeOffline.hbs",
|
|
5
5
|
SignupWelcomeEmail = "SignupWelcomeEmail.hbs",
|
|
6
|
+
CompleteRegistration = "CompleteRegistration.hbs",
|
|
6
7
|
ProbeConnectionStatusChange = "ProbeConnectionStatusChange.hbs",
|
|
7
8
|
AIAgentConnectionStatusChange = "AIAgentConnectionStatusChange.hbs",
|
|
8
9
|
AIAgentOwnerAdded = "AIAgentOwnerAdded.hbs",
|
|
@@ -313,7 +313,22 @@ export default class Recurring extends DatabaseProperty {
|
|
|
313
313
|
value: Recurring | Array<Recurring> | FindOperator<Recurring>,
|
|
314
314
|
): JSONObject | Array<JSONObject> | null {
|
|
315
315
|
if (Array.isArray(value)) {
|
|
316
|
-
|
|
316
|
+
/*
|
|
317
|
+
* Per item rather than through toJSONArray, which assumes every item is
|
|
318
|
+
* still a Recurring instance and throws "item.toJSON is not a function"
|
|
319
|
+
* on an already-serialized array. TypeORM can hand a transformer its own
|
|
320
|
+
* output — BaseAPI.getList shares one query object between findBy and
|
|
321
|
+
* countBy — so this has to be a fixpoint.
|
|
322
|
+
*/
|
|
323
|
+
return (value as Array<Recurring | JSONObject>).map(
|
|
324
|
+
(item: Recurring | JSONObject) => {
|
|
325
|
+
if (item instanceof Recurring) {
|
|
326
|
+
return item.toJSON();
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
return JSONFunctions.serialize(item as JSONObject);
|
|
330
|
+
},
|
|
331
|
+
);
|
|
317
332
|
}
|
|
318
333
|
|
|
319
334
|
if (value && value instanceof Recurring) {
|
|
@@ -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
|
|
|
@@ -1156,8 +1156,20 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
1156
1156
|
),
|
|
1157
1157
|
)
|
|
1158
1158
|
: undefined,
|
|
1159
|
+
/*
|
|
1160
|
+
* Normalized for the same reason domainMonitor above is: a config
|
|
1161
|
+
* authored through the API or a template need not carry `resolvers`,
|
|
1162
|
+
* and the probe iterates that list without a guard. A raw passthrough
|
|
1163
|
+
* therefore threw a TypeError inside the probe BEFORE it posted any
|
|
1164
|
+
* result, so the monitor produced nothing at all - no check, no
|
|
1165
|
+
* status change, no error the user could see.
|
|
1166
|
+
*/
|
|
1159
1167
|
dnssecMonitor: json["dnssecMonitor"]
|
|
1160
|
-
? (
|
|
1168
|
+
? MonitorStepDnssecMonitorUtil.toJSON(
|
|
1169
|
+
MonitorStepDnssecMonitorUtil.fromJSON(
|
|
1170
|
+
json["dnssecMonitor"] as JSONObject,
|
|
1171
|
+
),
|
|
1172
|
+
)
|
|
1161
1173
|
: undefined,
|
|
1162
1174
|
sqlMonitor: json["sqlMonitor"]
|
|
1163
1175
|
? (json["sqlMonitor"] as JSONObject)
|