@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
@@ -368,3 +368,613 @@ describe("StackTraceParser.parse - auto-detection", () => {
368
368
  expect(result.frames[0]!.fileName).toBe("/app/only.js");
369
369
  });
370
370
  });
371
+
372
+ /*
373
+ * Firefox (SpiderMonkey) and Safari (JavaScriptCore) write `fn@source:line:col`
374
+ * — no `at`, no parentheses, no header line, and no indentation. Every frame
375
+ * below returned ZERO frames before parseJavaScriptBrowser existed, which is
376
+ * what kept browser exceptions from ever reaching source-map resolution
377
+ * (github.com/OneUptime/oneuptime/issues/3511).
378
+ *
379
+ * Two properties are load-bearing for the whole parse() election and are
380
+ * asserted separately below: the browser parser is registered LAST so it can
381
+ * never take a tie from another language, and it emits nothing at all until
382
+ * the stack has produced one unambiguous `name@<url>:line` anchor frame.
383
+ */
384
+ describe("StackTraceParser.parse - JavaScript/Firefox (SpiderMonkey)", () => {
385
+ test("parses the stack reported in issue #3511", () => {
386
+ const trace: string = [
387
+ "handleSubmit@https://app.example.com/_nuxt/entry.a1b2c3d4.js:1:98217",
388
+ "onClick/<@https://app.example.com/_nuxt/entry.a1b2c3d4.js:1:74102",
389
+ "@https://app.example.com/_nuxt/entry.a1b2c3d4.js:1:2211",
390
+ ].join("\n");
391
+
392
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
393
+
394
+ expect(result.frames).toHaveLength(3);
395
+ expect(result.frames[0]).toEqual({
396
+ functionName: "handleSubmit",
397
+ fileName: "https://app.example.com/_nuxt/entry.a1b2c3d4.js",
398
+ lineNumber: 1,
399
+ columnNumber: 98217,
400
+ inApp: true,
401
+ });
402
+ // A nested-closure name is kept as Firefox wrote it.
403
+ expect(result.frames[1]!.functionName).toBe("onClick/<");
404
+ // A nameless top-level frame gets the same placeholder the V8 parser uses.
405
+ expect(result.frames[2]!.functionName).toBe("<anonymous>");
406
+ expect(result.frames[2]!.columnNumber).toBe(2211);
407
+ });
408
+
409
+ test("keeps every shape of Firefox display name verbatim", () => {
410
+ const trace: string = [
411
+ "Foo.prototype.render@https://example.com/app.js:88:14",
412
+ "store.dispatch@https://example.com/app.js:44:7",
413
+ "initGrid/</<@https://example.com/app.js:214:31",
414
+ "initGrid/onRow/<@https://example.com/app.js:219:15",
415
+ "[16]</Grid.prototype.draw/<@https://example.com/app.js:1:98211",
416
+ ].join("\n");
417
+
418
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
419
+
420
+ expect(
421
+ result.frames.map((f: StackFrame) => {
422
+ return f.functionName;
423
+ }),
424
+ ).toEqual([
425
+ "Foo.prototype.render",
426
+ "store.dispatch",
427
+ "initGrid/</<",
428
+ "initGrid/onRow/<",
429
+ "[16]</Grid.prototype.draw/<",
430
+ ]);
431
+ });
432
+
433
+ test("keeps the async cause marker as part of the function name", () => {
434
+ /*
435
+ * `<cause>*<fn>` is how Firefox marks a frame reconstructed from an async
436
+ * stack. Stripping the marker would render two adjacent frames as the same
437
+ * function at the same position, and StackFrame has no field to move it to.
438
+ */
439
+ const trace: string = [
440
+ "async*loadUser@https://example.com/app.js:19:9",
441
+ "promise callback*fetchAll@https://example.com/app.js:33:5",
442
+ "setTimeout handler*poll@https://example.com/app.js:71:3",
443
+ "promise callback*initGrid/<@https://example.com/app.js:41:9",
444
+ // A getter that registers a promise callback carries BOTH forms at once.
445
+ "promise callback*get profile@https://example.com/app.js:52:7",
446
+ "async*@https://example.com/app.js:26:3",
447
+ ].join("\n");
448
+
449
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
450
+
451
+ expect(
452
+ result.frames.map((f: StackFrame) => {
453
+ return f.functionName;
454
+ }),
455
+ ).toEqual([
456
+ "async*loadUser",
457
+ "promise callback*fetchAll",
458
+ "setTimeout handler*poll",
459
+ "promise callback*initGrid/<",
460
+ "promise callback*get profile",
461
+ "async*",
462
+ ]);
463
+ expect(result.frames[2]!.lineNumber).toBe(71);
464
+ });
465
+
466
+ test("parses the column-less form older Firefox emitted", () => {
467
+ const trace: string = [
468
+ "doStuff@https://example.com/legacy.js:112",
469
+ "boot@https://example.com/legacy.js:5:1",
470
+ ].join("\n");
471
+
472
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
473
+
474
+ expect(result.frames).toHaveLength(2);
475
+ expect(result.frames[0]!.lineNumber).toBe(112);
476
+ expect(result.frames[0]!.columnNumber).toBeUndefined();
477
+ });
478
+
479
+ test("reports an eval frame against the introducing file and line", () => {
480
+ /*
481
+ * `https://x/app.js line 12 > eval:1:5` — the 1:5 is a position inside the
482
+ * eval'd text, which has no bundle and no source map. app.js:12 is the only
483
+ * position a source map can resolve, so that is what the frame carries and
484
+ * the inner column is dropped rather than aimed at the wrong file.
485
+ */
486
+ const trace: string = [
487
+ "evalTarget@https://x.example.com/app.js line 12 > eval:1:5",
488
+ "nested@https://x.example.com/app.js line 30 > eval line 1 > eval:1:9",
489
+ "viaFunction@https://x.example.com/app.js line 7 > Function:1:1",
490
+ /*
491
+ * The `line N >` decoration is unmistakable, so an extensionless
492
+ * introducer is exempt from the script-extension rule below.
493
+ */
494
+ "inline@https://x.example.com/checkout line 4 > eval:1:5",
495
+ "boot@https://x.example.com/app.js:3:1",
496
+ ].join("\n");
497
+
498
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
499
+
500
+ expect(result.frames).toHaveLength(5);
501
+ expect(result.frames[0]!.fileName).toBe("https://x.example.com/app.js");
502
+ expect(result.frames[0]!.lineNumber).toBe(12);
503
+ expect(result.frames[0]!.columnNumber).toBeUndefined();
504
+ // Nested introductions collapse to the OUTERMOST line, not the innermost.
505
+ expect(result.frames[1]!.lineNumber).toBe(30);
506
+ expect(result.frames[2]!.lineNumber).toBe(7);
507
+ expect(result.frames[3]).toEqual({
508
+ functionName: "inline",
509
+ fileName: "https://x.example.com/checkout",
510
+ lineNumber: 4,
511
+ inApp: true,
512
+ });
513
+ });
514
+
515
+ test("parses a self-hosted builtin frame and marks it as library code", () => {
516
+ const trace: string = [
517
+ "next@self-hosted:1154:9",
518
+ "boot@https://x.example.com/a.js:1:1",
519
+ ].join("\n");
520
+
521
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
522
+
523
+ expect(result.frames).toHaveLength(2);
524
+ expect(result.frames[0]).toEqual({
525
+ functionName: "next",
526
+ fileName: "self-hosted",
527
+ lineNumber: 1154,
528
+ columnNumber: 9,
529
+ inApp: false,
530
+ });
531
+ });
532
+
533
+ test("parses sources whose own colons must not be mistaken for the location", () => {
534
+ const trace: string = [
535
+ "boot@http://localhost:3000/static/js/bundle.js:12345:56",
536
+ "send@https://user:pw@cdn.example.com/sdk.js:1:9033",
537
+ "w@blob:https://example.com/9f0a-1:2:3",
538
+ "run@file:///C:/app/dist/x.js:8:2",
539
+ ].join("\n");
540
+
541
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
542
+
543
+ expect(result.frames).toHaveLength(4);
544
+ // The :port survives; only the trailing two numbers are the location.
545
+ expect(result.frames[0]!.fileName).toBe(
546
+ "http://localhost:3000/static/js/bundle.js",
547
+ );
548
+ expect(result.frames[0]!.lineNumber).toBe(12345);
549
+ expect(result.frames[0]!.columnNumber).toBe(56);
550
+ // Userinfo contains both a colon and an `@` and must stay in the URL.
551
+ expect(result.frames[1]!.fileName).toBe(
552
+ "https://user:pw@cdn.example.com/sdk.js",
553
+ );
554
+ expect(result.frames[2]!.fileName).toBe("blob:https://example.com/9f0a-1");
555
+ expect(result.frames[3]!.fileName).toBe("file:///C:/app/dist/x.js");
556
+ });
557
+
558
+ test("classifies extension and vendored URLs as library code", () => {
559
+ const trace: string = [
560
+ "onMessage@moz-extension://a1b2/content.js:9:1",
561
+ "inject@chrome-extension://c3d4/inject.js:2:2",
562
+ "render@https://app.example.com/node_modules/react-dom/index.js:5:5",
563
+ "handleSubmit@https://app.example.com/assets/app.js:1:1",
564
+ ].join("\n");
565
+
566
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
567
+
568
+ expect(
569
+ result.frames.map((f: StackFrame) => {
570
+ return f.inApp;
571
+ }),
572
+ ).toEqual([false, false, false, true]);
573
+ });
574
+
575
+ test("handles CRLF line endings", () => {
576
+ const trace: string = [
577
+ "handleSubmit@https://example.com/app.js:1:2",
578
+ "boot@https://example.com/app.js:3:4",
579
+ ].join("\r\n");
580
+
581
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
582
+
583
+ expect(result.frames).toHaveLength(2);
584
+ expect(result.frames[1]!.columnNumber).toBe(4);
585
+ });
586
+
587
+ test("skips a pathologically long line without dropping the rest", () => {
588
+ const trace: string = [
589
+ `x@https://example.com/${"a".repeat(5000)}.js:1:1`,
590
+ "boot@https://example.com/app.js:2:2",
591
+ ].join("\n");
592
+
593
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
594
+
595
+ expect(result.frames).toHaveLength(1);
596
+ expect(result.frames[0]!.fileName).toBe("https://example.com/app.js");
597
+ });
598
+ });
599
+
600
+ describe("StackTraceParser.parse - JavaScript/Safari (JavaScriptCore)", () => {
601
+ test("parses a Safari stack including its pseudo-function names", () => {
602
+ const trace: string = [
603
+ "handleSubmit@https://app.example.com/build/main.js:12:34",
604
+ "global code@https://app.example.com/build/main.js:1:1",
605
+ "module code@https://app.example.com/build/mod.mjs:3:11",
606
+ "eval code@https://app.example.com/build/main.js:7:9",
607
+ ].join("\n");
608
+
609
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
610
+
611
+ expect(result.frames).toHaveLength(4);
612
+ /*
613
+ * `global code` / `module code` / `eval code` are kept exactly as
614
+ * JavaScriptCore wrote them — they are the only name the engine gives the
615
+ * frame, and rewriting them would disagree with the raw stack shown
616
+ * beside the frame list.
617
+ */
618
+ expect(
619
+ result.frames.map((f: StackFrame) => {
620
+ return f.functionName;
621
+ }),
622
+ ).toEqual(["handleSubmit", "global code", "module code", "eval code"]);
623
+ expect(result.frames[2]!.fileName).toBe(
624
+ "https://app.example.com/build/mod.mjs",
625
+ );
626
+ });
627
+
628
+ test("parses `fn@[native code]` with no fabricated location", () => {
629
+ const trace: string = [
630
+ "handleSubmit@https://app.example.com/build/main.js:12:34",
631
+ "forEach@[native code]",
632
+ "promiseReactionJob@[native code]",
633
+ ].join("\n");
634
+
635
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
636
+
637
+ expect(result.frames).toHaveLength(3);
638
+ expect(result.frames[1]).toEqual({
639
+ functionName: "forEach",
640
+ fileName: "[native code]",
641
+ /*
642
+ * lineNumber is not optional on StackFrame, and 0 is the same file-less
643
+ * sentinel parseJava already uses for `(Native Method)`. It also keeps
644
+ * the frame out of source-map resolution, which skips lineNumber < 1.
645
+ */
646
+ lineNumber: 0,
647
+ inApp: false,
648
+ });
649
+ expect(result.frames[1]!.columnNumber).toBeUndefined();
650
+ });
651
+
652
+ test("parses ES2015 accessor and bound function names", () => {
653
+ const trace: string = [
654
+ "get fullName@https://example.com/app.js:4:9",
655
+ "bound save@https://example.com/app.js:9:2",
656
+ ].join("\n");
657
+
658
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
659
+
660
+ expect(result.frames).toHaveLength(2);
661
+ expect(result.frames[0]!.functionName).toBe("get fullName");
662
+ expect(result.frames[1]!.functionName).toBe("bound save");
663
+ });
664
+ });
665
+
666
+ describe("StackTraceParser.parse - browser parser election", () => {
667
+ test("a V8 stack still elects the V8 parser", () => {
668
+ /*
669
+ * The whole reason the browser grammar is a separate parser rather than
670
+ * more patterns inside parseJavaScript: a V8 stack must be unaffected.
671
+ */
672
+ const trace: string = [
673
+ "Error: boom",
674
+ " at doWork (/app/src/worker.js:42:15)",
675
+ " at main (/app/src/index.js:10:3)",
676
+ ].join("\n");
677
+
678
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
679
+
680
+ expect(result.frames).toHaveLength(2);
681
+ expect(result.frames[0]!.fileName).toBe("/app/src/worker.js");
682
+ });
683
+
684
+ test("a V8 frame is never double-claimed by the browser parser", () => {
685
+ const v8: ParsedStackTrace = StackTraceParser.parse(
686
+ " at Object.send (https://app.example.com/assets/main.js:1:2)",
687
+ );
688
+ expect(v8.frames).toHaveLength(1);
689
+ expect(v8.frames[0]!.functionName).toBe("Object.send");
690
+
691
+ /*
692
+ * `at a*b` satisfies the async-cause name grammar, and no V8 pattern
693
+ * matches a column-less line — so without the `at ` guard in
694
+ * parseJavaScriptBrowser these two lines would become browser frames.
695
+ */
696
+ const disguised: ParsedStackTrace = StackTraceParser.parse(
697
+ [
698
+ "at a*b@https://x.example.com/app.js:112",
699
+ "at c*d@https://x.example.com/app.js:113",
700
+ ].join("\n"),
701
+ );
702
+ expect(disguised.frames).toEqual([]);
703
+ });
704
+
705
+ test("a mixed stack resolves to whichever engine has more frames", () => {
706
+ const trace: string = [
707
+ "TypeError: t is undefined",
708
+ "onSelect@https://app.example.com/main.js:1:46",
709
+ "render@https://app.example.com/main.js:2:3",
710
+ " at wrapper (/app/src/bridge.js:9:1)",
711
+ ].join("\n");
712
+
713
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
714
+
715
+ expect(result.frames).toHaveLength(2);
716
+ expect(result.frames[0]!.functionName).toBe("onSelect");
717
+ });
718
+
719
+ test("browser-shaped lines never take a tie from another language", () => {
720
+ /*
721
+ * parse() keeps the FIRST parser to reach a frame count, and the browser
722
+ * parser is registered last, so it has to strictly out-count every
723
+ * language before it. These are the exact tie shapes that would otherwise
724
+ * silently delete a correct parse.
725
+ */
726
+ type TieCase = { name: string; trace: string; expectedFile: string };
727
+
728
+ const cases: Array<TieCase> = [
729
+ {
730
+ name: "ruby",
731
+ trace: [
732
+ "/app/models/user.rb:12:in `save'",
733
+ "/app/controllers/users_controller.rb:8:in `create'",
734
+ "x@https://a.example.com/a.js:1:1",
735
+ "y@https://a.example.com/a.js:2:1",
736
+ ].join("\n"),
737
+ expectedFile: "/app/models/user.rb",
738
+ },
739
+ {
740
+ name: "python",
741
+ trace: [
742
+ 'File "/app/a.py", line 1, in a',
743
+ 'File "/app/b.py", line 2, in b',
744
+ "x@https://a.example.com/a.js:1:1",
745
+ "y@https://a.example.com/a.js:2:1",
746
+ ].join("\n"),
747
+ expectedFile: "/app/a.py",
748
+ },
749
+ {
750
+ name: "java",
751
+ trace: [
752
+ "at com.example.Foo.bar(Foo.java:10)",
753
+ "at com.example.Main.main(Main.java:5)",
754
+ "x@https://a.example.com/a.js:1:1",
755
+ "y@https://a.example.com/a.js:2:1",
756
+ ].join("\n"),
757
+ expectedFile: "Foo.java",
758
+ },
759
+ {
760
+ name: "php",
761
+ trace: [
762
+ "#0 /app/service.php(42): Service->process()",
763
+ "#1 /app/index.php(10): Service->run()",
764
+ "#2 {main}",
765
+ "x@https://a.example.com/a.js:1:1",
766
+ "y@https://a.example.com/a.js:2:1",
767
+ "z@https://a.example.com/a.js:3:1",
768
+ ].join("\n"),
769
+ expectedFile: "/app/service.php",
770
+ },
771
+ ];
772
+
773
+ for (const testCase of cases) {
774
+ const result: ParsedStackTrace = StackTraceParser.parse(testCase.trace);
775
+ expect(result.frames[0]!.fileName).toBe(testCase.expectedFile);
776
+ }
777
+ });
778
+
779
+ test("forged `[native code]` lines cannot evict another language", () => {
780
+ /*
781
+ * A pseudo-source frame needs no URL and no digits, so without the anchor
782
+ * requirement two of them would be the cheapest possible way to out-count
783
+ * a real stack.
784
+ */
785
+ const trace: string = [
786
+ "/app/models/user.rb:12:in `save'",
787
+ "/app/controllers/users_controller.rb:8:in `create'",
788
+ "map@[native code]",
789
+ "forEach@[native code]",
790
+ "reduce@[native code]",
791
+ ].join("\n");
792
+
793
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
794
+
795
+ expect(result.frames).toHaveLength(2);
796
+ expect(result.frames[0]!.fileName).toBe("/app/models/user.rb");
797
+ });
798
+
799
+ test("keeps every frame of a browser stack that also carries context lines", () => {
800
+ /*
801
+ * Log bodies interleave frames with structured context. A frame must never
802
+ * be dropped because the lines around it were not frames — on the log
803
+ * ingest path a zero-frame parse discards the whole exception.
804
+ */
805
+ const trace: string = [
806
+ "onSelect@https://app.example.com/main.js:1:46",
807
+ "render@https://app.example.com/main.js:2:3",
808
+ " request_id=abc",
809
+ " user_id=42",
810
+ ].join("\n");
811
+
812
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
813
+
814
+ expect(result.frames).toHaveLength(2);
815
+ });
816
+ });
817
+
818
+ describe("StackTraceParser.parse - browser parser rejections", () => {
819
+ /*
820
+ * The browser parser runs over arbitrary ERROR log bodies via
821
+ * LogExceptionExtractor's raw-body path, so anything that reads as
822
+ * `something@something:number` has to be rejected explicitly. Each guard
823
+ * that does the rejecting is pinned here, because none of them is visible
824
+ * from the regexes alone and every one is a single edit away from being
825
+ * "simplified" back out.
826
+ */
827
+ type RejectionCase = { why: string; input: string };
828
+
829
+ const rejections: Array<RejectionCase> = [
830
+ {
831
+ why: "an email address in log prose (the name has spaces)",
832
+ input: "failed login for user@example.com:22:1\nretrying in 5s",
833
+ },
834
+ {
835
+ why: "an SSH/git remote (the source names no scheme)",
836
+ input: "git@github.com:22:1",
837
+ },
838
+ {
839
+ why: "an ssh command line",
840
+ input: "ssh user@host:2222",
841
+ },
842
+ {
843
+ why: "a connection string (the name contains a colon)",
844
+ input: "Connection string: mongodb://svc@db.internal/app:1:1",
845
+ },
846
+ {
847
+ why: "a scoped npm path (what follows the `@` names no scheme)",
848
+ input: "/app/node_modules/@scope/pkg/index.js:10:5",
849
+ },
850
+ {
851
+ why: "a URL whose :port would otherwise peel as a line number",
852
+ input: "@http://127.0.0.1:8080\nserve@http://localhost:3000",
853
+ },
854
+ {
855
+ why: "a URL ending in a number with no column and no script extension",
856
+ input: "notify@https://hooks.slack.com/services/T000:200",
857
+ },
858
+ {
859
+ why: "a bare location with no `@` at all",
860
+ input: [
861
+ "https://cdn.example.com/vendor.js:99:1",
862
+ "https://cdn.example.com/other.js:98:2",
863
+ ].join("\n"),
864
+ },
865
+ {
866
+ why: "pseudo-source frames with no anchor frame to license them",
867
+ input: "map@[native code]\nforEach@[native code]",
868
+ },
869
+ {
870
+ why: "a bare `@`",
871
+ input: "@\n@@",
872
+ },
873
+ /*
874
+ * The four below name a perfectly valid source, so the ONLY thing
875
+ * rejecting them is the guard each one is named for. Without them the
876
+ * guards are all individually deletable with the suite still green.
877
+ */
878
+ {
879
+ why: "prose whose leading words cannot be a function name (spaces)",
880
+ input:
881
+ "notified on-call engineer jane@https://status.example.com/app.js:1:2",
882
+ },
883
+ {
884
+ why: "a name containing a colon",
885
+ input: "Connection string: svc@https://db.example.com/app.js:1:1",
886
+ },
887
+ {
888
+ why: "a scheme://authority whose :port would peel as the line number",
889
+ input: "boot@https://example.com:8080:1",
890
+ },
891
+ {
892
+ why: "a zero line number, which collides with the native-frame sentinel",
893
+ input: "boot@https://example.com/app.js:0:5",
894
+ },
895
+ {
896
+ why: "self-hosted frames with no anchor frame to license them",
897
+ input: "next@self-hosted:1154:9\nmap@self-hosted:1:1",
898
+ },
899
+ ];
900
+
901
+ for (const rejection of rejections) {
902
+ test(`rejects ${rejection.why}`, () => {
903
+ const result: ParsedStackTrace = StackTraceParser.parse(rejection.input);
904
+ expect(result.frames).toEqual([]);
905
+ });
906
+ }
907
+
908
+ test("does not claim a Go file:line pair", () => {
909
+ /*
910
+ * `/app/main.go:25` is a single-number bare location — the Go parser owns
911
+ * it and still does. Inside a browser stack the browser parser must not
912
+ * add a SECOND frame for it: the two frames below are the two `@` frames,
913
+ * and the Go line contributes nothing.
914
+ */
915
+ const goOnly: ParsedStackTrace = StackTraceParser.parse("/app/main.go:25");
916
+ expect(goOnly.frames).toHaveLength(1);
917
+ expect(goOnly.frames[0]!.fileName).toBe("/app/main.go");
918
+
919
+ const withAnchors: ParsedStackTrace = StackTraceParser.parse(
920
+ [
921
+ "handler@https://app.example.com/a.js:1:1",
922
+ "boot@https://app.example.com/a.js:2:1",
923
+ "/app/main.go:25",
924
+ ].join("\n"),
925
+ );
926
+ expect(
927
+ withAnchors.frames.map((f: StackFrame) => {
928
+ return f.functionName;
929
+ }),
930
+ ).toEqual(["handler", "boot"]);
931
+ });
932
+
933
+ test("an anchored stack still does not license bare locations", () => {
934
+ /*
935
+ * A logged asset URL sitting next to real frames must not become a frame:
936
+ * the no-`@` form is rejected outright, not merely gated on an anchor.
937
+ */
938
+ const trace: string = [
939
+ "handler@https://app.example.com/a.js:1:1",
940
+ "https://cdn.example.com/vendor.js:99:1",
941
+ "https://cdn.example.com/other.js:98:2",
942
+ ].join("\n");
943
+
944
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
945
+
946
+ expect(result.frames).toHaveLength(1);
947
+ expect(result.frames[0]!.functionName).toBe("handler");
948
+ });
949
+
950
+ test("never emits a fileName that a source map could not be matched to", () => {
951
+ /*
952
+ * SourceMapResolver matches a frame to a bundle by shared trailing path
953
+ * segments, so a fileName with junk glued to its last segment resolves to
954
+ * nothing. Any accepted frame must at minimum still end in its own
955
+ * basename.
956
+ */
957
+ const trace: string = [
958
+ "a@https://app.example.com/assets/main.abc.js:1:2",
959
+ "b@https://app.example.com/assets/main.abc.js:abc:1",
960
+ "c@https://app.example.com/assets/main.abc.js?v=2:3:4",
961
+ ].join("\n");
962
+
963
+ const result: ParsedStackTrace = StackTraceParser.parse(trace);
964
+
965
+ /*
966
+ * The middle frame's `:abc:` is not a location, so it is dropped outright
967
+ * rather than emitted with junk glued to its last path segment.
968
+ */
969
+ expect(
970
+ result.frames.map((f: StackFrame) => {
971
+ return f.functionName;
972
+ }),
973
+ ).toEqual(["a", "c"]);
974
+
975
+ for (const frame of result.frames) {
976
+ expect(frame.fileName).toContain("main.abc.js");
977
+ expect(frame.fileName).not.toContain(":abc");
978
+ }
979
+ });
980
+ });
@@ -0,0 +1,64 @@
1
+ import { describe, expect, test } from "@jest/globals";
2
+ import fs from "fs";
3
+ import path from "path";
4
+
5
+ /*
6
+ * EnvironmentConfig computes the ENCRYPTION_SECRET boot warning but cannot
7
+ * log it (Logger imports EnvironmentConfig), so the process entrypoint has
8
+ * to. StartServer.init is that entrypoint for every HTTP-serving process.
9
+ * A text-level test, in the style the repository uses for registration
10
+ * checks: the wiring is a two-line `if`, and the failure mode -- the warning
11
+ * silently never being said -- is invisible to any behavioural test that
12
+ * does not boot a server.
13
+ */
14
+ describe("StartServer emits the ENCRYPTION_SECRET boot warning", () => {
15
+ const source: string = fs.readFileSync(
16
+ path.join(__dirname, "../../../Server/Utils/StartServer.ts"),
17
+ "utf8",
18
+ );
19
+
20
+ test("imports EncryptionSecretWarning from EnvironmentConfig", () => {
21
+ const importBlock: RegExpMatchArray | null = source.match(
22
+ /import\s*\{([^}]*)\}\s*from\s*"\.\.\/EnvironmentConfig";/,
23
+ );
24
+
25
+ expect(importBlock).not.toBeNull();
26
+ expect(importBlock?.[1]).toContain("EncryptionSecretWarning");
27
+ });
28
+
29
+ test("logs it at warn level inside init, before the server launches", () => {
30
+ const initStart: number = source.indexOf("const init: InitFunction");
31
+ const launch: number = source.indexOf(
32
+ "await Express.launchApplication(appName, port);",
33
+ initStart,
34
+ );
35
+
36
+ expect(initStart).toBeGreaterThan(-1);
37
+ expect(launch).toBeGreaterThan(initStart);
38
+
39
+ const beforeLaunch: string = source.slice(initStart, launch);
40
+
41
+ expect(beforeLaunch).toMatch(
42
+ /if\s*\(EncryptionSecretWarning\)\s*\{\s*logger\.warn\(EncryptionSecretWarning\);\s*\}/,
43
+ );
44
+ });
45
+
46
+ test("does not refuse to boot over it", () => {
47
+ /*
48
+ * A throw here would take down every existing install that never set
49
+ * the secret, on upgrade, with no way to recover the encrypted columns
50
+ * afterwards anyway. The warning is loud; it is not fatal.
51
+ */
52
+ const initStart: number = source.indexOf("const init: InitFunction");
53
+ const initBody: string = source.slice(
54
+ initStart,
55
+ source.indexOf(
56
+ "await Express.launchApplication(appName, port);",
57
+ initStart,
58
+ ),
59
+ );
60
+
61
+ expect(initBody).not.toMatch(/throw[^;]*EncryptionSecret/);
62
+ expect(initBody).not.toMatch(/process\.exit/);
63
+ });
64
+ });