@oneuptime/common 13.0.1 → 13.0.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 (781) 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/LoggerCore.test.ts +597 -0
  246. package/Tests/Server/Utils/Monitor/MonitorTemplateUtil.test.ts +1109 -0
  247. package/Tests/Server/Utils/Monitor/SloTemplateMetricEmitterContract.test.ts +750 -0
  248. package/Tests/Server/Utils/ProductAnalytics.test.ts +404 -0
  249. package/Tests/Server/Utils/Profiling.test.ts +366 -0
  250. package/Tests/Server/Utils/Rules/MonitorRuleCriteriaCache.test.ts +99 -0
  251. package/Tests/Server/Utils/SessionReplay/SessionReplayReadServiceQueries.test.ts +558 -0
  252. package/Tests/Server/Utils/Telemetry/EntityRegistry.test.ts +711 -0
  253. package/Tests/Server/Utils/Telemetry/ResourceFacetResolver.test.ts +522 -0
  254. package/Tests/Server/Utils/VendorAssets.test.ts +17 -0
  255. package/Tests/Types/Dashboard/DashboardTemplateEditorialInvariants.test.ts +659 -0
  256. package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +97 -0
  257. package/Tests/Types/Dashboard/SloDashboardTemplate.test.ts +1179 -0
  258. package/Tests/Types/Database/AccessControl/OwnedThrough.test.ts +136 -0
  259. package/Tests/Types/OnCallDutyPolicy/LayerUtilCorePaths.test.ts +1014 -0
  260. package/Tests/Types/OnCallDutyPolicy/LayerUtilExhaustiveRotation.test.ts +9 -6
  261. package/Tests/Types/Rules/RuleCriteriaFieldRegistry.test.ts +276 -0
  262. package/Tests/Types/Rum/SessionReplayApiContracts.test.ts +180 -1
  263. package/Tests/Types/Telemetry/LlmConventions.test.ts +495 -0
  264. package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +13 -6
  265. package/Tests/UI/Components/Alert.test.tsx +532 -93
  266. package/Tests/UI/Components/Feed.test.tsx +241 -0
  267. package/Tests/UI/Components/Forms/BasicFormStepNavigation.test.tsx +368 -0
  268. package/Tests/UI/Components/Forms/FormSummary.test.tsx +454 -0
  269. package/Tests/UI/Components/Forms/ModelFormJsonColumns.test.tsx +290 -0
  270. package/Tests/UI/Components/Forms/ModelFormRuleCriteria.test.tsx +331 -0
  271. package/Tests/UI/Components/IconOpticalSize.test.tsx +79 -31
  272. package/Tests/UI/Components/ModelTable/ModelTableWrapContent.test.tsx +6 -6
  273. package/Tests/UI/Components/NavBar.test.tsx +91 -2
  274. package/Tests/UI/Components/PencilButton.test.tsx +211 -0
  275. package/Tests/UI/Components/RuleCriteria/RuleCriteriaBuilder.test.tsx +510 -0
  276. package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +350 -0
  277. package/Tests/UI/Components/TableSortAndMobileColumns.test.tsx +50 -0
  278. package/Tests/UI/Components/Telemetry/TelemetryRetentionConfigForm.test.tsx +329 -0
  279. package/Tests/UI/Components/useFeedItems.test.tsx +107 -0
  280. package/Tests/UI/Rum/ChunkLoader.test.ts +401 -0
  281. package/Tests/UI/Rum/RecordingHealthCard.test.tsx +1 -1
  282. package/Tests/UI/Rum/RecordingHealthStrip.test.tsx +7 -1
  283. package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +2 -0
  284. package/Tests/UI/Rum/ReplayEngine.test.ts +1069 -5
  285. package/Tests/UI/Rum/ReplayHeader.test.tsx +579 -2
  286. package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +23 -5
  287. package/Tests/UI/Rum/ReplayRail.test.tsx +143 -1
  288. package/Tests/UI/Rum/ReplayRenderBudget.test.tsx +338 -0
  289. package/Tests/UI/Rum/ReplaySignals.test.ts +179 -0
  290. package/Tests/UI/Rum/ReplayStage.test.tsx +210 -3
  291. package/Tests/UI/Rum/ReplayTimeline.test.tsx +180 -1
  292. package/Tests/UI/Rum/ReplayUserSessionsMenu.test.tsx +405 -0
  293. package/Tests/UI/Rum/SessionReplayEmptyState.test.tsx +13 -16
  294. package/Tests/UI/Rum/SessionReplayFacets.test.tsx +199 -0
  295. package/Tests/UI/Rum/SessionReplaySearchBar.test.tsx +58 -21
  296. package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +2 -0
  297. package/Tests/UI/Rum/SessionReplayTable.test.tsx +717 -4
  298. package/Tests/UI/Rum/SessionReplayUsersPage.test.tsx +435 -0
  299. package/Tests/UI/Rum/SessionReplayUsersTable.test.tsx +577 -0
  300. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +1 -1
  301. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +1 -1
  302. package/Tests/UI/Utils/LabelRuleImportExport.test.ts +192 -0
  303. package/Tests/UI/Utils/Navigation.test.ts +30 -0
  304. package/Tests/Utils/Dashboard/SloTemplateVariableScoping.test.ts +880 -0
  305. package/Tests/Utils/LabelRuleImportExport.test.ts +158 -0
  306. package/Tests/Utils/NetworkDiscovery/AutoImportRuleMatcher.test.ts +93 -0
  307. package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +138 -0
  308. package/Tests/Utils/NetworkSite/TypeHierarchyUtil.test.ts +174 -0
  309. package/Tests/Utils/Rules/RuleCriteriaMatcher.test.ts +1424 -0
  310. package/Tests/Utils/Rum/SessionIdentity.test.ts +72 -0
  311. package/Tests/Utils/Rum/SessionReplayHealth.test.ts +884 -0
  312. package/Tests/Utils/Slo/SloBurnRateRuleState.test.ts +374 -28
  313. package/Tests/Utils/Telemetry/OriginAllowList.test.ts +118 -0
  314. package/Types/Dashboard/DashboardTemplates.ts +465 -0
  315. package/Types/OnCallDutyPolicy/Layer.ts +12 -0
  316. package/Types/Rules/RuleCriteria.ts +51 -0
  317. package/Types/Rules/RuleCriteriaFieldRegistry.ts +449 -0
  318. package/Types/Rum/SessionReplay.ts +75 -0
  319. package/Types/Rum/SessionReplayApi.ts +93 -0
  320. package/UI/Components/Alerts/Alert.tsx +102 -72
  321. package/UI/Components/Button/Button.tsx +4 -1
  322. package/UI/Components/Dropdown/Dropdown.tsx +2 -0
  323. package/UI/Components/Feed/Feed.tsx +15 -0
  324. package/UI/Components/Feed/useFeedItems.ts +227 -0
  325. package/UI/Components/Forms/BasicForm.tsx +42 -21
  326. package/UI/Components/Forms/ModelForm.tsx +80 -1
  327. package/UI/Components/Icon/Icon.tsx +3 -35
  328. package/UI/Components/ModelTable/ModelTable.tsx +19 -0
  329. package/UI/Components/Navbar/NavBar.tsx +1 -0
  330. package/UI/Components/RuleCriteria/RuleCriteriaBuilder.tsx +735 -0
  331. package/UI/Components/RuleCriteria/RuleCriteriaModelForm.tsx +209 -0
  332. package/UI/Components/RuleCriteria/RuleCriteriaModelTable.tsx +205 -0
  333. package/UI/Components/RuleCriteria/RuleCriteriaSummary.tsx +123 -0
  334. package/UI/Components/Table/Table.tsx +3 -0
  335. package/UI/Components/Table/TableBody.tsx +3 -0
  336. package/UI/Components/Table/TableRow.tsx +8 -2
  337. package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +14 -2
  338. package/UI/Styles/Theme.css +1 -0
  339. package/UI/Utils/LabelRuleImportExport.ts +114 -6
  340. package/UI/Utils/Navigation.ts +1 -2
  341. package/UI/esbuild-config.js +46 -0
  342. package/Utils/Faker.ts +93 -6
  343. package/Utils/LabelRuleImportExport.ts +295 -2
  344. package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +108 -8
  345. package/Utils/NetworkSite/CidrMatchUtil.ts +102 -0
  346. package/Utils/NetworkSite/TypeHierarchyUtil.ts +152 -2
  347. package/Utils/Rules/RuleCriteriaMatcher.ts +931 -0
  348. package/Utils/Rum/SessionIdentity.ts +16 -0
  349. package/Utils/Slo/SloBurnRateRuleState.ts +87 -33
  350. package/Utils/Telemetry/OriginAllowList.ts +74 -0
  351. package/build/dist/Models/AnalyticsModels/RumSession.js +32 -0
  352. package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -1
  353. package/build/dist/Models/DatabaseModels/AlertEpisodeLabelRule.js +2 -2
  354. package/build/dist/Models/DatabaseModels/AlertEpisodeLabelRule.js.map +1 -1
  355. package/build/dist/Models/DatabaseModels/AlertEpisodeOnCallRule.js +2 -2
  356. package/build/dist/Models/DatabaseModels/AlertEpisodeOnCallRule.js.map +1 -1
  357. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerRule.js +2 -2
  358. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerRule.js.map +1 -1
  359. package/build/dist/Models/DatabaseModels/AlertEpisodePrivacyRule.js +2 -2
  360. package/build/dist/Models/DatabaseModels/AlertEpisodePrivacyRule.js.map +1 -1
  361. package/build/dist/Models/DatabaseModels/AlertGroupingRule.js +2 -2
  362. package/build/dist/Models/DatabaseModels/AlertGroupingRule.js.map +1 -1
  363. package/build/dist/Models/DatabaseModels/AlertLabelRule.js +2 -2
  364. package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
  365. package/build/dist/Models/DatabaseModels/AlertOnCallRule.js +2 -2
  366. package/build/dist/Models/DatabaseModels/AlertOnCallRule.js.map +1 -1
  367. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +2 -2
  368. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
  369. package/build/dist/Models/DatabaseModels/AlertPrivacyRule.js +2 -2
  370. package/build/dist/Models/DatabaseModels/AlertPrivacyRule.js.map +1 -1
  371. package/build/dist/Models/DatabaseModels/AlertReminderRule.js +6 -5
  372. package/build/dist/Models/DatabaseModels/AlertReminderRule.js.map +1 -1
  373. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js +2 -2
  374. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js.map +1 -1
  375. package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js +2 -2
  376. package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js.map +1 -1
  377. package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js +2 -2
  378. package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js.map +1 -1
  379. package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js +2 -2
  380. package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js.map +1 -1
  381. package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js +2 -2
  382. package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js.map +1 -1
  383. package/build/dist/Models/DatabaseModels/DashboardLabelRule.js +2 -2
  384. package/build/dist/Models/DatabaseModels/DashboardLabelRule.js.map +1 -1
  385. package/build/dist/Models/DatabaseModels/DashboardOwnerRule.js +2 -2
  386. package/build/dist/Models/DatabaseModels/DashboardOwnerRule.js.map +1 -1
  387. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RelationOnlyRuleBaseModel.js +12 -0
  388. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RelationOnlyRuleBaseModel.js.map +1 -0
  389. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RuleBaseModel.js +50 -0
  390. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RuleBaseModel.js.map +1 -0
  391. package/build/dist/Models/DatabaseModels/DockerHostLabelRule.js +2 -2
  392. package/build/dist/Models/DatabaseModels/DockerHostLabelRule.js.map +1 -1
  393. package/build/dist/Models/DatabaseModels/DockerHostOwnerRule.js +2 -2
  394. package/build/dist/Models/DatabaseModels/DockerHostOwnerRule.js.map +1 -1
  395. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +2 -2
  396. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -1
  397. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +2 -2
  398. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -1
  399. package/build/dist/Models/DatabaseModels/HostLabelRule.js +2 -2
  400. package/build/dist/Models/DatabaseModels/HostLabelRule.js.map +1 -1
  401. package/build/dist/Models/DatabaseModels/HostOwnerRule.js +2 -2
  402. package/build/dist/Models/DatabaseModels/HostOwnerRule.js.map +1 -1
  403. package/build/dist/Models/DatabaseModels/IncidentEpisodeLabelRule.js +2 -2
  404. package/build/dist/Models/DatabaseModels/IncidentEpisodeLabelRule.js.map +1 -1
  405. package/build/dist/Models/DatabaseModels/IncidentEpisodeOnCallRule.js +2 -2
  406. package/build/dist/Models/DatabaseModels/IncidentEpisodeOnCallRule.js.map +1 -1
  407. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerRule.js +2 -2
  408. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerRule.js.map +1 -1
  409. package/build/dist/Models/DatabaseModels/IncidentEpisodePrivacyRule.js +2 -2
  410. package/build/dist/Models/DatabaseModels/IncidentEpisodePrivacyRule.js.map +1 -1
  411. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +2 -2
  412. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -1
  413. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +2 -2
  414. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
  415. package/build/dist/Models/DatabaseModels/IncidentOnCallRule.js +2 -2
  416. package/build/dist/Models/DatabaseModels/IncidentOnCallRule.js.map +1 -1
  417. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +2 -2
  418. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
  419. package/build/dist/Models/DatabaseModels/IncidentPrivacyRule.js +2 -2
  420. package/build/dist/Models/DatabaseModels/IncidentPrivacyRule.js.map +1 -1
  421. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js +6 -5
  422. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js.map +1 -1
  423. package/build/dist/Models/DatabaseModels/IncidentSlaRule.js +2 -2
  424. package/build/dist/Models/DatabaseModels/IncidentSlaRule.js.map +1 -1
  425. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js +3 -4
  426. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js.map +1 -1
  427. package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js +2 -2
  428. package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js.map +1 -1
  429. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js +2 -2
  430. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js.map +1 -1
  431. package/build/dist/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.js +277 -0
  432. package/build/dist/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.js.map +1 -0
  433. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  434. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  435. package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js +2 -2
  436. package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js.map +1 -1
  437. package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js +2 -2
  438. package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js.map +1 -1
  439. package/build/dist/Models/DatabaseModels/KubernetesClusterLabelRule.js +2 -2
  440. package/build/dist/Models/DatabaseModels/KubernetesClusterLabelRule.js.map +1 -1
  441. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerRule.js +2 -2
  442. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerRule.js.map +1 -1
  443. package/build/dist/Models/DatabaseModels/MonitorLabelRule.js +2 -2
  444. package/build/dist/Models/DatabaseModels/MonitorLabelRule.js.map +1 -1
  445. package/build/dist/Models/DatabaseModels/MonitorOwnerRule.js +2 -2
  446. package/build/dist/Models/DatabaseModels/MonitorOwnerRule.js.map +1 -1
  447. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +2 -2
  448. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
  449. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +2 -2
  450. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -1
  451. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +2 -2
  452. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -1
  453. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +2 -2
  454. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -1
  455. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js +2 -2
  456. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js.map +1 -1
  457. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js +2 -2
  458. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js.map +1 -1
  459. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js +2 -2
  460. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js.map +1 -1
  461. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js +2 -2
  462. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js.map +1 -1
  463. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +2 -2
  464. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -1
  465. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +2 -2
  466. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -1
  467. package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js +2 -2
  468. package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js.map +1 -1
  469. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js +2 -2
  470. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js.map +1 -1
  471. package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js +2 -2
  472. package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js.map +1 -1
  473. package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js +2 -2
  474. package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js.map +1 -1
  475. package/build/dist/Models/DatabaseModels/RunbookLabelRule.js +2 -2
  476. package/build/dist/Models/DatabaseModels/RunbookLabelRule.js.map +1 -1
  477. package/build/dist/Models/DatabaseModels/RunbookOwnerRule.js +2 -2
  478. package/build/dist/Models/DatabaseModels/RunbookOwnerRule.js.map +1 -1
  479. package/build/dist/Models/DatabaseModels/RunbookRule.js +2 -2
  480. package/build/dist/Models/DatabaseModels/RunbookRule.js.map +1 -1
  481. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +2 -2
  482. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
  483. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +2 -2
  484. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
  485. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js +6 -5
  486. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js.map +1 -1
  487. package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js +2 -2
  488. package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js.map +1 -1
  489. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js +2 -2
  490. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js.map +1 -1
  491. package/build/dist/Models/DatabaseModels/ServiceLabelRule.js +2 -2
  492. package/build/dist/Models/DatabaseModels/ServiceLabelRule.js.map +1 -1
  493. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js +281 -4
  494. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js.map +1 -1
  495. package/build/dist/Models/DatabaseModels/ServiceOwnerRule.js +2 -2
  496. package/build/dist/Models/DatabaseModels/ServiceOwnerRule.js.map +1 -1
  497. package/build/dist/Models/DatabaseModels/StatusPageLabelRule.js +2 -2
  498. package/build/dist/Models/DatabaseModels/StatusPageLabelRule.js.map +1 -1
  499. package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js +2 -2
  500. package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js.map +1 -1
  501. package/build/dist/Models/DatabaseModels/StatusPageOwnerRule.js +2 -2
  502. package/build/dist/Models/DatabaseModels/StatusPageOwnerRule.js.map +1 -1
  503. package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js +2 -2
  504. package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js.map +1 -1
  505. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js +2 -2
  506. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js.map +1 -1
  507. package/build/dist/Models/DatabaseModels/WorkflowLabelRule.js +2 -2
  508. package/build/dist/Models/DatabaseModels/WorkflowLabelRule.js.map +1 -1
  509. package/build/dist/Models/DatabaseModels/WorkflowOwnerRule.js +2 -2
  510. package/build/dist/Models/DatabaseModels/WorkflowOwnerRule.js.map +1 -1
  511. package/build/dist/Server/API/TelemetryAPI.js +211 -4
  512. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  513. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792400000000-AddSloBurnRateRuleIncidents.js +60 -0
  514. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792400000000-AddSloBurnRateRuleIncidents.js.map +1 -0
  515. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792500000000-AddConfigurableRuleCriteria.js +301 -0
  516. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792500000000-AddConfigurableRuleCriteria.js.map +1 -0
  517. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792600000000-AddIncomingCallPolicyPhoneNumbers.js +30 -0
  518. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792600000000-AddIncomingCallPolicyPhoneNumbers.js.map +1 -0
  519. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  520. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  521. package/build/dist/Server/Middleware/MultipartFormData.js +38 -21
  522. package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
  523. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js +17 -0
  524. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js.map +1 -1
  525. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js +17 -0
  526. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js.map +1 -1
  527. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js +17 -0
  528. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js.map +1 -1
  529. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js +17 -0
  530. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js.map +1 -1
  531. package/build/dist/Server/Services/AlertGroupingEngineService.js +21 -0
  532. package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
  533. package/build/dist/Server/Services/AlertLabelRuleEngineService.js +21 -0
  534. package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
  535. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js +21 -0
  536. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js.map +1 -1
  537. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +21 -0
  538. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
  539. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js +21 -0
  540. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js.map +1 -1
  541. package/build/dist/Server/Services/AlertReminderRuleService.js +44 -26
  542. package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
  543. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +54 -11
  544. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
  545. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +16 -0
  546. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
  547. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +16 -0
  548. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
  549. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +16 -0
  550. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
  551. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +16 -0
  552. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
  553. package/build/dist/Server/Services/DashboardLabelRuleEngineService.js +16 -0
  554. package/build/dist/Server/Services/DashboardLabelRuleEngineService.js.map +1 -1
  555. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +16 -0
  556. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js.map +1 -1
  557. package/build/dist/Server/Services/DatabaseService.js +235 -10
  558. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  559. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +16 -0
  560. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
  561. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +16 -0
  562. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
  563. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +16 -0
  564. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
  565. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +16 -0
  566. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
  567. package/build/dist/Server/Services/HostLabelRuleEngineService.js +12 -0
  568. package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
  569. package/build/dist/Server/Services/HostOwnerRuleEngineService.js +12 -0
  570. package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
  571. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js +17 -0
  572. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js.map +1 -1
  573. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js +17 -0
  574. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js.map +1 -1
  575. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +17 -0
  576. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
  577. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js +17 -0
  578. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js.map +1 -1
  579. package/build/dist/Server/Services/IncidentGroupingEngineService.js +39 -13
  580. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
  581. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +39 -9
  582. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
  583. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js +39 -10
  584. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js.map +1 -1
  585. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +39 -10
  586. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
  587. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js +39 -10
  588. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js.map +1 -1
  589. package/build/dist/Server/Services/IncidentReminderRuleService.js +44 -26
  590. package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
  591. package/build/dist/Server/Services/IncidentSlaRuleService.js +33 -12
  592. package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
  593. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +16 -0
  594. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -1
  595. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +16 -0
  596. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
  597. package/build/dist/Server/Services/IncomingCallPolicyPhoneNumberService.js +127 -0
  598. package/build/dist/Server/Services/IncomingCallPolicyPhoneNumberService.js.map +1 -0
  599. package/build/dist/Server/Services/IncomingCallPolicyService.js +187 -4
  600. package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -1
  601. package/build/dist/Server/Services/Index.js +2 -0
  602. package/build/dist/Server/Services/Index.js.map +1 -1
  603. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js +16 -0
  604. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js.map +1 -1
  605. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +16 -0
  606. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
  607. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +16 -0
  608. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
  609. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +16 -0
  610. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
  611. package/build/dist/Server/Services/LabelService.js +39 -7
  612. package/build/dist/Server/Services/LabelService.js.map +1 -1
  613. package/build/dist/Server/Services/MonitorLabelRuleEngineService.js +16 -0
  614. package/build/dist/Server/Services/MonitorLabelRuleEngineService.js.map +1 -1
  615. package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js +16 -0
  616. package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js.map +1 -1
  617. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +2 -0
  618. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  619. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +57 -1
  620. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
  621. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +17 -0
  622. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
  623. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +16 -0
  624. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
  625. package/build/dist/Server/Services/NetworkDeviceService.js +2 -0
  626. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  627. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +56 -1
  628. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -1
  629. package/build/dist/Server/Services/NetworkSiteService.js +187 -22
  630. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  631. package/build/dist/Server/Services/NetworkSiteTypeService.js +126 -51
  632. package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -1
  633. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +16 -0
  634. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -1
  635. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +16 -0
  636. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
  637. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +16 -0
  638. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -1
  639. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +16 -0
  640. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
  641. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +16 -0
  642. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
  643. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +16 -0
  644. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
  645. package/build/dist/Server/Services/ProjectCallSMSConfigService.js +115 -6
  646. package/build/dist/Server/Services/ProjectCallSMSConfigService.js.map +1 -1
  647. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +16 -0
  648. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
  649. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +16 -0
  650. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
  651. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +16 -0
  652. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -1
  653. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +16 -0
  654. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
  655. package/build/dist/Server/Services/RunbookLabelRuleEngineService.js +16 -0
  656. package/build/dist/Server/Services/RunbookLabelRuleEngineService.js.map +1 -1
  657. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +16 -0
  658. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
  659. package/build/dist/Server/Services/RunbookRuleEngineService.js +12 -0
  660. package/build/dist/Server/Services/RunbookRuleEngineService.js.map +1 -1
  661. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +38 -9
  662. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
  663. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +38 -10
  664. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
  665. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +32 -14
  666. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
  667. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +16 -0
  668. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -1
  669. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +16 -0
  670. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
  671. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +16 -0
  672. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
  673. package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js +554 -12
  674. package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js.map +1 -1
  675. package/build/dist/Server/Services/ServiceLevelObjectiveService.js +50 -14
  676. package/build/dist/Server/Services/ServiceLevelObjectiveService.js.map +1 -1
  677. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +16 -0
  678. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
  679. package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js +16 -0
  680. package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js.map +1 -1
  681. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +25 -2
  682. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -1
  683. package/build/dist/Server/Services/StatusPageMonitorRuleService.js +19 -1
  684. package/build/dist/Server/Services/StatusPageMonitorRuleService.js.map +1 -1
  685. package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js +16 -0
  686. package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js.map +1 -1
  687. package/build/dist/Server/Services/UserService.js +14 -49
  688. package/build/dist/Server/Services/UserService.js.map +1 -1
  689. package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js +16 -0
  690. package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js.map +1 -1
  691. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +16 -0
  692. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -1
  693. package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js +16 -0
  694. package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js.map +1 -1
  695. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +16 -0
  696. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
  697. package/build/dist/Server/Types/Database/QueryHelper.js +67 -0
  698. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  699. package/build/dist/Server/Utils/AI/Toolbox/SloTools.js +21 -4
  700. package/build/dist/Server/Utils/AI/Toolbox/SloTools.js.map +1 -1
  701. package/build/dist/Server/Utils/IncomingCallPhoneNumber.js +9 -3
  702. package/build/dist/Server/Utils/IncomingCallPhoneNumber.js.map +1 -1
  703. package/build/dist/Server/Utils/Profiling.js +10 -1
  704. package/build/dist/Server/Utils/Profiling.js.map +1 -1
  705. package/build/dist/Server/Utils/Rules/MonitorRuleCriteriaCache.js +30 -0
  706. package/build/dist/Server/Utils/Rules/MonitorRuleCriteriaCache.js.map +1 -0
  707. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +344 -0
  708. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -1
  709. package/build/dist/Server/Utils/Telemetry.js +1 -1
  710. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  711. package/build/dist/Server/Utils/VendorAssets.js +2 -0
  712. package/build/dist/Server/Utils/VendorAssets.js.map +1 -1
  713. package/build/dist/Types/Dashboard/DashboardTemplates.js +425 -0
  714. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  715. package/build/dist/Types/OnCallDutyPolicy/Layer.js +11 -0
  716. package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
  717. package/build/dist/Types/Rules/RuleCriteria.js +18 -0
  718. package/build/dist/Types/Rules/RuleCriteria.js.map +1 -0
  719. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +435 -0
  720. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -0
  721. package/build/dist/Types/Rum/SessionReplay.js +64 -0
  722. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  723. package/build/dist/Types/Rum/SessionReplayApi.js.map +1 -1
  724. package/build/dist/UI/Components/Alerts/Alert.js +63 -41
  725. package/build/dist/UI/Components/Alerts/Alert.js.map +1 -1
  726. package/build/dist/UI/Components/Button/Button.js +3 -1
  727. package/build/dist/UI/Components/Button/Button.js.map +1 -1
  728. package/build/dist/UI/Components/Dropdown/Dropdown.js +1 -1
  729. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  730. package/build/dist/UI/Components/Feed/Feed.js +4 -1
  731. package/build/dist/UI/Components/Feed/Feed.js.map +1 -1
  732. package/build/dist/UI/Components/Feed/useFeedItems.js +137 -0
  733. package/build/dist/UI/Components/Feed/useFeedItems.js.map +1 -0
  734. package/build/dist/UI/Components/Forms/BasicForm.js +38 -19
  735. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  736. package/build/dist/UI/Components/Forms/ModelForm.js +65 -1
  737. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  738. package/build/dist/UI/Components/Icon/Icon.js +3 -35
  739. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  740. package/build/dist/UI/Components/ModelTable/ModelTable.js +12 -1
  741. package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
  742. package/build/dist/UI/Components/Navbar/NavBar.js +1 -0
  743. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  744. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaBuilder.js +383 -0
  745. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaBuilder.js.map +1 -0
  746. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelForm.js +124 -0
  747. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelForm.js.map +1 -0
  748. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelTable.js +126 -0
  749. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelTable.js.map +1 -0
  750. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaSummary.js +63 -0
  751. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaSummary.js.map +1 -0
  752. package/build/dist/UI/Components/Table/Table.js +1 -1
  753. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  754. package/build/dist/UI/Components/Table/TableBody.js +4 -2
  755. package/build/dist/UI/Components/Table/TableBody.js.map +1 -1
  756. package/build/dist/UI/Components/Table/TableRow.js +3 -2
  757. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  758. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js +14 -2
  759. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +1 -1
  760. package/build/dist/UI/Utils/LabelRuleImportExport.js +81 -5
  761. package/build/dist/UI/Utils/LabelRuleImportExport.js.map +1 -1
  762. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  763. package/build/dist/Utils/Faker.js +76 -6
  764. package/build/dist/Utils/Faker.js.map +1 -1
  765. package/build/dist/Utils/LabelRuleImportExport.js +157 -3
  766. package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
  767. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js +81 -5
  768. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
  769. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +77 -0
  770. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -1
  771. package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js +109 -2
  772. package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js.map +1 -1
  773. package/build/dist/Utils/Rules/RuleCriteriaMatcher.js +526 -0
  774. package/build/dist/Utils/Rules/RuleCriteriaMatcher.js.map +1 -0
  775. package/build/dist/Utils/Rum/SessionIdentity.js +13 -1
  776. package/build/dist/Utils/Rum/SessionIdentity.js.map +1 -1
  777. package/build/dist/Utils/Slo/SloBurnRateRuleState.js +28 -15
  778. package/build/dist/Utils/Slo/SloBurnRateRuleState.js.map +1 -1
  779. package/build/dist/Utils/Telemetry/OriginAllowList.js +61 -0
  780. package/build/dist/Utils/Telemetry/OriginAllowList.js.map +1 -1
  781. package/package.json +20 -20
