@oneuptime/common 14.0.6 → 14.0.8

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 (556) hide show
  1. package/Models/DatabaseModels/Incident.ts +267 -1
  2. package/Models/DatabaseModels/IncidentCustomField.ts +202 -0
  3. package/Models/DatabaseModels/IncidentEpisode.ts +30 -0
  4. package/Models/DatabaseModels/IncidentTemplate.ts +126 -1
  5. package/Models/DatabaseModels/InventoryItem.ts +23 -12
  6. package/Models/DatabaseModels/StatusPage.ts +55 -0
  7. package/Models/DatabaseModels/StatusPageSubscriber.ts +128 -0
  8. package/Server/API/IncidentAPI.ts +162 -0
  9. package/Server/API/StatusPageAPI.ts +487 -171
  10. package/Server/API/StatusPageSubscriberAPI.ts +63 -15
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1795200000000-AddInventoryItemProjectEntityKeyIndex.ts +217 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1795300000000-SkipHiddenIncidentCreatedNotifications.ts +49 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1795400000000-AddIncidentStatusPageScope.ts +108 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1795500000000-AddIncidentTemplateStatusPageScopeFlag.ts +33 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1795600000000-AddStatusPageSubscriberUnsubscribeToken.ts +51 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1795700000000-AddStatusPageSubscriberIsAddedByTeam.ts +33 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1795800000000-AddIncidentCustomFieldCreateAndNotificationSettings.ts +168 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1795900000000-AddSubscriberNotificationClaimedAt.ts +44 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +16 -0
  20. package/Server/Infrastructure/Semaphore.ts +10 -0
  21. package/Server/Middleware/IdentityRateLimit.ts +108 -3
  22. package/Server/Middleware/SubscriberNotificationPreviewRateLimit.ts +237 -0
  23. package/Server/Middleware/SubscriberNotificationTestSendRateLimit.ts +304 -0
  24. package/Server/Services/AlertService.ts +32 -36
  25. package/Server/Services/DatabaseService.ts +93 -10
  26. package/Server/Services/IncidentAlertService.ts +609 -2
  27. package/Server/Services/IncidentCustomFieldService.ts +276 -1
  28. package/Server/Services/IncidentEpisodePublicNoteService.ts +28 -0
  29. package/Server/Services/IncidentEpisodeService.ts +15 -0
  30. package/Server/Services/IncidentEpisodeStateTimelineService.ts +27 -1
  31. package/Server/Services/IncidentPublicNoteService.ts +30 -1
  32. package/Server/Services/IncidentService.ts +1663 -103
  33. package/Server/Services/IncidentStateTimelineService.ts +13 -0
  34. package/Server/Services/IncidentTemplateService.ts +109 -0
  35. package/Server/Services/InventoryItemService.ts +38 -0
  36. package/Server/Services/IoTDeviceCredentialService.ts +13 -4
  37. package/Server/Services/ScheduledMaintenancePublicNoteService.ts +30 -1
  38. package/Server/Services/ScheduledMaintenanceService.ts +118 -64
  39. package/Server/Services/SmsService.ts +10 -0
  40. package/Server/Services/StatusPageService.ts +65 -8
  41. package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +299 -37
  42. package/Server/Services/StatusPageSubscriberNotificationTemplateStatusPageService.ts +129 -0
  43. package/Server/Services/StatusPageSubscriberService.ts +1161 -64
  44. package/Server/Services/UserNotificationRuleService.ts +55 -53
  45. package/Server/Services/WorkspaceNotificationSummaryService.ts +38 -20
  46. package/Server/Types/Markdown.ts +153 -6
  47. package/Server/Types/Workflow/Components/Email.ts +61 -2
  48. package/Server/Utils/AffectedResources/LinkedAffectedResources.ts +576 -0
  49. package/Server/Utils/Alert/AlertStateChangeAuthorization.ts +129 -0
  50. package/Server/Utils/CustomField/CustomFieldRename.ts +378 -0
  51. package/Server/Utils/DataSource/EgressGuard.ts +66 -21
  52. package/Server/Utils/Inventory/InventoryOverviewAggregation.ts +111 -0
  53. package/Server/Utils/Mail/PinnedSmtpSocket.ts +130 -0
  54. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +10 -0
  55. package/Server/Utils/Response.ts +31 -0
  56. package/Server/Utils/SSRFProtection.ts +76 -16
  57. package/Server/Utils/StatusPage/IncidentStatusPageScope.ts +948 -0
  58. package/Server/Utils/StatusPage/IncidentSubscriberAudienceBuilder.ts +656 -0
  59. package/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.ts +805 -0
  60. package/Server/Utils/StatusPage/StatusPageExclusion.ts +18 -0
  61. package/Server/Utils/StatusPage/StatusPageReadAccess.ts +125 -0
  62. package/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeNotice.ts +151 -0
  63. package/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeToken.ts +70 -0
  64. package/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.ts +421 -0
  65. package/Server/Utils/StatusPage/SubscriberNotificationClaim.ts +107 -0
  66. package/Server/Utils/StatusPage/SubscriberNotificationDeliveryRecord.ts +1049 -0
  67. package/Server/Utils/StatusPage/SubscriberNotificationFanOut.ts +180 -0
  68. package/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.ts +839 -0
  69. package/Server/Utils/StatusPage/SubscriberNotificationResendAccess.ts +393 -0
  70. package/Server/Utils/StatusPage/SubscriberNotificationRunLimit.ts +246 -0
  71. package/Server/Utils/StatusPage/SubscriberNotificationTiming.ts +133 -0
  72. package/Server/Utils/StatusPage/SubscriberTemplateIncidentRecordAccess.ts +215 -0
  73. package/Server/Utils/StatusPageResource.ts +51 -20
  74. package/Server/Utils/Topology/TopologyConcurrencyLimiter.ts +229 -0
  75. package/Server/Utils/Topology/TopologyQueries.ts +1350 -0
  76. package/Server/Utils/Topology/TopologyRequest.ts +463 -0
  77. package/Server/Utils/Topology/TopologyResponseCache.ts +183 -0
  78. package/Server/Utils/Topology/TopologySql.ts +1024 -0
  79. package/Server/Utils/VM/VMAPI.ts +1 -0
  80. package/Server/Utils/VM/VMRunner.ts +10 -0
  81. package/Server/Utils/Workflow/OAuth2TokenClient.ts +10 -0
  82. package/Server/Views/Partials/SensitiveUrlToken.ejs +8 -5
  83. package/Tests/App/Accounts/RegisterVerifyEmail.test.tsx +748 -0
  84. package/Tests/App/Accounts/ResendVerificationEmail.test.tsx +1222 -0
  85. package/Tests/App/Accounts/VerificationEmailResendUtils.test.ts +797 -0
  86. package/Tests/App/Accounts/VerifyEmailPending.test.tsx +538 -0
  87. package/Tests/App/Accounts/VerifyEmailResend.test.tsx +779 -0
  88. package/Tests/App/Dashboard/AcknowledgeAlertsOnDeclare.test.ts +369 -0
  89. package/Tests/App/Dashboard/AffectedResourcesSlo.test.tsx +1 -1
  90. package/Tests/App/Dashboard/AffectedResourcesSummaryStep.test.tsx +510 -123
  91. package/Tests/App/Dashboard/AlertsTableAffectedResources.test.tsx +490 -0
  92. package/Tests/App/Dashboard/ChangeAlertStateDeclareIncident.test.tsx +886 -0
  93. package/Tests/App/Dashboard/CreateReviewStepRoleSummary.test.tsx +1250 -0
  94. package/Tests/App/Dashboard/CreateReviewStepSelectionSummary.test.tsx +738 -0
  95. package/Tests/App/Dashboard/CustomFieldsSettingsIncidentOptions.test.tsx +357 -0
  96. package/Tests/App/Dashboard/DeclareIncidentFromAlert.test.ts +417 -0
  97. package/Tests/App/Dashboard/EntityDetailPanel.test.tsx +1948 -229
  98. package/Tests/App/Dashboard/EntityDetailPanelLifecycle.test.tsx +493 -0
  99. package/Tests/App/Dashboard/EntityDetailPanelNavigation.test.tsx +439 -0
  100. package/Tests/App/Dashboard/EventNotes.test.tsx +776 -0
  101. package/Tests/App/Dashboard/EventNotesPages.test.tsx +119 -0
  102. package/Tests/App/Dashboard/EventNotesUtil.test.ts +116 -17
  103. package/Tests/App/Dashboard/EventOverviewPages.test.tsx +534 -6
  104. package/Tests/App/Dashboard/EventStatusPanel.test.tsx +798 -2
  105. package/Tests/App/Dashboard/FetchStateAndSeverityElements.test.tsx +669 -0
  106. package/Tests/App/Dashboard/FetchUsers.test.tsx +230 -0
  107. package/Tests/App/Dashboard/IncidentChangeStateNotifyDefault.test.tsx +91 -1
  108. package/Tests/App/Dashboard/IncidentCreateAcknowledgeAlerts.test.tsx +1611 -0
  109. package/Tests/App/Dashboard/IncidentCreateDetailsStep.test.tsx +643 -0
  110. package/Tests/App/Dashboard/IncidentCreateFromAlerts.test.tsx +8 -1
  111. package/Tests/App/Dashboard/IncidentCreateStatusPageScope.test.tsx +601 -0
  112. package/Tests/App/Dashboard/IncidentCustomFieldTemplateVariables.test.tsx +386 -0
  113. package/Tests/App/Dashboard/IncidentNoteTemplatePlaceholders.test.tsx +124 -0
  114. package/Tests/App/Dashboard/IncidentNoteTemplateVariablesLoader.test.ts +305 -0
  115. package/Tests/App/Dashboard/IncidentOverviewNotifyDefault.test.tsx +112 -0
  116. package/Tests/App/Dashboard/IncidentSettingsRenotifyOnPublish.test.tsx +674 -0
  117. package/Tests/App/Dashboard/IncidentSettingsStatusPageScope.test.tsx +1051 -0
  118. package/Tests/App/Dashboard/IncidentTemplateCustomFields.test.tsx +384 -0
  119. package/Tests/App/Dashboard/IncidentTemplateStatusPageScopeCard.test.tsx +215 -0
  120. package/Tests/App/Dashboard/InfrastructureExplorer.test.tsx +1365 -57
  121. package/Tests/App/Dashboard/InfrastructureGraph.test.tsx +964 -23
  122. package/Tests/App/Dashboard/InventoryRelationships.test.tsx +885 -0
  123. package/Tests/App/Dashboard/PublicNotePagesNotifyDefault.test.tsx +113 -1
  124. package/Tests/App/Dashboard/ServiceMapDatabaseLink.test.tsx +201 -15
  125. package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +508 -36
  126. package/Tests/App/Dashboard/SubscriberAudienceSummary.test.tsx +512 -0
  127. package/Tests/App/Dashboard/SubscriberNotificationPreviewModal.test.tsx +837 -0
  128. package/Tests/App/Dashboard/SubscriberNotificationStatusLabel.test.tsx +88 -0
  129. package/Tests/App/Dashboard/SubscriberNotificationStatusResend.test.tsx +473 -0
  130. package/Tests/App/Dashboard/SubscriberTemplateLivePreview.test.tsx +196 -0
  131. package/Tests/App/Dashboard/TeamAddedSubscribersUnsubscribedNotice.test.tsx +248 -0
  132. package/Tests/App/Dashboard/TopologyDataLifecycle.test.tsx +583 -0
  133. package/Tests/App/Dashboard/TopologyDataLoading.test.tsx +982 -218
  134. package/Tests/App/Dashboard/TopologyPageNavigation.test.tsx +818 -114
  135. package/Tests/App/SensitiveUrlTokenBootstrap.test.ts +64 -3
  136. package/Tests/App/StatusPage/StatusPageUnsubscribePage.test.tsx +412 -0
  137. package/Tests/Models/IncidentCustomFieldApiSchemaContract.test.ts +217 -0
  138. package/Tests/Models/IncidentCustomFieldCreateSettingsColumns.test.ts +252 -0
  139. package/Tests/Models/StatusPageSubscriberUnsubscribeColumns.test.ts +218 -0
  140. package/Tests/Server/API/ExpiredSessionRouteGuards.test.ts +7 -0
  141. package/Tests/Server/API/IncidentSubscriberAudienceAPI.test.ts +1408 -0
  142. package/Tests/Server/API/StatusPageIncidentScope.test.ts +1868 -0
  143. package/Tests/Server/API/StatusPageIncidentScopePostgres.test.ts +790 -0
  144. package/Tests/Server/API/StatusPageManageSubscriptionRecipient.test.ts +10 -1
  145. package/Tests/Server/API/StatusPageManageSubscriptionTemplateVariables.test.ts +206 -18
  146. package/Tests/Server/API/StatusPagePostmortemVisibility.test.ts +14 -2
  147. package/Tests/Server/API/StatusPageSubscriberCreateResponse.test.ts +217 -0
  148. package/Tests/Server/API/StatusPageSubscriberOwnership.test.ts +103 -2
  149. package/Tests/Server/API/StatusPageUnsubscribeAPI.test.ts +396 -0
  150. package/Tests/Server/Infrastructure/Postgres/AddIncidentStatusPageScopeMigration.test.ts +395 -0
  151. package/Tests/Server/Infrastructure/Postgres/AddIncidentTemplateStatusPageScopeFlagMigration.test.ts +150 -0
  152. package/Tests/Server/Infrastructure/Postgres/AddSubscriberNotificationClaimedAtMigration.test.ts +156 -0
  153. package/Tests/Server/Infrastructure/Postgres/RenameInventoryItemMigration.test.ts +90 -21
  154. package/Tests/Server/Infrastructure/Postgres/SkipHiddenIncidentCreatedNotificationsMigration.test.ts +410 -0
  155. package/Tests/Server/Middleware/IdentityRateLimit.test.ts +551 -1
  156. package/Tests/Server/Middleware/SubscriberNotificationPreviewRateLimit.test.ts +238 -0
  157. package/Tests/Server/Middleware/SubscriberNotificationTestSendRateLimit.test.ts +245 -0
  158. package/Tests/Server/Services/AddStatusPageSubscriberUnsubscribeTokenMigration.test.ts +152 -0
  159. package/Tests/Server/Services/CrossProjectRelationWriteGuard.test.ts +221 -36
  160. package/Tests/Server/Services/DatabaseServiceCompareAndSetColumns.test.ts +191 -0
  161. package/Tests/Server/Services/DomainService.test.ts +525 -0
  162. package/Tests/Server/Services/IncidentAlertAcknowledgeOnDeclare.test.ts +2630 -0
  163. package/Tests/Server/Services/IncidentAlertPostgres.test.ts +1625 -1
  164. package/Tests/Server/Services/IncidentCreatedRenotifyOnPublish.test.ts +681 -0
  165. package/Tests/Server/Services/IncidentCreatedResend.test.ts +775 -0
  166. package/Tests/Server/Services/IncidentCustomFieldRenamePostgres.test.ts +713 -0
  167. package/Tests/Server/Services/IncidentCustomFieldService.test.ts +751 -0
  168. package/Tests/Server/Services/IncidentCustomFieldValueValidation.test.ts +556 -0
  169. package/Tests/Server/Services/IncidentDeclareAcknowledgeAlerts.test.ts +2189 -0
  170. package/Tests/Server/Services/IncidentStatusPageScope.test.ts +2971 -0
  171. package/Tests/Server/Services/IncidentStatusPageScopeFeed.test.ts +131 -0
  172. package/Tests/Server/Services/IncidentStatusPageScopePostgres.test.ts +625 -0
  173. package/Tests/Server/Services/IncidentTemplateCustomFieldsCopy.test.ts +311 -0
  174. package/Tests/Server/Services/IncidentTemplateStatusPageScope.test.ts +363 -0
  175. package/Tests/Server/Services/InventoryItemServiceOverviewCounts.test.ts +345 -0
  176. package/Tests/Server/Services/InventoryOverviewPostgres.test.ts +254 -0
  177. package/Tests/Server/Services/IoTDeviceCredentialService.test.ts +819 -0
  178. package/Tests/Server/Services/LinkedAffectedResourcesCreatedFeed.test.ts +420 -0
  179. package/Tests/Server/Services/PublicNoteEditFeedEventType.test.ts +213 -0
  180. package/Tests/Server/Services/PublicNoteResendAccess.test.ts +994 -0
  181. package/Tests/Server/Services/ScheduledMaintenanceSubscriberTemplateFormats.test.ts +289 -9
  182. package/Tests/Server/Services/SloAffectedResourceCreatedFeed.test.ts +92 -36
  183. package/Tests/Server/Services/SmsServiceFailIfNotSent.test.ts +67 -0
  184. package/Tests/Server/Services/StatusPageReportIncidentCounts.test.ts +610 -0
  185. package/Tests/Server/Services/StatusPageSubscriberAudienceCounts.test.ts +201 -0
  186. package/Tests/Server/Services/StatusPageSubscriberAudienceCountsPostgres.test.ts +271 -0
  187. package/Tests/Server/Services/StatusPageSubscriberConfirmationTemplateEscaping.test.ts +200 -0
  188. package/Tests/Server/Services/StatusPageSubscriberNotificationLogRedaction.test.ts +54 -0
  189. package/Tests/Server/Services/StatusPageSubscriberNotificationTemplateCompile.test.ts +37 -0
  190. package/Tests/Server/Services/StatusPageSubscriberNotificationTemplateIncidentRecordAccess.test.ts +772 -0
  191. package/Tests/Server/Services/StatusPageSubscriberNotificationTemplateLookup.test.ts +506 -0
  192. package/Tests/Server/Services/StatusPageSubscriberNotificationTemplateLookupPostgres.test.ts +261 -0
  193. package/Tests/Server/Services/StatusPageSubscriberReport.test.ts +21 -5
  194. package/Tests/Server/Services/StatusPageSubscriberUnsubscribe.test.ts +1618 -0
  195. package/Tests/Server/Services/StatusPageSubscriberUnsubscribeLinkSenders.test.ts +373 -0
  196. package/Tests/Server/Services/StatusPageSubscriberUnsubscribePostgres.test.ts +388 -0
  197. package/Tests/Server/Services/SubscriberNotificationInFlightRequeue.test.ts +500 -0
  198. package/Tests/Server/Types/MarkdownEmailLinks.test.ts +320 -0
  199. package/Tests/Server/Types/Workflow/Components/Email.test.ts +491 -1
  200. package/Tests/Server/Types/Workflow/Components/EmailSmtpPinning.test.ts +398 -0
  201. package/Tests/Server/Utils/AffectedResources/LinkedAffectedResources.test.ts +858 -0
  202. package/Tests/Server/Utils/Alert/AlertStateChangeAuthorization.test.ts +1172 -0
  203. package/Tests/Server/Utils/CustomField/CustomFieldRename.test.ts +586 -0
  204. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +246 -10
  205. package/Tests/Server/Utils/DataSource/EgressGuardDeploymentConfig.test.ts +226 -0
  206. package/Tests/Server/Utils/DataSource/EgressGuardPinning.test.ts +131 -0
  207. package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +4 -0
  208. package/Tests/Server/Utils/EgressPolicyEnvironment.ts +45 -0
  209. package/Tests/Server/Utils/Mail/PinnedSmtpSocket.test.ts +409 -0
  210. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +23 -0
  211. package/Tests/Server/Utils/SSRFProtection.test.ts +4 -0
  212. package/Tests/Server/Utils/SSRFProtectionCloudServiceAddresses.test.ts +4 -0
  213. package/Tests/Server/Utils/SSRFProtectionPrivateNetwork.test.ts +4 -0
  214. package/Tests/Server/Utils/SSRFProtectionResolutionDetail.test.ts +314 -0
  215. package/Tests/Server/Utils/StatusPage/IncidentStatusPageScope.test.ts +1699 -0
  216. package/Tests/Server/Utils/StatusPage/IncidentStatusPageScopeQueriesPostgres.test.ts +508 -0
  217. package/Tests/Server/Utils/StatusPage/IncidentSubscriberAudienceCallerPermission.test.ts +246 -0
  218. package/Tests/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.test.ts +1348 -0
  219. package/Tests/Server/Utils/StatusPage/StatusPageReadAccess.test.ts +221 -0
  220. package/Tests/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeNotice.test.ts +132 -0
  221. package/Tests/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeToken.test.ts +155 -0
  222. package/Tests/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.test.ts +708 -0
  223. package/Tests/Server/Utils/StatusPage/SubscriberNotificationClaim.test.ts +255 -0
  224. package/Tests/Server/Utils/StatusPage/SubscriberNotificationClaimPostgres.test.ts +528 -0
  225. package/Tests/Server/Utils/StatusPage/SubscriberNotificationDeliveryRecord.test.ts +1238 -0
  226. package/Tests/Server/Utils/StatusPage/SubscriberNotificationFanOut.test.ts +472 -0
  227. package/Tests/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.test.ts +1168 -0
  228. package/Tests/Server/Utils/StatusPage/SubscriberNotificationRunLimit.test.ts +275 -0
  229. package/Tests/Server/Utils/StatusPage/SubscriberNotificationTiming.test.ts +131 -0
  230. package/Tests/Server/Utils/StatusPageResource.test.ts +98 -0
  231. package/Tests/Server/Utils/Topology/InventoryItemEntityKeyIndexMigration.test.ts +386 -0
  232. package/Tests/Server/Utils/Topology/InventoryItemEntityKeyIndexMigrationPostgres.test.ts +430 -0
  233. package/Tests/Server/Utils/Topology/TopologyActivityParityPostgres.test.ts +279 -0
  234. package/Tests/Server/Utils/Topology/TopologyConcurrencyLimiter.test.ts +534 -0
  235. package/Tests/Server/Utils/Topology/TopologyEstateGenerator.ts +624 -0
  236. package/Tests/Server/Utils/Topology/TopologyJsonResponse.test.ts +90 -0
  237. package/Tests/Server/Utils/Topology/TopologyQueries.test.ts +1634 -0
  238. package/Tests/Server/Utils/Topology/TopologyQueriesDifferentialPostgres.test.ts +683 -0
  239. package/Tests/Server/Utils/Topology/TopologyQueriesPostgres.test.ts +2624 -0
  240. package/Tests/Server/Utils/Topology/TopologyReference.ts +1018 -0
  241. package/Tests/Server/Utils/Topology/TopologyRequest.test.ts +643 -0
  242. package/Tests/Server/Utils/Topology/TopologyResponseCache.test.ts +305 -0
  243. package/Tests/Server/Utils/Topology/TopologySql.test.ts +973 -0
  244. package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +17 -0
  245. package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +75 -0
  246. package/Tests/Types/CustomField/CustomFieldSavedViews.test.ts +247 -0
  247. package/Tests/Types/CustomField/CustomFieldTemplateValues.test.ts +186 -0
  248. package/Tests/Types/CustomField/CustomFieldTypeCorrespondence.test.ts +48 -0
  249. package/Tests/Types/CustomField/CustomFieldValueFormat.test.ts +215 -0
  250. package/Tests/Types/CustomField/CustomFieldValueValidator.test.ts +343 -0
  251. package/Tests/Types/CustomField/CustomFieldVariableKey.test.ts +364 -0
  252. package/Tests/Types/SafeHtml.test.ts +102 -0
  253. package/Tests/Types/StatusPage/IncidentCreatedRenotify.test.ts +419 -0
  254. package/Tests/Types/StatusPage/IncidentCreatedResend.test.ts +118 -0
  255. package/Tests/Types/StatusPage/IncidentScopeAddedPagesNotification.test.ts +558 -0
  256. package/Tests/Types/StatusPage/IncidentSubscriberAudience.test.ts +284 -0
  257. package/Tests/Types/StatusPage/StatusPageSubscriberUnsubscribe.test.ts +341 -0
  258. package/Tests/Types/StatusPage/SubscriberNotificationPreview.test.ts +196 -0
  259. package/Tests/Types/StatusPage/SubscriberNotificationResend.test.ts +201 -0
  260. package/Tests/Types/StatusPage/SubscriberNotificationTemplateCompiler.test.ts +277 -0
  261. package/Tests/Types/StatusPage/SubscriberNotificationTemplatePreview.test.ts +179 -0
  262. package/Tests/Types/StatusPage/SubscriberNotificationTemplateVariables.test.ts +324 -0
  263. package/Tests/Types/StatusPage/SubscriberUpdateNotification.test.ts +60 -13
  264. package/Tests/Types/Topology/TopologyTypeRules.test.ts +176 -0
  265. package/Tests/UI/Components/CustomFields/CustomFieldFormFields.test.ts +432 -0
  266. package/Tests/UI/Components/CustomFields/CustomFieldModelFormFields.test.tsx +685 -0
  267. package/Tests/UI/Components/CustomFields/CustomFieldsDetailOrder.test.tsx +469 -0
  268. package/Tests/UI/Components/Forms/ModelFormCustomFieldInputs.test.tsx +325 -0
  269. package/Tests/UI/Components/Forms/ModelFormDropdownOptionsRefused.test.tsx +358 -0
  270. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +22 -0
  271. package/Tests/UI/Monitor/NetworkPathView.test.tsx +289 -0
  272. package/Tests/Utils/Incident/IncidentFromAlerts.test.ts +302 -0
  273. package/Tests/Utils/Incident/IncidentNoteTemplateVariables.test.ts +623 -0
  274. package/Tests/Utils/Markdown/MarkdownEscape.test.ts +89 -0
  275. package/Tests/Utils/ProbeNetworkFailureUtil.test.ts +992 -0
  276. package/Tests/Utils/RequestFailedDetails.test.ts +575 -0
  277. package/Types/CustomField/CustomFieldOrder.ts +55 -0
  278. package/Types/CustomField/CustomFieldSavedViews.ts +225 -0
  279. package/Types/CustomField/CustomFieldTemplateMerge.ts +71 -0
  280. package/Types/CustomField/CustomFieldType.ts +14 -0
  281. package/Types/CustomField/CustomFieldValueFormat.ts +161 -0
  282. package/Types/CustomField/CustomFieldValueValidator.ts +488 -0
  283. package/Types/CustomField/CustomFieldVariableKey.ts +211 -0
  284. package/Types/Incident/IncidentAlertLink.ts +19 -0
  285. package/Types/SafeHtml.ts +93 -0
  286. package/Types/StatusPage/IncidentCreatedRenotify.ts +224 -0
  287. package/Types/StatusPage/IncidentCreatedResend.ts +108 -0
  288. package/Types/StatusPage/IncidentScopeAddedPagesNotification.ts +343 -0
  289. package/Types/StatusPage/IncidentSubscriberAudience.ts +332 -0
  290. package/Types/StatusPage/StatusPageSubscriberUnsubscribe.ts +405 -0
  291. package/Types/StatusPage/SubscriberNotificationInterruption.ts +32 -0
  292. package/Types/StatusPage/SubscriberNotificationPreview.ts +322 -0
  293. package/Types/StatusPage/SubscriberNotificationResend.ts +132 -0
  294. package/Types/StatusPage/SubscriberNotificationTemplateCompiler.ts +180 -0
  295. package/Types/StatusPage/SubscriberNotificationTemplatePreview.ts +301 -0
  296. package/Types/StatusPage/SubscriberNotificationTemplateVariables.ts +217 -4
  297. package/Types/StatusPage/SubscriberUpdateNotification.ts +32 -11
  298. package/Types/Telemetry/InventoryLiveness.ts +26 -0
  299. package/Types/Topology/TopologyApi.ts +428 -0
  300. package/Types/Topology/TopologyTypeRules.ts +191 -0
  301. package/UI/Components/CustomFields/CustomFieldFormFields.ts +317 -0
  302. package/UI/Components/CustomFields/CustomFieldModelFormFields.tsx +395 -0
  303. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +95 -55
  304. package/UI/Components/Forms/ModelForm.tsx +70 -8
  305. package/UI/Components/Forms/Validation.ts +1 -1
  306. package/UI/Components/ModelFormModal/ModelFormModal.tsx +2 -4
  307. package/UI/Components/ModelTable/AnalyticsModelTable.tsx +2 -6
  308. package/UI/Components/ModelTable/BaseModelTable.tsx +9 -8
  309. package/UI/Components/ModelTable/CustomFieldColumns.tsx +14 -1
  310. package/UI/Components/ModelTable/ModelTable.tsx +6 -7
  311. package/UI/Utils/SensitiveUrlToken.ts +10 -5
  312. package/Utils/API.ts +247 -2
  313. package/Utils/Incident/IncidentFromAlerts.ts +78 -0
  314. package/Utils/Incident/IncidentNoteTemplateVariables.ts +304 -0
  315. package/Utils/Markdown/MarkdownEscape.ts +65 -0
  316. package/Utils/ProbeNetworkFailureUtil.ts +673 -0
  317. package/build/dist/Models/DatabaseModels/Incident.js +267 -1
  318. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  319. package/build/dist/Models/DatabaseModels/IncidentCustomField.js +207 -1
  320. package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
  321. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +31 -0
  322. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
  323. package/build/dist/Models/DatabaseModels/IncidentTemplate.js +124 -1
  324. package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
  325. package/build/dist/Models/DatabaseModels/InventoryItem.js +20 -11
  326. package/build/dist/Models/DatabaseModels/InventoryItem.js.map +1 -1
  327. package/build/dist/Models/DatabaseModels/StatusPage.js +56 -0
  328. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  329. package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js +131 -0
  330. package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js.map +1 -1
  331. package/build/dist/Server/API/IncidentAPI.js +100 -1
  332. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  333. package/build/dist/Server/API/StatusPageAPI.js +417 -176
  334. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  335. package/build/dist/Server/API/StatusPageSubscriberAPI.js +52 -13
  336. package/build/dist/Server/API/StatusPageSubscriberAPI.js.map +1 -1
  337. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795200000000-AddInventoryItemProjectEntityKeyIndex.js +165 -0
  338. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795200000000-AddInventoryItemProjectEntityKeyIndex.js.map +1 -0
  339. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795300000000-SkipHiddenIncidentCreatedNotifications.js +41 -0
  340. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795300000000-SkipHiddenIncidentCreatedNotifications.js.map +1 -0
  341. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795400000000-AddIncidentStatusPageScope.js +57 -0
  342. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795400000000-AddIncidentStatusPageScope.js.map +1 -0
  343. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795500000000-AddIncidentTemplateStatusPageScopeFlag.js +23 -0
  344. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795500000000-AddIncidentTemplateStatusPageScopeFlag.js.map +1 -0
  345. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795600000000-AddStatusPageSubscriberUnsubscribeToken.js +40 -0
  346. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795600000000-AddStatusPageSubscriberUnsubscribeToken.js.map +1 -0
  347. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795700000000-AddStatusPageSubscriberIsAddedByTeam.js +26 -0
  348. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795700000000-AddStatusPageSubscriberIsAddedByTeam.js.map +1 -0
  349. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795800000000-AddIncidentCustomFieldCreateAndNotificationSettings.js +89 -0
  350. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795800000000-AddIncidentCustomFieldCreateAndNotificationSettings.js.map +1 -0
  351. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795900000000-AddSubscriberNotificationClaimedAt.js +29 -0
  352. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795900000000-AddSubscriberNotificationClaimedAt.js.map +1 -0
  353. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +16 -0
  354. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  355. package/build/dist/Server/Infrastructure/Semaphore.js +3 -0
  356. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  357. package/build/dist/Server/Middleware/IdentityRateLimit.js +89 -3
  358. package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
  359. package/build/dist/Server/Middleware/SubscriberNotificationPreviewRateLimit.js +149 -0
  360. package/build/dist/Server/Middleware/SubscriberNotificationPreviewRateLimit.js.map +1 -0
  361. package/build/dist/Server/Middleware/SubscriberNotificationTestSendRateLimit.js +190 -0
  362. package/build/dist/Server/Middleware/SubscriberNotificationTestSendRateLimit.js.map +1 -0
  363. package/build/dist/Server/Services/AlertService.js +21 -33
  364. package/build/dist/Server/Services/AlertService.js.map +1 -1
  365. package/build/dist/Server/Services/DatabaseService.js +56 -7
  366. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  367. package/build/dist/Server/Services/IncidentAlertService.js +457 -3
  368. package/build/dist/Server/Services/IncidentAlertService.js.map +1 -1
  369. package/build/dist/Server/Services/IncidentCustomFieldService.js +204 -8
  370. package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
  371. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js +24 -0
  372. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js.map +1 -1
  373. package/build/dist/Server/Services/IncidentEpisodeService.js +14 -0
  374. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  375. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +26 -0
  376. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -1
  377. package/build/dist/Server/Services/IncidentPublicNoteService.js +26 -1
  378. package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
  379. package/build/dist/Server/Services/IncidentService.js +1148 -42
  380. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  381. package/build/dist/Server/Services/IncidentStateTimelineService.js +12 -0
  382. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  383. package/build/dist/Server/Services/IncidentTemplateService.js +83 -0
  384. package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
  385. package/build/dist/Server/Services/InventoryItemService.js +31 -0
  386. package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
  387. package/build/dist/Server/Services/IoTDeviceCredentialService.js +12 -5
  388. package/build/dist/Server/Services/IoTDeviceCredentialService.js.map +1 -1
  389. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +26 -1
  390. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
  391. package/build/dist/Server/Services/ScheduledMaintenanceService.js +84 -57
  392. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  393. package/build/dist/Server/Services/SmsService.js +2 -22
  394. package/build/dist/Server/Services/SmsService.js.map +1 -1
  395. package/build/dist/Server/Services/StatusPageService.js +47 -9
  396. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  397. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +237 -32
  398. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
  399. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateStatusPageService.js +109 -0
  400. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateStatusPageService.js.map +1 -1
  401. package/build/dist/Server/Services/StatusPageSubscriberService.js +925 -99
  402. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  403. package/build/dist/Server/Services/UserNotificationRuleService.js +55 -51
  404. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  405. package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js +42 -25
  406. package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js.map +1 -1
  407. package/build/dist/Server/Types/Markdown.js +110 -6
  408. package/build/dist/Server/Types/Markdown.js.map +1 -1
  409. package/build/dist/Server/Types/Workflow/Components/Email.js +55 -6
  410. package/build/dist/Server/Types/Workflow/Components/Email.js.map +1 -1
  411. package/build/dist/Server/Utils/AffectedResources/LinkedAffectedResources.js +405 -0
  412. package/build/dist/Server/Utils/AffectedResources/LinkedAffectedResources.js.map +1 -0
  413. package/build/dist/Server/Utils/Alert/AlertStateChangeAuthorization.js +112 -0
  414. package/build/dist/Server/Utils/Alert/AlertStateChangeAuthorization.js.map +1 -0
  415. package/build/dist/Server/Utils/CustomField/CustomFieldRename.js +211 -0
  416. package/build/dist/Server/Utils/CustomField/CustomFieldRename.js.map +1 -0
  417. package/build/dist/Server/Utils/DataSource/EgressGuard.js +41 -12
  418. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
  419. package/build/dist/Server/Utils/Inventory/InventoryOverviewAggregation.js +81 -0
  420. package/build/dist/Server/Utils/Inventory/InventoryOverviewAggregation.js.map +1 -0
  421. package/build/dist/Server/Utils/Mail/PinnedSmtpSocket.js +101 -0
  422. package/build/dist/Server/Utils/Mail/PinnedSmtpSocket.js.map +1 -0
  423. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +9 -0
  424. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  425. package/build/dist/Server/Utils/Response.js +30 -0
  426. package/build/dist/Server/Utils/Response.js.map +1 -1
  427. package/build/dist/Server/Utils/SSRFProtection.js +48 -6
  428. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  429. package/build/dist/Server/Utils/StatusPage/IncidentStatusPageScope.js +631 -0
  430. package/build/dist/Server/Utils/StatusPage/IncidentStatusPageScope.js.map +1 -0
  431. package/build/dist/Server/Utils/StatusPage/IncidentSubscriberAudienceBuilder.js +403 -0
  432. package/build/dist/Server/Utils/StatusPage/IncidentSubscriberAudienceBuilder.js.map +1 -0
  433. package/build/dist/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.js +451 -0
  434. package/build/dist/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.js.map +1 -0
  435. package/build/dist/Server/Utils/StatusPage/StatusPageExclusion.js +13 -0
  436. package/build/dist/Server/Utils/StatusPage/StatusPageExclusion.js.map +1 -0
  437. package/build/dist/Server/Utils/StatusPage/StatusPageReadAccess.js +91 -0
  438. package/build/dist/Server/Utils/StatusPage/StatusPageReadAccess.js.map +1 -0
  439. package/build/dist/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeNotice.js +101 -0
  440. package/build/dist/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeNotice.js.map +1 -0
  441. package/build/dist/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeToken.js +47 -0
  442. package/build/dist/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeToken.js.map +1 -0
  443. package/build/dist/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.js +273 -0
  444. package/build/dist/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.js.map +1 -0
  445. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationClaim.js +73 -0
  446. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationClaim.js.map +1 -0
  447. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationDeliveryRecord.js +722 -0
  448. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationDeliveryRecord.js.map +1 -0
  449. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationFanOut.js +102 -0
  450. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationFanOut.js.map +1 -0
  451. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.js +527 -0
  452. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.js.map +1 -0
  453. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationResendAccess.js +278 -0
  454. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationResendAccess.js.map +1 -0
  455. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationRunLimit.js +137 -0
  456. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationRunLimit.js.map +1 -0
  457. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationTiming.js +103 -0
  458. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationTiming.js.map +1 -0
  459. package/build/dist/Server/Utils/StatusPage/SubscriberTemplateIncidentRecordAccess.js +114 -0
  460. package/build/dist/Server/Utils/StatusPage/SubscriberTemplateIncidentRecordAccess.js.map +1 -0
  461. package/build/dist/Server/Utils/StatusPageResource.js +39 -7
  462. package/build/dist/Server/Utils/StatusPageResource.js.map +1 -1
  463. package/build/dist/Server/Utils/Topology/TopologyConcurrencyLimiter.js +178 -0
  464. package/build/dist/Server/Utils/Topology/TopologyConcurrencyLimiter.js.map +1 -0
  465. package/build/dist/Server/Utils/Topology/TopologyQueries.js +884 -0
  466. package/build/dist/Server/Utils/Topology/TopologyQueries.js.map +1 -0
  467. package/build/dist/Server/Utils/Topology/TopologyRequest.js +275 -0
  468. package/build/dist/Server/Utils/Topology/TopologyRequest.js.map +1 -0
  469. package/build/dist/Server/Utils/Topology/TopologyResponseCache.js +146 -0
  470. package/build/dist/Server/Utils/Topology/TopologyResponseCache.js.map +1 -0
  471. package/build/dist/Server/Utils/Topology/TopologySql.js +688 -0
  472. package/build/dist/Server/Utils/Topology/TopologySql.js.map +1 -0
  473. package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
  474. package/build/dist/Server/Utils/VM/VMRunner.js +1 -0
  475. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  476. package/build/dist/Server/Utils/Workflow/OAuth2TokenClient.js +3 -0
  477. package/build/dist/Server/Utils/Workflow/OAuth2TokenClient.js.map +1 -1
  478. package/build/dist/Types/CustomField/CustomFieldOrder.js +36 -0
  479. package/build/dist/Types/CustomField/CustomFieldOrder.js.map +1 -0
  480. package/build/dist/Types/CustomField/CustomFieldSavedViews.js +135 -0
  481. package/build/dist/Types/CustomField/CustomFieldSavedViews.js.map +1 -0
  482. package/build/dist/Types/CustomField/CustomFieldTemplateMerge.js +27 -0
  483. package/build/dist/Types/CustomField/CustomFieldTemplateMerge.js.map +1 -0
  484. package/build/dist/Types/CustomField/CustomFieldType.js +12 -0
  485. package/build/dist/Types/CustomField/CustomFieldType.js.map +1 -1
  486. package/build/dist/Types/CustomField/CustomFieldValueFormat.js +126 -0
  487. package/build/dist/Types/CustomField/CustomFieldValueFormat.js.map +1 -0
  488. package/build/dist/Types/CustomField/CustomFieldValueValidator.js +280 -0
  489. package/build/dist/Types/CustomField/CustomFieldValueValidator.js.map +1 -0
  490. package/build/dist/Types/CustomField/CustomFieldVariableKey.js +150 -0
  491. package/build/dist/Types/CustomField/CustomFieldVariableKey.js.map +1 -0
  492. package/build/dist/Types/Incident/IncidentAlertLink.js +17 -0
  493. package/build/dist/Types/Incident/IncidentAlertLink.js.map +1 -1
  494. package/build/dist/Types/SafeHtml.js +84 -0
  495. package/build/dist/Types/SafeHtml.js.map +1 -0
  496. package/build/dist/Types/StatusPage/IncidentCreatedRenotify.js +117 -0
  497. package/build/dist/Types/StatusPage/IncidentCreatedRenotify.js.map +1 -0
  498. package/build/dist/Types/StatusPage/IncidentCreatedResend.js +86 -0
  499. package/build/dist/Types/StatusPage/IncidentCreatedResend.js.map +1 -0
  500. package/build/dist/Types/StatusPage/IncidentScopeAddedPagesNotification.js +246 -0
  501. package/build/dist/Types/StatusPage/IncidentScopeAddedPagesNotification.js.map +1 -0
  502. package/build/dist/Types/StatusPage/IncidentSubscriberAudience.js +183 -0
  503. package/build/dist/Types/StatusPage/IncidentSubscriberAudience.js.map +1 -0
  504. package/build/dist/Types/StatusPage/StatusPageSubscriberUnsubscribe.js +277 -0
  505. package/build/dist/Types/StatusPage/StatusPageSubscriberUnsubscribe.js.map +1 -0
  506. package/build/dist/Types/StatusPage/SubscriberNotificationInterruption.js +27 -0
  507. package/build/dist/Types/StatusPage/SubscriberNotificationInterruption.js.map +1 -0
  508. package/build/dist/Types/StatusPage/SubscriberNotificationPreview.js +190 -0
  509. package/build/dist/Types/StatusPage/SubscriberNotificationPreview.js.map +1 -0
  510. package/build/dist/Types/StatusPage/SubscriberNotificationResend.js +102 -0
  511. package/build/dist/Types/StatusPage/SubscriberNotificationResend.js.map +1 -0
  512. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateCompiler.js +97 -0
  513. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateCompiler.js.map +1 -0
  514. package/build/dist/Types/StatusPage/SubscriberNotificationTemplatePreview.js +175 -0
  515. package/build/dist/Types/StatusPage/SubscriberNotificationTemplatePreview.js.map +1 -0
  516. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateVariables.js +144 -4
  517. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateVariables.js.map +1 -1
  518. package/build/dist/Types/StatusPage/SubscriberUpdateNotification.js +29 -9
  519. package/build/dist/Types/StatusPage/SubscriberUpdateNotification.js.map +1 -1
  520. package/build/dist/Types/Telemetry/InventoryLiveness.js +23 -0
  521. package/build/dist/Types/Telemetry/InventoryLiveness.js.map +1 -1
  522. package/build/dist/Types/Topology/TopologyApi.js +55 -0
  523. package/build/dist/Types/Topology/TopologyApi.js.map +1 -0
  524. package/build/dist/Types/Topology/TopologyTypeRules.js +165 -0
  525. package/build/dist/Types/Topology/TopologyTypeRules.js.map +1 -0
  526. package/build/dist/UI/Components/CustomFields/CustomFieldFormFields.js +169 -0
  527. package/build/dist/UI/Components/CustomFields/CustomFieldFormFields.js.map +1 -0
  528. package/build/dist/UI/Components/CustomFields/CustomFieldModelFormFields.js +212 -0
  529. package/build/dist/UI/Components/CustomFields/CustomFieldModelFormFields.js.map +1 -0
  530. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +64 -49
  531. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  532. package/build/dist/UI/Components/Forms/ModelForm.js +39 -5
  533. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  534. package/build/dist/UI/Components/Forms/Validation.js +1 -1
  535. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  536. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
  537. package/build/dist/UI/Components/ModelTable/AnalyticsModelTable.js.map +1 -1
  538. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +2 -2
  539. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  540. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +13 -1
  541. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -1
  542. package/build/dist/UI/Components/ModelTable/ModelTable.js +1 -1
  543. package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
  544. package/build/dist/UI/Utils/SensitiveUrlToken.js +10 -5
  545. package/build/dist/UI/Utils/SensitiveUrlToken.js.map +1 -1
  546. package/build/dist/Utils/API.js +177 -1
  547. package/build/dist/Utils/API.js.map +1 -1
  548. package/build/dist/Utils/Incident/IncidentFromAlerts.js +38 -0
  549. package/build/dist/Utils/Incident/IncidentFromAlerts.js.map +1 -1
  550. package/build/dist/Utils/Incident/IncidentNoteTemplateVariables.js +155 -0
  551. package/build/dist/Utils/Incident/IncidentNoteTemplateVariables.js.map +1 -0
  552. package/build/dist/Utils/Markdown/MarkdownEscape.js +48 -0
  553. package/build/dist/Utils/Markdown/MarkdownEscape.js.map +1 -1
  554. package/build/dist/Utils/ProbeNetworkFailureUtil.js +460 -0
  555. package/build/dist/Utils/ProbeNetworkFailureUtil.js.map +1 -0
  556. package/package.json +1 -1
