@oneuptime/common 13.0.1 → 13.0.3

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 (769) hide show
  1. package/Models/AnalyticsModels/RumSession.ts +34 -0
  2. package/Models/DatabaseModels/AlertEpisodeLabelRule.ts +2 -2
  3. package/Models/DatabaseModels/AlertEpisodeOnCallRule.ts +2 -2
  4. package/Models/DatabaseModels/AlertEpisodeOwnerRule.ts +2 -2
  5. package/Models/DatabaseModels/AlertEpisodePrivacyRule.ts +2 -2
  6. package/Models/DatabaseModels/AlertGroupingRule.ts +2 -2
  7. package/Models/DatabaseModels/AlertLabelRule.ts +2 -2
  8. package/Models/DatabaseModels/AlertOnCallRule.ts +2 -2
  9. package/Models/DatabaseModels/AlertOwnerRule.ts +2 -2
  10. package/Models/DatabaseModels/AlertPrivacyRule.ts +2 -2
  11. package/Models/DatabaseModels/AlertReminderRule.ts +6 -4
  12. package/Models/DatabaseModels/AutoRemediationRule.ts +2 -2
  13. package/Models/DatabaseModels/CephClusterLabelRule.ts +2 -2
  14. package/Models/DatabaseModels/CephClusterOwnerRule.ts +2 -2
  15. package/Models/DatabaseModels/CloudResourceLabelRule.ts +2 -2
  16. package/Models/DatabaseModels/CloudResourceOwnerRule.ts +2 -2
  17. package/Models/DatabaseModels/DashboardLabelRule.ts +2 -2
  18. package/Models/DatabaseModels/DashboardOwnerRule.ts +2 -2
  19. package/Models/DatabaseModels/DatabaseBaseModel/RelationOnlyRuleBaseModel.ts +11 -0
  20. package/Models/DatabaseModels/DatabaseBaseModel/RuleBaseModel.ts +44 -0
  21. package/Models/DatabaseModels/DockerHostLabelRule.ts +2 -2
  22. package/Models/DatabaseModels/DockerHostOwnerRule.ts +2 -2
  23. package/Models/DatabaseModels/DockerSwarmClusterLabelRule.ts +2 -2
  24. package/Models/DatabaseModels/DockerSwarmClusterOwnerRule.ts +2 -2
  25. package/Models/DatabaseModels/HostLabelRule.ts +2 -2
  26. package/Models/DatabaseModels/HostOwnerRule.ts +2 -2
  27. package/Models/DatabaseModels/IncidentEpisodeLabelRule.ts +2 -2
  28. package/Models/DatabaseModels/IncidentEpisodeOnCallRule.ts +2 -2
  29. package/Models/DatabaseModels/IncidentEpisodeOwnerRule.ts +2 -2
  30. package/Models/DatabaseModels/IncidentEpisodePrivacyRule.ts +2 -2
  31. package/Models/DatabaseModels/IncidentGroupingRule.ts +2 -2
  32. package/Models/DatabaseModels/IncidentLabelRule.ts +2 -2
  33. package/Models/DatabaseModels/IncidentOnCallRule.ts +2 -2
  34. package/Models/DatabaseModels/IncidentOwnerRule.ts +2 -2
  35. package/Models/DatabaseModels/IncidentPrivacyRule.ts +2 -2
  36. package/Models/DatabaseModels/IncidentReminderRule.ts +6 -4
  37. package/Models/DatabaseModels/IncidentSlaRule.ts +2 -2
  38. package/Models/DatabaseModels/IncomingCallPolicy.ts +3 -4
  39. package/Models/DatabaseModels/IncomingCallPolicyLabelRule.ts +2 -2
  40. package/Models/DatabaseModels/IncomingCallPolicyOwnerRule.ts +2 -2
  41. package/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.ts +254 -0
  42. package/Models/DatabaseModels/Index.ts +2 -0
  43. package/Models/DatabaseModels/IoTFleetLabelRule.ts +2 -2
  44. package/Models/DatabaseModels/IoTFleetOwnerRule.ts +2 -2
  45. package/Models/DatabaseModels/KubernetesClusterLabelRule.ts +2 -2
  46. package/Models/DatabaseModels/KubernetesClusterOwnerRule.ts +2 -2
  47. package/Models/DatabaseModels/MonitorLabelRule.ts +2 -2
  48. package/Models/DatabaseModels/MonitorOwnerRule.ts +2 -2
  49. package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +2 -2
  50. package/Models/DatabaseModels/NetworkDeviceLabelRule.ts +2 -2
  51. package/Models/DatabaseModels/NetworkDeviceOwnerRule.ts +2 -2
  52. package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +2 -2
  53. package/Models/DatabaseModels/OnCallDutyPolicyLabelRule.ts +2 -2
  54. package/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.ts +2 -2
  55. package/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.ts +2 -2
  56. package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.ts +2 -2
  57. package/Models/DatabaseModels/PodmanHostLabelRule.ts +2 -2
  58. package/Models/DatabaseModels/PodmanHostOwnerRule.ts +2 -2
  59. package/Models/DatabaseModels/ProxmoxClusterLabelRule.ts +2 -2
  60. package/Models/DatabaseModels/ProxmoxClusterOwnerRule.ts +2 -2
  61. package/Models/DatabaseModels/RumApplicationLabelRule.ts +2 -2
  62. package/Models/DatabaseModels/RumApplicationOwnerRule.ts +2 -2
  63. package/Models/DatabaseModels/RunbookLabelRule.ts +2 -2
  64. package/Models/DatabaseModels/RunbookOwnerRule.ts +2 -2
  65. package/Models/DatabaseModels/RunbookRule.ts +2 -2
  66. package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +2 -2
  67. package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +2 -2
  68. package/Models/DatabaseModels/ScheduledMaintenanceReminderRule.ts +6 -4
  69. package/Models/DatabaseModels/ServerlessFunctionLabelRule.ts +2 -2
  70. package/Models/DatabaseModels/ServerlessFunctionOwnerRule.ts +2 -2
  71. package/Models/DatabaseModels/ServiceLabelRule.ts +2 -2
  72. package/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.ts +283 -4
  73. package/Models/DatabaseModels/ServiceOwnerRule.ts +2 -2
  74. package/Models/DatabaseModels/StatusPageLabelRule.ts +2 -2
  75. package/Models/DatabaseModels/StatusPageMonitorRule.ts +2 -2
  76. package/Models/DatabaseModels/StatusPageOwnerRule.ts +2 -2
  77. package/Models/DatabaseModels/VMwareVCenterLabelRule.ts +2 -2
  78. package/Models/DatabaseModels/VMwareVCenterOwnerRule.ts +2 -2
  79. package/Models/DatabaseModels/WorkflowLabelRule.ts +2 -2
  80. package/Models/DatabaseModels/WorkflowOwnerRule.ts +2 -2
  81. package/Server/API/TelemetryAPI.ts +323 -2
  82. package/Server/Infrastructure/Postgres/SchemaMigrations/1792400000000-AddSloBurnRateRuleIncidents.ts +111 -0
  83. package/Server/Infrastructure/Postgres/SchemaMigrations/1792500000000-AddConfigurableRuleCriteria.ts +644 -0
  84. package/Server/Infrastructure/Postgres/SchemaMigrations/1792600000000-AddIncomingCallPolicyPhoneNumbers.ts +72 -0
  85. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  86. package/Server/Middleware/MultipartFormData.ts +46 -21
  87. package/Server/Services/AlertEpisodeLabelRuleEngineService.ts +21 -0
  88. package/Server/Services/AlertEpisodeOnCallRuleEngineService.ts +21 -0
  89. package/Server/Services/AlertEpisodeOwnerRuleEngineService.ts +21 -0
  90. package/Server/Services/AlertEpisodePrivacyRuleEngineService.ts +21 -0
  91. package/Server/Services/AlertGroupingEngineService.ts +27 -0
  92. package/Server/Services/AlertLabelRuleEngineService.ts +27 -0
  93. package/Server/Services/AlertOnCallRuleEngineService.ts +27 -0
  94. package/Server/Services/AlertOwnerRuleEngineService.ts +27 -0
  95. package/Server/Services/AlertPrivacyRuleEngineService.ts +27 -0
  96. package/Server/Services/AlertReminderRuleService.ts +65 -33
  97. package/Server/Services/AutoRemediationRuleEngineService.ts +90 -8
  98. package/Server/Services/CephClusterLabelRuleEngineService.ts +20 -0
  99. package/Server/Services/CephClusterOwnerRuleEngineService.ts +20 -0
  100. package/Server/Services/CloudResourceLabelRuleEngineService.ts +20 -0
  101. package/Server/Services/CloudResourceOwnerRuleEngineService.ts +20 -0
  102. package/Server/Services/DashboardLabelRuleEngineService.ts +20 -0
  103. package/Server/Services/DashboardOwnerRuleEngineService.ts +20 -0
  104. package/Server/Services/DatabaseService.ts +409 -6
  105. package/Server/Services/DockerHostLabelRuleEngineService.ts +20 -0
  106. package/Server/Services/DockerHostOwnerRuleEngineService.ts +20 -0
  107. package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +23 -0
  108. package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +23 -0
  109. package/Server/Services/HostLabelRuleEngineService.ts +13 -0
  110. package/Server/Services/HostOwnerRuleEngineService.ts +13 -0
  111. package/Server/Services/IncidentEpisodeLabelRuleEngineService.ts +21 -0
  112. package/Server/Services/IncidentEpisodeOnCallRuleEngineService.ts +21 -0
  113. package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +21 -0
  114. package/Server/Services/IncidentEpisodePrivacyRuleEngineService.ts +21 -0
  115. package/Server/Services/IncidentGroupingEngineService.ts +64 -13
  116. package/Server/Services/IncidentLabelRuleEngineService.ts +64 -9
  117. package/Server/Services/IncidentOnCallRuleEngineService.ts +64 -10
  118. package/Server/Services/IncidentOwnerRuleEngineService.ts +64 -10
  119. package/Server/Services/IncidentPrivacyRuleEngineService.ts +64 -10
  120. package/Server/Services/IncidentReminderRuleService.ts +66 -34
  121. package/Server/Services/IncidentSlaRuleService.ts +55 -12
  122. package/Server/Services/IncomingCallPolicyLabelRuleEngineService.ts +20 -0
  123. package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +20 -0
  124. package/Server/Services/IncomingCallPolicyPhoneNumberService.ts +184 -0
  125. package/Server/Services/IncomingCallPolicyService.ts +276 -5
  126. package/Server/Services/Index.ts +2 -0
  127. package/Server/Services/IoTFleetLabelRuleEngineService.ts +20 -0
  128. package/Server/Services/IoTFleetOwnerRuleEngineService.ts +20 -0
  129. package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +23 -0
  130. package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +23 -0
  131. package/Server/Services/LabelService.ts +50 -7
  132. package/Server/Services/MonitorLabelRuleEngineService.ts +20 -0
  133. package/Server/Services/MonitorOwnerRuleEngineService.ts +20 -0
  134. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +2 -0
  135. package/Server/Services/NetworkDeviceAutoImportRuleService.ts +93 -1
  136. package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +26 -0
  137. package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +25 -0
  138. package/Server/Services/NetworkDeviceService.ts +2 -0
  139. package/Server/Services/NetworkSiteAssignmentRuleService.ts +90 -1
  140. package/Server/Services/NetworkSiteService.ts +242 -29
  141. package/Server/Services/NetworkSiteTypeService.ts +177 -77
  142. package/Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts +20 -0
  143. package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +20 -0
  144. package/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts +22 -0
  145. package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +22 -0
  146. package/Server/Services/PodmanHostLabelRuleEngineService.ts +20 -0
  147. package/Server/Services/PodmanHostOwnerRuleEngineService.ts +20 -0
  148. package/Server/Services/ProjectCallSMSConfigService.ts +156 -7
  149. package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +25 -0
  150. package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +25 -0
  151. package/Server/Services/RumApplicationLabelRuleEngineService.ts +22 -0
  152. package/Server/Services/RumApplicationOwnerRuleEngineService.ts +22 -0
  153. package/Server/Services/RunbookLabelRuleEngineService.ts +20 -0
  154. package/Server/Services/RunbookOwnerRuleEngineService.ts +20 -0
  155. package/Server/Services/RunbookRuleEngineService.ts +18 -1
  156. package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +62 -10
  157. package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +62 -11
  158. package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +48 -18
  159. package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +25 -0
  160. package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +25 -0
  161. package/Server/Services/ServiceLabelRuleEngineService.ts +20 -0
  162. package/Server/Services/ServiceLevelObjectiveBurnRateRuleService.ts +675 -12
  163. package/Server/Services/ServiceLevelObjectiveService.ts +55 -13
  164. package/Server/Services/ServiceOwnerRuleEngineService.ts +20 -0
  165. package/Server/Services/StatusPageLabelRuleEngineService.ts +20 -0
  166. package/Server/Services/StatusPageMonitorRuleEngineService.ts +31 -2
  167. package/Server/Services/StatusPageMonitorRuleService.ts +34 -1
  168. package/Server/Services/StatusPageOwnerRuleEngineService.ts +20 -0
  169. package/Server/Services/UserService.ts +23 -50
  170. package/Server/Services/VMwareVCenterLabelRuleEngineService.ts +25 -0
  171. package/Server/Services/VMwareVCenterOwnerRuleEngineService.ts +25 -0
  172. package/Server/Services/WorkflowLabelRuleEngineService.ts +20 -0
  173. package/Server/Services/WorkflowOwnerRuleEngineService.ts +20 -0
  174. package/Server/Static/Brand/README.md +10 -5
  175. package/Server/Static/Brand/favicons/oneuptime-up-v1.svg +8 -0
  176. package/Server/Types/Database/QueryHelper.ts +88 -0
  177. package/Server/Utils/AI/Toolbox/SloTools.ts +19 -2
  178. package/Server/Utils/IncomingCallPhoneNumber.ts +29 -16
  179. package/Server/Utils/Profiling.ts +13 -1
  180. package/Server/Utils/Rules/MonitorRuleCriteriaCache.ts +38 -0
  181. package/Server/Utils/SessionReplay/SessionReplayReadService.ts +498 -0
  182. package/Server/Utils/Telemetry.ts +3 -1
  183. package/Server/Utils/VendorAssets.ts +3 -0
  184. package/Tests/App/Dashboard/AIInsightViewTriage.test.tsx +348 -0
  185. package/Tests/App/Dashboard/ArchiveResourceCard.test.tsx +476 -0
  186. package/Tests/App/Dashboard/CloudDocumentationCard.test.tsx +25 -0
  187. package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +449 -24
  188. package/Tests/App/Dashboard/DashboardPersistentSideMenuLayouts.test.tsx +702 -0
  189. package/Tests/App/Dashboard/ExceptionsLandingRedirect.test.tsx +63 -0
  190. package/Tests/App/Dashboard/FeedOrdering.test.ts +150 -0
  191. package/Tests/App/Dashboard/GoogleSecOpsConnectionsErrors.test.tsx +279 -100
  192. package/Tests/App/Dashboard/InventoryItemSideMenu.test.tsx +155 -0
  193. package/Tests/App/Dashboard/InvestigationFeedRefresh.test.tsx +11 -0
  194. package/Tests/App/Dashboard/PasskeySettings.test.tsx +215 -71
  195. package/Tests/App/Dashboard/ResourceArchiveSettings.test.tsx +347 -0
  196. package/Tests/App/Dashboard/ResourceAuditLogsSideMenus.test.tsx +263 -0
  197. package/Tests/App/Dashboard/ResourceFeed.test.tsx +413 -17
  198. package/Tests/App/Dashboard/RumSessionReplaySideMenu.test.tsx +138 -0
  199. package/Tests/App/Dashboard/SloDashboardTemplateWidgets.test.tsx +940 -0
  200. package/Tests/App/Dashboard/TelemetryIngestionKeyEdit.test.tsx +378 -0
  201. package/Tests/App/Dashboard/TelemetryIngestionKeyForm.test.tsx +735 -0
  202. package/Tests/App/Dashboard/TwoFactorStatus.test.tsx +275 -108
  203. package/Tests/App/StatusPage/BulkAddStatusPageMonitorsModal.test.tsx +13 -3
  204. package/Tests/Models/AnalyticsModels/RumSessionReplayColumns.test.ts +127 -4
  205. package/Tests/Models/DatabaseModels/DomainRoleTierCoverage.test.ts +5 -4
  206. package/Tests/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.test.ts +362 -0
  207. package/Tests/Models/DatabaseModels/RuleBaseModel.test.ts +69 -0
  208. package/Tests/Models/DatabaseModels/StaticRuleCriteriaInheritance.test.ts +181 -0
  209. package/Tests/Server/API/SessionReplayAPI.test.ts +1303 -145
  210. package/Tests/Server/API/UserTwoFactorSelfService.test.ts +407 -0
  211. package/Tests/Server/Infrastructure/Postgres/AddConfigurableRuleCriteriaMigration.test.ts +611 -0
  212. package/Tests/Server/Middleware/MultipartFormData.test.ts +61 -3
  213. package/Tests/Server/Middleware/TelemetryIngestionDisabled.test.ts +211 -0
  214. package/Tests/Server/Services/AlertIncidentRuleCriteriaEngineServices.test.ts +651 -0
  215. package/Tests/Server/Services/AutoRemediationRuleEngineService.test.ts +79 -0
  216. package/Tests/Server/Services/DatabaseServiceRelationOnlyRuleRollout.test.ts +330 -0
  217. package/Tests/Server/Services/DatabaseServiceRuleCriteriaValidation.test.ts +522 -0
  218. package/Tests/Server/Services/IncidentSlaRuleCriteriaCorrelation.test.ts +99 -0
  219. package/Tests/Server/Services/IncomingCallPolicyPhoneNumberService.test.ts +1540 -0
  220. package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +179 -2
  221. package/Tests/Server/Services/NetworkSiteAssignmentRuleService.test.ts +170 -0
  222. package/Tests/Server/Services/NetworkSiteService.test.ts +559 -53
  223. package/Tests/Server/Services/NetworkSiteTypeService.test.ts +122 -55
  224. package/Tests/Server/Services/ReminderRuleCriteria.test.ts +173 -0
  225. package/Tests/Server/Services/ResourceRuleCriteriaEngineServices.test.ts +170 -0
  226. package/Tests/Server/Services/ScheduledMaintenanceRuleCriteriaCorrelation.test.ts +154 -0
  227. package/Tests/Server/Services/ServiceLevelObjectiveBurnRateRuleService.test.ts +2450 -470
  228. package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +464 -121
  229. package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +281 -0
  230. package/Tests/Server/Services/StatusPageMonitorRuleEngineService.test.ts +132 -0
  231. package/Tests/Server/Services/StatusPageMonitorRuleHooks.test.ts +159 -14
  232. package/Tests/Server/Services/UserEmailChangePasswordResetExpiry.test.ts +6 -8
  233. package/Tests/Server/Services/UserTwoFactorAuthAdmin.test.ts +203 -34
  234. package/Tests/Server/Types/Database/QueryHelperJsonArrayObjects.test.ts +128 -0
  235. package/Tests/Server/Utils/AI/SloTools.test.ts +190 -1
  236. package/Tests/Server/Utils/AI/Toolbox/AIToolbox.test.ts +461 -0
  237. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +25 -0
  238. package/Tests/Server/Utils/Billing/BillingFailureNoticeThrottle.test.ts +359 -0
  239. package/Tests/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.test.ts +318 -0
  240. package/Tests/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.test.ts +220 -0
  241. package/Tests/Server/Utils/Dashboard/SloTemplatePublicDashboard.test.ts +1043 -0
  242. package/Tests/Server/Utils/Execute.test.ts +302 -0
  243. package/Tests/Server/Utils/GracefulShutdown.test.ts +565 -0
  244. package/Tests/Server/Utils/IncomingCallPhoneNumber.test.ts +36 -20
  245. package/Tests/Server/Utils/Monitor/SloTemplateMetricEmitterContract.test.ts +750 -0
  246. package/Tests/Server/Utils/ProductAnalytics.test.ts +404 -0
  247. package/Tests/Server/Utils/Profiling.test.ts +366 -0
  248. package/Tests/Server/Utils/Rules/MonitorRuleCriteriaCache.test.ts +99 -0
  249. package/Tests/Server/Utils/SessionReplay/SessionReplayReadServiceQueries.test.ts +558 -0
  250. package/Tests/Server/Utils/VendorAssets.test.ts +17 -0
  251. package/Tests/Types/Dashboard/DashboardTemplateEditorialInvariants.test.ts +659 -0
  252. package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +97 -0
  253. package/Tests/Types/Dashboard/SloDashboardTemplate.test.ts +1179 -0
  254. package/Tests/Types/Database/AccessControl/OwnedThrough.test.ts +136 -0
  255. package/Tests/Types/Rum/SessionReplayApiContracts.test.ts +180 -1
  256. package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +13 -6
  257. package/Tests/UI/Components/Alert.test.tsx +532 -93
  258. package/Tests/UI/Components/Feed.test.tsx +241 -0
  259. package/Tests/UI/Components/Forms/BasicFormStepNavigation.test.tsx +368 -0
  260. package/Tests/UI/Components/Forms/FormSummary.test.tsx +454 -0
  261. package/Tests/UI/Components/Forms/ModelFormJsonColumns.test.tsx +290 -0
  262. package/Tests/UI/Components/Forms/ModelFormRuleCriteria.test.tsx +331 -0
  263. package/Tests/UI/Components/IconOpticalSize.test.tsx +79 -31
  264. package/Tests/UI/Components/ModelTable/ModelTableWrapContent.test.tsx +6 -6
  265. package/Tests/UI/Components/NavBar.test.tsx +91 -2
  266. package/Tests/UI/Components/PencilButton.test.tsx +211 -0
  267. package/Tests/UI/Components/RuleCriteria/RuleCriteriaBuilder.test.tsx +510 -0
  268. package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +350 -0
  269. package/Tests/UI/Components/TableSortAndMobileColumns.test.tsx +50 -0
  270. package/Tests/UI/Components/Telemetry/TelemetryRetentionConfigForm.test.tsx +329 -0
  271. package/Tests/UI/Components/useFeedItems.test.tsx +107 -0
  272. package/Tests/UI/Rum/ChunkLoader.test.ts +401 -0
  273. package/Tests/UI/Rum/RecordingHealthCard.test.tsx +1 -1
  274. package/Tests/UI/Rum/RecordingHealthStrip.test.tsx +7 -1
  275. package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +2 -0
  276. package/Tests/UI/Rum/ReplayEngine.test.ts +1069 -5
  277. package/Tests/UI/Rum/ReplayHeader.test.tsx +579 -2
  278. package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +23 -5
  279. package/Tests/UI/Rum/ReplayRail.test.tsx +143 -1
  280. package/Tests/UI/Rum/ReplayRenderBudget.test.tsx +338 -0
  281. package/Tests/UI/Rum/ReplaySignals.test.ts +179 -0
  282. package/Tests/UI/Rum/ReplayStage.test.tsx +210 -3
  283. package/Tests/UI/Rum/ReplayTimeline.test.tsx +180 -1
  284. package/Tests/UI/Rum/ReplayUserSessionsMenu.test.tsx +405 -0
  285. package/Tests/UI/Rum/SessionReplayEmptyState.test.tsx +13 -16
  286. package/Tests/UI/Rum/SessionReplayFacets.test.tsx +199 -0
  287. package/Tests/UI/Rum/SessionReplaySearchBar.test.tsx +58 -21
  288. package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +2 -0
  289. package/Tests/UI/Rum/SessionReplayTable.test.tsx +717 -4
  290. package/Tests/UI/Rum/SessionReplayUsersPage.test.tsx +435 -0
  291. package/Tests/UI/Rum/SessionReplayUsersTable.test.tsx +577 -0
  292. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +1 -1
  293. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +1 -1
  294. package/Tests/UI/Utils/LabelRuleImportExport.test.ts +192 -0
  295. package/Tests/UI/Utils/Navigation.test.ts +30 -0
  296. package/Tests/Utils/Dashboard/SloTemplateVariableScoping.test.ts +880 -0
  297. package/Tests/Utils/LabelRuleImportExport.test.ts +158 -0
  298. package/Tests/Utils/NetworkDiscovery/AutoImportRuleMatcher.test.ts +93 -0
  299. package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +138 -0
  300. package/Tests/Utils/NetworkSite/TypeHierarchyUtil.test.ts +174 -0
  301. package/Tests/Utils/Rules/RuleCriteriaMatcher.test.ts +1424 -0
  302. package/Tests/Utils/Rum/SessionIdentity.test.ts +72 -0
  303. package/Tests/Utils/Slo/SloBurnRateRuleState.test.ts +374 -28
  304. package/Tests/Utils/Telemetry/OriginAllowList.test.ts +118 -0
  305. package/Types/Dashboard/DashboardTemplates.ts +465 -0
  306. package/Types/Rules/RuleCriteria.ts +51 -0
  307. package/Types/Rules/RuleCriteriaFieldRegistry.ts +437 -0
  308. package/Types/Rum/SessionReplay.ts +75 -0
  309. package/Types/Rum/SessionReplayApi.ts +93 -0
  310. package/UI/Components/Alerts/Alert.tsx +102 -72
  311. package/UI/Components/Button/Button.tsx +4 -1
  312. package/UI/Components/Dropdown/Dropdown.tsx +2 -0
  313. package/UI/Components/Feed/Feed.tsx +15 -0
  314. package/UI/Components/Feed/useFeedItems.ts +227 -0
  315. package/UI/Components/Forms/BasicForm.tsx +42 -21
  316. package/UI/Components/Forms/ModelForm.tsx +80 -1
  317. package/UI/Components/Icon/Icon.tsx +3 -35
  318. package/UI/Components/ModelTable/ModelTable.tsx +19 -0
  319. package/UI/Components/Navbar/NavBar.tsx +1 -0
  320. package/UI/Components/RuleCriteria/RuleCriteriaBuilder.tsx +735 -0
  321. package/UI/Components/RuleCriteria/RuleCriteriaModelForm.tsx +209 -0
  322. package/UI/Components/RuleCriteria/RuleCriteriaModelTable.tsx +205 -0
  323. package/UI/Components/RuleCriteria/RuleCriteriaSummary.tsx +123 -0
  324. package/UI/Components/Table/Table.tsx +3 -0
  325. package/UI/Components/Table/TableBody.tsx +3 -0
  326. package/UI/Components/Table/TableRow.tsx +8 -2
  327. package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +14 -2
  328. package/UI/Styles/Theme.css +1 -0
  329. package/UI/Utils/LabelRuleImportExport.ts +114 -6
  330. package/UI/Utils/Navigation.ts +1 -2
  331. package/UI/esbuild-config.js +46 -0
  332. package/Utils/Faker.ts +93 -6
  333. package/Utils/LabelRuleImportExport.ts +295 -2
  334. package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +108 -8
  335. package/Utils/NetworkSite/CidrMatchUtil.ts +102 -0
  336. package/Utils/NetworkSite/TypeHierarchyUtil.ts +152 -2
  337. package/Utils/Rules/RuleCriteriaMatcher.ts +931 -0
  338. package/Utils/Rum/SessionIdentity.ts +16 -0
  339. package/Utils/Slo/SloBurnRateRuleState.ts +87 -33
  340. package/Utils/Telemetry/OriginAllowList.ts +74 -0
  341. package/build/dist/Models/AnalyticsModels/RumSession.js +32 -0
  342. package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -1
  343. package/build/dist/Models/DatabaseModels/AlertEpisodeLabelRule.js +2 -2
  344. package/build/dist/Models/DatabaseModels/AlertEpisodeLabelRule.js.map +1 -1
  345. package/build/dist/Models/DatabaseModels/AlertEpisodeOnCallRule.js +2 -2
  346. package/build/dist/Models/DatabaseModels/AlertEpisodeOnCallRule.js.map +1 -1
  347. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerRule.js +2 -2
  348. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerRule.js.map +1 -1
  349. package/build/dist/Models/DatabaseModels/AlertEpisodePrivacyRule.js +2 -2
  350. package/build/dist/Models/DatabaseModels/AlertEpisodePrivacyRule.js.map +1 -1
  351. package/build/dist/Models/DatabaseModels/AlertGroupingRule.js +2 -2
  352. package/build/dist/Models/DatabaseModels/AlertGroupingRule.js.map +1 -1
  353. package/build/dist/Models/DatabaseModels/AlertLabelRule.js +2 -2
  354. package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
  355. package/build/dist/Models/DatabaseModels/AlertOnCallRule.js +2 -2
  356. package/build/dist/Models/DatabaseModels/AlertOnCallRule.js.map +1 -1
  357. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +2 -2
  358. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
  359. package/build/dist/Models/DatabaseModels/AlertPrivacyRule.js +2 -2
  360. package/build/dist/Models/DatabaseModels/AlertPrivacyRule.js.map +1 -1
  361. package/build/dist/Models/DatabaseModels/AlertReminderRule.js +6 -5
  362. package/build/dist/Models/DatabaseModels/AlertReminderRule.js.map +1 -1
  363. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js +2 -2
  364. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js.map +1 -1
  365. package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js +2 -2
  366. package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js.map +1 -1
  367. package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js +2 -2
  368. package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js.map +1 -1
  369. package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js +2 -2
  370. package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js.map +1 -1
  371. package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js +2 -2
  372. package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js.map +1 -1
  373. package/build/dist/Models/DatabaseModels/DashboardLabelRule.js +2 -2
  374. package/build/dist/Models/DatabaseModels/DashboardLabelRule.js.map +1 -1
  375. package/build/dist/Models/DatabaseModels/DashboardOwnerRule.js +2 -2
  376. package/build/dist/Models/DatabaseModels/DashboardOwnerRule.js.map +1 -1
  377. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RelationOnlyRuleBaseModel.js +12 -0
  378. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RelationOnlyRuleBaseModel.js.map +1 -0
  379. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RuleBaseModel.js +50 -0
  380. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RuleBaseModel.js.map +1 -0
  381. package/build/dist/Models/DatabaseModels/DockerHostLabelRule.js +2 -2
  382. package/build/dist/Models/DatabaseModels/DockerHostLabelRule.js.map +1 -1
  383. package/build/dist/Models/DatabaseModels/DockerHostOwnerRule.js +2 -2
  384. package/build/dist/Models/DatabaseModels/DockerHostOwnerRule.js.map +1 -1
  385. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +2 -2
  386. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -1
  387. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +2 -2
  388. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -1
  389. package/build/dist/Models/DatabaseModels/HostLabelRule.js +2 -2
  390. package/build/dist/Models/DatabaseModels/HostLabelRule.js.map +1 -1
  391. package/build/dist/Models/DatabaseModels/HostOwnerRule.js +2 -2
  392. package/build/dist/Models/DatabaseModels/HostOwnerRule.js.map +1 -1
  393. package/build/dist/Models/DatabaseModels/IncidentEpisodeLabelRule.js +2 -2
  394. package/build/dist/Models/DatabaseModels/IncidentEpisodeLabelRule.js.map +1 -1
  395. package/build/dist/Models/DatabaseModels/IncidentEpisodeOnCallRule.js +2 -2
  396. package/build/dist/Models/DatabaseModels/IncidentEpisodeOnCallRule.js.map +1 -1
  397. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerRule.js +2 -2
  398. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerRule.js.map +1 -1
  399. package/build/dist/Models/DatabaseModels/IncidentEpisodePrivacyRule.js +2 -2
  400. package/build/dist/Models/DatabaseModels/IncidentEpisodePrivacyRule.js.map +1 -1
  401. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +2 -2
  402. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -1
  403. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +2 -2
  404. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
  405. package/build/dist/Models/DatabaseModels/IncidentOnCallRule.js +2 -2
  406. package/build/dist/Models/DatabaseModels/IncidentOnCallRule.js.map +1 -1
  407. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +2 -2
  408. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
  409. package/build/dist/Models/DatabaseModels/IncidentPrivacyRule.js +2 -2
  410. package/build/dist/Models/DatabaseModels/IncidentPrivacyRule.js.map +1 -1
  411. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js +6 -5
  412. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js.map +1 -1
  413. package/build/dist/Models/DatabaseModels/IncidentSlaRule.js +2 -2
  414. package/build/dist/Models/DatabaseModels/IncidentSlaRule.js.map +1 -1
  415. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js +3 -4
  416. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js.map +1 -1
  417. package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js +2 -2
  418. package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js.map +1 -1
  419. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js +2 -2
  420. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js.map +1 -1
  421. package/build/dist/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.js +277 -0
  422. package/build/dist/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.js.map +1 -0
  423. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  424. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  425. package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js +2 -2
  426. package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js.map +1 -1
  427. package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js +2 -2
  428. package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js.map +1 -1
  429. package/build/dist/Models/DatabaseModels/KubernetesClusterLabelRule.js +2 -2
  430. package/build/dist/Models/DatabaseModels/KubernetesClusterLabelRule.js.map +1 -1
  431. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerRule.js +2 -2
  432. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerRule.js.map +1 -1
  433. package/build/dist/Models/DatabaseModels/MonitorLabelRule.js +2 -2
  434. package/build/dist/Models/DatabaseModels/MonitorLabelRule.js.map +1 -1
  435. package/build/dist/Models/DatabaseModels/MonitorOwnerRule.js +2 -2
  436. package/build/dist/Models/DatabaseModels/MonitorOwnerRule.js.map +1 -1
  437. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +2 -2
  438. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
  439. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +2 -2
  440. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -1
  441. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +2 -2
  442. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -1
  443. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +2 -2
  444. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -1
  445. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js +2 -2
  446. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js.map +1 -1
  447. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js +2 -2
  448. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js.map +1 -1
  449. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js +2 -2
  450. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js.map +1 -1
  451. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js +2 -2
  452. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js.map +1 -1
  453. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +2 -2
  454. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -1
  455. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +2 -2
  456. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -1
  457. package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js +2 -2
  458. package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js.map +1 -1
  459. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js +2 -2
  460. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js.map +1 -1
  461. package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js +2 -2
  462. package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js.map +1 -1
  463. package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js +2 -2
  464. package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js.map +1 -1
  465. package/build/dist/Models/DatabaseModels/RunbookLabelRule.js +2 -2
  466. package/build/dist/Models/DatabaseModels/RunbookLabelRule.js.map +1 -1
  467. package/build/dist/Models/DatabaseModels/RunbookOwnerRule.js +2 -2
  468. package/build/dist/Models/DatabaseModels/RunbookOwnerRule.js.map +1 -1
  469. package/build/dist/Models/DatabaseModels/RunbookRule.js +2 -2
  470. package/build/dist/Models/DatabaseModels/RunbookRule.js.map +1 -1
  471. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +2 -2
  472. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
  473. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +2 -2
  474. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
  475. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js +6 -5
  476. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js.map +1 -1
  477. package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js +2 -2
  478. package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js.map +1 -1
  479. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js +2 -2
  480. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js.map +1 -1
  481. package/build/dist/Models/DatabaseModels/ServiceLabelRule.js +2 -2
  482. package/build/dist/Models/DatabaseModels/ServiceLabelRule.js.map +1 -1
  483. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js +281 -4
  484. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js.map +1 -1
  485. package/build/dist/Models/DatabaseModels/ServiceOwnerRule.js +2 -2
  486. package/build/dist/Models/DatabaseModels/ServiceOwnerRule.js.map +1 -1
  487. package/build/dist/Models/DatabaseModels/StatusPageLabelRule.js +2 -2
  488. package/build/dist/Models/DatabaseModels/StatusPageLabelRule.js.map +1 -1
  489. package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js +2 -2
  490. package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js.map +1 -1
  491. package/build/dist/Models/DatabaseModels/StatusPageOwnerRule.js +2 -2
  492. package/build/dist/Models/DatabaseModels/StatusPageOwnerRule.js.map +1 -1
  493. package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js +2 -2
  494. package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js.map +1 -1
  495. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js +2 -2
  496. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js.map +1 -1
  497. package/build/dist/Models/DatabaseModels/WorkflowLabelRule.js +2 -2
  498. package/build/dist/Models/DatabaseModels/WorkflowLabelRule.js.map +1 -1
  499. package/build/dist/Models/DatabaseModels/WorkflowOwnerRule.js +2 -2
  500. package/build/dist/Models/DatabaseModels/WorkflowOwnerRule.js.map +1 -1
  501. package/build/dist/Server/API/TelemetryAPI.js +211 -4
  502. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  503. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792400000000-AddSloBurnRateRuleIncidents.js +60 -0
  504. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792400000000-AddSloBurnRateRuleIncidents.js.map +1 -0
  505. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792500000000-AddConfigurableRuleCriteria.js +301 -0
  506. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792500000000-AddConfigurableRuleCriteria.js.map +1 -0
  507. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792600000000-AddIncomingCallPolicyPhoneNumbers.js +30 -0
  508. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792600000000-AddIncomingCallPolicyPhoneNumbers.js.map +1 -0
  509. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  510. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  511. package/build/dist/Server/Middleware/MultipartFormData.js +38 -21
  512. package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
  513. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js +17 -0
  514. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js.map +1 -1
  515. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js +17 -0
  516. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js.map +1 -1
  517. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js +17 -0
  518. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js.map +1 -1
  519. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js +17 -0
  520. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js.map +1 -1
  521. package/build/dist/Server/Services/AlertGroupingEngineService.js +21 -0
  522. package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
  523. package/build/dist/Server/Services/AlertLabelRuleEngineService.js +21 -0
  524. package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
  525. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js +21 -0
  526. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js.map +1 -1
  527. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +21 -0
  528. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
  529. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js +21 -0
  530. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js.map +1 -1
  531. package/build/dist/Server/Services/AlertReminderRuleService.js +44 -26
  532. package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
  533. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +54 -11
  534. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
  535. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +16 -0
  536. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
  537. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +16 -0
  538. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
  539. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +16 -0
  540. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
  541. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +16 -0
  542. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
  543. package/build/dist/Server/Services/DashboardLabelRuleEngineService.js +16 -0
  544. package/build/dist/Server/Services/DashboardLabelRuleEngineService.js.map +1 -1
  545. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +16 -0
  546. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js.map +1 -1
  547. package/build/dist/Server/Services/DatabaseService.js +235 -10
  548. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  549. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +16 -0
  550. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
  551. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +16 -0
  552. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
  553. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +16 -0
  554. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
  555. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +16 -0
  556. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
  557. package/build/dist/Server/Services/HostLabelRuleEngineService.js +12 -0
  558. package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
  559. package/build/dist/Server/Services/HostOwnerRuleEngineService.js +12 -0
  560. package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
  561. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js +17 -0
  562. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js.map +1 -1
  563. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js +17 -0
  564. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js.map +1 -1
  565. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +17 -0
  566. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
  567. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js +17 -0
  568. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js.map +1 -1
  569. package/build/dist/Server/Services/IncidentGroupingEngineService.js +39 -13
  570. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
  571. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +39 -9
  572. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
  573. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js +39 -10
  574. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js.map +1 -1
  575. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +39 -10
  576. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
  577. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js +39 -10
  578. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js.map +1 -1
  579. package/build/dist/Server/Services/IncidentReminderRuleService.js +44 -26
  580. package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
  581. package/build/dist/Server/Services/IncidentSlaRuleService.js +33 -12
  582. package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
  583. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +16 -0
  584. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -1
  585. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +16 -0
  586. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
  587. package/build/dist/Server/Services/IncomingCallPolicyPhoneNumberService.js +127 -0
  588. package/build/dist/Server/Services/IncomingCallPolicyPhoneNumberService.js.map +1 -0
  589. package/build/dist/Server/Services/IncomingCallPolicyService.js +187 -4
  590. package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -1
  591. package/build/dist/Server/Services/Index.js +2 -0
  592. package/build/dist/Server/Services/Index.js.map +1 -1
  593. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js +16 -0
  594. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js.map +1 -1
  595. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +16 -0
  596. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
  597. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +16 -0
  598. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
  599. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +16 -0
  600. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
  601. package/build/dist/Server/Services/LabelService.js +39 -7
  602. package/build/dist/Server/Services/LabelService.js.map +1 -1
  603. package/build/dist/Server/Services/MonitorLabelRuleEngineService.js +16 -0
  604. package/build/dist/Server/Services/MonitorLabelRuleEngineService.js.map +1 -1
  605. package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js +16 -0
  606. package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js.map +1 -1
  607. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +2 -0
  608. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  609. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +57 -1
  610. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
  611. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +17 -0
  612. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
  613. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +16 -0
  614. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
  615. package/build/dist/Server/Services/NetworkDeviceService.js +2 -0
  616. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  617. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +56 -1
  618. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -1
  619. package/build/dist/Server/Services/NetworkSiteService.js +187 -22
  620. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  621. package/build/dist/Server/Services/NetworkSiteTypeService.js +126 -51
  622. package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -1
  623. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +16 -0
  624. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -1
  625. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +16 -0
  626. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
  627. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +16 -0
  628. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -1
  629. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +16 -0
  630. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
  631. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +16 -0
  632. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
  633. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +16 -0
  634. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
  635. package/build/dist/Server/Services/ProjectCallSMSConfigService.js +115 -6
  636. package/build/dist/Server/Services/ProjectCallSMSConfigService.js.map +1 -1
  637. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +16 -0
  638. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
  639. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +16 -0
  640. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
  641. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +16 -0
  642. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -1
  643. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +16 -0
  644. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
  645. package/build/dist/Server/Services/RunbookLabelRuleEngineService.js +16 -0
  646. package/build/dist/Server/Services/RunbookLabelRuleEngineService.js.map +1 -1
  647. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +16 -0
  648. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
  649. package/build/dist/Server/Services/RunbookRuleEngineService.js +12 -0
  650. package/build/dist/Server/Services/RunbookRuleEngineService.js.map +1 -1
  651. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +38 -9
  652. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
  653. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +38 -10
  654. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
  655. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +32 -14
  656. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
  657. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +16 -0
  658. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -1
  659. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +16 -0
  660. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
  661. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +16 -0
  662. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
  663. package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js +554 -12
  664. package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js.map +1 -1
  665. package/build/dist/Server/Services/ServiceLevelObjectiveService.js +50 -14
  666. package/build/dist/Server/Services/ServiceLevelObjectiveService.js.map +1 -1
  667. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +16 -0
  668. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
  669. package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js +16 -0
  670. package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js.map +1 -1
  671. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +25 -2
  672. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -1
  673. package/build/dist/Server/Services/StatusPageMonitorRuleService.js +19 -1
  674. package/build/dist/Server/Services/StatusPageMonitorRuleService.js.map +1 -1
  675. package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js +16 -0
  676. package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js.map +1 -1
  677. package/build/dist/Server/Services/UserService.js +14 -49
  678. package/build/dist/Server/Services/UserService.js.map +1 -1
  679. package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js +16 -0
  680. package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js.map +1 -1
  681. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +16 -0
  682. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -1
  683. package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js +16 -0
  684. package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js.map +1 -1
  685. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +16 -0
  686. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
  687. package/build/dist/Server/Types/Database/QueryHelper.js +67 -0
  688. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  689. package/build/dist/Server/Utils/AI/Toolbox/SloTools.js +21 -4
  690. package/build/dist/Server/Utils/AI/Toolbox/SloTools.js.map +1 -1
  691. package/build/dist/Server/Utils/IncomingCallPhoneNumber.js +9 -3
  692. package/build/dist/Server/Utils/IncomingCallPhoneNumber.js.map +1 -1
  693. package/build/dist/Server/Utils/Profiling.js +10 -1
  694. package/build/dist/Server/Utils/Profiling.js.map +1 -1
  695. package/build/dist/Server/Utils/Rules/MonitorRuleCriteriaCache.js +30 -0
  696. package/build/dist/Server/Utils/Rules/MonitorRuleCriteriaCache.js.map +1 -0
  697. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +344 -0
  698. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -1
  699. package/build/dist/Server/Utils/Telemetry.js +1 -1
  700. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  701. package/build/dist/Server/Utils/VendorAssets.js +2 -0
  702. package/build/dist/Server/Utils/VendorAssets.js.map +1 -1
  703. package/build/dist/Types/Dashboard/DashboardTemplates.js +425 -0
  704. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  705. package/build/dist/Types/Rules/RuleCriteria.js +18 -0
  706. package/build/dist/Types/Rules/RuleCriteria.js.map +1 -0
  707. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +426 -0
  708. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -0
  709. package/build/dist/Types/Rum/SessionReplay.js +64 -0
  710. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  711. package/build/dist/Types/Rum/SessionReplayApi.js.map +1 -1
  712. package/build/dist/UI/Components/Alerts/Alert.js +63 -41
  713. package/build/dist/UI/Components/Alerts/Alert.js.map +1 -1
  714. package/build/dist/UI/Components/Button/Button.js +3 -1
  715. package/build/dist/UI/Components/Button/Button.js.map +1 -1
  716. package/build/dist/UI/Components/Dropdown/Dropdown.js +1 -1
  717. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  718. package/build/dist/UI/Components/Feed/Feed.js +4 -1
  719. package/build/dist/UI/Components/Feed/Feed.js.map +1 -1
  720. package/build/dist/UI/Components/Feed/useFeedItems.js +137 -0
  721. package/build/dist/UI/Components/Feed/useFeedItems.js.map +1 -0
  722. package/build/dist/UI/Components/Forms/BasicForm.js +38 -19
  723. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  724. package/build/dist/UI/Components/Forms/ModelForm.js +65 -1
  725. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  726. package/build/dist/UI/Components/Icon/Icon.js +3 -35
  727. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  728. package/build/dist/UI/Components/ModelTable/ModelTable.js +12 -1
  729. package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
  730. package/build/dist/UI/Components/Navbar/NavBar.js +1 -0
  731. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  732. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaBuilder.js +383 -0
  733. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaBuilder.js.map +1 -0
  734. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelForm.js +124 -0
  735. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelForm.js.map +1 -0
  736. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelTable.js +126 -0
  737. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelTable.js.map +1 -0
  738. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaSummary.js +63 -0
  739. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaSummary.js.map +1 -0
  740. package/build/dist/UI/Components/Table/Table.js +1 -1
  741. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  742. package/build/dist/UI/Components/Table/TableBody.js +4 -2
  743. package/build/dist/UI/Components/Table/TableBody.js.map +1 -1
  744. package/build/dist/UI/Components/Table/TableRow.js +3 -2
  745. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  746. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js +14 -2
  747. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +1 -1
  748. package/build/dist/UI/Utils/LabelRuleImportExport.js +81 -5
  749. package/build/dist/UI/Utils/LabelRuleImportExport.js.map +1 -1
  750. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  751. package/build/dist/Utils/Faker.js +76 -6
  752. package/build/dist/Utils/Faker.js.map +1 -1
  753. package/build/dist/Utils/LabelRuleImportExport.js +157 -3
  754. package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
  755. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js +81 -5
  756. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
  757. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +77 -0
  758. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -1
  759. package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js +109 -2
  760. package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js.map +1 -1
  761. package/build/dist/Utils/Rules/RuleCriteriaMatcher.js +526 -0
  762. package/build/dist/Utils/Rules/RuleCriteriaMatcher.js.map +1 -0
  763. package/build/dist/Utils/Rum/SessionIdentity.js +13 -1
  764. package/build/dist/Utils/Rum/SessionIdentity.js.map +1 -1
  765. package/build/dist/Utils/Slo/SloBurnRateRuleState.js +28 -15
  766. package/build/dist/Utils/Slo/SloBurnRateRuleState.js.map +1 -1
  767. package/build/dist/Utils/Telemetry/OriginAllowList.js +61 -0
  768. package/build/dist/Utils/Telemetry/OriginAllowList.js.map +1 -1
  769. package/package.json +20 -20
