@oneuptime/common 12.0.4 → 12.0.6
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/AIRun.ts +71 -1
- package/Models/DatabaseModels/AlertFeed.ts +30 -0
- package/Models/DatabaseModels/Dashboard.ts +28 -0
- package/Models/DatabaseModels/DataSource.ts +744 -0
- package/Models/DatabaseModels/Incident.ts +2 -0
- package/Models/DatabaseModels/IncidentEpisode.ts +1 -0
- package/Models/DatabaseModels/IncidentEpisodePublicNote.ts +1 -0
- package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
- package/Models/DatabaseModels/IncidentFeed.ts +30 -0
- package/Models/DatabaseModels/IncidentPublicNote.ts +1 -0
- package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
- package/Models/DatabaseModels/Index.ts +3 -0
- package/Models/DatabaseModels/LogSavedView.ts +33 -0
- package/Models/DatabaseModels/Project.ts +231 -9
- package/Models/DatabaseModels/ProjectCallSMSConfig.ts +10 -2
- package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -0
- package/Models/DatabaseModels/ScheduledMaintenancePublicNote.ts +1 -0
- package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
- package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.ts +4 -4
- package/Models/DatabaseModels/StatusPage.ts +28 -0
- package/Models/DatabaseModels/StatusPageAnnouncement.ts +1 -0
- package/Models/DatabaseModels/User.ts +2 -0
- package/Models/DatabaseModels/UserOnCallLog.ts +2 -0
- package/Models/DatabaseModels/UserOnCallLogTimeline.ts +2 -0
- package/Models/DatabaseModels/UserSession.ts +2 -0
- package/Models/DatabaseModels/UserTotpAuth.ts +6 -4
- package/Models/DatabaseModels/UserWebAuthn.ts +5 -3
- package/Server/API/AIAgentDataAPI.ts +44 -55
- package/Server/API/AIInsightAPI.ts +47 -4
- package/Server/API/AIInvestigationAPI.ts +200 -17
- package/Server/API/DashboardAPI.ts +186 -502
- package/Server/API/DataSourceAPI.ts +268 -0
- package/Server/API/StatusPageAPI.ts +49 -20
- package/Server/API/UserAPI.ts +119 -0
- package/Server/EnvironmentConfig.ts +16 -0
- package/Server/Infrastructure/ClickhouseConfig.ts +74 -1
- package/Server/Infrastructure/ClickhouseDatabase.ts +1 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.ts +27 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.ts +89 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.ts +27 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.ts +39 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.ts +40 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.ts +26 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.ts +24 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.ts +76 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +16 -0
- package/Server/Infrastructure/Queue.ts +26 -0
- package/Server/Infrastructure/QueueWorker.ts +17 -0
- package/Server/Middleware/TelemetryIngest.ts +8 -3
- package/Server/Services/AIInsightService.ts +132 -12
- package/Server/Services/AIRunService.ts +112 -10
- package/Server/Services/AIService.ts +109 -22
- package/Server/Services/AlertFeedService.ts +5 -0
- package/Server/Services/AlertService.ts +38 -32
- package/Server/Services/AnalyticsDatabaseService.ts +37 -4
- package/Server/Services/DataSourceService.ts +200 -0
- package/Server/Services/DatabaseService.ts +43 -2
- package/Server/Services/HostService.ts +92 -0
- package/Server/Services/IncidentFeedService.ts +5 -0
- package/Server/Services/IncidentService.ts +45 -0
- package/Server/Services/Index.ts +2 -0
- package/Server/Services/LlmLogService.ts +46 -2
- package/Server/Services/MonitorService.ts +49 -0
- package/Server/Services/MonitorStatusService.ts +166 -0
- package/Server/Services/OpenTelemetryIngestService.ts +255 -184
- package/Server/Services/RumSessionPinService.ts +7 -21
- package/Server/Services/StatusPageSubscriberService.ts +13 -0
- package/Server/Services/UserService.ts +280 -9
- package/Server/Static/Vendor/README.md +62 -0
- package/Server/Static/Vendor/fonts/InterVariable.woff2 +0 -0
- package/Server/Static/Vendor/highlight/highlight.min.js +1244 -0
- package/Server/Static/Vendor/highlight/languages/apache.min.js +15 -0
- package/Server/Static/Vendor/highlight/languages/bash.min.js +21 -0
- package/Server/Static/Vendor/highlight/languages/c.min.js +41 -0
- package/Server/Static/Vendor/highlight/languages/cpp.min.js +47 -0
- package/Server/Static/Vendor/highlight/languages/csharp.min.js +49 -0
- package/Server/Static/Vendor/highlight/languages/css.min.js +31 -0
- package/Server/Static/Vendor/highlight/languages/diff.min.js +9 -0
- package/Server/Static/Vendor/highlight/languages/dns.min.js +11 -0
- package/Server/Static/Vendor/highlight/languages/dockerfile.min.js +8 -0
- package/Server/Static/Vendor/highlight/languages/go.min.js +20 -0
- package/Server/Static/Vendor/highlight/languages/graphql.min.js +12 -0
- package/Server/Static/Vendor/highlight/languages/http.min.js +14 -0
- package/Server/Static/Vendor/highlight/languages/ini.min.js +15 -0
- package/Server/Static/Vendor/highlight/languages/java.min.js +38 -0
- package/Server/Static/Vendor/highlight/languages/javascript.min.js +81 -0
- package/Server/Static/Vendor/highlight/languages/json.min.js +8 -0
- package/Server/Static/Vendor/highlight/languages/kotlin.min.js +46 -0
- package/Server/Static/Vendor/highlight/languages/lua.min.js +15 -0
- package/Server/Static/Vendor/highlight/languages/makefile.min.js +14 -0
- package/Server/Static/Vendor/highlight/languages/nginx.min.js +21 -0
- package/Server/Static/Vendor/highlight/languages/perl.min.js +41 -0
- package/Server/Static/Vendor/highlight/languages/php.min.js +59 -0
- package/Server/Static/Vendor/highlight/languages/powershell.min.js +39 -0
- package/Server/Static/Vendor/highlight/languages/python.min.js +42 -0
- package/Server/Static/Vendor/highlight/languages/r.min.js +26 -0
- package/Server/Static/Vendor/highlight/languages/ruby.min.js +54 -0
- package/Server/Static/Vendor/highlight/languages/rust.min.js +27 -0
- package/Server/Static/Vendor/highlight/languages/scala.min.js +28 -0
- package/Server/Static/Vendor/highlight/languages/sql.min.js +21 -0
- package/Server/Static/Vendor/highlight/languages/swift.min.js +68 -0
- package/Server/Static/Vendor/highlight/languages/typescript.min.js +99 -0
- package/Server/Static/Vendor/highlight/languages/xml.min.js +29 -0
- package/Server/Static/Vendor/highlight/languages/yaml.min.js +28 -0
- package/Server/Static/Vendor/highlight/styles/github-dark.min.css +10 -0
- package/Server/Static/Vendor/highlight/styles/vs2015.min.css +1 -0
- package/Server/Static/Vendor/tailwind/tailwind-3.4.5.js +21028 -0
- package/Server/Types/Database/Permissions/BasePermission.ts +7 -0
- package/Server/Types/Database/Permissions/DeletePermission.ts +2 -0
- package/Server/Types/Database/Permissions/ReadPermission.ts +3 -0
- package/Server/Types/Database/Permissions/TenantPermission.ts +101 -16
- package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +6 -0
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +4 -0
- package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +8 -5
- package/Server/Utils/AI/CodeFix/FixRunBudget.ts +90 -16
- package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +2 -0
- package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +2 -0
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +311 -31
- package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +26 -24
- package/Server/Utils/AI/SRE/ConfidenceSignal.ts +182 -71
- package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +252 -43
- package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +26 -24
- package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.ts +125 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +25 -15
- package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +256 -57
- package/Server/Utils/AI/SRE/Insights/InsightStore.ts +76 -18
- package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +47 -13
- package/Server/Utils/AI/SRE/InvestigationGrader.ts +9 -5
- package/Server/Utils/AI/SRE/InvestigationQueue.ts +141 -24
- package/Server/Utils/AI/SRE/InvestigationSubjectLock.ts +66 -0
- package/Server/Utils/AI/SRE/InvestigationTldr.ts +352 -0
- package/Server/Utils/AI/SRE/PostedRootCause.ts +94 -3
- package/Server/Utils/AI/SRE/README.md +1 -1
- package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +132 -10
- package/Server/Utils/AnalyticsDatabase/ClusterConfig.ts +24 -0
- package/Server/Utils/AnalyticsDatabase/InsertDedupContext.ts +7 -2
- package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +1793 -0
- package/Server/Utils/Dashboard/PublicDashboardViewConfig.ts +65 -0
- package/Server/Utils/DataSource/ConnectorRegistry.ts +53 -0
- package/Server/Utils/DataSource/Connectors/ClickHouseConnector.ts +338 -0
- package/Server/Utils/DataSource/Connectors/ElasticsearchConnector.ts +717 -0
- package/Server/Utils/DataSource/Connectors/LokiConnector.ts +606 -0
- package/Server/Utils/DataSource/Connectors/MySqlConnector.ts +307 -0
- package/Server/Utils/DataSource/Connectors/PostgresConnector.ts +260 -0
- package/Server/Utils/DataSource/Connectors/PrometheusConnector.ts +555 -0
- package/Server/Utils/DataSource/Connectors/RestApiConnector.ts +597 -0
- package/Server/Utils/DataSource/Connectors/SqlServerConnector.ts +318 -0
- package/Server/Utils/DataSource/EgressGuard.ts +446 -0
- package/Server/Utils/DataSource/HttpFetch.ts +221 -0
- package/Server/Utils/DataSource/SqlQueryGuard.ts +383 -0
- package/Server/Utils/DataSource/SqlResultShaper.ts +372 -0
- package/Server/Utils/DataSource/Types.ts +93 -0
- package/Server/Utils/Database/PostgresErrorTranslator.ts +172 -17
- package/Server/Utils/InProcessMemo.ts +141 -0
- package/Server/Utils/InstanceHealth/TelemetryIngestion.ts +628 -0
- package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +29 -0
- package/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.ts +56 -0
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +104 -0
- package/Server/Utils/Monitor/MonitorResource.ts +14 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -0
- package/Server/Utils/PasswordHash.ts +28 -4
- package/Server/Utils/Response.ts +12 -1
- package/Server/Utils/SSRFProtection.ts +237 -0
- package/Server/Utils/StartServer.ts +8 -0
- package/Server/Utils/StatusPageSubscriberWebhook.ts +30 -0
- package/Server/Utils/Telemetry/CaptureSpan.ts +30 -18
- package/Server/Utils/Telemetry/IngestionTimestamp.ts +75 -0
- package/Server/Utils/Telemetry/ResourceHeartbeat.ts +99 -7
- package/Server/Utils/Telemetry/Telemetry.ts +112 -1
- package/Server/Utils/Telemetry.ts +104 -3
- package/Server/Utils/VendorAssets.ts +165 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +28 -5
- package/Server/Utils/Workspace/Slack/Slack.ts +5 -0
- package/Server/Views/Partials/Head.ejs +21 -7
- package/Tests/App/AdminDashboard/AdminProjectsIdFilter.test.tsx +207 -0
- package/Tests/App/AdminDashboard/AdminUsersIdFilter.test.tsx +216 -0
- package/Tests/App/Dashboard/AIInsightViewActions.test.tsx +422 -0
- package/Tests/App/Dashboard/AIInvestigationHeaderStatus.test.tsx +251 -0
- package/Tests/App/Dashboard/AddWidgetModal.test.tsx +10 -3
- package/Tests/App/Dashboard/AlertsSideMenu.test.tsx +387 -0
- package/Tests/App/Dashboard/ChatActivityFeed.test.tsx +199 -0
- package/Tests/App/Dashboard/DataSourceChartSyntheticConfig.test.tsx +736 -0
- package/Tests/App/Dashboard/DataSourceQueryEditor.test.tsx +868 -0
- package/Tests/App/Dashboard/DataSourceWidgetCatalog.test.ts +440 -0
- package/Tests/App/Dashboard/DataSourceWidgetFetching.test.tsx +2109 -0
- package/Tests/App/Dashboard/DataSourceWidgetViews.test.tsx +726 -0
- package/Tests/App/Dashboard/EventStatusPanel.test.tsx +747 -0
- package/Tests/App/Dashboard/IncidentsSideMenu.test.tsx +447 -0
- package/Tests/App/Dashboard/InvestigationFeedRefresh.test.tsx +480 -0
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1695 -0
- package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +500 -0
- package/Tests/App/Dashboard/PortMonitorCriteriaFilter.test.ts +93 -0
- package/Tests/App/Dashboard/ProductMenuBreadcrumbs.test.tsx +391 -0
- package/Tests/App/Dashboard/ScheduledMaintenanceSideMenu.test.tsx +326 -0
- package/Tests/App/Dashboard/SideMenuHarness.tsx +187 -0
- package/Tests/App/Dashboard/WidgetCatalog.test.ts +6 -1
- package/Tests/App/StatusPage/PublicStatusPageAPIErrorHandling.test.ts +117 -0
- package/Tests/App/StatusPage/StatusPageModelAPIPolymorphism.test.ts +223 -0
- package/Tests/App/StatusPage/StatusPageResourceExplorer.test.tsx +1858 -0
- package/Tests/Models/DatabaseModels/DataSourceModelSecrets.test.ts +70 -0
- package/Tests/Models/DatabaseModels/PermissionCatalogueCoverage.test.ts +243 -0
- package/Tests/Server/API/AIAgentDataFixFromIncidentContext.test.ts +266 -0
- package/Tests/Server/API/AIInvestigationAPI.test.ts +781 -0
- package/Tests/Server/API/AIInvestigationCreateFixTask.test.ts +80 -0
- package/Tests/Server/API/DashboardMasterPasswordAPI.test.ts +172 -1
- package/Tests/Server/API/DashboardPublicDataSourceStrip.test.ts +686 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +585 -823
- package/Tests/Server/API/DataSourceAPIRoutes.test.ts +486 -0
- package/Tests/Server/API/StatusPageMasterPasswordAPI.test.ts +335 -0
- package/Tests/Server/API/StatusPageSubscriberOwnership.test.ts +291 -0
- package/Tests/Server/API/UserAuthenticationAPI.test.ts +641 -0
- package/Tests/Server/Infrastructure/ClickhouseKeepAliveOptions.test.ts +441 -0
- package/Tests/Server/Middleware/TelemetryIngestTokenLog.test.ts +140 -0
- package/Tests/Server/Services/AIInsightService.test.ts +266 -11
- package/Tests/Server/Services/AIRunAnalysisTldrPersistence.test.ts +160 -0
- package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +59 -5
- package/Tests/Server/Services/AIRunHumanVerdict.test.ts +127 -58
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +400 -20
- package/Tests/Server/Services/AddMasterPasswordSaltMigration.test.ts +283 -0
- package/Tests/Server/Services/AlertMetricResourceAttributes.test.ts +352 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +25 -1
- package/Tests/Server/Services/DataSourceServiceSettings.test.ts +244 -0
- package/Tests/Server/Services/DatabaseServicePerUserPasswordSalt.test.ts +45 -35
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsWithoutHooks.test.ts +54 -0
- package/Tests/Server/Services/FeedAIRunAssociation.test.ts +125 -0
- package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +418 -57
- package/Tests/Server/Services/HostServiceFindOrCreateMemo.test.ts +397 -0
- package/Tests/Server/Services/HostServiceUpdateLastSeen.test.ts +41 -2
- package/Tests/Server/Services/IncidentMetricResourceAttributes.test.ts +408 -0
- package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +173 -14
- package/Tests/Server/Services/MasterPasswordScrypt.test.ts +567 -0
- package/Tests/Server/Services/MonitorStatusServiceDeleteReferenceCleanup.test.ts +351 -0
- package/Tests/Server/Services/MonitorStatusServiceValidation.test.ts +171 -0
- package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +398 -0
- package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +19 -0
- package/Tests/Server/Services/ProjectCallSMSConfigCredentialUniqueness.test.ts +305 -0
- package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +36 -1
- package/Tests/Server/Services/RumSessionPinUniqueViolationRecovery.test.ts +163 -0
- package/Tests/Server/Services/SeparateIncidentAlertAiSettingsMigration.test.ts +194 -0
- package/Tests/Server/Services/UserAuthenticationService.test.ts +973 -0
- package/Tests/Server/Types/Database/ObjectIdColumnQuery.test.ts +262 -0
- package/Tests/Server/Types/Database/Permissions/TenantPermission.test.ts +358 -0
- package/Tests/Server/Utils/AI/AIAlertGating.test.ts +37 -4
- package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +330 -29
- package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +25 -0
- package/Tests/Server/Utils/AI/AIInvestigationQueue.test.ts +293 -5
- package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +59 -1
- package/Tests/Server/Utils/AI/FixFromIncidentAutoTrigger.test.ts +342 -19
- package/Tests/Server/Utils/AI/FixRunBudget.test.ts +214 -30
- package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +6 -1
- package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +121 -4
- package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +2 -0
- package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +361 -10
- package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +65 -17
- package/Tests/Server/Utils/AI/InvestigationQueueRemediationExecution.test.ts +3 -0
- package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +605 -20
- package/Tests/Server/Utils/AI/InvestigationTldr.test.ts +623 -0
- package/Tests/Server/Utils/AI/InvestigationTldrWiring.test.ts +98 -0
- package/Tests/Server/Utils/AI/PostedRootCause.test.ts +254 -0
- package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +4 -0
- package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +2 -0
- package/Tests/Server/Utils/AI/SubjectCodeFixRunDedupe.test.ts +44 -0
- package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +30 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +857 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardViewConfig.test.ts +480 -0
- package/Tests/Server/Utils/DataSource/ClickHouseConnector.test.ts +759 -0
- package/Tests/Server/Utils/DataSource/ConnectorRegistry.test.ts +37 -0
- package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +645 -0
- package/Tests/Server/Utils/DataSource/ElasticsearchConnector.test.ts +1206 -0
- package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +616 -0
- package/Tests/Server/Utils/DataSource/LokiConnector.test.ts +970 -0
- package/Tests/Server/Utils/DataSource/MySqlConnector.test.ts +935 -0
- package/Tests/Server/Utils/DataSource/PostgresConnector.test.ts +854 -0
- package/Tests/Server/Utils/DataSource/PrometheusConnector.test.ts +881 -0
- package/Tests/Server/Utils/DataSource/RestApiConnector.test.ts +1020 -0
- package/Tests/Server/Utils/DataSource/SqlQueryGuard.test.ts +425 -0
- package/Tests/Server/Utils/DataSource/SqlResultShaper.test.ts +555 -0
- package/Tests/Server/Utils/DataSource/SqlServerConnector.test.ts +934 -0
- package/Tests/Server/Utils/Database/PostgresErrorTranslator.test.ts +228 -7
- package/Tests/Server/Utils/InProcessMemo.test.ts +292 -0
- package/Tests/Server/Utils/InstanceHealth/TelemetryIngestion.test.ts +960 -0
- package/Tests/Server/Utils/MicrosoftTeamsWebhookUrlValidation.test.ts +103 -0
- package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaPortTimings.test.ts +212 -0
- package/Tests/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.test.ts +401 -0
- package/Tests/Server/Utils/Monitor/MonitorMetricResourceAttributes.test.ts +336 -0
- package/Tests/Server/Utils/Monitor/MonitorMetricUtilPortTimings.test.ts +243 -0
- package/Tests/Server/Utils/OfflineAssetHygiene.test.ts +521 -0
- package/Tests/Server/Utils/PasswordHash.test.ts +30 -0
- package/Tests/Server/Utils/ResponseRenderAnalytics.test.ts +143 -0
- package/Tests/Server/Utils/SSRFProtection.test.ts +193 -0
- package/Tests/Server/Utils/StatusPageSubscriberWebhook.test.ts +101 -0
- package/Tests/Server/Utils/TailwindBuildCopy.test.ts +225 -0
- package/Tests/Server/Utils/Telemetry/ResourceHeartbeatL1Memo.test.ts +355 -0
- package/Tests/Server/Utils/Telemetry/TelemetryFanInWriter.test.ts +128 -0
- package/Tests/Server/Utils/Telemetry/TelemetryUtilAttributeKeys.test.ts +381 -0
- package/Tests/Server/Utils/Telemetry.test.ts +87 -0
- package/Tests/Server/Utils/VendorAssetIntegrity.test.ts +343 -0
- package/Tests/Server/Utils/VendorAssets.test.ts +671 -0
- package/Tests/Server/Views/OfflineRender.test.ts +297 -0
- package/Tests/Types/Dashboard/DashboardTemplates.test.ts +111 -0
- package/Tests/Types/Dashboard/DataSourceComponentTypes.test.ts +618 -0
- package/Tests/Types/DateClickhouseFormat.test.ts +192 -0
- package/Tests/Types/Monitor/CephMetricCatalog.test.ts +104 -0
- package/Tests/Types/Monitor/CriteriaFilter.test.ts +4 -0
- package/Tests/Types/Monitor/DockerMetricCatalog.test.ts +109 -0
- package/Tests/Types/Monitor/DockerSwarmMetricCatalog.test.ts +118 -0
- package/Tests/Types/Monitor/HostMetricCatalog.test.ts +104 -0
- package/Tests/Types/Monitor/IotMetricCatalog.test.ts +104 -0
- package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +118 -0
- package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +42 -0
- package/Tests/Types/Monitor/MonitorStep.test.ts +38 -0
- package/Tests/Types/Monitor/MonitorStepDomainMonitor.test.ts +75 -0
- package/Tests/Types/Monitor/PodmanMetricCatalog.test.ts +109 -0
- package/Tests/Types/Monitor/ProxmoxMetricCatalog.test.ts +107 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.test.ts +151 -0
- package/Tests/Types/Password.test.ts +363 -0
- package/Tests/Types/Permission.test.ts +137 -0
- package/Tests/Types/Rum/SessionReplayMaskingMode.test.ts +101 -0
- package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +5 -5
- package/Tests/UI/Components/CardModelDetailEdit.test.tsx +3 -5
- package/Tests/UI/Components/ConfirmModal.test.tsx +7 -0
- package/Tests/UI/Components/ErrorBoundary.test.tsx +211 -0
- package/Tests/UI/Components/FeedItemSafeMode.test.tsx +74 -0
- package/Tests/UI/Components/Modal.test.tsx +281 -1
- package/Tests/UI/Components/MoreMenu.test.tsx +756 -0
- package/Tests/UI/Components/ObjectIdFilterPipeline.test.tsx +396 -0
- package/Tests/UI/Components/StatusPage/ResourceGroupNavigator.test.tsx +1147 -0
- package/Tests/UI/Components/StatusPage/ResourceGroupSection.test.tsx +62 -0
- package/Tests/UI/Monitor/PortMonitorView.test.tsx +237 -0
- package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +91 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +116 -1
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
- package/Tests/UI/Utils/DownloadFile.test.ts +103 -0
- package/Tests/UI/Utils/ErrorSupportBundle.test.ts +582 -0
- package/Tests/UI/Utils/Project.test.ts +31 -0
- package/Tests/UI/Utils/StatusPageModelAPIInjection.test.ts +245 -0
- package/Tests/UI/Utils/UseDashboardGridDnd.test.tsx +820 -0
- package/Tests/Utils/Analytics.test.ts +23 -0
- package/Tests/Utils/Dashboard/Components/DashboardDataSourceComponents.test.ts +640 -0
- package/Tests/Utils/Dashboard/DashboardViewConfig.test.ts +329 -0
- package/Tests/Utils/Dashboard/GridLayout.test.ts +951 -0
- package/Tests/Utils/DataSource/DataSourceQueryText.test.ts +138 -0
- package/Tests/Utils/DataSource/DataSourceValueReducer.test.ts +526 -0
- package/Tests/Utils/Metrics/MetricResourceAttributeUtil.test.ts +691 -0
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +117 -0
- package/Tests/Utils/RecordingRuleExpression.test.ts +327 -0
- package/Tests/Utils/StatusPage/GroupHierarchyView.test.ts +1452 -0
- package/Tests/Utils/StatusPage/GroupNestingLayout.test.ts +186 -0
- package/Tests/Utils/StatusPage/GroupTree.test.ts +456 -0
- package/Tests/Utils/StatusPage/OverviewGroupHierarchyVisibility.test.ts +588 -0
- package/Tests/Utils/StatusPage/ResourceExplorer.test.ts +931 -0
- package/Tests/Utils/Telemetry/CaptureSpanExportGating.test.ts +288 -0
- package/Tests/Utils/Telemetry/IngestionTimestamp.test.ts +170 -0
- package/Tests/Utils/Telemetry/SavedViewTimeRange.test.ts +244 -0
- package/Tests/Utils/Telemetry/TelemetryQueryTimeRange.test.ts +825 -0
- package/Types/AI/AIInsightEvidence.ts +6 -0
- package/Types/AI/AIRunCodeFixRecommendation.ts +17 -0
- package/Types/AI/CodeFixTaskContext.ts +63 -3
- package/Types/AI/CodeFixTaskType.ts +3 -3
- package/Types/Analytics/RevenueEvent.ts +31 -0
- package/Types/Dashboard/DashboardComponentType.ts +31 -0
- package/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.ts +27 -0
- package/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.ts +32 -0
- package/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.ts +30 -0
- package/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.ts +55 -0
- package/Types/DataSource/DataSourceLimits.ts +62 -0
- package/Types/DataSource/DataSourceQueryConfig.ts +41 -0
- package/Types/DataSource/DataSourceTableResult.ts +38 -0
- package/Types/DataSource/DataSourceType.ts +213 -0
- package/Types/Date.ts +43 -3
- package/Types/HashedString.ts +4 -3
- package/Types/Monitor/CriteriaFilter.ts +4 -0
- package/Types/Monitor/DomainMonitor/DomainLookupMethod.ts +23 -0
- package/Types/Monitor/DomainMonitor/DomainMonitorResponse.ts +7 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +24 -7
- package/Types/Monitor/MonitorMetricType.ts +8 -0
- package/Types/Monitor/MonitorStep.ts +10 -1
- package/Types/Monitor/MonitorStepDomainMonitor.ts +21 -0
- package/Types/Monitor/PortMonitor/PortMonitorTimings.ts +10 -0
- package/Types/Password.ts +64 -0
- package/Types/Permission.ts +69 -175
- package/Types/Probe/ProbeMonitorResponse.ts +6 -0
- package/Types/UserAuthenticationStatus.ts +34 -0
- package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +2 -3
- package/UI/Components/Button/Button.tsx +1 -1
- package/UI/Components/ErrorBoundary.tsx +549 -71
- package/UI/Components/Feed/FeedItem.tsx +9 -2
- package/UI/Components/Icon/Icon.tsx +10 -9
- package/UI/Components/Modal/ConfirmModal.tsx +6 -1
- package/UI/Components/Modal/Modal.tsx +267 -35
- package/UI/Components/Modal/ModalFooter.tsx +6 -1
- package/UI/Components/ModelDetail/CardModelDetail.tsx +0 -12
- package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +12 -2
- package/UI/Components/MoreMenu/MoreMenu.tsx +301 -98
- package/UI/Components/MoreMenu/MoreMenuItem.tsx +13 -5
- package/UI/Components/StatusPage/ResourceGrid.tsx +314 -0
- package/UI/Components/StatusPage/ResourceGroupNavigator.tsx +808 -0
- package/UI/Components/StatusPage/ResourceList.tsx +570 -0
- package/UI/Styles/Theme.css +18 -0
- package/UI/Utils/API/RequestOptions.ts +7 -0
- package/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.ts +1 -0
- package/UI/Utils/DownloadFile.ts +16 -8
- package/UI/Utils/ErrorSupportBundle.ts +805 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +20 -8
- package/UI/Utils/Project.ts +4 -0
- package/UI/Utils/StatusPage.ts +8 -2
- package/UI/Utils/TestDataSource.ts +61 -0
- package/UI/Utils/UseDashboardGridDnd.ts +917 -0
- package/UI/esbuild-config.js +45 -0
- package/Utils/Analytics.ts +15 -0
- package/Utils/Dashboard/Components/DashboardDataSourceChartComponent.ts +88 -0
- package/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.ts +123 -0
- package/Utils/Dashboard/Components/DashboardDataSourceShared.ts +16 -0
- package/Utils/Dashboard/Components/DashboardDataSourceTableComponent.ts +72 -0
- package/Utils/Dashboard/Components/DashboardDataSourceValueComponent.ts +126 -0
- package/Utils/Dashboard/Components/Index.ts +28 -0
- package/Utils/Dashboard/DashboardViewConfig.ts +80 -36
- package/Utils/Dashboard/GridLayout.ts +523 -0
- package/Utils/DataSource/DataSourceQueryText.ts +94 -0
- package/Utils/DataSource/DataSourceValueReducer.ts +156 -0
- package/Utils/Metrics/MetricResourceAttributeUtil.ts +380 -0
- package/Utils/Metrics/RecordingRuleExpression.ts +19 -17
- package/Utils/Monitor/MonitorMetricType.ts +44 -2
- package/Utils/NetworkDiscovery/ScanTargetUtil.ts +8 -6
- package/Utils/StatusPage/GroupHierarchyView.ts +931 -0
- package/Utils/StatusPage/GroupNestingLayout.ts +69 -0
- package/Utils/StatusPage/GroupTree.ts +157 -66
- package/Utils/StatusPage/ResourceExplorer.ts +853 -0
- package/Utils/StatusPage/ResourceUptime.ts +37 -2
- package/Utils/Telemetry/SavedViewTimeRange.ts +114 -0
- package/Utils/Telemetry/TelemetryQueryTimeRange.ts +334 -0
- package/build/dist/Models/DatabaseModels/AIRun.js +73 -1
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertFeed.js +32 -0
- package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Dashboard.js +29 -0
- package/build/dist/Models/DatabaseModels/Dashboard.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DataSource.js +774 -0
- package/build/dist/Models/DatabaseModels/DataSource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +2 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentFeed.js +32 -0
- package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/LogSavedView.js +33 -0
- package/build/dist/Models/DatabaseModels/LogSavedView.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +241 -11
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js +14 -4
- package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js +4 -4
- package/build/dist/Models/DatabaseModels/StatusPage.js +29 -0
- package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +1 -0
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +2 -0
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js +2 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +2 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserSession.js +2 -0
- package/build/dist/Models/DatabaseModels/UserSession.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js +6 -4
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js +5 -3
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +28 -46
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/AIInsightAPI.js +34 -4
- package/build/dist/Server/API/AIInsightAPI.js.map +1 -1
- package/build/dist/Server/API/AIInvestigationAPI.js +134 -11
- package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +127 -438
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/DataSourceAPI.js +173 -0
- package/build/dist/Server/API/DataSourceAPI.js.map +1 -0
- package/build/dist/Server/API/StatusPageAPI.js +40 -12
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/UserAPI.js +94 -2
- package/build/dist/Server/API/UserAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +14 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js +61 -1
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js +36 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.js +64 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +27 -0
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +13 -0
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +8 -3
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AIInsightService.js +110 -10
- package/build/dist/Server/Services/AIInsightService.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +92 -12
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +88 -21
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/AlertFeedService.js +3 -0
- package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +28 -35
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +37 -5
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DataSourceService.js +159 -0
- package/build/dist/Server/Services/DataSourceService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseService.js +21 -2
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +74 -0
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/IncidentFeedService.js +3 -0
- package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +35 -24
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +2 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LlmLogService.js +22 -1
- package/build/dist/Server/Services/LlmLogService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +45 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusService.js +129 -0
- package/build/dist/Server/Services/MonitorStatusService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +222 -159
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/RumSessionPinService.js +7 -15
- package/build/dist/Server/Services/RumSessionPinService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberService.js +10 -0
- package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +241 -10
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js +6 -0
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/DeletePermission.js +1 -0
- package/build/dist/Server/Types/Database/Permissions/DeletePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/ReadPermission.js +2 -0
- package/build/dist/Server/Types/Database/Permissions/ReadPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +68 -12
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +3 -0
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +4 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +8 -5
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +63 -24
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +2 -0
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +2 -0
- package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +222 -34
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +22 -19
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +128 -49
- package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +170 -31
- package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +22 -19
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.js +97 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +17 -15
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +178 -54
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +65 -16
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +33 -9
- package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +9 -5
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +121 -41
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js +46 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationTldr.js +303 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationTldr.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js +61 -14
- package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +79 -1
- package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js +21 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/InsertDedupContext.js.map +1 -1
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +1261 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardViewConfig.js +47 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardViewConfig.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/ConnectorRegistry.js +42 -0
- package/build/dist/Server/Utils/DataSource/ConnectorRegistry.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/ClickHouseConnector.js +187 -0
- package/build/dist/Server/Utils/DataSource/Connectors/ClickHouseConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/ElasticsearchConnector.js +493 -0
- package/build/dist/Server/Utils/DataSource/Connectors/ElasticsearchConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/LokiConnector.js +399 -0
- package/build/dist/Server/Utils/DataSource/Connectors/LokiConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/MySqlConnector.js +195 -0
- package/build/dist/Server/Utils/DataSource/Connectors/MySqlConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/PostgresConnector.js +149 -0
- package/build/dist/Server/Utils/DataSource/Connectors/PostgresConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/PrometheusConnector.js +362 -0
- package/build/dist/Server/Utils/DataSource/Connectors/PrometheusConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/RestApiConnector.js +342 -0
- package/build/dist/Server/Utils/DataSource/Connectors/RestApiConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/SqlServerConnector.js +186 -0
- package/build/dist/Server/Utils/DataSource/Connectors/SqlServerConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/EgressGuard.js +305 -0
- package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +134 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/SqlQueryGuard.js +331 -0
- package/build/dist/Server/Utils/DataSource/SqlQueryGuard.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/SqlResultShaper.js +280 -0
- package/build/dist/Server/Utils/DataSource/SqlResultShaper.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Types.js +2 -0
- package/build/dist/Server/Utils/DataSource/Types.js.map +1 -0
- package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js +103 -9
- package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js.map +1 -1
- package/build/dist/Server/Utils/InProcessMemo.js +113 -0
- package/build/dist/Server/Utils/InProcessMemo.js.map +1 -0
- package/build/dist/Server/Utils/InstanceHealth/TelemetryIngestion.js +406 -0
- package/build/dist/Server/Utils/InstanceHealth/TelemetryIngestion.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +20 -3
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js +43 -0
- package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +67 -0
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +14 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/PasswordHash.js +25 -4
- package/build/dist/Server/Utils/PasswordHash.js.map +1 -1
- package/build/dist/Server/Utils/Response.js +9 -1
- package/build/dist/Server/Utils/Response.js.map +1 -1
- package/build/dist/Server/Utils/SSRFProtection.js +192 -0
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +7 -0
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js +24 -0
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js +25 -11
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/IngestionTimestamp.js +32 -0
- package/build/dist/Server/Utils/Telemetry/IngestionTimestamp.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js +92 -5
- package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +92 -6
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry.js +93 -6
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/VendorAssets.js +121 -0
- package/build/dist/Server/Utils/VendorAssets.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +25 -4
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js +5 -0
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
- package/build/dist/Types/AI/AIRunCodeFixRecommendation.js +18 -0
- package/build/dist/Types/AI/AIRunCodeFixRecommendation.js.map +1 -0
- package/build/dist/Types/AI/CodeFixTaskContext.js +23 -3
- package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -1
- package/build/dist/Types/AI/CodeFixTaskType.js +3 -3
- package/build/dist/Types/Analytics/RevenueEvent.js +26 -0
- package/build/dist/Types/Analytics/RevenueEvent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js +27 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.js +16 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.js.map +1 -0
- package/build/dist/Types/DataSource/DataSourceLimits.js +47 -0
- package/build/dist/Types/DataSource/DataSourceLimits.js.map +1 -0
- package/build/dist/Types/DataSource/DataSourceQueryConfig.js +10 -0
- package/build/dist/Types/DataSource/DataSourceQueryConfig.js.map +1 -0
- package/build/dist/Types/DataSource/DataSourceTableResult.js +14 -0
- package/build/dist/Types/DataSource/DataSourceTableResult.js.map +1 -0
- package/build/dist/Types/DataSource/DataSourceType.js +183 -0
- package/build/dist/Types/DataSource/DataSourceType.js.map +1 -0
- package/build/dist/Types/Date.js +38 -3
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/HashedString.js +4 -3
- package/build/dist/Types/HashedString.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +4 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js +24 -0
- package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +24 -7
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorMetricType.js +7 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +6 -1
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js +15 -0
- package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js +2 -0
- package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js.map +1 -0
- package/build/dist/Types/Password.js +56 -0
- package/build/dist/Types/Password.js.map +1 -0
- package/build/dist/Types/Permission.js +65 -155
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/UserAuthenticationStatus.js +2 -0
- package/build/dist/Types/UserAuthenticationStatus.js.map +1 -0
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +2 -5
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
- package/build/dist/UI/Components/ErrorBoundary.js +427 -52
- package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js +2 -2
- package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +10 -4
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
- package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +178 -19
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js +3 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +0 -12
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +12 -2
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js +197 -66
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +7 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceGrid.js +119 -0
- package/build/dist/UI/Components/StatusPage/ResourceGrid.js.map +1 -0
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js +354 -0
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js.map +1 -0
- package/build/dist/UI/Components/StatusPage/ResourceList.js +203 -0
- package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -0
- package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js +1 -6
- package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/DownloadFile.js +15 -8
- package/build/dist/UI/Utils/DownloadFile.js.map +1 -1
- package/build/dist/UI/Utils/ErrorSupportBundle.js +476 -0
- package/build/dist/UI/Utils/ErrorSupportBundle.js.map +1 -0
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +20 -15
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/Project.js +3 -0
- package/build/dist/UI/Utils/Project.js.map +1 -1
- package/build/dist/UI/Utils/StatusPage.js +4 -4
- package/build/dist/UI/Utils/StatusPage.js.map +1 -1
- package/build/dist/UI/Utils/TestDataSource.js +39 -0
- package/build/dist/UI/Utils/TestDataSource.js.map +1 -0
- package/build/dist/UI/Utils/UseDashboardGridDnd.js +551 -0
- package/build/dist/UI/Utils/UseDashboardGridDnd.js.map +1 -0
- package/build/dist/Utils/Analytics.js +4 -0
- package/build/dist/Utils/Analytics.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceChartComponent.js +79 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceChartComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.js +111 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceShared.js +15 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceShared.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceTableComponent.js +62 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceTableComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceValueComponent.js +112 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceValueComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +16 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Dashboard/DashboardViewConfig.js +42 -26
- package/build/dist/Utils/Dashboard/DashboardViewConfig.js.map +1 -1
- package/build/dist/Utils/Dashboard/GridLayout.js +338 -0
- package/build/dist/Utils/Dashboard/GridLayout.js.map +1 -0
- package/build/dist/Utils/DataSource/DataSourceQueryText.js +64 -0
- package/build/dist/Utils/DataSource/DataSourceQueryText.js.map +1 -0
- package/build/dist/Utils/DataSource/DataSourceValueReducer.js +124 -0
- package/build/dist/Utils/DataSource/DataSourceValueReducer.js.map +1 -0
- package/build/dist/Utils/Metrics/MetricResourceAttributeUtil.js +281 -0
- package/build/dist/Utils/Metrics/MetricResourceAttributeUtil.js.map +1 -0
- package/build/dist/Utils/Metrics/RecordingRuleExpression.js +19 -17
- package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +38 -6
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js +8 -6
- package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js.map +1 -1
- package/build/dist/Utils/StatusPage/GroupHierarchyView.js +560 -0
- package/build/dist/Utils/StatusPage/GroupHierarchyView.js.map +1 -0
- package/build/dist/Utils/StatusPage/GroupNestingLayout.js +46 -0
- package/build/dist/Utils/StatusPage/GroupNestingLayout.js.map +1 -1
- package/build/dist/Utils/StatusPage/GroupTree.js +79 -34
- package/build/dist/Utils/StatusPage/GroupTree.js.map +1 -1
- package/build/dist/Utils/StatusPage/ResourceExplorer.js +519 -0
- package/build/dist/Utils/StatusPage/ResourceExplorer.js.map +1 -0
- package/build/dist/Utils/StatusPage/ResourceUptime.js +22 -1
- package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
- package/build/dist/Utils/Telemetry/SavedViewTimeRange.js +79 -0
- package/build/dist/Utils/Telemetry/SavedViewTimeRange.js.map +1 -0
- package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js +236 -0
- package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js.map +1 -0
- package/jest.config.json +1 -0
- package/package.json +5 -1
- package/tsconfig.json +12 -10
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* External systems a project-level Data Source can connect to. Dashboards
|
|
3
|
+
* bind widgets to a Data Source + a query written in that source's native
|
|
4
|
+
* query language (PromQL, SQL, LogQL, ES Query DSL, or a REST request
|
|
5
|
+
* descriptor), and the server-side connector for the type normalizes the
|
|
6
|
+
* response into the same shapes OneUptime's own widgets already consume.
|
|
7
|
+
*/
|
|
8
|
+
enum DataSourceType {
|
|
9
|
+
Prometheus = "Prometheus",
|
|
10
|
+
PostgreSQL = "PostgreSQL",
|
|
11
|
+
MySQL = "MySQL",
|
|
12
|
+
MicrosoftSqlServer = "Microsoft SQL Server",
|
|
13
|
+
ClickHouse = "ClickHouse",
|
|
14
|
+
Loki = "Loki",
|
|
15
|
+
Elasticsearch = "Elasticsearch",
|
|
16
|
+
RestApi = "REST API",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export default DataSourceType;
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* What a type is used for, so the type picker can group hundreds of
|
|
23
|
+
* connectors into a handful of sections. Enum values are the section
|
|
24
|
+
* headings; DataSourceTypeCategories below fixes the display order.
|
|
25
|
+
*/
|
|
26
|
+
export enum DataSourceTypeCategory {
|
|
27
|
+
Metrics = "Metrics",
|
|
28
|
+
Logs = "Logs",
|
|
29
|
+
Databases = "Databases",
|
|
30
|
+
Search = "Search",
|
|
31
|
+
Api = "APIs",
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const DataSourceTypeCategories: Array<DataSourceTypeCategory> = [
|
|
35
|
+
DataSourceTypeCategory.Metrics,
|
|
36
|
+
DataSourceTypeCategory.Logs,
|
|
37
|
+
DataSourceTypeCategory.Databases,
|
|
38
|
+
DataSourceTypeCategory.Search,
|
|
39
|
+
DataSourceTypeCategory.Api,
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
export interface DataSourceTypeProps {
|
|
43
|
+
dataSourceType: DataSourceType;
|
|
44
|
+
title: string;
|
|
45
|
+
description: string;
|
|
46
|
+
category: DataSourceTypeCategory;
|
|
47
|
+
queryLanguageTitle: string;
|
|
48
|
+
queryPlaceholder: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export class DataSourceTypeUtil {
|
|
52
|
+
public static getAllDataSourceTypes(): Array<DataSourceType> {
|
|
53
|
+
return [
|
|
54
|
+
DataSourceType.Prometheus,
|
|
55
|
+
DataSourceType.PostgreSQL,
|
|
56
|
+
DataSourceType.MySQL,
|
|
57
|
+
DataSourceType.MicrosoftSqlServer,
|
|
58
|
+
DataSourceType.ClickHouse,
|
|
59
|
+
DataSourceType.Loki,
|
|
60
|
+
DataSourceType.Elasticsearch,
|
|
61
|
+
DataSourceType.RestApi,
|
|
62
|
+
];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/*
|
|
66
|
+
* Sources reached over HTTP(S) at a base URL (Prometheus-compatible APIs,
|
|
67
|
+
* Loki, Elasticsearch, arbitrary REST endpoints). These require `url` on
|
|
68
|
+
* the Data Source and are queried through the SSRF-guarded HTTP client.
|
|
69
|
+
*/
|
|
70
|
+
public static isHttpBasedType(dataSourceType: DataSourceType): boolean {
|
|
71
|
+
return [
|
|
72
|
+
DataSourceType.Prometheus,
|
|
73
|
+
DataSourceType.Loki,
|
|
74
|
+
DataSourceType.Elasticsearch,
|
|
75
|
+
DataSourceType.RestApi,
|
|
76
|
+
].includes(dataSourceType);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
* Sources reached with a database driver over host/port. These require
|
|
81
|
+
* `databaseHost` (+ optionally port/databaseName/username/password) and
|
|
82
|
+
* run read-only guarded SQL.
|
|
83
|
+
*/
|
|
84
|
+
public static isDatabaseType(dataSourceType: DataSourceType): boolean {
|
|
85
|
+
return [
|
|
86
|
+
DataSourceType.PostgreSQL,
|
|
87
|
+
DataSourceType.MySQL,
|
|
88
|
+
DataSourceType.MicrosoftSqlServer,
|
|
89
|
+
DataSourceType.ClickHouse,
|
|
90
|
+
].includes(dataSourceType);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
public static getCategory(
|
|
94
|
+
dataSourceType: DataSourceType,
|
|
95
|
+
): DataSourceTypeCategory {
|
|
96
|
+
return DataSourceTypeUtil.getProps(dataSourceType).category;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** Default port used to seed the settings form for database sources. */
|
|
100
|
+
public static getDefaultPort(dataSourceType: DataSourceType): number | null {
|
|
101
|
+
switch (dataSourceType) {
|
|
102
|
+
case DataSourceType.PostgreSQL:
|
|
103
|
+
return 5432;
|
|
104
|
+
case DataSourceType.MySQL:
|
|
105
|
+
return 3306;
|
|
106
|
+
case DataSourceType.MicrosoftSqlServer:
|
|
107
|
+
return 1433;
|
|
108
|
+
case DataSourceType.ClickHouse:
|
|
109
|
+
return 8123; // HTTP interface — the @clickhouse/client transport.
|
|
110
|
+
default:
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
public static getProps(dataSourceType: DataSourceType): DataSourceTypeProps {
|
|
116
|
+
switch (dataSourceType) {
|
|
117
|
+
case DataSourceType.Prometheus:
|
|
118
|
+
return {
|
|
119
|
+
dataSourceType,
|
|
120
|
+
title: "Prometheus",
|
|
121
|
+
description:
|
|
122
|
+
"Query a Prometheus-compatible API (Prometheus, Thanos, Cortex, Mimir, VictoriaMetrics) with PromQL.",
|
|
123
|
+
category: DataSourceTypeCategory.Metrics,
|
|
124
|
+
queryLanguageTitle: "PromQL",
|
|
125
|
+
queryPlaceholder: 'rate(http_requests_total{job="api"}[5m])',
|
|
126
|
+
};
|
|
127
|
+
case DataSourceType.PostgreSQL:
|
|
128
|
+
return {
|
|
129
|
+
dataSourceType,
|
|
130
|
+
title: "PostgreSQL",
|
|
131
|
+
description:
|
|
132
|
+
"Run read-only SQL against a PostgreSQL-compatible database (PostgreSQL, TimescaleDB, CockroachDB).",
|
|
133
|
+
category: DataSourceTypeCategory.Databases,
|
|
134
|
+
queryLanguageTitle: "SQL",
|
|
135
|
+
queryPlaceholder:
|
|
136
|
+
"SELECT created_at AS time, COUNT(*) AS value FROM orders WHERE created_at BETWEEN $__startTime AND $__endTime GROUP BY 1 ORDER BY 1",
|
|
137
|
+
};
|
|
138
|
+
case DataSourceType.MySQL:
|
|
139
|
+
return {
|
|
140
|
+
dataSourceType,
|
|
141
|
+
title: "MySQL",
|
|
142
|
+
description: "Run read-only SQL against a MySQL or MariaDB database.",
|
|
143
|
+
category: DataSourceTypeCategory.Databases,
|
|
144
|
+
queryLanguageTitle: "SQL",
|
|
145
|
+
queryPlaceholder:
|
|
146
|
+
"SELECT created_at AS time, COUNT(*) AS value FROM orders WHERE created_at BETWEEN $__startTime AND $__endTime GROUP BY 1 ORDER BY 1",
|
|
147
|
+
};
|
|
148
|
+
case DataSourceType.MicrosoftSqlServer:
|
|
149
|
+
return {
|
|
150
|
+
dataSourceType,
|
|
151
|
+
title: "Microsoft SQL Server",
|
|
152
|
+
description:
|
|
153
|
+
"Run read-only SQL against a Microsoft SQL Server or Azure SQL database.",
|
|
154
|
+
category: DataSourceTypeCategory.Databases,
|
|
155
|
+
queryLanguageTitle: "T-SQL",
|
|
156
|
+
queryPlaceholder:
|
|
157
|
+
"SELECT created_at AS time, COUNT(*) AS value FROM orders WHERE created_at BETWEEN $__startTime AND $__endTime GROUP BY created_at ORDER BY created_at",
|
|
158
|
+
};
|
|
159
|
+
case DataSourceType.ClickHouse:
|
|
160
|
+
return {
|
|
161
|
+
dataSourceType,
|
|
162
|
+
title: "ClickHouse",
|
|
163
|
+
description:
|
|
164
|
+
"Run read-only SQL against a ClickHouse database over its HTTP interface.",
|
|
165
|
+
category: DataSourceTypeCategory.Databases,
|
|
166
|
+
queryLanguageTitle: "SQL",
|
|
167
|
+
queryPlaceholder:
|
|
168
|
+
"SELECT toStartOfMinute(timestamp) AS time, count() AS value FROM events WHERE timestamp BETWEEN $__startTime AND $__endTime GROUP BY time ORDER BY time",
|
|
169
|
+
};
|
|
170
|
+
case DataSourceType.Loki:
|
|
171
|
+
return {
|
|
172
|
+
dataSourceType,
|
|
173
|
+
title: "Grafana Loki",
|
|
174
|
+
description:
|
|
175
|
+
"Query a Grafana Loki log aggregation endpoint with LogQL metric queries.",
|
|
176
|
+
category: DataSourceTypeCategory.Logs,
|
|
177
|
+
queryLanguageTitle: "LogQL",
|
|
178
|
+
queryPlaceholder: 'sum(rate({app="api"} |= "error" [5m]))',
|
|
179
|
+
};
|
|
180
|
+
case DataSourceType.Elasticsearch:
|
|
181
|
+
return {
|
|
182
|
+
dataSourceType,
|
|
183
|
+
title: "Elasticsearch",
|
|
184
|
+
description:
|
|
185
|
+
"Query an Elasticsearch or OpenSearch cluster with Query DSL (date-histogram aggregations for charts).",
|
|
186
|
+
category: DataSourceTypeCategory.Search,
|
|
187
|
+
queryLanguageTitle: "Query DSL (JSON)",
|
|
188
|
+
queryPlaceholder:
|
|
189
|
+
'{ "query": { "match_all": {} }, "aggs": { "over_time": { "date_histogram": { "field": "@timestamp", "fixed_interval": "1m" }, "aggs": { "value": { "value_count": { "field": "_id" } } } } } }',
|
|
190
|
+
};
|
|
191
|
+
case DataSourceType.RestApi:
|
|
192
|
+
return {
|
|
193
|
+
dataSourceType,
|
|
194
|
+
title: "REST API",
|
|
195
|
+
description:
|
|
196
|
+
"Fetch JSON from any HTTP(S) API and map fields into time series or tables.",
|
|
197
|
+
category: DataSourceTypeCategory.Api,
|
|
198
|
+
queryLanguageTitle: "Request (JSON)",
|
|
199
|
+
queryPlaceholder:
|
|
200
|
+
'{ "path": "/api/stats", "method": "GET", "rowsPath": "data.items", "timestampField": "time", "valueField": "count" }',
|
|
201
|
+
};
|
|
202
|
+
default:
|
|
203
|
+
return {
|
|
204
|
+
dataSourceType,
|
|
205
|
+
title: dataSourceType,
|
|
206
|
+
description: "",
|
|
207
|
+
category: DataSourceTypeCategory.Api,
|
|
208
|
+
queryLanguageTitle: "Query",
|
|
209
|
+
queryPlaceholder: "",
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
package/Types/Date.ts
CHANGED
|
@@ -476,7 +476,12 @@ export default class OneUptimeDate {
|
|
|
476
476
|
}
|
|
477
477
|
|
|
478
478
|
public static getCurrentDate(): Date {
|
|
479
|
-
|
|
479
|
+
/*
|
|
480
|
+
* Not moment().toDate(): this is called on per-record telemetry ingest
|
|
481
|
+
* paths, and a moment wrapper allocation per call is pure overhead for
|
|
482
|
+
* what is exactly `new Date()`.
|
|
483
|
+
*/
|
|
484
|
+
return new Date();
|
|
480
485
|
}
|
|
481
486
|
|
|
482
487
|
public static fromNow(date: Date): string {
|
|
@@ -934,6 +939,17 @@ export default class OneUptimeDate {
|
|
|
934
939
|
return this.getSecondsInDays(days) * 1000;
|
|
935
940
|
}
|
|
936
941
|
|
|
942
|
+
public static getSecondsInHours(hours: PositiveNumber | number): number {
|
|
943
|
+
if (!(hours instanceof PositiveNumber)) {
|
|
944
|
+
hours = new PositiveNumber(hours);
|
|
945
|
+
}
|
|
946
|
+
return hours.positiveNumber * 60 * 60;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
public static getMillisecondsInHours(hours: PositiveNumber | number): number {
|
|
950
|
+
return this.getSecondsInHours(hours) * 1000;
|
|
951
|
+
}
|
|
952
|
+
|
|
937
953
|
public static getSomeHoursAgo(hours: PositiveNumber | number): Date {
|
|
938
954
|
if (!(hours instanceof PositiveNumber)) {
|
|
939
955
|
hours = new PositiveNumber(hours);
|
|
@@ -2067,9 +2083,33 @@ export default class OneUptimeDate {
|
|
|
2067
2083
|
return date;
|
|
2068
2084
|
}
|
|
2069
2085
|
|
|
2086
|
+
/*
|
|
2087
|
+
* Hand-rolled UTC "YYYY-MM-DD HH:mm:ss" formatter. The two Clickhouse
|
|
2088
|
+
* formatters below run several times per ingested log / span / metric
|
|
2089
|
+
* datapoint — millions of calls per minute on a busy worker — and a
|
|
2090
|
+
* moment() wrapper plus format-token parsing per call is roughly an order
|
|
2091
|
+
* of magnitude more expensive than reading the UTC fields directly.
|
|
2092
|
+
* Output is byte-identical to moment's, including the "Invalid date"
|
|
2093
|
+
* sentinel for NaN dates.
|
|
2094
|
+
*/
|
|
2095
|
+
private static formatUtcClickhouseDateTime(date: Date): string {
|
|
2096
|
+
if (Number.isNaN(date.getTime())) {
|
|
2097
|
+
return "Invalid date";
|
|
2098
|
+
}
|
|
2099
|
+
|
|
2100
|
+
const year: string = String(date.getUTCFullYear()).padStart(4, "0");
|
|
2101
|
+
const month: string = String(date.getUTCMonth() + 1).padStart(2, "0");
|
|
2102
|
+
const day: string = String(date.getUTCDate()).padStart(2, "0");
|
|
2103
|
+
const hours: string = String(date.getUTCHours()).padStart(2, "0");
|
|
2104
|
+
const minutes: string = String(date.getUTCMinutes()).padStart(2, "0");
|
|
2105
|
+
const seconds: string = String(date.getUTCSeconds()).padStart(2, "0");
|
|
2106
|
+
|
|
2107
|
+
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
|
2108
|
+
}
|
|
2109
|
+
|
|
2070
2110
|
public static toClickhouseDateTime(date: Date | string): string {
|
|
2071
2111
|
const parsedDate: Date = this.fromString(date);
|
|
2072
|
-
return
|
|
2112
|
+
return this.formatUtcClickhouseDateTime(parsedDate);
|
|
2073
2113
|
}
|
|
2074
2114
|
|
|
2075
2115
|
public static toClickhouseDateTime64(
|
|
@@ -2077,7 +2117,7 @@ export default class OneUptimeDate {
|
|
|
2077
2117
|
nanoTimestamp?: number,
|
|
2078
2118
|
): string {
|
|
2079
2119
|
const parsedDate: Date = this.fromString(date);
|
|
2080
|
-
const base: string =
|
|
2120
|
+
const base: string = this.formatUtcClickhouseDateTime(parsedDate);
|
|
2081
2121
|
|
|
2082
2122
|
let nanoFraction: string;
|
|
2083
2123
|
|
package/Types/HashedString.ts
CHANGED
|
@@ -24,9 +24,10 @@ import { FindOperator } from "typeorm";
|
|
|
24
24
|
* salted `SHA256("v2:" + salt + ":" + secret + ":" + value)`.
|
|
25
25
|
*
|
|
26
26
|
* Neither records its scheme in the digest — it is a bare hex SHA-256 either
|
|
27
|
-
* way — so
|
|
28
|
-
*
|
|
29
|
-
*
|
|
27
|
+
* way — so callers normally select the scheme by whether the row carries a
|
|
28
|
+
* salt. PasswordHash also has a bare-hash fallback for rolling deployments,
|
|
29
|
+
* where an old pod can write the original scheme while leaving a newer salt
|
|
30
|
+
* behind. The "v2" prefix and separators exist for domain separation.
|
|
30
31
|
*/
|
|
31
32
|
const SALTED_HASH_SCHEME_VERSION: string = "v2";
|
|
32
33
|
|
|
@@ -5,6 +5,8 @@ export enum CheckOn {
|
|
|
5
5
|
ResponseTime = "Response Time (in ms)",
|
|
6
6
|
PacketLossPercent = "Packet Loss (in %)",
|
|
7
7
|
Jitter = "Jitter (in ms)",
|
|
8
|
+
PortDnsLookupTime = "Port DNS Lookup Time (in ms)",
|
|
9
|
+
PortTcpConnectTime = "Port TCP Connect Time (in ms)",
|
|
8
10
|
ResponseStatusCode = "Response Status Code",
|
|
9
11
|
ResponseHeader = "Response Header",
|
|
10
12
|
ResponseHeaderValue = "Response Header Value",
|
|
@@ -399,6 +401,8 @@ export class CriteriaFilterUtil {
|
|
|
399
401
|
checkOn === CheckOn.ResponseTime ||
|
|
400
402
|
checkOn === CheckOn.PacketLossPercent ||
|
|
401
403
|
checkOn === CheckOn.Jitter ||
|
|
404
|
+
checkOn === CheckOn.PortDnsLookupTime ||
|
|
405
|
+
checkOn === CheckOn.PortTcpConnectTime ||
|
|
402
406
|
checkOn === CheckOn.DiskUsagePercent ||
|
|
403
407
|
checkOn === CheckOn.CPUUsagePercent ||
|
|
404
408
|
checkOn === CheckOn.MemoryUsagePercent ||
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Which protocol the probe uses to read a domain's registration record.
|
|
3
|
+
*
|
|
4
|
+
* WHOIS is the legacy protocol and its server list is not authoritative:
|
|
5
|
+
* clients ship a static map of TLD -> WHOIS host, and registries move. Every
|
|
6
|
+
* Identity Digital TLD (.digital, .email, .life, .today, .zone, ~290 more)
|
|
7
|
+
* still points at the retired whois.donuts.co in most of those maps, and that
|
|
8
|
+
* host now answers every query with the literal text "TLD is not supported."
|
|
9
|
+
* instead of a record. RDAP (RFC 9083) is the ICANN-mandated replacement and
|
|
10
|
+
* is discovered from the IANA bootstrap registry (RFC 9224), so it stays
|
|
11
|
+
* correct as registries move.
|
|
12
|
+
*
|
|
13
|
+
* Plenty of ccTLDs (.io, .co, .de, .ch, .jp, ...) publish no RDAP service at
|
|
14
|
+
* all, which is why Auto - RDAP when the TLD has one, WHOIS otherwise - is
|
|
15
|
+
* the default rather than RDAP.
|
|
16
|
+
*/
|
|
17
|
+
enum DomainLookupMethod {
|
|
18
|
+
Auto = "Auto",
|
|
19
|
+
RDAP = "RDAP",
|
|
20
|
+
WHOIS = "WHOIS",
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default DomainLookupMethod;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import ProbeAttempt from "../../Probe/ProbeAttempt";
|
|
2
|
+
import DomainLookupMethod from "./DomainLookupMethod";
|
|
2
3
|
|
|
3
4
|
export default interface DomainMonitorResponse {
|
|
4
5
|
isOnline: boolean;
|
|
@@ -16,4 +17,10 @@ export default interface DomainMonitorResponse {
|
|
|
16
17
|
isTimeout?: boolean | undefined;
|
|
17
18
|
probeAttempts?: Array<ProbeAttempt> | undefined;
|
|
18
19
|
totalAttempts?: number | undefined;
|
|
20
|
+
/*
|
|
21
|
+
* Which protocol actually produced this record. With the Auto lookup
|
|
22
|
+
* method the answer varies by TLD, so it is worth surfacing rather than
|
|
23
|
+
* leaving the operator to guess.
|
|
24
|
+
*/
|
|
25
|
+
lookupMethod?: DomainLookupMethod | undefined;
|
|
19
26
|
}
|
|
@@ -505,6 +505,12 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
505
505
|
monitorStatusId: arg.monitorStatusId,
|
|
506
506
|
filterCondition: FilterCondition.All,
|
|
507
507
|
filters: [
|
|
508
|
+
// The registration lookup itself has to have worked.
|
|
509
|
+
{
|
|
510
|
+
checkOn: CheckOn.IsOnline,
|
|
511
|
+
filterType: FilterType.True,
|
|
512
|
+
value: undefined,
|
|
513
|
+
},
|
|
508
514
|
{
|
|
509
515
|
checkOn: CheckOn.DomainIsExpired,
|
|
510
516
|
filterType: FilterType.False,
|
|
@@ -517,7 +523,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
517
523
|
changeMonitorStatus: true,
|
|
518
524
|
createIncidents: false,
|
|
519
525
|
name: `Check if ${arg.monitorName} is not expired`,
|
|
520
|
-
description: `This criteria checks if the ${arg.monitorName} domain registration is not expired`,
|
|
526
|
+
description: `This criteria checks if the ${arg.monitorName} domain registration was read successfully and is not expired`,
|
|
521
527
|
};
|
|
522
528
|
|
|
523
529
|
return monitorCriteriaInstance;
|
|
@@ -774,11 +780,22 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
774
780
|
filterType: FilterType.True,
|
|
775
781
|
value: undefined,
|
|
776
782
|
},
|
|
783
|
+
/*
|
|
784
|
+
* Without this, a lookup that returns no registration data at all
|
|
785
|
+
* leaves every Domain* filter unable to decide, and the monitor
|
|
786
|
+
* keeps whatever status it had - so a domain whose registration
|
|
787
|
+
* data cannot be read looks exactly like a healthy one.
|
|
788
|
+
*/
|
|
789
|
+
{
|
|
790
|
+
checkOn: CheckOn.IsOnline,
|
|
791
|
+
filterType: FilterType.False,
|
|
792
|
+
value: undefined,
|
|
793
|
+
},
|
|
777
794
|
],
|
|
778
795
|
incidents: [
|
|
779
796
|
{
|
|
780
|
-
title: `${arg.monitorName} domain
|
|
781
|
-
description: `${arg.monitorName} domain registration has expired.`,
|
|
797
|
+
title: `${arg.monitorName} domain check failed`,
|
|
798
|
+
description: `${arg.monitorName} domain registration has expired, or its registration data could not be retrieved.`,
|
|
782
799
|
incidentSeverityId: arg.incidentSeverityId,
|
|
783
800
|
autoResolveIncident: true,
|
|
784
801
|
id: ObjectID.generate().toString(),
|
|
@@ -790,16 +807,16 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
790
807
|
createAlerts: false,
|
|
791
808
|
alerts: [
|
|
792
809
|
{
|
|
793
|
-
title: `${arg.monitorName} domain
|
|
794
|
-
description: `${arg.monitorName} domain registration has expired.`,
|
|
810
|
+
title: `${arg.monitorName} domain check failed`,
|
|
811
|
+
description: `${arg.monitorName} domain registration has expired, or its registration data could not be retrieved.`,
|
|
795
812
|
alertSeverityId: arg.alertSeverityId,
|
|
796
813
|
autoResolveAlert: true,
|
|
797
814
|
id: ObjectID.generate().toString(),
|
|
798
815
|
onCallPolicyIds: [],
|
|
799
816
|
},
|
|
800
817
|
],
|
|
801
|
-
name: `Check if ${arg.monitorName} domain
|
|
802
|
-
description: `This criteria checks if the ${arg.monitorName} domain registration has expired`,
|
|
818
|
+
name: `Check if ${arg.monitorName} domain check failed`,
|
|
819
|
+
description: `This criteria checks if the ${arg.monitorName} domain registration has expired or could not be read`,
|
|
803
820
|
};
|
|
804
821
|
}
|
|
805
822
|
|
|
@@ -24,6 +24,14 @@ enum MonitorMetricType {
|
|
|
24
24
|
TimeToFirstByte = "oneuptime.monitor.http.time.to.first.byte",
|
|
25
25
|
DownloadTime = "oneuptime.monitor.http.download.time",
|
|
26
26
|
|
|
27
|
+
/*
|
|
28
|
+
* Port-monitor connection phases. These intentionally use a Port-specific
|
|
29
|
+
* namespace instead of the HTTP phase metrics above: Port TCP timing can
|
|
30
|
+
* include automatic address-family fallback and has no HTTP request phase.
|
|
31
|
+
*/
|
|
32
|
+
PortDnsLookupTime = "oneuptime.monitor.port.dns.lookup.time",
|
|
33
|
+
PortTcpConnectTime = "oneuptime.monitor.port.tcp.connect.time",
|
|
34
|
+
|
|
27
35
|
/*
|
|
28
36
|
* Per-interface SNMP metrics. Emitted when interface monitoring is enabled
|
|
29
37
|
* on an SNMP monitor; one series per interface (interfaceName attribute).
|
|
@@ -1144,8 +1144,17 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
1144
1144
|
dnsMonitor: json["dnsMonitor"]
|
|
1145
1145
|
? (json["dnsMonitor"] as JSONObject)
|
|
1146
1146
|
: undefined,
|
|
1147
|
+
/*
|
|
1148
|
+
* Normalized rather than passed through raw: steps saved before the
|
|
1149
|
+
* lookupMethod option existed carry no such key, and the probe would
|
|
1150
|
+
* otherwise receive a config that does not satisfy its own type.
|
|
1151
|
+
*/
|
|
1147
1152
|
domainMonitor: json["domainMonitor"]
|
|
1148
|
-
? (
|
|
1153
|
+
? MonitorStepDomainMonitorUtil.toJSON(
|
|
1154
|
+
MonitorStepDomainMonitorUtil.fromJSON(
|
|
1155
|
+
json["domainMonitor"] as JSONObject,
|
|
1156
|
+
),
|
|
1157
|
+
)
|
|
1149
1158
|
: undefined,
|
|
1150
1159
|
dnssecMonitor: json["dnssecMonitor"]
|
|
1151
1160
|
? (json["dnssecMonitor"] as JSONObject)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { JSONObject } from "../JSON";
|
|
2
|
+
import DomainLookupMethod from "./DomainMonitor/DomainLookupMethod";
|
|
2
3
|
|
|
3
4
|
export default interface MonitorStepDomainMonitor {
|
|
4
5
|
domainName: string;
|
|
6
|
+
lookupMethod: DomainLookupMethod;
|
|
5
7
|
timeout: number;
|
|
6
8
|
retries: number;
|
|
7
9
|
}
|
|
@@ -10,6 +12,7 @@ export class MonitorStepDomainMonitorUtil {
|
|
|
10
12
|
public static getDefault(): MonitorStepDomainMonitor {
|
|
11
13
|
return {
|
|
12
14
|
domainName: "",
|
|
15
|
+
lookupMethod: DomainLookupMethod.Auto,
|
|
13
16
|
timeout: 10000,
|
|
14
17
|
retries: 3,
|
|
15
18
|
};
|
|
@@ -18,6 +21,13 @@ export class MonitorStepDomainMonitorUtil {
|
|
|
18
21
|
public static fromJSON(json: JSONObject): MonitorStepDomainMonitor {
|
|
19
22
|
return {
|
|
20
23
|
domainName: (json["domainName"] as string) || "",
|
|
24
|
+
/*
|
|
25
|
+
* Monitors saved before RDAP support existed carry no lookupMethod at
|
|
26
|
+
* all, and Auto is the behaviour they should get.
|
|
27
|
+
*/
|
|
28
|
+
lookupMethod: MonitorStepDomainMonitorUtil.parseLookupMethod(
|
|
29
|
+
json["lookupMethod"],
|
|
30
|
+
),
|
|
21
31
|
timeout: (json["timeout"] as number) || 10000,
|
|
22
32
|
retries: (json["retries"] as number) || 3,
|
|
23
33
|
};
|
|
@@ -26,8 +36,19 @@ export class MonitorStepDomainMonitorUtil {
|
|
|
26
36
|
public static toJSON(monitor: MonitorStepDomainMonitor): JSONObject {
|
|
27
37
|
return {
|
|
28
38
|
domainName: monitor.domainName,
|
|
39
|
+
lookupMethod: monitor.lookupMethod,
|
|
29
40
|
timeout: monitor.timeout,
|
|
30
41
|
retries: monitor.retries,
|
|
31
42
|
};
|
|
32
43
|
}
|
|
44
|
+
|
|
45
|
+
public static parseLookupMethod(value: unknown): DomainLookupMethod {
|
|
46
|
+
const values: Array<string> = Object.values(DomainLookupMethod);
|
|
47
|
+
|
|
48
|
+
if (typeof value === "string" && values.includes(value)) {
|
|
49
|
+
return value as DomainLookupMethod;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return DomainLookupMethod.Auto;
|
|
53
|
+
}
|
|
33
54
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Per-phase breakdown of a Port monitor connection, in milliseconds. DNS is
|
|
3
|
+
* absent when the destination is already an IP address. Fields are optional
|
|
4
|
+
* so partial timing evidence can be represented when a connection fails.
|
|
5
|
+
*/
|
|
6
|
+
export default interface PortMonitorTimings {
|
|
7
|
+
dnsLookupInMs?: number | undefined;
|
|
8
|
+
tcpConnectInMs?: number | undefined;
|
|
9
|
+
totalConnectionInMs?: number | undefined;
|
|
10
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The password rules, in one place, so the form that collects a password and
|
|
3
|
+
* the endpoint that stores it cannot disagree about what is acceptable.
|
|
4
|
+
*
|
|
5
|
+
* Every password form in OneUptime has historically carried its own inline
|
|
6
|
+
* `minLength: 6`, and no server-side check existed at all -- the browser was
|
|
7
|
+
* the only thing enforcing it. That is fine right up until a password arrives
|
|
8
|
+
* from somewhere that is not the browser, which is exactly what an admin API
|
|
9
|
+
* is. These constants and `getPasswordValidationError` live in Common/Types
|
|
10
|
+
* (not Common/Server) precisely so the browser can import them too.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/*
|
|
14
|
+
* Six is the number every existing OneUptime password form already enforces
|
|
15
|
+
* (Accounts sign-up, Accounts reset-password, the user profile, the status
|
|
16
|
+
* page). It is stated here rather than raised so that adopting this module
|
|
17
|
+
* cannot lock out anyone whose current password was accepted under the old
|
|
18
|
+
* inline rule.
|
|
19
|
+
*/
|
|
20
|
+
export const MINIMUM_PASSWORD_LENGTH: number = 6;
|
|
21
|
+
|
|
22
|
+
/*
|
|
23
|
+
* An upper bound, so a caller cannot hand the hasher an arbitrarily large
|
|
24
|
+
* string. It is not a security property -- scrypt's cost is set by N/r/p, not
|
|
25
|
+
* by input length -- it just keeps a pathological request from becoming work.
|
|
26
|
+
* 100 is far above any password a person types and far below anything that
|
|
27
|
+
* matters.
|
|
28
|
+
*/
|
|
29
|
+
export const MAXIMUM_PASSWORD_LENGTH: number = 100;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Why this password is unacceptable, or null if it is fine.
|
|
33
|
+
*
|
|
34
|
+
* Returns a message rather than throwing so the same function can back a
|
|
35
|
+
* browser-side form validator and a server-side guard -- the server wraps the
|
|
36
|
+
* message in the exception type it wants to return.
|
|
37
|
+
*
|
|
38
|
+
* Length is measured on the raw value, NOT a trimmed one: a password is a
|
|
39
|
+
* secret the user typed, and silently trimming it would store something other
|
|
40
|
+
* than what they entered and then fail to match it at login. A value that is
|
|
41
|
+
* *only* whitespace is rejected outright, though -- that is a mistake, not a
|
|
42
|
+
* password.
|
|
43
|
+
*/
|
|
44
|
+
export function getPasswordValidationError(
|
|
45
|
+
password: string | undefined | null,
|
|
46
|
+
): string | null {
|
|
47
|
+
if (password === undefined || password === null || password === "") {
|
|
48
|
+
return "Password is required.";
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (password.trim().length === 0) {
|
|
52
|
+
return "Password cannot be blank.";
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (password.length < MINIMUM_PASSWORD_LENGTH) {
|
|
56
|
+
return `Password cannot be less than ${MINIMUM_PASSWORD_LENGTH} characters.`;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (password.length > MAXIMUM_PASSWORD_LENGTH) {
|
|
60
|
+
return `Password cannot be more than ${MAXIMUM_PASSWORD_LENGTH} characters.`;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return null;
|
|
64
|
+
}
|