@oneuptime/common 12.0.33 → 13.0.0

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 (877) hide show
  1. package/Models/AnalyticsModels/RumSession.ts +117 -1
  2. package/Models/AnalyticsModels/RumSessionChunk.ts +13 -0
  3. package/Models/DatabaseModels/AlertCustomField.ts +77 -3
  4. package/Models/DatabaseModels/ApiKeyPermission.ts +3 -27
  5. package/Models/DatabaseModels/GlobalConfig.ts +12 -12
  6. package/Models/DatabaseModels/IncidentCustomField.ts +77 -3
  7. package/Models/DatabaseModels/InventoryItem.ts +44 -1
  8. package/Models/DatabaseModels/InventoryItemCustomField.ts +77 -3
  9. package/Models/DatabaseModels/MonitorCustomField.ts +77 -3
  10. package/Models/DatabaseModels/NetworkDevice.ts +126 -0
  11. package/Models/DatabaseModels/OnCallDutyPolicyCustomField.ts +77 -3
  12. package/Models/DatabaseModels/RumApplication.ts +6 -6
  13. package/Models/DatabaseModels/ScheduledMaintenanceCustomField.ts +77 -3
  14. package/Models/DatabaseModels/StatusPageCustomField.ts +77 -3
  15. package/Models/DatabaseModels/TeamCustomField.ts +77 -3
  16. package/Models/DatabaseModels/TeamMember.ts +0 -9
  17. package/Models/DatabaseModels/TeamMemberCustomField.ts +77 -3
  18. package/Models/DatabaseModels/TeamPermission.ts +3 -24
  19. package/Models/DatabaseModels/TelemetryIngestionKey.ts +260 -0
  20. package/Models/DatabaseModels/UserTelegram.ts +0 -4
  21. package/Scripts/benchmark-fanin-capacity.js +181 -0
  22. package/Server/API/TelemetryAPI.ts +1284 -164
  23. package/Server/API/UserNotificationSettingAPI.ts +55 -0
  24. package/Server/API/UserTelegramAPI.ts +48 -4
  25. package/Server/EnvironmentConfig.ts +82 -18
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.ts +91 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.ts +67 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.ts +139 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.ts +121 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.ts +25 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  32. package/Server/Infrastructure/QueueWorker.ts +20 -14
  33. package/Server/Infrastructure/Redis.ts +8 -8
  34. package/Server/Infrastructure/Semaphore.ts +2 -0
  35. package/Server/Infrastructure/Status.ts +10 -4
  36. package/Server/Middleware/TelemetryIngest.ts +453 -7
  37. package/Server/Services/AccessTokenService.ts +1 -0
  38. package/Server/Services/AlertCustomFieldService.ts +98 -0
  39. package/Server/Services/AlertService.ts +37 -0
  40. package/Server/Services/ApiKeyPermissionService.ts +461 -29
  41. package/Server/Services/CustomFieldMappingService.ts +879 -0
  42. package/Server/Services/DatabaseService.ts +65 -13
  43. package/Server/Services/GlobalConfigService.ts +194 -0
  44. package/Server/Services/IncidentCustomFieldService.ts +98 -0
  45. package/Server/Services/IncidentService.ts +35 -0
  46. package/Server/Services/InventoryItemService.ts +31 -1
  47. package/Server/Services/MetricService.ts +194 -0
  48. package/Server/Services/MonitorService.ts +32 -0
  49. package/Server/Services/MonitorTemplateService.ts +140 -19
  50. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +427 -66
  51. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +87 -2
  52. package/Server/Services/NetworkDeviceService.ts +69 -0
  53. package/Server/Services/ProjectService.ts +22 -0
  54. package/Server/Services/RoutineEmailSettingsService.ts +73 -0
  55. package/Server/Services/RumSessionReplayViewService.ts +104 -24
  56. package/Server/Services/ScheduledMaintenanceCustomFieldService.ts +98 -0
  57. package/Server/Services/ScheduledMaintenanceService.ts +32 -0
  58. package/Server/Services/TeamMemberService.ts +78 -0
  59. package/Server/Services/TeamPermissionService.ts +235 -3
  60. package/Server/Services/TelemetryIngestionKeyService.ts +722 -19
  61. package/Server/Services/UserNotificationRuleService.ts +76 -25
  62. package/Server/Services/UserNotificationSettingService.ts +34 -6
  63. package/Server/Services/UserTelegramService.ts +326 -5
  64. package/Server/Types/Database/Permissions/ReadPermission.ts +45 -5
  65. package/Server/Types/Database/QueryHelper.ts +2 -0
  66. package/Server/Types/Database/QueryUtil.ts +56 -0
  67. package/Server/Types/Markdown.ts +93 -1
  68. package/Server/Utils/APIKey/AccessPermission.ts +5 -2
  69. package/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.ts +54 -0
  70. package/Server/Utils/CustomField/CustomFieldMappingRegistry.ts +415 -0
  71. package/Server/Utils/CustomField/CustomFieldMappingValidator.ts +335 -0
  72. package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +82 -17
  73. package/Server/Utils/DataSource/EgressGuard.ts +177 -8
  74. package/Server/Utils/EmailRollup/EmailRollupConstants.ts +38 -5
  75. package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +67 -5
  76. package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +2 -2
  77. package/Server/Utils/FrontendEnvironment.ts +40 -0
  78. package/Server/Utils/LogRedaction.ts +20 -0
  79. package/Server/Utils/Logger.ts +11 -0
  80. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +394 -86
  81. package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +30 -4
  82. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +31 -5
  83. package/Server/Utils/Monitor/MonitorAlert.ts +29 -6
  84. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +312 -52
  85. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +82 -9
  86. package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +16 -7
  87. package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +29 -17
  88. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +107 -48
  89. package/Server/Utils/Monitor/MonitorIncident.ts +22 -6
  90. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +29 -0
  91. package/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.ts +158 -0
  92. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +27 -0
  93. package/Server/Utils/Monitor/SeriesContextEnricher.ts +304 -0
  94. package/Server/Utils/SSRFProtection.ts +217 -10
  95. package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +239 -138
  96. package/Server/Utils/SessionReplay/SessionReplayHealthCounters.ts +305 -0
  97. package/Server/Utils/SessionReplay/SessionReplayReadService.ts +1430 -289
  98. package/Server/Utils/StartServer.ts +2 -17
  99. package/Server/Utils/TelegramVerificationToken.ts +185 -0
  100. package/Server/Utils/Telemetry/EntityRegistry.ts +11 -1
  101. package/Server/Utils/Telemetry/PinServiceName.ts +197 -0
  102. package/Server/Utils/Telemetry/TelemetryEntity.ts +83 -9
  103. package/Server/Utils/Telemetry/TelemetryFanInWriter.ts +38 -16
  104. package/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.ts +92 -0
  105. package/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.ts +217 -0
  106. package/Server/Utils/VM/VMAPI.ts +1 -0
  107. package/Server/Utils/VM/VMRunner.ts +975 -95
  108. package/Tests/App/AdminDashboard/AdminHeaderSmallScreens.test.tsx +202 -0
  109. package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +32 -0
  110. package/Tests/App/Dashboard/AdoptedDeviceDrawer.test.tsx +374 -0
  111. package/Tests/App/Dashboard/DashboardHeaderSmallScreens.test.tsx +404 -0
  112. package/Tests/App/Dashboard/DashboardLabelVariables.test.tsx +580 -0
  113. package/Tests/App/Dashboard/DashboardMonitorLabelVariable.test.tsx +438 -0
  114. package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +5 -2
  115. package/Tests/App/Dashboard/DeviceAttachmentCard.test.tsx +273 -0
  116. package/Tests/App/Dashboard/DiscoveryReviewInventoryRefresh.test.tsx +505 -0
  117. package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +468 -0
  118. package/Tests/App/Dashboard/EntityDetailPanel.test.tsx +163 -0
  119. package/Tests/App/Dashboard/InfrastructureExplorer.test.tsx +401 -0
  120. package/Tests/App/Dashboard/InfrastructureGraph.test.tsx +232 -0
  121. package/Tests/App/Dashboard/InventoryItems.test.tsx +201 -0
  122. package/Tests/App/Dashboard/InventoryTypeAndStatusFacets.test.tsx +798 -0
  123. package/Tests/App/Dashboard/NetworkTopologyLiveView.test.tsx +320 -0
  124. package/Tests/App/Dashboard/NetworkTopologyToolbar.test.tsx +275 -0
  125. package/Tests/App/Dashboard/OnCallCalendarFeedEmptyState.test.tsx +975 -0
  126. package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +63 -0
  127. package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +626 -0
  128. package/Tests/App/Dashboard/TopologyDataLoading.test.tsx +348 -0
  129. package/Tests/App/Dashboard/TopologyPageNavigation.test.tsx +331 -0
  130. package/Tests/App/Dashboard/UserSettingsEmailPreferences.test.tsx +603 -0
  131. package/Tests/App/Dashboard/UserSettingsNotificationSettings.test.tsx +324 -0
  132. package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +13 -4
  133. package/Tests/App/StatusPage/StatusPageLastUpdated.test.tsx +263 -0
  134. package/Tests/App/StatusPage/StatusPageOidcOrigin.test.tsx +223 -0
  135. package/Tests/App/StatusPage/StatusPageOverviewLiveAndSearch.test.tsx +753 -0
  136. package/Tests/App/StatusPage/StatusPageResourceSearchBox.test.tsx +224 -0
  137. package/Tests/Models/AnalyticsModels/RumSessionReplayColumns.test.ts +262 -0
  138. package/Tests/Models/CustomFieldMappingColumns.test.ts +166 -0
  139. package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +20 -6
  140. package/Tests/Models/InventoryItemStatus.test.ts +147 -0
  141. package/Tests/Models/NetworkDeviceMacAddressColumn.test.ts +294 -0
  142. package/Tests/ResponsiveVisibility.test.ts +115 -0
  143. package/Tests/ResponsiveVisibility.ts +183 -0
  144. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +129 -0
  145. package/Tests/Server/API/SessionReplayAPI.test.ts +1940 -216
  146. package/Tests/Server/API/UserNotificationSettingAPI.test.ts +186 -0
  147. package/Tests/Server/API/UserTelegramAPISecurity.test.ts +231 -0
  148. package/Tests/Server/EnvironmentConfigFrontendSecurity.test.ts +234 -0
  149. package/Tests/Server/EnvironmentConfigValkey.test.ts +227 -0
  150. package/Tests/Server/Infrastructure/Postgres/AddMacAddressToNetworkDeviceMigration.test.ts +365 -0
  151. package/Tests/Server/Infrastructure/Postgres/CustomFieldValueMappingMigration.test.ts +241 -0
  152. package/Tests/Server/Infrastructure/Postgres/InventoryItemArchiveMigration.test.ts +41 -0
  153. package/Tests/Server/Infrastructure/Postgres/SessionReplayRecordEverySessionByDefaultMigration.test.ts +169 -0
  154. package/Tests/Server/Infrastructure/QueueWorkerTimeout.test.ts +210 -0
  155. package/Tests/Server/Infrastructure/TelemetryExporterDeploymentConfig.test.ts +130 -0
  156. package/Tests/Server/Infrastructure/ValkeyDeploymentConfig.test.ts +265 -0
  157. package/Tests/Server/Middleware/HttpMetricsMiddleware.test.ts +382 -0
  158. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +4 -1
  159. package/Tests/Server/Middleware/SCIMAuthorization.test.ts +525 -0
  160. package/Tests/Server/Middleware/TelemetryIngestBrowserKey.test.ts +1163 -0
  161. package/Tests/Server/Middleware/TelemetryIngestTokenLog.test.ts +5 -3
  162. package/Tests/Server/Services/AddTelemetryIngestionKeyTypeMigration.test.ts +555 -0
  163. package/Tests/Server/Services/ApiKeyPermissionSecurity.test.ts +678 -0
  164. package/Tests/Server/Services/ApiKeyPermissionService.test.ts +276 -28
  165. package/Tests/Server/Services/CustomFieldDropdownOptionsColumnWidth.test.ts +431 -0
  166. package/Tests/Server/Services/CustomFieldMappingService.test.ts +850 -0
  167. package/Tests/Server/Services/DatabaseServiceAggregateBy.test.ts +291 -56
  168. package/Tests/Server/Services/DatabaseServiceSortTiebreaker.test.ts +151 -0
  169. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +32 -0
  170. package/Tests/Server/Services/GlobalConfigService.test.ts +414 -1
  171. package/Tests/Server/Services/InventoryItemManualCreate.test.ts +105 -0
  172. package/Tests/Server/Services/InventoryItemPromotionGate.test.ts +178 -0
  173. package/Tests/Server/Services/MetricRawEntityKeyPrune.test.ts +592 -0
  174. package/Tests/Server/Services/MonitorTemplateServiceCustomFieldSync.test.ts +502 -0
  175. package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +1351 -74
  176. package/Tests/Server/Services/NetworkDeviceDiscoveryScanRegistration.test.ts +520 -0
  177. package/Tests/Server/Services/NetworkDeviceMacAddressNormalization.test.ts +572 -0
  178. package/Tests/Server/Services/RoutineEmailSettingsPostgres.test.ts +329 -0
  179. package/Tests/Server/Services/RumSessionReplayViewService.test.ts +267 -0
  180. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +9 -0
  181. package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +9 -0
  182. package/Tests/Server/Services/TeamPrivilegeEscalation.test.ts +834 -0
  183. package/Tests/Server/Services/TelemetryIngestionKeyPolicyResolution.test.ts +814 -0
  184. package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +998 -0
  185. package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +141 -0
  186. package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +18 -10
  187. package/Tests/Server/Services/UserTelegramVerificationSecurity.test.ts +688 -0
  188. package/Tests/Server/Types/Database/InventoryStatusPostgres.test.ts +368 -0
  189. package/Tests/Server/Types/Database/Permissions/ReadBlockPermission.test.ts +261 -14
  190. package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroups.test.ts +169 -0
  191. package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroupsPostgres.test.ts +297 -0
  192. package/Tests/Server/Types/Markdown.test.ts +194 -1
  193. package/Tests/Server/Types/Workflow/Components/IncomingWebhookUtils.test.ts +279 -0
  194. package/Tests/Server/Types/Workflow/Components/TextToJson.test.ts +212 -0
  195. package/Tests/Server/Utils/AI/SRE/Insights/FixRouting.test.ts +497 -0
  196. package/Tests/Server/Utils/AI/Toolbox/Serializer.test.ts +383 -0
  197. package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +7 -3
  198. package/Tests/Server/Utils/AnalyticsDatabase/ClusterConfig.test.ts +315 -0
  199. package/Tests/Server/Utils/CustomField/CustomFieldMappingRegistry.test.ts +436 -0
  200. package/Tests/Server/Utils/CustomField/CustomFieldMappingValidator.test.ts +437 -0
  201. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +214 -0
  202. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +300 -11
  203. package/Tests/Server/Utils/EmailRollup/EmailRollupBurstWindow.test.ts +83 -0
  204. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +2 -2
  205. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerPreferences.test.ts +362 -0
  206. package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +10 -3
  207. package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +77 -1
  208. package/Tests/Server/Utils/EventLoop.test.ts +359 -0
  209. package/Tests/Server/Utils/FrontendEnvironment.test.ts +190 -0
  210. package/Tests/Server/Utils/JsonWebToken.test.ts +30 -0
  211. package/Tests/Server/Utils/LogRedaction.test.ts +26 -0
  212. package/Tests/Server/Utils/LoggerCredentialLeak.test.ts +23 -9
  213. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteria.test.ts +242 -0
  214. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +590 -0
  215. package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +29 -0
  216. package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestHeaderCriteria.test.ts +236 -0
  217. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +30 -6
  218. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +246 -0
  219. package/Tests/Server/Utils/Monitor/MonitorCriteriaEmailEvalLogAgreement.test.ts +280 -0
  220. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +659 -8
  221. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorMetricUnits.test.ts +570 -0
  222. package/Tests/Server/Utils/Monitor/MonitorCriteriaExpectationBuilderUnits.test.ts +30 -5
  223. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageBuilderUnits.test.ts +68 -21
  224. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +36 -19
  225. package/Tests/Server/Utils/Monitor/MonitorTemplateUtilSeriesContext.test.ts +176 -0
  226. package/Tests/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.test.ts +573 -0
  227. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +317 -0
  228. package/Tests/Server/Utils/Monitor/SeriesContextEnricher.test.ts +356 -0
  229. package/Tests/Server/Utils/SSRFProtectionCloudServiceAddresses.test.ts +595 -0
  230. package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +198 -1
  231. package/Tests/Server/Utils/SessionReplay/SessionReplayHealthCounters.test.ts +453 -0
  232. package/Tests/Server/Utils/SessionReplay/SessionReplayReadServiceQueries.test.ts +1378 -0
  233. package/Tests/Server/Utils/SessionReplayOriginAllowListRefactor.test.ts +420 -0
  234. package/Tests/Server/Utils/TelegramVerificationToken.test.ts +253 -0
  235. package/Tests/Server/Utils/Telemetry/ContextSpanProcessor.test.ts +281 -0
  236. package/Tests/Server/Utils/Telemetry/InventoryDuplicateIdentity.test.ts +316 -0
  237. package/Tests/Server/Utils/Telemetry/PinServiceName.test.ts +666 -0
  238. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +111 -8
  239. package/Tests/Server/Utils/Telemetry/TelemetryFanInWriterCapacity.test.ts +458 -0
  240. package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.test.ts +424 -0
  241. package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.test.ts +528 -0
  242. package/Tests/Server/Utils/TelemetryExporterEnvironment.test.ts +56 -0
  243. package/Tests/Server/Utils/VM/VMRunnerHostBridgeLatency.test.ts +74 -0
  244. package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +100 -7
  245. package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +1176 -6
  246. package/Tests/Types/CustomField/CustomFieldMappingCatalog.test.ts +220 -0
  247. package/Tests/Types/CustomField/CustomFieldValueMapping.test.ts +348 -0
  248. package/Tests/Types/Database/IncludesAnyOfGroups.test.ts +106 -0
  249. package/Tests/Types/JSONFunctions.test.ts +300 -0
  250. package/Tests/Types/Monitor/CephAlertTemplates.test.ts +422 -53
  251. package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +495 -15
  252. package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +191 -45
  253. package/Tests/Types/Monitor/HostAlertTemplates.test.ts +370 -42
  254. package/Tests/Types/Monitor/IotAlertTemplates.test.ts +375 -20
  255. package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +636 -42
  256. package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +189 -0
  257. package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +95 -14
  258. package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +190 -21
  259. package/Tests/Types/Monitor/ProxmoxAlertTemplates.test.ts +352 -22
  260. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationAlertDebuggability.test.ts +363 -0
  261. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +93 -18
  262. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +259 -0
  263. package/Tests/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.test.ts +476 -0
  264. package/Tests/Types/Monitor/RumAlertTemplates.test.ts +136 -0
  265. package/Tests/Types/Monitor/SeriesContext/SeriesDebugHints.test.ts +661 -0
  266. package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +507 -0
  267. package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +270 -0
  268. package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +38 -10
  269. package/Tests/Types/Monitor/Utils/RecommendationCriteriaAssertions.ts +102 -0
  270. package/Tests/Types/NetworkAutomation/AutoImportRunMerge.test.ts +235 -0
  271. package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +66 -0
  272. package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +309 -1
  273. package/Tests/Types/NotificationSetting/RoutineEmailEvents.test.ts +47 -0
  274. package/Tests/Types/Rum/SessionReplayApiContracts.test.ts +608 -0
  275. package/Tests/Types/Rum/SessionReplayCustomEvents.test.ts +434 -0
  276. package/Tests/Types/Telemetry/InventoryLiveness.test.ts +99 -0
  277. package/Tests/Types/WebsiteRequest.test.ts +285 -3
  278. package/Tests/UI/Components/Charts/ChartBucketIdentity.test.ts +16 -3
  279. package/Tests/UI/Components/Charts/ChartTrailingBucketGap.test.ts +691 -0
  280. package/Tests/UI/Components/ComponentsModal.test.tsx +12 -4
  281. package/Tests/UI/Components/ComponentsModalUsability.test.tsx +518 -0
  282. package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +160 -0
  283. package/Tests/UI/Components/CustomFields/CustomFieldsDetailMapping.test.tsx +324 -0
  284. package/Tests/UI/Components/CustomFields/MapFromCustomFieldInput.test.tsx +176 -0
  285. package/Tests/UI/Components/Graphs/DayUptimeGraph.test.tsx +484 -0
  286. package/Tests/UI/Components/HeaderRightRail.test.tsx +157 -0
  287. package/Tests/UI/Components/IconDropdownItem.test.tsx +102 -0
  288. package/Tests/UI/Components/JSONTablePrototypePollution.test.tsx +117 -0
  289. package/Tests/UI/Components/KeyboardShortcutsModal.test.tsx +214 -0
  290. package/Tests/UI/Components/ModelTable/ModelTableWrapContent.test.tsx +561 -0
  291. package/Tests/UI/Components/MonitorGraphs/UptimeBarDayModal.test.tsx +302 -0
  292. package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +28 -12
  293. package/Tests/UI/Components/ShortcutDialogGuard.test.tsx +74 -0
  294. package/Tests/UI/Components/StatusPage/ResourceGroupSectionAutoExpand.test.tsx +248 -0
  295. package/Tests/UI/Components/TableCellWrapping.test.tsx +625 -0
  296. package/Tests/UI/Components/TableLoadingStates.test.tsx +205 -0
  297. package/Tests/UI/Components/Workflow/NodePlacement.test.ts +148 -0
  298. package/Tests/UI/Components/Workflow/Workflow.test.tsx +981 -0
  299. package/Tests/UI/ConfigBrowserTelemetry.test.ts +70 -0
  300. package/Tests/UI/ReactRouterSingletonBuild.test.ts +133 -0
  301. package/Tests/UI/Rum/ChunkLoader.test.ts +1036 -2
  302. package/Tests/UI/Rum/FidelityNotices.test.ts +187 -0
  303. package/Tests/UI/Rum/InactivityMap.test.ts +341 -0
  304. package/Tests/UI/Rum/PrivacySummaryCard.test.tsx +259 -0
  305. package/Tests/UI/Rum/RecordingHealthCard.test.tsx +855 -0
  306. package/Tests/UI/Rum/RecordingHealthStrip.test.tsx +594 -0
  307. package/Tests/UI/Rum/ReplayCard.test.tsx +451 -0
  308. package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +536 -0
  309. package/Tests/UI/Rum/ReplayEngine.test.ts +2503 -0
  310. package/Tests/UI/Rum/ReplayEngineTypes.test.ts +171 -0
  311. package/Tests/UI/Rum/ReplayHeader.test.tsx +719 -0
  312. package/Tests/UI/Rum/ReplayLink.test.tsx +119 -0
  313. package/Tests/UI/Rum/ReplayPinControl.test.tsx +408 -0
  314. package/Tests/UI/Rum/ReplayPlaybackIntent.test.ts +152 -0
  315. package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +514 -0
  316. package/Tests/UI/Rum/ReplayRail.test.tsx +1296 -0
  317. package/Tests/UI/Rum/ReplayRailDetail.test.tsx +900 -0
  318. package/Tests/UI/Rum/ReplayScrubber.test.tsx +763 -147
  319. package/Tests/UI/Rum/ReplaySignalTypes.test.ts +189 -0
  320. package/Tests/UI/Rum/ReplaySignals.test.ts +1579 -0
  321. package/Tests/UI/Rum/ReplayStage.test.tsx +396 -473
  322. package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +918 -0
  323. package/Tests/UI/Rum/ReplayTimeFormat.test.ts +94 -0
  324. package/Tests/UI/Rum/ReplayTimeline.test.tsx +696 -0
  325. package/Tests/UI/Rum/ReplayUi.test.tsx +559 -0
  326. package/Tests/UI/Rum/SessionReplayEmptyState.test.tsx +499 -0
  327. package/Tests/UI/Rum/SessionReplaySearchBar.test.tsx +346 -0
  328. package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +545 -0
  329. package/Tests/UI/Rum/SessionReplayTable.test.tsx +991 -0
  330. package/Tests/UI/Rum/TargetedCapturePanel.test.tsx +254 -0
  331. package/Tests/UI/Telemetry/BrowserExporterIsolation.test.ts +71 -0
  332. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +5 -0
  333. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +1 -0
  334. package/Tests/UI/Utils/GlobalKeyboardShortcut.test.ts +344 -0
  335. package/Tests/Utils/API.test.ts +308 -0
  336. package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +11 -1
  337. package/Tests/Utils/Dashboard/LabelVariable.test.ts +257 -0
  338. package/Tests/Utils/Dashboard/VariableUrlState.test.ts +144 -14
  339. package/Tests/Utils/HTTPResponseBodyReader.test.ts +323 -0
  340. package/Tests/Utils/MetricUnitUtil.test.ts +81 -0
  341. package/Tests/Utils/Monitor/DeviceMacLearningUtil.test.ts +497 -0
  342. package/Tests/Utils/Monitor/MetricValueFormatter.test.ts +546 -0
  343. package/Tests/Utils/Monitor/MonitorTemplateCustomFieldUtil.test.ts +218 -0
  344. package/Tests/Utils/Monitor/NetworkTopologyEndpointAdoption.test.ts +1755 -0
  345. package/Tests/Utils/NetworkAutomation/AutoImportRunChain.test.ts +320 -0
  346. package/Tests/Utils/NetworkDiscovery/DiscoveryScanStatus.test.ts +117 -0
  347. package/Tests/Utils/Rum/ChunkMath.test.ts +83 -0
  348. package/Tests/Utils/Rum/SessionReplayHealthDiagnosis.test.ts +993 -0
  349. package/Tests/Utils/Rum/SessionReplayStringMap.test.ts +245 -0
  350. package/Tests/Utils/StatusPage/ResourceSearch.test.ts +631 -0
  351. package/Tests/Utils/Telemetry/OriginAllowList.test.ts +633 -0
  352. package/Tests/Utils/Uptime/DayUptimeGraphUtil.test.ts +461 -0
  353. package/Tests/Utils/ValueFormatter.test.ts +148 -0
  354. package/Types/BaseDatabase/IncludesAnyOfGroups.ts +77 -0
  355. package/Types/CustomField/CustomFieldMappingCatalog.ts +161 -0
  356. package/Types/CustomField/CustomFieldMappingSourceResource.ts +19 -0
  357. package/Types/CustomField/CustomFieldValueMapping.ts +288 -0
  358. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
  359. package/Types/Dashboard/DashboardComponents/DashboardMonitorListComponent.ts +1 -0
  360. package/Types/Dashboard/DashboardVariable.ts +8 -0
  361. package/Types/Icon/IconProp.ts +1 -0
  362. package/Types/JSON.ts +4 -0
  363. package/Types/JSONFunctions.ts +205 -43
  364. package/Types/Monitor/CephAlertTemplates.ts +157 -195
  365. package/Types/Monitor/DockerAlertTemplates.ts +338 -128
  366. package/Types/Monitor/DockerSwarmAlertTemplates.ts +95 -112
  367. package/Types/Monitor/HostAlertTemplates.ts +302 -130
  368. package/Types/Monitor/IotAlertTemplates.ts +112 -104
  369. package/Types/Monitor/KubernetesAlertTemplates.ts +415 -224
  370. package/Types/Monitor/KubernetesMetricCatalog.ts +23 -19
  371. package/Types/Monitor/PodmanAlertTemplates.ts +116 -163
  372. package/Types/Monitor/ProxmoxAlertTemplates.ts +217 -99
  373. package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +98 -6
  374. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +44 -7
  375. package/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.ts +383 -0
  376. package/Types/Monitor/RumAlertTemplates.ts +46 -7
  377. package/Types/Monitor/SeriesContext/SeriesDebugHints.ts +596 -0
  378. package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +554 -0
  379. package/Types/Monitor/ServiceAlertTemplates.ts +98 -11
  380. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +13 -0
  381. package/Types/Monitor/UptimeHistoryLabels.ts +56 -0
  382. package/Types/NetworkAutomation/RuleRunResult.ts +402 -13
  383. package/Types/NotificationSetting/RoutineEmailEvents.ts +30 -0
  384. package/Types/Rum/SessionReplay.ts +209 -0
  385. package/Types/Rum/SessionReplayApi.ts +722 -0
  386. package/Types/Rum/SessionReplayCaptureTrigger.ts +21 -12
  387. package/Types/Rum/SessionReplayConsentMode.ts +11 -7
  388. package/Types/Rum/SessionReplayCustomEvents.ts +549 -0
  389. package/Types/Rum/SessionReplayHealth.ts +238 -0
  390. package/Types/SerializableObjectDictionary.ts +4 -0
  391. package/Types/Telemetry/InventoryLiveness.ts +56 -0
  392. package/Types/Telemetry/TelemetryIngestSurface.ts +95 -0
  393. package/Types/Telemetry/TelemetryIngestionKeyPolicy.ts +75 -0
  394. package/Types/Telemetry/TelemetryIngestionKeyType.ts +29 -0
  395. package/Types/WebsiteRequest.ts +85 -3
  396. package/UI/Components/CSVFileUpload/CSVFileUpload.tsx +9 -2
  397. package/UI/Components/Charts/Area/AreaChart.tsx +13 -2
  398. package/UI/Components/Charts/Bar/BarChart.tsx +6 -2
  399. package/UI/Components/Charts/Line/LineChart.tsx +13 -2
  400. package/UI/Components/Charts/Types/XAxis/XAxis.ts +29 -0
  401. package/UI/Components/Charts/Utils/DataPoint.ts +22 -3
  402. package/UI/Components/Charts/Utils/TimeAnnotation.ts +76 -9
  403. package/UI/Components/Charts/Utils/XAxis.ts +217 -0
  404. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +189 -46
  405. package/UI/Components/CustomFields/MapFromCustomFieldInput.tsx +216 -0
  406. package/UI/Components/Dashboard/DashboardVariableControl.tsx +285 -0
  407. package/UI/Components/Graphs/DayUptimeGraph.tsx +173 -8
  408. package/UI/Components/Graphs/UptimeBarTooltip.tsx +22 -278
  409. package/UI/Components/Graphs/UptimeDaySummary.tsx +327 -0
  410. package/UI/Components/Header/Header.tsx +25 -9
  411. package/UI/Components/Header/IconDropdown/IconDropdownItem.tsx +10 -1
  412. package/UI/Components/Header/IconDropdown/IconDropdownMenu.tsx +6 -1
  413. package/UI/Components/Header/ProjectPicker/ProjectPicker.tsx +6 -1
  414. package/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.tsx +6 -1
  415. package/UI/Components/Icon/Icon.tsx +11 -0
  416. package/UI/Components/JSONTable/JSONTable.tsx +2 -2
  417. package/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.tsx +125 -0
  418. package/UI/Components/KeyboardShortcut/Screenshots/README.md +19 -0
  419. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-command-palette.png +0 -0
  420. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog-dark.png +0 -0
  421. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog.png +0 -0
  422. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-help-menu.png +0 -0
  423. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-narrow.png +0 -0
  424. package/UI/Components/ModelTable/Column.ts +15 -0
  425. package/UI/Components/Monitor/SeriesDebugCommandsViewer.tsx +64 -0
  426. package/UI/Components/Monitor/SeriesLabelsViewer.tsx +93 -0
  427. package/UI/Components/MonitorGraphs/Uptime.tsx +14 -2
  428. package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +63 -10
  429. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
  430. package/UI/Components/StatusPage/ResourceGroupSection.tsx +40 -0
  431. package/UI/Components/Table/CellClassName.ts +81 -0
  432. package/UI/Components/Table/TableRow.tsx +20 -14
  433. package/UI/Components/Table/TableSkeletonRows.tsx +9 -9
  434. package/UI/Components/Table/Types/Column.ts +36 -0
  435. package/UI/Components/Tooltip/Tooltip.tsx +11 -1
  436. package/UI/Components/Workflow/ComponentsModal.tsx +60 -39
  437. package/UI/Components/Workflow/NodePlacement.ts +57 -0
  438. package/UI/Components/Workflow/Workflow.tsx +47 -18
  439. package/UI/Config.ts +15 -33
  440. package/UI/Utils/GlobalKeyboardShortcut.ts +208 -0
  441. package/UI/Utils/Telemetry/BrowserTelemetryConfig.ts +28 -0
  442. package/UI/Utils/Telemetry/Telemetry.ts +10 -8
  443. package/UI/esbuild-config.js +6 -0
  444. package/Utils/API.ts +129 -3
  445. package/Utils/Dashboard/Components/DashboardMonitorListComponent.ts +12 -1
  446. package/Utils/Dashboard/LabelVariable.ts +152 -0
  447. package/Utils/Dashboard/VariableUrlState.ts +27 -5
  448. package/Utils/HTTPResponseBodyReader.ts +221 -0
  449. package/Utils/MetricUnitUtil.ts +34 -0
  450. package/Utils/Monitor/DeviceMacLearningUtil.ts +177 -0
  451. package/Utils/Monitor/MetricValueFormatter.ts +342 -0
  452. package/Utils/Monitor/MonitorTemplateCustomFieldUtil.ts +124 -0
  453. package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +7 -2
  454. package/Utils/Monitor/NetworkTopologyUtil.ts +693 -0
  455. package/Utils/NetworkAutomation/AutoImportRunChain.ts +138 -0
  456. package/Utils/NetworkDiscovery/DiscoveryScanStatus.ts +77 -0
  457. package/Utils/Rum/ChunkMath.ts +106 -0
  458. package/Utils/Rum/SessionReplayHealth.ts +732 -0
  459. package/Utils/Rum/SessionReplayStringMap.ts +226 -0
  460. package/Utils/Schema/ModelSchema.ts +1 -0
  461. package/Utils/StatusPage/ResourceSearch.ts +290 -0
  462. package/Utils/Telemetry/OriginAllowList.ts +355 -0
  463. package/Utils/Uptime/DayUptimeGraphUtil.ts +205 -0
  464. package/Utils/ValueFormatter.ts +35 -1
  465. package/build/dist/Models/AnalyticsModels/RumSession.js +102 -19
  466. package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -1
  467. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js +11 -9
  468. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js.map +1 -1
  469. package/build/dist/Models/DatabaseModels/AlertCustomField.js +79 -3
  470. package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -1
  471. package/build/dist/Models/DatabaseModels/ApiKeyPermission.js +3 -27
  472. package/build/dist/Models/DatabaseModels/ApiKeyPermission.js.map +1 -1
  473. package/build/dist/Models/DatabaseModels/GlobalConfig.js +12 -12
  474. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  475. package/build/dist/Models/DatabaseModels/IncidentCustomField.js +79 -3
  476. package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
  477. package/build/dist/Models/DatabaseModels/InventoryItem.js +34 -1
  478. package/build/dist/Models/DatabaseModels/InventoryItem.js.map +1 -1
  479. package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js +79 -3
  480. package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js.map +1 -1
  481. package/build/dist/Models/DatabaseModels/MonitorCustomField.js +79 -3
  482. package/build/dist/Models/DatabaseModels/MonitorCustomField.js.map +1 -1
  483. package/build/dist/Models/DatabaseModels/NetworkDevice.js +128 -0
  484. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  485. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js +79 -3
  486. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js.map +1 -1
  487. package/build/dist/Models/DatabaseModels/RumApplication.js +6 -6
  488. package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
  489. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js +79 -3
  490. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js.map +1 -1
  491. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js +79 -3
  492. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js.map +1 -1
  493. package/build/dist/Models/DatabaseModels/TeamCustomField.js +79 -3
  494. package/build/dist/Models/DatabaseModels/TeamCustomField.js.map +1 -1
  495. package/build/dist/Models/DatabaseModels/TeamMember.js +0 -9
  496. package/build/dist/Models/DatabaseModels/TeamMember.js.map +1 -1
  497. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js +79 -3
  498. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js.map +1 -1
  499. package/build/dist/Models/DatabaseModels/TeamPermission.js +3 -24
  500. package/build/dist/Models/DatabaseModels/TeamPermission.js.map +1 -1
  501. package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js +267 -0
  502. package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js.map +1 -1
  503. package/build/dist/Models/DatabaseModels/UserTelegram.js +0 -4
  504. package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -1
  505. package/build/dist/Server/API/TelemetryAPI.js +769 -109
  506. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  507. package/build/dist/Server/API/UserNotificationSettingAPI.js +35 -0
  508. package/build/dist/Server/API/UserNotificationSettingAPI.js.map +1 -0
  509. package/build/dist/Server/API/UserTelegramAPI.js +28 -6
  510. package/build/dist/Server/API/UserTelegramAPI.js.map +1 -1
  511. package/build/dist/Server/EnvironmentConfig.js +73 -14
  512. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  513. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js +60 -0
  514. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js.map +1 -0
  515. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js +53 -0
  516. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js.map +1 -0
  517. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js +82 -0
  518. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js.map +1 -0
  519. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js +46 -0
  520. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js.map +1 -0
  521. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.js +14 -0
  522. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.js.map +1 -0
  523. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  524. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  525. package/build/dist/Server/Infrastructure/QueueWorker.js +19 -7
  526. package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
  527. package/build/dist/Server/Infrastructure/Redis.js +8 -8
  528. package/build/dist/Server/Infrastructure/Redis.js.map +1 -1
  529. package/build/dist/Server/Infrastructure/Semaphore.js +1 -0
  530. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  531. package/build/dist/Server/Infrastructure/Status.js +10 -4
  532. package/build/dist/Server/Infrastructure/Status.js.map +1 -1
  533. package/build/dist/Server/Middleware/TelemetryIngest.js +315 -8
  534. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  535. package/build/dist/Server/Services/AccessTokenService.js +1 -0
  536. package/build/dist/Server/Services/AccessTokenService.js.map +1 -1
  537. package/build/dist/Server/Services/AlertCustomFieldService.js +93 -0
  538. package/build/dist/Server/Services/AlertCustomFieldService.js.map +1 -1
  539. package/build/dist/Server/Services/AlertService.js +34 -0
  540. package/build/dist/Server/Services/AlertService.js.map +1 -1
  541. package/build/dist/Server/Services/ApiKeyPermissionService.js +331 -28
  542. package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
  543. package/build/dist/Server/Services/CustomFieldMappingService.js +614 -0
  544. package/build/dist/Server/Services/CustomFieldMappingService.js.map +1 -0
  545. package/build/dist/Server/Services/DatabaseService.js +58 -13
  546. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  547. package/build/dist/Server/Services/GlobalConfigService.js +133 -0
  548. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  549. package/build/dist/Server/Services/IncidentCustomFieldService.js +93 -0
  550. package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
  551. package/build/dist/Server/Services/IncidentService.js +32 -0
  552. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  553. package/build/dist/Server/Services/InventoryItemService.js +28 -1
  554. package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
  555. package/build/dist/Server/Services/MetricService.js +163 -0
  556. package/build/dist/Server/Services/MetricService.js.map +1 -1
  557. package/build/dist/Server/Services/MonitorService.js +29 -0
  558. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  559. package/build/dist/Server/Services/MonitorTemplateService.js +116 -17
  560. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  561. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +349 -64
  562. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  563. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +65 -0
  564. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  565. package/build/dist/Server/Services/NetworkDeviceService.js +54 -0
  566. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  567. package/build/dist/Server/Services/ProjectService.js +22 -0
  568. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  569. package/build/dist/Server/Services/RoutineEmailSettingsService.js +69 -0
  570. package/build/dist/Server/Services/RoutineEmailSettingsService.js.map +1 -0
  571. package/build/dist/Server/Services/RumSessionReplayViewService.js +86 -24
  572. package/build/dist/Server/Services/RumSessionReplayViewService.js.map +1 -1
  573. package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js +93 -0
  574. package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js.map +1 -1
  575. package/build/dist/Server/Services/ScheduledMaintenanceService.js +29 -0
  576. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  577. package/build/dist/Server/Services/TeamMemberService.js +62 -2
  578. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  579. package/build/dist/Server/Services/TeamPermissionService.js +166 -3
  580. package/build/dist/Server/Services/TeamPermissionService.js.map +1 -1
  581. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +562 -18
  582. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  583. package/build/dist/Server/Services/UserNotificationRuleService.js +60 -25
  584. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  585. package/build/dist/Server/Services/UserNotificationSettingService.js +26 -6
  586. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  587. package/build/dist/Server/Services/UserTelegramService.js +257 -4
  588. package/build/dist/Server/Services/UserTelegramService.js.map +1 -1
  589. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js +29 -4
  590. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js.map +1 -1
  591. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  592. package/build/dist/Server/Types/Database/QueryUtil.js +36 -0
  593. package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
  594. package/build/dist/Server/Types/Markdown.js +75 -0
  595. package/build/dist/Server/Types/Markdown.js.map +1 -1
  596. package/build/dist/Server/Utils/APIKey/AccessPermission.js +2 -2
  597. package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
  598. package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js +27 -0
  599. package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js.map +1 -0
  600. package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js +226 -0
  601. package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js.map +1 -0
  602. package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js +189 -0
  603. package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js.map +1 -0
  604. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +53 -18
  605. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
  606. package/build/dist/Server/Utils/DataSource/EgressGuard.js +121 -7
  607. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
  608. package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +38 -5
  609. package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -1
  610. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +54 -3
  611. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
  612. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +2 -2
  613. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -1
  614. package/build/dist/Server/Utils/FrontendEnvironment.js +33 -0
  615. package/build/dist/Server/Utils/FrontendEnvironment.js.map +1 -0
  616. package/build/dist/Server/Utils/LogRedaction.js +20 -0
  617. package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
  618. package/build/dist/Server/Utils/Logger.js +10 -0
  619. package/build/dist/Server/Utils/Logger.js.map +1 -1
  620. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +323 -81
  621. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  622. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +20 -4
  623. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
  624. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +29 -5
  625. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  626. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +29 -6
  627. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  628. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +254 -48
  629. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  630. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +58 -9
  631. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -1
  632. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +9 -3
  633. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -1
  634. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +26 -12
  635. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -1
  636. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +74 -33
  637. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  638. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +22 -6
  639. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  640. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +22 -0
  641. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  642. package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js +114 -0
  643. package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js.map +1 -0
  644. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +25 -0
  645. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  646. package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js +237 -0
  647. package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js.map +1 -0
  648. package/build/dist/Server/Utils/SSRFProtection.js +136 -9
  649. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  650. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +174 -89
  651. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -1
  652. package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js +223 -0
  653. package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js.map +1 -0
  654. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +945 -164
  655. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -1
  656. package/build/dist/Server/Utils/StartServer.js +3 -14
  657. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  658. package/build/dist/Server/Utils/TelegramVerificationToken.js +129 -0
  659. package/build/dist/Server/Utils/TelegramVerificationToken.js.map +1 -0
  660. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +9 -1
  661. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  662. package/build/dist/Server/Utils/Telemetry/PinServiceName.js +163 -0
  663. package/build/dist/Server/Utils/Telemetry/PinServiceName.js.map +1 -0
  664. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +70 -13
  665. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  666. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js +28 -15
  667. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js.map +1 -1
  668. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js +64 -0
  669. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js.map +1 -0
  670. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js +171 -0
  671. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js.map +1 -0
  672. package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
  673. package/build/dist/Server/Utils/VM/VMRunner.js +780 -69
  674. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  675. package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js +54 -0
  676. package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js.map +1 -0
  677. package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js +60 -0
  678. package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js.map +1 -0
  679. package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js +20 -0
  680. package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js.map +1 -0
  681. package/build/dist/Types/CustomField/CustomFieldValueMapping.js +141 -0
  682. package/build/dist/Types/CustomField/CustomFieldValueMapping.js.map +1 -0
  683. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  684. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  685. package/build/dist/Types/Dashboard/DashboardVariable.js +1 -0
  686. package/build/dist/Types/Dashboard/DashboardVariable.js.map +1 -1
  687. package/build/dist/Types/Icon/IconProp.js +1 -0
  688. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  689. package/build/dist/Types/JSON.js +1 -0
  690. package/build/dist/Types/JSON.js.map +1 -1
  691. package/build/dist/Types/JSONFunctions.js +131 -37
  692. package/build/dist/Types/JSONFunctions.js.map +1 -1
  693. package/build/dist/Types/Monitor/CephAlertTemplates.js +130 -171
  694. package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -1
  695. package/build/dist/Types/Monitor/DockerAlertTemplates.js +286 -121
  696. package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
  697. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +84 -105
  698. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -1
  699. package/build/dist/Types/Monitor/HostAlertTemplates.js +250 -122
  700. package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
  701. package/build/dist/Types/Monitor/IotAlertTemplates.js +81 -81
  702. package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -1
  703. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +375 -215
  704. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  705. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +19 -19
  706. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -1
  707. package/build/dist/Types/Monitor/PodmanAlertTemplates.js +104 -153
  708. package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
  709. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +156 -91
  710. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js.map +1 -1
  711. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +67 -6
  712. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -1
  713. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +38 -7
  714. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
  715. package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js +261 -0
  716. package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js.map +1 -0
  717. package/build/dist/Types/Monitor/RumAlertTemplates.js +46 -7
  718. package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -1
  719. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js +422 -0
  720. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js.map +1 -0
  721. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +441 -0
  722. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -0
  723. package/build/dist/Types/Monitor/ServiceAlertTemplates.js +79 -15
  724. package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -1
  725. package/build/dist/Types/Monitor/UptimeHistoryLabels.js +17 -0
  726. package/build/dist/Types/Monitor/UptimeHistoryLabels.js.map +1 -0
  727. package/build/dist/Types/NetworkAutomation/RuleRunResult.js +291 -6
  728. package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
  729. package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js +29 -0
  730. package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js.map +1 -0
  731. package/build/dist/Types/Rum/SessionReplay.js +117 -0
  732. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  733. package/build/dist/Types/Rum/SessionReplayApi.js +181 -0
  734. package/build/dist/Types/Rum/SessionReplayApi.js.map +1 -0
  735. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js +21 -12
  736. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js.map +1 -1
  737. package/build/dist/Types/Rum/SessionReplayConsentMode.js +11 -7
  738. package/build/dist/Types/Rum/SessionReplayConsentMode.js.map +1 -1
  739. package/build/dist/Types/Rum/SessionReplayCustomEvents.js +172 -0
  740. package/build/dist/Types/Rum/SessionReplayCustomEvents.js.map +1 -0
  741. package/build/dist/Types/Rum/SessionReplayHealth.js +37 -0
  742. package/build/dist/Types/Rum/SessionReplayHealth.js.map +1 -0
  743. package/build/dist/Types/SerializableObjectDictionary.js +4 -0
  744. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  745. package/build/dist/Types/Telemetry/InventoryLiveness.js +37 -0
  746. package/build/dist/Types/Telemetry/InventoryLiveness.js.map +1 -0
  747. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js +85 -0
  748. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js.map +1 -0
  749. package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js +15 -0
  750. package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js.map +1 -0
  751. package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js +30 -0
  752. package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js.map +1 -0
  753. package/build/dist/Types/WebsiteRequest.js +55 -3
  754. package/build/dist/Types/WebsiteRequest.js.map +1 -1
  755. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js +7 -0
  756. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js.map +1 -1
  757. package/build/dist/UI/Components/Charts/Area/AreaChart.js +13 -2
  758. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  759. package/build/dist/UI/Components/Charts/Bar/BarChart.js +6 -2
  760. package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
  761. package/build/dist/UI/Components/Charts/Line/LineChart.js +13 -2
  762. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  763. package/build/dist/UI/Components/Charts/Types/XAxis/XAxis.js.map +1 -1
  764. package/build/dist/UI/Components/Charts/Utils/DataPoint.js +15 -3
  765. package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
  766. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +40 -9
  767. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -1
  768. package/build/dist/UI/Components/Charts/Utils/XAxis.js +186 -0
  769. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
  770. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +89 -8
  771. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  772. package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js +118 -0
  773. package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js.map +1 -0
  774. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js +137 -0
  775. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js.map +1 -0
  776. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +112 -7
  777. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
  778. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +5 -162
  779. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
  780. package/build/dist/UI/Components/Graphs/UptimeDaySummary.js +181 -0
  781. package/build/dist/UI/Components/Graphs/UptimeDaySummary.js.map +1 -0
  782. package/build/dist/UI/Components/Header/Header.js +2 -3
  783. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  784. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js +2 -1
  785. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js.map +1 -1
  786. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js +7 -1
  787. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js.map +1 -1
  788. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js +7 -1
  789. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js.map +1 -1
  790. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js +7 -1
  791. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js.map +1 -1
  792. package/build/dist/UI/Components/Icon/Icon.js +5 -0
  793. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  794. package/build/dist/UI/Components/JSONTable/JSONTable.js +2 -2
  795. package/build/dist/UI/Components/JSONTable/JSONTable.js.map +1 -1
  796. package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js +35 -0
  797. package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js.map +1 -0
  798. package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js +34 -0
  799. package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js.map +1 -0
  800. package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js +49 -0
  801. package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js.map +1 -0
  802. package/build/dist/UI/Components/MonitorGraphs/Uptime.js +1 -1
  803. package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
  804. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +32 -6
  805. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
  806. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +38 -0
  807. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  808. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js +22 -1
  809. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js.map +1 -1
  810. package/build/dist/UI/Components/Table/CellClassName.js +55 -0
  811. package/build/dist/UI/Components/Table/CellClassName.js.map +1 -0
  812. package/build/dist/UI/Components/Table/TableRow.js +16 -13
  813. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  814. package/build/dist/UI/Components/Table/TableSkeletonRows.js +9 -8
  815. package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -1
  816. package/build/dist/UI/Components/Tooltip/Tooltip.js +25 -1
  817. package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
  818. package/build/dist/UI/Components/Workflow/ComponentsModal.js +47 -30
  819. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  820. package/build/dist/UI/Components/Workflow/NodePlacement.js +37 -0
  821. package/build/dist/UI/Components/Workflow/NodePlacement.js.map +1 -0
  822. package/build/dist/UI/Components/Workflow/Workflow.js +35 -18
  823. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  824. package/build/dist/UI/Config.js +10 -20
  825. package/build/dist/UI/Config.js.map +1 -1
  826. package/build/dist/UI/Utils/GlobalKeyboardShortcut.js +138 -0
  827. package/build/dist/UI/Utils/GlobalKeyboardShortcut.js.map +1 -0
  828. package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js +14 -0
  829. package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js.map +1 -0
  830. package/build/dist/UI/Utils/Telemetry/Telemetry.js +7 -5
  831. package/build/dist/UI/Utils/Telemetry/Telemetry.js.map +1 -1
  832. package/build/dist/Utils/API.js +67 -5
  833. package/build/dist/Utils/API.js.map +1 -1
  834. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js +9 -1
  835. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js.map +1 -1
  836. package/build/dist/Utils/Dashboard/LabelVariable.js +96 -0
  837. package/build/dist/Utils/Dashboard/LabelVariable.js.map +1 -0
  838. package/build/dist/Utils/Dashboard/VariableUrlState.js +19 -4
  839. package/build/dist/Utils/Dashboard/VariableUrlState.js.map +1 -1
  840. package/build/dist/Utils/HTTPResponseBodyReader.js +157 -0
  841. package/build/dist/Utils/HTTPResponseBodyReader.js.map +1 -0
  842. package/build/dist/Utils/MetricUnitUtil.js +26 -0
  843. package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
  844. package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js +112 -0
  845. package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js.map +1 -0
  846. package/build/dist/Utils/Monitor/MetricValueFormatter.js +276 -0
  847. package/build/dist/Utils/Monitor/MetricValueFormatter.js.map +1 -0
  848. package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js +101 -0
  849. package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js.map +1 -0
  850. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +7 -2
  851. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -1
  852. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +484 -0
  853. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  854. package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js +59 -0
  855. package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js.map +1 -0
  856. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js +69 -0
  857. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js.map +1 -0
  858. package/build/dist/Utils/Rum/ChunkMath.js +76 -0
  859. package/build/dist/Utils/Rum/ChunkMath.js.map +1 -1
  860. package/build/dist/Utils/Rum/SessionReplayHealth.js +534 -0
  861. package/build/dist/Utils/Rum/SessionReplayHealth.js.map +1 -0
  862. package/build/dist/Utils/Rum/SessionReplayStringMap.js +165 -0
  863. package/build/dist/Utils/Rum/SessionReplayStringMap.js.map +1 -0
  864. package/build/dist/Utils/Schema/ModelSchema.js +1 -0
  865. package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
  866. package/build/dist/Utils/StatusPage/ResourceSearch.js +200 -0
  867. package/build/dist/Utils/StatusPage/ResourceSearch.js.map +1 -0
  868. package/build/dist/Utils/Telemetry/OriginAllowList.js +299 -0
  869. package/build/dist/Utils/Telemetry/OriginAllowList.js.map +1 -0
  870. package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js +147 -0
  871. package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js.map +1 -0
  872. package/build/dist/Utils/ValueFormatter.js +32 -1
  873. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  874. package/jest.config.json +2 -0
  875. package/package.json +1 -1
  876. package/test-setup.sh +9 -9
  877. package/tsconfig.json +51 -11
