@oneuptime/common 12.0.13 → 12.0.15

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 (561) hide show
  1. package/Models/DatabaseModels/GlobalOidc.ts +20 -0
  2. package/Models/DatabaseModels/GlobalSso.ts +20 -0
  3. package/Models/DatabaseModels/MarketingConversion.ts +19 -9
  4. package/Models/DatabaseModels/NetworkDeviceLinkRule.ts +46 -0
  5. package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +14 -0
  6. package/Models/DatabaseModels/StatusPage.ts +7 -4
  7. package/Models/DatabaseModels/UserCall.ts +94 -3
  8. package/Models/DatabaseModels/UserEmail.ts +94 -3
  9. package/Models/DatabaseModels/UserIncomingCallNumber.ts +94 -3
  10. package/Models/DatabaseModels/UserPush.ts +37 -0
  11. package/Models/DatabaseModels/UserSMS.ts +94 -3
  12. package/Models/DatabaseModels/UserWhatsApp.ts +93 -2
  13. package/Server/API/BaseAPI.ts +79 -14
  14. package/Server/API/StatusPageAPI.ts +29 -4
  15. package/Server/API/UserCallAPI.ts +53 -45
  16. package/Server/API/UserEmailAPI.ts +53 -44
  17. package/Server/API/UserIncomingCallNumberAPI.ts +48 -38
  18. package/Server/API/UserNotificationMethodAdminAPI.ts +481 -0
  19. package/Server/API/UserPushAPI.ts +126 -2
  20. package/Server/API/UserSmsAPI.ts +53 -44
  21. package/Server/API/UserWhatsAppAPI.ts +53 -50
  22. package/Server/EnvironmentConfig.ts +7 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.ts +154 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.ts +17 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.ts +45 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1787800000000-AddScopeToNetworkDeviceLinkRule.ts +19 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1787900000000-AddRestrictToAttachedProjectsToGlobalSso.ts +40 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  29. package/Server/Middleware/SlackAuthorization.ts +43 -6
  30. package/Server/Middleware/UserAuthorization.ts +236 -26
  31. package/Server/Middleware/VerificationCodeRateLimit.ts +586 -0
  32. package/Server/Middleware/WhatsAppAuthorization.ts +43 -3
  33. package/Server/Services/AnalyticsDatabaseService.ts +169 -0
  34. package/Server/Services/DatabaseService.ts +101 -0
  35. package/Server/Services/GlobalOidcProjectService.ts +126 -1
  36. package/Server/Services/GlobalOidcService.ts +132 -0
  37. package/Server/Services/GlobalSsoProjectService.ts +126 -1
  38. package/Server/Services/GlobalSsoService.ts +132 -0
  39. package/Server/Services/LogAggregationService.ts +5 -0
  40. package/Server/Services/PushNotificationService.ts +127 -12
  41. package/Server/Services/TeamMemberService.ts +53 -13
  42. package/Server/Services/UserCallService.ts +55 -24
  43. package/Server/Services/UserEmailService.ts +83 -17
  44. package/Server/Services/UserIncomingCallNumberService.ts +49 -85
  45. package/Server/Services/UserNotificationMethodAdminService.ts +1527 -0
  46. package/Server/Services/UserNotificationRuleService.ts +26 -0
  47. package/Server/Services/UserPushService.ts +89 -0
  48. package/Server/Services/UserSmsService.ts +50 -17
  49. package/Server/Services/UserWhatsAppService.ts +48 -15
  50. package/Server/Types/Database/QueryHelper.ts +30 -0
  51. package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +59 -0
  52. package/Server/Utils/ChannelVerification.ts +510 -0
  53. package/Server/Utils/CronTab.ts +73 -0
  54. package/Server/Utils/GlobalSsoAuthorization.ts +175 -0
  55. package/Server/Utils/Marketing/ConversionUploadProvider.ts +35 -5
  56. package/Server/Utils/Marketing/Providers/GoogleAds.ts +1 -1
  57. package/Server/Utils/Marketing/Providers/LinkedIn.ts +1 -1
  58. package/Server/Utils/Marketing/Providers/Meta.ts +1 -1
  59. package/Server/Utils/Marketing/Providers/MicrosoftAds.ts +1 -1
  60. package/Server/Utils/Marketing/Providers/Reddit.ts +1 -1
  61. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +48 -33
  62. package/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.ts +35 -30
  63. package/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.ts +33 -28
  64. package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +475 -47
  65. package/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.ts +35 -30
  66. package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +47 -44
  67. package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +33 -28
  68. package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +69 -40
  69. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +35 -29
  70. package/Server/Utils/Monitor/MonitorAlert.ts +24 -21
  71. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +8 -0
  72. package/Server/Utils/Monitor/MonitorIncident.ts +21 -18
  73. package/Server/Utils/Monitor/MonitorResource.ts +161 -21
  74. package/Server/Utils/Monitor/MonitorResourceContext.ts +107 -0
  75. package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +442 -0
  76. package/Server/Utils/Monitor/SeriesResourceLabels.ts +3 -3
  77. package/Server/Utils/Monitor/SeriesResourceLinker.ts +96 -28
  78. package/Server/Utils/StatusPageContentSecurityPolicy.ts +56 -0
  79. package/Server/Utils/StatusPageCustomizationAccess.ts +117 -0
  80. package/Server/Utils/TotpAuth.ts +137 -9
  81. package/Server/Utils/UserRegistrationToken.ts +182 -0
  82. package/Server/Utils/VerificationCode.ts +134 -0
  83. package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +173 -94
  84. package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +1151 -0
  85. package/Tests/App/Dashboard/AdminUserOnCallPages.test.tsx +905 -0
  86. package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +338 -0
  87. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1 -1
  88. package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +28 -0
  89. package/Tests/Models/UserPushCriticalAlertColumn.test.ts +172 -0
  90. package/Tests/Server/API/BaseAPIGetListParallel.test.ts +519 -0
  91. package/Tests/Server/API/NotificationChannelVerificationAPI.test.ts +543 -0
  92. package/Tests/Server/API/StatusPageCustomizationOrigin.test.ts +348 -0
  93. package/Tests/Server/API/UserIncomingCallNumberApi.test.ts +108 -18
  94. package/Tests/Server/API/UserNotificationMethodAdminAPI.test.ts +963 -0
  95. package/Tests/Server/API/UserPushCriticalAlertsApi.test.ts +114 -0
  96. package/Tests/Server/API/UserSmsApi.test.ts +107 -14
  97. package/Tests/Server/API/UserTotpAuthAPI.test.ts +427 -0
  98. package/Tests/Server/Infrastructure/Postgres/FixTotpOtpUrlAlgorithmMigration.test.ts +265 -0
  99. package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +227 -0
  100. package/Tests/Server/Middleware/SlackAuthorization.test.ts +149 -0
  101. package/Tests/Server/Middleware/UserAuthorization.test.ts +27 -13
  102. package/Tests/Server/Middleware/UserAuthorizationGlobalSsoGovernance.test.ts +1455 -0
  103. package/Tests/Server/Middleware/UserAuthorizationSSOProvider.test.ts +91 -2
  104. package/Tests/Server/Middleware/VerificationCodeRateLimit.test.ts +775 -0
  105. package/Tests/Server/Middleware/WhatsAppAuthorization.test.ts +233 -0
  106. package/Tests/Server/Services/AddNetworkDeviceReachabilityColumnsMigration.test.ts +10 -62
  107. package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +33 -13
  108. package/Tests/Server/Services/AnalyticsDatabaseSortKeyBoundary.test.ts +658 -0
  109. package/Tests/Server/Services/CriticalOnCallAlertDelivery.test.ts +458 -0
  110. package/Tests/Server/Services/CriticalPushAlertPayload.test.ts +301 -0
  111. package/Tests/Server/Services/DatabaseServiceAtomicIncrement.test.ts +143 -0
  112. package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +1 -0
  113. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +21 -8
  114. package/Tests/Server/Services/GlobalSsoProviderAuthorization.test.ts +1242 -0
  115. package/Tests/Server/Services/LogAggregationScanMemory.test.ts +421 -0
  116. package/Tests/Server/Services/LogAggregationService.test.ts +2 -2
  117. package/Tests/Server/Services/MonitorResourceProbeAgreementHydration.test.ts +459 -0
  118. package/Tests/Server/Services/MonitorResourceProbeAgreementReuse.test.ts +10 -0
  119. package/Tests/Server/Services/NotificationChannelCodeIssuance.test.ts +401 -0
  120. package/Tests/Server/Services/PushNotificationDeliveryOptions.test.ts +204 -0
  121. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +21 -1
  122. package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +290 -0
  123. package/Tests/Server/Services/UserNotificationMethodAdminService.test.ts +948 -0
  124. package/Tests/Server/Services/UserNotificationRuleExecuteItem.test.ts +1 -0
  125. package/Tests/Server/Services/UserPushCriticalAlertToggle.test.ts +255 -0
  126. package/Tests/Server/Services/UserTotpAuthEnrolment.test.ts +218 -0
  127. package/Tests/Server/TestingUtils/AuthenticatorApp.ts +248 -0
  128. package/Tests/Server/Types/AnalyticsDatabase/AggregateUtilBucketTimestamp.test.ts +416 -0
  129. package/Tests/Server/Types/Database/Permissions/NotificationChannelVerificationColumns.test.ts +135 -0
  130. package/Tests/Server/Types/Database/Permissions/OnCallScheduleRelationSelect.test.ts +504 -0
  131. package/Tests/Server/Types/Database/QueryHelperFindWithSameTextAnyOf.test.ts +91 -0
  132. package/Tests/Server/Types/Database/QueryHelperManyToManyAndEmptyValues.test.ts +551 -0
  133. package/Tests/Server/Types/Database/SelectUtil.test.ts +348 -0
  134. package/Tests/Server/Types/Workflow/Components/JsonToText.test.ts +384 -0
  135. package/Tests/Server/Types/Workflow/Components/MergeJson.test.ts +403 -0
  136. package/Tests/Server/Utils/Browser.test.ts +162 -0
  137. package/Tests/Server/Utils/ChannelVerification.test.ts +689 -0
  138. package/Tests/Server/Utils/CronTab.test.ts +116 -0
  139. package/Tests/Server/Utils/Express.test.ts +371 -0
  140. package/Tests/Server/Utils/GlobalSSOToken.test.ts +581 -0
  141. package/Tests/Server/Utils/GlobalSsoAuthorization.test.ts +1401 -0
  142. package/Tests/Server/Utils/Marketing/AdUploadableConversionTypes.test.ts +254 -0
  143. package/Tests/Server/Utils/Marketing/ConversionUploadProvider.test.ts +1 -1
  144. package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaEvaluateOverTime.test.ts +508 -0
  145. package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaPortTimings.test.ts +30 -9
  146. package/Tests/Server/Utils/Monitor/Criteria/CustomCodeMonitorCriteria.test.ts +707 -0
  147. package/Tests/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.test.ts +698 -0
  148. package/Tests/Server/Utils/Monitor/Criteria/EvaluateOverTime.test.ts +987 -0
  149. package/Tests/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.test.ts +916 -0
  150. package/Tests/Server/Utils/Monitor/Criteria/IncomingEmailBodyCriteria.test.ts +243 -0
  151. package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestBodyCriteria.test.ts +278 -0
  152. package/Tests/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.test.ts +382 -0
  153. package/Tests/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.test.ts +1219 -0
  154. package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +160 -20
  155. package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +13 -8
  156. package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +162 -18
  157. package/Tests/Server/Utils/Monitor/MonitorResourceContext.test.ts +349 -0
  158. package/Tests/Server/Utils/Monitor/MonitorResourceIngestedStepSelection.test.ts +86 -0
  159. package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +690 -0
  160. package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +7 -2
  161. package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +92 -18
  162. package/Tests/Server/Utils/PushNotificationUtilCreators.test.ts +267 -0
  163. package/Tests/Server/Utils/StatusPageContentSecurityPolicy.test.ts +136 -0
  164. package/Tests/Server/Utils/StatusPageCustomizationAccess.test.ts +223 -0
  165. package/Tests/Server/Utils/Telemetry/OneuptimeLabel.test.ts +439 -0
  166. package/Tests/Server/Utils/TotpAuth.test.ts +719 -0
  167. package/Tests/Server/Utils/UserRegistrationToken.test.ts +322 -0
  168. package/Tests/Server/Utils/VerificationCode.test.ts +296 -0
  169. package/Tests/Types/AutoRemediation/AutoRemediationSuggestionStatus.test.ts +192 -0
  170. package/Tests/Types/Call/CallRequest.test.ts +189 -0
  171. package/Tests/Types/Dashboard/DashboardSize.test.ts +226 -0
  172. package/Tests/Types/Incident/IncidentSlaStatus.test.ts +191 -0
  173. package/Tests/Types/Metrics/MetricDashboardMetricType.test.ts +278 -0
  174. package/Tests/Types/Metrics/MetricPipelineRuleType.test.ts +517 -0
  175. package/Tests/Types/Monitor/IncomingMonitorDefaultCriteria.test.ts +470 -0
  176. package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +6 -4
  177. package/Tests/Types/Monitor/MonitorStepConfigHelpers.test.ts +165 -0
  178. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +262 -5
  179. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +1 -1
  180. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +1 -1
  181. package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +905 -0
  182. package/Tests/Types/NetworkDevice/NetworkDeviceLinkRuleScope.test.ts +215 -0
  183. package/Tests/Types/Service/ServiceLanguage.test.ts +255 -0
  184. package/Tests/Types/TextRandomGeneration.test.ts +211 -0
  185. package/Tests/UI/Components/Button.test.tsx +175 -1
  186. package/Tests/UI/Components/CodeBlockLanguages.test.tsx +236 -0
  187. package/Tests/UI/Components/CommandPalette/CommandPalette.test.tsx +568 -0
  188. package/Tests/UI/Components/CommandPalette/CommandPaletteKeyboard.test.tsx +239 -0
  189. package/Tests/UI/Components/CommandPalette/CommandPaletteProviders.test.tsx +400 -0
  190. package/Tests/UI/Components/CommandPalette/PaletteFilter.test.ts +234 -0
  191. package/Tests/UI/Components/CommandPalette/RecentCommands.test.ts +97 -0
  192. package/Tests/UI/Components/CountModelSideMenuItemGuard.test.tsx +198 -0
  193. package/Tests/UI/Components/FeedItemSafeMode.test.tsx +1 -1
  194. package/Tests/UI/Components/Forms/FormSubmitAnalytics.test.tsx +206 -0
  195. package/Tests/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.test.ts +267 -0
  196. package/Tests/UI/Components/List.test.tsx +9 -2
  197. package/Tests/UI/Components/ListLoadingStates.test.tsx +173 -0
  198. package/Tests/UI/Components/MarkdownLazy.test.tsx +113 -0
  199. package/Tests/UI/Components/MarkdownMermaidRetry.test.tsx +110 -0
  200. package/Tests/UI/Components/ModelTable/useCustomFieldColumns.test.tsx +8 -0
  201. package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +692 -0
  202. package/Tests/UI/Components/MoreMenuMotion.test.tsx +118 -0
  203. package/Tests/UI/Components/NavBarCommandKGating.test.tsx +178 -0
  204. package/Tests/UI/Components/OrderedStatesList.test.tsx +19 -2
  205. package/Tests/UI/Components/SideOverMotion.test.tsx +109 -0
  206. package/Tests/UI/Components/Skeleton.test.tsx +71 -0
  207. package/Tests/UI/Components/TableLoadingStates.test.tsx +279 -0
  208. package/Tests/UI/Components/Tabs.test.tsx +24 -0
  209. package/Tests/UI/Components/Toast.test.tsx +130 -7
  210. package/Tests/UI/Components/ToastStacking.test.tsx +198 -0
  211. package/Tests/UI/Utils/AIChatExport/ConversationMarkdown.test.ts +774 -0
  212. package/Tests/UI/Utils/AIChatExport/MarkdownBlocks.test.ts +791 -0
  213. package/Tests/UI/Utils/AIChatExport/MarkdownSafety.test.ts +544 -0
  214. package/Tests/UI/Utils/Dropdown.test.ts +423 -0
  215. package/Tests/UI/Utils/ModelAPITenantHeader.test.ts +122 -0
  216. package/Tests/UI/Utils/ModelListCache.test.ts +338 -0
  217. package/Tests/UI/Utils/ProjectListCacheInvalidation.test.ts +225 -0
  218. package/Tests/Utils/API.test.ts +16 -2
  219. package/Tests/Utils/Analytics.test.ts +187 -0
  220. package/Tests/Utils/Dashboard/Components/DashboardKubernetesResourceListShared.test.ts +347 -0
  221. package/Tests/Utils/Dashboard/Components/DashboardListSharedArgs.test.ts +259 -0
  222. package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +466 -0
  223. package/Tests/Utils/Monitor/MonitorMetricType.test.ts +80 -0
  224. package/Tests/Utils/Monitor/NetworkDeviceLinkRuleUtil.test.ts +1291 -0
  225. package/Tests/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.test.ts +214 -0
  226. package/Tests/Utils/Rum/UrlScrubberSegments.test.ts +362 -0
  227. package/Types/Email/EmailTemplateType.ts +1 -0
  228. package/Types/Marketing/MarketingConversion.ts +12 -0
  229. package/Types/Monitor/CriteriaFilter.ts +9 -0
  230. package/Types/Monitor/MonitorCriteriaInstance.ts +41 -20
  231. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +131 -8
  232. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +48 -8
  233. package/Types/Monitor/ServiceAlertTemplates.ts +1352 -0
  234. package/Types/NetworkDevice/NetworkDeviceLinkRuleScope.ts +51 -0
  235. package/Types/Permission.ts +35 -0
  236. package/Types/PushNotification/AndroidNotificationChannel.ts +26 -0
  237. package/Types/PushNotification/PushNotificationMessage.ts +15 -0
  238. package/Types/PushNotification/PushNotificationRequest.ts +8 -16
  239. package/Types/Service/ServiceLanguage.ts +144 -0
  240. package/Types/Text.ts +111 -19
  241. package/UI/Components/Button/Button.tsx +27 -14
  242. package/UI/Components/CodeBlock/CodeBlock.tsx +54 -7
  243. package/UI/Components/CodeBlock/LanguageRegistry.ts +103 -0
  244. package/UI/Components/CommandPalette/CommandPalette.tsx +790 -0
  245. package/UI/Components/CommandPalette/PaletteFilter.ts +196 -0
  246. package/UI/Components/CommandPalette/PaletteRow.tsx +173 -0
  247. package/UI/Components/CommandPalette/RecentCommands.ts +57 -0
  248. package/UI/Components/CommandPalette/Types.ts +49 -0
  249. package/UI/Components/CommandPalette/UseProviderSearch.ts +129 -0
  250. package/UI/Components/Dropdown/Dropdown.tsx +6 -1
  251. package/UI/Components/Feed/FeedItem.tsx +1 -1
  252. package/UI/Components/FormModal/BasicFormModal.tsx +12 -0
  253. package/UI/Components/Forms/BasicForm.tsx +13 -1
  254. package/UI/Components/Forms/BasicModelForm.tsx +2 -1
  255. package/UI/Components/Forms/ModelForm.tsx +10 -1
  256. package/UI/Components/Forms/Utils/FormAnalyticsName.ts +39 -0
  257. package/UI/Components/List/List.tsx +37 -5
  258. package/UI/Components/List/ListSkeleton.tsx +54 -0
  259. package/UI/Components/Markdown.tsx/LazyMarkdownViewer.tsx +6 -1
  260. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +71 -26
  261. package/UI/Components/Modal/Modal.tsx +2 -2
  262. package/UI/Components/ModelFormModal/ModelFormModal.tsx +6 -1
  263. package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
  264. package/UI/Components/ModelTable/useCustomFieldColumns.ts +11 -5
  265. package/UI/Components/MoreMenu/MoreMenu.tsx +39 -1
  266. package/UI/Components/Navbar/NavBar.tsx +14 -1
  267. package/UI/Components/OrderedStatesList/OrderedStatesList.tsx +50 -5
  268. package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +40 -1
  269. package/UI/Components/SideOver/SideOver.tsx +37 -2
  270. package/UI/Components/Skeleton/Skeleton.tsx +53 -0
  271. package/UI/Components/Table/Table.tsx +74 -44
  272. package/UI/Components/Table/TableSkeletonRows.tsx +141 -0
  273. package/UI/Components/Tabs/Tab.tsx +1 -1
  274. package/UI/Components/Toast/Toast.tsx +118 -53
  275. package/UI/Components/Toast/ToastInit.tsx +82 -32
  276. package/UI/Styles/Theme.css +40 -0
  277. package/UI/Utils/ModelAPI/ModelAPI.ts +20 -10
  278. package/UI/Utils/ModelListCache.ts +188 -0
  279. package/UI/Utils/Project.ts +29 -0
  280. package/Utils/API.ts +6 -1
  281. package/Utils/Analytics.ts +55 -2
  282. package/Utils/Monitor/MonitorMetricType.ts +40 -0
  283. package/Utils/Monitor/NetworkDeviceLinkRuleUtil.ts +587 -37
  284. package/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.ts +115 -0
  285. package/build/dist/Models/DatabaseModels/GlobalOidc.js +21 -0
  286. package/build/dist/Models/DatabaseModels/GlobalOidc.js.map +1 -1
  287. package/build/dist/Models/DatabaseModels/GlobalSso.js +21 -0
  288. package/build/dist/Models/DatabaseModels/GlobalSso.js.map +1 -1
  289. package/build/dist/Models/DatabaseModels/MarketingConversion.js +20 -10
  290. package/build/dist/Models/DatabaseModels/MarketingConversion.js.map +1 -1
  291. package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js +47 -0
  292. package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js.map +1 -1
  293. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +14 -0
  294. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
  295. package/build/dist/Models/DatabaseModels/StatusPage.js +4 -4
  296. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  297. package/build/dist/Models/DatabaseModels/UserCall.js +101 -3
  298. package/build/dist/Models/DatabaseModels/UserCall.js.map +1 -1
  299. package/build/dist/Models/DatabaseModels/UserEmail.js +101 -3
  300. package/build/dist/Models/DatabaseModels/UserEmail.js.map +1 -1
  301. package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js +101 -3
  302. package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js.map +1 -1
  303. package/build/dist/Models/DatabaseModels/UserPush.js +38 -0
  304. package/build/dist/Models/DatabaseModels/UserPush.js.map +1 -1
  305. package/build/dist/Models/DatabaseModels/UserSMS.js +101 -3
  306. package/build/dist/Models/DatabaseModels/UserSMS.js.map +1 -1
  307. package/build/dist/Models/DatabaseModels/UserWhatsApp.js +100 -2
  308. package/build/dist/Models/DatabaseModels/UserWhatsApp.js.map +1 -1
  309. package/build/dist/Server/API/BaseAPI.js +69 -13
  310. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  311. package/build/dist/Server/API/StatusPageAPI.js +25 -4
  312. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  313. package/build/dist/Server/API/UserCallAPI.js +42 -38
  314. package/build/dist/Server/API/UserCallAPI.js.map +1 -1
  315. package/build/dist/Server/API/UserEmailAPI.js +42 -38
  316. package/build/dist/Server/API/UserEmailAPI.js.map +1 -1
  317. package/build/dist/Server/API/UserIncomingCallNumberAPI.js +37 -32
  318. package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -1
  319. package/build/dist/Server/API/UserNotificationMethodAdminAPI.js +341 -0
  320. package/build/dist/Server/API/UserNotificationMethodAdminAPI.js.map +1 -0
  321. package/build/dist/Server/API/UserPushAPI.js +95 -2
  322. package/build/dist/Server/API/UserPushAPI.js.map +1 -1
  323. package/build/dist/Server/API/UserSmsAPI.js +42 -38
  324. package/build/dist/Server/API/UserSmsAPI.js.map +1 -1
  325. package/build/dist/Server/API/UserWhatsAppAPI.js +42 -40
  326. package/build/dist/Server/API/UserWhatsAppAPI.js.map +1 -1
  327. package/build/dist/Server/EnvironmentConfig.js +6 -0
  328. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  329. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js +89 -0
  330. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js.map +1 -0
  331. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js +12 -0
  332. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js.map +1 -0
  333. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js +40 -0
  334. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js.map +1 -0
  335. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787800000000-AddScopeToNetworkDeviceLinkRule.js +12 -0
  336. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787800000000-AddScopeToNetworkDeviceLinkRule.js.map +1 -0
  337. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787900000000-AddRestrictToAttachedProjectsToGlobalSso.js +29 -0
  338. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787900000000-AddRestrictToAttachedProjectsToGlobalSso.js.map +1 -0
  339. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  340. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  341. package/build/dist/Server/Middleware/SlackAuthorization.js +28 -4
  342. package/build/dist/Server/Middleware/SlackAuthorization.js.map +1 -1
  343. package/build/dist/Server/Middleware/UserAuthorization.js +197 -22
  344. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  345. package/build/dist/Server/Middleware/VerificationCodeRateLimit.js +393 -0
  346. package/build/dist/Server/Middleware/VerificationCodeRateLimit.js.map +1 -0
  347. package/build/dist/Server/Middleware/WhatsAppAuthorization.js +32 -2
  348. package/build/dist/Server/Middleware/WhatsAppAuthorization.js.map +1 -1
  349. package/build/dist/Server/Services/AnalyticsDatabaseService.js +136 -0
  350. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  351. package/build/dist/Server/Services/DatabaseService.js +74 -0
  352. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  353. package/build/dist/Server/Services/GlobalOidcProjectService.js +105 -0
  354. package/build/dist/Server/Services/GlobalOidcProjectService.js.map +1 -1
  355. package/build/dist/Server/Services/GlobalOidcService.js +127 -0
  356. package/build/dist/Server/Services/GlobalOidcService.js.map +1 -1
  357. package/build/dist/Server/Services/GlobalSsoProjectService.js +105 -0
  358. package/build/dist/Server/Services/GlobalSsoProjectService.js.map +1 -1
  359. package/build/dist/Server/Services/GlobalSsoService.js +127 -0
  360. package/build/dist/Server/Services/GlobalSsoService.js.map +1 -1
  361. package/build/dist/Server/Services/LogAggregationService.js +5 -0
  362. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  363. package/build/dist/Server/Services/PushNotificationService.js +69 -30
  364. package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
  365. package/build/dist/Server/Services/TeamMemberService.js +43 -7
  366. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  367. package/build/dist/Server/Services/UserCallService.js +54 -22
  368. package/build/dist/Server/Services/UserCallService.js.map +1 -1
  369. package/build/dist/Server/Services/UserEmailService.js +78 -17
  370. package/build/dist/Server/Services/UserEmailService.js.map +1 -1
  371. package/build/dist/Server/Services/UserIncomingCallNumberService.js +45 -74
  372. package/build/dist/Server/Services/UserIncomingCallNumberService.js.map +1 -1
  373. package/build/dist/Server/Services/UserNotificationMethodAdminService.js +1117 -0
  374. package/build/dist/Server/Services/UserNotificationMethodAdminService.js.map +1 -0
  375. package/build/dist/Server/Services/UserNotificationRuleService.js +20 -0
  376. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  377. package/build/dist/Server/Services/UserPushService.js +77 -0
  378. package/build/dist/Server/Services/UserPushService.js.map +1 -1
  379. package/build/dist/Server/Services/UserSmsService.js +50 -17
  380. package/build/dist/Server/Services/UserSmsService.js.map +1 -1
  381. package/build/dist/Server/Services/UserWhatsAppService.js +48 -15
  382. package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
  383. package/build/dist/Server/Types/Database/QueryHelper.js +27 -0
  384. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  385. package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js +46 -0
  386. package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js.map +1 -1
  387. package/build/dist/Server/Utils/ChannelVerification.js +348 -0
  388. package/build/dist/Server/Utils/ChannelVerification.js.map +1 -0
  389. package/build/dist/Server/Utils/CronTab.js +66 -0
  390. package/build/dist/Server/Utils/CronTab.js.map +1 -1
  391. package/build/dist/Server/Utils/GlobalSsoAuthorization.js +112 -0
  392. package/build/dist/Server/Utils/GlobalSsoAuthorization.js.map +1 -0
  393. package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js +17 -1
  394. package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js.map +1 -1
  395. package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js +1 -1
  396. package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js.map +1 -1
  397. package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js +1 -1
  398. package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js.map +1 -1
  399. package/build/dist/Server/Utils/Marketing/Providers/Meta.js +1 -1
  400. package/build/dist/Server/Utils/Marketing/Providers/Meta.js.map +1 -1
  401. package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js +1 -1
  402. package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js.map +1 -1
  403. package/build/dist/Server/Utils/Marketing/Providers/Reddit.js +1 -1
  404. package/build/dist/Server/Utils/Marketing/Providers/Reddit.js.map +1 -1
  405. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +37 -35
  406. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
  407. package/build/dist/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.js +21 -25
  408. package/build/dist/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.js.map +1 -1
  409. package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js +20 -22
  410. package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js.map +1 -1
  411. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +370 -42
  412. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
  413. package/build/dist/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.js +21 -25
  414. package/build/dist/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.js.map +1 -1
  415. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +34 -37
  416. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
  417. package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +21 -25
  418. package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js.map +1 -1
  419. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +64 -52
  420. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
  421. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +25 -29
  422. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  423. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +20 -17
  424. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  425. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +8 -0
  426. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  427. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +17 -14
  428. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  429. package/build/dist/Server/Utils/Monitor/MonitorResource.js +123 -23
  430. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  431. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +95 -0
  432. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -0
  433. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +313 -0
  434. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -0
  435. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +3 -3
  436. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +67 -26
  437. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
  438. package/build/dist/Server/Utils/StatusPageContentSecurityPolicy.js +39 -0
  439. package/build/dist/Server/Utils/StatusPageContentSecurityPolicy.js.map +1 -0
  440. package/build/dist/Server/Utils/StatusPageCustomizationAccess.js +85 -0
  441. package/build/dist/Server/Utils/StatusPageCustomizationAccess.js.map +1 -0
  442. package/build/dist/Server/Utils/TotpAuth.js +127 -8
  443. package/build/dist/Server/Utils/TotpAuth.js.map +1 -1
  444. package/build/dist/Server/Utils/UserRegistrationToken.js +170 -0
  445. package/build/dist/Server/Utils/UserRegistrationToken.js.map +1 -0
  446. package/build/dist/Server/Utils/VerificationCode.js +120 -0
  447. package/build/dist/Server/Utils/VerificationCode.js.map +1 -0
  448. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  449. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  450. package/build/dist/Types/Marketing/MarketingConversion.js +10 -0
  451. package/build/dist/Types/Marketing/MarketingConversion.js.map +1 -1
  452. package/build/dist/Types/Monitor/CriteriaFilter.js +1 -0
  453. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  454. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +42 -21
  455. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  456. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +77 -5
  457. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
  458. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +18 -6
  459. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
  460. package/build/dist/Types/Monitor/ServiceAlertTemplates.js +1028 -0
  461. package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -0
  462. package/build/dist/Types/NetworkDevice/NetworkDeviceLinkRuleScope.js +46 -0
  463. package/build/dist/Types/NetworkDevice/NetworkDeviceLinkRuleScope.js.map +1 -0
  464. package/build/dist/Types/Permission.js +33 -0
  465. package/build/dist/Types/Permission.js.map +1 -1
  466. package/build/dist/Types/PushNotification/AndroidNotificationChannel.js +27 -0
  467. package/build/dist/Types/PushNotification/AndroidNotificationChannel.js.map +1 -0
  468. package/build/dist/Types/Service/ServiceLanguage.js +96 -0
  469. package/build/dist/Types/Service/ServiceLanguage.js.map +1 -0
  470. package/build/dist/Types/Text.js +82 -17
  471. package/build/dist/Types/Text.js.map +1 -1
  472. package/build/dist/UI/Components/Button/Button.js +22 -14
  473. package/build/dist/UI/Components/Button/Button.js.map +1 -1
  474. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +35 -3
  475. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  476. package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js +57 -0
  477. package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js.map +1 -0
  478. package/build/dist/UI/Components/CommandPalette/CommandPalette.js +439 -0
  479. package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -0
  480. package/build/dist/UI/Components/CommandPalette/PaletteFilter.js +135 -0
  481. package/build/dist/UI/Components/CommandPalette/PaletteFilter.js.map +1 -0
  482. package/build/dist/UI/Components/CommandPalette/PaletteRow.js +83 -0
  483. package/build/dist/UI/Components/CommandPalette/PaletteRow.js.map +1 -0
  484. package/build/dist/UI/Components/CommandPalette/RecentCommands.js +47 -0
  485. package/build/dist/UI/Components/CommandPalette/RecentCommands.js.map +1 -0
  486. package/build/dist/UI/Components/CommandPalette/Types.js +2 -0
  487. package/build/dist/UI/Components/CommandPalette/Types.js.map +1 -0
  488. package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js +88 -0
  489. package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js.map +1 -0
  490. package/build/dist/UI/Components/Dropdown/Dropdown.js +6 -1
  491. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  492. package/build/dist/UI/Components/Feed/FeedItem.js +1 -1
  493. package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
  494. package/build/dist/UI/Components/FormModal/BasicFormModal.js +2 -1
  495. package/build/dist/UI/Components/FormModal/BasicFormModal.js.map +1 -1
  496. package/build/dist/UI/Components/Forms/BasicForm.js +10 -1
  497. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  498. package/build/dist/UI/Components/Forms/BasicModelForm.js +2 -1
  499. package/build/dist/UI/Components/Forms/BasicModelForm.js.map +1 -1
  500. package/build/dist/UI/Components/Forms/ModelForm.js +4 -1
  501. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  502. package/build/dist/UI/Components/Forms/Utils/FormAnalyticsName.js +33 -0
  503. package/build/dist/UI/Components/Forms/Utils/FormAnalyticsName.js.map +1 -0
  504. package/build/dist/UI/Components/List/List.js +19 -5
  505. package/build/dist/UI/Components/List/List.js.map +1 -1
  506. package/build/dist/UI/Components/List/ListSkeleton.js +21 -0
  507. package/build/dist/UI/Components/List/ListSkeleton.js.map +1 -0
  508. package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js.map +1 -1
  509. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +52 -25
  510. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  511. package/build/dist/UI/Components/Modal/Modal.js +2 -2
  512. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js +2 -1
  513. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
  514. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
  515. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  516. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +9 -2
  517. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -1
  518. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +32 -1
  519. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
  520. package/build/dist/UI/Components/Navbar/NavBar.js +5 -1
  521. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  522. package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js +29 -5
  523. package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js.map +1 -1
  524. package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +23 -1
  525. package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
  526. package/build/dist/UI/Components/SideOver/SideOver.js +23 -2
  527. package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
  528. package/build/dist/UI/Components/Skeleton/Skeleton.js +23 -0
  529. package/build/dist/UI/Components/Skeleton/Skeleton.js.map +1 -0
  530. package/build/dist/UI/Components/Table/Table.js +35 -24
  531. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  532. package/build/dist/UI/Components/Table/TableSkeletonRows.js +52 -0
  533. package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -0
  534. package/build/dist/UI/Components/Tabs/Tab.js +1 -1
  535. package/build/dist/UI/Components/Tabs/Tab.js.map +1 -1
  536. package/build/dist/UI/Components/Toast/Toast.js +77 -23
  537. package/build/dist/UI/Components/Toast/Toast.js.map +1 -1
  538. package/build/dist/UI/Components/Toast/ToastInit.js +37 -15
  539. package/build/dist/UI/Components/Toast/ToastInit.js.map +1 -1
  540. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +18 -9
  541. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  542. package/build/dist/UI/Utils/ModelListCache.js +126 -0
  543. package/build/dist/UI/Utils/ModelListCache.js.map +1 -0
  544. package/build/dist/UI/Utils/Project.js +24 -1
  545. package/build/dist/UI/Utils/Project.js.map +1 -1
  546. package/build/dist/Utils/API.js +6 -1
  547. package/build/dist/Utils/API.js.map +1 -1
  548. package/build/dist/Utils/Analytics.js +50 -2
  549. package/build/dist/Utils/Analytics.js.map +1 -1
  550. package/build/dist/Utils/Monitor/MonitorMetricType.js +37 -0
  551. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  552. package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js +318 -37
  553. package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js.map +1 -1
  554. package/build/dist/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.js +87 -0
  555. package/build/dist/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.js.map +1 -0
  556. package/jest.config.json +1 -1
  557. package/package.json +2 -3
  558. package/Server/Utils/Monitor/MonitorClusterContext.ts +0 -182
  559. package/Tests/__mocks__/otpauth.js +0 -30
  560. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +0 -141
  561. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +0 -1
