@oneuptime/common 12.0.29 → 12.0.31

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 (664) hide show
  1. package/Models/AnalyticsModels/SecurityEvent.ts +48 -16
  2. package/Models/AnalyticsModels/ThreatIntelIndicator.ts +10 -5
  3. package/Models/DatabaseModels/AlertSeverity.ts +44 -0
  4. package/Models/DatabaseModels/DetectionRule.ts +16 -5
  5. package/Models/DatabaseModels/GoogleSecOpsConnection.ts +14 -5
  6. package/Models/DatabaseModels/IncidentSeverity.ts +44 -0
  7. package/Models/DatabaseModels/Index.ts +13 -0
  8. package/Models/DatabaseModels/NetworkDevice.ts +113 -3
  9. package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +88 -0
  10. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +22 -0
  11. package/Models/DatabaseModels/NetworkDeviceOidTemplate.ts +499 -0
  12. package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +43 -0
  13. package/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.ts +662 -0
  14. package/Models/DatabaseModels/ProjectOnCallCalendarFeed.ts +584 -0
  15. package/Models/DatabaseModels/ThreatIntelFeed.ts +16 -5
  16. package/Models/DatabaseModels/UserOnCallCalendarFeed.ts +546 -0
  17. package/Models/DatabaseModels/UserOnCallShiftReminder.ts +231 -0
  18. package/Models/DatabaseModels/UserOnCallShiftReminderLog.ts +331 -0
  19. package/Server/API/GlobalConfigAPI.ts +362 -183
  20. package/Server/API/OnCallCalendarAPI.ts +2194 -0
  21. package/Server/API/TelemetryAPI.ts +42 -4
  22. package/Server/EnvironmentConfig.ts +250 -0
  23. package/Server/Infrastructure/OnCallCalendarFeedCache.ts +1050 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.ts +253 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.ts +59 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.ts +25 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  28. package/Server/Middleware/MultipartFormData.ts +118 -32
  29. package/Server/Middleware/OnCallCalendarFeedRateLimit.ts +487 -0
  30. package/Server/Services/AlertEpisodeLabelRuleEngineService.ts +9 -1
  31. package/Server/Services/AlertEpisodeOnCallRuleEngineService.ts +9 -1
  32. package/Server/Services/AlertEpisodeOwnerRuleEngineService.ts +9 -1
  33. package/Server/Services/AlertEpisodePrivacyRuleEngineService.ts +9 -1
  34. package/Server/Services/AlertGroupingEngineService.ts +9 -1
  35. package/Server/Services/AlertLabelRuleEngineService.ts +9 -1
  36. package/Server/Services/AlertOnCallRuleEngineService.ts +9 -1
  37. package/Server/Services/AlertOwnerRuleEngineService.ts +9 -1
  38. package/Server/Services/AlertPrivacyRuleEngineService.ts +9 -1
  39. package/Server/Services/AlertReminderRuleService.ts +9 -1
  40. package/Server/Services/AutoRemediationRuleEngineService.ts +9 -1
  41. package/Server/Services/CephClusterLabelRuleEngineService.ts +9 -1
  42. package/Server/Services/CephClusterOwnerRuleEngineService.ts +9 -1
  43. package/Server/Services/CloudResourceLabelRuleEngineService.ts +9 -1
  44. package/Server/Services/CloudResourceOwnerRuleEngineService.ts +9 -1
  45. package/Server/Services/DashboardLabelRuleEngineService.ts +9 -1
  46. package/Server/Services/DashboardOwnerRuleEngineService.ts +9 -1
  47. package/Server/Services/DockerHostLabelRuleEngineService.ts +9 -1
  48. package/Server/Services/DockerHostOwnerRuleEngineService.ts +9 -1
  49. package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +9 -1
  50. package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +9 -1
  51. package/Server/Services/HostLabelRuleEngineService.ts +9 -1
  52. package/Server/Services/HostOwnerRuleEngineService.ts +9 -1
  53. package/Server/Services/IncidentEpisodeLabelRuleEngineService.ts +9 -1
  54. package/Server/Services/IncidentEpisodeOnCallRuleEngineService.ts +9 -1
  55. package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +9 -1
  56. package/Server/Services/IncidentEpisodePrivacyRuleEngineService.ts +9 -1
  57. package/Server/Services/IncidentGroupingEngineService.ts +9 -1
  58. package/Server/Services/IncidentLabelRuleEngineService.ts +9 -1
  59. package/Server/Services/IncidentOnCallRuleEngineService.ts +9 -1
  60. package/Server/Services/IncidentOwnerRuleEngineService.ts +9 -1
  61. package/Server/Services/IncidentPrivacyRuleEngineService.ts +9 -1
  62. package/Server/Services/IncidentReminderRuleService.ts +9 -1
  63. package/Server/Services/IncidentSlaRuleService.ts +9 -1
  64. package/Server/Services/IncomingCallPolicyLabelRuleEngineService.ts +9 -1
  65. package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +9 -1
  66. package/Server/Services/Index.ts +14 -0
  67. package/Server/Services/IoTFleetLabelRuleEngineService.ts +9 -1
  68. package/Server/Services/IoTFleetOwnerRuleEngineService.ts +9 -1
  69. package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +9 -1
  70. package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +9 -1
  71. package/Server/Services/KubernetesResourceService.ts +5 -1
  72. package/Server/Services/MonitorLabelRuleEngineService.ts +9 -1
  73. package/Server/Services/MonitorOwnerRuleEngineService.ts +9 -1
  74. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +35 -0
  75. package/Server/Services/NetworkDeviceAutoImportRuleService.ts +96 -0
  76. package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +9 -1
  77. package/Server/Services/NetworkDeviceOidTemplateService.ts +201 -0
  78. package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +9 -1
  79. package/Server/Services/NetworkDeviceService.ts +209 -1
  80. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +32 -0
  81. package/Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts +9 -1
  82. package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +9 -1
  83. package/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.ts +260 -0
  84. package/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts +9 -1
  85. package/Server/Services/OnCallDutyPolicyScheduleLayerService.ts +70 -3
  86. package/Server/Services/OnCallDutyPolicyScheduleLayerUserService.ts +138 -3
  87. package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +9 -1
  88. package/Server/Services/OnCallDutyPolicyScheduleService.ts +1465 -134
  89. package/Server/Services/OnCallDutyPolicyUserOverrideService.ts +167 -31
  90. package/Server/Services/PodmanHostLabelRuleEngineService.ts +9 -1
  91. package/Server/Services/PodmanHostOwnerRuleEngineService.ts +9 -1
  92. package/Server/Services/ProjectOnCallCalendarFeedService.ts +192 -0
  93. package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +9 -1
  94. package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +9 -1
  95. package/Server/Services/RumApplicationLabelRuleEngineService.ts +9 -1
  96. package/Server/Services/RumApplicationOwnerRuleEngineService.ts +9 -1
  97. package/Server/Services/RunbookLabelRuleEngineService.ts +9 -1
  98. package/Server/Services/RunbookOwnerRuleEngineService.ts +9 -1
  99. package/Server/Services/RunbookRuleEngineService.ts +9 -1
  100. package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +9 -1
  101. package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +9 -1
  102. package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +9 -1
  103. package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +9 -1
  104. package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +9 -1
  105. package/Server/Services/ServiceLabelRuleEngineService.ts +9 -1
  106. package/Server/Services/ServiceOwnerRuleEngineService.ts +9 -1
  107. package/Server/Services/StatusPageLabelRuleEngineService.ts +9 -1
  108. package/Server/Services/StatusPageMonitorRuleEngineService.ts +7 -0
  109. package/Server/Services/StatusPageOwnerRuleEngineService.ts +9 -1
  110. package/Server/Services/TeamMemberService.ts +489 -1
  111. package/Server/Services/TeamService.ts +50 -0
  112. package/Server/Services/TelemetrySourceMapService.ts +266 -23
  113. package/Server/Services/UserNotificationSettingService.ts +44 -1
  114. package/Server/Services/UserOnCallCalendarFeedService.ts +159 -0
  115. package/Server/Services/UserOnCallShiftReminderLogService.ts +151 -0
  116. package/Server/Services/UserOnCallShiftReminderService.ts +112 -0
  117. package/Server/Services/UserService.ts +27 -0
  118. package/Server/Services/WorkflowLabelRuleEngineService.ts +9 -1
  119. package/Server/Services/WorkflowOwnerRuleEngineService.ts +9 -1
  120. package/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.ts +186 -0
  121. package/Server/Utils/Monitor/CapturedMetricAttributeUtil.ts +245 -0
  122. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +21 -2
  123. package/Server/Utils/Monitor/MonitorMetricUtil.ts +55 -21
  124. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +32 -0
  125. package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +15 -2
  126. package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +18 -1
  127. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +10 -0
  128. package/Server/Utils/Monitor/SeriesResourceLabels.ts +34 -0
  129. package/Server/Utils/OnCall/CalendarFeedToken.ts +241 -0
  130. package/Server/Utils/OnCall/OnCallCalendarFeedRenderer.ts +1488 -0
  131. package/Server/Utils/OnCall/OnCallCalendarFeedUrls.ts +230 -0
  132. package/Server/Utils/OnCall/OnCallShiftChangeListeners.ts +227 -0
  133. package/Server/Utils/OnCall/OnCallShiftMaterializer.ts +1127 -0
  134. package/Server/Utils/OnCall/OnCallShiftReminderListener.ts +174 -0
  135. package/Server/Utils/OnCall/OnCallShiftReminderRunner.ts +2584 -0
  136. package/Server/Utils/Response.ts +134 -0
  137. package/Server/Utils/Rules/RuleEngineRuleRead.ts +48 -0
  138. package/Server/Utils/StartServer.ts +10 -0
  139. package/Server/Utils/Telemetry/AppMetrics.ts +51 -0
  140. package/Server/Utils/Telemetry/ExceptionSanitizer.ts +14 -1
  141. package/Server/Utils/Telemetry/LogExceptionExtractor.ts +14 -2
  142. package/Server/Utils/Telemetry/SourceMapResolver.ts +16 -5
  143. package/Server/Utils/Telemetry/StackTraceParser.ts +399 -0
  144. package/Tests/App/Dashboard/EventOverlayHook.test.tsx +125 -0
  145. package/Tests/App/Dashboard/HeaderImageAssets.test.tsx +93 -0
  146. package/Tests/App/Dashboard/OnCallCalendarFeedLinks.test.tsx +229 -0
  147. package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +489 -0
  148. package/Tests/App/Dashboard/OnCallCalendarFeedSideMenus.test.tsx +149 -0
  149. package/Tests/App/Dashboard/OnCallCalendarFeedUtil.test.ts +855 -0
  150. package/Tests/App/Dashboard/OnCallPersonalCalendarFeed.test.tsx +1209 -0
  151. package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +3 -3
  152. package/Tests/App/Dashboard/OnCallSharedCalendarFeedCard.test.tsx +1019 -0
  153. package/Tests/App/Dashboard/OnCallShiftRemindersAndUpcomingShifts.test.tsx +655 -0
  154. package/Tests/App/Dashboard/UserElementEmail.test.tsx +12 -4
  155. package/Tests/App/Dashboard/UserEmailCallSites.test.tsx +1 -1
  156. package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +73 -0
  157. package/Tests/Models/DatabaseModels/DomainRoleTierCoverage.test.ts +14 -0
  158. package/Tests/Models/DatabaseModels/ModelRegistryInvariants.test.ts +469 -0
  159. package/Tests/Models/OnCallCalendarFeedModels.test.ts +642 -0
  160. package/Tests/Models/OnCallDutyPolicyScheduleCalendarFeed.test.ts +288 -0
  161. package/Tests/Models/OnCallDutyPolicyScheduleShiftConfigVersion.test.ts +88 -0
  162. package/Tests/Models/SecurityDomainAccessControl.test.ts +429 -0
  163. package/Tests/Models/UserOnCallShiftReminderModels.test.ts +368 -0
  164. package/Tests/Server/API/GlobalConfigLicense.test.ts +657 -0
  165. package/Tests/Server/API/Helpers.ts +8 -0
  166. package/Tests/Server/API/OnCallCalendarAPI.test.ts +4461 -0
  167. package/Tests/Server/API/SecurityEventAttributesAPI.test.ts +84 -6
  168. package/Tests/Server/API/TelemetryResolveStackTraceAPI.test.ts +805 -0
  169. package/Tests/Server/EnvironmentConfigOnCallCalendarFeed.test.ts +357 -0
  170. package/Tests/Server/Infrastructure/OnCallCalendarFeedCache.test.ts +1589 -0
  171. package/Tests/Server/Infrastructure/Postgres/AddOnCallCalendarFeedsMigration.test.ts +394 -0
  172. package/Tests/Server/Middleware/IdentityRateLimit.test.ts +1144 -0
  173. package/Tests/Server/Middleware/MultipartFormData.test.ts +618 -3
  174. package/Tests/Server/Middleware/OnCallCalendarFeedRateLimit.test.ts +1365 -0
  175. package/Tests/Server/Services/FeedRetentionConsistency.test.ts +70 -0
  176. package/Tests/Server/Services/MonitorLabelRuleEngineScale.test.ts +520 -0
  177. package/Tests/Server/Services/NetworkDeviceOidTemplateService.test.ts +332 -0
  178. package/Tests/Server/Services/NetworkDeviceOidTemplateWriteGuards.test.ts +409 -0
  179. package/Tests/Server/Services/OnCallCalendarFeedServices.test.ts +1103 -0
  180. package/Tests/Server/Services/OnCallDutyPolicyScheduleResolver.test.ts +1037 -0
  181. package/Tests/Server/Services/OnCallShiftConfigPropagation.test.ts +1270 -0
  182. package/Tests/Server/Services/RuleEngineRuleFetchLimit.test.ts +239 -0
  183. package/Tests/Server/Services/TeamDeleteMemberCleanup.test.ts +156 -0
  184. package/Tests/Server/Services/TeamMemberOnCallCleanup.test.ts +755 -0
  185. package/Tests/Server/Services/TelemetrySourceMapService.test.ts +1210 -2
  186. package/Tests/Server/Services/UserNotificationSettingShiftReminderDefaults.test.ts +267 -0
  187. package/Tests/Server/Services/UserOnCallShiftReminderServices.test.ts +583 -0
  188. package/Tests/Server/Services/UserServiceSeatLimit.test.ts +182 -0
  189. package/Tests/Server/Types/AnalyticsDatabase/SecurityEventModelPermission.test.ts +255 -0
  190. package/Tests/Server/Types/Database/Permissions/OnCallCalendarFeedPermissions.test.ts +254 -0
  191. package/Tests/Server/Types/Database/Permissions/ReadBlockPermission.test.ts +212 -0
  192. package/Tests/Server/Types/Database/Permissions/SecurityRoleAccess.test.ts +413 -0
  193. package/Tests/Server/Utils/CodeRepository.test.ts +689 -0
  194. package/Tests/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.test.ts +495 -0
  195. package/Tests/Server/Utils/ExceptionSanitizer.test.ts +77 -0
  196. package/Tests/Server/Utils/Monitor/CapturedMetricAttributeUtil.test.ts +284 -0
  197. package/Tests/Server/Utils/Monitor/MonitorCustomMetricAttributes.test.ts +503 -0
  198. package/Tests/Server/Utils/Monitor/MonitorTemplatePrototypePollution.test.ts +106 -0
  199. package/Tests/Server/Utils/Monitor/NetworkDeviceWalkLogWritePath.test.ts +33 -4
  200. package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +14 -4
  201. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +44 -0
  202. package/Tests/Server/Utils/OnCall/CalendarFeedToken.test.ts +467 -0
  203. package/Tests/Server/Utils/OnCall/OnCallCalendarFeedRenderer.test.ts +2142 -0
  204. package/Tests/Server/Utils/OnCall/OnCallCalendarFeedUrls.test.ts +278 -0
  205. package/Tests/Server/Utils/OnCall/OnCallResolverTestHarness.ts +440 -0
  206. package/Tests/Server/Utils/OnCall/OnCallShiftChangeListeners.test.ts +314 -0
  207. package/Tests/Server/Utils/OnCall/OnCallShiftMaterializer.test.ts +1502 -0
  208. package/Tests/Server/Utils/OnCall/OnCallShiftReminderListener.test.ts +491 -0
  209. package/Tests/Server/Utils/OnCall/OnCallShiftReminderRunner.test.ts +3088 -0
  210. package/Tests/Server/Utils/OnCall/OnCallShiftReminderTestHarness.ts +910 -0
  211. package/Tests/Server/Utils/OpenAPISpec.test.ts +536 -0
  212. package/Tests/Server/Utils/ResponseSendCalendarResponse.test.ts +561 -0
  213. package/Tests/Server/Utils/Rules/RuleEngineRuleRead.test.ts +115 -0
  214. package/Tests/Server/Utils/StackTraceParser.test.ts +610 -0
  215. package/Tests/Server/Utils/StartServerEncryptionSecretWarning.test.ts +64 -0
  216. package/Tests/Server/Utils/Telemetry/AppMetrics.test.ts +29 -0
  217. package/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.ts +0 -0
  218. package/Tests/Server/Utils/Telemetry/SourceMapLimits.test.ts +656 -0
  219. package/Tests/Server/Utils/Telemetry/SourceMapResolver.test.ts +100 -0
  220. package/Tests/Types/Calendar/ICalendar.test.ts +488 -0
  221. package/Tests/Types/Monitor/SnmpMonitor/SnmpOidListUtil.test.ts +454 -0
  222. package/Tests/Types/NotificationSetting/NotificationSettingEventType.test.ts +53 -0
  223. package/Tests/Types/OnCallDutyPolicy/CalendarFeedTestFixtures.ts +310 -0
  224. package/Tests/Types/OnCallDutyPolicy/CalendarFeedWindow.test.ts +205 -0
  225. package/Tests/Types/OnCallDutyPolicy/LayerUtilLayerMetaAndIterationCap.test.ts +458 -0
  226. package/Tests/Types/OnCallDutyPolicy/MaterializedShift.test.ts +197 -0
  227. package/Tests/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.test.ts +1986 -0
  228. package/Tests/Types/OnCallDutyPolicy/ScheduleShiftUtilGroupKey.test.ts +678 -0
  229. package/Tests/Types/OnCallDutyPolicy/ShiftSeamUtil.test.ts +417 -0
  230. package/Tests/Types/SecurityRolePermissions.test.ts +193 -0
  231. package/Tests/UI/Components/Charts/AnnotationLayout.test.ts +773 -0
  232. package/Tests/UI/Components/Charts/ChartAnnotationRail.test.tsx +789 -0
  233. package/Tests/UI/Components/Charts/ChartBucketIdentity.test.ts +254 -0
  234. package/Tests/UI/Components/Charts/TimeAnnotation.test.ts +471 -0
  235. package/Tests/UI/Components/EditionLabelLicenseRefresh.test.tsx +405 -0
  236. package/Tests/UI/Components/ErrorMessageRefreshControl.test.tsx +83 -0
  237. package/Tests/UI/Components/MarkdownConverters.test.ts +686 -0
  238. package/Tests/UI/Components/ModelTable/BaseModelTableDeleteAndEmptyStates.test.tsx +341 -0
  239. package/Tests/UI/Components/OrderedStatesList.test.tsx +5 -5
  240. package/Tests/UI/Components/PendingProjectInvitations.test.tsx +1 -1
  241. package/Tests/UI/Components/TableSortAndMobileColumns.test.tsx +195 -0
  242. package/Tests/UI/Components/XAxis.test.ts +270 -5
  243. package/Tests/UI/Components/XAxisDaylightSaving.test.ts +113 -0
  244. package/Tests/UI/Styles/ChartFocusRing.test.ts +153 -0
  245. package/Tests/UI/Styles/ChartFocusRingCoverage.test.tsx +377 -0
  246. package/Tests/UI/Styles/ThemeStylesheet.ts +162 -0
  247. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +10 -0
  248. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
  249. package/Tests/Utils/EnterpriseLicenseSeats.test.ts +507 -0
  250. package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +951 -1
  251. package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +238 -0
  252. package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +1056 -0
  253. package/Tests/Utils/NetworkDiscovery/ReverseDnsNameUtil.test.ts +882 -0
  254. package/Types/Calendar/ICalendar.ts +442 -0
  255. package/Types/Date.ts +39 -0
  256. package/Types/Email/EmailTemplateType.ts +2 -0
  257. package/Types/Monitor/SnmpMonitor/SnmpOidListUtil.ts +333 -0
  258. package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
  259. package/Types/OnCallDutyPolicy/CalendarFeedWindow.ts +140 -0
  260. package/Types/OnCallDutyPolicy/Layer.ts +190 -35
  261. package/Types/OnCallDutyPolicy/MaterializedShift.ts +274 -0
  262. package/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.ts +1415 -0
  263. package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +159 -4
  264. package/Types/OnCallDutyPolicy/ShiftSeamUtil.ts +106 -0
  265. package/Types/Permission.ts +96 -0
  266. package/Types/Rum/SessionReplay.ts +21 -0
  267. package/Types/Telemetry/SourceMap.ts +8 -0
  268. package/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.tsx +176 -0
  269. package/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.ts +745 -0
  270. package/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.tsx +576 -0
  271. package/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.tsx +204 -0
  272. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +491 -544
  273. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +324 -372
  274. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +487 -540
  275. package/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.ts +7 -3
  276. package/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.ts +14 -3
  277. package/UI/Components/Charts/Types/ChartEventKind.ts +13 -0
  278. package/UI/Components/Charts/Types/ReferenceRegionProps.ts +6 -0
  279. package/UI/Components/Charts/Types/TimeReferenceLineProps.ts +20 -3
  280. package/UI/Components/Charts/Utils/TimeAnnotation.ts +69 -35
  281. package/UI/Components/Charts/Utils/XAxis.ts +125 -18
  282. package/UI/Components/EditionLabel/EditionLabel.tsx +280 -26
  283. package/UI/Components/ErrorMessage/ErrorMessage.tsx +21 -10
  284. package/UI/Components/Feed/FeedItem.tsx +4 -5
  285. package/UI/Components/Header/HeaderIconDropdownButton.tsx +1 -2
  286. package/UI/Components/Header/UserProfile/UserProfile.tsx +1 -2
  287. package/UI/Components/Image/Image.tsx +20 -3
  288. package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
  289. package/UI/Components/MemberRoleAssignment/MemberRoleAssignment.tsx +1 -2
  290. package/UI/Components/ModelTable/BaseModelTable.tsx +150 -24
  291. package/UI/Components/Table/TableHeader.tsx +64 -48
  292. package/UI/Components/Table/TableRow.tsx +13 -3
  293. package/UI/Styles/Theme.css +38 -0
  294. package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +271 -0
  295. package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +6 -0
  296. package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +141 -10
  297. package/Utils/NetworkDiscovery/DiscoveredHostUtil.ts +55 -3
  298. package/Utils/NetworkDiscovery/ReverseDnsNameUtil.ts +151 -0
  299. package/Utils/Rules/RuleEngineLimits.ts +32 -0
  300. package/build/dist/Models/AnalyticsModels/SecurityEvent.js +48 -16
  301. package/build/dist/Models/AnalyticsModels/SecurityEvent.js.map +1 -1
  302. package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js +10 -5
  303. package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js.map +1 -1
  304. package/build/dist/Models/DatabaseModels/AlertSeverity.js +46 -1
  305. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  306. package/build/dist/Models/DatabaseModels/DetectionRule.js +16 -5
  307. package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
  308. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +14 -5
  309. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
  310. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +46 -1
  311. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  312. package/build/dist/Models/DatabaseModels/Index.js +13 -0
  313. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  314. package/build/dist/Models/DatabaseModels/NetworkDevice.js +115 -3
  315. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  316. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +88 -0
  317. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
  318. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  319. package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js +519 -0
  320. package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js.map +1 -0
  321. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +44 -0
  322. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
  323. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js +699 -0
  324. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js.map +1 -0
  325. package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js +620 -0
  326. package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js.map +1 -0
  327. package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js +16 -5
  328. package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js.map +1 -1
  329. package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js +585 -0
  330. package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js.map +1 -0
  331. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js +247 -0
  332. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js.map +1 -0
  333. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js +355 -0
  334. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js.map +1 -0
  335. package/build/dist/Server/API/GlobalConfigAPI.js +293 -176
  336. package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
  337. package/build/dist/Server/API/OnCallCalendarAPI.js +1371 -0
  338. package/build/dist/Server/API/OnCallCalendarAPI.js.map +1 -0
  339. package/build/dist/Server/API/TelemetryAPI.js +31 -3
  340. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  341. package/build/dist/Server/EnvironmentConfig.js +185 -0
  342. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  343. package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js +663 -0
  344. package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js.map +1 -0
  345. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js +103 -0
  346. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js.map +1 -0
  347. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.js +26 -0
  348. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.js.map +1 -0
  349. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.js +14 -0
  350. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.js.map +1 -0
  351. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  352. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  353. package/build/dist/Server/Middleware/MultipartFormData.js +93 -28
  354. package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
  355. package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js +342 -0
  356. package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js.map +1 -0
  357. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js +8 -1
  358. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js.map +1 -1
  359. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js +8 -1
  360. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js.map +1 -1
  361. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js +8 -1
  362. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js.map +1 -1
  363. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js +8 -1
  364. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js.map +1 -1
  365. package/build/dist/Server/Services/AlertGroupingEngineService.js +8 -1
  366. package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
  367. package/build/dist/Server/Services/AlertLabelRuleEngineService.js +8 -1
  368. package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
  369. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js +8 -1
  370. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js.map +1 -1
  371. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +8 -1
  372. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
  373. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js +8 -1
  374. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js.map +1 -1
  375. package/build/dist/Server/Services/AlertReminderRuleService.js +8 -1
  376. package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
  377. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +8 -1
  378. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
  379. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +8 -1
  380. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
  381. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +8 -1
  382. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
  383. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +8 -1
  384. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
  385. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +8 -1
  386. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
  387. package/build/dist/Server/Services/DashboardLabelRuleEngineService.js +8 -1
  388. package/build/dist/Server/Services/DashboardLabelRuleEngineService.js.map +1 -1
  389. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +8 -1
  390. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js.map +1 -1
  391. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +8 -1
  392. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
  393. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +8 -1
  394. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
  395. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +8 -1
  396. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
  397. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +8 -1
  398. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
  399. package/build/dist/Server/Services/HostLabelRuleEngineService.js +8 -1
  400. package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
  401. package/build/dist/Server/Services/HostOwnerRuleEngineService.js +8 -1
  402. package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
  403. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js +8 -1
  404. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js.map +1 -1
  405. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js +8 -1
  406. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js.map +1 -1
  407. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +8 -1
  408. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
  409. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js +8 -1
  410. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js.map +1 -1
  411. package/build/dist/Server/Services/IncidentGroupingEngineService.js +8 -1
  412. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
  413. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +8 -1
  414. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
  415. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js +8 -1
  416. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js.map +1 -1
  417. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +8 -1
  418. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
  419. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js +8 -1
  420. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js.map +1 -1
  421. package/build/dist/Server/Services/IncidentReminderRuleService.js +8 -1
  422. package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
  423. package/build/dist/Server/Services/IncidentSlaRuleService.js +8 -1
  424. package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
  425. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +8 -1
  426. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -1
  427. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +8 -1
  428. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
  429. package/build/dist/Server/Services/Index.js +14 -0
  430. package/build/dist/Server/Services/Index.js.map +1 -1
  431. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js +8 -1
  432. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js.map +1 -1
  433. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +8 -1
  434. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
  435. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +8 -1
  436. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
  437. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +8 -1
  438. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
  439. package/build/dist/Server/Services/KubernetesResourceService.js +5 -1
  440. package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -1
  441. package/build/dist/Server/Services/MonitorLabelRuleEngineService.js +8 -1
  442. package/build/dist/Server/Services/MonitorLabelRuleEngineService.js.map +1 -1
  443. package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js +8 -1
  444. package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js.map +1 -1
  445. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +30 -21
  446. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  447. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +64 -0
  448. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
  449. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +8 -1
  450. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
  451. package/build/dist/Server/Services/NetworkDeviceOidTemplateService.js +180 -0
  452. package/build/dist/Server/Services/NetworkDeviceOidTemplateService.js.map +1 -0
  453. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +8 -1
  454. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
  455. package/build/dist/Server/Services/NetworkDeviceService.js +154 -1
  456. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  457. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +20 -0
  458. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  459. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +8 -1
  460. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -1
  461. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +8 -1
  462. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
  463. package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js +219 -0
  464. package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js.map +1 -0
  465. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +8 -1
  466. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -1
  467. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js +47 -3
  468. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js.map +1 -1
  469. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js +112 -3
  470. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js.map +1 -1
  471. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +8 -1
  472. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
  473. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +955 -9
  474. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  475. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js +93 -6
  476. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js.map +1 -1
  477. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +8 -1
  478. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
  479. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +8 -1
  480. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
  481. package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js +157 -0
  482. package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js.map +1 -0
  483. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +8 -1
  484. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
  485. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +8 -1
  486. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
  487. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +8 -1
  488. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -1
  489. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +8 -1
  490. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
  491. package/build/dist/Server/Services/RunbookLabelRuleEngineService.js +8 -1
  492. package/build/dist/Server/Services/RunbookLabelRuleEngineService.js.map +1 -1
  493. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +8 -1
  494. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
  495. package/build/dist/Server/Services/RunbookRuleEngineService.js +8 -1
  496. package/build/dist/Server/Services/RunbookRuleEngineService.js.map +1 -1
  497. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +8 -1
  498. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
  499. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +8 -1
  500. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
  501. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +8 -1
  502. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
  503. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +8 -1
  504. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -1
  505. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +8 -1
  506. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
  507. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +8 -1
  508. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
  509. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +8 -1
  510. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
  511. package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js +8 -1
  512. package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js.map +1 -1
  513. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +6 -0
  514. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -1
  515. package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js +8 -1
  516. package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js.map +1 -1
  517. package/build/dist/Server/Services/TeamMemberService.js +396 -1
  518. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  519. package/build/dist/Server/Services/TeamService.js +43 -0
  520. package/build/dist/Server/Services/TeamService.js.map +1 -1
  521. package/build/dist/Server/Services/TelemetrySourceMapService.js +213 -19
  522. package/build/dist/Server/Services/TelemetrySourceMapService.js.map +1 -1
  523. package/build/dist/Server/Services/UserNotificationSettingService.js +26 -1
  524. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  525. package/build/dist/Server/Services/UserOnCallCalendarFeedService.js +140 -0
  526. package/build/dist/Server/Services/UserOnCallCalendarFeedService.js.map +1 -0
  527. package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js +116 -0
  528. package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js.map +1 -0
  529. package/build/dist/Server/Services/UserOnCallShiftReminderService.js +92 -0
  530. package/build/dist/Server/Services/UserOnCallShiftReminderService.js.map +1 -0
  531. package/build/dist/Server/Services/UserService.js +25 -0
  532. package/build/dist/Server/Services/UserService.js.map +1 -1
  533. package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js +8 -1
  534. package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js.map +1 -1
  535. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +8 -1
  536. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
  537. package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js +145 -0
  538. package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js.map +1 -0
  539. package/build/dist/Server/Utils/Monitor/CapturedMetricAttributeUtil.js +201 -0
  540. package/build/dist/Server/Utils/Monitor/CapturedMetricAttributeUtil.js.map +1 -0
  541. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +19 -2
  542. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  543. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +42 -23
  544. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  545. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +29 -0
  546. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  547. package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +11 -2
  548. package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -1
  549. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +16 -1
  550. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
  551. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +10 -0
  552. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  553. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +33 -0
  554. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  555. package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js +161 -0
  556. package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js.map +1 -0
  557. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js +983 -0
  558. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js.map +1 -0
  559. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js +155 -0
  560. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js.map +1 -0
  561. package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js +145 -0
  562. package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js.map +1 -0
  563. package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js +752 -0
  564. package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js.map +1 -0
  565. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js +92 -0
  566. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js.map +1 -0
  567. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js +1786 -0
  568. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js.map +1 -0
  569. package/build/dist/Server/Utils/Response.js +97 -0
  570. package/build/dist/Server/Utils/Response.js.map +1 -1
  571. package/build/dist/Server/Utils/Rules/RuleEngineRuleRead.js +37 -0
  572. package/build/dist/Server/Utils/Rules/RuleEngineRuleRead.js.map +1 -0
  573. package/build/dist/Server/Utils/StartServer.js +9 -1
  574. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  575. package/build/dist/Server/Utils/Telemetry/AppMetrics.js +41 -0
  576. package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
  577. package/build/dist/Server/Utils/Telemetry/ExceptionSanitizer.js +12 -1
  578. package/build/dist/Server/Utils/Telemetry/ExceptionSanitizer.js.map +1 -1
  579. package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js +14 -2
  580. package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js.map +1 -1
  581. package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js +15 -5
  582. package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js.map +1 -1
  583. package/build/dist/Server/Utils/Telemetry/StackTraceParser.js +307 -0
  584. package/build/dist/Server/Utils/Telemetry/StackTraceParser.js.map +1 -1
  585. package/build/dist/Types/Calendar/ICalendar.js +290 -0
  586. package/build/dist/Types/Calendar/ICalendar.js.map +1 -0
  587. package/build/dist/Types/Date.js +27 -0
  588. package/build/dist/Types/Date.js.map +1 -1
  589. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  590. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  591. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOidListUtil.js +253 -0
  592. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOidListUtil.js.map +1 -0
  593. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
  594. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  595. package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js +97 -0
  596. package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js.map +1 -0
  597. package/build/dist/Types/OnCallDutyPolicy/Layer.js +113 -19
  598. package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
  599. package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js +134 -0
  600. package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js.map +1 -0
  601. package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js +800 -0
  602. package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js.map +1 -0
  603. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +97 -3
  604. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
  605. package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js +77 -0
  606. package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js.map +1 -0
  607. package/build/dist/Types/Permission.js +86 -0
  608. package/build/dist/Types/Permission.js.map +1 -1
  609. package/build/dist/Types/Rum/SessionReplay.js +19 -0
  610. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  611. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.js +83 -0
  612. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.js.map +1 -0
  613. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.js +531 -0
  614. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.js.map +1 -0
  615. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js +264 -0
  616. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js.map +1 -0
  617. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.js +122 -0
  618. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.js.map +1 -0
  619. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +213 -233
  620. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  621. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +139 -152
  622. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  623. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +212 -232
  624. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  625. package/build/dist/UI/Components/Charts/Types/ChartEventKind.js +14 -0
  626. package/build/dist/UI/Components/Charts/Types/ChartEventKind.js.map +1 -0
  627. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +57 -28
  628. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -1
  629. package/build/dist/UI/Components/Charts/Utils/XAxis.js +103 -17
  630. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
  631. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +198 -23
  632. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  633. package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js +15 -5
  634. package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js.map +1 -1
  635. package/build/dist/UI/Components/Feed/FeedItem.js +4 -5
  636. package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
  637. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -2
  638. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  639. package/build/dist/UI/Components/Header/UserProfile/UserProfile.js.map +1 -1
  640. package/build/dist/UI/Components/Image/Image.js +6 -1
  641. package/build/dist/UI/Components/Image/Image.js.map +1 -1
  642. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
  643. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
  644. package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js +1 -2
  645. package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js.map +1 -1
  646. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +104 -23
  647. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  648. package/build/dist/UI/Components/Table/TableHeader.js +20 -22
  649. package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
  650. package/build/dist/UI/Components/Table/TableRow.js +13 -4
  651. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  652. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +153 -0
  653. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +1 -0
  654. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
  655. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +127 -7
  656. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
  657. package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js +50 -3
  658. package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js.map +1 -1
  659. package/build/dist/Utils/NetworkDiscovery/ReverseDnsNameUtil.js +132 -0
  660. package/build/dist/Utils/NetworkDiscovery/ReverseDnsNameUtil.js.map +1 -0
  661. package/build/dist/Utils/Rules/RuleEngineLimits.js +31 -0
  662. package/build/dist/Utils/Rules/RuleEngineLimits.js.map +1 -0
  663. package/jest.config.json +1 -0
  664. package/package.json +2 -2