@@ -0,0 +1,526 @@
1
+ import FilterCondition from "../../Types/Filter/FilterCondition";
2
+ import ObjectID from "../../Types/ObjectID";
3
+ import { RULE_CRITERIA_LEGACY_NEVER_MATCH_PATTERN, RULE_CRITERIA_SCHEMA_VERSION, RuleCriteriaOperator, } from "../../Types/Rules/RuleCriteria";
4
+ import RulePatternMatchUtil from "./RulePatternMatchUtil";
5
+ export const RULE_CRITERIA_MAX_FILTERS = 50;
6
+ export const RULE_CRITERIA_MAX_STRING_LENGTH = 500;
7
+ export const RULE_CRITERIA_MAX_RELATION_VALUES = 100;
8
+ const RULE_CRITERIA_OPERATORS = new Set(Object.values(RuleCriteriaOperator));
9
+ const RELATION_OPERATORS = new Set([
10
+ RuleCriteriaOperator.HasAnyOf,
11
+ RuleCriteriaOperator.HasAllOf,
12
+ RuleCriteriaOperator.HasNoneOf,
13
+ ]);
14
+ const NEGATED_OPERATORS = new Set([
15
+ RuleCriteriaOperator.NotEquals,
16
+ RuleCriteriaOperator.DoesNotContain,
17
+ RuleCriteriaOperator.DoesNotMatchPattern,
18
+ RuleCriteriaOperator.HasNoneOf,
19
+ ]);
20
+ const RULE_CRITERIA_KEYS = new Set([
21
+ "schemaVersion",
22
+ "filterCondition",
23
+ "filters",
24
+ "isEnabled",
25
+ ]);
26
+ const RULE_CRITERIA_FILTER_KEYS = new Set([
27
+ "field",
28
+ "operator",
29
+ "value",
30
+ ]);
31
+ function isRecord(value) {
32
+ return typeof value === "object" && value !== null && !Array.isArray(value);
33
+ }
34
+ function hasExactlyKeys(value, expectedKeys) {
35
+ const actualKeys = Object.keys(value);
36
+ return (actualKeys.length === expectedKeys.size &&
37
+ actualKeys.every((key) => {
38
+ return expectedKeys.has(key);
39
+ }));
40
+ }
41
+ export function isRuleCriteriaOperator(value) {
42
+ return (typeof value === "string" &&
43
+ RULE_CRITERIA_OPERATORS.has(value));
44
+ }
45
+ export function isRuleCriteriaValue(value) {
46
+ if (typeof value === "string") {
47
+ return (value.trim().length > 0 && value.length <= RULE_CRITERIA_MAX_STRING_LENGTH);
48
+ }
49
+ if (typeof value === "number") {
50
+ return Number.isFinite(value);
51
+ }
52
+ if (typeof value === "boolean") {
53
+ return true;
54
+ }
55
+ if (Array.isArray(value)) {
56
+ return (value.length > 0 &&
57
+ value.length <= RULE_CRITERIA_MAX_RELATION_VALUES &&
58
+ value.every((item) => {
59
+ return (typeof item === "string" &&
60
+ item.trim().length > 0 &&
61
+ item.length <= RULE_CRITERIA_MAX_STRING_LENGTH);
62
+ }));
63
+ }
64
+ return false;
65
+ }
66
+ export function getRuleCriteriaFilterValidationError(value) {
67
+ if (!isRecord(value)) {
68
+ return "A rule criteria filter must be an object.";
69
+ }
70
+ if (typeof value["field"] !== "string") {
71
+ return "A rule criteria filter field must be a string.";
72
+ }
73
+ if (value["field"].trim().length === 0) {
74
+ return "A rule criteria filter field cannot be blank.";
75
+ }
76
+ if (value["field"].length > RULE_CRITERIA_MAX_STRING_LENGTH) {
77
+ return `A rule criteria filter field cannot exceed ${RULE_CRITERIA_MAX_STRING_LENGTH} characters.`;
78
+ }
79
+ if (!isRuleCriteriaOperator(value["operator"])) {
80
+ return "A rule criteria filter has an unsupported operator.";
81
+ }
82
+ if (Array.isArray(value["value"]) &&
83
+ value["value"].length > RULE_CRITERIA_MAX_RELATION_VALUES) {
84
+ return `A rule criteria relation value cannot contain more than ${RULE_CRITERIA_MAX_RELATION_VALUES} items.`;
85
+ }
86
+ if (!isRuleCriteriaValue(value["value"])) {
87
+ return `A rule criteria filter value must be a finite number, a boolean, a non-blank string no longer than ${RULE_CRITERIA_MAX_STRING_LENGTH} characters, or a non-empty array of such strings.`;
88
+ }
89
+ const operator = value["operator"];
90
+ const isRelationOperator = RELATION_OPERATORS.has(operator);
91
+ const isArrayValue = Array.isArray(value["value"]);
92
+ if (isRelationOperator && !isArrayValue) {
93
+ return "A relation rule criteria operator requires an array of string IDs.";
94
+ }
95
+ if (!isRelationOperator && isArrayValue) {
96
+ return "A text rule criteria operator requires a scalar value.";
97
+ }
98
+ if ((operator === RuleCriteriaOperator.MatchesPattern ||
99
+ operator === RuleCriteriaOperator.DoesNotMatchPattern) &&
100
+ (typeof value["value"] !== "string" ||
101
+ !RulePatternMatchUtil.isSupportedPattern(value["value"]))) {
102
+ return "A pattern rule criteria operator requires a valid regular expression or wildcard pattern.";
103
+ }
104
+ if (!hasExactlyKeys(value, RULE_CRITERIA_FILTER_KEYS)) {
105
+ return "A rule criteria filter may only contain field, operator, and value.";
106
+ }
107
+ return null;
108
+ }
109
+ export function getRuleCriteriaValidationError(value) {
110
+ if (!isRecord(value)) {
111
+ return "Rule criteria must be an object.";
112
+ }
113
+ if (value["schemaVersion"] !== RULE_CRITERIA_SCHEMA_VERSION) {
114
+ return `Rule criteria schemaVersion must be ${RULE_CRITERIA_SCHEMA_VERSION}.`;
115
+ }
116
+ if (value["filterCondition"] !== FilterCondition.All &&
117
+ value["filterCondition"] !== FilterCondition.Any) {
118
+ return "Rule criteria filterCondition must be All or Any.";
119
+ }
120
+ if (!Array.isArray(value["filters"])) {
121
+ return "Rule criteria filters must be an array.";
122
+ }
123
+ if (value["filters"].length > RULE_CRITERIA_MAX_FILTERS) {
124
+ return `Rule criteria cannot contain more than ${RULE_CRITERIA_MAX_FILTERS} filters.`;
125
+ }
126
+ if (Object.keys(value).some((key) => {
127
+ return !RULE_CRITERIA_KEYS.has(key);
128
+ })) {
129
+ return "Rule criteria may only contain schemaVersion, filterCondition, filters, and optional isEnabled.";
130
+ }
131
+ if (value["isEnabled"] !== undefined &&
132
+ typeof value["isEnabled"] !== "boolean") {
133
+ return "Rule criteria isEnabled must be a boolean when supplied.";
134
+ }
135
+ for (let index = 0; index < value["filters"].length; index++) {
136
+ const validationError = getRuleCriteriaFilterValidationError(value["filters"][index]);
137
+ if (validationError) {
138
+ return `Rule criteria filter ${index + 1}: ${validationError}`;
139
+ }
140
+ }
141
+ return null;
142
+ }
143
+ export function isValidRuleCriteria(value) {
144
+ return getRuleCriteriaValidationError(value) === null;
145
+ }
146
+ /**
147
+ * Evaluates validated conditions sequentially so All/Any can short-circuit.
148
+ * A configured but malformed payload fails closed. Callers choose the meaning
149
+ * of a valid, configured empty filter list through emptyResult.
150
+ */
151
+ export class RuleCriteriaMatcher {
152
+ static async matches(options) {
153
+ if (!isValidRuleCriteria(options.criteria)) {
154
+ return false;
155
+ }
156
+ if (options.criteria.filters.length === 0) {
157
+ return options.emptyResult;
158
+ }
159
+ if (options.criteria.filterCondition === FilterCondition.All) {
160
+ for (const filter of options.criteria.filters) {
161
+ if (!(await options.matchesFilter(filter))) {
162
+ return false;
163
+ }
164
+ }
165
+ return true;
166
+ }
167
+ for (const filter of options.criteria.filters) {
168
+ if (await options.matchesFilter(filter)) {
169
+ return true;
170
+ }
171
+ }
172
+ return false;
173
+ }
174
+ static matchesSync(options) {
175
+ if (!isValidRuleCriteria(options.criteria)) {
176
+ return false;
177
+ }
178
+ if (options.criteria.filters.length === 0) {
179
+ return options.emptyResult;
180
+ }
181
+ if (options.criteria.filterCondition === FilterCondition.All) {
182
+ for (const filter of options.criteria.filters) {
183
+ if (!options.matchesFilter(filter)) {
184
+ return false;
185
+ }
186
+ }
187
+ return true;
188
+ }
189
+ for (const filter of options.criteria.filters) {
190
+ if (options.matchesFilter(filter)) {
191
+ return true;
192
+ }
193
+ }
194
+ return false;
195
+ }
196
+ static async matchesWithLegacy(options) {
197
+ if (options.rule.criteria === undefined || options.rule.criteria === null) {
198
+ return await options.matchesLegacyRule(options.rule);
199
+ }
200
+ if (!isValidRuleCriteria(options.rule.criteria)) {
201
+ return false;
202
+ }
203
+ if (options.correlation &&
204
+ options.rule.criteria.filters.some((filter) => {
205
+ return RuleCriteriaMatcher.isCorrelatedField({
206
+ correlation: options.correlation,
207
+ filter: filter,
208
+ });
209
+ })) {
210
+ return await RuleCriteriaMatcher.matchesWithCorrelation(Object.assign(Object.assign({}, options), { criteria: options.rule.criteria, correlation: options.correlation }));
211
+ }
212
+ return await RuleCriteriaMatcher.matches({
213
+ criteria: options.rule.criteria,
214
+ emptyResult: options.emptyResult,
215
+ matchesFilter: async (filter) => {
216
+ return await RuleCriteriaMatcher.matchesLegacyFilter(Object.assign(Object.assign({}, options), { filter: filter }));
217
+ },
218
+ });
219
+ }
220
+ static async matchesWithCorrelation(options) {
221
+ if (options.criteria.filters.length === 0) {
222
+ return options.emptyResult;
223
+ }
224
+ let candidatesPromise;
225
+ const getCandidates = async () => {
226
+ if (!candidatesPromise) {
227
+ candidatesPromise = Promise.resolve(options.correlation.getCandidates());
228
+ }
229
+ return await candidatesPromise;
230
+ };
231
+ if (options.criteria.filterCondition === FilterCondition.Any) {
232
+ for (const filter of options.criteria.filters) {
233
+ const isPositiveCorrelatedFilter = RuleCriteriaMatcher.isCorrelatedField({
234
+ correlation: options.correlation,
235
+ filter: filter,
236
+ }) && !NEGATED_OPERATORS.has(filter.operator);
237
+ if (isPositiveCorrelatedFilter) {
238
+ if (await RuleCriteriaMatcher.matchesCorrelatedFilterAgainstAnyCandidate(Object.assign(Object.assign({}, options), { filter: filter, candidates: await getCandidates() }))) {
239
+ return true;
240
+ }
241
+ continue;
242
+ }
243
+ /*
244
+ * Negation over a related collection is global: it means that no
245
+ * candidate matches the positive form, not that one candidate does
246
+ * not match it. Non-correlated filters are global as well.
247
+ */
248
+ if (await RuleCriteriaMatcher.matchesLegacyFilter(Object.assign(Object.assign({}, options), { filter: filter }))) {
249
+ return true;
250
+ }
251
+ }
252
+ return false;
253
+ }
254
+ return await RuleCriteriaMatcher.matchesAllWithCorrelation(Object.assign(Object.assign({}, options), { getCandidates: getCandidates }));
255
+ }
256
+ static async matchesAllWithCorrelation(options) {
257
+ const positiveCorrelatedFilters = [];
258
+ for (const filter of options.criteria.filters) {
259
+ if (RuleCriteriaMatcher.isCorrelatedField({
260
+ correlation: options.correlation,
261
+ filter: filter,
262
+ }) &&
263
+ !NEGATED_OPERATORS.has(filter.operator)) {
264
+ positiveCorrelatedFilters.push(filter);
265
+ continue;
266
+ }
267
+ /*
268
+ * Keep negative correlated filters global. Evaluating a negated filter
269
+ * per candidate would incorrectly turn "none match" into "one does not
270
+ * match" whenever a collection contains mixed candidates.
271
+ */
272
+ if (!(await RuleCriteriaMatcher.matchesLegacyFilter(Object.assign(Object.assign({}, options), { filter: filter })))) {
273
+ return false;
274
+ }
275
+ }
276
+ if (positiveCorrelatedFilters.length === 0) {
277
+ return true;
278
+ }
279
+ const candidates = await options.getCandidates();
280
+ for (const candidate of candidates) {
281
+ let candidateMatchesAll = true;
282
+ for (const filter of positiveCorrelatedFilters) {
283
+ if (!(await RuleCriteriaMatcher.matchesLegacyFilter(Object.assign(Object.assign({}, options), { filter: filter, matchesLegacyRule: async (rule) => {
284
+ return await options.correlation.matchesLegacyRuleForCandidate(rule, candidate);
285
+ } })))) {
286
+ candidateMatchesAll = false;
287
+ break;
288
+ }
289
+ }
290
+ if (candidateMatchesAll) {
291
+ return true;
292
+ }
293
+ }
294
+ return false;
295
+ }
296
+ static async matchesCorrelatedFilterAgainstAnyCandidate(options) {
297
+ for (const candidate of options.candidates) {
298
+ if (await RuleCriteriaMatcher.matchesLegacyFilter(Object.assign(Object.assign({}, options), { matchesLegacyRule: async (rule) => {
299
+ return await options.correlation.matchesLegacyRuleForCandidate(rule, candidate);
300
+ } }))) {
301
+ return true;
302
+ }
303
+ }
304
+ return false;
305
+ }
306
+ static isCorrelatedField(options) {
307
+ return options.correlation.fields.some((field) => {
308
+ return field === options.filter.field;
309
+ });
310
+ }
311
+ static matchesWithLegacySync(options) {
312
+ if (options.rule.criteria === undefined || options.rule.criteria === null) {
313
+ return options.matchesLegacyRule(options.rule);
314
+ }
315
+ return RuleCriteriaMatcher.matchesSync({
316
+ criteria: options.rule.criteria,
317
+ emptyResult: options.emptyResult,
318
+ matchesFilter: (filter) => {
319
+ return RuleCriteriaMatcher.matchesLegacyFilterSync(Object.assign(Object.assign({}, options), { filter: filter }));
320
+ },
321
+ });
322
+ }
323
+ static async matchesLegacyFilter(options) {
324
+ try {
325
+ if (!RuleCriteriaMatcher.isAllowedLegacyField(options)) {
326
+ return false;
327
+ }
328
+ if (RELATION_OPERATORS.has(options.filter.operator)) {
329
+ return await RuleCriteriaMatcher.matchesLegacyRelationFilter(options);
330
+ }
331
+ const textValue = RuleCriteriaMatcher.toLegacyTextValue(options.filter);
332
+ const rule = RuleCriteriaMatcher.cloneRuleForFilter(Object.assign(Object.assign({}, options), { value: textValue.pattern }));
333
+ const result = await options.matchesLegacyRule(rule);
334
+ return textValue.negate ? !result : result;
335
+ }
336
+ catch (_a) {
337
+ return false;
338
+ }
339
+ }
340
+ static matchesLegacyFilterSync(options) {
341
+ try {
342
+ if (!RuleCriteriaMatcher.isAllowedLegacyField(options)) {
343
+ return false;
344
+ }
345
+ if (RELATION_OPERATORS.has(options.filter.operator)) {
346
+ return RuleCriteriaMatcher.matchesLegacyRelationFilterSync(options);
347
+ }
348
+ const textValue = RuleCriteriaMatcher.toLegacyTextValue(options.filter);
349
+ const rule = RuleCriteriaMatcher.cloneRuleForFilter(Object.assign(Object.assign({}, options), { value: textValue.pattern }));
350
+ const result = options.matchesLegacyRule(rule);
351
+ return textValue.negate ? !result : result;
352
+ }
353
+ catch (_a) {
354
+ return false;
355
+ }
356
+ }
357
+ static async matchesLegacyRelationFilter(options) {
358
+ const values = options.filter.value;
359
+ if (options.filter.operator === RuleCriteriaOperator.HasAnyOf) {
360
+ if (values.length === 0) {
361
+ return false;
362
+ }
363
+ return await options.matchesLegacyRule(RuleCriteriaMatcher.cloneRuleForFilter(Object.assign(Object.assign({}, options), { value: values.map(RuleCriteriaMatcher.toIdBearingStub) })));
364
+ }
365
+ for (const value of values) {
366
+ const matches = await options.matchesLegacyRule(RuleCriteriaMatcher.cloneRuleForFilter(Object.assign(Object.assign({}, options), { value: [RuleCriteriaMatcher.toIdBearingStub(value)] })));
367
+ if (options.filter.operator === RuleCriteriaOperator.HasAllOf &&
368
+ !matches) {
369
+ return false;
370
+ }
371
+ if (options.filter.operator === RuleCriteriaOperator.HasNoneOf &&
372
+ matches) {
373
+ return false;
374
+ }
375
+ }
376
+ return true;
377
+ }
378
+ static matchesLegacyRelationFilterSync(options) {
379
+ const values = options.filter.value;
380
+ if (options.filter.operator === RuleCriteriaOperator.HasAnyOf) {
381
+ if (values.length === 0) {
382
+ return false;
383
+ }
384
+ return options.matchesLegacyRule(RuleCriteriaMatcher.cloneRuleForFilter(Object.assign(Object.assign({}, options), { value: values.map(RuleCriteriaMatcher.toIdBearingStub) })));
385
+ }
386
+ for (const value of values) {
387
+ const matches = options.matchesLegacyRule(RuleCriteriaMatcher.cloneRuleForFilter(Object.assign(Object.assign({}, options), { value: [RuleCriteriaMatcher.toIdBearingStub(value)] })));
388
+ if (options.filter.operator === RuleCriteriaOperator.HasAllOf &&
389
+ !matches) {
390
+ return false;
391
+ }
392
+ if (options.filter.operator === RuleCriteriaOperator.HasNoneOf &&
393
+ matches) {
394
+ return false;
395
+ }
396
+ }
397
+ return true;
398
+ }
399
+ static cloneRuleForFilter(options) {
400
+ const clone = Object.assign(Object.create(Object.getPrototypeOf(options.rule)), options.rule);
401
+ const mutableClone = clone;
402
+ for (const field of options.legacyFields) {
403
+ mutableClone[field] = undefined;
404
+ }
405
+ mutableClone["criteria"] = undefined;
406
+ mutableClone[options.filter.field] = options.value;
407
+ return clone;
408
+ }
409
+ static isAllowedLegacyField(options) {
410
+ return options.legacyFields.some((field) => {
411
+ return field === options.filter.field;
412
+ });
413
+ }
414
+ static toLegacyTextValue(filter) {
415
+ const value = String(filter.value);
416
+ switch (filter.operator) {
417
+ case RuleCriteriaOperator.Equals:
418
+ return {
419
+ pattern: `^${RuleCriteriaMatcher.escapeRegex(value)}$`,
420
+ negate: false,
421
+ };
422
+ case RuleCriteriaOperator.NotEquals:
423
+ return {
424
+ pattern: `^${RuleCriteriaMatcher.escapeRegex(value)}$`,
425
+ negate: true,
426
+ };
427
+ case RuleCriteriaOperator.Contains:
428
+ return {
429
+ pattern: RuleCriteriaMatcher.escapeRegex(value),
430
+ negate: false,
431
+ };
432
+ case RuleCriteriaOperator.DoesNotContain:
433
+ return {
434
+ pattern: RuleCriteriaMatcher.escapeRegex(value),
435
+ negate: true,
436
+ };
437
+ case RuleCriteriaOperator.StartsWith:
438
+ return {
439
+ pattern: `^${RuleCriteriaMatcher.escapeRegex(value)}`,
440
+ negate: false,
441
+ };
442
+ case RuleCriteriaOperator.EndsWith:
443
+ return {
444
+ pattern: `${RuleCriteriaMatcher.escapeRegex(value)}$`,
445
+ negate: false,
446
+ };
447
+ case RuleCriteriaOperator.MatchesPattern:
448
+ return {
449
+ pattern: RuleCriteriaMatcher.toLegacyPattern(value),
450
+ negate: false,
451
+ };
452
+ case RuleCriteriaOperator.DoesNotMatchPattern:
453
+ return {
454
+ pattern: RuleCriteriaMatcher.toLegacyPattern(value),
455
+ negate: true,
456
+ };
457
+ default:
458
+ return {
459
+ pattern: RULE_CRITERIA_LEGACY_NEVER_MATCH_PATTERN,
460
+ negate: false,
461
+ };
462
+ }
463
+ }
464
+ static escapeRegex(value) {
465
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
466
+ }
467
+ static toLegacyPattern(value) {
468
+ if (RulePatternMatchUtil.isValidRegex(value)) {
469
+ return value;
470
+ }
471
+ if (value.includes("*")) {
472
+ return RuleCriteriaMatcher.toSafeLegacyGlobPattern(value);
473
+ }
474
+ throw new Error("Unsupported rule criteria pattern.");
475
+ }
476
+ /**
477
+ * Converts a wildcard into a regex for legacy engines that compile patterns
478
+ * directly. Each wildcard-delimited literal is consumed atomically via a
479
+ * lookahead/backreference pair. This preserves full-string glob semantics
480
+ * without constructing chains of ambiguous `.*` expressions that can cause
481
+ * catastrophic regex backtracking. Unbounded runs use `{0,}` instead of `*`
482
+ * so legacy matchers that add a glob fallback do not reinterpret this safe
483
+ * generated regex as another wildcard supplied by the user.
484
+ */
485
+ static toSafeLegacyGlobPattern(value) {
486
+ const hasLeadingWildcard = value.startsWith("*");
487
+ const hasTrailingWildcard = value.endsWith("*");
488
+ const literals = value
489
+ .split("*")
490
+ .filter((literal) => {
491
+ return literal.length > 0;
492
+ });
493
+ if (literals.length === 0) {
494
+ return "^[\\s\\S]{0,}$";
495
+ }
496
+ let pattern = "^";
497
+ let literalIndex = 0;
498
+ if (!hasLeadingWildcard) {
499
+ pattern += RuleCriteriaMatcher.escapeRegex(literals[0] || "");
500
+ literalIndex = 1;
501
+ }
502
+ const suffixIndex = hasTrailingWildcard
503
+ ? literals.length
504
+ : literals.length - 1;
505
+ for (; literalIndex < suffixIndex; literalIndex++) {
506
+ const groupName = `ruleGlob${literalIndex}`;
507
+ pattern += `(?=(?<${groupName}>[\\s\\S]{0,}?${RuleCriteriaMatcher.escapeRegex(literals[literalIndex] || "")}))\\k<${groupName}>`;
508
+ }
509
+ if (!hasTrailingWildcard) {
510
+ const groupName = `ruleGlobSuffix${literalIndex}`;
511
+ pattern += `(?=(?<${groupName}>[\\s\\S]{0,}${RuleCriteriaMatcher.escapeRegex(literals[literals.length - 1] || "")}$))\\k<${groupName}>`;
512
+ }
513
+ else {
514
+ pattern += "[\\s\\S]{0,}$";
515
+ }
516
+ return pattern;
517
+ }
518
+ static toIdBearingStub(value) {
519
+ return {
520
+ _id: value,
521
+ id: new ObjectID(value),
522
+ };
523
+ }
524
+ }
525
+ export default RuleCriteriaMatcher;
526
+ //# sourceMappingURL=RuleCriteriaMatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuleCriteriaMatcher.js","sourceRoot":"","sources":["../../../../Utils/Rules/RuleCriteriaMatcher.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { SESSION_REPLAY_IDLE_ROLLOVER_MS, SESSION_REPLAY_MAX_SESSION_MS, } from "../../Types/Rum/SessionReplay";
1
+ import { SESSION_REPLAY_IDLE_ROLLOVER_MS, SESSION_REPLAY_MAX_SESSION_MS, SESSION_REPLAY_VISITOR_ID_PATTERN, } from "../../Types/Rum/SessionReplay";
2
2
  /*
3
3
  * Session identity lifecycle, expressed as pure functions of timestamps
4
4
  * so it can be tested exhaustively without a browser, a clock, or storage.
@@ -21,6 +21,18 @@ export var SessionRotationReason;
21
21
  SessionRotationReason["Corrupt"] = "corrupt";
22
22
  })(SessionRotationReason || (SessionRotationReason = {}));
23
23
  export default class SessionIdentity {
24
+ /*
25
+ * Is this a visitor id the recorder could have minted?
26
+ *
27
+ * Shared by the recorder (which only ever stores what passes) and the
28
+ * ingest parser (which drops what does not), so a hand-crafted POST can
29
+ * never file a recording under an arbitrary string. Strict on purpose:
30
+ * the id is random and ours, so there is no legitimate "almost" shape
31
+ * to be lenient towards.
32
+ */
33
+ static isVisitorId(value) {
34
+ return (typeof value === "string" && SESSION_REPLAY_VISITOR_ID_PATTERN.test(value));
35
+ }
24
36
  /*
25
37
  * Should the recorder mint a new session id?
26
38
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SessionIdentity.js","sourceRoot":"","sources":["../../../../Utils/Rum/SessionIdentity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;GASG;AAEH,MAAM,CAAN,IAAY,qBAYX;AAZD,WAAY,qBAAqB;IAC/B,+CAA+C;IAC/C,oCAAW,CAAA;IAEX,yEAAyE;IACzE,sCAAa,CAAA;IAEb,oDAAoD;IACpD,qDAA4B,CAAA;IAE5B,6EAA6E;IAC7E,4CAAmB,CAAA;AACrB,CAAC,EAZW,qBAAqB,KAArB,qBAAqB,QAYhC;AAaD,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC;;;;;;;;;;;;;;;;;OAiBG;IACI,MAAM,CAAC,mBAAmB,CAC/B,MAAiC,EACjC,SAAiB,EACjB,iBAAyB,+BAA+B,EACxD,eAAuB,6BAA6B;QAEpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,GAAG,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;YAC3D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,EAAE,CAAC;QACvE,CAAC;QAED,IAAI,SAAS,GAAG,MAAM,CAAC,kBAAkB,IAAI,cAAc,EAAE,CAAC;YAC5D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,IAAI,EAAE,CAAC;QACpE,CAAC;QAED,IAAI,SAAS,GAAG,MAAM,CAAC,kBAAkB,IAAI,YAAY,EAAE,CAAC;YAC1D,OAAO;gBACL,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,qBAAqB,CAAC,WAAW;aAC1C,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAC9B,MAA0B,EAC1B,SAAiB;QAEjB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC3C,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAC3C,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,MAAM,CAAC,kBAAkB,IAAI,CAAC,IAAI,MAAM,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,gDAAgD;QAChD,IAAI,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED;;;;WAIG;QACH,MAAM,kBAAkB,GAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAEjD,IAAI,MAAM,CAAC,kBAAkB,GAAG,SAAS,GAAG,kBAAkB,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,MAAM,CAAC,iBAAiB,CAC7B,yBAAiC,EACjC,eAAuB,EACvB,gBAAwB,6BAA6B;QAErD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YAChD,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,IAAI,yBAAyB,GAAG,eAAe,EAAE,CAAC;YAChD,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,MAAM,kBAAkB,GAAW,eAAe,GAAG,aAAa,CAAC;QAEnE,IAAI,yBAAyB,GAAG,kBAAkB,EAAE,CAAC;YACnD,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,cAAc,CAC1B,gBAAwB,EACxB,mBAA2B;QAE3B,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClC,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EACrC,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,gBAAgB,GAAG,mBAAmB,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,kBAAkB,CAC9B,aAAqB,EACrB,WAA0B,EAC1B,YAAoB;QAEpB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,MAAM,GAAkB,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CACjD,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;YAC/B,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CACF,CAAC;QAEF,MAAM,QAAQ,GAAuB,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAuB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE9D,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACpD,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YAC1D,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,aAAa,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,IAAI,aAAa,IAAI,OAAO,EAAE,CAAC;gBAC7B,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"SessionIdentity.js","sourceRoot":"","sources":["../../../../Utils/Rum/SessionIdentity.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,44 @@
1
1
  /**
2
- * Whether a burn rate rule currently has an alert open.
2
+ * Whether a burn rate rule currently has something open.
3
3
  *
4
- * `lastAlertCreatedAt` / `lastAlertResolvedAt` are stamped by the
5
- * evaluation worker every time it fires or resolves a rule's alert, and
6
- * together they are the only record of the rule's lifecycle — but nothing
7
- * read them outside the worker, so the Burn Rate Rules table could not
8
- * tell the user whether a rule was paging someone right now, had ever
9
- * fired, or had never once triggered.
4
+ * A rule has TWO independent lifecycles the Alert it raises and the
5
+ * Incident it declares and the evaluation worker stamps a separate pair
6
+ * of columns for each (`lastAlertCreatedAt` / `lastAlertResolvedAt` and
7
+ * `lastIncidentCreatedAt` / `lastIncidentResolvedAt`). Together those four
8
+ * columns are the only record of the rule's state, but nothing read them
9
+ * outside the worker, so the Burn Rate Rules table could not tell the user
10
+ * whether a rule was paging someone right now, had ever fired, or had never
11
+ * once triggered.
10
12
  *
11
- * The predicate is the worker's own (EvaluateSlos.evaluateBurnRateRule's
12
- * `hasUnresolvedFiringState`), lifted here so the table and the worker can
13
- * never disagree about what "firing" means.
13
+ * The predicates are the worker's own, lifted here so the table and the
14
+ * worker can never disagree about what "firing" means. The worker reads
15
+ * them per output: it will not re-declare an incident a responder resolved
16
+ * by hand while the burn is still going, and it resolves only the output
17
+ * that is actually open.
14
18
  *
15
19
  * Kept free of React and of the database model so both can import it and
16
20
  * so the ordering edges are unit-testable without a DOM.
17
21
  */
