@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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class AddColumnsToTableView1785241000000 {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.name = "AddColumnsToTableView1785241000000";
|
|
4
|
+
}
|
|
5
|
+
async up(queryRunner) {
|
|
6
|
+
await queryRunner.query(`ALTER TABLE "TableView" ADD "columns" jsonb`);
|
|
7
|
+
}
|
|
8
|
+
async down(queryRunner) {
|
|
9
|
+
await queryRunner.query(`ALTER TABLE "TableView" DROP COLUMN "columns"`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=1785241000000-AddColumnsToTableView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1785241000000-AddColumnsToTableView.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kCAAkC;IAA/C;QACS,SAAI,GAAW,oCAAoC,CAAC;IAS7D,CAAC;IAPQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACzE,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import logger from "../../../Utils/Logger";
|
|
2
|
+
const INCIDENT_STATE_ROLES = [
|
|
3
|
+
"isCreatedState",
|
|
4
|
+
"isAcknowledgedState",
|
|
5
|
+
"isResolvedState",
|
|
6
|
+
];
|
|
7
|
+
const ALERT_STATE_ROLES = [
|
|
8
|
+
"isCreatedState",
|
|
9
|
+
"isAcknowledgedState",
|
|
10
|
+
"isResolvedState",
|
|
11
|
+
];
|
|
12
|
+
const SCHEDULED_MAINTENANCE_STATE_ROLES = [
|
|
13
|
+
"isScheduledState",
|
|
14
|
+
"isOngoingState",
|
|
15
|
+
"isEndedState",
|
|
16
|
+
"isResolvedState",
|
|
17
|
+
];
|
|
18
|
+
const MONITOR_STATUS_ROLES = [
|
|
19
|
+
"isOperationalState",
|
|
20
|
+
"isOfflineState",
|
|
21
|
+
];
|
|
22
|
+
/*
|
|
23
|
+
* Every ON DELETE NO ACTION reference to a project-scoped state / severity /
|
|
24
|
+
* status that a project delete can trip over, as of this migration.
|
|
25
|
+
*/
|
|
26
|
+
export const CROSS_PROJECT_REFERENCES = [
|
|
27
|
+
{
|
|
28
|
+
table: "Incident",
|
|
29
|
+
column: "currentIncidentStateId",
|
|
30
|
+
referencedTable: "IncidentState",
|
|
31
|
+
orderColumn: "order",
|
|
32
|
+
roleColumns: INCIDENT_STATE_ROLES,
|
|
33
|
+
isNullable: false,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
table: "Incident",
|
|
37
|
+
column: "incidentSeverityId",
|
|
38
|
+
referencedTable: "IncidentSeverity",
|
|
39
|
+
orderColumn: "order",
|
|
40
|
+
roleColumns: [],
|
|
41
|
+
isNullable: false,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
table: "Incident",
|
|
45
|
+
column: "changeMonitorStatusToId",
|
|
46
|
+
referencedTable: "MonitorStatus",
|
|
47
|
+
orderColumn: "priority",
|
|
48
|
+
roleColumns: MONITOR_STATUS_ROLES,
|
|
49
|
+
isNullable: true,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
table: "IncidentEpisode",
|
|
53
|
+
column: "currentIncidentStateId",
|
|
54
|
+
referencedTable: "IncidentState",
|
|
55
|
+
orderColumn: "order",
|
|
56
|
+
roleColumns: INCIDENT_STATE_ROLES,
|
|
57
|
+
isNullable: false,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
table: "IncidentEpisode",
|
|
61
|
+
column: "incidentSeverityId",
|
|
62
|
+
referencedTable: "IncidentSeverity",
|
|
63
|
+
orderColumn: "order",
|
|
64
|
+
roleColumns: [],
|
|
65
|
+
isNullable: true,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
table: "IncidentStateTimeline",
|
|
69
|
+
column: "incidentStateId",
|
|
70
|
+
referencedTable: "IncidentState",
|
|
71
|
+
orderColumn: "order",
|
|
72
|
+
roleColumns: INCIDENT_STATE_ROLES,
|
|
73
|
+
isNullable: false,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
table: "IncidentEpisodeStateTimeline",
|
|
77
|
+
column: "incidentStateId",
|
|
78
|
+
referencedTable: "IncidentState",
|
|
79
|
+
orderColumn: "order",
|
|
80
|
+
roleColumns: INCIDENT_STATE_ROLES,
|
|
81
|
+
isNullable: false,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
table: "IncidentTemplate",
|
|
85
|
+
column: "initialIncidentStateId",
|
|
86
|
+
referencedTable: "IncidentState",
|
|
87
|
+
orderColumn: "order",
|
|
88
|
+
roleColumns: INCIDENT_STATE_ROLES,
|
|
89
|
+
isNullable: true,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
table: "IncidentTemplate",
|
|
93
|
+
column: "incidentSeverityId",
|
|
94
|
+
referencedTable: "IncidentSeverity",
|
|
95
|
+
orderColumn: "order",
|
|
96
|
+
roleColumns: [],
|
|
97
|
+
isNullable: true,
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
table: "IncidentTemplate",
|
|
101
|
+
column: "changeMonitorStatusToId",
|
|
102
|
+
referencedTable: "MonitorStatus",
|
|
103
|
+
orderColumn: "priority",
|
|
104
|
+
roleColumns: MONITOR_STATUS_ROLES,
|
|
105
|
+
isNullable: true,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
table: "Alert",
|
|
109
|
+
column: "currentAlertStateId",
|
|
110
|
+
referencedTable: "AlertState",
|
|
111
|
+
orderColumn: "order",
|
|
112
|
+
roleColumns: ALERT_STATE_ROLES,
|
|
113
|
+
isNullable: false,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
table: "Alert",
|
|
117
|
+
column: "alertSeverityId",
|
|
118
|
+
referencedTable: "AlertSeverity",
|
|
119
|
+
orderColumn: "order",
|
|
120
|
+
roleColumns: [],
|
|
121
|
+
isNullable: false,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
table: "Alert",
|
|
125
|
+
column: "monitorStatusWhenThisAlertWasCreatedId",
|
|
126
|
+
referencedTable: "MonitorStatus",
|
|
127
|
+
orderColumn: "priority",
|
|
128
|
+
roleColumns: MONITOR_STATUS_ROLES,
|
|
129
|
+
isNullable: true,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
table: "AlertEpisode",
|
|
133
|
+
column: "currentAlertStateId",
|
|
134
|
+
referencedTable: "AlertState",
|
|
135
|
+
orderColumn: "order",
|
|
136
|
+
roleColumns: ALERT_STATE_ROLES,
|
|
137
|
+
isNullable: false,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
table: "AlertEpisode",
|
|
141
|
+
column: "alertSeverityId",
|
|
142
|
+
referencedTable: "AlertSeverity",
|
|
143
|
+
orderColumn: "order",
|
|
144
|
+
roleColumns: [],
|
|
145
|
+
isNullable: true,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
table: "AlertStateTimeline",
|
|
149
|
+
column: "alertStateId",
|
|
150
|
+
referencedTable: "AlertState",
|
|
151
|
+
orderColumn: "order",
|
|
152
|
+
roleColumns: ALERT_STATE_ROLES,
|
|
153
|
+
isNullable: false,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
table: "AlertEpisodeStateTimeline",
|
|
157
|
+
column: "alertStateId",
|
|
158
|
+
referencedTable: "AlertState",
|
|
159
|
+
orderColumn: "order",
|
|
160
|
+
roleColumns: ALERT_STATE_ROLES,
|
|
161
|
+
isNullable: false,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
table: "ScheduledMaintenance",
|
|
165
|
+
column: "currentScheduledMaintenanceStateId",
|
|
166
|
+
referencedTable: "ScheduledMaintenanceState",
|
|
167
|
+
orderColumn: "order",
|
|
168
|
+
roleColumns: SCHEDULED_MAINTENANCE_STATE_ROLES,
|
|
169
|
+
isNullable: false,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
table: "ScheduledMaintenance",
|
|
173
|
+
column: "changeMonitorStatusToId",
|
|
174
|
+
referencedTable: "MonitorStatus",
|
|
175
|
+
orderColumn: "priority",
|
|
176
|
+
roleColumns: MONITOR_STATUS_ROLES,
|
|
177
|
+
isNullable: true,
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
table: "ScheduledMaintenanceStateTimeline",
|
|
181
|
+
column: "scheduledMaintenanceStateId",
|
|
182
|
+
referencedTable: "ScheduledMaintenanceState",
|
|
183
|
+
orderColumn: "order",
|
|
184
|
+
roleColumns: SCHEDULED_MAINTENANCE_STATE_ROLES,
|
|
185
|
+
isNullable: false,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
table: "ScheduledMaintenanceTemplate",
|
|
189
|
+
column: "changeMonitorStatusToId",
|
|
190
|
+
referencedTable: "MonitorStatus",
|
|
191
|
+
orderColumn: "priority",
|
|
192
|
+
roleColumns: MONITOR_STATUS_ROLES,
|
|
193
|
+
isNullable: true,
|
|
194
|
+
},
|
|
195
|
+
];
|
|
196
|
+
/*
|
|
197
|
+
* A state timeline row records "this incident/alert/event was in this state at
|
|
198
|
+
* this time". Once the state is deleted the row cannot be read back, so it
|
|
199
|
+
* should go with it rather than block the delete. This mirrors what
|
|
200
|
+
* 1785240000000 did for MonitorStatusTimeline.
|
|
201
|
+
*/
|
|
202
|
+
export const TIMELINE_FOREIGN_KEYS = [
|
|
203
|
+
{
|
|
204
|
+
table: "IncidentStateTimeline",
|
|
205
|
+
column: "incidentStateId",
|
|
206
|
+
referencedTable: "IncidentState",
|
|
207
|
+
constraintName: "FK_ff0fca6570d47798771763533a9",
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
table: "IncidentEpisodeStateTimeline",
|
|
211
|
+
column: "incidentStateId",
|
|
212
|
+
referencedTable: "IncidentState",
|
|
213
|
+
constraintName: "FK_186ef9a3c668841b1286cbb18fc",
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
table: "AlertStateTimeline",
|
|
217
|
+
column: "alertStateId",
|
|
218
|
+
referencedTable: "AlertState",
|
|
219
|
+
constraintName: "FK_dbf0191a98672bcb73f65febac5",
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
table: "AlertEpisodeStateTimeline",
|
|
223
|
+
column: "alertStateId",
|
|
224
|
+
referencedTable: "AlertState",
|
|
225
|
+
constraintName: "FK_c787c0bc5a12b94976f28d0a12c",
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
table: "ScheduledMaintenanceStateTimeline",
|
|
229
|
+
column: "scheduledMaintenanceStateId",
|
|
230
|
+
referencedTable: "ScheduledMaintenanceState",
|
|
231
|
+
constraintName: "FK_7c0f750d3a964180d1e1efa16ea",
|
|
232
|
+
},
|
|
233
|
+
];
|
|
234
|
+
/*
|
|
235
|
+
* Repoints rows whose reference belongs to another project at the equivalent
|
|
236
|
+
* record in their own project.
|
|
237
|
+
*
|
|
238
|
+
* The ladder is: same name AND same role, then same role, then same name, then
|
|
239
|
+
* nearest order/priority. Role outranks a bare name match on purpose — a
|
|
240
|
+
* project is free to have a custom state literally called "Resolved" that is
|
|
241
|
+
* NOT its resolved state, and matching that one would quietly un-resolve a
|
|
242
|
+
* resolved incident. The 1785240000000 migration tried name before role; that
|
|
243
|
+
* ordering is only safe for records with no role at all (severities), which is
|
|
244
|
+
* why it never bit there.
|
|
245
|
+
*/
|
|
246
|
+
export function getRepairQuery(reference) {
|
|
247
|
+
const roleSelect = reference.roleColumns
|
|
248
|
+
.map((roleColumn) => {
|
|
249
|
+
return `,\n p."${roleColumn}" AS role_${roleColumn}`;
|
|
250
|
+
})
|
|
251
|
+
.join("");
|
|
252
|
+
const rolePredicate = reference.roleColumns
|
|
253
|
+
.map((roleColumn) => {
|
|
254
|
+
return `x."${roleColumn}" = b.role_${roleColumn}`;
|
|
255
|
+
})
|
|
256
|
+
.join("\n AND ");
|
|
257
|
+
const roleMatches = reference.roleColumns.length > 0
|
|
258
|
+
? `
|
|
259
|
+
(SELECT x."_id" FROM "${reference.referencedTable}" x
|
|
260
|
+
WHERE x."projectId" = b.project_id
|
|
261
|
+
AND lower(x."name") = lower(b.ref_name)
|
|
262
|
+
AND ${rolePredicate}
|
|
263
|
+
ORDER BY x."${reference.orderColumn}" LIMIT 1),
|
|
264
|
+
(SELECT x."_id" FROM "${reference.referencedTable}" x
|
|
265
|
+
WHERE x."projectId" = b.project_id
|
|
266
|
+
AND ${rolePredicate}
|
|
267
|
+
ORDER BY x."${reference.orderColumn}" LIMIT 1),`
|
|
268
|
+
: "";
|
|
269
|
+
return `
|
|
270
|
+
WITH bad AS (
|
|
271
|
+
SELECT c."_id" AS row_id,
|
|
272
|
+
c."projectId" AS project_id,
|
|
273
|
+
p."name" AS ref_name,
|
|
274
|
+
p."${reference.orderColumn}" AS ref_order${roleSelect}
|
|
275
|
+
FROM "${reference.table}" c
|
|
276
|
+
JOIN "${reference.referencedTable}" p ON p."_id" = c."${reference.column}"
|
|
277
|
+
WHERE c."projectId" IS DISTINCT FROM p."projectId"
|
|
278
|
+
), resolved AS (
|
|
279
|
+
SELECT b.row_id, COALESCE(${roleMatches}
|
|
280
|
+
(SELECT x."_id" FROM "${reference.referencedTable}" x
|
|
281
|
+
WHERE x."projectId" = b.project_id AND lower(x."name") = lower(b.ref_name)
|
|
282
|
+
ORDER BY x."${reference.orderColumn}" LIMIT 1),
|
|
283
|
+
(SELECT x."_id" FROM "${reference.referencedTable}" x
|
|
284
|
+
WHERE x."projectId" = b.project_id
|
|
285
|
+
ORDER BY abs(x."${reference.orderColumn}" - b.ref_order), x."${reference.orderColumn}" LIMIT 1)
|
|
286
|
+
) AS good_id
|
|
287
|
+
FROM bad b
|
|
288
|
+
)
|
|
289
|
+
UPDATE "${reference.table}" c
|
|
290
|
+
SET "${reference.column}" = r.good_id
|
|
291
|
+
FROM resolved r
|
|
292
|
+
WHERE c."_id" = r.row_id AND r.good_id IS NOT NULL
|
|
293
|
+
`;
|
|
294
|
+
}
|
|
295
|
+
/*
|
|
296
|
+
* Counts what is still cross-project after the repair and the clear. A row
|
|
297
|
+
* only survives both when its own project has no record of that kind to point
|
|
298
|
+
* at — rare, but silent: the project stays undeletable and the user retries
|
|
299
|
+
* and sees the identical error with nothing to act on. Log it so an operator
|
|
300
|
+
* has a name to chase.
|
|
301
|
+
*/
|
|
302
|
+
export function getRemainingQuery(reference) {
|
|
303
|
+
return `
|
|
304
|
+
SELECT count(*)::int AS remaining
|
|
305
|
+
FROM "${reference.table}" c
|
|
306
|
+
JOIN "${reference.referencedTable}" p ON p."_id" = c."${reference.column}"
|
|
307
|
+
WHERE c."projectId" IS DISTINCT FROM p."projectId"
|
|
308
|
+
`;
|
|
309
|
+
}
|
|
310
|
+
/*
|
|
311
|
+
* Clears whatever the repair above could not repoint. Only runs for nullable
|
|
312
|
+
* columns; leaving a dangling cross-project id there would keep the referenced
|
|
313
|
+
* project undeletable for no benefit — the reference cannot be read by the
|
|
314
|
+
* project that owns the row anyway.
|
|
315
|
+
*/
|
|
316
|
+
export function getClearQuery(reference) {
|
|
317
|
+
return `
|
|
318
|
+
UPDATE "${reference.table}" c
|
|
319
|
+
SET "${reference.column}" = NULL
|
|
320
|
+
FROM "${reference.referencedTable}" p
|
|
321
|
+
WHERE p."_id" = c."${reference.column}"
|
|
322
|
+
AND c."projectId" IS DISTINCT FROM p."projectId"
|
|
323
|
+
`;
|
|
324
|
+
}
|
|
325
|
+
export class RepairCrossProjectIncidentReferences1785320000000 {
|
|
326
|
+
constructor() {
|
|
327
|
+
this.name = "RepairCrossProjectIncidentReferences1785320000000";
|
|
328
|
+
}
|
|
329
|
+
async up(queryRunner) {
|
|
330
|
+
var _a;
|
|
331
|
+
/*
|
|
332
|
+
* The repairs below scan the incident/alert/timeline tables, which run to
|
|
333
|
+
* millions of rows. Raising the server-side statement_timeout only helps
|
|
334
|
+
* when the operator has also raised DATABASE_QUERY_TIMEOUT_MS: that one is
|
|
335
|
+
* a client-side deadline in node-postgres (DataSourceOptions passes it as
|
|
336
|
+
* `extra.query_timeout`) and no SET can lift it. When the client gives up
|
|
337
|
+
* first the server keeps executing, so the ceiling here is deliberately
|
|
338
|
+
* reset before the DDL below rather than left in place.
|
|
339
|
+
*/
|
|
340
|
+
await queryRunner.query(`SET LOCAL statement_timeout = '600s'`);
|
|
341
|
+
const unrepaired = [];
|
|
342
|
+
for (const reference of CROSS_PROJECT_REFERENCES) {
|
|
343
|
+
await queryRunner.query(getRepairQuery(reference));
|
|
344
|
+
if (reference.isNullable) {
|
|
345
|
+
await queryRunner.query(getClearQuery(reference));
|
|
346
|
+
}
|
|
347
|
+
const remaining = await queryRunner.query(getRemainingQuery(reference));
|
|
348
|
+
const remainingCount = ((_a = remaining === null || remaining === void 0 ? void 0 : remaining[0]) === null || _a === void 0 ? void 0 : _a.remaining) || 0;
|
|
349
|
+
if (remainingCount > 0) {
|
|
350
|
+
unrepaired.push(`${reference.table}.${reference.column} (${remainingCount})`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
if (unrepaired.length > 0) {
|
|
354
|
+
/*
|
|
355
|
+
* Not fatal: these rows keep their project undeletable, but failing the
|
|
356
|
+
* deploy over them would be worse than reporting them. Each one needs a
|
|
357
|
+
* record of that kind to exist in the row's own project before it can be
|
|
358
|
+
* repointed.
|
|
359
|
+
*/
|
|
360
|
+
logger.warn(`RepairCrossProjectIncidentReferences: could not repoint every cross-project reference; the projects they point at stay undeletable until a matching record exists in the owning project. Remaining: ${unrepaired.join(", ")}`);
|
|
361
|
+
}
|
|
362
|
+
/*
|
|
363
|
+
* Back to the connection's configured ceiling before taking any lock. A
|
|
364
|
+
* slow ADD CONSTRAINT that outlives the client timeout would otherwise sit
|
|
365
|
+
* there holding ACCESS EXCLUSIVE — with the queued ROLLBACK timing out too
|
|
366
|
+
* — long after the deploy already reported failure. Aborting server-side
|
|
367
|
+
* is the cheaper failure.
|
|
368
|
+
*/
|
|
369
|
+
await queryRunner.query(`SET LOCAL statement_timeout = DEFAULT`);
|
|
370
|
+
/*
|
|
371
|
+
* Swapping a foreign key needs ACCESS EXCLUSIVE on the timeline table, and
|
|
372
|
+
* the lock is held until this migration commits. The server has no
|
|
373
|
+
* lock_timeout, so without the line below a single slow transaction
|
|
374
|
+
* holding one of these tables would make the statement queue *and* park
|
|
375
|
+
* every reader and writer behind it until the statement timeout fired.
|
|
376
|
+
* Failing fast and retrying the deploy is much cheaper than stalling the
|
|
377
|
+
* table.
|
|
378
|
+
*/
|
|
379
|
+
await queryRunner.query(`SET LOCAL lock_timeout = '5s'`);
|
|
380
|
+
for (const foreignKey of TIMELINE_FOREIGN_KEYS) {
|
|
381
|
+
await queryRunner.query(`ALTER TABLE "${foreignKey.table}" DROP CONSTRAINT "${foreignKey.constraintName}"`);
|
|
382
|
+
await queryRunner.query(`ALTER TABLE "${foreignKey.table}" ADD CONSTRAINT "${foreignKey.constraintName}" FOREIGN KEY ("${foreignKey.column}") REFERENCES "${foreignKey.referencedTable}"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/*
|
|
386
|
+
* Only the constraints are reversible. The repaired references are not: the
|
|
387
|
+
* previous values pointed at another project's records and there is nothing
|
|
388
|
+
* worth restoring them to.
|
|
389
|
+
*/
|
|
390
|
+
async down(queryRunner) {
|
|
391
|
+
for (const foreignKey of TIMELINE_FOREIGN_KEYS) {
|
|
392
|
+
await queryRunner.query(`ALTER TABLE "${foreignKey.table}" DROP CONSTRAINT "${foreignKey.constraintName}"`);
|
|
393
|
+
await queryRunner.query(`ALTER TABLE "${foreignKey.table}" ADD CONSTRAINT "${foreignKey.constraintName}" FOREIGN KEY ("${foreignKey.column}") REFERENCES "${foreignKey.referencedTable}"("_id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=1785320000000-RepairCrossProjectIncidentReferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1785320000000-RepairCrossProjectIncidentReferences.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export class AddParentGroupToStatusPageGroup1785329453269 {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.name = "AddParentGroupToStatusPageGroup1785329453269";
|
|
4
|
+
}
|
|
5
|
+
async up(queryRunner) {
|
|
6
|
+
await queryRunner.query(`ALTER TABLE "StatusPageGroup" ADD "parentStatusPageGroupId" uuid`);
|
|
7
|
+
await queryRunner.query(`CREATE INDEX "IDX_9cf6ff1530c361e890856e80d7" ON "StatusPageGroup" ("parentStatusPageGroupId") `);
|
|
8
|
+
await queryRunner.query(`ALTER TABLE "StatusPageGroup" ADD CONSTRAINT "FK_9cf6ff1530c361e890856e80d79" FOREIGN KEY ("parentStatusPageGroupId") REFERENCES "StatusPageGroup"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
|
9
|
+
}
|
|
10
|
+
async down(queryRunner) {
|
|
11
|
+
await queryRunner.query(`ALTER TABLE "StatusPageGroup" DROP CONSTRAINT "FK_9cf6ff1530c361e890856e80d79"`);
|
|
12
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_9cf6ff1530c361e890856e80d7"`);
|
|
13
|
+
await queryRunner.query(`ALTER TABLE "StatusPageGroup" DROP COLUMN "parentStatusPageGroupId"`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=1785329453269-AddParentGroupToStatusPageGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1785329453269-AddParentGroupToStatusPageGroup.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,4CAA4C;IAAzD;QAGS,SAAI,GAAW,8CAA8C,CAAC;IAyBvE,CAAC;IAvBQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,kEAAkE,CACnE,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,iGAAiG,CAClG,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,iMAAiM,CAClM,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,gFAAgF,CACjF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,qEAAqE,CACtE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Generated with `npm run generate-postgres-migration`. Two unrelated
|
|
3
|
+
* `OnCallDutyPolicyScheduleLayer` default-value statements the generator also
|
|
4
|
+
* emitted (whitespace-only drift between the entity's serialized JSON default
|
|
5
|
+
* and the one already in the database) were removed by hand — they belong to
|
|
6
|
+
* neither this feature nor this PR, and re-writing those defaults would churn
|
|
7
|
+
* every existing row's column default for no behavioural change.
|
|
8
|
+
*/
|
|
9
|
+
export class AddRecommendationDismissalTable1785397674289 {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.name = "AddRecommendationDismissalTable1785397674289";
|
|
12
|
+
}
|
|
13
|
+
async up(queryRunner) {
|
|
14
|
+
await queryRunner.query(`CREATE TABLE "RecommendationDismissal" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "recommendationType" character varying(100) NOT NULL, "recommendationId" character varying(100) NOT NULL, "resourceType" character varying(100), "resourceId" uuid, "dismissalReason" character varying(500), "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_d36e7bc61a5ad3a4ce43d83f29d" PRIMARY KEY ("_id"))`);
|
|
15
|
+
await queryRunner.query(`CREATE INDEX "IDX_b9b04eb32e1e2b49131fdf3dd6" ON "RecommendationDismissal" ("projectId") `);
|
|
16
|
+
await queryRunner.query(`CREATE INDEX "IDX_119f2c4f157c931d3b11eb339d" ON "RecommendationDismissal" ("projectId", "recommendationType", "resourceType", "resourceId") `);
|
|
17
|
+
await queryRunner.query(`ALTER TABLE "RecommendationDismissal" ADD CONSTRAINT "FK_b9b04eb32e1e2b49131fdf3dd67" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
|
18
|
+
await queryRunner.query(`ALTER TABLE "RecommendationDismissal" ADD CONSTRAINT "FK_c81cd63783d39af4d9b690e3df0" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
|
19
|
+
await queryRunner.query(`ALTER TABLE "RecommendationDismissal" ADD CONSTRAINT "FK_9c62a79e18419e3fba90d38a3db" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
|
20
|
+
}
|
|
21
|
+
async down(queryRunner) {
|
|
22
|
+
await queryRunner.query(`ALTER TABLE "RecommendationDismissal" DROP CONSTRAINT "FK_9c62a79e18419e3fba90d38a3db"`);
|
|
23
|
+
await queryRunner.query(`ALTER TABLE "RecommendationDismissal" DROP CONSTRAINT "FK_c81cd63783d39af4d9b690e3df0"`);
|
|
24
|
+
await queryRunner.query(`ALTER TABLE "RecommendationDismissal" DROP CONSTRAINT "FK_b9b04eb32e1e2b49131fdf3dd67"`);
|
|
25
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_119f2c4f157c931d3b11eb339d"`);
|
|
26
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_b9b04eb32e1e2b49131fdf3dd6"`);
|
|
27
|
+
await queryRunner.query(`DROP TABLE "RecommendationDismissal"`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=1785397674289-AddRecommendationDismissalTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1785397674289-AddRecommendationDismissalTable.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,OAAO,4CAA4C;IAAzD;QAGS,SAAI,GAAG,8CAA8C,CAAC;IAyC/D,CAAC;IAvCQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,+mBAA+mB,CAChnB,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,2FAA2F,CAC5F,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,+IAA+I,CAChJ,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,mLAAmL,CACpL,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,uLAAuL,CACxL,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,uLAAuL,CACxL,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,wFAAwF,CACzF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,wFAAwF,CACzF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,wFAAwF,CACzF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAClE,CAAC;CACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Adds the drop-visibility counters to both drop-filter tables.
|
|
3
|
+
*
|
|
4
|
+
* A drop filter used to discard telemetry with no record anywhere — no log
|
|
5
|
+
* line, no metric, no counter — so a customer reporting missing logs could
|
|
6
|
+
* not be told whether their own filter was responsible. These columns are
|
|
7
|
+
* the customer-visible half of that fix; they are written by the ingest
|
|
8
|
+
* path via a throttled atomic UPDATE (see
|
|
9
|
+
* App/FeatureSet/Telemetry/Utils/DropFilterDropRecorder.ts) and surfaced on
|
|
10
|
+
* the Drop Filters list and view pages.
|
|
11
|
+
*
|
|
12
|
+
* `droppedCount` is bigint: a sample filter on a high-volume project can
|
|
13
|
+
* pass 2^31 well within a year, and silently wrapping a diagnostic counter
|
|
14
|
+
* would be worse than not having one. NOT NULL DEFAULT 0 so existing rows
|
|
15
|
+
* start at a meaningful zero rather than a null the UI has to special-case.
|
|
16
|
+
*/
|
|
17
|
+
export class AddDroppedCountersToDropFilters1785405581596 {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.name = "AddDroppedCountersToDropFilters1785405581596";
|
|
20
|
+
}
|
|
21
|
+
async up(queryRunner) {
|
|
22
|
+
await queryRunner.query(`ALTER TABLE "LogDropFilter" ADD "droppedCount" bigint NOT NULL DEFAULT '0'`);
|
|
23
|
+
await queryRunner.query(`ALTER TABLE "LogDropFilter" ADD "lastDroppedAt" TIMESTAMP WITH TIME ZONE`);
|
|
24
|
+
await queryRunner.query(`ALTER TABLE "TraceDropFilter" ADD "droppedCount" bigint NOT NULL DEFAULT '0'`);
|
|
25
|
+
await queryRunner.query(`ALTER TABLE "TraceDropFilter" ADD "lastDroppedAt" TIMESTAMP WITH TIME ZONE`);
|
|
26
|
+
}
|
|
27
|
+
async down(queryRunner) {
|
|
28
|
+
await queryRunner.query(`ALTER TABLE "TraceDropFilter" DROP COLUMN "lastDroppedAt"`);
|
|
29
|
+
await queryRunner.query(`ALTER TABLE "TraceDropFilter" DROP COLUMN "droppedCount"`);
|
|
30
|
+
await queryRunner.query(`ALTER TABLE "LogDropFilter" DROP COLUMN "lastDroppedAt"`);
|
|
31
|
+
await queryRunner.query(`ALTER TABLE "LogDropFilter" DROP COLUMN "droppedCount"`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=1785405581596-AddDroppedCountersToDropFilters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1785405581596-AddDroppedCountersToDropFilters.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,4CAA4C;IAAzD;QAGS,SAAI,GAAG,8CAA8C,CAAC;IA+B/D,CAAC;IA7BQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,4EAA4E,CAC7E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,0EAA0E,CAC3E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,8EAA8E,CAC/E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,4EAA4E,CAC7E,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,2DAA2D,CAC5D,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,0DAA0D,CAC3D,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,yDAAyD,CAC1D,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,wDAAwD,CACzD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -473,6 +473,11 @@ import { MigrationName1785066759532 } from "./1785066759532-MigrationName";
|
|
|
473
473
|
import { AddHotQueryIndexes1785140242697 } from "./1785140242697-AddHotQueryIndexes";
|
|
474
474
|
import { AddHotQueryIndexesSecondPass1785148065137 } from "./1785148065137-AddHotQueryIndexesSecondPass";
|
|
475
475
|
import { RepairCrossProjectMonitorStatusReferences1785240000000 } from "./1785240000000-RepairCrossProjectMonitorStatusReferences";
|
|
476
|
+
import { AddColumnsToTableView1785241000000 } from "./1785241000000-AddColumnsToTableView";
|
|
477
|
+
import { RepairCrossProjectIncidentReferences1785320000000 } from "./1785320000000-RepairCrossProjectIncidentReferences";
|
|
478
|
+
import { AddParentGroupToStatusPageGroup1785329453269 } from "./1785329453269-AddParentGroupToStatusPageGroup";
|
|
479
|
+
import { AddRecommendationDismissalTable1785397674289 } from "./1785397674289-AddRecommendationDismissalTable";
|
|
480
|
+
import { AddDroppedCountersToDropFilters1785405581596 } from "./1785405581596-AddDroppedCountersToDropFilters";
|
|
476
481
|
export default [
|
|
477
482
|
InitialMigration,
|
|
478
483
|
MigrationName1717678334852,
|
|
@@ -949,5 +954,10 @@ export default [
|
|
|
949
954
|
AddHotQueryIndexes1785140242697,
|
|
950
955
|
AddHotQueryIndexesSecondPass1785148065137,
|
|
951
956
|
RepairCrossProjectMonitorStatusReferences1785240000000,
|
|
957
|
+
AddColumnsToTableView1785241000000,
|
|
958
|
+
RepairCrossProjectIncidentReferences1785320000000,
|
|
959
|
+
AddParentGroupToStatusPageGroup1785329453269,
|
|
960
|
+
AddRecommendationDismissalTable1785397674289,
|
|
961
|
+
AddDroppedCountersToDropFilters1785405581596,
|
|
952
962
|
];
|
|
953
963
|
//# sourceMappingURL=Index.js.map
|