@@ -8,13 +8,109 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import NotAuthenticatedException from "../../Types/Exception/NotAuthenticatedException";
11
+ import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
12
+ import TooManyRequestsException from "../../Types/Exception/TooManyRequestsException";
13
+ import { DEFAULT_BROWSER_KEY_REQUESTS_PER_MINUTE, } from "../../Types/Telemetry/TelemetryIngestionKeyPolicy";
14
+ import TelemetryIngestionKeyType from "../../Types/Telemetry/TelemetryIngestionKeyType";
15
+ import { BROWSER_ALLOWED_INGEST_SURFACES, getIngestSurfaceReadableName, } from "../../Types/Telemetry/TelemetryIngestSurface";
16
+ import OriginAllowList from "../../Utils/Telemetry/OriginAllowList";
17
+ import { headerValueToString, } from "../../Server/Utils/Express";
11
18
  import TelemetryIngestionKeyService from "../../Server/Services/TelemetryIngestionKeyService";
12
19
  import Response from "../Utils/Response";
13
20
  import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
14
21
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
15
22
  import SpanUtil from "../Utils/Telemetry/SpanUtil";
16
- export default class TelemetryIngest {
23
+ import TelemetryIngestionKeyRateLimiter, { TelemetryIngestionKeyLimitOutcome, } from "../Utils/Telemetry/TelemetryIngestionKeyRateLimiter";
24
+ /*
25
+ * A Redis outage puts EVERY ingest request on the counter-unavailable path,
26
+ * so an unguarded log line there is one line per ingested request for as long
27
+ * as the outage lasts. The ingest path is the highest-volume surface in the
28
+ * product, so that buries the very incident it is reporting. Same throttle as
29
+ * PublicDashboardRateLimit and the limiter itself.
30
+ */
31
+ const COUNTER_UNAVAILABLE_LOG_INTERVAL_MS = 60 * 1000;
32
+ /*
33
+ * Readable name used when a legacy call site did not name its surface. See
34
+ * isAuthorizedServiceMiddleware for why such call sites are treated as
35
+ * server-only.
36
+ */
37
+ const UNNAMED_SURFACE_READABLE_NAME = "this ingest endpoint";
38
+ /*
39
+ * How many requests per minute this key may make, or null for "no limit".
40
+ *
41
+ * Exported so the branches can be pinned directly in tests without standing
42
+ * up an Express request, a Redis client and a mocked service just to observe
43
+ * an arithmetic decision.
44
+ *
45
+ * The asymmetry in the fallback is the whole backwards-compatibility story of
46
+ * this feature: an existing Server key has requestsPerMinuteLimit NULL and
47
+ * must keep behaving exactly as it did before this shipped, which means no
48
+ * limit and - see the call site - not even a Redis round trip. A Browser key
49
+ * with NULL falls back to the shipped default instead, because a public key
50
+ * with no ceiling is the thing we are trying to stop shipping: "the customer
51
+ * did not configure a limit" cannot be allowed to mean "unlimited" there.
52
+ */
53
+ export const getEffectiveRequestsPerMinuteLimit = (policy) => {
54
+ /*
55
+ * An explicit limit wins for both key types, including a Server key: a
56
+ * customer who deliberately set a ceiling on a server key asked for one
57
+ * and should get it.
58
+ */
59
+ if (typeof policy.requestsPerMinuteLimit === "number" &&
60
+ Number.isFinite(policy.requestsPerMinuteLimit) &&
61
+ policy.requestsPerMinuteLimit > 0) {
62
+ return policy.requestsPerMinuteLimit;
63
+ }
64
+ if (policy.keyType === TelemetryIngestionKeyType.Browser) {
65
+ return DEFAULT_BROWSER_KEY_REQUESTS_PER_MINUTE;
66
+ }
67
+ return null;
68
+ };
69
+ class TelemetryIngest {
70
+ /*
71
+ * Build the ingest guard for one named surface.
72
+ *
73
+ * Every ingest route says which surface it is, and the guard answers
74
+ * "may this key write here?" against BROWSER_ALLOWED_INGEST_SURFACES. That
75
+ * is what stops a key scraped off a public page from being replayed into
76
+ * profile / syslog / Fluent / Pyroscope / source-map / Kubernetes-cost /
77
+ * change-event / security-event ingest, none of which any browser has
78
+ * business calling.
79
+ *
80
+ * This returns a thin closure around a single @CaptureSpan-decorated
81
+ * method rather than being decorated itself: a decorator on a factory would
82
+ * open a span when the route table is built at boot, once, and never again
83
+ * per request. Passing the surface as an argument keeps exactly one
84
+ * decorated frame, on the function that actually handles a request.
85
+ */
86
+ static forSurface(surface) {
87
+ return (req, res, next) => {
88
+ return TelemetryIngest.authorizeIngestRequest(surface, req, res, next);
89
+ };
90
+ }
91
+ /**
92
+ * Backwards-compatible alias for call sites that have not been moved to
93
+ * forSurface().
94
+ *
95
+ * It authorizes with NO named surface, which is treated as SERVER-ONLY: a
96
+ * Browser key is refused here. That direction is deliberate. Routes are
97
+ * being migrated to forSurface() one by one, and a route that is missed
98
+ * must fail CLOSED - a missed browser-capable route is a public credential
99
+ * reaching an endpoint nobody decided it should reach, whereas a missed
100
+ * server-only route is a customer seeing "use a server ingestion key" and
101
+ * filing a bug we can fix in a line. The default must never be the
102
+ * permissive one.
103
+ */
17
104
  static async isAuthorizedServiceMiddleware(req, res, next) {
105
+ return TelemetryIngest.authorizeIngestRequest(null, req, res, next);
106
+ }
107
+ /*
108
+ * The single decorated frame that does the work.
109
+ *
110
+ * `surface` is null only for the legacy alias above, and null means
111
+ * "server-only, unnamed".
112
+ */
113
+ static async authorizeIngestRequest(surface, req, res, next) {
18
114
  try {
19
115
  // check header.
20
116
  let oneuptimeToken = req.headers["x-oneuptime-token"];
@@ -37,8 +133,14 @@ export default class TelemetryIngest {
37
133
  */
38
134
  return Response.sendErrorResponse(req, res, new NotAuthenticatedException("Missing ingestion token. Send your OneUptime telemetry ingestion key in the x-oneuptime-token header."));
39
135
  }
40
- const projectId = await TelemetryIngestionKeyService.getProjectIdFromSecretKey(oneuptimeToken.toString());
41
- if (!projectId) {
136
+ /*
137
+ * One lookup resolves everything the guard needs. The policy is NOT a
138
+ * decision - a disabled or expired key still resolves - so that each
139
+ * refusal below can say precisely why, rather than every failure mode
140
+ * collapsing into an indistinguishable "invalid token".
141
+ */
142
+ const policy = await TelemetryIngestionKeyService.getPolicyFromSecretKey(oneuptimeToken.toString());
143
+ if (!policy) {
42
144
  /*
43
145
  * The token value itself is deliberately NOT logged: ingestion
44
146
  * keys are secrets, and a mistyped-but-nearly-valid token in a
@@ -53,10 +155,140 @@ export default class TelemetryIngest {
53
155
  */
54
156
  return Response.sendErrorResponse(req, res, new NotAuthenticatedException("Invalid ingestion token. Send a valid OneUptime telemetry ingestion key in the x-oneuptime-token header."));
55
157
  }
56
- req.projectId = projectId;
57
- // Tag span with project context for telemetry ingestion observability
158
+ /*
159
+ * Kill switch, checked before anything else about the key, so that
160
+ * turning a leaked key off is the one action guaranteed to stop it
161
+ * regardless of which surface it is hitting or what its allowlist says.
162
+ *
163
+ * 403 rather than 401: the credential was recognised, it is simply not
164
+ * permitted to write. That distinction is what lets a customer tell
165
+ * "I pasted the wrong key" apart from "someone switched my key off",
166
+ * which are very different Tuesday afternoons.
167
+ */
168
+ if (policy.isEnabled === false) {
169
+ return Response.sendErrorResponse(req, res, new NotAuthorizedException("This telemetry ingestion key has been disabled."));
170
+ }
171
+ /*
172
+ * Expiry. 401 here rather than 403 for the same reason as the branches
173
+ * above: OTLP treats 401 as non-retryable, so a collector holding an
174
+ * expired key logs the failure once instead of retry-storming an
175
+ * endpoint that will never accept it again.
176
+ *
177
+ * The exact expiry timestamp is deliberately kept out of the response.
178
+ * The caller has failed to authenticate; the key's configuration is
179
+ * visible in the dashboard to the people actually entitled to it, and
180
+ * there is no reason to hand details of a project's credentials to
181
+ * whoever happens to be holding a dead one.
182
+ */
183
+ if (policy.expiresAt && policy.expiresAt.getTime() <= Date.now()) {
184
+ return Response.sendErrorResponse(req, res, new NotAuthenticatedException("This telemetry ingestion key expired."));
185
+ }
186
+ const isBrowserKey = policy.keyType === TelemetryIngestionKeyType.Browser;
187
+ if (isBrowserKey) {
188
+ /*
189
+ * Surface allowlist. `surface === null` (the legacy alias) is not in
190
+ * the set by construction, so an un-migrated route refuses browser
191
+ * keys - see isAuthorizedServiceMiddleware for why that is the safe
192
+ * direction.
193
+ */
194
+ const isSurfaceAllowedForBrowserKey = surface !== null && BROWSER_ALLOWED_INGEST_SURFACES.has(surface);
195
+ if (!isSurfaceAllowedForBrowserKey) {
196
+ const readableSurfaceName = surface
197
+ ? getIngestSurfaceReadableName(surface)
198
+ : UNNAMED_SURFACE_READABLE_NAME;
199
+ return Response.sendErrorResponse(req, res, new NotAuthorizedException(`A browser ingestion key cannot be used for ${readableSurfaceName}. Use a server ingestion key.`));
200
+ }
201
+ const originRefusalMessage = TelemetryIngest.getOriginRefusalMessage(req, policy);
202
+ if (originRefusalMessage) {
203
+ return Response.sendErrorResponse(req, res, new NotAuthorizedException(originRefusalMessage));
204
+ }
205
+ }
206
+ /*
207
+ * Rate limit.
208
+ *
209
+ * A null effective limit means "no limit", and it short-circuits BEFORE
210
+ * Redis is touched. That is why the limit is computed here rather than
211
+ * left to the limiter: the overwhelmingly common case is an existing
212
+ * Server key with no configured limit, and that path must pay literally
213
+ * nothing - no client lookup, no round trip, no added latency on every
214
+ * OTLP payload the product accepts. This feature is not allowed to make
215
+ * today's ingest slower.
216
+ */
217
+ const effectiveLimitPerMinute = getEffectiveRequestsPerMinuteLimit(policy);
218
+ if (effectiveLimitPerMinute !== null) {
219
+ const decision = await TelemetryIngestionKeyRateLimiter.consume({
220
+ ingestionKeyId: policy.ingestionKeyId,
221
+ limitPerMinute: effectiveLimitPerMinute,
222
+ });
223
+ if (decision.outcome === TelemetryIngestionKeyLimitOutcome.RateLimited) {
224
+ if (decision.retryAfterSeconds) {
225
+ TelemetryIngest.setRetryAfterHeader(res, decision.retryAfterSeconds);
226
+ }
227
+ /*
228
+ * Log only the request that crossed the line. A rejected client
229
+ * keeps knocking by definition, so logging every refusal turns an
230
+ * ingest flood into a second flood in the log pipeline - which is
231
+ * exactly what an operator does not need while trying to work out
232
+ * WHICH key is being abused.
233
+ */
234
+ if (decision.isFirstRejectionInWindow) {
235
+ logger.warn(`TelemetryIngest: ingestion key ${policy.ingestionKeyId.toString()} exceeded its limit of ${effectiveLimitPerMinute} requests per minute`);
236
+ }
237
+ return Response.sendErrorResponse(req, res, new TooManyRequestsException("Too many telemetry requests for this ingestion key. Please retry later."));
238
+ }
239
+ if (decision.outcome ===
240
+ TelemetryIngestionKeyLimitOutcome.CounterUnavailable) {
241
+ /*
242
+ * FAIL OPEN. Redis is unreachable, so no ceiling can be honoured
243
+ * either way, and we admit the request.
244
+ *
245
+ * This limit bounds ABUSE of a key that leaked; it is not a privacy
246
+ * control and not a hard billing quota. Failing closed would stop
247
+ * every paying customer's production telemetry for the length of a
248
+ * Redis blip, and the gap is permanent because dropped spans are
249
+ * never replayed - an infrastructure hiccup would become
250
+ * customer-visible data loss, with the operator's incident
251
+ * dashboards dark at exactly the wrong moment. Failing open hands
252
+ * an attacker who already holds a scraped key an unbounded window
253
+ * for the duration of the blip, while the origin allowlist, the
254
+ * surface allowlist and the kill switch all still apply (they
255
+ * resolve from Postgres, not Redis) and Redis being down is itself
256
+ * alarmed on.
257
+ *
258
+ * SessionReplayRateLimiter makes the opposite call for the opposite
259
+ * reason: a recording is a video of a real person, and accepting an
260
+ * unbounded volume of that is not a recoverable mistake.
261
+ */
262
+ if (TelemetryIngest.shouldLogCounterUnavailable()) {
263
+ logger.warn("TelemetryIngest: ingestion key rate limit counter unavailable, admitting telemetry unthrottled");
264
+ }
265
+ }
266
+ }
267
+ req.projectId = policy.projectId;
268
+ req.ingestionKeyPolicy = policy;
269
+ /*
270
+ * Tag span with project context for telemetry ingestion observability.
271
+ * Key type and surface are here because they are the two dimensions
272
+ * this feature is judged on: "are browser keys actually being used, and
273
+ * where" is unanswerable without them, and they turn "refusal rate by
274
+ * key type" into a one-line query.
275
+ */
58
276
  SpanUtil.addAttributesToCurrentSpan({
59
- projectId: projectId.toString(),
277
+ projectId: policy.projectId.toString(),
278
+ telemetryIngestionKeyType: policy.keyType,
279
+ telemetryIngestSurface: surface ? surface.toString() : "unspecified",
280
+ });
281
+ /*
282
+ * Fire and forget: lastUsedAt is bookkeeping for the dashboard, and the
283
+ * service already throttles the write and swallows its own errors.
284
+ * Awaiting it would put a database write on the hot path of every
285
+ * ingested payload for a column nobody reads in real time. The .catch
286
+ * is belt and braces so a rejection can never surface as an unhandled
287
+ * rejection.
288
+ */
289
+ TelemetryIngestionKeyService.markUsed(policy.ingestionKeyId).catch((err) => {
290
+ logger.warn(`TelemetryIngest: failed to record last used for ingestion key ${policy.ingestionKeyId.toString()}`);
291
+ logger.warn(err);
60
292
  });
61
293
  next();
62
294
  }
@@ -75,11 +307,86 @@ export default class TelemetryIngest {
75
307
  return next(err);
76
308
  }
77
309
  }
310
+ /*
311
+ * Origin enforcement for a Browser key. Returns the refusal message, or
312
+ * null when the request may proceed.
313
+ *
314
+ * NOTE THE DELIBERATE ASYMMETRY WITH SessionReplayGateCache: there an empty
315
+ * allowlist means "any origin", because session replay shipped that way and
316
+ * tightening it would break live installations. Here an empty allowlist
317
+ * REFUSES. A browser key is only safe to publish in a page because the
318
+ * allowlist exists - it is the one thing standing between "a credential
319
+ * anyone can read" and "a credential anyone can use" - so reading "no
320
+ * allowlist" as "any origin" would hand out precisely the unbounded public
321
+ * write key this whole feature exists to eliminate. Empty must fail closed.
322
+ *
323
+ * TelemetryIngestionKeyService refuses to create or update a Browser key
324
+ * with an empty allowlist, so for keys created after this ships the branch
325
+ * is unreachable; it is here for rows that predate it and for anything that
326
+ * writes the table without going through the service.
327
+ *
328
+ * AND BE HONEST ABOUT WHAT THIS BUYS: Origin is a browser-enforced header.
329
+ * A browser will not let page JavaScript forge it, which is what makes it
330
+ * meaningful against the actual threat here - someone lifting a key out of
331
+ * one site's page source and using it from another site. A non-browser
332
+ * client (curl, a script, a proxy) sets any Origin it likes, so this stops
333
+ * casual key reuse and nothing more. What actually contains a determined
334
+ * attacker is the rest of the set: the per-key rate limit bounds the
335
+ * volume, the pinned service.name stops forged data masquerading as backend
336
+ * telemetry, and the kill switch ends it outright.
337
+ */
338
+ static getOriginRefusalMessage(req, policy) {
339
+ const origin = headerValueToString(req.headers["origin"]);
340
+ if (!origin) {
341
+ /*
342
+ * Say the header is missing rather than echoing an empty string into
343
+ * the message - "Origin is not allowed" reads like a bug and tells the
344
+ * customer nothing about what to fix.
345
+ */
346
+ return "This request did not send an Origin header, so it cannot be checked against the allowed origins of this browser ingestion key. Use a server ingestion key for requests that are not sent by a browser.";
347
+ }
348
+ if (policy.allowedOrigins.length === 0 ||
349
+ !OriginAllowList.matches(origin, policy.allowedOrigins)) {
350
+ /*
351
+ * The origin is echoed back on purpose. It is the caller's own value,
352
+ * never a secret, and it is the single most useful thing a customer can
353
+ * be told while debugging an allowlist - the usual cause is a scheme,
354
+ * port or trailing-slash mismatch that stays invisible until the two
355
+ * strings are put side by side.
356
+ */
357
+ return `Origin ${origin} is not allowed for this browser ingestion key.`;
358
+ }
359
+ return null;
360
+ }
361
+ static shouldLogCounterUnavailable() {
362
+ const now = Date.now();
363
+ if (now - TelemetryIngest.counterUnavailableLastLoggedAt <
364
+ COUNTER_UNAVAILABLE_LOG_INTERVAL_MS) {
365
+ return false;
366
+ }
367
+ TelemetryIngest.counterUnavailableLastLoggedAt = now;
368
+ return true;
369
+ }
370
+ /*
371
+ * Reached through a runtime check because the response object is not always
372
+ * a real Express response - unit tests hand this middleware a bare object -
373
+ * and a missing header on a 429 is a far better outcome than a TypeError
374
+ * that turns a deliberate refusal into a 500. Same helper as
375
+ * PublicDashboardRateLimit.
376
+ */
377
+ static setRetryAfterHeader(res, retryAfterSeconds) {
378
+ const setHeader = res["setHeader"];
379
+ if (typeof setHeader === "function") {
380
+ setHeader.call(res, "Retry-After", String(retryAfterSeconds));
381
+ }
382
+ }
78
383
  }
384
+ TelemetryIngest.counterUnavailableLastLoggedAt = 0;
385
+ export default TelemetryIngest;
79
386
  __decorate([
80
387
  CaptureSpan(),
81
388
  __metadata("design:type", Function),
82
- __metadata("design:paramtypes", [Object, Object, Function]),
389
+ __metadata("design:paramtypes", [Object, Object, Object, Function]),
83
390
  __metadata("design:returntype", Promise)
84
- ], TelemetryIngest, "isAuthorizedServiceMiddleware", null);
391
+ ], TelemetryIngest, "authorizeIngestRequest", null);
85
392
  //# sourceMappingURL=TelemetryIngest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TelemetryIngest.js","sourceRoot":"","sources":["../../../../Server/Middleware/TelemetryIngest.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,yBAAyB,MAAM,iDAAiD,CAAC;AAQxF,OAAO,4BAA4B,MAAM,oDAAoD,CAAC;AAC9F,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,MAAM,EAAE,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AAOnD,MAAM,CAAC,OAAO,OAAO,eAAe;IAEd,AAAb,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAC/C,GAAmB,EACnB,GAAoB,EACpB,IAAkB;QAElB,IAAI,CAAC;YACH,gBAAgB;YAEhB,IAAI,cAAc,GAAuB,GAAG,CAAC,OAAO,CAClD,mBAAmB,CACE,CAAC;YAExB,yEAAyE;YACzE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAE3C,CAAC;YAChB,CAAC;YAED,yEAAyE;YACzE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAE3C,CAAC;YAChB,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,CACV,mCAAmC,EACnC,2BAA2B,CAAC,GAAU,CAAC,CACxC,CAAC;gBAEF;;;;;;mBAMG;gBACH,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,yBAAyB,CAC3B,uGAAuG,CACxG,CACF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GACb,MAAM,4BAA4B,CAAC,yBAAyB,CAC1D,cAAc,CAAC,QAAQ,EAAE,CAC1B,CAAC;YAEJ,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf;;;;;mBAKG;gBACH,MAAM,CAAC,KAAK,CACV,wBAAwB,EACxB,2BAA2B,CAAC,GAAU,CAAC,CACxC,CAAC;gBAEF;;;;mBAIG;gBACH,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,yBAAyB,CAC3B,0GAA0G,CAC3G,CACF,CAAC;YACJ,CAAC;YAEA,GAAwB,CAAC,SAAS,GAAG,SAAS,CAAC;YAEhD,sEAAsE;YACtE,QAAQ,CAAC,0BAA0B,CAAC;gBAClC,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;aAChC,CAAC,CAAC;YAEH,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb;;;;;;;;;eASG;YACH,QAAQ,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AAtGqB;IADnB,WAAW,EAAE;;;;0DAsGb"}