@@ -0,0 +1,752 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import crypto from "crypto";
11
+ import OnCallDutyPolicyScheduleService from "../../Services/OnCallDutyPolicyScheduleService";
12
+ import OnCallDutyPolicyScheduleLayerUserService from "../../Services/OnCallDutyPolicyScheduleLayerUserService";
13
+ import OnCallDutyPolicyUserOverrideService from "../../Services/OnCallDutyPolicyUserOverrideService";
14
+ import ProjectService from "../../Services/ProjectService";
15
+ import UserService from "../../Services/UserService";
16
+ import QueryHelper from "../../Types/Database/QueryHelper";
17
+ import CaptureSpan from "../Telemetry/CaptureSpan";
18
+ import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
19
+ import OneUptimeDate from "../../../Types/Date";
20
+ import BadDataException from "../../../Types/Exception/BadDataException";
21
+ import { FEED_SIMULATION_ITERATION_CAP } from "../../../Types/OnCallDutyPolicy/CalendarFeedWindow";
22
+ import MaterializedShiftUtil from "../../../Types/OnCallDutyPolicy/MaterializedShift";
23
+ import OnCallCalendarFeedUtil from "../../../Types/OnCallDutyPolicy/OnCallCalendarFeedUtil";
24
+ import ScheduleShiftUtil from "../../../Types/OnCallDutyPolicy/ScheduleShiftUtil";
25
+ import ShiftSeamUtil from "../../../Types/OnCallDutyPolicy/ShiftSeamUtil";
26
+ export default class OnCallShiftMaterializer {
27
+ // -- Entry points -----------------------------------------------------
28
+ static async materializeForSchedule(options) {
29
+ return await OnCallShiftMaterializer.materializeForSchedules({
30
+ scheduleIds: [options.scheduleId],
31
+ windowStart: options.windowStart,
32
+ windowEnd: options.windowEnd,
33
+ now: options.now,
34
+ maxSimulationIterations: options.maxSimulationIterations,
35
+ });
36
+ }
37
+ static async materializeForSchedules(options) {
38
+ var _a;
39
+ OnCallShiftMaterializer.validateWindow(options.windowStart, options.windowEnd);
40
+ const now = options.now || OneUptimeDate.getCurrentDate();
41
+ const scheduleIds = OnCallShiftMaterializer.dedupeIds(options.scheduleIds);
42
+ if (scheduleIds.length === 0) {
43
+ return OnCallShiftMaterializer.emptyResult(now);
44
+ }
45
+ const resolved = await OnCallDutyPolicyScheduleService.getResolvedShiftSegmentsForSchedules({
46
+ scheduleIds,
47
+ windowStart: options.windowStart,
48
+ windowEnd: options.windowEnd,
49
+ maxSimulationIterations: (_a = options.maxSimulationIterations) !== null && _a !== void 0 ? _a : FEED_SIMULATION_ITERATION_CAP,
50
+ });
51
+ if (resolved.length === 0) {
52
+ return OnCallShiftMaterializer.emptyResult(now);
53
+ }
54
+ const users = await OnCallShiftMaterializer.loadUsers(OnCallShiftMaterializer.collectUserIds(resolved));
55
+ const projectNames = await OnCallShiftMaterializer.loadProjectNames(resolved.map((item) => {
56
+ return item.schedule.projectId;
57
+ }));
58
+ const shifts = [];
59
+ const schedules = [];
60
+ let truncated = false;
61
+ for (const item of resolved) {
62
+ const projectName = projectNames.get(item.schedule.projectId);
63
+ shifts.push(...OnCallShiftMaterializer.materializeResolved(item, {
64
+ now,
65
+ users,
66
+ projectName,
67
+ }));
68
+ const info = {
69
+ scheduleId: item.schedule.id,
70
+ scheduleName: item.schedule.name,
71
+ projectId: item.schedule.projectId,
72
+ shiftConfigVersion: item.schedule.shiftConfigVersion,
73
+ lastModifiedAt: item.lastModifiedAt,
74
+ truncated: item.truncated,
75
+ attachedPolicies: item.attachedPolicies,
76
+ layerProps: item.layerProps,
77
+ scheduleUserIds: item.scheduleUserIds,
78
+ };
79
+ if (projectName !== undefined) {
80
+ info.projectName = projectName;
81
+ }
82
+ if (item.schedule.timezone !== undefined) {
83
+ info.scheduleTimezone = item.schedule.timezone;
84
+ }
85
+ schedules.push(info);
86
+ truncated = truncated || item.truncated;
87
+ }
88
+ return {
89
+ shifts: MaterializedShiftUtil.sortByStart(shifts),
90
+ truncated,
91
+ schedules,
92
+ users: Array.from(users.values()),
93
+ generatedAt: now,
94
+ };
95
+ }
96
+ static async materializeForUser(options) {
97
+ OnCallShiftMaterializer.validateWindow(options.windowStart, options.windowEnd);
98
+ const now = options.now || OneUptimeDate.getCurrentDate();
99
+ const candidateScheduleIds = await OnCallShiftMaterializer.getCandidateScheduleIdsForUser({
100
+ userId: options.userId,
101
+ projectIds: options.projectIds,
102
+ scheduleId: options.scheduleId,
103
+ windowStart: options.windowStart,
104
+ windowEnd: options.windowEnd,
105
+ includeCoveringShifts: options.includeCoveringShifts,
106
+ });
107
+ if (candidateScheduleIds.length === 0) {
108
+ return OnCallShiftMaterializer.emptyResult(now);
109
+ }
110
+ const result = await OnCallShiftMaterializer.materializeForSchedules({
111
+ scheduleIds: candidateScheduleIds,
112
+ windowStart: options.windowStart,
113
+ windowEnd: options.windowEnd,
114
+ now,
115
+ maxSimulationIterations: options.maxSimulationIterations,
116
+ });
117
+ return Object.assign(Object.assign({}, result), { shifts: OnCallShiftMaterializer.filterShiftsForUser(result.shifts, options.userId) });
118
+ }
119
+ static async materializeForProject(options) {
120
+ OnCallShiftMaterializer.validateWindow(options.windowStart, options.windowEnd);
121
+ const now = options.now || OneUptimeDate.getCurrentDate();
122
+ const schedules = await OnCallDutyPolicyScheduleService.findBy({
123
+ query: {
124
+ projectId: options.projectId,
125
+ },
126
+ select: {
127
+ _id: true,
128
+ },
129
+ limit: LIMIT_PER_PROJECT,
130
+ skip: 0,
131
+ props: {
132
+ isRoot: true,
133
+ },
134
+ });
135
+ const scheduleIds = schedules
136
+ .map((schedule) => {
137
+ return schedule.id;
138
+ })
139
+ .filter((id) => {
140
+ return Boolean(id);
141
+ });
142
+ if (scheduleIds.length === 0) {
143
+ return OnCallShiftMaterializer.emptyResult(now);
144
+ }
145
+ return await OnCallShiftMaterializer.materializeForSchedules({
146
+ scheduleIds,
147
+ windowStart: options.windowStart,
148
+ windowEnd: options.windowEnd,
149
+ now,
150
+ maxSimulationIterations: options.maxSimulationIterations,
151
+ });
152
+ }
153
+ // -- Candidate schedules ----------------------------------------------
154
+ /**
155
+ * The schedules whose materialization can contain the user's shifts:
156
+ * distinct schedule ids from the user's layer-user rows (optionally within
157
+ * `projectIds`), plus — when includeCoveringShifts — the schedules of every
158
+ * user the caller substitutes for through an override overlapping the
159
+ * window. Optionally narrowed to one schedule. Root reads: the caller has
160
+ * already decided the user may see these.
161
+ *
162
+ * One user, 2-3 queries. Anything that needs this for a GROUP of users
163
+ * (the reminder sweep and its change pass walk every reminded user of a
164
+ * project on every tick) must call getCandidateScheduleIdsForUsers, which
165
+ * answers the whole group in the same 2-3 queries.
166
+ */
167
+ static async getCandidateScheduleIdsForUser(data) {
168
+ const byUser = await OnCallShiftMaterializer.getCandidateScheduleIdsForUsers({
169
+ userIds: [data.userId],
170
+ projectIds: data.projectIds,
171
+ scheduleId: data.scheduleId,
172
+ windowStart: data.windowStart,
173
+ windowEnd: data.windowEnd,
174
+ includeCoveringShifts: data.includeCoveringShifts,
175
+ });
176
+ return byUser.get(data.userId.toString()) || [];
177
+ }
178
+ /**
179
+ * The batched form of getCandidateScheduleIdsForUser: the candidate
180
+ * schedules of MANY users in the same two or three queries it takes for
181
+ * one, keyed by user id (every requested user gets an entry, empty when
182
+ * they are on nothing). Semantics per user are identical — own layer-user
183
+ * rows, plus the schedules of the people that user substitutes for through
184
+ * an override overlapping the window, narrowed to `scheduleId` when given.
185
+ *
186
+ * The covering overrides are matched back to the SUBSTITUTE that each one
187
+ * routes to, so one user's coverage never leaks into another's list.
188
+ */
189
+ static async getCandidateScheduleIdsForUsers(data) {
190
+ var _a, _b, _c, _d, _e, _f;
191
+ const userIds = OnCallShiftMaterializer.dedupeIds(data.userIds);
192
+ const candidatesByUser = new Map();
193
+ for (const userId of userIds) {
194
+ candidatesByUser.set(userId.toString(), []);
195
+ }
196
+ if (userIds.length === 0) {
197
+ return candidatesByUser;
198
+ }
199
+ const projectFilter = data.projectIds && data.projectIds.length > 0
200
+ ? OnCallShiftMaterializer.dedupeIds(data.projectIds)
201
+ : undefined;
202
+ const ownRows = await OnCallDutyPolicyScheduleLayerUserService.findBy({
203
+ query: projectFilter
204
+ ? {
205
+ userId: QueryHelper.any(userIds),
206
+ projectId: QueryHelper.any(projectFilter),
207
+ }
208
+ : {
209
+ userId: QueryHelper.any(userIds),
210
+ },
211
+ select: {
212
+ onCallDutyPolicyScheduleId: true,
213
+ projectId: true,
214
+ userId: true,
215
+ },
216
+ limit: LIMIT_PER_PROJECT,
217
+ skip: 0,
218
+ props: {
219
+ isRoot: true,
220
+ },
221
+ });
222
+ for (const row of ownRows) {
223
+ const userKey = ((_a = row.userId) === null || _a === void 0 ? void 0 : _a.toString()) || "";
224
+ const candidates = candidatesByUser.get(userKey);
225
+ if (!candidates || !row.onCallDutyPolicyScheduleId) {
226
+ continue;
227
+ }
228
+ candidates.push(row.onCallDutyPolicyScheduleId);
229
+ }
230
+ if (data.includeCoveringShifts) {
231
+ const coveringOverrides = await OnCallDutyPolicyUserOverrideService.findBy({
232
+ query: projectFilter
233
+ ? {
234
+ routeAlertsToUserId: QueryHelper.any(userIds),
235
+ projectId: QueryHelper.any(projectFilter),
236
+ startsAt: QueryHelper.lessThanEqualTo(data.windowEnd),
237
+ endsAt: QueryHelper.greaterThanEqualTo(data.windowStart),
238
+ }
239
+ : {
240
+ routeAlertsToUserId: QueryHelper.any(userIds),
241
+ startsAt: QueryHelper.lessThanEqualTo(data.windowEnd),
242
+ endsAt: QueryHelper.greaterThanEqualTo(data.windowStart),
243
+ },
244
+ select: {
245
+ projectId: true,
246
+ overrideUserId: true,
247
+ routeAlertsToUserId: true,
248
+ startsAt: true,
249
+ endsAt: true,
250
+ },
251
+ limit: LIMIT_PER_PROJECT,
252
+ skip: 0,
253
+ props: {
254
+ isRoot: true,
255
+ },
256
+ });
257
+ // substitute -> the (project, overridden user) pairs THEY cover.
258
+ const pairsByUser = new Map();
259
+ const overriddenUserIds = [];
260
+ const overrideProjectIds = [];
261
+ for (const override of coveringOverrides) {
262
+ const overriddenUserId = override.overrideUserId;
263
+ const projectId = override.projectId;
264
+ const substituteKey = ((_b = override.routeAlertsToUserId) === null || _b === void 0 ? void 0 : _b.toString()) || "";
265
+ if (!overriddenUserId ||
266
+ !projectId ||
267
+ !candidatesByUser.has(substituteKey)) {
268
+ continue;
269
+ }
270
+ if (override.startsAt &&
271
+ override.endsAt &&
272
+ (OneUptimeDate.isAfter(override.startsAt, data.windowEnd) ||
273
+ OneUptimeDate.isBefore(override.endsAt, data.windowStart))) {
274
+ continue;
275
+ }
276
+ let pairs = pairsByUser.get(substituteKey);
277
+ if (!pairs) {
278
+ pairs = new Set();
279
+ pairsByUser.set(substituteKey, pairs);
280
+ }
281
+ pairs.add(`${projectId.toString()}:${overriddenUserId.toString()}`);
282
+ overriddenUserIds.push(overriddenUserId);
283
+ overrideProjectIds.push(projectId);
284
+ }
285
+ if (pairsByUser.size > 0) {
286
+ const coveredRows = await OnCallDutyPolicyScheduleLayerUserService.findBy({
287
+ query: {
288
+ userId: QueryHelper.any(OnCallShiftMaterializer.dedupeIds(overriddenUserIds)),
289
+ projectId: QueryHelper.any(OnCallShiftMaterializer.dedupeIds(overrideProjectIds)),
290
+ },
291
+ select: {
292
+ onCallDutyPolicyScheduleId: true,
293
+ projectId: true,
294
+ userId: true,
295
+ },
296
+ limit: LIMIT_PER_PROJECT,
297
+ skip: 0,
298
+ props: {
299
+ isRoot: true,
300
+ },
301
+ });
302
+ for (const row of coveredRows) {
303
+ const key = `${((_c = row.projectId) === null || _c === void 0 ? void 0 : _c.toString()) || ""}:${((_d = row.userId) === null || _d === void 0 ? void 0 : _d.toString()) || ""}`;
304
+ if (!row.onCallDutyPolicyScheduleId) {
305
+ continue;
306
+ }
307
+ for (const [substituteKey, pairs] of pairsByUser) {
308
+ if (pairs.has(key)) {
309
+ (_e = candidatesByUser
310
+ .get(substituteKey)) === null || _e === void 0 ? void 0 : _e.push(row.onCallDutyPolicyScheduleId);
311
+ }
312
+ }
313
+ }
314
+ }
315
+ }
316
+ const wanted = (_f = data.scheduleId) === null || _f === void 0 ? void 0 : _f.toString();
317
+ for (const [userKey, candidates] of candidatesByUser) {
318
+ let deduped = OnCallShiftMaterializer.dedupeIds(candidates);
319
+ if (wanted) {
320
+ deduped = deduped.filter((id) => {
321
+ return id.toString() === wanted;
322
+ });
323
+ }
324
+ candidatesByUser.set(userKey, deduped);
325
+ }
326
+ return candidatesByUser;
327
+ }
328
+ // -- Pure materialization ---------------------------------------------
329
+ /**
330
+ * Materialize ONE resolved schedule: base shifts plus policy-variant
331
+ * shifts. Pure — every lookup has already happened.
332
+ */
333
+ static materializeResolved(resolved, options) {
334
+ const baseShifts = OnCallShiftMaterializer.toShifts(resolved.segments);
335
+ const shifts = baseShifts.map((shift) => {
336
+ return OnCallShiftMaterializer.toMaterializedShift({
337
+ shift,
338
+ resolved,
339
+ options,
340
+ policyVariant: null,
341
+ });
342
+ });
343
+ for (const variant of resolved.policyVariants) {
344
+ const variantShifts = OnCallShiftMaterializer.toShifts(variant.segments);
345
+ const differing = OnCallShiftMaterializer.diffPolicyVariant(baseShifts, variantShifts);
346
+ for (const entry of differing) {
347
+ shifts.push(OnCallShiftMaterializer.toMaterializedShift({
348
+ shift: entry.shift,
349
+ resolved,
350
+ options,
351
+ policyVariant: {
352
+ policyId: variant.policyId,
353
+ policyName: variant.policyName,
354
+ globalUserId: entry.globalUserId,
355
+ },
356
+ }));
357
+ }
358
+ }
359
+ return MaterializedShiftUtil.sortByStart(shifts);
360
+ }
361
+ /*
362
+ * Group + seam-normalise raw segments into shifts. Exposed so tests and
363
+ * the coverage-gap logic can reproduce exactly what the feed sees.
364
+ */
365
+ static toShifts(segments) {
366
+ const grouped = ScheduleShiftUtil.groupEventsIntoShifts(segments, {
367
+ mergeAcrossGaps: false,
368
+ groupKey: ScheduleShiftUtil.groupKeyByUserOverrideAndLayer,
369
+ });
370
+ /*
371
+ * Seam normalisation widens a shift by the engine's one-second seams;
372
+ * with mergeAcrossGaps = false every shift is one contiguous block, so
373
+ * its honest active time is exactly its span. Recompute rather than
374
+ * carry the pre-normalisation sum, which would read 28799 for an 8-hour
375
+ * block.
376
+ */
377
+ return ShiftSeamUtil.normalizeSeams(grouped)
378
+ .filter((shift) => {
379
+ return shift.end.getTime() > shift.start.getTime();
380
+ })
381
+ .map((shift) => {
382
+ return Object.assign(Object.assign({}, shift), { coverageSeconds: Math.round((shift.end.getTime() - shift.start.getTime()) / 1000) });
383
+ });
384
+ }
385
+ /*
386
+ * The variant shifts during which a DIFFERENT person is paged than in the
387
+ * base resolution. A variant shift whose whole span is covered by base
388
+ * shifts of the same user is identical for the subscriber and dropped; one
389
+ * that overlaps a base shift of another user (or no base shift at all) is
390
+ * kept, together with who the base resolution pages at its start.
391
+ */
392
+ static diffPolicyVariant(baseShifts, variantShifts) {
393
+ var _a;
394
+ const result = [];
395
+ for (const variant of variantShifts) {
396
+ const overlapping = baseShifts.filter((base) => {
397
+ return (base.start.getTime() < variant.end.getTime() &&
398
+ base.end.getTime() > variant.start.getTime());
399
+ });
400
+ const differingBase = overlapping.find((base) => {
401
+ return base.userId !== variant.userId;
402
+ });
403
+ if (overlapping.length > 0 && !differingBase) {
404
+ continue; // same person throughout: nothing policy-specific here.
405
+ }
406
+ const globalUserId = (differingBase === null || differingBase === void 0 ? void 0 : differingBase.userId) ||
407
+ ((_a = variant.override) === null || _a === void 0 ? void 0 : _a.originalUserId) ||
408
+ variant.userId;
409
+ result.push({ shift: variant, globalUserId });
410
+ }
411
+ return result;
412
+ }
413
+ /** Keep only the shifts where `userId` is the person on call. */
414
+ static filterShiftsForUser(shifts, userId) {
415
+ const wanted = userId.toString();
416
+ return shifts.filter((shift) => {
417
+ return shift.userId === wanted;
418
+ });
419
+ }
420
+ /*
421
+ * sha256 over every field that changes what a subscriber sees for this
422
+ * shift, excluding the identity (shiftKey), the version and the
423
+ * modification stamp, so two renders of an unchanged shift hash the same
424
+ * and any content change — the person, the end, the layer, the policies,
425
+ * the override provenance — changes the hash.
426
+ */
427
+ static computeContentHash(shift) {
428
+ var _a, _b, _c, _d, _e;
429
+ const payload = {
430
+ scheduleId: shift.scheduleId,
431
+ scheduleName: shift.scheduleName,
432
+ scheduleTimezone: (_a = shift.scheduleTimezone) !== null && _a !== void 0 ? _a : null,
433
+ projectName: (_b = shift.projectName) !== null && _b !== void 0 ? _b : null,
434
+ userId: shift.userId,
435
+ userName: shift.userName,
436
+ start: shift.start.toISOString(),
437
+ end: shift.end.toISOString(),
438
+ coverageSeconds: shift.coverageSeconds,
439
+ layerId: (_c = shift.layerId) !== null && _c !== void 0 ? _c : null,
440
+ layerName: (_d = shift.layerName) !== null && _d !== void 0 ? _d : null,
441
+ override: shift.override
442
+ ? {
443
+ originalUserId: shift.override.originalUserId,
444
+ originalUserName: shift.override.originalUserName,
445
+ overrideStartsAt: shift.override.overrideStartsAt.toISOString(),
446
+ overrideEndsAt: shift.override.overrideEndsAt.toISOString(),
447
+ onCallDutyPolicyId: (_e = shift.override.onCallDutyPolicyId) !== null && _e !== void 0 ? _e : null,
448
+ }
449
+ : null,
450
+ policyVariantOf: shift.policyVariantOf
451
+ ? {
452
+ policyId: shift.policyVariantOf.policyId,
453
+ policyName: shift.policyVariantOf.policyName,
454
+ globalUserId: shift.policyVariantOf.globalUserId,
455
+ }
456
+ : null,
457
+ policies: shift.policies.map((policy) => {
458
+ return {
459
+ policyId: policy.policyId,
460
+ policyName: policy.policyName,
461
+ ruleId: policy.ruleId,
462
+ ruleName: policy.ruleName,
463
+ ruleOrder: policy.ruleOrder,
464
+ };
465
+ }),
466
+ };
467
+ return crypto
468
+ .createHash("sha256")
469
+ .update(JSON.stringify(payload), "utf8")
470
+ .digest("hex");
471
+ }
472
+ // -- Internals ---------------------------------------------------------
473
+ static toMaterializedShift(data) {
474
+ var _a, _b;
475
+ const { shift, resolved, options } = data;
476
+ const base = {
477
+ projectId: resolved.schedule.projectId,
478
+ scheduleId: resolved.schedule.id,
479
+ scheduleName: resolved.schedule.name,
480
+ userId: shift.userId,
481
+ userName: OnCallShiftMaterializer.displayName(options.users, shift.userId),
482
+ start: shift.start,
483
+ end: shift.end,
484
+ coverageSeconds: shift.coverageSeconds,
485
+ policies: resolved.attachedPolicies.map((policy) => {
486
+ return Object.assign({}, policy);
487
+ }),
488
+ isPast: shift.start.getTime() < options.now.getTime(),
489
+ };
490
+ if (options.projectName !== undefined) {
491
+ base.projectName = options.projectName;
492
+ }
493
+ if (resolved.schedule.timezone !== undefined) {
494
+ base.scheduleTimezone = resolved.schedule.timezone;
495
+ }
496
+ if (shift.layerId !== undefined) {
497
+ base.layerId = shift.layerId;
498
+ }
499
+ if (shift.layerName !== undefined) {
500
+ base.layerName = shift.layerName;
501
+ }
502
+ if (shift.override) {
503
+ const override = {
504
+ originalUserId: shift.override.originalUserId,
505
+ originalUserName: OnCallShiftMaterializer.displayName(options.users, shift.override.originalUserId),
506
+ overrideStartsAt: new Date(shift.override.overrideStartsAt.getTime()),
507
+ overrideEndsAt: new Date(shift.override.overrideEndsAt.getTime()),
508
+ };
509
+ const policyId = OnCallShiftMaterializer.findOverridePolicyId(resolved.overrides, {
510
+ originalUserId: shift.override.originalUserId,
511
+ substituteUserId: shift.userId,
512
+ startsAt: shift.override.overrideStartsAt,
513
+ endsAt: shift.override.overrideEndsAt,
514
+ preferredPolicyId: (_a = data.policyVariant) === null || _a === void 0 ? void 0 : _a.policyId,
515
+ });
516
+ if (policyId) {
517
+ override.onCallDutyPolicyId = policyId;
518
+ }
519
+ base.override = override;
520
+ }
521
+ if (data.policyVariant) {
522
+ base.policyVariantOf = {
523
+ policyId: data.policyVariant.policyId,
524
+ policyName: data.policyVariant.policyName,
525
+ globalUserId: data.policyVariant.globalUserId,
526
+ };
527
+ }
528
+ return Object.assign(Object.assign({}, base), { shiftKey: MaterializedShiftUtil.buildShiftKey({
529
+ scheduleId: resolved.schedule.id,
530
+ start: shift.start,
531
+ policyId: (_b = data.policyVariant) === null || _b === void 0 ? void 0 : _b.policyId,
532
+ }), contentHash: OnCallShiftMaterializer.computeContentHash(base), lastModifiedAt: resolved.lastModifiedAt, shiftConfigVersion: resolved.schedule.shiftConfigVersion });
533
+ }
534
+ /*
535
+ * Map a segment's override meta back to the override record that produced
536
+ * it, to learn its policy scope. Prefers a record scoped to
537
+ * `preferredPolicyId` (the variant being materialized); falls back to any
538
+ * record with the same users and window.
539
+ */
540
+ static findOverridePolicyId(overrides, data) {
541
+ const matches = overrides.filter((record) => {
542
+ return (record.overrideUserId === data.originalUserId &&
543
+ record.routeAlertsToUserId === data.substituteUserId &&
544
+ record.startsAt.getTime() === data.startsAt.getTime() &&
545
+ record.endsAt.getTime() === data.endsAt.getTime());
546
+ });
547
+ if (matches.length === 0) {
548
+ return null;
549
+ }
550
+ if (data.preferredPolicyId) {
551
+ const preferred = matches.find((record) => {
552
+ return record.onCallDutyPolicyId === data.preferredPolicyId;
553
+ });
554
+ if (preferred) {
555
+ return preferred.onCallDutyPolicyId || null;
556
+ }
557
+ }
558
+ // A global match wins over a scoped one for the base resolution.
559
+ const global = matches.find((record) => {
560
+ return !record.onCallDutyPolicyId;
561
+ });
562
+ if (global) {
563
+ return null;
564
+ }
565
+ return matches[0].onCallDutyPolicyId || null;
566
+ }
567
+ static displayName(users, userId) {
568
+ var _a;
569
+ return (((_a = users.get(userId)) === null || _a === void 0 ? void 0 : _a.userName) || OnCallCalendarFeedUtil.FALLBACK_USER_NAME);
570
+ }
571
+ static collectUserIds(resolved) {
572
+ const ids = new Set();
573
+ for (const item of resolved) {
574
+ for (const segment of item.segments) {
575
+ if (segment.title) {
576
+ ids.add(segment.title);
577
+ }
578
+ }
579
+ for (const variant of item.policyVariants) {
580
+ for (const segment of variant.segments) {
581
+ if (segment.title) {
582
+ ids.add(segment.title);
583
+ }
584
+ }
585
+ }
586
+ for (const override of item.overrides) {
587
+ if (override.overrideUserId) {
588
+ ids.add(override.overrideUserId);
589
+ }
590
+ if (override.routeAlertsToUserId) {
591
+ ids.add(override.routeAlertsToUserId);
592
+ }
593
+ }
594
+ for (const userId of item.scheduleUserIds) {
595
+ ids.add(userId);
596
+ }
597
+ }
598
+ return Array.from(ids);
599
+ }
600
+ /*
601
+ * One root user lookup for names and timezones. Name falls back to email;
602
+ * the feed mapper masks emails where they must not appear (shared feeds).
603
+ */
604
+ static async loadUsers(userIds) {
605
+ var _a, _b, _c, _d;
606
+ const users = new Map();
607
+ if (userIds.length === 0) {
608
+ return users;
609
+ }
610
+ const rows = await UserService.findBy({
611
+ query: {
612
+ _id: QueryHelper.any(userIds),
613
+ },
614
+ select: {
615
+ _id: true,
616
+ name: true,
617
+ email: true,
618
+ timezone: true,
619
+ },
620
+ limit: LIMIT_PER_PROJECT,
621
+ skip: 0,
622
+ props: {
623
+ isRoot: true,
624
+ },
625
+ });
626
+ for (const row of rows) {
627
+ const userId = (_a = row.id) === null || _a === void 0 ? void 0 : _a.toString();
628
+ if (!userId) {
629
+ continue;
630
+ }
631
+ const name = ((_b = row.name) === null || _b === void 0 ? void 0 : _b.toString().trim()) || "";
632
+ const email = ((_c = row.email) === null || _c === void 0 ? void 0 : _c.toString().trim()) || "";
633
+ const timezone = ((_d = row.timezone) === null || _d === void 0 ? void 0 : _d.toString()) || "";
634
+ const info = {
635
+ userId,
636
+ userName: name || email || OnCallCalendarFeedUtil.FALLBACK_USER_NAME,
637
+ };
638
+ if (email) {
639
+ info.email = email;
640
+ }
641
+ if (timezone) {
642
+ info.timezone = timezone;
643
+ }
644
+ users.set(userId, info);
645
+ }
646
+ return users;
647
+ }
648
+ static async loadProjectNames(projectIds) {
649
+ var _a;
650
+ const names = new Map();
651
+ const distinct = Array.from(new Set(projectIds.filter((id) => {
652
+ return Boolean(id);
653
+ })));
654
+ if (distinct.length === 0) {
655
+ return names;
656
+ }
657
+ const projects = await ProjectService.findBy({
658
+ query: {
659
+ _id: QueryHelper.any(distinct),
660
+ },
661
+ select: {
662
+ _id: true,
663
+ name: true,
664
+ },
665
+ limit: LIMIT_PER_PROJECT,
666
+ skip: 0,
667
+ props: {
668
+ isRoot: true,
669
+ },
670
+ });
671
+ for (const project of projects) {
672
+ const id = (_a = project.id) === null || _a === void 0 ? void 0 : _a.toString();
673
+ if (id && project.name) {
674
+ names.set(id, project.name);
675
+ }
676
+ }
677
+ return names;
678
+ }
679
+ static validateWindow(windowStart, windowEnd) {
680
+ if (!(windowStart instanceof Date) ||
681
+ !(windowEnd instanceof Date) ||
682
+ Number.isNaN(windowStart.getTime()) ||
683
+ Number.isNaN(windowEnd.getTime())) {
684
+ throw new BadDataException("windowStart and windowEnd must be dates");
685
+ }
686
+ if (windowStart.getTime() >= windowEnd.getTime()) {
687
+ throw new BadDataException("windowStart must be before windowEnd");
688
+ }
689
+ }
690
+ static emptyResult(now) {
691
+ return {
692
+ shifts: [],
693
+ truncated: false,
694
+ schedules: [],
695
+ users: [],
696
+ generatedAt: now,
697
+ };
698
+ }
699
+ static dedupeIds(ids) {
700
+ const seen = new Set();
701
+ const result = [];
702
+ for (const id of ids) {
703
+ if (!id) {
704
+ continue;
705
+ }
706
+ const key = id.toString();
707
+ if (!key || seen.has(key)) {
708
+ continue;
709
+ }
710
+ seen.add(key);
711
+ result.push(id);
712
+ }
713
+ return result;
714
+ }
715
+ }
716
+ __decorate([
717
+ CaptureSpan(),
718
+ __metadata("design:type", Function),
719
+ __metadata("design:paramtypes", [Object]),
720
+ __metadata("design:returntype", Promise)
721
+ ], OnCallShiftMaterializer, "materializeForSchedule", null);
722
+ __decorate([
723
+ CaptureSpan(),
724
+ __metadata("design:type", Function),
725
+ __metadata("design:paramtypes", [Object]),
726
+ __metadata("design:returntype", Promise)
727
+ ], OnCallShiftMaterializer, "materializeForSchedules", null);
728
+ __decorate([
729
+ CaptureSpan(),
730
+ __metadata("design:type", Function),
731
+ __metadata("design:paramtypes", [Object]),
732
+ __metadata("design:returntype", Promise)
733
+ ], OnCallShiftMaterializer, "materializeForUser", null);
734
+ __decorate([
735
+ CaptureSpan(),
736
+ __metadata("design:type", Function),
737
+ __metadata("design:paramtypes", [Object]),
738
+ __metadata("design:returntype", Promise)
739
+ ], OnCallShiftMaterializer, "materializeForProject", null);
740
+ __decorate([
741
+ CaptureSpan(),
742
+ __metadata("design:type", Function),
743
+ __metadata("design:paramtypes", [Object]),
744
+ __metadata("design:returntype", Promise)
745
+ ], OnCallShiftMaterializer, "getCandidateScheduleIdsForUser", null);
746
+ __decorate([
747
+ CaptureSpan(),
748
+ __metadata("design:type", Function),
749
+ __metadata("design:paramtypes", [Object]),
750
+ __metadata("design:returntype", Promise)
751
+ ], OnCallShiftMaterializer, "getCandidateScheduleIdsForUsers", null);
752
+ //# sourceMappingURL=OnCallShiftMaterializer.js.map