@@ -1,5 +1,60 @@
1
+ import { CUSTOM_FIELD_TEMPLATE_VARIABLE_PREFIX, isValidCustomFieldVariableKey, } from "../CustomField/CustomFieldVariableKey";
1
2
  import BadDataException from "../Exception/BadDataException";
2
3
  import StatusPageSubscriberNotificationEventType from "./StatusPageSubscriberNotificationEventType";
4
+ import SubscriberNotificationTemplateCompiler from "./SubscriberNotificationTemplateCompiler";
5
+ /*
6
+ * The variables every incident event offers on top of its own: the
7
+ * incident's labels, the status pages it is on, and its custom fields.
8
+ *
9
+ * affectedStatusPages and the custom fields are internal data - a status
10
+ * page's subscribers are usually outside the team, and the list of pages
11
+ * names every other audience the incident reaches - so the worker never puts
12
+ * them into a message on its own. They reach subscribers only where a
13
+ * template author places them, and the template form warns about it.
14
+ */
15
+ const INCIDENT_VARIABLES = [
16
+ {
17
+ name: "incidentLabels",
18
+ description: "Labels of the incident, separated by commas",
19
+ },
20
+ {
21
+ name: "affectedStatusPages",
22
+ description: "Names of every status page the incident is shown on, separated by commas. Internal: it names the status pages of every audience the incident reaches",
23
+ },
24
+ ];
25
+ const INCIDENT_DYNAMIC_VARIABLES = [
26
+ {
27
+ prefix: CUSTOM_FIELD_TEMPLATE_VARIABLE_PREFIX,
28
+ placeholder: "<key>",
29
+ isValidKey: isValidCustomFieldVariableKey,
30
+ description: "The value of an incident custom field, by the field's Template Variable key. Internal: any custom field can be placed, whether or not it is marked to be included in subscriber notifications",
31
+ mayBeHtmlInEmailBody: true,
32
+ },
33
+ ];
34
+ /*
35
+ * The variables that read the team's own incident records rather than what
36
+ * the incident's status pages already show: its labels, and every custom
37
+ * field ({{customFields.<key>}}), marked for subscribers or not. The title,
38
+ * description, severity, state and public notes are on the status page for
39
+ * anyone who can see it; these are not, and the status page roles that may
40
+ * write templates may not read them. So a template can place them only if
41
+ * whoever writes it may read them (Server/Utils/StatusPage/
42
+ * SubscriberTemplateIncidentRecordAccess).
43
+ *
44
+ * {{affectedStatusPages}} is not one of them: it names status pages, which
45
+ * the same roles read.
46
+ */
47
+ const INCIDENT_RECORD_VARIABLE_NAMES = [
48
+ "incidentLabels",
49
+ ];
50
+ // The incident events, which offer INCIDENT_VARIABLES and the custom fields.
51
+ const INCIDENT_EVENT_TYPES = [
52
+ StatusPageSubscriberNotificationEventType.SubscriberIncidentCreated,
53
+ StatusPageSubscriberNotificationEventType.SubscriberIncidentStateChanged,
54
+ StatusPageSubscriberNotificationEventType.SubscriberIncidentNoteCreated,
55
+ StatusPageSubscriberNotificationEventType.SubscriberIncidentNoteUpdated,
56
+ StatusPageSubscriberNotificationEventType.SubscriberIncidentPostmortemPublished,
57
+ ];
3
58
  /*
4
59
  * The variables a custom status page subscriber notification template can use
5
60
  * for each event type, as {{variableName}}.
@@ -29,7 +84,11 @@ export default class SubscriberNotificationTemplateVariables {
29
84
  ];
30
85
  const commonVariables = [
31
86
  ...statusPageVariables,
32
- { name: "resourcesAffected", description: "List of affected resources" },
87
+ {
88
+ name: "resourcesAffected",
89
+ description: "List of affected resources",
90
+ isHtmlInEmailBody: true,
91
+ },
33
92
  ];
34
93
  switch (eventType) {
35
94
  case StatusPageSubscriberNotificationEventType.SubscriberSubscriptionConfirmation:
@@ -57,9 +116,11 @@ export default class SubscriberNotificationTemplateVariables {
57
116
  {
58
117
  name: "incidentDescription",
59
118
  description: "Description of the incident",
119
+ isHtmlInEmailBody: true,
60
120
  },
61
121
  { name: "incidentSeverity", description: "Severity of the incident" },
62
122
  { name: "detailsUrl", description: "URL to view incident details" },
123
+ ...INCIDENT_VARIABLES,
63
124
  ];
64
125
  case StatusPageSubscriberNotificationEventType.SubscriberIncidentStateChanged:
65
126
  return [
@@ -68,6 +129,7 @@ export default class SubscriberNotificationTemplateVariables {
68
129
  {
69
130
  name: "incidentDescription",
70
131
  description: "Description of the incident",
132
+ isHtmlInEmailBody: true,
71
133
  },
72
134
  { name: "incidentSeverity", description: "Severity of the incident" },
73
135
  {
@@ -75,6 +137,7 @@ export default class SubscriberNotificationTemplateVariables {
75
137
  description: "Current state of the incident",
76
138
  },
77
139
  { name: "detailsUrl", description: "URL to view incident details" },
140
+ ...INCIDENT_VARIABLES,
78
141
  ];
79
142
  case StatusPageSubscriberNotificationEventType.SubscriberIncidentNoteCreated:
80
143
  case StatusPageSubscriberNotificationEventType.SubscriberIncidentNoteUpdated:
@@ -87,8 +150,13 @@ export default class SubscriberNotificationTemplateVariables {
87
150
  description: "Current state of the incident",
88
151
  },
89
152
  { name: "postedAt", description: "When the note was posted" },
90
- { name: "note", description: "Content of the note" },
153
+ {
154
+ name: "note",
155
+ description: "Content of the note",
156
+ isHtmlInEmailBody: true,
157
+ },
91
158
  { name: "detailsUrl", description: "URL to view incident details" },
159
+ ...INCIDENT_VARIABLES,
92
160
  ];
93
161
  case StatusPageSubscriberNotificationEventType.SubscriberIncidentPostmortemPublished:
94
162
  return [
@@ -98,8 +166,10 @@ export default class SubscriberNotificationTemplateVariables {
98
166
  {
99
167
  name: "postmortemNote",
100
168
  description: "Content of the postmortem note",
169
+ isHtmlInEmailBody: true,
101
170
  },
102
171
  { name: "detailsUrl", description: "URL to view incident details" },
172
+ ...INCIDENT_VARIABLES,
103
173
  ];
104
174
  case StatusPageSubscriberNotificationEventType.SubscriberAnnouncementCreated:
105
175
  case StatusPageSubscriberNotificationEventType.SubscriberAnnouncementUpdated:
@@ -112,6 +182,7 @@ export default class SubscriberNotificationTemplateVariables {
112
182
  {
113
183
  name: "announcementDescription",
114
184
  description: "Description of the announcement",
185
+ isHtmlInEmailBody: true,
115
186
  },
116
187
  {
117
188
  name: "detailsUrl",
@@ -128,6 +199,7 @@ export default class SubscriberNotificationTemplateVariables {
128
199
  {
129
200
  name: "scheduledMaintenanceDescription",
130
201
  description: "Description of the scheduled maintenance",
202
+ isHtmlInEmailBody: true,
131
203
  },
132
204
  {
133
205
  name: "scheduledStartTime",
@@ -152,6 +224,7 @@ export default class SubscriberNotificationTemplateVariables {
152
224
  {
153
225
  name: "scheduledMaintenanceDescription",
154
226
  description: "Description of the scheduled maintenance",
227
+ isHtmlInEmailBody: true,
155
228
  },
156
229
  {
157
230
  name: "scheduledMaintenanceState",
@@ -173,13 +246,18 @@ export default class SubscriberNotificationTemplateVariables {
173
246
  {
174
247
  name: "scheduledMaintenanceDescription",
175
248
  description: "Description of the scheduled maintenance",
249
+ isHtmlInEmailBody: true,
176
250
  },
177
251
  {
178
252
  name: "scheduledMaintenanceState",
179
253
  description: "Current state of the scheduled maintenance",
180
254
  },
181
255
  { name: "postedAt", description: "When the note was posted" },
182
- { name: "note", description: "Content of the note" },
256
+ {
257
+ name: "note",
258
+ description: "Content of the note",
259
+ isHtmlInEmailBody: true,
260
+ },
183
261
  {
184
262
  name: "detailsUrl",
185
263
  description: "URL to view scheduled maintenance details",
@@ -192,6 +270,7 @@ export default class SubscriberNotificationTemplateVariables {
192
270
  {
193
271
  name: "episodeDescription",
194
272
  description: "Description of the incident",
273
+ isHtmlInEmailBody: true,
195
274
  },
196
275
  { name: "episodeSeverity", description: "Severity of the incident" },
197
276
  { name: "detailsUrl", description: "URL to view incident details" },
@@ -213,7 +292,11 @@ export default class SubscriberNotificationTemplateVariables {
213
292
  ...commonVariables,
214
293
  { name: "episodeTitle", description: "Title of the incident" },
215
294
  { name: "episodeSeverity", description: "Severity of the incident" },
216
- { name: "note", description: "Content of the note" },
295
+ {
296
+ name: "note",
297
+ description: "Content of the note",
298
+ isHtmlInEmailBody: true,
299
+ },
217
300
  { name: "detailsUrl", description: "URL to view incident details" },
218
301
  ];
219
302
  case StatusPageSubscriberNotificationEventType.SubscriberReport:
@@ -286,10 +369,67 @@ export default class SubscriberNotificationTemplateVariables {
286
369
  throw new BadDataException(`Unknown event type: ${eventType}`);
287
370
  }
288
371
  }
372
+ // The variables that are HTML, not plain text, in an email template's body.
373
+ static getEmailBodyHtmlVariableNamesForEventType(eventType) {
374
+ return this.getAvailableVariablesForEventType(eventType)
375
+ .filter((variable) => {
376
+ return variable.isHtmlInEmailBody === true;
377
+ })
378
+ .map((variable) => {
379
+ return variable.name;
380
+ });
381
+ }
289
382
  static getVariableNamesForEventType(eventType) {
290
383
  return this.getAvailableVariablesForEventType(eventType).map((variable) => {
291
384
  return variable.name;
292
385
  });
293
386
  }
387
+ /*
388
+ * The families of variables this event offers on top of the listed ones,
389
+ * by prefix: the incident events' {{customFields.<key>}}.
390
+ */
391
+ static getDynamicVariablesForEventType(eventType) {
392
+ return INCIDENT_EVENT_TYPES.includes(eventType)
393
+ ? INCIDENT_DYNAMIC_VARIABLES.map((variable) => {
394
+ return Object.assign({}, variable);
395
+ })
396
+ : [];
397
+ }
398
+ /*
399
+ * The family this name belongs to, when it is one: the prefix followed by
400
+ * a key of the family's shape (for a custom field, the shape its Template
401
+ * Variable key is made in, which the template compiler fills). Null for a
402
+ * listed variable, a bare prefix, or a name the event does not offer.
403
+ */
404
+ static getDynamicVariableForName(eventType, name) {
405
+ for (const variable of this.getDynamicVariablesForEventType(eventType)) {
406
+ if (name.startsWith(variable.prefix) &&
407
+ variable.isValidKey(name.slice(variable.prefix.length))) {
408
+ return variable;
409
+ }
410
+ }
411
+ return null;
412
+ }
413
+ /**
414
+ * The placeholders in these texts - a template's body and email subject -
415
+ * that read the team's incident records (INCIDENT_RECORD_VARIABLE_NAMES
416
+ * and any {{customFields.<key>}}, whether or not such a field exists),
417
+ * each once, sorted. Found exactly as the compiler finds what it fills,
418
+ * whatever the template's event type: an update can change the event type
419
+ * without touching the text.
420
+ */
421
+ static getIncidentRecordPlaceholders(texts) {
422
+ return Array.from(SubscriberNotificationTemplateCompiler.getPlaceholderNames(texts))
423
+ .filter((name) => {
424
+ return (INCIDENT_RECORD_VARIABLE_NAMES.includes(name) ||
425
+ name.startsWith(CUSTOM_FIELD_TEMPLATE_VARIABLE_PREFIX));
426
+ })
427
+ .sort();
428
+ }
429
+ // Whether a template for this event can use {{name}}.
430
+ static isVariableOffered(eventType, name) {
431
+ return (this.getVariableNamesForEventType(eventType).includes(name) ||
432
+ this.getDynamicVariableForName(eventType, name) !== null);
433
+ }
294
434
  }