@@ -0,0 +1,313 @@
1
+ import MonitorType from "../../../Types/Monitor/MonitorType";
2
+ import ObjectID from "../../../Types/ObjectID";
3
+ import SeriesResourceLabels from "./SeriesResourceLabels";
4
+ export default class MonitorStepResourceIdentity {
5
+ /*
6
+ * Every resource the monitor's configuration names, unioned across its
7
+ * steps and deduped. A monitor with three host steps names three
8
+ * hosts: the creation path does not know which step fired, and the
9
+ * alternative — attributing nothing — is what this module exists to
10
+ * fix.
11
+ */
12
+ static extractResourceRefsFromMonitor(input) {
13
+ var _a, _b;
14
+ const refs = this.emptyRefs();
15
+ const monitorType = input.monitor.monitorType;
16
+ if (!monitorType) {
17
+ return refs;
18
+ }
19
+ const monitorSteps = ((_b = (_a = input.monitor.monitorSteps) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.monitorStepsInstanceArray) || [];
20
+ for (const monitorStep of monitorSteps) {
21
+ this.collectFromStep({
22
+ monitorStep: monitorStep,
23
+ monitorType: monitorType,
24
+ refs: refs,
25
+ });
26
+ }
27
+ return this.dedupeRefs(refs);
28
+ }
29
+ static collectFromStep(input) {
30
+ const stepData = input.monitorStep.data;
31
+ if (!stepData) {
32
+ return;
33
+ }
34
+ /*
35
+ * 1. The declared resource identifier — the field the user picked in
36
+ * the monitor form. Validation makes it required for each of
37
+ * these types (see MonitorStep's validation), so this is the
38
+ * strongest signal available.
39
+ */
40
+ const declared = this.getDeclaredIdentifier({
41
+ stepData: stepData,
42
+ monitorType: input.monitorType,
43
+ });
44
+ /*
45
+ * `typeof` rather than a truthiness check: step JSON is not
46
+ * schema-checked, so an identifier written by the API, a seed or an
47
+ * import can be a number or an object, and `.trim()` on those throws
48
+ * out of the incident/alert creation path.
49
+ */
50
+ if (declared && typeof declared.value === "string") {
51
+ const identifier = declared.value.trim();
52
+ if (identifier.length > 0) {
53
+ input.refs[declared.key].push(identifier);
54
+ }
55
+ }
56
+ /*
57
+ * 2. Telemetry services. Real `Service._id` values written by the
58
+ * monitor form's service picker — a primary key, not a name, so
59
+ * this is the most precise identity in the whole module. Metric
60
+ * monitors carry the field too (RUM recommendation monitors set
61
+ * it), where it is optional.
62
+ */
63
+ for (const serviceId of this.getTelemetryServiceIds({
64
+ stepData: stepData,
65
+ })) {
66
+ input.refs.serviceIds.push(serviceId);
67
+ }
68
+ /*
69
+ * 3. Metric attribute filters. A generic metric monitor names its
70
+ * resource nowhere else: it scopes itself with filters like
71
+ * `oneuptime.service.name = checkout-api`, which is exactly the
72
+ * key map SeriesResourceLabels already owns. Reusing that map
73
+ * means a filter and a group-by on the same attribute resolve to
74
+ * the same row.
75
+ */
76
+ this.collectFromMetricFilters({
77
+ stepData: stepData,
78
+ monitorType: input.monitorType,
79
+ refs: input.refs,
80
+ });
81
+ }
82
+ static getDeclaredIdentifier(input) {
83
+ var _a, _b, _c, _d, _e, _f, _g, _h;
84
+ const stepData = input.stepData;
85
+ switch (input.monitorType) {
86
+ case MonitorType.Host:
87
+ return {
88
+ key: "hostNames",
89
+ value: (_a = stepData.hostMonitor) === null || _a === void 0 ? void 0 : _a.hostIdentifier,
90
+ };
91
+ case MonitorType.Docker:
92
+ return {
93
+ key: "dockerHostNames",
94
+ value: (_b = stepData.dockerMonitor) === null || _b === void 0 ? void 0 : _b.hostIdentifier,
95
+ };
96
+ case MonitorType.Podman:
97
+ return {
98
+ key: "podmanHostNames",
99
+ value: (_c = stepData.podmanMonitor) === null || _c === void 0 ? void 0 : _c.hostIdentifier,
100
+ };
101
+ case MonitorType.Kubernetes:
102
+ return {
103
+ key: "kubernetesClusterNames",
104
+ value: (_d = stepData.kubernetesMonitor) === null || _d === void 0 ? void 0 : _d.clusterIdentifier,
105
+ };
106
+ case MonitorType.Proxmox:
107
+ return {
108
+ key: "proxmoxClusterNames",
109
+ value: (_e = stepData.proxmoxMonitor) === null || _e === void 0 ? void 0 : _e.clusterIdentifier,
110
+ };
111
+ case MonitorType.Ceph:
112
+ return {
113
+ key: "cephClusterNames",
114
+ value: (_f = stepData.cephMonitor) === null || _f === void 0 ? void 0 : _f.clusterIdentifier,
115
+ };
116
+ case MonitorType.DockerSwarm:
117
+ return {
118
+ key: "dockerSwarmClusterNames",
119
+ value: (_g = stepData.dockerSwarmMonitor) === null || _g === void 0 ? void 0 : _g.clusterIdentifier,
120
+ };
121
+ case MonitorType.IoTDevice:
122
+ return {
123
+ key: "iotFleetNames",
124
+ value: (_h = stepData.iotMonitor) === null || _h === void 0 ? void 0 : _h.fleetIdentifier,
125
+ };
126
+ default:
127
+ return null;
128
+ }
129
+ }
130
+ static getTelemetryServiceIds(input) {
131
+ var _a, _b, _c, _d, _e;
132
+ const stepData = input.stepData;
133
+ /*
134
+ * Read from every telemetry sub-config present rather than switching
135
+ * on monitorType: only one of them is ever populated for a given
136
+ * monitor, and this way a step written by an older build (or by the
137
+ * API, a seed, or an import) with a mismatched type still resolves.
138
+ */
139
+ const idLists = [
140
+ (_a = stepData.logMonitor) === null || _a === void 0 ? void 0 : _a.telemetryServiceIds,
141
+ (_b = stepData.traceMonitor) === null || _b === void 0 ? void 0 : _b.telemetryServiceIds,
142
+ (_c = stepData.exceptionMonitor) === null || _c === void 0 ? void 0 : _c.telemetryServiceIds,
143
+ (_d = stepData.profileMonitor) === null || _d === void 0 ? void 0 : _d.telemetryServiceIds,
144
+ (_e = stepData.metricMonitor) === null || _e === void 0 ? void 0 : _e.telemetryServiceIds,
145
+ ];
146
+ const serviceIds = [];
147
+ for (const idList of idLists) {
148
+ /*
149
+ * `Array.isArray` rather than a truthiness check: an unchecked
150
+ * step written by the API or an import can hold an object or a
151
+ * number here, and `for...of` on those throws out of the
152
+ * incident/alert creation path.
153
+ */
154
+ if (!Array.isArray(idList) || idList.length === 0) {
155
+ continue;
156
+ }
157
+ for (const id of idList) {
158
+ /*
159
+ * An entry can be a bare string rather than a rehydrated
160
+ * ObjectID, for the same reason. `String()` covers both; empty
161
+ * values are dropped so they can't widen the lookup, and a
162
+ * non-scalar is dropped rather than stringified into a garbage
163
+ * "[object Object]" lookup key.
164
+ */
165
+ if (id !== null &&
166
+ typeof id === "object" &&
167
+ !(id instanceof ObjectID)) {
168
+ continue;
169
+ }
170
+ const idString = String(id !== null && id !== void 0 ? id : "").trim();
171
+ if (idString.length > 0) {
172
+ serviceIds.push(idString);
173
+ }
174
+ }
175
+ }
176
+ return serviceIds;
177
+ }
178
+ static collectFromMetricFilters(input) {
179
+ const filterAttributes = this.collectMetricFilterAttributes({
180
+ stepData: input.stepData,
181
+ });
182
+ if (Object.keys(filterAttributes).length === 0) {
183
+ return;
184
+ }
185
+ const filterRefs = SeriesResourceLabels.extractResourceRefs(filterAttributes);
186
+ /*
187
+ * `resource.host.name` belongs to Host in the label key map, but on
188
+ * a Docker or Podman monitor the worker writes that same attribute
189
+ * from the step's `hostIdentifier` — which names a DockerHost /
190
+ * PodmanHost row, not a Host row. Honouring the map here would
191
+ * attach the wrong model and surface the event on an unrelated
192
+ * Host's Activity tab, so the declared identifier (collected above,
193
+ * into the right bucket) is the only host identity these two types
194
+ * get.
195
+ */
196
+ const suppressHostRefs = input.monitorType === MonitorType.Docker ||
197
+ input.monitorType === MonitorType.Podman;
198
+ if (suppressHostRefs) {
199
+ filterRefs.hostIds = [];
200
+ filterRefs.hostNames = [];
201
+ }
202
+ this.mergeRefs({ target: input.refs, source: filterRefs });
203
+ }
204
+ /*
205
+ * The attribute filters of every metric query on the step, merged.
206
+ * Each infra monitor type keeps its metric view config under its own
207
+ * key, so read them all — exactly the set MonitorStep's own
208
+ * metric-view-config resolver knows about.
209
+ *
210
+ * Values accumulate into an ARRAY per key rather than overwriting: a
211
+ * step can hold several queries, and two of them filtering
212
+ * `oneuptime.service.name` on different services both name a real
213
+ * resource. Last-write-wins would silently drop one of them.
214
+ * SeriesResourceLabels.collectLabelValues already flattens
215
+ * array-valued labels, so the multi-value shape needs nothing extra
216
+ * downstream.
217
+ */
218
+ static collectMetricFilterAttributes(input) {
219
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
220
+ const stepData = input.stepData;
221
+ const viewConfigs = [
222
+ (_a = stepData.metricMonitor) === null || _a === void 0 ? void 0 : _a.metricViewConfig,
223
+ (_b = stepData.hostMonitor) === null || _b === void 0 ? void 0 : _b.metricViewConfig,
224
+ (_c = stepData.kubernetesMonitor) === null || _c === void 0 ? void 0 : _c.metricViewConfig,
225
+ (_d = stepData.dockerMonitor) === null || _d === void 0 ? void 0 : _d.metricViewConfig,
226
+ (_e = stepData.podmanMonitor) === null || _e === void 0 ? void 0 : _e.metricViewConfig,
227
+ (_f = stepData.proxmoxMonitor) === null || _f === void 0 ? void 0 : _f.metricViewConfig,
228
+ (_g = stepData.cephMonitor) === null || _g === void 0 ? void 0 : _g.metricViewConfig,
229
+ (_h = stepData.dockerSwarmMonitor) === null || _h === void 0 ? void 0 : _h.metricViewConfig,
230
+ (_j = stepData.iotMonitor) === null || _j === void 0 ? void 0 : _j.metricViewConfig,
231
+ ];
232
+ const valuesByKey = new Map();
233
+ for (const viewConfig of viewConfigs) {
234
+ const queryConfigs = Array.isArray(viewConfig === null || viewConfig === void 0 ? void 0 : viewConfig.queryConfigs)
235
+ ? viewConfig.queryConfigs
236
+ : [];
237
+ for (const queryConfig of queryConfigs) {
238
+ const queryAttributes = (_l = (_k = queryConfig === null || queryConfig === void 0 ? void 0 : queryConfig.metricQueryData) === null || _k === void 0 ? void 0 : _k.filterData) === null || _l === void 0 ? void 0 : _l.attributes;
239
+ if (!queryAttributes || typeof queryAttributes !== "object") {
240
+ continue;
241
+ }
242
+ for (const [key, value] of Object.entries(queryAttributes)) {
243
+ /*
244
+ * Only plain string filters identify a resource. A filter can
245
+ * also hold a Search or Includes instance (substring / set
246
+ * matching), and neither is an identity we can resolve to one
247
+ * row — a `Search("prod")` filter names no specific service.
248
+ */
249
+ if (typeof value !== "string" || value.length === 0) {
250
+ continue;
251
+ }
252
+ const existing = valuesByKey.get(key) || [];
253
+ if (!existing.includes(value)) {
254
+ existing.push(value);
255
+ }
256
+ valuesByKey.set(key, existing);
257
+ }
258
+ }
259
+ }
260
+ const attributes = {};
261
+ for (const [key, values] of valuesByKey) {
262
+ /*
263
+ * A single value stays a bare string so the common case reads
264
+ * exactly like a series label; only a genuinely multi-valued
265
+ * filter becomes an array.
266
+ */
267
+ attributes[key] = values.length === 1 ? values[0] : values;
268
+ }
269
+ return attributes;
270
+ }
271
+ static mergeRefs(input) {
272
+ for (const key of Object.keys(input.target)) {
273
+ input.target[key].push(...input.source[key]);
274
+ }
275
+ }
276
+ static dedupeRefs(refs) {
277
+ for (const key of Object.keys(refs)) {
278
+ refs[key] = Array.from(new Set(refs[key]));
279
+ }
280
+ return refs;
281
+ }
282
+ static emptyRefs() {
283
+ return {
284
+ hostIds: [],
285
+ hostNames: [],
286
+ dockerHostIds: [],
287
+ dockerHostNames: [],
288
+ podmanHostIds: [],
289
+ podmanHostNames: [],
290
+ kubernetesClusterIds: [],
291
+ kubernetesClusterNames: [],
292
+ dockerSwarmClusterNames: [],
293
+ proxmoxClusterNames: [],
294
+ cephClusterNames: [],
295
+ iotFleetNames: [],
296
+ serviceIds: [],
297
+ serviceNames: [],
298
+ };
299
+ }
300
+ /*
301
+ * True when the monitor's configuration names nothing at all — the
302
+ * common case for the ~17 monitor types that have no resource
303
+ * identity (Website, API, Ping, Synthetic, ...). Callers use it to
304
+ * skip the lookup entirely so those monitors keep costing zero
305
+ * database round-trips per evaluation.
306
+ */
307
+ static isEmpty(refs) {
308
+ return Object.values(refs).every((values) => {
309
+ return values.length === 0;
310
+ });
311
+ }
312
+ }
313
+ //# sourceMappingURL=MonitorStepResourceIdentity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitorStepResourceIdentity.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorStepResourceIdentity.ts"],"names":[],"mappings":"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"}
@@ -65,7 +65,7 @@ export const PodmanHostNameLabelKeys = [
65
65
  * Like Proxmox/Ceph, the shipped Swarm alert templates group by
66
66
  * datapoint labels (`container.name`), so their series labels do NOT
67
67
  * carry this key; the deterministic cluster link for those monitors
68
- * comes from the monitor step config instead (see MonitorClusterContext).
68
+ * comes from the monitor step config instead (see MonitorResourceContext).
69
69
  * These keys cover user-built monitors that group by the cluster
70
70
  * attribute.
71
71
  */
@@ -93,7 +93,7 @@ export const KubernetesClusterNameLabelKeys = [
93
93
  * datapoint labels (`id`, `ceph_daemon`, `pool_id`), so their series
94
94
  * labels do NOT carry these keys; the deterministic cluster link for
95
95
  * those monitors comes from the monitor step config instead (see
96
- * MonitorClusterContext). These keys cover user-built monitors that
96
+ * MonitorResourceContext). These keys cover user-built monitors that
97
97
  * group by the cluster attribute, exactly like the K8s keys above.
98
98
  */
99
99
  export const ProxmoxClusterNameLabelKeys = [
@@ -113,7 +113,7 @@ export const CephClusterNameLabelKeys = [
113
113
  * alert templates group by the datapoint label `device.id`, so their
114
114
  * series labels do NOT carry these keys; the deterministic fleet link
115
115
  * for those monitors comes from the monitor step config instead (see
116
- * MonitorClusterContext). These keys cover user-built monitors that
116
+ * MonitorResourceContext). These keys cover user-built monitors that
117
117
  * group by the fleet attribute.
118
118
  */
119
119
  export const IoTFleetNameLabelKeys = [
@@ -9,6 +9,7 @@ import ProxmoxCluster from "../../../Models/DatabaseModels/ProxmoxCluster";
9
9
  import Service from "../../../Models/DatabaseModels/Service";
10
10
  import Includes from "../../../Types/BaseDatabase/Includes";
11
11
  import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
12
+ import MonitorType from "../../../Types/Monitor/MonitorType";
12
13
  import CephClusterService from "../../Services/CephClusterService";
13
14
  import DockerHostService from "../../Services/DockerHostService";
14
15
  import DockerSwarmClusterService from "../../Services/DockerSwarmClusterService";
@@ -18,6 +19,7 @@ import KubernetesClusterService from "../../Services/KubernetesClusterService";
18
19
  import PodmanHostService from "../../Services/PodmanHostService";
19
20
  import ProxmoxClusterService from "../../Services/ProxmoxClusterService";
20
21
  import ServiceService from "../../Services/ServiceService";
22
+ import QueryHelper from "../../Types/Database/QueryHelper";
21
23
  import SeriesResourceLabels from "./SeriesResourceLabels";
22
24
  export default class SeriesResourceLinker {
23
25
  /*
@@ -29,6 +31,42 @@ export default class SeriesResourceLinker {
29
31
  */
30
32
  static async resolveResourcesFromSeriesLabels(input) {
31
33
  const refs = SeriesResourceLabels.extractResourceRefs(input.seriesLabels);
34
+ /*
35
+ * On a Docker or Podman monitor, `resource.host.name` names the
36
+ * DockerHost / PodmanHost the containers run on — the agent stamps
37
+ * the container runtime's host under the generic key. The label key
38
+ * map hands that key to Host, which would attach an unrelated Host
39
+ * row and surface the event on that host's Activity tab. The
40
+ * step-config path links the right model instead
41
+ * (MonitorStepResourceIdentity), so drop the host refs here rather
42
+ * than linking a resource the event is not about.
43
+ */
44
+ if (input.monitorType === MonitorType.Docker ||
45
+ input.monitorType === MonitorType.Podman) {
46
+ refs.hostIds = [];
47
+ refs.hostNames = [];
48
+ }
49
+ /*
50
+ * Series labels are ingest-written, so they match the resource
51
+ * rows' identifier columns byte for byte. See resolveResourceIds
52
+ * for why that rules out case-insensitive matching here.
53
+ */
54
+ return this.resolveResourceRefs({
55
+ refs: refs,
56
+ projectId: input.projectId,
57
+ nameMatch: "exact",
58
+ });
59
+ }
60
+ /*
61
+ * The one place that turns identifiers into database ids, shared by
62
+ * the series-label path and the monitor-step-config path
63
+ * (MonitorStepResourceIdentity). Keeping the nine-way lookup table,
64
+ * the project scoping and the `Includes` batching in a single
65
+ * function is what stops the two paths from resolving the same
66
+ * identifier to different rows.
67
+ */
68
+ static async resolveResourceRefs(input) {
69
+ const refs = input.refs;
32
70
  /*
33
71
  * Proxmox / Ceph / Docker Swarm / IoT carry no `oneuptime.*.id`
34
72
  * stamp at ingest — they are addressable by name only — so their
@@ -96,6 +134,7 @@ export default class SeriesResourceLinker {
96
134
  names: spec.names,
97
135
  nameColumn: spec.nameColumn,
98
136
  projectId: input.projectId,
137
+ nameMatch: input.nameMatch,
99
138
  findBy: spec.findBy,
100
139
  });
101
140
  }));
@@ -113,9 +152,10 @@ export default class SeriesResourceLinker {
113
152
  }
114
153
  /*
115
154
  * Resolve the series' resources and MERGE them onto the alert/incident.
116
- * Merging (rather than assigning) matters because attachClusterContext
117
- * writes the same four cluster relations from the monitor's step
118
- * config; whichever runs second must not erase the other's work.
155
+ * Merging (rather than assigning) matters because
156
+ * attachResolvedResources writes the same relations from the
157
+ * monitor's step config; whichever runs second must not erase the
158
+ * other's work.
119
159
  *
120
160
  * Relations the series says nothing about are left untouched —
121
161
  * `undefined`, not `[]` — so an ungrouped event and an event whose
@@ -130,6 +170,7 @@ export default class SeriesResourceLinker {
130
170
  const resolved = await this.resolveResourcesFromSeriesLabels({
131
171
  seriesLabels: input.seriesLabels,
132
172
  projectId: input.projectId,
173
+ monitorType: input.monitorType,
133
174
  });
134
175
  this.mergeResolvedIdsIntoModel({
135
176
  model: input.model,
@@ -137,27 +178,19 @@ export default class SeriesResourceLinker {
137
178
  });
138
179
  }
139
180
  /*
140
- * Attach the cluster ids resolved from the monitor's step config
141
- * (Proxmox / Ceph / Docker Swarm / IoT), merging with — never
142
- * overwriting — anything the series-label path already linked. Both
143
- * paths can resolve the same cluster, so this dedupes by id. Unlike
144
- * the label path this runs for ungrouped events too: those monitor
145
- * types get their cluster identity from the step config alone.
181
+ * Attach the resources resolved from the monitor's own step config
182
+ * (MonitorResourceContext), merging with — never overwriting —
183
+ * anything the series-label path already linked. Both paths can
184
+ * resolve the same resource, so this dedupes by id.
185
+ *
186
+ * Unlike the label path this runs for ungrouped events too, and that
187
+ * is the whole point: an ungrouped monitor has no series labels, so
188
+ * before this existed it linked nothing at all.
146
189
  */
147
- static attachClusterContext(input) {
190
+ static attachResolvedResources(input) {
148
191
  this.mergeResolvedIdsIntoModel({
149
192
  model: input.model,
150
- resolved: {
151
- hostIds: [],
152
- dockerHostIds: [],
153
- podmanHostIds: [],
154
- kubernetesClusterIds: [],
155
- serviceIds: [],
156
- proxmoxClusterIds: input.clusterContext.proxmoxClusterIds,
157
- cephClusterIds: input.clusterContext.cephClusterIds,
158
- dockerSwarmClusterIds: input.clusterContext.dockerSwarmClusterIds,
159
- iotFleetIds: input.clusterContext.iotFleetIds,
160
- },
193
+ resolved: input.resolved,
161
194
  });
162
195
  }
163
196
  static mergeResolvedIdsIntoModel(input) {
@@ -236,10 +269,16 @@ export default class SeriesResourceLinker {
236
269
  * Costs zero round-trips when the series carries neither, which is the
237
270
  * common case for most of the nine types on any given series.
238
271
  *
239
- * Name matching is exact. Every identifier column read here is written
240
- * by ingest from the same attribute the series label carries — host
241
- * identifiers are canonicalized on both sides — so exact matching is
242
- * what keeps a lookup from straying onto a neighbouring row.
272
+ * `nameMatch: "exact"` is for series labels. Every identifier column
273
+ * read here is written by ingest from the same attribute the series
274
+ * label carries — host identifiers are canonicalized on both sides —
275
+ * so exact matching is what keeps a lookup from straying onto a
276
+ * neighbouring row.
277
+ *
278
+ * `nameMatch: "caseInsensitive"` is for monitor step configs, where
279
+ * the identifier was typed by a user and the row's name was stamped
280
+ * by an agent; the two legitimately differ by case. This mirrors what
281
+ * ingest discovery itself does when it keys a row by name.
243
282
  */
244
283
  static async resolveResourceIds(input) {
245
284
  if (input.ids.length === 0 && input.names.length === 0) {
@@ -263,7 +302,9 @@ export default class SeriesResourceLinker {
263
302
  lookups.push(input.findBy({
264
303
  query: {
265
304
  projectId: input.projectId,
266
- [input.nameColumn]: new Includes(input.names),
305
+ [input.nameColumn]: input.nameMatch === "caseInsensitive"
306
+ ? QueryHelper.findWithSameTextAnyOf(input.names)
307
+ : new Includes(input.names),
267
308
  },
268
309
  select: { _id: true },
269
310
  skip: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"SeriesResourceLinker.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/SeriesResourceLinker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SeriesResourceLinker.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/SeriesResourceLinker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export const STATUS_PAGE_CONTENT_SECURITY_POLICY_HEADER_NAME = "Content-Security-Policy";
2
+ /*
3
+ * Fallback status pages share the authenticated application's origin. Custom
4
+ * domains do not, so this policy is deliberately limited to documents served
5
+ * below /status-page on the application host/path.
6
+ *
7
+ * The status-page template currently contains inline script elements for its
8
+ * Tailwind configuration and optional Google Tag Manager bootstrap. Keeping
9
+ * 'unsafe-inline' in script-src lets those elements continue to run, while
10
+ * script-src-attr 'none' uses CSP3's more-specific directive to block inline
11
+ * event handlers such as <img onerror>. Omitting 'unsafe-eval' separately
12
+ * blocks eval/new Function, which is the custom-JavaScript execution sink.
13
+ * HTTPS script sources remain available for Tag Manager and the tags it loads.
14
+ */
15
+ export const STATUS_PAGE_FALLBACK_CONTENT_SECURITY_POLICY = [
16
+ "script-src 'self' 'unsafe-inline' https:",
17
+ "script-src-attr 'none'",
18
+ "object-src 'none'",
19
+ "base-uri 'none'",
20
+ ].join("; ");
21
+ export const isStatusPageFallbackDocumentPath = (path) => {
22
+ const normalizedPath = (path || "").split("?")[0] || "";
23
+ return (normalizedPath === "/status-page" ||
24
+ normalizedPath === "/status-page/" ||
25
+ normalizedPath.startsWith("/status-page/"));
26
+ };
27
+ /**
28
+ * Adds the fallback status page's CSP before its HTML document is rendered.
29
+ * Custom-domain documents (normally served from "/") are intentionally left
30
+ * alone because arbitrary customization remains a supported isolated-origin
31
+ * feature there.
32
+ */
33
+ export default function applyStatusPageContentSecurityPolicy(req, res) {
34
+ if (!isStatusPageFallbackDocumentPath(req.path || "") || res.headersSent) {
35
+ return;
36
+ }
37
+ res.set(STATUS_PAGE_CONTENT_SECURITY_POLICY_HEADER_NAME, STATUS_PAGE_FALLBACK_CONTENT_SECURITY_POLICY);
38
+ }
39
+ //# sourceMappingURL=StatusPageContentSecurityPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusPageContentSecurityPolicy.js","sourceRoot":"","sources":["../../../../Server/Utils/StatusPageContentSecurityPolicy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,+CAA+C,GAC1D,yBAAyB,CAAC;AAE5B;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAW;IAClE,0CAA0C;IAC1C,wBAAwB;IACxB,mBAAmB;IACnB,iBAAiB;CAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,gCAAgC,GAA8B,CACzE,IAAY,EACH,EAAE;IACX,MAAM,cAAc,GAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEhE,OAAO,CACL,cAAc,KAAK,cAAc;QACjC,cAAc,KAAK,eAAe;QAClC,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,CAC3C,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAC1D,GAAmB,EACnB,GAAoB;IAEpB,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACzE,OAAO;IACT,CAAC;IAED,GAAG,CAAC,GAAG,CACL,+CAA+C,EAC/C,4CAA4C,CAC7C,CAAC;AACJ,CAAC"}