18
22
  import SloStatus from "../../Types/ServiceLevelObjective/SloStatus";
19
- export const isBurnRateRuleFiring = (rule) => {
20
- if (!rule.lastAlertCreatedAt) {
23
+ const isOpen = (createdAt, resolvedAt) => {
24
+ if (!createdAt) {
21
25
  return false;
22
26
  }
23
- if (!rule.lastAlertResolvedAt) {
27
+ if (!resolvedAt) {
24
28
  return true;
25
29
  }
26
- return rule.lastAlertResolvedAt.getTime() < rule.lastAlertCreatedAt.getTime();
30
+ return resolvedAt.getTime() < createdAt.getTime();
31
+ };
32
+ export const isBurnRateRuleAlertFiring = (rule) => {
33
+ return isOpen(rule.lastAlertCreatedAt, rule.lastAlertResolvedAt);
34
+ };
35
+ export const isBurnRateRuleIncidentFiring = (rule) => {
36
+ return isOpen(rule.lastIncidentCreatedAt, rule.lastIncidentResolvedAt);
37
+ };
38
+ export const isBurnRateRuleFiring = (rule) => {
39
+ return isBurnRateRuleAlertFiring(rule) || isBurnRateRuleIncidentFiring(rule);
27
40
  };
28
- export const canSloFireBurnRateAlerts = (slo) => {
41
+ export const canSloFireBurnRateRules = (slo) => {
29
42
  if (slo.isEnabled === false) {
30
43
  return false;
31
44
  }