295
435
  //# sourceMappingURL=SubscriberNotificationTemplateVariables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriberNotificationTemplateVariables.js","sourceRoot":"","sources":["../../../../Types/StatusPage/SubscriberNotificationTemplateVariables.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,yCAAyC,MAAM,6CAA6C,CAAC;AAOpG;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,OAAO,uCAAuC;IACnD,MAAM,CAAC,iCAAiC,CAC7C,SAAoD;QAEpD;;;;;WAKG;QACH,MAAM,mBAAmB,GAAkD;YACzE,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,yBAAyB,EAAE;YAClE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,wBAAwB,EAAE;YAChE;gBACE,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,uCAAuC;aACrD;SACF,CAAC;QAEF,MAAM,eAAe,GAAkD;YACrE,GAAG,mBAAmB;YACtB,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,4BAA4B,EAAE;SACzE,CAAC;QAEF,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,yCAAyC,CAAC,kCAAkC;gBAC/E,OAAO;oBACL,GAAG,mBAAmB;oBACtB;wBACE,IAAI,EAAE,iBAAiB;wBACvB,WAAW,EACT,wDAAwD;qBAC3D;iBACF,CAAC;YAEJ,KAAK,yCAAyC,CAAC,oBAAoB;gBACjE,OAAO,CAAC,GAAG,mBAAmB,CAAC,CAAC;YAElC,KAAK,yCAAyC,CAAC,4BAA4B;gBACzE,OAAO;oBACL,GAAG,mBAAmB;oBACtB;wBACE,IAAI,EAAE,uBAAuB;wBAC7B,WAAW,EACT,gEAAgE;qBACnE;iBACF,CAAC;YAEJ,KAAK,yCAAyC,CAAC,yBAAyB;gBACtE,OAAO;oBACL,GAAG,eAAe;oBAClB,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAC/D;wBACE,IAAI,EAAE,qBAAqB;wBAC3B,WAAW,EAAE,6BAA6B;qBAC3C;oBACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACrE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBACpE,CAAC;YAEJ,KAAK,yCAAyC,CAAC,8BAA8B;gBAC3E,OAAO;oBACL,GAAG,eAAe;oBAClB,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAC/D;wBACE,IAAI,EAAE,qBAAqB;wBAC3B,WAAW,EAAE,6BAA6B;qBAC3C;oBACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACrE;wBACE,IAAI,EAAE,eAAe;wBACrB,WAAW,EAAE,+BAA+B;qBAC7C;oBACD,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBACpE,CAAC;YAEJ,KAAK,yCAAyC,CAAC,6BAA6B,CAAC;YAC7E,KAAK,yCAAyC,CAAC,6BAA6B;gBAC1E,OAAO;oBACL,GAAG,eAAe;oBAClB,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAC/D,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACrE;wBACE,IAAI,EAAE,eAAe;wBACrB,WAAW,EAAE,+BAA+B;qBAC7C;oBACD,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBAC7D,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;oBACpD,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBACpE,CAAC;YAEJ,KAAK,yCAAyC,CAAC,qCAAqC;gBAClF,OAAO;oBACL,GAAG,eAAe;oBAClB,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAC/D,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACrE;wBACE,IAAI,EAAE,gBAAgB;wBACtB,WAAW,EAAE,gCAAgC;qBAC9C;oBACD,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBACpE,CAAC;YAEJ,KAAK,yCAAyC,CAAC,6BAA6B,CAAC;YAC7E,KAAK,yCAAyC,CAAC,6BAA6B;gBAC1E,OAAO;oBACL,GAAG,eAAe;oBAClB;wBACE,IAAI,EAAE,mBAAmB;wBACzB,WAAW,EAAE,2BAA2B;qBACzC;oBACD;wBACE,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,iCAAiC;qBAC/C;oBACD;wBACE,IAAI,EAAE,YAAY;wBAClB,WAAW,EAAE,kCAAkC;qBAChD;iBACF,CAAC;YAEJ,KAAK,yCAAyC,CAAC,qCAAqC;gBAClF,OAAO;oBACL,GAAG,eAAe;oBAClB;wBACE,IAAI,EAAE,2BAA2B;wBACjC,WAAW,EAAE,oCAAoC;qBAClD;oBACD;wBACE,IAAI,EAAE,iCAAiC;wBACvC,WAAW,EAAE,0CAA0C;qBACxD;oBACD;wBACE,IAAI,EAAE,oBAAoB;wBAC1B,WAAW,EAAE,4CAA4C;qBAC1D;oBACD;wBACE,IAAI,EAAE,kBAAkB;wBACxB,WAAW,EAAE,0CAA0C;qBACxD;oBACD;wBACE,IAAI,EAAE,YAAY;wBAClB,WAAW,EAAE,2CAA2C;qBACzD;iBACF,CAAC;YAEJ,KAAK,yCAAyC,CAAC,0CAA0C;gBACvF,OAAO;oBACL,GAAG,eAAe;oBAClB;wBACE,IAAI,EAAE,2BAA2B;wBACjC,WAAW,EAAE,oCAAoC;qBAClD;oBACD;wBACE,IAAI,EAAE,iCAAiC;wBACvC,WAAW,EAAE,0CAA0C;qBACxD;oBACD;wBACE,IAAI,EAAE,2BAA2B;wBACjC,WAAW,EAAE,4CAA4C;qBAC1D;oBACD;wBACE,IAAI,EAAE,YAAY;wBAClB,WAAW,EAAE,2CAA2C;qBACzD;iBACF,CAAC;YAEJ,KAAK,yCAAyC,CAAC,yCAAyC,CAAC;YACzF,KAAK,yCAAyC,CAAC,yCAAyC;gBACtF,OAAO;oBACL,GAAG,eAAe;oBAClB;wBACE,IAAI,EAAE,2BAA2B;wBACjC,WAAW,EAAE,oCAAoC;qBAClD;oBACD;wBACE,IAAI,EAAE,iCAAiC;wBACvC,WAAW,EAAE,0CAA0C;qBACxD;oBACD;wBACE,IAAI,EAAE,2BAA2B;wBACjC,WAAW,EAAE,4CAA4C;qBAC1D;oBACD,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBAC7D,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;oBACpD;wBACE,IAAI,EAAE,YAAY;wBAClB,WAAW,EAAE,2CAA2C;qBACzD;iBACF,CAAC;YAEJ,KAAK,yCAAyC,CAAC,wBAAwB;gBACrE,OAAO;oBACL,GAAG,eAAe;oBAClB,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAC9D;wBACE,IAAI,EAAE,oBAAoB;wBAC1B,WAAW,EAAE,6BAA6B;qBAC3C;oBACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACpE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBACpE,CAAC;YAEJ,KAAK,yCAAyC,CAAC,6BAA6B;gBAC1E,OAAO;oBACL,GAAG,eAAe;oBAClB,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAC9D,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACpE;wBACE,IAAI,EAAE,cAAc;wBACpB,WAAW,EAAE,+BAA+B;qBAC7C;oBACD,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBACpE,CAAC;YAEJ,KAAK,yCAAyC,CAAC,4BAA4B,CAAC;YAC5E,KAAK,yCAAyC,CAAC,4BAA4B;gBACzE,OAAO;oBACL,GAAG,eAAe;oBAClB,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAC9D,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACpE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;oBACpD,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBACpE,CAAC;YAEJ,KAAK,yCAAyC,CAAC,gBAAgB;gBAC7D;;;;;mBAKG;gBACH,OAAO;oBACL,GAAG,mBAAmB;oBACtB;wBACE,IAAI,EAAE,oBAAoB;wBAC1B,WAAW,EAAE,iCAAiC;qBAC/C;oBACD;wBACE,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EACT,uEAAuE;qBAC1E;oBACD;wBACE,IAAI,EAAE,wBAAwB;wBAC9B,WAAW,EAAE,mCAAmC;qBACjD;oBACD;wBACE,IAAI,EAAE,sBAAsB;wBAC5B,WAAW,EAAE,kCAAkC;qBAChD;oBACD;wBACE,IAAI,EAAE,uBAAuB;wBAC7B,WAAW,EAAE,mDAAmD;qBACjE;oBACD;wBACE,IAAI,EAAE,6BAA6B;wBACnC,WAAW,EAAE,qCAAqC;qBACnD;oBACD;wBACE,IAAI,EAAE,uCAAuC;wBAC7C,WAAW,EAAE,8BAA8B;qBAC5C;oBACD;wBACE,IAAI,EAAE,uBAAuB;wBAC7B,WAAW,EAAE,yCAAyC;qBACvD;oBACD;wBACE,IAAI,EAAE,uBAAuB;wBAC7B,WAAW,EAAE,wCAAwC;qBACtD;oBACD;wBACE,IAAI,EAAE,kBAAkB;wBACxB,WAAW,EACT,mKAAmK;qBACtK;oBACD;wBACE,IAAI,EAAE,kBAAkB;wBACxB,WAAW,EACT,+DAA+D;qBAClE;oBACD;wBACE,IAAI,EAAE,aAAa;wBACnB,WAAW,EACT,wNAAwN;qBAC3N;oBACD;wBACE,IAAI,EAAE,eAAe;wBACrB,WAAW,EACT,gLAAgL;qBACnL;oBACD;wBACE,IAAI,EAAE,2BAA2B;wBACjC,WAAW,EAAE,sDAAsD;qBACpE;iBACF,CAAC;YAEJ;gBACE,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,4BAA4B,CACxC,SAAoD;QAEpD,OAAO,IAAI,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC,GAAG,CAC1D,CAAC,QAAgD,EAAU,EAAE;YAC3D,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"SubscriberNotificationTemplateVariables.js","sourceRoot":"","sources":["../../../../Types/StatusPage/SubscriberNotificationTemplateVariables.ts"],"names":[],"mappings":"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"}
