@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.
Files changed (414) hide show
  1. package/Models/AnalyticsModels/KubernetesCostAllocation.ts +103 -0
  2. package/Models/DatabaseModels/AlertEpisodeStateTimeline.ts +1 -0
  3. package/Models/DatabaseModels/AlertStateTimeline.ts +1 -0
  4. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
  5. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
  6. package/Models/DatabaseModels/Index.ts +5 -0
  7. package/Models/DatabaseModels/LogDropFilter.ts +89 -0
  8. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +13 -3
  9. package/Models/DatabaseModels/RecommendationDismissal.ts +463 -0
  10. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
  11. package/Models/DatabaseModels/StatusPageGroup.ts +95 -0
  12. package/Models/DatabaseModels/TableView.ts +40 -0
  13. package/Models/DatabaseModels/TraceDropFilter.ts +89 -0
  14. package/Models/DatabaseModels/WorkflowVariable.ts +5 -1
  15. package/Server/API/AlertAPI.ts +32 -17
  16. package/Server/API/BaseAPI.ts +31 -2
  17. package/Server/API/BaseAnalyticsAPI.ts +36 -2
  18. package/Server/API/CommonAPI.ts +57 -0
  19. package/Server/API/IncidentAPI.ts +60 -33
  20. package/Server/API/IncidentEpisodeAPI.ts +31 -16
  21. package/Server/API/MonitorAPI.ts +30 -0
  22. package/Server/API/MonitorTemplateAPI.ts +8 -0
  23. package/Server/API/ProbeAPI.ts +196 -15
  24. package/Server/API/ProjectAPI.ts +79 -1
  25. package/Server/API/ScheduledMaintenanceAPI.ts +33 -18
  26. package/Server/API/StatusPageAPI.ts +74 -37
  27. package/Server/API/WorkspaceNotificationRuleAPI.ts +34 -4
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.ts +13 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.ts +527 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.ts +31 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.ts +55 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.ts +53 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  34. package/Server/Services/AlertEpisodeService.ts +47 -0
  35. package/Server/Services/AlertService.ts +125 -0
  36. package/Server/Services/BillingService.ts +98 -0
  37. package/Server/Services/DatabaseService.ts +184 -20
  38. package/Server/Services/IncidentEpisodeService.ts +47 -0
  39. package/Server/Services/IncidentService.ts +123 -0
  40. package/Server/Services/IncidentTemplateService.ts +123 -1
  41. package/Server/Services/Index.ts +2 -0
  42. package/Server/Services/LogDropFilterService.ts +133 -0
  43. package/Server/Services/MonitorProbeService.ts +94 -4
  44. package/Server/Services/MonitorService.ts +48 -43
  45. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +70 -0
  46. package/Server/Services/ProbeService.ts +66 -0
  47. package/Server/Services/ProjectService.ts +131 -7
  48. package/Server/Services/RecommendationDismissalService.ts +52 -0
  49. package/Server/Services/RunbookAgentJobService.ts +68 -7
  50. package/Server/Services/ScheduledMaintenanceService.ts +103 -0
  51. package/Server/Services/ScheduledMaintenanceTemplateService.ts +90 -0
  52. package/Server/Services/StatusPageGroupService.ts +186 -0
  53. package/Server/Services/TraceDropFilterService.ts +133 -0
  54. package/Server/Types/Workflow/Components/API/Delete.ts +12 -0
  55. package/Server/Types/Workflow/Components/API/Get.ts +12 -0
  56. package/Server/Types/Workflow/Components/API/Patch.ts +12 -0
  57. package/Server/Types/Workflow/Components/API/Post.ts +12 -0
  58. package/Server/Types/Workflow/Components/API/Put.ts +13 -0
  59. package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +212 -0
  60. package/Server/Utils/DropFilterValidation.ts +127 -0
  61. package/Server/Utils/Errors.ts +5 -0
  62. package/Server/Utils/Monitor/MonitorAlert.ts +28 -1
  63. package/Server/Utils/Monitor/MonitorIncident.ts +31 -2
  64. package/Server/Utils/Telemetry/AppMetrics.ts +31 -0
  65. package/Tests/Models/AnalyticsModels/KubernetesCostAllocation.test.ts +16 -0
  66. package/Tests/Models/DatabaseModels/MonitorProbeColumnAccessControl.test.ts +196 -0
  67. package/Tests/Models/RecommendationDismissalModel.test.ts +269 -0
  68. package/Tests/Server/API/BaseAPIUpdatePayloadValidation.test.ts +320 -0
  69. package/Tests/Server/API/BaseAnalyticsAPIUpdatePayloadValidation.test.ts +293 -0
  70. package/Tests/Server/API/CommonAPIAuthGuard.test.ts +164 -0
  71. package/Tests/Server/API/ProbeAPI.test.ts +422 -53
  72. package/Tests/Server/API/ProjectAPI.test.ts +180 -0
  73. package/Tests/Server/API/ProjectAPIExtendTrialBillingDisabled.test.ts +138 -0
  74. package/Tests/Server/API/ProjectScopedCustomRouteAuth.test.ts +458 -0
  75. package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +359 -0
  76. package/Tests/Server/Infrastructure/ProcessSignalDelivery.test.ts +427 -0
  77. package/Tests/Server/Services/BillingServiceExtendTrial.test.ts +439 -0
  78. package/Tests/Server/Services/CrossProjectReferenceWriteGuard.test.ts +810 -0
  79. package/Tests/Server/Services/DatabaseServiceAtomicAddToColumns.test.ts +269 -0
  80. package/Tests/Server/Services/DatabaseServiceEmptyUpdate.test.ts +277 -0
  81. package/Tests/Server/Services/DatabaseServiceSortColumnSelect.test.ts +201 -0
  82. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +81 -23
  83. package/Tests/Server/Services/DropFilterSaveValidation.test.ts +398 -0
  84. package/Tests/Server/Services/MonitorProbeDeleteHooks.test.ts +280 -0
  85. package/Tests/Server/Services/MonitorProbeServiceProbeTenancy.test.ts +304 -0
  86. package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +262 -0
  87. package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +614 -0
  88. package/Tests/Server/Services/RecommendationDismissalService.test.ts +306 -0
  89. package/Tests/Server/Services/RepairCrossProjectIncidentReferencesMigration.test.ts +528 -0
  90. package/Tests/Server/Services/StatusPageGroupNesting.test.ts +395 -0
  91. package/Tests/Server/TestingUtils/Services/BillingServiceHelper.ts +26 -21
  92. package/Tests/Server/Types/Database/Permissions/WorkflowVariableColumnPermission.test.ts +227 -0
  93. package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +285 -0
  94. package/Tests/Server/Utils/Database/ProjectScopedReferenceValidator.test.ts +463 -0
  95. package/Tests/Server/Utils/DropFilterValidation.test.ts +269 -0
  96. package/Tests/Server/Utils/Telemetry/SpanUtil.test.ts +94 -0
  97. package/Tests/Types/DateUserTimezone.test.ts +52 -0
  98. package/Tests/Types/JSONFunctions.test.ts +103 -1
  99. package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +177 -9
  100. package/Tests/Types/Monitor/MonitorStepDnsMonitor.test.ts +105 -0
  101. package/Tests/Types/Monitor/MonitorStepDnssecMonitor.test.ts +131 -0
  102. package/Tests/Types/Monitor/MonitorStepDomainMonitor.test.ts +60 -0
  103. package/Tests/Types/Monitor/MonitorStepExternalStatusPageMonitor.test.ts +82 -0
  104. package/Tests/Types/Monitor/MonitorStepInfrastructureMonitors.test.ts +268 -0
  105. package/Tests/Types/Monitor/MonitorStepMetricMonitor.test.ts +386 -0
  106. package/Tests/Types/Monitor/MonitorStepProfileMonitor.test.ts +185 -0
  107. package/Tests/Types/Monitor/MonitorStepSnmpMonitor.test.ts +156 -0
  108. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +371 -0
  109. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +901 -0
  110. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +607 -0
  111. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +754 -0
  112. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +960 -0
  113. package/Tests/Types/RollingTime/RollingTimeUtil.test.ts +186 -0
  114. package/Tests/Types/Runbook/RunbookStepTimeout.test.ts +410 -0
  115. package/Tests/Types/Telemetry/DropFilterSampling.test.ts +241 -0
  116. package/Tests/Types/Workspace/NotificationRuleConditionUtil.test.ts +353 -0
  117. package/Tests/Types/Workspace/NotificationRuleUtil.test.ts +566 -0
  118. package/Tests/UI/Components/CodeEditor.test.tsx +174 -0
  119. package/Tests/UI/Components/ErrorBoundary.test.tsx +555 -24
  120. package/Tests/UI/Components/InfoCard.test.tsx +358 -0
  121. package/Tests/UI/Components/LogTimeRangePicker.test.tsx +138 -0
  122. package/Tests/UI/Components/Modal.test.tsx +43 -5
  123. package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +679 -0
  124. package/Tests/UI/Components/ModelTable/BaseModelTableSearchLabels.test.tsx +397 -0
  125. package/Tests/UI/Components/ModelTable/ColumnCustomizationModal.test.tsx +999 -0
  126. package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +1678 -0
  127. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1094 -0
  128. package/Tests/UI/Components/Runbook/StepTimeoutInput.test.tsx +386 -0
  129. package/Tests/UI/Components/StatusPage/ResourceGroupSection.test.tsx +671 -0
  130. package/Tests/UI/Components/TelemetryTimeRangePicker.test.tsx +404 -0
  131. package/Tests/UI/Utils/DropdownAlignment.test.ts +306 -0
  132. package/Tests/UI/Utils/TableFilterUrlState.test.ts +292 -0
  133. package/Tests/Utils/Monitor/MonitorSummaryProbeUtil.test.ts +263 -0
  134. package/Tests/Utils/NetworkDiscovery/ScanTargetUtil.test.ts +583 -0
  135. package/Tests/Utils/StatusPage/GroupNestingLayout.test.ts +1072 -0
  136. package/Tests/Utils/StatusPage/GroupTree.test.ts +583 -0
  137. package/Tests/Utils/StatusPage/ResourceUptime.test.ts +411 -0
  138. package/Tests/Utils/UserPreferences.test.ts +563 -0
  139. package/Types/Date.ts +15 -6
  140. package/Types/JSONFunctions.ts +7 -2
  141. package/Types/Kubernetes/KubernetesCostIngest.ts +37 -1
  142. package/Types/Monitor/KubernetesAlertTemplates.ts +205 -0
  143. package/Types/Monitor/MonitorStep.ts +10 -1
  144. package/Types/Monitor/MonitorStepMetricMonitor.ts +46 -1
  145. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +413 -0
  146. package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +168 -0
  147. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +175 -0
  148. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +743 -0
  149. package/Types/Permission.ts +45 -0
  150. package/Types/Recommendation/RecommendationType.ts +20 -0
  151. package/Types/Runbook/RunbookExecutionDeadline.ts +129 -0
  152. package/Types/Runbook/RunbookStepTimeout.ts +202 -0
  153. package/Types/Telemetry/DropFilterSampling.ts +92 -0
  154. package/UI/Components/AI/GenerateFromAIModal.tsx +0 -2
  155. package/UI/Components/Accordion/Accordion.tsx +10 -2
  156. package/UI/Components/BulkUpdate/BulkLabelActions.tsx +0 -1
  157. package/UI/Components/CodeEditor/CodeEditor.tsx +34 -20
  158. package/UI/Components/Date/RangeStartAndEndDateView.tsx +0 -1
  159. package/UI/Components/EditionLabel/EditionLabel.tsx +1 -27
  160. package/UI/Components/Error/PageError.tsx +0 -4
  161. package/UI/Components/ErrorBoundary.tsx +252 -15
  162. package/UI/Components/InfoCard/InfoCard.tsx +58 -1
  163. package/UI/Components/LogsViewer/components/LogTimeRangePicker.tsx +34 -1
  164. package/UI/Components/MasterPage/MasterPage.tsx +65 -0
  165. package/UI/Components/Modal/Modal.tsx +16 -60
  166. package/UI/Components/ModelFormModal/ModelFormModal.tsx +0 -8
  167. package/UI/Components/ModelTable/BaseModelTable.tsx +503 -71
  168. package/UI/Components/ModelTable/Column.ts +17 -0
  169. package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +523 -0
  170. package/UI/Components/ModelTable/ColumnPreference.ts +482 -0
  171. package/UI/Components/ModelTable/CustomFieldColumns.tsx +326 -0
  172. package/UI/Components/ModelTable/TableView.tsx +24 -2
  173. package/UI/Components/ModelTable/useCustomFieldColumns.ts +150 -0
  174. package/UI/Components/Runbook/StepTimeoutInput.tsx +173 -0
  175. package/UI/Components/SideMenu/SideMenu.tsx +24 -4
  176. package/UI/Components/StatusPage/ResourceGroupSection.tsx +231 -0
  177. package/UI/Components/Table/Table.tsx +14 -1
  178. package/UI/Components/Table/TableRow.tsx +180 -175
  179. package/UI/Components/Table/Types/Column.ts +2 -0
  180. package/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.tsx +34 -1
  181. package/UI/Utils/DropdownAlignment.ts +162 -0
  182. package/UI/Utils/TableFilterUrlState.ts +59 -20
  183. package/Utils/API.ts +106 -2
  184. package/Utils/Monitor/MonitorSummaryProbeUtil.ts +130 -0
  185. package/Utils/NetworkDiscovery/ScanTargetUtil.ts +434 -0
  186. package/Utils/StatusPage/GroupNestingLayout.ts +343 -0
  187. package/Utils/StatusPage/GroupTree.ts +307 -0
  188. package/Utils/StatusPage/ResourceUptime.ts +90 -17
  189. package/Utils/UserPreferences.ts +53 -0
  190. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js +86 -0
  191. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js +1 -0
  193. package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js.map +1 -1
  194. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +1 -0
  195. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -1
  196. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +1 -0
  197. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
  198. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
  199. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  200. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  201. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  202. package/build/dist/Models/DatabaseModels/LogDropFilter.js +91 -0
  203. package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -1
  204. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +14 -4
  205. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  206. package/build/dist/Models/DatabaseModels/RecommendationDismissal.js +484 -0
  207. package/build/dist/Models/DatabaseModels/RecommendationDismissal.js.map +1 -0
  208. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
  209. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  210. package/build/dist/Models/DatabaseModels/StatusPageGroup.js +94 -0
  211. package/build/dist/Models/DatabaseModels/StatusPageGroup.js.map +1 -1
  212. package/build/dist/Models/DatabaseModels/TableView.js +40 -0
  213. package/build/dist/Models/DatabaseModels/TableView.js.map +1 -1
  214. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +91 -0
  215. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -1
  216. package/build/dist/Models/DatabaseModels/WorkflowVariable.js +5 -1
  217. package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
  218. package/build/dist/Server/API/AlertAPI.js +22 -13
  219. package/build/dist/Server/API/AlertAPI.js.map +1 -1
  220. package/build/dist/Server/API/BaseAPI.js +22 -1
  221. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  222. package/build/dist/Server/API/BaseAnalyticsAPI.js +24 -1
  223. package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
  224. package/build/dist/Server/API/CommonAPI.js +42 -0
  225. package/build/dist/Server/API/CommonAPI.js.map +1 -1
  226. package/build/dist/Server/API/IncidentAPI.js +43 -26
  227. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  228. package/build/dist/Server/API/IncidentEpisodeAPI.js +21 -12
  229. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
  230. package/build/dist/Server/API/MonitorAPI.js +23 -0
  231. package/build/dist/Server/API/MonitorAPI.js.map +1 -1
  232. package/build/dist/Server/API/MonitorTemplateAPI.js +4 -0
  233. package/build/dist/Server/API/MonitorTemplateAPI.js.map +1 -1
  234. package/build/dist/Server/API/ProbeAPI.js +131 -15
  235. package/build/dist/Server/API/ProbeAPI.js.map +1 -1
  236. package/build/dist/Server/API/ProjectAPI.js +62 -3
  237. package/build/dist/Server/API/ProjectAPI.js.map +1 -1
  238. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +23 -14
  239. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
  240. package/build/dist/Server/API/StatusPageAPI.js +61 -33
  241. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  242. package/build/dist/Server/API/WorkspaceNotificationRuleAPI.js +26 -2
  243. package/build/dist/Server/API/WorkspaceNotificationRuleAPI.js.map +1 -1
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js +12 -0
  245. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js.map +1 -0
  246. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.js +397 -0
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.js.map +1 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.js +16 -0
  249. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.js.map +1 -0
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.js +30 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.js.map +1 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.js +34 -0
  253. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.js.map +1 -0
  254. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  255. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  256. package/build/dist/Server/Services/AlertEpisodeService.js +39 -0
  257. package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
  258. package/build/dist/Server/Services/AlertService.js +95 -0
  259. package/build/dist/Server/Services/AlertService.js.map +1 -1
  260. package/build/dist/Server/Services/BillingService.js +71 -0
  261. package/build/dist/Server/Services/BillingService.js.map +1 -1
  262. package/build/dist/Server/Services/DatabaseService.js +140 -17
  263. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  264. package/build/dist/Server/Services/IncidentEpisodeService.js +39 -0
  265. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  266. package/build/dist/Server/Services/IncidentService.js +100 -0
  267. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  268. package/build/dist/Server/Services/IncidentTemplateService.js +97 -0
  269. package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
  270. package/build/dist/Server/Services/Index.js +2 -0
  271. package/build/dist/Server/Services/Index.js.map +1 -1
  272. package/build/dist/Server/Services/LogDropFilterService.js +93 -0
  273. package/build/dist/Server/Services/LogDropFilterService.js.map +1 -1
  274. package/build/dist/Server/Services/MonitorProbeService.js +73 -5
  275. package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
  276. package/build/dist/Server/Services/MonitorService.js +34 -39
  277. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  278. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +71 -0
  279. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  280. package/build/dist/Server/Services/ProbeService.js +64 -0
  281. package/build/dist/Server/Services/ProbeService.js.map +1 -1
  282. package/build/dist/Server/Services/ProjectService.js +103 -7
  283. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  284. package/build/dist/Server/Services/RecommendationDismissalService.js +50 -0
  285. package/build/dist/Server/Services/RecommendationDismissalService.js.map +1 -0
  286. package/build/dist/Server/Services/RunbookAgentJobService.js +63 -5
  287. package/build/dist/Server/Services/RunbookAgentJobService.js.map +1 -1
  288. package/build/dist/Server/Services/ScheduledMaintenanceService.js +83 -0
  289. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  290. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js +65 -0
  291. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js.map +1 -1
  292. package/build/dist/Server/Services/StatusPageGroupService.js +136 -0
  293. package/build/dist/Server/Services/StatusPageGroupService.js.map +1 -1
  294. package/build/dist/Server/Services/TraceDropFilterService.js +93 -0
  295. package/build/dist/Server/Services/TraceDropFilterService.js.map +1 -1
  296. package/build/dist/Server/Types/Workflow/Components/API/Delete.js +11 -0
  297. package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
  298. package/build/dist/Server/Types/Workflow/Components/API/Get.js +11 -0
  299. package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
  300. package/build/dist/Server/Types/Workflow/Components/API/Patch.js +11 -0
  301. package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
  302. package/build/dist/Server/Types/Workflow/Components/API/Post.js +11 -0
  303. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  304. package/build/dist/Server/Types/Workflow/Components/API/Put.js +12 -0
  305. package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
  306. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +132 -0
  307. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -0
  308. package/build/dist/Server/Utils/DropFilterValidation.js +80 -0
  309. package/build/dist/Server/Utils/DropFilterValidation.js.map +1 -0
  310. package/build/dist/Server/Utils/Errors.js +3 -0
  311. package/build/dist/Server/Utils/Errors.js.map +1 -1
  312. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +30 -12
  313. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  314. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +38 -18
  315. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  316. package/build/dist/Server/Utils/Telemetry/AppMetrics.js +26 -0
  317. package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
  318. package/build/dist/Types/Date.js +14 -4
  319. package/build/dist/Types/Date.js.map +1 -1
  320. package/build/dist/Types/JSONFunctions.js +8 -3
  321. package/build/dist/Types/JSONFunctions.js.map +1 -1
  322. package/build/dist/Types/Kubernetes/KubernetesCostIngest.js.map +1 -1
  323. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +192 -0
  324. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  325. package/build/dist/Types/Monitor/MonitorStep.js +6 -1
  326. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  327. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js +32 -1
  328. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
  329. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +294 -0
  330. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -0
  331. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +110 -0
  332. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -0
  333. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +58 -0
  334. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -0
  335. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +451 -0
  336. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -0
  337. package/build/dist/Types/Permission.js +40 -0
  338. package/build/dist/Types/Permission.js.map +1 -1
  339. package/build/dist/Types/Recommendation/RecommendationType.js +21 -0
  340. package/build/dist/Types/Recommendation/RecommendationType.js.map +1 -0
  341. package/build/dist/Types/Runbook/RunbookExecutionDeadline.js +93 -0
  342. package/build/dist/Types/Runbook/RunbookExecutionDeadline.js.map +1 -0
  343. package/build/dist/Types/Runbook/RunbookStepTimeout.js +142 -0
  344. package/build/dist/Types/Runbook/RunbookStepTimeout.js.map +1 -0
  345. package/build/dist/Types/Telemetry/DropFilterSampling.js +75 -0
  346. package/build/dist/Types/Telemetry/DropFilterSampling.js.map +1 -0
  347. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -2
  348. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  349. package/build/dist/UI/Components/Accordion/Accordion.js +9 -2
  350. package/build/dist/UI/Components/Accordion/Accordion.js.map +1 -1
  351. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +1 -1
  352. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
  353. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +27 -14
  354. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  355. package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js +1 -1
  356. package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js.map +1 -1
  357. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +2 -20
  358. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  359. package/build/dist/UI/Components/Error/PageError.js +1 -3
  360. package/build/dist/UI/Components/Error/PageError.js.map +1 -1
  361. package/build/dist/UI/Components/ErrorBoundary.js +145 -11
  362. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  363. package/build/dist/UI/Components/InfoCard/InfoCard.js +28 -1
  364. package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
  365. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js +13 -2
  366. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js.map +1 -1
  367. package/build/dist/UI/Components/MasterPage/MasterPage.js +50 -1
  368. package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
  369. package/build/dist/UI/Components/Modal/Modal.js +4 -32
  370. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  371. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
  372. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +308 -40
  373. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  374. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +230 -0
  375. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -0
  376. package/build/dist/UI/Components/ModelTable/ColumnPreference.js +258 -0
  377. package/build/dist/UI/Components/ModelTable/ColumnPreference.js.map +1 -0
  378. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +168 -0
  379. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -0
  380. package/build/dist/UI/Components/ModelTable/TableView.js +13 -2
  381. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  382. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +84 -0
  383. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -0
  384. package/build/dist/UI/Components/Runbook/StepTimeoutInput.js +101 -0
  385. package/build/dist/UI/Components/Runbook/StepTimeoutInput.js.map +1 -0
  386. package/build/dist/UI/Components/SideMenu/SideMenu.js +15 -5
  387. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  388. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js +73 -0
  389. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js.map +1 -0
  390. package/build/dist/UI/Components/Table/Table.js +15 -2
  391. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  392. package/build/dist/UI/Components/Table/TableRow.js +11 -6
  393. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  394. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js +13 -2
  395. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js.map +1 -1
  396. package/build/dist/UI/Utils/DropdownAlignment.js +98 -0
  397. package/build/dist/UI/Utils/DropdownAlignment.js.map +1 -0
  398. package/build/dist/UI/Utils/TableFilterUrlState.js +48 -15
  399. package/build/dist/UI/Utils/TableFilterUrlState.js.map +1 -1
  400. package/build/dist/Utils/API.js +39 -2
  401. package/build/dist/Utils/API.js.map +1 -1
  402. package/build/dist/Utils/Monitor/MonitorSummaryProbeUtil.js +97 -0
  403. package/build/dist/Utils/Monitor/MonitorSummaryProbeUtil.js.map +1 -0
  404. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js +330 -0
  405. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js.map +1 -0
  406. package/build/dist/Utils/StatusPage/GroupNestingLayout.js +280 -0
  407. package/build/dist/Utils/StatusPage/GroupNestingLayout.js.map +1 -0
  408. package/build/dist/Utils/StatusPage/GroupTree.js +214 -0
  409. package/build/dist/Utils/StatusPage/GroupTree.js.map +1 -0
  410. package/build/dist/Utils/StatusPage/ResourceUptime.js +60 -16
  411. package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
  412. package/build/dist/Utils/UserPreferences.js +33 -0
  413. package/build/dist/Utils/UserPreferences.js.map +1 -1
  414. 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