@@ -0,0 +1,72 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class AddIncomingCallPolicyPhoneNumbers1792600000000
4
+ implements MigrationInterface
5
+ {
6
+ public readonly name: string =
7
+ "AddIncomingCallPolicyPhoneNumbers1792600000000";
8
+
9
+ public async up(queryRunner: QueryRunner): Promise<void> {
10
+ await queryRunner.query(
11
+ `CREATE TABLE "IncomingCallPolicyPhoneNumber" ("_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, "incomingCallPolicyId" uuid NOT NULL, "projectCallSMSConfigId" uuid NOT NULL, "phoneNumber" character varying(30) NOT NULL, "callProviderPhoneNumberId" character varying(100) NOT NULL, "countryCode" character varying(100), "areaCode" character varying(100), "phoneNumberPurchasedAt" TIMESTAMP WITH TIME ZONE, CONSTRAINT "PK_46893187d82b3d39788b04be920" PRIMARY KEY ("_id"))`,
12
+ );
13
+ await queryRunner.query(
14
+ `CREATE INDEX "IDX_1e34c7280fa570f4fc9082ecd6" ON "IncomingCallPolicyPhoneNumber" ("projectId") `,
15
+ );
16
+ await queryRunner.query(
17
+ `CREATE INDEX "IDX_d8c4476e7f18b58ae724bc43c7" ON "IncomingCallPolicyPhoneNumber" ("incomingCallPolicyId") `,
18
+ );
19
+ await queryRunner.query(
20
+ `CREATE INDEX "IDX_908415bd52e7502b68e1dc2aa7" ON "IncomingCallPolicyPhoneNumber" ("projectCallSMSConfigId") `,
21
+ );
22
+ await queryRunner.query(
23
+ `CREATE INDEX "IDX_b3c04dcef639a36641dd3a3ed4" ON "IncomingCallPolicyPhoneNumber" ("incomingCallPolicyId", "projectId") `,
24
+ );
25
+ await queryRunner.query(
26
+ `CREATE UNIQUE INDEX "IDX_INCOMING_CALL_POLICY_PROVIDER_PHONE_NUMBER_UNIQUE" ON "IncomingCallPolicyPhoneNumber" ("projectCallSMSConfigId", "callProviderPhoneNumberId") WHERE "deletedAt" IS NULL`,
27
+ );
28
+ await queryRunner.query(
29
+ `CREATE UNIQUE INDEX "IDX_INCOMING_CALL_POLICY_PHONE_NUMBER_UNIQUE" ON "IncomingCallPolicyPhoneNumber" ("phoneNumber") WHERE "deletedAt" IS NULL`,
30
+ );
31
+ await queryRunner.query(
32
+ `ALTER TABLE "IncomingCallPolicyPhoneNumber" ADD CONSTRAINT "FK_1e34c7280fa570f4fc9082ecd6f" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
33
+ );
34
+ await queryRunner.query(
35
+ `ALTER TABLE "IncomingCallPolicyPhoneNumber" ADD CONSTRAINT "FK_d8c4476e7f18b58ae724bc43c74" FOREIGN KEY ("incomingCallPolicyId") REFERENCES "IncomingCallPolicy"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
36
+ );
37
+ await queryRunner.query(
38
+ `ALTER TABLE "IncomingCallPolicyPhoneNumber" ADD CONSTRAINT "FK_908415bd52e7502b68e1dc2aa7d" FOREIGN KEY ("projectCallSMSConfigId") REFERENCES "ProjectCallSMSConfig"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
39
+ );
40
+ }
41
+
42
+ public async down(queryRunner: QueryRunner): Promise<void> {
43
+ await queryRunner.query(
44
+ `ALTER TABLE "IncomingCallPolicyPhoneNumber" DROP CONSTRAINT "FK_908415bd52e7502b68e1dc2aa7d"`,
45
+ );
46
+ await queryRunner.query(
47
+ `ALTER TABLE "IncomingCallPolicyPhoneNumber" DROP CONSTRAINT "FK_d8c4476e7f18b58ae724bc43c74"`,
48
+ );
49
+ await queryRunner.query(
50
+ `ALTER TABLE "IncomingCallPolicyPhoneNumber" DROP CONSTRAINT "FK_1e34c7280fa570f4fc9082ecd6f"`,
51
+ );
52
+ await queryRunner.query(
53
+ `DROP INDEX "public"."IDX_INCOMING_CALL_POLICY_PHONE_NUMBER_UNIQUE"`,
54
+ );
55
+ await queryRunner.query(
56
+ `DROP INDEX "public"."IDX_INCOMING_CALL_POLICY_PROVIDER_PHONE_NUMBER_UNIQUE"`,
57
+ );
58
+ await queryRunner.query(
59
+ `DROP INDEX "public"."IDX_b3c04dcef639a36641dd3a3ed4"`,
60
+ );
61
+ await queryRunner.query(
62
+ `DROP INDEX "public"."IDX_908415bd52e7502b68e1dc2aa7"`,
63
+ );
64
+ await queryRunner.query(
65
+ `DROP INDEX "public"."IDX_d8c4476e7f18b58ae724bc43c7"`,
66
+ );
67
+ await queryRunner.query(
68
+ `DROP INDEX "public"."IDX_1e34c7280fa570f4fc9082ecd6"`,
69
+ );
70
+ await queryRunner.query(`DROP TABLE "IncomingCallPolicyPhoneNumber"`);
71
+ }
72
+ }
@@ -1,4 +1,7 @@
1
+ import { AddConfigurableRuleCriteria1792500000000 } from "./1792500000000-AddConfigurableRuleCriteria";
1
2
  import { AddGoogleSecOpsDiagnostics1792300000000 } from "./1792300000000-AddGoogleSecOpsDiagnostics";
3
+ import { AddIncomingCallPolicyPhoneNumbers1792600000000 } from "./1792600000000-AddIncomingCallPolicyPhoneNumbers";
4
+ import { AddSloBurnRateRuleIncidents1792400000000 } from "./1792400000000-AddSloBurnRateRuleIncidents";
2
5
  import { AddUserWebAuthnPurpose1792200000000 } from "./1792200000000-AddUserWebAuthnPurpose";
3
6
  import InitialMigration from "./1717605043663-InitialMigration";
4
7
  import { MigrationName1717678334852 } from "./1717678334852-MigrationName";
@@ -1172,4 +1175,7 @@ export default [
1172
1175
  AddGitHubCommandSettingsToCodeRepository1792100000000,
1173
1176
  AddUserWebAuthnPurpose1792200000000,
1174
1177
  AddGoogleSecOpsDiagnostics1792300000000,
1178
+ AddSloBurnRateRuleIncidents1792400000000,
1179
+ AddConfigurableRuleCriteria1792500000000,
1180
+ AddIncomingCallPolicyPhoneNumbers1792600000000,
1175
1181
  ];
@@ -31,29 +31,48 @@ export const MAX_MULTIPART_FIELD_BYTES: number = 25 * 1024 * 1024;
31
31
  export const MAX_MULTIPART_FILES: number = 50;
32
32
  export const MAX_MULTIPART_FIELDS: number = 200;
33
33
 
34
+ /*
35
+ * Every multipart protocol that uses this shared pre-auth parser has flat
36
+ * field names. Multer 2.3 provides these opt-in guards for append-field:
37
+ * without them, one deeply nested name or a maximum-length numeric array
38
+ * index can consume CPU and memory before authentication. Zero is the minimum
39
+ * each protocol needs and rejects bracket notation before append-field expands it.
40
+ * The array-index limit is defense in depth if a future protocol deliberately
41
+ * raises the nesting depth to accept one bracket group.
42
+ */
43
+ export const MAX_MULTIPART_FIELD_NESTING_DEPTH: number = 0;
44
+ export const MAX_MULTIPART_FIELD_ARRAY_INDEX: number = 0;
45
+
34
46
  /*
35
47
  * busboy's SIZE limits and its `parts` counter are EXCLUSIVE: each fires
36
48
  * the moment the counter REACHES the limit, so handing it N admits only
37
49
  * N-1. Its `files` and `fields` counters are INCLUSIVE -- N admits N.
38
50
  *
39
- * That asymmetry is undocumented and easy to lose, so the constants above
40
- * stay the INCLUSIVE maxima this app documents and that callers
41
- * range-check against (`file.buffer.length > MAX_SOURCE_MAP_SIZE_IN_BYTES`
42
- * and friends), and only the three exclusive limits are converted here.
51
+ * Multer 2.3 normalizes its documented `fileSize` option to an inclusive
52
+ * application limit before it calls busboy. It forwards `fieldSize` and
53
+ * `parts` unchanged, so only those two raw busboy limits are converted here.
54
+ * The constants above stay the INCLUSIVE maxima this app documents and that
55
+ * callers range-check against (`file.buffer.length >
56
+ * MAX_SOURCE_MAP_SIZE_IN_BYTES` and friends).
43
57
  *
44
- * Both halves of this were live bugs. A file of exactly 50 MiB -- a size
45
- * the source map endpoint means to accept, and whose 400 message says it
46
- * accepts -- was truncated by the parser into a 413 the endpoint never
47
- * saw. And `parts`, whose whole job is to allow the file and field
48
- * allowances in full, rejected a body carrying exactly both with
58
+ * Both conversions have caused live boundary bugs. A file of exactly 50 MiB
59
+ * must remain accepted, but adding one here as well as in Multer would admit
60
+ * 50 MiB + 1. And `parts`, whose whole job is to allow the file and field
61
+ * allowances in full, once rejected a body carrying exactly both with
49
62
  * LIMIT_PART_COUNT.
50
63
  */
51
- const exclusive: (inclusiveMax: number) => number = (
64
+ const toExclusiveBusboyLimit: (inclusiveMax: number) => number = (
52
65
  inclusiveMax: number,
53
66
  ): number => {
54
67
  return inclusiveMax + 1;
55
68
  };
56
69
 
70
+ /* Installed DefinitelyTyped definitions do not declare these options yet. */
71
+ type HardenedMulterLimits = NonNullable<multer.Options["limits"]> & {
72
+ fieldNestingDepth: number;
73
+ fieldArrayIndexLimit: number;
74
+ };
75
+
57
76
  /*
58
77
  * Configure multer for handling multipart/form-data
59
78
  * Uses memory storage to store files in memory as Buffer objects
@@ -61,19 +80,23 @@ const exclusive: (inclusiveMax: number) => number = (
61
80
  const buildUploadAny: (maxFiles: number) => RequestHandler = (
62
81
  maxFiles: number,
63
82
  ): RequestHandler => {
83
+ const limits: HardenedMulterLimits = {
84
+ fileSize: MAX_MULTIPART_FILE_BYTES,
85
+ fieldSize: toExclusiveBusboyLimit(MAX_MULTIPART_FIELD_BYTES),
86
+ files: maxFiles,
87
+ fields: MAX_MULTIPART_FIELDS,
88
+ fieldNestingDepth: MAX_MULTIPART_FIELD_NESTING_DEPTH,
89
+ fieldArrayIndexLimit: MAX_MULTIPART_FIELD_ARRAY_INDEX,
90
+ /*
91
+ * Parts are files + fields, so this has to allow both in full or it
92
+ * would be the effective limit and the two above would never fire.
93
+ */
94
+ parts: toExclusiveBusboyLimit(maxFiles + MAX_MULTIPART_FIELDS),
95
+ };
96
+
64
97
  const upload: multer.Multer = multer({
65
98
  storage: multer.memoryStorage(),
66
- limits: {
67
- fileSize: exclusive(MAX_MULTIPART_FILE_BYTES),
68
- fieldSize: exclusive(MAX_MULTIPART_FIELD_BYTES),
69
- files: maxFiles,
70
- fields: MAX_MULTIPART_FIELDS,
71
- /*
72
- * Parts are files + fields, so this has to allow both in full or it
73
- * would be the effective limit and the two above would never fire.
74
- */
75
- parts: exclusive(maxFiles + MAX_MULTIPART_FIELDS),
76
- },
99
+ limits: limits,
77
100
  });
78
101
 
79
102
  return upload.any() as unknown as RequestHandler;
@@ -95,6 +118,8 @@ const TOO_LARGE_CODES: Set<string> = new Set<string>([
95
118
  "LIMIT_FIELD_KEY",
96
119
  "LIMIT_FIELD_VALUE",
97
120
  "LIMIT_FIELD_COUNT",
121
+ "LIMIT_FIELD_NESTING",
122
+ "LIMIT_FIELD_ARRAY_INDEX",
98
123
  ]);
99
124
 
100
125
  /*
@@ -15,6 +15,7 @@ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
15
15
  import logger, { LogAttributes } from "../Utils/Logger";
16
16
  import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
17
17
  import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
18
+ import { RuleCriteriaMatcher } from "../../Utils/Rules/RuleCriteriaMatcher";
18
19
 
19
20
  class AlertEpisodeLabelRuleEngineServiceClass {
20
21
  /**
@@ -40,6 +41,7 @@ class AlertEpisodeLabelRuleEngineServiceClass {
40
41
  select: {
41
42
  _id: true,
42
43
  name: true,
44
+ criteria: true,
43
45
  alertSeverities: { _id: true },
44
46
  episodeLabels: { _id: true },
45
47
  episodeTitlePattern: true,
@@ -224,6 +226,25 @@ class AlertEpisodeLabelRuleEngineServiceClass {
224
226
  private doesEpisodeMatchRule(
225
227
  episode: AlertEpisode,
226
228
  rule: AlertEpisodeLabelRule,
229
+ ): boolean {
230
+ return RuleCriteriaMatcher.matchesWithLegacySync({
231
+ rule,
232
+ legacyFields: [
233
+ "alertSeverities",
234
+ "episodeLabels",
235
+ "episodeTitlePattern",
236
+ "episodeDescriptionPattern",
237
+ ],
238
+ emptyResult: true,
239
+ matchesLegacyRule: (legacyRule: AlertEpisodeLabelRule): boolean => {
240
+ return this.doesEpisodeMatchLegacyRule(episode, legacyRule);
241
+ },
242
+ });
243
+ }
244
+
245
+ private doesEpisodeMatchLegacyRule(
246
+ episode: AlertEpisode,
247
+ rule: AlertEpisodeLabelRule,
227
248
  ): boolean {
228
249
  if (rule.alertSeverities && rule.alertSeverities.length > 0) {
229
250
  if (!episode.alertSeverityId) {
@@ -16,6 +16,7 @@ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
16
16
  import logger, { LogAttributes } from "../Utils/Logger";
17
17
  import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
18
18
  import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
19
+ import { RuleCriteriaMatcher } from "../../Utils/Rules/RuleCriteriaMatcher";
19
20
 
20
21
  class AlertEpisodeOnCallRuleEngineServiceClass {
21
22
  /**
@@ -40,6 +41,7 @@ class AlertEpisodeOnCallRuleEngineServiceClass {
40
41
  select: {
41
42
  _id: true,
42
43
  name: true,
44
+ criteria: true,
43
45
  alertSeverities: { _id: true },
44
46
  episodeLabels: { _id: true },
45
47
  episodeTitlePattern: true,
@@ -241,6 +243,25 @@ class AlertEpisodeOnCallRuleEngineServiceClass {
241
243
  private doesEpisodeMatchRule(
242
244
  episode: AlertEpisode,
243
245
  rule: AlertEpisodeOnCallRule,
246
+ ): boolean {
247
+ return RuleCriteriaMatcher.matchesWithLegacySync({
248
+ rule,
249
+ legacyFields: [
250
+ "alertSeverities",
251
+ "episodeLabels",
252
+ "episodeTitlePattern",
253
+ "episodeDescriptionPattern",
254
+ ],
255
+ emptyResult: true,
256
+ matchesLegacyRule: (legacyRule: AlertEpisodeOnCallRule): boolean => {
257
+ return this.doesEpisodeMatchLegacyRule(episode, legacyRule);
258
+ },
259
+ });
260
+ }
261
+
262
+ private doesEpisodeMatchLegacyRule(
263
+ episode: AlertEpisode,
264
+ rule: AlertEpisodeOnCallRule,
244
265
  ): boolean {
245
266
  if (rule.alertSeverities && rule.alertSeverities.length > 0) {
246
267
  if (!episode.alertSeverityId) {
@@ -18,6 +18,7 @@ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
18
18
  import logger, { LogAttributes } from "../Utils/Logger";
19
19
  import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
20
20
  import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
21
+ import { RuleCriteriaMatcher } from "../../Utils/Rules/RuleCriteriaMatcher";
21
22
 
22
23
  class AlertEpisodeOwnerRuleEngineServiceClass {
23
24
  /**
@@ -42,6 +43,7 @@ class AlertEpisodeOwnerRuleEngineServiceClass {
42
43
  select: {
43
44
  _id: true,
44
45
  name: true,
46
+ criteria: true,
45
47
  notifyOwners: true,
46
48
  alertSeverities: { _id: true },
47
49
  episodeLabels: { _id: true },
@@ -256,6 +258,25 @@ class AlertEpisodeOwnerRuleEngineServiceClass {
256
258
  private doesEpisodeMatchRule(
257
259
  episode: AlertEpisode,
258
260
  rule: AlertEpisodeOwnerRule,
261
+ ): boolean {
262
+ return RuleCriteriaMatcher.matchesWithLegacySync({
263
+ rule,
264
+ legacyFields: [
265
+ "alertSeverities",
266
+ "episodeLabels",
267
+ "episodeTitlePattern",
268
+ "episodeDescriptionPattern",
269
+ ],
270
+ emptyResult: true,
271
+ matchesLegacyRule: (legacyRule: AlertEpisodeOwnerRule): boolean => {
272
+ return this.doesEpisodeMatchLegacyRule(episode, legacyRule);
273
+ },
274
+ });
275
+ }
276
+
277
+ private doesEpisodeMatchLegacyRule(
278
+ episode: AlertEpisode,
279
+ rule: AlertEpisodeOwnerRule,
259
280
  ): boolean {
260
281
  if (rule.alertSeverities && rule.alertSeverities.length > 0) {
261
282
  if (!episode.alertSeverityId) {
@@ -11,6 +11,7 @@ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
11
11
  import logger, { LogAttributes } from "../Utils/Logger";
12
12
  import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
13
13
  import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
14
+ import { RuleCriteriaMatcher } from "../../Utils/Rules/RuleCriteriaMatcher";
14
15
 
15
16
  class AlertEpisodePrivacyRuleEngineServiceClass {
16
17
  /**
@@ -38,6 +39,7 @@ class AlertEpisodePrivacyRuleEngineServiceClass {
38
39
  select: {
39
40
  _id: true,
40
41
  name: true,
42
+ criteria: true,
41
43
  alertSeverities: { _id: true },
42
44
  episodeLabels: { _id: true },
43
45
  episodeTitlePattern: true,
@@ -149,6 +151,25 @@ class AlertEpisodePrivacyRuleEngineServiceClass {
149
151
  private doesEpisodeMatchRule(
150
152
  episode: AlertEpisode,
151
153
  rule: AlertEpisodePrivacyRule,
154
+ ): boolean {
155
+ return RuleCriteriaMatcher.matchesWithLegacySync({
156
+ rule,
157
+ legacyFields: [
158
+ "alertSeverities",
159
+ "episodeLabels",
160
+ "episodeTitlePattern",
161
+ "episodeDescriptionPattern",
162
+ ],
163
+ emptyResult: true,
164
+ matchesLegacyRule: (legacyRule: AlertEpisodePrivacyRule): boolean => {
165
+ return this.doesEpisodeMatchLegacyRule(episode, legacyRule);
166
+ },
167
+ });
168
+ }
169
+
170
+ private doesEpisodeMatchLegacyRule(
171
+ episode: AlertEpisode,
172
+ rule: AlertEpisodePrivacyRule,
152
173
  ): boolean {
153
174
  if (rule.alertSeverities && rule.alertSeverities.length > 0) {
154
175
  if (!episode.alertSeverityId) {
@@ -28,6 +28,7 @@ import { AlertEpisodeFeedEventType } from "../../Models/DatabaseModels/AlertEpis
28
28
  import { Green500 } from "../../Types/BrandColors";
29
29
  import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
30
30
  import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
31
+ import { RuleCriteriaMatcher } from "../../Utils/Rules/RuleCriteriaMatcher";
31
32
 
32
33
  export interface GroupingResult {
33
34
  grouped: boolean;
@@ -73,6 +74,7 @@ class AlertGroupingEngineServiceClass {
73
74
  _id: true,
74
75
  name: true,
75
76
  priority: true,
77
+ criteria: true,
76
78
  // Match criteria fields
77
79
  monitors: {
78
80
  _id: true,
@@ -181,6 +183,31 @@ class AlertGroupingEngineServiceClass {
181
183
  private async doesAlertMatchRule(
182
184
  alert: Alert,
183
185
  rule: AlertGroupingRule,
186
+ ): Promise<boolean> {
187
+ return await RuleCriteriaMatcher.matchesWithLegacy({
188
+ rule,
189
+ legacyFields: [
190
+ "monitors",
191
+ "alertSeverities",
192
+ "alertLabels",
193
+ "monitorLabels",
194
+ "alertTitlePattern",
195
+ "alertDescriptionPattern",
196
+ "monitorNamePattern",
197
+ "monitorDescriptionPattern",
198
+ ],
199
+ emptyResult: true,
200
+ matchesLegacyRule: async (
201
+ legacyRule: AlertGroupingRule,
202
+ ): Promise<boolean> => {
203
+ return await this.doesAlertMatchLegacyRule(alert, legacyRule);
204
+ },
205
+ });
206
+ }
207
+
208
+ private async doesAlertMatchLegacyRule(
209
+ alert: Alert,
210
+ rule: AlertGroupingRule,
184
211
  ): Promise<boolean> {
185
212
  logger.debug(
186
213
  `Checking if alert ${alert.id} matches rule ${rule.name || rule.id}`,
@@ -27,6 +27,7 @@ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
27
27
  import logger, { LogAttributes } from "../Utils/Logger";
28
28
  import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
29
29
  import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
30
+ import { RuleCriteriaMatcher } from "../../Utils/Rules/RuleCriteriaMatcher";
30
31
 
31
32
  class AlertLabelRuleEngineServiceClass {
32
33
  /**
@@ -58,6 +59,7 @@ class AlertLabelRuleEngineServiceClass {
58
59
  select: {
59
60
  _id: true,
60
61
  name: true,
62
+ criteria: true,
61
63
  monitors: { _id: true },
62
64
  alertSeverities: { _id: true },
63
65
  alertLabels: { _id: true },
@@ -424,6 +426,31 @@ class AlertLabelRuleEngineServiceClass {
424
426
  private async doesAlertMatchRule(
425
427
  alert: Alert,
426
428
  rule: AlertLabelRule,
429
+ ): Promise<boolean> {
430
+ return await RuleCriteriaMatcher.matchesWithLegacy({
431
+ rule,
432
+ legacyFields: [
433
+ "monitors",
434
+ "alertSeverities",
435
+ "alertLabels",
436
+ "monitorLabels",
437
+ "alertTitlePattern",
438
+ "alertDescriptionPattern",
439
+ "monitorNamePattern",
440
+ "monitorDescriptionPattern",
441
+ ],
442
+ emptyResult: true,
443
+ matchesLegacyRule: async (
444
+ legacyRule: AlertLabelRule,
445
+ ): Promise<boolean> => {
446
+ return await this.doesAlertMatchLegacyRule(alert, legacyRule);
447
+ },
448
+ });
449
+ }
450
+
451
+ private async doesAlertMatchLegacyRule(
452
+ alert: Alert,
453
+ rule: AlertLabelRule,
427
454
  ): Promise<boolean> {
428
455
  if (rule.monitors && rule.monitors.length > 0) {
429
456
  if (!alert.monitorId) {
@@ -18,6 +18,7 @@ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
18
18
  import logger, { LogAttributes } from "../Utils/Logger";
19
19
  import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
20
20
  import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
21
+ import { RuleCriteriaMatcher } from "../../Utils/Rules/RuleCriteriaMatcher";
21
22
 
22
23
  class AlertOnCallRuleEngineServiceClass {
23
24
  /**
@@ -43,6 +44,7 @@ class AlertOnCallRuleEngineServiceClass {
43
44
  select: {
44
45
  _id: true,
45
46
  name: true,
47
+ criteria: true,
46
48
  monitors: { _id: true },
47
49
  alertSeverities: { _id: true },
48
50
  alertLabels: { _id: true },
@@ -262,6 +264,31 @@ class AlertOnCallRuleEngineServiceClass {
262
264
  private async doesAlertMatchRule(
263
265
  alert: Alert,
264
266
  rule: AlertOnCallRule,
267
+ ): Promise<boolean> {
268
+ return await RuleCriteriaMatcher.matchesWithLegacy({
269
+ rule,
270
+ legacyFields: [
271
+ "monitors",
272
+ "alertSeverities",
273
+ "alertLabels",
274
+ "monitorLabels",
275
+ "alertTitlePattern",
276
+ "alertDescriptionPattern",
277
+ "monitorNamePattern",
278
+ "monitorDescriptionPattern",
279
+ ],
280
+ emptyResult: true,
281
+ matchesLegacyRule: async (
282
+ legacyRule: AlertOnCallRule,
283
+ ): Promise<boolean> => {
284
+ return await this.doesAlertMatchLegacyRule(alert, legacyRule);
285
+ },
286
+ });
287
+ }
288
+
289
+ private async doesAlertMatchLegacyRule(
290
+ alert: Alert,
291
+ rule: AlertOnCallRule,
265
292
  ): Promise<boolean> {
266
293
  // Monitors: alert must come from one of the rule's monitors
267
294
  if (rule.monitors && rule.monitors.length > 0) {
@@ -49,6 +49,7 @@ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
49
49
  import logger, { LogAttributes } from "../Utils/Logger";
50
50
  import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
51
51
  import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
52
+ import { RuleCriteriaMatcher } from "../../Utils/Rules/RuleCriteriaMatcher";
52
53
 
53
54
  class AlertOwnerRuleEngineServiceClass {
54
55
  /**
@@ -71,6 +72,7 @@ class AlertOwnerRuleEngineServiceClass {
71
72
  select: {
72
73
  _id: true,
73
74
  name: true,
75
+ criteria: true,
74
76
  notifyOwners: true,
75
77
  monitors: { _id: true },
76
78
  alertSeverities: { _id: true },
@@ -688,6 +690,31 @@ class AlertOwnerRuleEngineServiceClass {
688
690
  private async doesAlertMatchRule(
689
691
  alert: Alert,
690
692
  rule: AlertOwnerRule,
693
+ ): Promise<boolean> {
694
+ return await RuleCriteriaMatcher.matchesWithLegacy({
695
+ rule,
696
+ legacyFields: [
697
+ "monitors",
698
+ "alertSeverities",
699
+ "alertLabels",
700
+ "monitorLabels",
701
+ "alertTitlePattern",
702
+ "alertDescriptionPattern",
703
+ "monitorNamePattern",
704
+ "monitorDescriptionPattern",
705
+ ],
706
+ emptyResult: true,
707
+ matchesLegacyRule: async (
708
+ legacyRule: AlertOwnerRule,
709
+ ): Promise<boolean> => {
710
+ return await this.doesAlertMatchLegacyRule(alert, legacyRule);
711
+ },
712
+ });
713
+ }
714
+
715
+ private async doesAlertMatchLegacyRule(
716
+ alert: Alert,
717
+ rule: AlertOwnerRule,
691
718
  ): Promise<boolean> {
692
719
  if (rule.monitors && rule.monitors.length > 0) {
693
720
  if (!alert.monitorId) {
@@ -13,6 +13,7 @@ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
13
13
  import logger, { LogAttributes } from "../Utils/Logger";
14
14
  import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
15
15
  import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
16
+ import { RuleCriteriaMatcher } from "../../Utils/Rules/RuleCriteriaMatcher";
16
17
 
17
18
  class AlertPrivacyRuleEngineServiceClass {
18
19
  /**
@@ -44,6 +45,7 @@ class AlertPrivacyRuleEngineServiceClass {
44
45
  select: {
45
46
  _id: true,
46
47
  name: true,
48
+ criteria: true,
47
49
  monitors: { _id: true },
48
50
  alertSeverities: { _id: true },
49
51
  alertLabels: { _id: true },
@@ -160,6 +162,31 @@ class AlertPrivacyRuleEngineServiceClass {
160
162
  private async doesAlertMatchRule(
161
163
  alert: Alert,
162
164
  rule: AlertPrivacyRule,
165
+ ): Promise<boolean> {
166
+ return await RuleCriteriaMatcher.matchesWithLegacy({
167
+ rule,
168
+ legacyFields: [
169
+ "monitors",
170
+ "alertSeverities",
171
+ "alertLabels",
172
+ "monitorLabels",
173
+ "alertTitlePattern",
174
+ "alertDescriptionPattern",
175
+ "monitorNamePattern",
176
+ "monitorDescriptionPattern",
177
+ ],
178
+ emptyResult: true,
179
+ matchesLegacyRule: async (
180
+ legacyRule: AlertPrivacyRule,
181
+ ): Promise<boolean> => {
182
+ return await this.doesAlertMatchLegacyRule(alert, legacyRule);
183
+ },
184
+ });
185
+ }
186
+
187
+ private async doesAlertMatchLegacyRule(
188
+ alert: Alert,
189
+ rule: AlertPrivacyRule,
163
190
  ): Promise<boolean> {
164
191
  if (rule.monitors && rule.monitors.length > 0) {
165
192
  if (!alert.monitorId) {