@@ -37,24 +37,44 @@ class SubscriberUpdateNotification {
37
37
  }
38
38
  /*
39
39
  * Returns why an update notification should not be sent given where the
40
- * original ("posted") notification is, or null when it may go out.
40
+ * original ("posted") notification is, or null when it may go out - or
41
+ * wait (see isOriginalNotificationBeingSent).
41
42
  *
42
- * While the original is still Pending or InProgress, subscribers have not
43
- * heard of the item at all. The original notification reads the item when it
44
- * is sent, so it already carries this edit - a second "updated" message
45
- * about something they were never told about would only confuse them.
43
+ * While the original is still Pending, subscribers have not heard of the
44
+ * item at all, and the original will carry this edit: the edit changed the
45
+ * row's version, so the run that claims the original
46
+ * (SubscriberNotificationClaim, which checks the version it read) has read
47
+ * the item since. A second "updated" message about something they were
48
+ * never told about would only confuse them.
49
+ *
50
+ * InProgress is different: that send read the item before it claimed it,
51
+ * and goes on with what it read, so it may carry the text from before the
52
+ * edit - a typo fixed, or an ETA corrected, right after posting is exactly
53
+ * that case. The update waits for it instead
54
+ * (isOriginalNotificationBeingSent), and goes out once it has settled.
46
55
  *
47
56
  * Every settled state lets the update through: Success is the normal case,
48
- * and Skipped or Failed mean subscribers were not told originally, which the
49
- * editor is now explicitly asking to do.
57
+ * and Skipped or Failed mean subscribers were not told originally (or not
58
+ * all of them), which the editor is now explicitly asking to do.
50
59
  */
