@oneuptime/common 11.7.2 → 11.7.4
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/AnalyticsModels/KubernetesCostAllocation.ts +103 -0
- package/Models/DatabaseModels/AlertEpisodeStateTimeline.ts +1 -0
- package/Models/DatabaseModels/AlertStateTimeline.ts +1 -0
- package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
- package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
- package/Models/DatabaseModels/Index.ts +5 -0
- package/Models/DatabaseModels/LogDropFilter.ts +89 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +13 -3
- package/Models/DatabaseModels/RecommendationDismissal.ts +463 -0
- package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
- package/Models/DatabaseModels/StatusPageGroup.ts +95 -0
- package/Models/DatabaseModels/TableView.ts +40 -0
- package/Models/DatabaseModels/TraceDropFilter.ts +89 -0
- package/Models/DatabaseModels/WorkflowVariable.ts +5 -1
- package/Server/API/AlertAPI.ts +32 -17
- package/Server/API/BaseAPI.ts +31 -2
- package/Server/API/BaseAnalyticsAPI.ts +36 -2
- package/Server/API/CommonAPI.ts +57 -0
- package/Server/API/IncidentAPI.ts +60 -33
- package/Server/API/IncidentEpisodeAPI.ts +31 -16
- package/Server/API/MonitorAPI.ts +30 -0
- package/Server/API/MonitorTemplateAPI.ts +8 -0
- package/Server/API/ProbeAPI.ts +196 -15
- package/Server/API/ProjectAPI.ts +79 -1
- package/Server/API/ScheduledMaintenanceAPI.ts +33 -18
- package/Server/API/StatusPageAPI.ts +74 -37
- package/Server/API/WorkspaceNotificationRuleAPI.ts +34 -4
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.ts +13 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.ts +527 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.ts +55 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.ts +53 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Services/AlertEpisodeService.ts +47 -0
- package/Server/Services/AlertService.ts +125 -0
- package/Server/Services/BillingService.ts +98 -0
- package/Server/Services/DatabaseService.ts +184 -20
- package/Server/Services/IncidentEpisodeService.ts +47 -0
- package/Server/Services/IncidentService.ts +123 -0
- package/Server/Services/IncidentTemplateService.ts +123 -1
- package/Server/Services/Index.ts +2 -0
- package/Server/Services/LogDropFilterService.ts +133 -0
- package/Server/Services/MonitorProbeService.ts +94 -4
- package/Server/Services/MonitorService.ts +48 -43
- package/Server/Services/NetworkDeviceDiscoveryScanService.ts +70 -0
- package/Server/Services/ProbeService.ts +66 -0
- package/Server/Services/ProjectService.ts +131 -7
- package/Server/Services/RecommendationDismissalService.ts +52 -0
- package/Server/Services/RunbookAgentJobService.ts +68 -7
- package/Server/Services/ScheduledMaintenanceService.ts +103 -0
- package/Server/Services/ScheduledMaintenanceTemplateService.ts +90 -0
- package/Server/Services/StatusPageGroupService.ts +186 -0
- package/Server/Services/TraceDropFilterService.ts +133 -0
- package/Server/Types/Workflow/Components/API/Delete.ts +12 -0
- package/Server/Types/Workflow/Components/API/Get.ts +12 -0
- package/Server/Types/Workflow/Components/API/Patch.ts +12 -0
- package/Server/Types/Workflow/Components/API/Post.ts +12 -0
- package/Server/Types/Workflow/Components/API/Put.ts +13 -0
- package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +212 -0
- package/Server/Utils/DropFilterValidation.ts +127 -0
- package/Server/Utils/Errors.ts +5 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +28 -1
- package/Server/Utils/Monitor/MonitorIncident.ts +31 -2
- package/Server/Utils/Telemetry/AppMetrics.ts +31 -0
- package/Tests/Models/AnalyticsModels/KubernetesCostAllocation.test.ts +16 -0
- package/Tests/Models/DatabaseModels/MonitorProbeColumnAccessControl.test.ts +196 -0
- package/Tests/Models/RecommendationDismissalModel.test.ts +269 -0
- package/Tests/Server/API/BaseAPIUpdatePayloadValidation.test.ts +320 -0
- package/Tests/Server/API/BaseAnalyticsAPIUpdatePayloadValidation.test.ts +293 -0
- package/Tests/Server/API/CommonAPIAuthGuard.test.ts +164 -0
- package/Tests/Server/API/ProbeAPI.test.ts +422 -53
- package/Tests/Server/API/ProjectAPI.test.ts +180 -0
- package/Tests/Server/API/ProjectAPIExtendTrialBillingDisabled.test.ts +138 -0
- package/Tests/Server/API/ProjectScopedCustomRouteAuth.test.ts +458 -0
- package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +359 -0
- package/Tests/Server/Infrastructure/ProcessSignalDelivery.test.ts +427 -0
- package/Tests/Server/Services/BillingServiceExtendTrial.test.ts +439 -0
- package/Tests/Server/Services/CrossProjectReferenceWriteGuard.test.ts +810 -0
- package/Tests/Server/Services/DatabaseServiceAtomicAddToColumns.test.ts +269 -0
- package/Tests/Server/Services/DatabaseServiceEmptyUpdate.test.ts +277 -0
- package/Tests/Server/Services/DatabaseServiceSortColumnSelect.test.ts +201 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +81 -23
- package/Tests/Server/Services/DropFilterSaveValidation.test.ts +398 -0
- package/Tests/Server/Services/MonitorProbeDeleteHooks.test.ts +280 -0
- package/Tests/Server/Services/MonitorProbeServiceProbeTenancy.test.ts +304 -0
- package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +262 -0
- package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +614 -0
- package/Tests/Server/Services/RecommendationDismissalService.test.ts +306 -0
- package/Tests/Server/Services/RepairCrossProjectIncidentReferencesMigration.test.ts +528 -0
- package/Tests/Server/Services/StatusPageGroupNesting.test.ts +395 -0
- package/Tests/Server/TestingUtils/Services/BillingServiceHelper.ts +26 -21
- package/Tests/Server/Types/Database/Permissions/WorkflowVariableColumnPermission.test.ts +227 -0
- package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +285 -0
- package/Tests/Server/Utils/Database/ProjectScopedReferenceValidator.test.ts +463 -0
- package/Tests/Server/Utils/DropFilterValidation.test.ts +269 -0
- package/Tests/Server/Utils/Telemetry/SpanUtil.test.ts +94 -0
- package/Tests/Types/DateUserTimezone.test.ts +52 -0
- package/Tests/Types/JSONFunctions.test.ts +103 -1
- package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +177 -9
- package/Tests/Types/Monitor/MonitorStepDnsMonitor.test.ts +105 -0
- package/Tests/Types/Monitor/MonitorStepDnssecMonitor.test.ts +131 -0
- package/Tests/Types/Monitor/MonitorStepDomainMonitor.test.ts +60 -0
- package/Tests/Types/Monitor/MonitorStepExternalStatusPageMonitor.test.ts +82 -0
- package/Tests/Types/Monitor/MonitorStepInfrastructureMonitors.test.ts +268 -0
- package/Tests/Types/Monitor/MonitorStepMetricMonitor.test.ts +386 -0
- package/Tests/Types/Monitor/MonitorStepProfileMonitor.test.ts +185 -0
- package/Tests/Types/Monitor/MonitorStepSnmpMonitor.test.ts +156 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +371 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +901 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +607 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +754 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +960 -0
- package/Tests/Types/RollingTime/RollingTimeUtil.test.ts +186 -0
- package/Tests/Types/Runbook/RunbookStepTimeout.test.ts +410 -0
- package/Tests/Types/Telemetry/DropFilterSampling.test.ts +241 -0
- package/Tests/Types/Workspace/NotificationRuleConditionUtil.test.ts +353 -0
- package/Tests/Types/Workspace/NotificationRuleUtil.test.ts +566 -0
- package/Tests/UI/Components/CodeEditor.test.tsx +174 -0
- package/Tests/UI/Components/ErrorBoundary.test.tsx +555 -24
- package/Tests/UI/Components/InfoCard.test.tsx +358 -0
- package/Tests/UI/Components/LogTimeRangePicker.test.tsx +138 -0
- package/Tests/UI/Components/Modal.test.tsx +43 -5
- package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +679 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableSearchLabels.test.tsx +397 -0
- package/Tests/UI/Components/ModelTable/ColumnCustomizationModal.test.tsx +999 -0
- package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +1678 -0
- package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1094 -0
- package/Tests/UI/Components/Runbook/StepTimeoutInput.test.tsx +386 -0
- package/Tests/UI/Components/StatusPage/ResourceGroupSection.test.tsx +671 -0
- package/Tests/UI/Components/TelemetryTimeRangePicker.test.tsx +404 -0
- package/Tests/UI/Utils/DropdownAlignment.test.ts +306 -0
- package/Tests/UI/Utils/TableFilterUrlState.test.ts +292 -0
- package/Tests/Utils/Monitor/MonitorSummaryProbeUtil.test.ts +263 -0
- package/Tests/Utils/NetworkDiscovery/ScanTargetUtil.test.ts +583 -0
- package/Tests/Utils/StatusPage/GroupNestingLayout.test.ts +1072 -0
- package/Tests/Utils/StatusPage/GroupTree.test.ts +583 -0
- package/Tests/Utils/StatusPage/ResourceUptime.test.ts +411 -0
- package/Tests/Utils/UserPreferences.test.ts +563 -0
- package/Types/Date.ts +15 -6
- package/Types/JSONFunctions.ts +7 -2
- package/Types/Kubernetes/KubernetesCostIngest.ts +37 -1
- package/Types/Monitor/KubernetesAlertTemplates.ts +205 -0
- package/Types/Monitor/MonitorStep.ts +10 -1
- package/Types/Monitor/MonitorStepMetricMonitor.ts +46 -1
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +413 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +168 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +175 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +743 -0
- package/Types/Permission.ts +45 -0
- package/Types/Recommendation/RecommendationType.ts +20 -0
- package/Types/Runbook/RunbookExecutionDeadline.ts +129 -0
- package/Types/Runbook/RunbookStepTimeout.ts +202 -0
- package/Types/Telemetry/DropFilterSampling.ts +92 -0
- package/UI/Components/AI/GenerateFromAIModal.tsx +0 -2
- package/UI/Components/Accordion/Accordion.tsx +10 -2
- package/UI/Components/BulkUpdate/BulkLabelActions.tsx +0 -1
- package/UI/Components/CodeEditor/CodeEditor.tsx +34 -20
- package/UI/Components/Date/RangeStartAndEndDateView.tsx +0 -1
- package/UI/Components/EditionLabel/EditionLabel.tsx +1 -27
- package/UI/Components/Error/PageError.tsx +0 -4
- package/UI/Components/ErrorBoundary.tsx +252 -15
- package/UI/Components/InfoCard/InfoCard.tsx +58 -1
- package/UI/Components/LogsViewer/components/LogTimeRangePicker.tsx +34 -1
- package/UI/Components/MasterPage/MasterPage.tsx +65 -0
- package/UI/Components/Modal/Modal.tsx +16 -60
- package/UI/Components/ModelFormModal/ModelFormModal.tsx +0 -8
- package/UI/Components/ModelTable/BaseModelTable.tsx +503 -71
- package/UI/Components/ModelTable/Column.ts +17 -0
- package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +523 -0
- package/UI/Components/ModelTable/ColumnPreference.ts +482 -0
- package/UI/Components/ModelTable/CustomFieldColumns.tsx +326 -0
- package/UI/Components/ModelTable/TableView.tsx +24 -2
- package/UI/Components/ModelTable/useCustomFieldColumns.ts +150 -0
- package/UI/Components/Runbook/StepTimeoutInput.tsx +173 -0
- package/UI/Components/SideMenu/SideMenu.tsx +24 -4
- package/UI/Components/StatusPage/ResourceGroupSection.tsx +231 -0
- package/UI/Components/Table/Table.tsx +14 -1
- package/UI/Components/Table/TableRow.tsx +180 -175
- package/UI/Components/Table/Types/Column.ts +2 -0
- package/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.tsx +34 -1
- package/UI/Utils/DropdownAlignment.ts +162 -0
- package/UI/Utils/TableFilterUrlState.ts +59 -20
- package/Utils/API.ts +106 -2
- package/Utils/Monitor/MonitorSummaryProbeUtil.ts +130 -0
- package/Utils/NetworkDiscovery/ScanTargetUtil.ts +434 -0
- package/Utils/StatusPage/GroupNestingLayout.ts +343 -0
- package/Utils/StatusPage/GroupTree.ts +307 -0
- package/Utils/StatusPage/ResourceUptime.ts +90 -17
- package/Utils/UserPreferences.ts +53 -0
- package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js +86 -0
- package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js +1 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +1 -0
- package/build/dist/Models/DatabaseModels/AlertStateTimeline.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/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/LogDropFilter.js +91 -0
- package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +14 -4
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RecommendationDismissal.js +484 -0
- package/build/dist/Models/DatabaseModels/RecommendationDismissal.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageGroup.js +94 -0
- package/build/dist/Models/DatabaseModels/StatusPageGroup.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TableView.js +40 -0
- package/build/dist/Models/DatabaseModels/TableView.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TraceDropFilter.js +91 -0
- package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js +5 -1
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
- package/build/dist/Server/API/AlertAPI.js +22 -13
- package/build/dist/Server/API/AlertAPI.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +22 -1
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/BaseAnalyticsAPI.js +24 -1
- package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
- package/build/dist/Server/API/CommonAPI.js +42 -0
- package/build/dist/Server/API/CommonAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentAPI.js +43 -26
- package/build/dist/Server/API/IncidentAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js +21 -12
- package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
- package/build/dist/Server/API/MonitorAPI.js +23 -0
- package/build/dist/Server/API/MonitorAPI.js.map +1 -1
- package/build/dist/Server/API/MonitorTemplateAPI.js +4 -0
- package/build/dist/Server/API/MonitorTemplateAPI.js.map +1 -1
- package/build/dist/Server/API/ProbeAPI.js +131 -15
- package/build/dist/Server/API/ProbeAPI.js.map +1 -1
- package/build/dist/Server/API/ProjectAPI.js +62 -3
- package/build/dist/Server/API/ProjectAPI.js.map +1 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js +23 -14
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +61 -33
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/WorkspaceNotificationRuleAPI.js +26 -2
- package/build/dist/Server/API/WorkspaceNotificationRuleAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.js +397 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.js +30 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.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/Services/AlertEpisodeService.js +39 -0
- package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +95 -0
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/BillingService.js +71 -0
- package/build/dist/Server/Services/BillingService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +140 -17
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeService.js +39 -0
- package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +100 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentTemplateService.js +97 -0
- package/build/dist/Server/Services/IncidentTemplateService.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/LogDropFilterService.js +93 -0
- package/build/dist/Server/Services/LogDropFilterService.js.map +1 -1
- package/build/dist/Server/Services/MonitorProbeService.js +73 -5
- package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +34 -39
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +71 -0
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
- package/build/dist/Server/Services/ProbeService.js +64 -0
- package/build/dist/Server/Services/ProbeService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +103 -7
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/RecommendationDismissalService.js +50 -0
- package/build/dist/Server/Services/RecommendationDismissalService.js.map +1 -0
- package/build/dist/Server/Services/RunbookAgentJobService.js +63 -5
- package/build/dist/Server/Services/RunbookAgentJobService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +83 -0
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js +65 -0
- package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageGroupService.js +136 -0
- package/build/dist/Server/Services/StatusPageGroupService.js.map +1 -1
- package/build/dist/Server/Services/TraceDropFilterService.js +93 -0
- package/build/dist/Server/Services/TraceDropFilterService.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js +11 -0
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Get.js +11 -0
- package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js +11 -0
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js +11 -0
- package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Put.js +12 -0
- package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
- package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +132 -0
- package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -0
- package/build/dist/Server/Utils/DropFilterValidation.js +80 -0
- package/build/dist/Server/Utils/DropFilterValidation.js.map +1 -0
- package/build/dist/Server/Utils/Errors.js +3 -0
- package/build/dist/Server/Utils/Errors.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +30 -12
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +38 -18
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/AppMetrics.js +26 -0
- package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
- package/build/dist/Types/Date.js +14 -4
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/JSONFunctions.js +8 -3
- package/build/dist/Types/JSONFunctions.js.map +1 -1
- package/build/dist/Types/Kubernetes/KubernetesCostIngest.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +192 -0
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.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/MonitorStepMetricMonitor.js +32 -1
- package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +294 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +110 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +58 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +451 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -0
- package/build/dist/Types/Permission.js +40 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Recommendation/RecommendationType.js +21 -0
- package/build/dist/Types/Recommendation/RecommendationType.js.map +1 -0
- package/build/dist/Types/Runbook/RunbookExecutionDeadline.js +93 -0
- package/build/dist/Types/Runbook/RunbookExecutionDeadline.js.map +1 -0
- package/build/dist/Types/Runbook/RunbookStepTimeout.js +142 -0
- package/build/dist/Types/Runbook/RunbookStepTimeout.js.map +1 -0
- package/build/dist/Types/Telemetry/DropFilterSampling.js +75 -0
- package/build/dist/Types/Telemetry/DropFilterSampling.js.map +1 -0
- package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -2
- package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
- package/build/dist/UI/Components/Accordion/Accordion.js +9 -2
- package/build/dist/UI/Components/Accordion/Accordion.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js +27 -14
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
- package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js +1 -1
- package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +2 -20
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/Error/PageError.js +1 -3
- package/build/dist/UI/Components/Error/PageError.js.map +1 -1
- package/build/dist/UI/Components/ErrorBoundary.js +145 -11
- package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
- package/build/dist/UI/Components/InfoCard/InfoCard.js +28 -1
- package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js +13 -2
- package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js.map +1 -1
- package/build/dist/UI/Components/MasterPage/MasterPage.js +50 -1
- package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +4 -32
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +308 -40
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +230 -0
- package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -0
- package/build/dist/UI/Components/ModelTable/ColumnPreference.js +258 -0
- package/build/dist/UI/Components/ModelTable/ColumnPreference.js.map +1 -0
- package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +168 -0
- package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -0
- package/build/dist/UI/Components/ModelTable/TableView.js +13 -2
- package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +84 -0
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -0
- package/build/dist/UI/Components/Runbook/StepTimeoutInput.js +101 -0
- package/build/dist/UI/Components/Runbook/StepTimeoutInput.js.map +1 -0
- package/build/dist/UI/Components/SideMenu/SideMenu.js +15 -5
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js +73 -0
- package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js.map +1 -0
- package/build/dist/UI/Components/Table/Table.js +15 -2
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Components/Table/TableRow.js +11 -6
- package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js +13 -2
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js.map +1 -1
- package/build/dist/UI/Utils/DropdownAlignment.js +98 -0
- package/build/dist/UI/Utils/DropdownAlignment.js.map +1 -0
- package/build/dist/UI/Utils/TableFilterUrlState.js +48 -15
- package/build/dist/UI/Utils/TableFilterUrlState.js.map +1 -1
- package/build/dist/Utils/API.js +39 -2
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorSummaryProbeUtil.js +97 -0
- package/build/dist/Utils/Monitor/MonitorSummaryProbeUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js +330 -0
- package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js.map +1 -0
- package/build/dist/Utils/StatusPage/GroupNestingLayout.js +280 -0
- package/build/dist/Utils/StatusPage/GroupNestingLayout.js.map +1 -0
- package/build/dist/Utils/StatusPage/GroupTree.js +214 -0
- package/build/dist/Utils/StatusPage/GroupTree.js.map +1 -0
- package/build/dist/Utils/StatusPage/ResourceUptime.js +60 -16
- package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
- package/build/dist/Utils/UserPreferences.js +33 -0
- package/build/dist/Utils/UserPreferences.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,40 +2,156 @@ import UserMiddleware from "../Middleware/UserAuthorization";
|
|
|
2
2
|
import ProbeService from "../Services/ProbeService";
|
|
3
3
|
import Response from "../Utils/Response";
|
|
4
4
|
import BaseAPI from "./BaseAPI";
|
|
5
|
-
import
|
|
5
|
+
import MultiSearch from "../../Types/BaseDatabase/MultiSearch";
|
|
6
|
+
import { DEFAULT_LIMIT, LIMIT_PER_PROJECT, } from "../../Types/Database/LimitMax";
|
|
7
|
+
import BadDataException from "../../Types/Exception/BadDataException";
|
|
8
|
+
import BadRequestException from "../../Types/Exception/BadRequestException";
|
|
9
|
+
import JSONFunctions from "../../Types/JSONFunctions";
|
|
6
10
|
import PositiveNumber from "../../Types/PositiveNumber";
|
|
7
11
|
import Probe from "../../Models/DatabaseModels/Probe";
|
|
12
|
+
// What a caller that asks for no fields in particular gets back.
|
|
13
|
+
const DEFAULT_GLOBAL_PROBE_SELECT = {
|
|
14
|
+
name: true,
|
|
15
|
+
description: true,
|
|
16
|
+
lastAlive: true,
|
|
17
|
+
iconFileId: true,
|
|
18
|
+
connectionStatus: true,
|
|
19
|
+
// The monitor create form pre-selects the auto-enabled probes.
|
|
20
|
+
shouldAutoEnableProbeOnNewMonitors: true,
|
|
21
|
+
};
|
|
22
|
+
/*
|
|
23
|
+
* Global probes are not project rows, so this endpoint has to read them as
|
|
24
|
+
* root - which means none of the usual per-column permission checks run.
|
|
25
|
+
* Every field a caller may select, filter or sort on is therefore listed
|
|
26
|
+
* here, and nothing else is reachable: `key` in particular is a probe's
|
|
27
|
+
* shared secret, and a root-privileged query on it would be an oracle for
|
|
28
|
+
* reading it back one character at a time.
|
|
29
|
+
*/
|
|
30
|
+
const GLOBAL_PROBE_FIELDS = [
|
|
31
|
+
...Object.keys(DEFAULT_GLOBAL_PROBE_SELECT),
|
|
32
|
+
"_id",
|
|
33
|
+
/*
|
|
34
|
+
* Readable, but not something a caller can steer: the query below pins it
|
|
35
|
+
* to true whatever the caller sent.
|
|
36
|
+
*/
|
|
37
|
+
"isGlobalProbe",
|
|
38
|
+
];
|
|
8
39
|
export default class ProbeAPI extends BaseAPI {
|
|
9
40
|
constructor() {
|
|
10
41
|
var _a;
|
|
11
42
|
super(Probe, ProbeService);
|
|
12
43
|
this.router.post(`${(_a = new this.entityType().getCrudApiPath()) === null || _a === void 0 ? void 0 : _a.toString()}/global-probes`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
13
44
|
try {
|
|
45
|
+
const body = req.body || {};
|
|
46
|
+
const skip = new PositiveNumber(ProbeAPI.getPaginationValue(req, "skip", 0));
|
|
47
|
+
const limit = new PositiveNumber(ProbeAPI.getPaginationValue(req, "limit", DEFAULT_LIMIT));
|
|
48
|
+
if (limit.toNumber() > LIMIT_PER_PROJECT) {
|
|
49
|
+
throw new BadRequestException("Limit should be less than " + LIMIT_PER_PROJECT);
|
|
50
|
+
}
|
|
51
|
+
if (skip.toNumber() < 0) {
|
|
52
|
+
throw new BadRequestException("Skip should be greater than or equal to 0");
|
|
53
|
+
}
|
|
54
|
+
if (limit.toNumber() <= 0) {
|
|
55
|
+
throw new BadRequestException("Limit should be greater than 0");
|
|
56
|
+
}
|
|
57
|
+
const query = Object.assign(Object.assign({}, ProbeAPI.getQuery(body["query"])), {
|
|
58
|
+
/*
|
|
59
|
+
* Last, so a caller cannot widen the read past the global probes
|
|
60
|
+
* by sending isGlobalProbe themselves.
|
|
61
|
+
*/
|
|
62
|
+
isGlobalProbe: true });
|
|
63
|
+
const select = ProbeAPI.getSelect(body["select"]);
|
|
64
|
+
const sort = ProbeAPI.getSort(body["sort"]);
|
|
14
65
|
const probes = await ProbeService.findBy({
|
|
15
|
-
query
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
description: true,
|
|
21
|
-
lastAlive: true,
|
|
22
|
-
iconFileId: true,
|
|
23
|
-
connectionStatus: true,
|
|
24
|
-
// The monitor create form pre-selects the auto-enabled probes.
|
|
25
|
-
shouldAutoEnableProbeOnNewMonitors: true,
|
|
66
|
+
query,
|
|
67
|
+
select,
|
|
68
|
+
sort,
|
|
69
|
+
props: {
|
|
70
|
+
isRoot: true,
|
|
26
71
|
},
|
|
72
|
+
skip,
|
|
73
|
+
limit,
|
|
74
|
+
});
|
|
75
|
+
const count = await ProbeService.countBy({
|
|
76
|
+
query,
|
|
27
77
|
props: {
|
|
28
78
|
isRoot: true,
|
|
29
79
|
},
|
|
30
|
-
skip: 0,
|
|
31
|
-
limit: LIMIT_MAX,
|
|
32
80
|
});
|
|
33
|
-
return Response.sendEntityArrayResponse(req, res, probes,
|
|
81
|
+
return Response.sendEntityArrayResponse(req, res, probes, count, Probe);
|
|
34
82
|
}
|
|
35
83
|
catch (err) {
|
|
36
84
|
next(err);
|
|
37
85
|
}
|
|
38
86
|
});
|
|
39
87
|
}
|
|
88
|
+
/*
|
|
89
|
+
* skip/limit arrive as query params from ModelAPI.getList and in the body
|
|
90
|
+
* from anything hand-rolled, so both are read - same precedence as
|
|
91
|
+
* BaseAPI.getList.
|
|
92
|
+
*/
|
|
93
|
+
static getPaginationValue(req, key, defaultValue) {
|
|
94
|
+
if (req.query && req.query[key]) {
|
|
95
|
+
return parseInt(req.query[key], 10) || defaultValue;
|
|
96
|
+
}
|
|
97
|
+
if (req.body && req.body[key] !== undefined) {
|
|
98
|
+
return (parseInt(req.body[key], 10) || defaultValue);
|
|
99
|
+
}
|
|
100
|
+
return defaultValue;
|
|
101
|
+
}
|
|
102
|
+
static getQuery(query) {
|
|
103
|
+
const deserialized = JSONFunctions.deserialize(query);
|
|
104
|
+
for (const key in deserialized) {
|
|
105
|
+
const value = deserialized[key];
|
|
106
|
+
/*
|
|
107
|
+
* MultiSearch is the free-text search operator. Its key is synthetic -
|
|
108
|
+
* the columns it reads are the ones it carries - so those are what get
|
|
109
|
+
* checked against the allow-list.
|
|
110
|
+
*/
|
|
111
|
+
if (value instanceof MultiSearch) {
|
|
112
|
+
for (const field of value.fields) {
|
|
113
|
+
if (!GLOBAL_PROBE_FIELDS.includes(field)) {
|
|
114
|
+
throw new BadDataException(`Global probes cannot be searched on ${field}.`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (!GLOBAL_PROBE_FIELDS.includes(key)) {
|
|
120
|
+
throw new BadDataException(`Global probes cannot be filtered on ${key}.`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return deserialized;
|
|
124
|
+
}
|
|
125
|
+
static getSelect(select) {
|
|
126
|
+
const requested = {};
|
|
127
|
+
for (const key in select) {
|
|
128
|
+
if (!GLOBAL_PROBE_FIELDS.includes(key) || !select[key]) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
/*
|
|
132
|
+
* Coerced rather than copied: every selectable field here is a scalar,
|
|
133
|
+
* so a nested (relation) select on one of them is not something the
|
|
134
|
+
* caller gets to ask for.
|
|
135
|
+
*/
|
|
136
|
+
requested[key] = true;
|
|
137
|
+
}
|
|
138
|
+
/*
|
|
139
|
+
* A caller that asks for nothing gets what this endpoint returned before
|
|
140
|
+
* it honoured select at all.
|
|
141
|
+
*/
|
|
142
|
+
if (Object.keys(requested).length === 0) {
|
|
143
|
+
return Object.assign({}, DEFAULT_GLOBAL_PROBE_SELECT);
|
|
144
|
+
}
|
|
145
|
+
return requested;
|
|
146
|
+
}
|
|
147
|
+
static getSort(sort) {
|
|
148
|
+
const deserialized = JSONFunctions.deserialize(sort);
|
|
149
|
+
for (const key in deserialized) {
|
|
150
|
+
if (!GLOBAL_PROBE_FIELDS.includes(key)) {
|
|
151
|
+
throw new BadDataException(`Global probes cannot be sorted on ${key}.`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return deserialized;
|
|
155
|
+
}
|
|
40
156
|
}
|
|
41
157
|
//# sourceMappingURL=ProbeAPI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProbeAPI.js","sourceRoot":"","sources":["../../../../Server/API/ProbeAPI.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,YAEN,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ProbeAPI.js","sourceRoot":"","sources":["../../../../Server/API/ProbeAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
2
|
+
import MasterAdminAuthorization from "../Middleware/MasterAdminAuthorization";
|
|
2
3
|
import UserMiddleware from "../Middleware/UserAuthorization";
|
|
3
4
|
import ProjectService from "../Services/ProjectService";
|
|
4
5
|
import ResellerService from "../Services/ResellerService";
|
|
5
6
|
import TeamMemberService from "../Services/TeamMemberService";
|
|
6
7
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
8
|
+
import JSONWebToken from "../Utils/JsonWebToken";
|
|
7
9
|
import Response from "../Utils/Response";
|
|
8
10
|
import BaseAPI from "./BaseAPI";
|
|
9
11
|
import BillingService from "../Services/BillingService";
|
|
@@ -13,11 +15,12 @@ import NotAuthenticatedException from "../../Types/Exception/NotAuthenticatedExc
|
|
|
13
15
|
import PositiveNumber from "../../Types/PositiveNumber";
|
|
14
16
|
import Project from "../../Models/DatabaseModels/Project";
|
|
15
17
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
18
|
+
import OneUptimeDate from "../../Types/Date";
|
|
16
19
|
import Permission from "../../Types/Permission";
|
|
17
20
|
import ObjectID from "../../Types/ObjectID";
|
|
18
21
|
export default class ProjectAPI extends BaseAPI {
|
|
19
22
|
constructor() {
|
|
20
|
-
var _a, _b;
|
|
23
|
+
var _a, _b, _c;
|
|
21
24
|
super(Project, ProjectService);
|
|
22
25
|
this.router.put(`${(_a = new this.entityType().getCrudApiPath()) === null || _a === void 0 ? void 0 : _a.toString()}/:id/change-plan`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
23
26
|
var _a;
|
|
@@ -84,12 +87,68 @@ export default class ProjectAPI extends BaseAPI {
|
|
|
84
87
|
next(err);
|
|
85
88
|
}
|
|
86
89
|
});
|
|
90
|
+
/*
|
|
91
|
+
* Extends a project's trial. Master-admin only: this hands out free
|
|
92
|
+
* service and moves the customer's next invoice, so it is deliberately not
|
|
93
|
+
* reachable with project-level billing permissions - only OneUptime staff
|
|
94
|
+
* acting from the Admin Dashboard can call it.
|
|
95
|
+
*/
|
|
96
|
+
this.router.put(`${(_b = new this.entityType().getCrudApiPath()) === null || _b === void 0 ? void 0 : _b.toString()}/:id/extend-trial`, MasterAdminAuthorization.isAuthorizedMasterAdminMiddleware, async (req, res, next) => {
|
|
97
|
+
try {
|
|
98
|
+
if (!IsBillingEnabled) {
|
|
99
|
+
throw new BadDataException("Billing is not enabled for this server");
|
|
100
|
+
}
|
|
101
|
+
const projectId = new ObjectID(req.params["id"]);
|
|
102
|
+
const body = req.body || {};
|
|
103
|
+
const data = body["data"] || {};
|
|
104
|
+
const trialEndsAtValue = data["trialEndsAt"];
|
|
105
|
+
if (!trialEndsAtValue) {
|
|
106
|
+
throw new BadDataException("Trial end date is required to extend the trial");
|
|
107
|
+
}
|
|
108
|
+
/*
|
|
109
|
+
* OneUptimeDate.fromString only parses strings and Dates - anything
|
|
110
|
+
* else comes back as its own error text, not a Date - so reject a
|
|
111
|
+
* non-string body value here rather than letting it through.
|
|
112
|
+
*/
|
|
113
|
+
if (typeof trialEndsAtValue !== "string") {
|
|
114
|
+
throw new BadDataException("Trial end date is not a valid date");
|
|
115
|
+
}
|
|
116
|
+
const trialEndsAt = OneUptimeDate.fromString(trialEndsAtValue);
|
|
117
|
+
if (isNaN(trialEndsAt.getTime())) {
|
|
118
|
+
throw new BadDataException("Trial end date is not a valid date");
|
|
119
|
+
}
|
|
120
|
+
/*
|
|
121
|
+
* The master admin middleware verifies the token but does not put
|
|
122
|
+
* the decoded payload on the request, so read it again here - who
|
|
123
|
+
* granted the extension is the only audit trail this action has.
|
|
124
|
+
*/
|
|
125
|
+
let extendedByUserId = undefined;
|
|
126
|
+
try {
|
|
127
|
+
const accessToken = UserMiddleware.getAccessTokenFromExpressRequest(req);
|
|
128
|
+
if (accessToken) {
|
|
129
|
+
extendedByUserId = JSONWebToken.decode(accessToken).userId;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (_a) {
|
|
133
|
+
// Only used for the log line - never block the extension on it.
|
|
134
|
+
}
|
|
135
|
+
await ProjectService.extendTrial({
|
|
136
|
+
projectId: projectId,
|
|
137
|
+
trialEndsAt: trialEndsAt,
|
|
138
|
+
extendedByUserId: extendedByUserId,
|
|
139
|
+
});
|
|
140
|
+
return Response.sendEmptySuccessResponse(req, res);
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
next(err);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
87
146
|
/*
|
|
88
147
|
* This API lists all the projects where user is its team member.
|
|
89
148
|
* This API is usually used to show project selector dropdown in the UI
|
|
90
149
|
*/
|
|
91
|
-
this.router.post(`${(
|
|
92
|
-
.getCrudApiPath()) === null ||
|
|
150
|
+
this.router.post(`${(_c = new this.entityType()
|
|
151
|
+
.getCrudApiPath()) === null || _c === void 0 ? void 0 : _c.toString()}/list-user-projects`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
93
152
|
var _a, _b;
|
|
94
153
|
try {
|
|
95
154
|
if (!((_a = req.userAuthorization) === null || _a === void 0 ? void 0 : _a.userId)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectAPI.js","sourceRoot":"","sources":["../../../../Server/API/ProjectAPI.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectAPI.js","sourceRoot":"","sources":["../../../../Server/API/ProjectAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import ScheduledMaintenance from "../../Models/DatabaseModels/ScheduledMaintenance";
|
|
2
2
|
import NotFoundException from "../../Types/Exception/NotFoundException";
|
|
3
3
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
4
|
+
import DatabaseCommonInteractionPropsUtil, { PermissionType, } from "../../Types/BaseDatabase/DatabaseCommonInteractionPropsUtil";
|
|
4
5
|
import ObjectID from "../../Types/ObjectID";
|
|
5
6
|
import ScheduledMaintenanceService from "../Services/ScheduledMaintenanceService";
|
|
6
7
|
import UserMiddleware from "../Middleware/UserAuthorization";
|
|
@@ -27,7 +28,6 @@ export default class ScheduledMaintenanceAPI extends BaseAPI {
|
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
30
|
async generateNoteFromAI(req, res) {
|
|
30
|
-
var _a;
|
|
31
31
|
const scheduledMaintenanceIdParam = req.params["scheduledMaintenanceId"];
|
|
32
32
|
if (!scheduledMaintenanceIdParam) {
|
|
33
33
|
throw new BadDataException("Scheduled Maintenance ID is required");
|
|
@@ -36,22 +36,31 @@ export default class ScheduledMaintenanceAPI extends BaseAPI {
|
|
|
36
36
|
try {
|
|
37
37
|
scheduledMaintenanceId = new ObjectID(scheduledMaintenanceIdParam);
|
|
38
38
|
}
|
|
39
|
-
catch (
|
|
39
|
+
catch (_a) {
|
|
40
40
|
throw new BadDataException("Invalid Scheduled Maintenance ID");
|
|
41
41
|
}
|
|
42
42
|
const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
43
|
+
CommonAPI.assertTenantScoped(props);
|
|
44
|
+
/*
|
|
45
|
+
* Read through getUserPermissions(Allow) rather than off
|
|
46
|
+
* userTenantAccessPermission directly. That dictionary is keyed by project
|
|
47
|
+
* id and its entries hold GRANTS AND DENIALS together, discriminated only
|
|
48
|
+
* by isBlockPermission, so the previous
|
|
49
|
+
* `userTenantAccessPermission["permissions"]` read was always undefined
|
|
50
|
+
* and denied every caller who was not a master admin. Mapping the array
|
|
51
|
+
* raw would swing the other way and count a team's explicit block
|
|
52
|
+
* entry for one of these permissions as a grant of it.
|
|
53
|
+
*/
|
|
54
|
+
const permissions = DatabaseCommonInteractionPropsUtil.getUserPermissions(props, PermissionType.Allow).map((userPermission) => {
|
|
55
|
+
return userPermission.permission;
|
|
56
|
+
});
|
|
57
|
+
const hasPermission = permissions.some((p) => {
|
|
58
|
+
return (p === Permission.ProjectOwner ||
|
|
59
|
+
p === Permission.ProjectAdmin ||
|
|
60
|
+
p === Permission.EditProjectScheduledMaintenance ||
|
|
61
|
+
p === Permission.CreateScheduledMaintenanceInternalNote ||
|
|
62
|
+
p === Permission.CreateScheduledMaintenancePublicNote);
|
|
63
|
+
});
|
|
55
64
|
if (!hasPermission && !props.isMasterAdmin) {
|
|
56
65
|
throw new BadDataException("You do not have permission to generate notes for this scheduled maintenance.");
|
|
57
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledMaintenanceAPI.js","sourceRoot":"","sources":["../../../../Server/API/ScheduledMaintenanceAPI.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,kDAAkD,CAAC;AACpF,OAAO,iBAAiB,MAAM,yCAAyC,CAAC;AACxE,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,2BAEN,MAAM,yCAAyC,CAAC;AACjD,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAMhC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,OAAO,SAA0C,MAAM,uBAAuB,CAAC;AAC/E,OAAO,oCAGN,MAAM,kDAAkD,CAAC;AAC1D,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"ScheduledMaintenanceAPI.js","sourceRoot":"","sources":["../../../../Server/API/ScheduledMaintenanceAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,6 +76,7 @@ import StatusPageSSO from "../../Models/DatabaseModels/StatusPageSso";
|
|
|
76
76
|
import StatusPageOIDC from "../../Models/DatabaseModels/StatusPageOidc";
|
|
77
77
|
import StatusPageSubscriber from "../../Models/DatabaseModels/StatusPageSubscriber";
|
|
78
78
|
import StatusPageResourceUptimeUtil from "../../Utils/StatusPage/ResourceUptime";
|
|
79
|
+
import StatusPageGroupTreeUtil from "../../Utils/StatusPage/GroupTree";
|
|
79
80
|
import UptimePrecision from "../../Types/StatusPage/UptimePrecision";
|
|
80
81
|
import { Green } from "../../Types/BrandColors";
|
|
81
82
|
import UptimeUtil from "../../Utils/Uptime/UptimeUtil";
|
|
@@ -791,6 +792,7 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
791
792
|
});
|
|
792
793
|
this.router.post(`${(_w = new this.entityType()
|
|
793
794
|
.getCrudApiPath()) === null || _w === void 0 ? void 0 : _w.toString()}/uptime/:statusPageId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
795
|
+
var _a;
|
|
794
796
|
try {
|
|
795
797
|
// This reosurce ID can be of a status page resource OR a status page group.
|
|
796
798
|
const statusPageResourceId = new ObjectID(req.params["statusPageResourceId"]);
|
|
@@ -839,14 +841,15 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
839
841
|
endDate: endDate,
|
|
840
842
|
};
|
|
841
843
|
const getUptimeByStatusPageGroup = (data) => {
|
|
842
|
-
var _a, _b, _c, _d, _e;
|
|
844
|
+
var _a, _b, _c, _d, _e, _f;
|
|
843
845
|
const groupUptime = {
|
|
844
846
|
statusPageGroupId: data && data.statusPageGroup
|
|
845
847
|
? (_a = data.statusPageGroup) === null || _a === void 0 ? void 0 : _a.id
|
|
846
848
|
: null,
|
|
849
|
+
parentStatusPageGroupId: ((_b = data.statusPageGroup) === null || _b === void 0 ? void 0 : _b.parentStatusPageGroupId) || null,
|
|
847
850
|
uptimePercent: null,
|
|
848
851
|
statusPageResourceUptimes: [],
|
|
849
|
-
statusPageGroupName: ((
|
|
852
|
+
statusPageGroupName: ((_c = data.statusPageGroup) === null || _c === void 0 ? void 0 : _c.name) || null,
|
|
850
853
|
currentStatus: null,
|
|
851
854
|
};
|
|
852
855
|
const group = data.statusPageGroup;
|
|
@@ -854,8 +857,8 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
854
857
|
if ((resource.statusPageGroupId &&
|
|
855
858
|
resource.statusPageGroupId.toString() &&
|
|
856
859
|
group &&
|
|
857
|
-
((
|
|
858
|
-
((
|
|
860
|
+
((_d = group._id) === null || _d === void 0 ? void 0 : _d.toString()) &&
|
|
861
|
+
((_e = group._id) === null || _e === void 0 ? void 0 : _e.toString()) ===
|
|
859
862
|
resource.statusPageGroupId.toString()) ||
|
|
860
863
|
(!resource.statusPageGroupId && !group)) {
|
|
861
864
|
// if its not a monitor or a monitor group, then continue. This should ideally not happen.
|
|
@@ -865,7 +868,7 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
865
868
|
const resourceUptime = {
|
|
866
869
|
statusPageResourceId: resource.id,
|
|
867
870
|
uptimePercent: null,
|
|
868
|
-
statusPageResourceName: resource.displayName || ((
|
|
871
|
+
statusPageResourceName: resource.displayName || ((_f = resource.monitor) === null || _f === void 0 ? void 0 : _f.name) || "",
|
|
869
872
|
currentStatus: null,
|
|
870
873
|
};
|
|
871
874
|
// if its a monitor
|
|
@@ -932,40 +935,64 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
932
935
|
}
|
|
933
936
|
}
|
|
934
937
|
}
|
|
935
|
-
if (group === null || group === void 0 ? void 0 : group.showUptimePercent) {
|
|
936
|
-
// calculate uptime percent for the group.
|
|
937
|
-
const avgUptimePercent = UptimeUtil.calculateAvgUptimePercentage({
|
|
938
|
-
uptimePercentages: groupUptime.statusPageResourceUptimes
|
|
939
|
-
.filter((resource) => {
|
|
940
|
-
return resource.uptimePercent !== null;
|
|
941
|
-
})
|
|
942
|
-
.map((resource) => {
|
|
943
|
-
return resource.uptimePercent || 0;
|
|
944
|
-
}),
|
|
945
|
-
precision: group.uptimePercentPrecision ||
|
|
946
|
-
UptimePrecision.ONE_DECIMAL,
|
|
947
|
-
});
|
|
948
|
-
groupUptime.uptimePercent = avgUptimePercent;
|
|
949
|
-
}
|
|
950
|
-
if (group === null || group === void 0 ? void 0 : group.showCurrentStatus) {
|
|
951
|
-
const currentStatuses = groupUptime.statusPageResourceUptimes
|
|
952
|
-
.filter((resourceUptime) => {
|
|
953
|
-
return resourceUptime.currentStatus !== null;
|
|
954
|
-
})
|
|
955
|
-
.map((resourceUptime) => {
|
|
956
|
-
return resourceUptime.currentStatus;
|
|
957
|
-
});
|
|
958
|
-
const worstStatus = StatusPageResourceUptimeUtil.getWorstMonitorStatus({
|
|
959
|
-
monitorStatuses: currentStatuses,
|
|
960
|
-
});
|
|
961
|
-
groupUptime.currentStatus = worstStatus;
|
|
962
|
-
}
|
|
963
938
|
return groupUptime;
|
|
964
939
|
};
|
|
965
940
|
const groupUptimes = [];
|
|
966
941
|
for (const group of statusPageGroups) {
|
|
967
942
|
groupUptimes.push(getUptimeByStatusPageGroup({ statusPageGroup: group }));
|
|
968
943
|
}
|
|
944
|
+
/*
|
|
945
|
+
* Groups nest, so a group's own uptime % / current status has to
|
|
946
|
+
* cover every resource in its subtree, not just the resources
|
|
947
|
+
* attached directly to it. statusPageResourceUptimes stays the
|
|
948
|
+
* group's own resources - the nesting is reported through
|
|
949
|
+
* parentStatusPageGroupId so callers can rebuild the tree.
|
|
950
|
+
*/
|
|
951
|
+
const resourceUptimesByGroupId = {};
|
|
952
|
+
for (const groupUptime of groupUptimes) {
|
|
953
|
+
resourceUptimesByGroupId[((_a = groupUptime.statusPageGroupId) === null || _a === void 0 ? void 0 : _a.toString()) || ""] = groupUptime.statusPageResourceUptimes;
|
|
954
|
+
}
|
|
955
|
+
for (const group of statusPageGroups) {
|
|
956
|
+
const groupUptime = groupUptimes.find((item) => {
|
|
957
|
+
var _a, _b;
|
|
958
|
+
return (((_a = item.statusPageGroupId) === null || _a === void 0 ? void 0 : _a.toString()) === ((_b = group.id) === null || _b === void 0 ? void 0 : _b.toString()));
|
|
959
|
+
});
|
|
960
|
+
if (!groupUptime) {
|
|
961
|
+
continue;
|
|
962
|
+
}
|
|
963
|
+
const resourceUptimesInSubtree = StatusPageGroupTreeUtil.getGroupAndDescendants({
|
|
964
|
+
statusPageGroup: group,
|
|
965
|
+
statusPageGroups: statusPageGroups,
|
|
966
|
+
}).flatMap((groupInSubtree) => {
|
|
967
|
+
var _a;
|
|
968
|
+
return (resourceUptimesByGroupId[((_a = groupInSubtree.id) === null || _a === void 0 ? void 0 : _a.toString()) || ""] || []);
|
|
969
|
+
});
|
|
970
|
+
if (group.showUptimePercent) {
|
|
971
|
+
groupUptime.uptimePercent =
|
|
972
|
+
UptimeUtil.calculateAvgUptimePercentage({
|
|
973
|
+
uptimePercentages: resourceUptimesInSubtree
|
|
974
|
+
.filter((resource) => {
|
|
975
|
+
return resource.uptimePercent !== null;
|
|
976
|
+
})
|
|
977
|
+
.map((resource) => {
|
|
978
|
+
return resource.uptimePercent || 0;
|
|
979
|
+
}),
|
|
980
|
+
precision: group.uptimePercentPrecision || UptimePrecision.ONE_DECIMAL,
|
|
981
|
+
});
|
|
982
|
+
}
|
|
983
|
+
if (group.showCurrentStatus) {
|
|
984
|
+
groupUptime.currentStatus =
|
|
985
|
+
StatusPageResourceUptimeUtil.getWorstMonitorStatus({
|
|
986
|
+
monitorStatuses: resourceUptimesInSubtree
|
|
987
|
+
.filter((resourceUptime) => {
|
|
988
|
+
return resourceUptime.currentStatus !== null;
|
|
989
|
+
})
|
|
990
|
+
.map((resourceUptime) => {
|
|
991
|
+
return resourceUptime.currentStatus;
|
|
992
|
+
}),
|
|
993
|
+
});
|
|
994
|
+
}
|
|
995
|
+
}
|
|
969
996
|
return Response.sendJsonObjectResponse(req, res, {
|
|
970
997
|
statusPageResourceUptimes: [
|
|
971
998
|
...getUptimeByStatusPageGroup({ statusPageGroup: null })
|
|
@@ -3381,6 +3408,7 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
3381
3408
|
columnAxisLabel: true,
|
|
3382
3409
|
rowAxisValues: true,
|
|
3383
3410
|
columnAxisValues: true,
|
|
3411
|
+
parentStatusPageGroupId: true,
|
|
3384
3412
|
},
|
|
3385
3413
|
sort: {
|
|
3386
3414
|
order: SortOrder.Ascending,
|