1
+ {"version":3,"file":"TelemetryIngest.js","sourceRoot":"","sources":["../../../../Server/Middleware/TelemetryIngest.ts"],"names":[],"mappings":"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"}
@@ -120,6 +120,7 @@ export class AccessTokenService extends BaseService {
120
120
  const teamPermissions = await TeamPermissionService.findBy({
121
121
  query: {
122
122
  teamId: QueryHelper.any(teamIds),
123
+ projectId: projectId,
123
124
  },
124
125
  select: {
125
126
  permission: true,
@@ -1 +1 @@
1
- {"version":3,"file":"AccessTokenService.js","sourceRoot":"","sources":["../../../../Server/Services/AccessTokenService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAIN,MAAM,wBAAwB,CAAC;AAIhC,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;AACxE,OAAO,mBAAmB,MAAM,yCAAyC,CAAC;AAE1E,OAAO,WAAW,MAAM,gCAAgC,CAAC;AAEzD,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAGY,AAAN,KAAK,CAAC,yBAAyB,CAAC,MAAgB;QACrD,MAAM,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;QAErD,0CAA0C;QAC1C,IAAI,WAAW,GAAsB,MAAM,iBAAiB,CAAC,MAAM,CAAC;YAClE,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,qBAAqB,EAAE,IAAI;aAC5B;YACD,MAAM,EAAE;gBACN,SAAS,EAAE,IAAI;aAChB;YACD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAoB,WAAW,CAAC,GAAG,CACjD,CAAC,UAAsB,EAAE,EAAE;YACzB,OAAO,UAAU,CAAC,SAAU,CAAC;QAC/B,CAAC,CACF,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAGY,AAAN,KAAK,CAAC,iCAAiC,CAC5C,MAAgB;QAEhB,0CAA0C;QAC1C,IAAI,WAAW,GAAsB,MAAM,iBAAiB,CAAC,MAAM,CAAC;YAClE,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,qBAAqB,EAAE,IAAI;aAC5B;YACD,MAAM,EAAE;gBACN,SAAS,EAAE,IAAI;aAChB;YACD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QAED,MAAM,UAAU,GAAoB,WAAW,CAAC,GAAG,CACjD,CAAC,UAAsB,EAAE,EAAE;YACzB,OAAO,UAAU,CAAC,SAAU,CAAC;QAC/B,CAAC,CACF,CAAC;QAEF,MAAM,iBAAiB,GAA+B;YACpD,UAAU;YACV,iBAAiB,EAAE;gBACjB,UAAU,CAAC,MAAM;gBACjB,UAAU,CAAC,IAAI;gBACf,UAAU,CAAC,WAAW;aACvB;YACD,KAAK,EAAE,4BAA4B;SACpC,CAAC;QAEF,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAExE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAGY,AAAN,KAAK,CAAC,6BAA6B,CACxC,MAAgB;QAEhB,MAAM,IAAI,GACR,MAAM,kBAAkB,CAAC,sCAAsC,CAAC,MAAM,CAAC,CAAC;QAE1E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,MAAM,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAGY,AAAN,KAAK,CAAC,iCAAiC,CAC5C,MAAgB,EAChB,SAAmB;QAEnB,0CAA0C;QAC1C,MAAM,WAAW,GAAsB,MAAM,iBAAiB,CAAC,MAAM,CAAC;YACpE,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,SAAS;gBACpB,qBAAqB,EAAE,IAAI;aAC5B;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;aACb;YACD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAoB,WAAW,CAAC,GAAG,CAC9C,CAAC,UAAsB,EAAE,EAAE;YACzB,OAAO,UAAU,CAAC,MAAO,CAAC;QAC5B,CAAC,CACF,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wBAAwB;QACxB,MAAM,eAAe,GACnB,MAAM,qBAAqB,CAAC,MAAM,CAAC;YACjC,KAAK,EAAE;gBACL,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;aACjC;YACD,MAAM,EAAE;gBACN,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI;iBACV;gBACD,iBAAiB,EAAE,IAAI;gBACvB,KAAK,EAAE,IAAI;aACZ;YACD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEL,MAAM,eAAe,GAA0B,EAAE,CAAC;QAElD,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC3B,cAAc,CAAC,MAAM,GAAG,EAAE,CAAC;YAC7B,CAAC;YAED,eAAe,CAAC,IAAI,CAAC;gBACnB,UAAU,EAAE,cAAc,CAAC,UAAW;gBACtC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,EAAE;oBACnD,OAAO,KAAK,CAAC,EAAG,CAAC;gBACnB,CAAC,CAAC;gBACF,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;gBACnD,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,KAAK,EAAE,gBAAgB;aACxB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,iBAAiB,GACrB,kBAAkB,CAAC,oCAAoC,CAAC,SAAS,CAAC,CAAC;QAErE,iBAAiB,CAAC,WAAW;YAC3B,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAExD;;;;;;;;WAQG;QACH,MAAM,UAAU,GACd,kBAAkB,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;QAElE,MAAM,WAAW,CAAC,OAAO,CACvB,mBAAmB,CAAC,iBAAiB,EACrC,kBAAkB,CAAC,6BAA6B,CAAC,MAAM,EAAE,SAAS,CAAC,EACnE,UAAU,CACX,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC;IAGY,AAAN,KAAK,CAAC,iDAAiD,CAAC,IAG9D;QACC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEnC,OAAO;YACL,MAAM,EAAE,MAAM;YACd,0BAA0B,EACxB,CAAC,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS;YACjE,0BAA0B,EAAE;gBAC1B,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,6BAA6B,CAC/D,MAAM,EACN,SAAS,CACV,CAAE;aACJ;YACD,QAAQ,EAAE,SAAS;SACpB,CAAC;IACJ,CAAC;IAGY,AAAN,KAAK,CAAC,6BAA6B,CACxC,MAAgB,EAChB,SAAmB;QAEnB,MAAM,IAAI,GACR,MAAM,kBAAkB,CAAC,sCAAsC,CAC7D,MAAM,EACN,SAAS,CACV,CAAC;QAEJ,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,MAAM,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAzOc;IADZ,WAAW,EAAE;;qCACiC,QAAQ;;mEAoCtD;AAGY;IADZ,WAAW,EAAE;;qCAEJ,QAAQ;;2EAyCjB;AAGY;IADZ,WAAW,EAAE;;qCAEJ,QAAQ;;uEAUjB;AAGY;IADZ,WAAW,EAAE;;qCAEJ,QAAQ;QACL,QAAQ;;2EA6FpB;AAGY;IADZ,WAAW,EAAE;;;;2FAmBb;AAGY;IADZ,WAAW,EAAE;;qCAEJ,QAAQ;QACL,QAAQ;;uEAapB;AAGH,eAAe,IAAI,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"AccessTokenService.js","sourceRoot":"","sources":["../../../../Server/Services/AccessTokenService.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,102 @@
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
+ };
1
10
  import DatabaseService from "./DatabaseService";
2
11
  import Model from "../../Models/DatabaseModels/AlertCustomField";
12
+ import { backfillMappedCustomFieldValues } from "../Utils/CustomField/CustomFieldDefinitionMappingHooks";
13
+ import { validateCustomFieldMappingOnCreate, validateCustomFieldMappingOnUpdate, } from "../Utils/CustomField/CustomFieldMappingValidator";
14
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
15
+ /*
16
+ * An alert custom field can take its value from the same field on the alert's
17
+ * monitor instead of being typed in again (OneUptime/oneuptime#3549). These
18
+ * hooks are the two halves of that configuration being saved: refusing a
19
+ * mapping that could never resolve, and filling in the alerts that already
20
+ * exist once one is saved.
21
+ */
3
22
  export class Service extends DatabaseService {
4
23
  constructor() {
5
24
  super(Model);
6
25
  }
26
+ async onBeforeCreate(createBy) {
27
+ await validateCustomFieldMappingOnCreate({
28
+ definitionModelType: Model,
29
+ createBy: createBy,
30
+ });
31
+ return { createBy, carryForward: null };
32
+ }
33
+ async onBeforeUpdate(updateBy) {
34
+ await validateCustomFieldMappingOnUpdate({
35
+ definitionModelType: Model,
36
+ definitionService: this,
37
+ updateBy: updateBy,
38
+ });
39
+ return { updateBy, carryForward: null };
40
+ }
41
+ async onCreateSuccess(_onCreate, createdItem) {
42
+ backfillMappedCustomFieldValues({
43
+ definitionModelType: Model,
44
+ projectId: createdItem.projectId,
45
+ definitionName: "alert custom field",
46
+ });
47
+ return createdItem;
48
+ }
49
+ async onUpdateSuccess(onUpdate, updatedItemIds) {
50
+ if (updatedItemIds.length > 0) {
51
+ backfillMappedCustomFieldValues({
52
+ definitionModelType: Model,
53
+ projectId: await this.getProjectIdForBackfill(onUpdate, updatedItemIds),
54
+ definitionName: "alert custom field",
55
+ });
56
+ }
57
+ return onUpdate;
58
+ }
59
+ /*
60
+ * `props.tenantId` is set on every dashboard write but not on internal
61
+ * root-scoped ones, so fall back to the row itself rather than skipping the
62
+ * backfill for a mapping that was changed by a script.
63
+ */
64
+ async getProjectIdForBackfill(onUpdate, updatedItemIds) {
65
+ const tenantId = onUpdate.updateBy.props.tenantId;
66
+ if (tenantId) {
67
+ return tenantId;
68
+ }
69
+ const item = await this.findOneById({
70
+ id: updatedItemIds[0],
71
+ select: { projectId: true },
72
+ props: { isRoot: true },
73
+ });
74
+ return item === null || item === void 0 ? void 0 : item.projectId;
75
+ }
7
76
  }
77
+ __decorate([
78
+ CaptureSpan(),
79
+ __metadata("design:type", Function),
80
+ __metadata("design:paramtypes", [Object]),
81
+ __metadata("design:returntype", Promise)
82
+ ], Service.prototype, "onBeforeCreate", null);
83
+ __decorate([
84
+ CaptureSpan(),
85
+ __metadata("design:type", Function),
86
+ __metadata("design:paramtypes", [Object]),
87
+ __metadata("design:returntype", Promise)
88
+ ], Service.prototype, "onBeforeUpdate", null);
89
+ __decorate([
90
+ CaptureSpan(),
91
+ __metadata("design:type", Function),
92
+ __metadata("design:paramtypes", [Object, Model]),
93
+ __metadata("design:returntype", Promise)
94
+ ], Service.prototype, "onCreateSuccess", null);
95
+ __decorate([
96
+ CaptureSpan(),
97
+ __metadata("design:type", Function),
98
+ __metadata("design:paramtypes", [Object, Array]),
99
+ __metadata("design:returntype", Promise)
100
+ ], Service.prototype, "onUpdateSuccess", null);
8
101
  export default new Service();
9
102
  //# sourceMappingURL=AlertCustomFieldService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlertCustomFieldService.js","sourceRoot":"","sources":["../../../../Server/Services/AlertCustomFieldService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,8CAA8C,CAAC;AAEjE,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AACD,eAAe,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"AlertCustomFieldService.js","sourceRoot":"","sources":["../../../../Server/Services/AlertCustomFieldService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,8CAA8C,CAAC;AAKjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAC;AACzG,OAAO,EACL,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,kDAAkD,CAAC;AAC1D,OAAO,WAAW,MAAM,gCAAgC,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAGwB,AAAN,KAAK,CAAC,cAAc,CACrC,QAAyB;QAEzB,MAAM,kCAAkC,CAAC;YACvC,mBAAmB,EAAE,KAAK;YAC1B,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAGwB,AAAN,KAAK,CAAC,cAAc,CACrC,QAAyB;QAEzB,MAAM,kCAAkC,CAAC;YACvC,mBAAmB,EAAE,KAAK;YAC1B,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAGwB,AAAN,KAAK,CAAC,eAAe,CACtC,SAA0B,EAC1B,WAAkB;QAElB,+BAA+B,CAAC;YAC9B,mBAAmB,EAAE,KAAK;YAC1B,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,cAAc,EAAE,oBAAoB;SACrC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAGwB,AAAN,KAAK,CAAC,eAAe,CACtC,QAAyB,EACzB,cAA+B;QAE/B,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,+BAA+B,CAAC;gBAC9B,mBAAmB,EAAE,KAAK;gBAC1B,SAAS,EAAE,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,cAAc,CAAC;gBACvE,cAAc,EAAE,oBAAoB;aACrC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,uBAAuB,CACnC,QAAyB,EACzB,cAA+B;QAE/B,MAAM,QAAQ,GAAyB,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAElD,CAAC;QAEd,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAiB,MAAM,IAAI,CAAC,WAAW,CAAC;YAChD,EAAE,EAAE,cAAc,CAAC,CAAC,CAAE;YACtB,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;YAC3B,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QAEH,OAAO,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC;IACzB,CAAC;CACF;AA/E0B;IADxB,WAAW,EAAE;;;;6CAUb;AAGwB;IADxB,WAAW,EAAE;;;;6CAWb;AAGwB;IADxB,WAAW,EAAE;;6CAGC,KAAK;;8CASnB;AAGwB;IADxB,WAAW,EAAE;;6CAGI,KAAK;;8CAWtB;AA4BH,eAAe,IAAI,OAAO,EAAE,CAAC"}
@@ -13,6 +13,8 @@ import AlertMeasurementService from "./AlertMeasurementService";
13
13
  import QueryHelper from "../Types/Database/QueryHelper";
14
14
  import { applyAlertSelfPrivacyFilter } from "../Utils/Alert/AlertPrivacyFilter";
15
15
  import DatabaseService from "./DatabaseService";
16
+ import AlertCustomField from "../../Models/DatabaseModels/AlertCustomField";
17
+ import CustomFieldMappingService from "./CustomFieldMappingService";
16
18
  import AlertOwnerTeamService from "./AlertOwnerTeamService";
17
19
  import AlertOwnerUserService from "./AlertOwnerUserService";
18
20
  import AlertStateService from "./AlertStateService";
@@ -200,6 +202,19 @@ export class Service extends DatabaseService {
200
202
  async onBeforeUpdate(updateBy) {
201
203
  updateBy.query = applyAlertSelfPrivacyFilter(updateBy.query, updateBy.props);
202
204
  await this.validateProjectScopedReferences(updateBy);
205
+ /*
206
+ * Two cases, one call. The Custom Fields modal saves the WHOLE bag back
207
+ * (it has no server-side merge), so a mapped value would be clobbered by
208
+ * any manual edit of a neighbouring field; and re-pointing the alert at
209
+ * another monitor changes what the mapped fields should hold. Both are
210
+ * folded into this payload so the row is written once, with an audit entry,
211
+ * workflow payload and realtime event that carry the value that was
212
+ * actually stored.
213
+ */
214
+ await CustomFieldMappingService.applyMappingsToUpdate({
215
+ definitionModelType: AlertCustomField,
216
+ updateBy: updateBy,
217
+ });
203
218
  return { updateBy, carryForward: null };
204
219
  }
205
220
  /*
@@ -315,6 +330,20 @@ export class Service extends DatabaseService {
315
330
  },
316
331
  ],
317
332
  });
333
+ /*
334
+ * Custom fields configured to inherit from the alert's monitor are stamped
335
+ * here rather than in onCreateSuccess: `customFields` is a column on this
336
+ * very row, and the onCreateSuccess chain below is un-awaited and runs
337
+ * after the API response, so a value written there would be missing from
338
+ * the alert the caller is handed back. Before the counter increment, for
339
+ * the reason given above — although applyMappingsToCreate is written not
340
+ * to throw, because a custom field failing to inherit must never stop an
341
+ * alert from being opened.
342
+ */
343
+ await CustomFieldMappingService.applyMappingsToCreate({
344
+ definitionModelType: AlertCustomField,
345
+ createBy: createBy,
346
+ });
318
347
  const alertCounterResult = await ProjectService.incrementAndGetAlertCounter(projectId);
319
348
  createBy.data.alertNumber = alertCounterResult.counter;
320
349
  createBy.data.alertNumberWithPrefix = alertCounterResult.prefix
@@ -939,6 +968,11 @@ ${alert.remediationNotes || "No remediation notes provided."}
939
968
  }
940
969
  async onUpdateSuccess(onUpdate, updatedItemIds) {
941
970
  var _a;
971
+ CustomFieldMappingService.restampAfterMultiRowUpdate({
972
+ definitionModelType: AlertCustomField,
973
+ updateBy: onUpdate.updateBy,
974
+ updatedItemIds: updatedItemIds,
975
+ });
942
976
  /*
943
977
  * Correcting a timestamp is the whole point of making these fields
944
978
  * editable, so the numbers derived from them have to move. Without this