51
60
  static getSkipReasonForOriginalNotificationStatus(originalStatus) {
52
- if (originalStatus === StatusPageSubscriberNotificationStatus.Pending ||
53
- originalStatus === StatusPageSubscriberNotificationStatus.InProgress) {
61
+ if (originalStatus === StatusPageSubscriberNotificationStatus.Pending) {
54
62
  return this.notYetNotifiedMessage;
55
63
  }
56
64
  return null;
57
65
  }
66
+ /*
67
+ * Whether the update notification waits: the original ("posted")
68
+ * notification is being sent right now, with the item as it was read
69
+ * before the edit. The update is left Pending, untouched, and the job
70
+ * decides again on a later run, once the original has settled - then it
71
+ * goes out, since subscribers may have been sent the text from before the
72
+ * edit. A send that never settles is failed by the sweeper
73
+ * (StatusPageSubscriber:TimeoutStuckNotifications), which lets it through.
74
+ */
75
+ static isOriginalNotificationBeingSent(originalStatus) {
76
+ return originalStatus === StatusPageSubscriberNotificationStatus.InProgress;
77
+ }
58
78
  }
59
79
  // The misc data prop an update request carries to ask for a notification.
60
80
  SubscriberUpdateNotification.miscDataKey = "notifySubscribersOfUpdate";
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriberUpdateNotification.js","sourceRoot":"","sources":["../../../../Types/StatusPage/SubscriberUpdateNotification.ts"],"names":[],"mappings":"AACA,OAAO,sCAAsC,MAAM,0CAA0C,CAAC;AAE9F;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAqB,4BAA4B;IAmB/C;;;;OAIG;IACI,MAAM,CAAC,WAAW,CACvB,aAA4C;QAE5C,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAY,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,gBAAgB;QAC5B,OAAO;YACL,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI;SACzB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,0CAA0C,CACtD,cAAyE;QAEzE,IACE,cAAc,KAAK,sCAAsC,CAAC,OAAO;YACjE,cAAc,KAAK,sCAAsC,CAAC,UAAU,EACpE,CAAC;YACD,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;;AAjED,0EAA0E;AACnD,wCAAW,GAAW,2BAA2B,CAAC;AAElD,0CAAa,GAClC,yDAAyD,CAAC;AAErC,gDAAmB,GACxC,2CAA2C,CAAC;AAEvB,wCAAW,GAChC,4DAA4D,CAAC;AAExC,kDAAqB,GAC1C,+JAA+J,CAAC;AAE3I,2CAAc,GACnC,sCAAsC,CAAC;eAjBtB,4BAA4B"}
1
+ {"version":3,"file":"SubscriberUpdateNotification.js","sourceRoot":"","sources":["../../../../Types/StatusPage/SubscriberUpdateNotification.ts"],"names":[],"mappings":"AACA,OAAO,sCAAsC,MAAM,0CAA0C,CAAC;AAE9F;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAqB,4BAA4B;IAmB/C;;;;OAIG;IACI,MAAM,CAAC,WAAW,CACvB,aAA4C;QAE5C,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAY,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,gBAAgB;QAC5B,OAAO;YACL,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI;SACzB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,MAAM,CAAC,0CAA0C,CACtD,cAAyE;QAEzE,IAAI,cAAc,KAAK,sCAAsC,CAAC,OAAO,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,+BAA+B,CAC3C,cAAyE;QAEzE,OAAO,cAAc,KAAK,sCAAsC,CAAC,UAAU,CAAC;IAC9E,CAAC;;AAtFD,0EAA0E;AACnD,wCAAW,GAAW,2BAA2B,CAAC;AAElD,0CAAa,GAClC,yDAAyD,CAAC;AAErC,gDAAmB,GACxC,2CAA2C,CAAC;AAEvB,wCAAW,GAChC,4DAA4D,CAAC;AAExC,kDAAqB,GAC1C,+JAA+J,CAAC;AAE3I,2CAAc,GACnC,sCAAsC,CAAC;eAjBtB,4BAA4B"}
@@ -34,4 +34,27 @@ export const getInventoryLivenessState = (input) => {
34
34
  }
