@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
|
@@ -10,6 +10,7 @@ import Service from "../../../Models/DatabaseModels/Service";
|
|
|
10
10
|
import Includes from "../../../Types/BaseDatabase/Includes";
|
|
11
11
|
import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
|
|
12
12
|
import { JSONObject } from "../../../Types/JSON";
|
|
13
|
+
import MonitorType from "../../../Types/Monitor/MonitorType";
|
|
13
14
|
import ObjectID from "../../../Types/ObjectID";
|
|
14
15
|
import CephClusterService from "../../Services/CephClusterService";
|
|
15
16
|
import DockerHostService from "../../Services/DockerHostService";
|
|
@@ -20,11 +21,18 @@ import KubernetesClusterService from "../../Services/KubernetesClusterService";
|
|
|
20
21
|
import PodmanHostService from "../../Services/PodmanHostService";
|
|
21
22
|
import ProxmoxClusterService from "../../Services/ProxmoxClusterService";
|
|
22
23
|
import ServiceService from "../../Services/ServiceService";
|
|
23
|
-
import
|
|
24
|
+
import QueryHelper from "../../Types/Database/QueryHelper";
|
|
24
25
|
import SeriesResourceLabels, {
|
|
25
26
|
SeriesResourceRefs,
|
|
26
27
|
} from "./SeriesResourceLabels";
|
|
27
28
|
|
|
29
|
+
/*
|
|
30
|
+
* How a resource's NAME is matched against its identifier column.
|
|
31
|
+
* Ingest-written series labels match byte for byte; user-typed monitor
|
|
32
|
+
* step identifiers may differ from the agent-stamped name by case.
|
|
33
|
+
*/
|
|
34
|
+
export type NameMatchMode = "exact" | "caseInsensitive";
|
|
35
|
+
|
|
28
36
|
/*
|
|
29
37
|
* A grouped monitor opens one alert/incident per breaching series, and
|
|
30
38
|
* each series carries the identity of the resource it came from in its
|
|
@@ -100,11 +108,61 @@ export default class SeriesResourceLinker {
|
|
|
100
108
|
public static async resolveResourcesFromSeriesLabels(input: {
|
|
101
109
|
seriesLabels: JSONObject;
|
|
102
110
|
projectId: ObjectID;
|
|
111
|
+
/*
|
|
112
|
+
* Optional, and only consulted to disambiguate `host.name`. Left
|
|
113
|
+
* undefined by callers that have no monitor in hand.
|
|
114
|
+
*/
|
|
115
|
+
monitorType?: MonitorType | undefined;
|
|
103
116
|
}): Promise<SeriesResolvedResourceIds> {
|
|
104
117
|
const refs: SeriesResourceRefs = SeriesResourceLabels.extractResourceRefs(
|
|
105
118
|
input.seriesLabels,
|
|
106
119
|
);
|
|
107
120
|
|
|
121
|
+
/*
|
|
122
|
+
* On a Docker or Podman monitor, `resource.host.name` names the
|
|
123
|
+
* DockerHost / PodmanHost the containers run on — the agent stamps
|
|
124
|
+
* the container runtime's host under the generic key. The label key
|
|
125
|
+
* map hands that key to Host, which would attach an unrelated Host
|
|
126
|
+
* row and surface the event on that host's Activity tab. The
|
|
127
|
+
* step-config path links the right model instead
|
|
128
|
+
* (MonitorStepResourceIdentity), so drop the host refs here rather
|
|
129
|
+
* than linking a resource the event is not about.
|
|
130
|
+
*/
|
|
131
|
+
if (
|
|
132
|
+
input.monitorType === MonitorType.Docker ||
|
|
133
|
+
input.monitorType === MonitorType.Podman
|
|
134
|
+
) {
|
|
135
|
+
refs.hostIds = [];
|
|
136
|
+
refs.hostNames = [];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/*
|
|
140
|
+
* Series labels are ingest-written, so they match the resource
|
|
141
|
+
* rows' identifier columns byte for byte. See resolveResourceIds
|
|
142
|
+
* for why that rules out case-insensitive matching here.
|
|
143
|
+
*/
|
|
144
|
+
return this.resolveResourceRefs({
|
|
145
|
+
refs: refs,
|
|
146
|
+
projectId: input.projectId,
|
|
147
|
+
nameMatch: "exact",
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/*
|
|
152
|
+
* The one place that turns identifiers into database ids, shared by
|
|
153
|
+
* the series-label path and the monitor-step-config path
|
|
154
|
+
* (MonitorStepResourceIdentity). Keeping the nine-way lookup table,
|
|
155
|
+
* the project scoping and the `Includes` batching in a single
|
|
156
|
+
* function is what stops the two paths from resolving the same
|
|
157
|
+
* identifier to different rows.
|
|
158
|
+
*/
|
|
159
|
+
public static async resolveResourceRefs(input: {
|
|
160
|
+
refs: SeriesResourceRefs;
|
|
161
|
+
projectId: ObjectID;
|
|
162
|
+
nameMatch: NameMatchMode;
|
|
163
|
+
}): Promise<SeriesResolvedResourceIds> {
|
|
164
|
+
const refs: SeriesResourceRefs = input.refs;
|
|
165
|
+
|
|
108
166
|
/*
|
|
109
167
|
* Proxmox / Ceph / Docker Swarm / IoT carry no `oneuptime.*.id`
|
|
110
168
|
* stamp at ingest — they are addressable by name only — so their
|
|
@@ -186,6 +244,7 @@ export default class SeriesResourceLinker {
|
|
|
186
244
|
names: spec.names,
|
|
187
245
|
nameColumn: spec.nameColumn,
|
|
188
246
|
projectId: input.projectId,
|
|
247
|
+
nameMatch: input.nameMatch,
|
|
189
248
|
findBy: spec.findBy,
|
|
190
249
|
});
|
|
191
250
|
}),
|
|
@@ -206,9 +265,10 @@ export default class SeriesResourceLinker {
|
|
|
206
265
|
|
|
207
266
|
/*
|
|
208
267
|
* Resolve the series' resources and MERGE them onto the alert/incident.
|
|
209
|
-
* Merging (rather than assigning) matters because
|
|
210
|
-
* writes the same
|
|
211
|
-
* config; whichever runs second must not erase the
|
|
268
|
+
* Merging (rather than assigning) matters because
|
|
269
|
+
* attachResolvedResources writes the same relations from the
|
|
270
|
+
* monitor's step config; whichever runs second must not erase the
|
|
271
|
+
* other's work.
|
|
212
272
|
*
|
|
213
273
|
* Relations the series says nothing about are left untouched —
|
|
214
274
|
* `undefined`, not `[]` — so an ungrouped event and an event whose
|
|
@@ -223,11 +283,17 @@ export default class SeriesResourceLinker {
|
|
|
223
283
|
model: SeriesLinkableModel;
|
|
224
284
|
seriesLabels: JSONObject;
|
|
225
285
|
projectId: ObjectID;
|
|
286
|
+
/*
|
|
287
|
+
* Optional, and only consulted to disambiguate `host.name`. Left
|
|
288
|
+
* undefined by callers that have no monitor in hand.
|
|
289
|
+
*/
|
|
290
|
+
monitorType?: MonitorType | undefined;
|
|
226
291
|
}): Promise<void> {
|
|
227
292
|
const resolved: SeriesResolvedResourceIds =
|
|
228
293
|
await this.resolveResourcesFromSeriesLabels({
|
|
229
294
|
seriesLabels: input.seriesLabels,
|
|
230
295
|
projectId: input.projectId,
|
|
296
|
+
monitorType: input.monitorType,
|
|
231
297
|
});
|
|
232
298
|
|
|
233
299
|
this.mergeResolvedIdsIntoModel({
|
|
@@ -237,30 +303,22 @@ export default class SeriesResourceLinker {
|
|
|
237
303
|
}
|
|
238
304
|
|
|
239
305
|
/*
|
|
240
|
-
* Attach the
|
|
241
|
-
* (
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
245
|
-
*
|
|
306
|
+
* Attach the resources resolved from the monitor's own step config
|
|
307
|
+
* (MonitorResourceContext), merging with — never overwriting —
|
|
308
|
+
* anything the series-label path already linked. Both paths can
|
|
309
|
+
* resolve the same resource, so this dedupes by id.
|
|
310
|
+
*
|
|
311
|
+
* Unlike the label path this runs for ungrouped events too, and that
|
|
312
|
+
* is the whole point: an ungrouped monitor has no series labels, so
|
|
313
|
+
* before this existed it linked nothing at all.
|
|
246
314
|
*/
|
|
247
|
-
public static
|
|
315
|
+
public static attachResolvedResources(input: {
|
|
248
316
|
model: SeriesLinkableModel;
|
|
249
|
-
|
|
317
|
+
resolved: SeriesResolvedResourceIds;
|
|
250
318
|
}): void {
|
|
251
319
|
this.mergeResolvedIdsIntoModel({
|
|
252
320
|
model: input.model,
|
|
253
|
-
resolved:
|
|
254
|
-
hostIds: [],
|
|
255
|
-
dockerHostIds: [],
|
|
256
|
-
podmanHostIds: [],
|
|
257
|
-
kubernetesClusterIds: [],
|
|
258
|
-
serviceIds: [],
|
|
259
|
-
proxmoxClusterIds: input.clusterContext.proxmoxClusterIds,
|
|
260
|
-
cephClusterIds: input.clusterContext.cephClusterIds,
|
|
261
|
-
dockerSwarmClusterIds: input.clusterContext.dockerSwarmClusterIds,
|
|
262
|
-
iotFleetIds: input.clusterContext.iotFleetIds,
|
|
263
|
-
},
|
|
321
|
+
resolved: input.resolved,
|
|
264
322
|
});
|
|
265
323
|
}
|
|
266
324
|
|
|
@@ -396,16 +454,23 @@ export default class SeriesResourceLinker {
|
|
|
396
454
|
* Costs zero round-trips when the series carries neither, which is the
|
|
397
455
|
* common case for most of the nine types on any given series.
|
|
398
456
|
*
|
|
399
|
-
*
|
|
400
|
-
* by ingest from the same attribute the series
|
|
401
|
-
* identifiers are canonicalized on both sides —
|
|
402
|
-
* what keeps a lookup from straying onto a
|
|
457
|
+
* `nameMatch: "exact"` is for series labels. Every identifier column
|
|
458
|
+
* read here is written by ingest from the same attribute the series
|
|
459
|
+
* label carries — host identifiers are canonicalized on both sides —
|
|
460
|
+
* so exact matching is what keeps a lookup from straying onto a
|
|
461
|
+
* neighbouring row.
|
|
462
|
+
*
|
|
463
|
+
* `nameMatch: "caseInsensitive"` is for monitor step configs, where
|
|
464
|
+
* the identifier was typed by a user and the row's name was stamped
|
|
465
|
+
* by an agent; the two legitimately differ by case. This mirrors what
|
|
466
|
+
* ingest discovery itself does when it keys a row by name.
|
|
403
467
|
*/
|
|
404
468
|
private static async resolveResourceIds(input: {
|
|
405
469
|
ids: Array<string>;
|
|
406
470
|
names: Array<string>;
|
|
407
471
|
nameColumn: string;
|
|
408
472
|
projectId: ObjectID;
|
|
473
|
+
nameMatch: NameMatchMode;
|
|
409
474
|
/*
|
|
410
475
|
* Loosely typed because each resource service has its own
|
|
411
476
|
* `Query<TBaseModel>` shape and we deliberately abstract over
|
|
@@ -443,7 +508,10 @@ export default class SeriesResourceLinker {
|
|
|
443
508
|
input.findBy({
|
|
444
509
|
query: {
|
|
445
510
|
projectId: input.projectId,
|
|
446
|
-
[input.nameColumn]:
|
|
511
|
+
[input.nameColumn]:
|
|
512
|
+
input.nameMatch === "caseInsensitive"
|
|
513
|
+
? QueryHelper.findWithSameTextAnyOf(input.names)
|
|
514
|
+
: new Includes(input.names),
|
|
447
515
|
},
|
|
448
516
|
select: { _id: true },
|
|
449
517
|
skip: 0,
|
|
@@ -24,6 +24,15 @@ import ObjectID from "../../../Types/ObjectID";
|
|
|
24
24
|
export const POLICY_CACHE_TTL_MS: number = 60 * 1000;
|
|
25
25
|
export const KILL_KEY_CACHE_TTL_MS: number = 5 * 1000;
|
|
26
26
|
|
|
27
|
+
/*
|
|
28
|
+
* The policy cache key includes a client-supplied appIdentifier, so without a
|
|
29
|
+
* bound anyone holding an ingestion key could grow this map forever. Caps
|
|
30
|
+
* match the InMemoryTTLCache house default; that class is not used directly
|
|
31
|
+
* because clearCache(projectId) needs the prefix key scan it lacks.
|
|
32
|
+
*/
|
|
33
|
+
export const MAX_POLICY_CACHE_ENTRIES: number = 10_000;
|
|
34
|
+
export const MAX_KILL_KEY_CACHE_ENTRIES: number = 10_000;
|
|
35
|
+
|
|
27
36
|
const KILL_KEY_PREFIX: string = "replay:gate:off:";
|
|
28
37
|
|
|
29
38
|
/*
|
|
@@ -52,6 +61,29 @@ interface KillKeyCacheEntry {
|
|
|
52
61
|
const policyCache: Map<string, PolicyCacheEntry<unknown>> = new Map();
|
|
53
62
|
const killKeyCache: Map<string, KillKeyCacheEntry> = new Map();
|
|
54
63
|
|
|
64
|
+
/*
|
|
65
|
+
* Coarse-LRU bounded write (mirrors InMemoryTTLCache): evict the oldest entry
|
|
66
|
+
* only when at capacity AND the key is new, so rewriting an existing key never
|
|
67
|
+
* evicts a different entry; delete-before-set refreshes insertion order. The
|
|
68
|
+
* entry being written always lands, which markProjectDisabled's local kill
|
|
69
|
+
* marker depends on.
|
|
70
|
+
*/
|
|
71
|
+
function boundedSet<TValue>(
|
|
72
|
+
map: Map<string, TValue>,
|
|
73
|
+
key: string,
|
|
74
|
+
value: TValue,
|
|
75
|
+
maxEntries: number,
|
|
76
|
+
): void {
|
|
77
|
+
if (map.size >= maxEntries && !map.has(key)) {
|
|
78
|
+
const oldest: string | undefined = map.keys().next().value;
|
|
79
|
+
if (oldest !== undefined) {
|
|
80
|
+
map.delete(oldest);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
map.delete(key);
|
|
84
|
+
map.set(key, value);
|
|
85
|
+
}
|
|
86
|
+
|
|
55
87
|
export default class SessionReplayGateCacheStore {
|
|
56
88
|
public static getPolicyEntry<TPolicy>(
|
|
57
89
|
cacheKey: string,
|
|
@@ -63,7 +95,12 @@ export default class SessionReplayGateCacheStore {
|
|
|
63
95
|
cacheKey: string,
|
|
64
96
|
policy: TPolicy | null,
|
|
65
97
|
): void {
|
|
66
|
-
|
|
98
|
+
boundedSet(
|
|
99
|
+
policyCache,
|
|
100
|
+
cacheKey,
|
|
101
|
+
{ policy: policy, loadedAt: Date.now() },
|
|
102
|
+
MAX_POLICY_CACHE_ENTRIES,
|
|
103
|
+
);
|
|
67
104
|
}
|
|
68
105
|
|
|
69
106
|
/*
|
|
@@ -93,10 +130,12 @@ export default class SessionReplayGateCacheStore {
|
|
|
93
130
|
}
|
|
94
131
|
}
|
|
95
132
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
133
|
+
boundedSet(
|
|
134
|
+
killKeyCache,
|
|
135
|
+
projectId.toString(),
|
|
136
|
+
{ isDisabled: true, loadedAt: Date.now() },
|
|
137
|
+
MAX_KILL_KEY_CACHE_ENTRIES,
|
|
138
|
+
);
|
|
100
139
|
}
|
|
101
140
|
|
|
102
141
|
/*
|
|
@@ -159,7 +198,12 @@ export default class SessionReplayGateCacheStore {
|
|
|
159
198
|
* Failing closed here would make a Redis blip stop replay ingest for
|
|
160
199
|
* every project that had correctly opted in.
|
|
161
200
|
*/
|
|
162
|
-
|
|
201
|
+
boundedSet(
|
|
202
|
+
killKeyCache,
|
|
203
|
+
cacheKey,
|
|
204
|
+
{ isDisabled: false, loadedAt: Date.now() },
|
|
205
|
+
MAX_KILL_KEY_CACHE_ENTRIES,
|
|
206
|
+
);
|
|
163
207
|
return false;
|
|
164
208
|
}
|
|
165
209
|
|
|
@@ -178,10 +222,12 @@ export default class SessionReplayGateCacheStore {
|
|
|
178
222
|
isDisabled = false;
|
|
179
223
|
}
|
|
180
224
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
225
|
+
boundedSet(
|
|
226
|
+
killKeyCache,
|
|
227
|
+
cacheKey,
|
|
228
|
+
{ isDisabled: isDisabled, loadedAt: Date.now() },
|
|
229
|
+
MAX_KILL_KEY_CACHE_ENTRIES,
|
|
230
|
+
);
|
|
185
231
|
|
|
186
232
|
return isDisabled;
|
|
187
233
|
}
|
|
@@ -76,30 +76,51 @@ app.set("view engine", "ejs");
|
|
|
76
76
|
app.set("trust proxy", TrustedProxyHops);
|
|
77
77
|
app.use(CookieParser());
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
export type BodyParserVerify = (
|
|
80
|
+
req: ExpressRequest,
|
|
81
|
+
res: ExpressResponse,
|
|
82
|
+
buf: Buffer,
|
|
83
|
+
) => void;
|
|
84
|
+
|
|
85
|
+
export interface BodyParserOptions {
|
|
86
|
+
limit: string;
|
|
87
|
+
extended: boolean;
|
|
88
|
+
verify: BodyParserVerify;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export const jsonBodyParserOptions: BodyParserOptions = {
|
|
80
92
|
limit: "50mb",
|
|
81
93
|
extended: true,
|
|
82
|
-
verify: (req: ExpressRequest, _res: ExpressResponse, buf: Buffer) => {
|
|
94
|
+
verify: (req: ExpressRequest, _res: ExpressResponse, buf: Buffer): void => {
|
|
83
95
|
(req as OneUptimeRequest).rawBody = buf.toString();
|
|
84
96
|
logger.debug(
|
|
85
97
|
`Raw JSON Body for signature verification captured`,
|
|
86
98
|
getLogAttributesFromRequest(req as OneUptimeRequest),
|
|
87
99
|
);
|
|
88
100
|
},
|
|
89
|
-
}
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const jsonBodyParserMiddleware: RequestHandler = ExpressJson(
|
|
104
|
+
jsonBodyParserOptions,
|
|
105
|
+
); // 50 MB limit.
|
|
90
106
|
|
|
91
|
-
const
|
|
107
|
+
export const urlEncodedBodyParserOptions: BodyParserOptions = {
|
|
92
108
|
limit: "50mb",
|
|
93
109
|
extended: true,
|
|
94
|
-
verify: (req: ExpressRequest, _res: ExpressResponse, buf: Buffer) => {
|
|
95
|
-
|
|
96
|
-
(req as OneUptimeRequest).
|
|
110
|
+
verify: (req: ExpressRequest, _res: ExpressResponse, buf: Buffer): void => {
|
|
111
|
+
const raw: string = buf.toString();
|
|
112
|
+
(req as OneUptimeRequest).rawFormUrlEncodedBody = raw;
|
|
113
|
+
(req as OneUptimeRequest).rawBody = raw; // Also set rawBody for consistency
|
|
97
114
|
logger.debug(
|
|
98
|
-
`Raw Form Url Encoded Body
|
|
115
|
+
`Raw Form Url Encoded Body for signature verification captured`,
|
|
99
116
|
getLogAttributesFromRequest(req as OneUptimeRequest),
|
|
100
117
|
);
|
|
101
118
|
},
|
|
102
|
-
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
const urlEncodedMiddleware: RequestHandler = ExpressUrlEncoded(
|
|
122
|
+
urlEncodedBodyParserOptions,
|
|
123
|
+
); // 50 MB limit.
|
|
103
124
|
|
|
104
125
|
const setDefaultHeaders: RequestHandler = (
|
|
105
126
|
req: ExpressRequest,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ExpressResponse } from "./Express";
|
|
2
|
+
import {
|
|
3
|
+
NOINDEX_ROBOTS_DIRECTIVE,
|
|
4
|
+
X_ROBOTS_TAG_HEADER_NAME,
|
|
5
|
+
} from "../../Types/StatusPage/SearchEngineIndexing";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Sets X-Robots-Tag: noindex, nofollow when the status page has search engine
|
|
9
|
+
* indexing turned off, and sets nothing at all when it is on.
|
|
10
|
+
*
|
|
11
|
+
* The "sets nothing" half is the point. An explicit `index, follow` header
|
|
12
|
+
* would be the default behaviour restated, and it would also override a
|
|
13
|
+
* noindex that an operator put in front of OneUptime (a CDN rule, an ingress
|
|
14
|
+
* annotation) - headers do not merge, the last writer wins. Staying silent
|
|
15
|
+
* leaves those in place.
|
|
16
|
+
*
|
|
17
|
+
* Callers must invoke this before the response is sent; a header set after
|
|
18
|
+
* headers are flushed is dropped by Node, silently.
|
|
19
|
+
*/
|
|
20
|
+
export default function applyStatusPageRobotsHeader(
|
|
21
|
+
res: ExpressResponse,
|
|
22
|
+
isSearchEngineIndexingEnabled: boolean,
|
|
23
|
+
): void {
|
|
24
|
+
if (isSearchEngineIndexingEnabled) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (res.headersSent) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
res.set(X_ROBOTS_TAG_HEADER_NAME, NOINDEX_ROBOTS_DIRECTIVE);
|
|
33
|
+
}
|