35
35
  return InventoryLiveness.Stale;
36
36
  };
37
+ /**
38
+ * `getInventoryLivenessState` as a Postgres expression over the row aliased
39
+ * `tableAlias`, which must already be quoted (`"InventoryItem"`).
40
+ *
41
+ * The one SQL definition of the rule: the `inventoryStatus` virtual column
42
+ * selects and filters with it, and the Inventory Overview counts "Gone
43
+ * Quiet" with it, so the number on that tile and the rows the Stale facet
44
+ * returns cannot disagree about what stale means.
45
+ *
46
+ * Measured against the database clock. The function above floors elapsed
47
+ * minutes before applying inclusive thresholds — 30m59s is still Live and
48
+ * 24h00m59s is still Recent — and strict comparisons against the following
49
+ * minute preserve exactly those boundaries.
50
+ */
51
+ export const getInventoryLivenessSql = (tableAlias) => {
52
+ return `CASE
53
+ WHEN ${tableAlias}."source" IS DISTINCT FROM '${EntitySource.Discovered}' THEN '${InventoryLiveness.NotTracked}'
54
+ WHEN ${tableAlias}."lastSeenAt" IS NULL THEN '${InventoryLiveness.Never}'
55
+ WHEN ${tableAlias}."lastSeenAt" > CURRENT_TIMESTAMP - INTERVAL '${INVENTORY_LIVE_WINDOW_MINUTES + 1} minutes' THEN '${InventoryLiveness.Live}'
56
+ WHEN ${tableAlias}."lastSeenAt" > CURRENT_TIMESTAMP - INTERVAL '${INVENTORY_STALE_AFTER_MINUTES + 1} minutes' THEN '${InventoryLiveness.Recent}'
57
+ ELSE '${InventoryLiveness.Stale}'
58
+ END`;
59
+ };
37
60
  //# sourceMappingURL=InventoryLiveness.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InventoryLiveness.js","sourceRoot":"","sources":["../../../../Types/Telemetry/InventoryLiveness.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,oCAAe,CAAA;IACf,oCAAe,CAAA;IACf,+CAA0B,CAAA;AAC5B,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAW,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAW,EAAE,GAAG,EAAE,CAAC;AAQ7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAEb,CAAC,KAA6B,EAAqB,EAAE;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,UAAU,EAAE,CAAC;QAC7C,OAAO,iBAAiB,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,MAAM,UAAU,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEpD,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,MAAM,oBAAoB,GAAW,IAAI,CAAC,GAAG,CAC3C,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CACvE,CAAC;IAEF,IAAI,oBAAoB,IAAI,6BAA6B,EAAE,CAAC;QAC1D,OAAO,iBAAiB,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,IAAI,oBAAoB,IAAI,6BAA6B,EAAE,CAAC;QAC1D,OAAO,iBAAiB,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,OAAO,iBAAiB,CAAC,KAAK,CAAC;AACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"InventoryLiveness.js","sourceRoot":"","sources":["../../../../Types/Telemetry/InventoryLiveness.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,oCAAe,CAAA;IACf,oCAAe,CAAA;IACf,+CAA0B,CAAA;AAC5B,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAW,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAW,EAAE,GAAG,EAAE,CAAC;AAQ7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAEb,CAAC,KAA6B,EAAqB,EAAE;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,UAAU,EAAE,CAAC;QAC7C,OAAO,iBAAiB,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,MAAM,UAAU,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEpD,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,MAAM,oBAAoB,GAAW,IAAI,CAAC,GAAG,CAC3C,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CACvE,CAAC;IAEF,IAAI,oBAAoB,IAAI,6BAA6B,EAAE,CAAC;QAC1D,OAAO,iBAAiB,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,IAAI,oBAAoB,IAAI,6BAA6B,EAAE,CAAC;QAC1D,OAAO,iBAAiB,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,OAAO,iBAAiB,CAAC,KAAK,CAAC;AACjC,CAAC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmC,CACrE,UAAkB,EACV,EAAE;IACV,OAAO;eACM,UAAU,+BAA+B,YAAY,CAAC,UAAU,WAAW,iBAAiB,CAAC,UAAU;eACvG,UAAU,+BAA+B,iBAAiB,CAAC,KAAK;eAChE,UAAU,iDAAiD,6BAA6B,GAAG,CAAC,mBAAmB,iBAAiB,CAAC,IAAI;eACrI,UAAU,iDAAiD,6BAA6B,GAAG,CAAC,mBAAmB,iBAAiB,CAAC,MAAM;gBACtI,iBAAiB,CAAC,KAAK;UAC7B,CAAC;AACX,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Wire contract of the Topology API (POST /api/telemetry/topology/...).
3
+ *
4
+ * The Topology maps used to download the whole inventory — every item and
5
+ * every relationship — and build the maps in the browser, which stopped at
6
+ * 10,000 rows of each. These endpoints do the graph work in Postgres instead
7
+ * and return only what each view draws, so counts, search and connections
8
+ * cover the whole inventory however large it is.
9
+ *
10
+ * This is an internal contract between the server and the Dashboard bundle
11
+ * that shipped with it, not a public API. `formatVersion` changes whenever a
12
+ * response shape does, so an old bundle talking to a new server can tell the
13
+ * user to reload instead of misreading the payload.
14
+ *
15
+ * Every request carries `rangeStart` (ISO 8601). The server floors it to the
16
+ * minute, uses it for every "reported in range" decision, and echoes the value
17
+ * it used; the client must compute activity against the echoed value so both
18
+ * sides agree about which resources are active. Timestamps in responses are
19
+ * epoch milliseconds.
20
+ */
21
+ export const TOPOLOGY_API_FORMAT_VERSION = 1;
22
+ export var TopologyApiPath;
23
+ (function (TopologyApiPath) {
24
+ TopologyApiPath["ServiceMap"] = "/telemetry/topology/service-map";
25
+ TopologyApiPath["Infrastructure"] = "/telemetry/topology/infrastructure";
26
+ TopologyApiPath["InfrastructureCollection"] = "/telemetry/topology/infrastructure/collection";
27
+ TopologyApiPath["InfrastructureCollectionSearch"] = "/telemetry/topology/infrastructure/collection-search";
28
+ TopologyApiPath["Entity"] = "/telemetry/topology/entity";
29
+ TopologyApiPath["EntityConnections"] = "/telemetry/topology/entity/connections";
30
+ /*
31
+ * The same sections over everything the inventory holds rather than over a
32
+ * range (see TopologyEntityAllTimeRequestJSON): the inventory item page's
33
+ * Connections card, which has no time range.
34
+ */
35
+ TopologyApiPath["EntityAllTime"] = "/telemetry/topology/entity/all-time";
36
+ TopologyApiPath["EntityAllTimeConnections"] = "/telemetry/topology/entity/all-time/connections";
37
+ })(TopologyApiPath || (TopologyApiPath = {}));
38
+ export const TopologyApiLimits = {
39
+ MaxServiceMapEntities: 50000,
40
+ MaxServiceMapDependencies: 200000,
41
+ MaxInfrastructureNodes: 200000,
42
+ InlineFlatItemsPerType: 1000,
43
+ CollectionPageSizeDefault: 50,
44
+ CollectionPageSizeMax: 200,
45
+ MaxSearchTerms: 10,
46
+ MaxSearchTermLength: 100,
47
+ MaxCollectionSearchTypes: 100,
48
+ EntityDependencyRows: 100,
49
+ EntityOtherRows: 25,
50
+ EntityConnectionsPageSizeMax: 200,
51
+ EntityConnectionScanLimit: 100000,
52
+ MaxMapRangeStartAgeDays: 400,
53
+ };
54
+ export const TOPOLOGY_CONNECTION_SECTIONS = ["calls", "calledBy", "runsOn", "related"];
55
+ //# sourceMappingURL=TopologyApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopologyApi.js","sourceRoot":"","sources":["../../../../Types/Topology/TopologyApi.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAW,CAAC,CAAC;AAErD,MAAM,CAAN,IAAY,eAcX;AAdD,WAAY,eAAe;IACzB,iEAA8C,CAAA;IAC9C,wEAAqD,CAAA;IACrD,6FAA0E,CAAA;IAC1E,0GAAuF,CAAA;IACvF,wDAAqC,CAAA;IACrC,+EAA4D,CAAA;IAC5D;;;;OAIG;IACH,wEAAqD,CAAA;IACrD,+FAA4E,CAAA;AAC9E,CAAC,EAdW,eAAe,KAAf,eAAe,QAc1B;AAED,MAAM,CAAC,MAAM,iBAAiB,GAuC1B;IACF,qBAAqB,EAAE,KAAM;IAC7B,yBAAyB,EAAE,MAAO;IAClC,sBAAsB,EAAE,MAAO;IAC/B,sBAAsB,EAAE,IAAK;IAC7B,yBAAyB,EAAE,EAAE;IAC7B,qBAAqB,EAAE,GAAG;IAC1B,cAAc,EAAE,EAAE;IAClB,mBAAmB,EAAE,GAAG;IACxB,wBAAwB,EAAE,GAAG;IAC7B,oBAAoB,EAAE,GAAG;IACzB,eAAe,EAAE,EAAE;IACnB,4BAA4B,EAAE,GAAG;IACjC,yBAAyB,EAAE,MAAO;IAClC,uBAAuB,EAAE,GAAG;CAC7B,CAAC;AAsEF,MAAM,CAAC,MAAM,4BAA4B,GACvC,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC"}
@@ -0,0 +1,165 @@
1
+ import EntityRelationshipType from "../Telemetry/EntityRelationshipType";
2
+ import EntityType from "../Telemetry/EntityType";
3
+ /*
4
+ * The rules that shape the Topology maps, shared by the server (which reduces
5
+ * the inventory graph in SQL) and the Dashboard (which builds the maps from
6
+ * the reduced data). Keeping them in one place is what lets the server hand
7
+ * the browser a few rows per resource instead of every relationship and still
8
+ * produce exactly the tree the Dashboard would have built from all of them.
9
+ */
10
+ /*
11
+ * Types the Service Map owns. They describe software and its dependencies,
12
+ * not where anything runs, so they never become Infrastructure rows.
13
+ */
14
+ export const TOPOLOGY_APPLICATION_TYPES = new Set([
15
+ EntityType.Service,
16
+ EntityType.ServiceInstance,
17
+ EntityType.TelemetrySdk,
18
+ EntityType.Database,
19
+ EntityType.RemoteService,
20
+ EntityType.Process,
21
+ ]);
22
+ /** Types that may nest inside a structural container. */
23
+ export const NESTABLE_CHILD_TYPES = new Set([
24
+ EntityType.Container,
25
+ EntityType.Process,
26
+ EntityType.KubernetesPod,
27
+ EntityType.KubernetesNode,
28
+ EntityType.KubernetesNamespace,
29
+ EntityType.KubernetesDeployment,
30
+ EntityType.ProxmoxNode,
31
+ EntityType.ProxmoxGuest,
32
+ EntityType.VMwareCluster,
33
+ EntityType.VMwareHost,
34
+ EntityType.VMwareVirtualMachine,
35
+ EntityType.VMwareDatastore,
36
+ EntityType.DockerSwarmNode,
37
+ EntityType.DockerSwarmService,
38
+ EntityType.DockerSwarmTask,
39
+ ]);
40
+ /*
41
+ * Valid structural containers, higher = more specific. Doubles as the
42
+ * allow-list of parent types: a candidate whose parent type is absent here
43
+ * (e.g. a Service) is rejected before priority is compared.
44
+ */
45
+ export const CONTAINER_SPECIFICITY = {
46
+ [EntityType.KubernetesCluster]: 0,
47
+ [EntityType.ProxmoxCluster]: 0,
48
+ /*
49
+ * vSphere nests vCenter ⊃ cluster ⊃ ESXi host ⊃ VM; datastores sit
50
+ * directly under the vCenter. The cluster is optional (standalone hosts
51
+ * hang straight off the vCenter), so the host is more specific than the
52
+ * cluster but both may parent directly to the vCenter.
53
+ */
54
+ [EntityType.VMwareVCenter]: 0,
55
+ [EntityType.VMwareCluster]: 1,
56
+ [EntityType.CephCluster]: 0,
57
+ [EntityType.DockerSwarmCluster]: 0,
58
+ [EntityType.Host]: 1,
59
+ [EntityType.KubernetesNamespace]: 1,
60
+ [EntityType.KubernetesNode]: 2,
61
+ [EntityType.KubernetesDeployment]: 2,
62
+ [EntityType.ProxmoxNode]: 2,
63
+ [EntityType.VMwareHost]: 2,
64
+ [EntityType.DockerSwarmNode]: 2,
65
+ [EntityType.KubernetesPod]: 3,
66
+ [EntityType.ProxmoxGuest]: 3,
67
+ [EntityType.VMwareVirtualMachine]: 3,
68
+ [EntityType.DockerSwarmTask]: 3,
69
+ [EntityType.Container]: 4,
70
+ };
71
+ /* Which relationship expresses containment best: part-of > runs-on > member-of. */
72
+ export const NESTING_RELATIONSHIP_PRIORITY = {
73
+ [EntityRelationshipType.PartOf]: 3,
74
+ [EntityRelationshipType.RunsOn]: 2,
75
+ [EntityRelationshipType.MemberOf]: 1,
76
+ };
77
+ /* Replicas worth collapsing: leaf resources that come in fleets. */
78
+ export const REPLICA_GROUPABLE_TYPES = new Set([
79
+ EntityType.Host,
80
+ EntityType.KubernetesPod,
81
+ EntityType.Container,
82
+ EntityType.DockerSwarmTask,
83
+ EntityType.ProxmoxGuest,
84
+ EntityType.VMwareVirtualMachine,
85
+ ]);
86
+ /* service → where it runs (service→host is hosted-on, service→pod runs-on). */
87
+ export const PLACEMENT_RELATIONSHIP_TYPES = new Set([
88
+ EntityRelationshipType.RunsOn,
89
+ EntityRelationshipType.HostedOn,
90
+ ]);
91
+ /*
92
+ * The attributes the Service Map reads to label a node ("Node.js",
93
+ * "PostgreSQL"), in the order it tries them. The server ships only these, so
94
+ * the list lives here rather than beside the reader.
95
+ */
96
+ export const SERVICE_MAP_DETAIL_ATTRIBUTE_KEYS = [
97
+ "telemetry.sdk.language",
98
+ "db.system.name",
99
+ "network.protocol.name",
100
+ "messaging.system",
101
+ ];
102
+ /*
103
+ * Orders two keys by Unicode code point, which is the order Postgres gives
104
+ * `COLLATE "C"` on a UTF-8 database (UTF-8 bytes sort like code points). The
105
+ * server breaks ranking ties that way, so wherever the Dashboard must pick
106
+ * the same winner it compares with this rather than with `<`.
107
+ *
108
+ * JavaScript's `<` compares UTF-16 code units. The two orders agree
109
+ * everywhere except where a character beyond U+FFFF (stored as a surrogate
110
+ * pair, U+D800-U+DFFF) meets one in U+E000-U+FFFF: as code units the
111
+ * surrogate is smaller, as code points it is larger. Keys made only of
112
+ * characters up to U+FFFF therefore compare exactly as `<` compares them.
113
+ */
114
+ export function compareCodePoints(a, b) {
115
+ if (a === b) {
116
+ return 0;
117
+ }
118
+ const length = Math.min(a.length, b.length);
119
+ for (let index = 0; index < length; index++) {
120
+ const left = a.charCodeAt(index);
121
+ const right = b.charCodeAt(index);
122
+ if (left === right) {
123
+ continue;
124
+ }
125
+ if (left >= 0xd800 && right >= 0xd800) {
126
+ const leftIsSurrogate = left <= 0xdfff;
127
+ const rightIsSurrogate = right <= 0xdfff;
128
+ if (leftIsSurrogate !== rightIsSurrogate) {
129
+ /* The half of a character beyond U+FFFF outranks U+E000-U+FFFF. */
130
+ return leftIsSurrogate ? 1 : -1;
131
+ }
132
+ }
133
+ return left < right ? -1 : 1;
134
+ }
135
+ /* One is a prefix of the other: the shorter sorts first. */
136
+ return a.length < b.length ? -1 : 1;
137
+ }
138
+ export function isTopologyInfrastructureType(entityType) {
139
+ return (Boolean(entityType) &&
140
+ entityType !== EntityType.Service &&
141
+ !TOPOLOGY_APPLICATION_TYPES.has(entityType));
142
+ }
143
+ /*
144
+ * Structural infrastructure types can take part in the tree: they nest, hold
145
+ * other resources, or are grouped with their replicas. Everything else that is
146
+ * infrastructure (network devices, IoT devices, cloud resources, manually
147
+ * registered appliances, types this version does not know) is flat: it never
148
+ * has a parent, never contains anything, and nothing groups it. Flat types are
149
+ * also the ones whose volume is not bounded by the discovery budgets, so the
150
+ * server summarizes a large flat type instead of shipping every row.
151
+ */
152
+ export function isStructuralInfrastructureType(entityType) {
153
+ if (!isTopologyInfrastructureType(entityType)) {
154
+ return false;
155
+ }
156
+ const type = entityType;
157
+ return (NESTABLE_CHILD_TYPES.has(type) ||
158
+ CONTAINER_SPECIFICITY[type] !== undefined ||
159
+ REPLICA_GROUPABLE_TYPES.has(type));
160
+ }
161
+ export function isFlatInfrastructureType(entityType) {
162
+ return (isTopologyInfrastructureType(entityType) &&
163
+ !isStructuralInfrastructureType(entityType));
164
+ }
165
+ //# sourceMappingURL=TopologyTypeRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopologyTypeRules.js","sourceRoot":"","sources":["../../../../Types/Topology/TopologyTypeRules.ts"],"names":[],"mappings":"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"}