@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
@@ -45,5 +45,53 @@ export const escapeMarkdownInline = (value) => {
45
45
  return `\\${character}`;
46
46
  });
47
47
  };
48
+ /*
49
+ * Escaping for a plain value placed into Markdown that a PERSON goes on to
50
+ * read and edit before it is posted - an incident's title or a custom field
51
+ * value filled into a note template's {{placeholders}}.
52
+ *
53
+ * escapeMarkdownInline above is the wrong tool there. The note composer opens
54
+ * in its visual mode, which shows a backslash escape exactly as written, so a
55
+ * title such as "Site 03 - payments (EU)" would appear to the author as
56
+ * "Site 03 \- payments \(EU\)". Restyling a value is harmless in a draft its
57
+ * author reviews; what must not happen is the value turning into something
58
+ * else once the note is rendered for subscribers. So only the characters that
59
+ * can make a value into a link, an image or HTML are escaped:
60
+ *
61
+ * - `[` and `]`: every link and image, inline or by reference, is built
62
+ * from brackets. `[Reset your password](https://evil.example)` in a title
63
+ * would otherwise arrive in subscribers' email as a live link, and
64
+ * `![](https://tracker.example/pixel)` as an image fetched on open. The
65
+ * closing bracket matters too: a template may put the value inside a link
66
+ * of its own, and a value must not be able to end that link's text.
67
+ * - `<`: raw HTML and `<https://...>` autolinks both start with it. (The
68
+ * renderers drop raw HTML as well; this keeps it readable as text.)
69
+ * - `\`: a value ending in a backslash would otherwise undo the escape
70
+ * that follows it.
71
+ *
72
+ * A bare address in a value ("https://example.com") is still made a link by
73
+ * the renderers, as it is when someone types one into a note - but such a
74
+ * link shows the address it goes to. No value can make link text that hides
75
+ * its destination.
76
+ *
77
+ * Line breaks become spaces unless `keepLineBreaks` is set (a long text
78
+ * value): a newline could start a heading or a list, which a single-line
79
+ * value has no business doing.
80
+ *
81
+ * Like escapeMarkdownInline, escape once, where the value is placed.
82
+ */
83
+ const MARKDOWN_LINK_OR_HTML_CHARACTER_PATTERN = /[\\[\]<]/g;
84
+ export const escapeMarkdownValue = (value, options) => {
85
+ if (value === undefined || value === null) {
86
+ return "";
87
+ }
88
+ let text = String(value).replace(MARKDOWN_LINK_OR_HTML_CHARACTER_PATTERN, (character) => {
89
+ return `\\${character}`;
90
+ });
91
+ text = (options === null || options === void 0 ? void 0 : options.keepLineBreaks)
92
+ ? text.replace(LINE_BREAK_PATTERN, "\n")
93
+ : text.replace(LINE_BREAK_PATTERN, " ");
94
+ return text;
95
+ };
48
96
  export default escapeMarkdownInline;
49
97
  //# sourceMappingURL=MarkdownEscape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownEscape.js","sourceRoot":"","sources":["../../../../Utils/Markdown/MarkdownEscape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,kBAAkB,GAAW,aAAa,CAAC;AAEjD;;;;GAIG;AACH,MAAM,yCAAyC,GAC7C,uBAAuB,CAAC;AAM1B,MAAM,CAAC,MAAM,oBAAoB,GAAiC,CAChE,KAAgC,EACxB,EAAE;IACV,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,8EAA8E;IAC9E,OAAO,MAAM,CAAC,KAAK,CAAC;SACjB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,OAAO,CACN,yCAAyC,EACzC,CAAC,SAAiB,EAAU,EAAE;QAC5B,OAAO,KAAK,SAAS,EAAE,CAAC;IAC1B,CAAC,CACF,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"MarkdownEscape.js","sourceRoot":"","sources":["../../../../Utils/Markdown/MarkdownEscape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,kBAAkB,GAAW,aAAa,CAAC;AAEjD;;;;GAIG;AACH,MAAM,yCAAyC,GAC7C,uBAAuB,CAAC;AAM1B,MAAM,CAAC,MAAM,oBAAoB,GAAiC,CAChE,KAAgC,EACxB,EAAE;IACV,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,8EAA8E;IAC9E,OAAO,MAAM,CAAC,KAAK,CAAC;SACjB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,OAAO,CACN,yCAAyC,EACzC,CAAC,SAAiB,EAAU,EAAE;QAC5B,OAAO,KAAK,SAAS,EAAE,CAAC;IAC1B,CAAC,CACF,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,uCAAuC,GAAW,WAAW,CAAC;AAOpE,MAAM,CAAC,MAAM,mBAAmB,GAAgC,CAC9D,KAAgC,EAChC,OAAkD,EAC1C,EAAE;IACV,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CACtC,uCAAuC,EACvC,CAAC,SAAiB,EAAU,EAAE;QAC5B,OAAO,KAAK,SAAS,EAAE,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,IAAI,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc;QAC5B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;QACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAE1C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,460 @@
1
+ import HostAddressUtil from "./HostAddressUtil";
2
+ /*
3
+ * Tells a check that failed ON THE PROBE apart from one that failed at the
4
+ * destination, and words the probe-side case so it cannot be read as a
5
+ * verdict on the customer's host.
6
+ *
7
+ * The case this exists for: a probe with no usable IPv6. Every IPv6 check it
8
+ * runs fails before a single packet leaves the machine - ping6 answers
9
+ * "connect: Cannot assign requested address", traceroute -6 the same, a TCP
10
+ * connect EADDRNOTAVAIL - while every IPv4 monitor beside it keeps working.
11
+ * Reported as "Unable to reach host ... No ICMP echo reply", that sends the
12
+ * customer to debug a host that is answering perfectly well, which is exactly
13
+ * what happened with 2001:518:2800:9::2.
14
+ *
15
+ * What counts as probe-side, and how sure we can be:
16
+ *
17
+ * - EADDRNOTAVAIL ("Cannot assign requested address", "Can't assign
18
+ * requested address" on macOS/BSD). connect() found no local address to
19
+ * send from. Nothing was sent. Always the probe. From a TCP connect it
20
+ * can also mean the probe ran out of local ports, so the TCP wording
21
+ * does not state the missing IPv6 as fact (see isCauseAmbiguous).
22
+ * - EAFNOSUPPORT ("Address family not supported"). The probe's kernel has
23
+ * the family switched off. Nothing was sent. Always the probe.
24
+ * - ENETUNREACH ("Network is unreachable"). For ping and traceroute the
25
+ * connect() on a datagram/raw socket is only a lookup in the probe's own
26
+ * routing table, so it is the probe. For a TCP connect the SYN may already
27
+ * have left and a router's ICMPv6 "no route" reports the same errno, so
28
+ * there it is only LIKELY the probe and has to be worded that way.
29
+ * - "No route to host" in ping output. Kept from the markers PingMonitor
30
+ * already treated as the probe's own, but only as likely: macOS reports a
31
+ * failed neighbour lookup for an on-link host with the same text, which
32
+ * means the host is down. The IPv4 wording says the host may be down too.
33
+ *
34
+ * Deliberately NOT probe-side: "Destination Host Unreachable", "Destination
35
+ * Net Unreachable", "Destination unreachable: Address unreachable", and
36
+ * EHOSTUNREACH from a TCP connect. Those are ICMP errors a ROUTER sent back
37
+ * about the target, which is a real outage on the path, so they stay in the
38
+ * ordinary "could not reach the destination" bucket.
39
+ *
40
+ * Pure and isomorphic on purpose: Common/Utils/API.ts runs in the browser as
41
+ * well as on the probe and reuses this, so nothing here may import Node.
42
+ */
43
+ export var ProbeNetworkFailureKind;
44
+ (function (ProbeNetworkFailureKind) {
45
+ // EADDRNOTAVAIL: no local address of the destination's family to send from.
46
+ ProbeNetworkFailureKind["NoSourceAddress"] = "NoSourceAddress";
47
+ // EAFNOSUPPORT: the probe's kernel has the address family disabled.
48
+ ProbeNetworkFailureKind["AddressFamilyNotSupported"] = "AddressFamilyNotSupported";
49
+ // ENETUNREACH: no route for the destination's network.
50
+ ProbeNetworkFailureKind["NetworkUnreachable"] = "NetworkUnreachable";
51
+ // "No route to host" in ping/traceroute output.
52
+ ProbeNetworkFailureKind["NoRouteToHost"] = "NoRouteToHost";
53
+ })(ProbeNetworkFailureKind || (ProbeNetworkFailureKind = {}));
54
+ /*
55
+ * What the probe was doing when it failed. It only changes how sure the
56
+ * classification can be: see ENETUNREACH above.
57
+ */
58
+ export var ProbeNetworkOperation;
59
+ (function (ProbeNetworkOperation) {
60
+ /*
61
+ * ping, ping6, traceroute: connect() on a datagram or raw socket is a
62
+ * route lookup in the probe's own kernel, and nothing is sent until it
63
+ * succeeds.
64
+ */
65
+ ProbeNetworkOperation["PingOrTraceroute"] = "PingOrTraceroute";
66
+ /*
67
+ * A TCP connect (Port, SSL, HTTP): the SYN can already be on the wire when
68
+ * the error comes back, so ENETUNREACH may have come from a router.
69
+ */
70
+ ProbeNetworkOperation["TcpConnect"] = "TcpConnect";
71
+ })(ProbeNetworkOperation || (ProbeNetworkOperation = {}));
72
+ /*
73
+ * Every describe() sentence opens with this, so a consumer holding only the
74
+ * stored text (an observation narrative on the server) can tell a probe-side
75
+ * cause from a verdict on the target without classifying it again.
76
+ */
77
+ const PROBE_SIDE_CAUSE_PREFIX = "This probe ";
78
+ /*
79
+ * Lower-cased strerror text, most specific first. Matched on the strerror
80
+ * alone because the prefix before it varies: "ping6: connect:", "ping:
81
+ * sendmsg:", traceroute's bare "connect:".
82
+ */
83
+ const OUTPUT_MARKERS = [
84
+ {
85
+ marker: "cannot assign requested address",
86
+ kind: ProbeNetworkFailureKind.NoSourceAddress,
87
+ },
88
+ {
89
+ marker: "can't assign requested address",
90
+ kind: ProbeNetworkFailureKind.NoSourceAddress,
91
+ },
92
+ {
93
+ marker: "address family not supported",
94
+ kind: ProbeNetworkFailureKind.AddressFamilyNotSupported,
95
+ },
96
+ {
97
+ marker: "network is unreachable",
98
+ kind: ProbeNetworkFailureKind.NetworkUnreachable,
99
+ },
100
+ {
101
+ marker: "no route to host",
102
+ kind: ProbeNetworkFailureKind.NoRouteToHost,
103
+ },
104
+ {
105
+ marker: "unreachable host",
106
+ kind: ProbeNetworkFailureKind.NoRouteToHost,
107
+ },
108
+ ];
109
+ /*
110
+ * Node error codes. EHOSTUNREACH is deliberately absent: from a socket it
111
+ * means a router or the neighbour lookup gave up on the target.
112
+ */
113
+ const ERROR_CODE_KINDS = {
114
+ EADDRNOTAVAIL: ProbeNetworkFailureKind.NoSourceAddress,
115
+ EAFNOSUPPORT: ProbeNetworkFailureKind.AddressFamilyNotSupported,
116
+ ENETUNREACH: ProbeNetworkFailureKind.NetworkUnreachable,
117
+ };
118
+ // Long enough for any strerror line; short enough for an SMS root cause.
119
+ const MAX_DETAIL_LENGTH = 200;
120
+ // How far down an error's `cause` chain classifyError looks.
121
+ const MAX_CAUSE_DEPTH = 5;
122
+ export default class ProbeNetworkFailureUtil {
123
+ /*
124
+ * Classifies OS output or error text: ping's combined output, traceroute's
125
+ * stderr, an error message. Null when nothing in it says the probe was the
126
+ * one that failed.
127
+ */
128
+ static classifyOutput(data) {
129
+ const output = data.output || "";
130
+ const lowerOutput = output.toLowerCase();
131
+ for (const entry of OUTPUT_MARKERS) {
132
+ if (!lowerOutput.includes(entry.marker)) {
133
+ continue;
134
+ }
135
+ const isCertain = ProbeNetworkFailureUtil.getCertainty(entry.kind, data.operation);
136
+ if (isCertain === null) {
137
+ continue;
138
+ }
139
+ const failure = {
140
+ kind: entry.kind,
141
+ isCertain: isCertain,
142
+ detail: ProbeNetworkFailureUtil.getDetail(output, entry.marker),
143
+ };
144
+ if (ProbeNetworkFailureUtil.isCauseAmbiguous(entry.kind, data.operation)) {
145
+ failure.isCauseAmbiguous = true;
146
+ }
147
+ return failure;
148
+ }
149
+ return null;
150
+ }
151
+ /*
152
+ * Classifies a Node error code (err.code). `detail` is what the operator
153
+ * sees as the evidence; the code itself when the caller has nothing
154
+ * better. Anything that is not a string code (a child process's numeric
155
+ * exit status, undefined) is not classified.
156
+ */
157
+ static classifyErrorCode(data) {
158
+ if (typeof data.code !== "string") {
159
+ return null;
160
+ }
161
+ const kind = ERROR_CODE_KINDS[data.code.toUpperCase()];
162
+ if (!kind) {
163
+ return null;
164
+ }
165
+ const isCertain = ProbeNetworkFailureUtil.getCertainty(kind, data.operation);
166
+ if (isCertain === null) {
167
+ return null;
168
+ }
169
+ const failure = {
170
+ kind: kind,
171
+ isCertain: isCertain,
172
+ detail: ProbeNetworkFailureUtil.getDetail(data.detail || data.code, ""),
173
+ };
174
+ if (data.address) {
175
+ failure.address = data.address;
176
+ }
177
+ if (ProbeNetworkFailureUtil.isCauseAmbiguous(kind, data.operation)) {
178
+ failure.isCauseAmbiguous = true;
179
+ }
180
+ return failure;
181
+ }
182
+ /*
183
+ * Classifies a thrown value from a socket, TLS or fetch call.
184
+ *
185
+ * An AggregateError (Node's happy-eyeballs connect, one error per address
186
+ * tried) is probe-side only when EVERY attempt was: an IPv6 attempt that
187
+ * could not leave the probe next to an IPv4 attempt that timed out is an
188
+ * IPv4 outage, not a probe problem. It is checked before `code` because
189
+ * Node copies the first attempt's code onto the aggregate.
190
+ *
191
+ * Otherwise the error's own code decides, then its `cause` (fetch wraps
192
+ * the socket error in a TypeError "fetch failed"), and last its message.
193
+ */
194
+ static classifyError(data) {
195
+ return ProbeNetworkFailureUtil.classifyErrorAtDepth(data.error, data.operation, 0);
196
+ }
197
+ /*
198
+ * Whether a failure is to be worded as an IPv6 one. In order: what the
199
+ * caller knows, the address the error named, the host itself. A DNS name
200
+ * with nothing else to go on is not assumed to be either.
201
+ */
202
+ static isIPv6Failure(data) {
203
+ if (data.isIPv6Destination !== undefined) {
204
+ return data.isIPv6Destination;
205
+ }
206
+ if (data.failure.address && HostAddressUtil.isIPv6(data.failure.address)) {
207
+ return true;
208
+ }
209
+ return HostAddressUtil.isIPv6(data.host || "");
210
+ }
211
+ /*
212
+ * The failure cause, in full sentences, for a check against `host`.
213
+ *
214
+ * The IPv6 wording says outright that the host was never contacted and
215
+ * that this says nothing about whether it is up, because the thing being
216
+ * corrected is an operator (or an incident root cause, or an SMS) reading
217
+ * a probe's missing IPv6 as their host being down. The IPv4 wording makes
218
+ * no IPv6 claim at all.
219
+ *
220
+ * Every sentence opens with PROBE_SIDE_CAUSE_PREFIX; see isProbeSideCause.
221
+ */
222
+ static describe(data) {
223
+ const host = data.host;
224
+ const detail = data.failure.detail;
225
+ if (ProbeNetworkFailureUtil.isIPv6Failure(data)) {
226
+ /*
227
+ * A TCP connect's EADDRNOTAVAIL: still certainly the probe, but a
228
+ * probe with IPv6 that has run out of local ports gets it too, so
229
+ * "has no usable IPv6" would be a false reason and a false remedy.
230
+ */
231
+ if (data.failure.isCertain && data.failure.isCauseAmbiguous) {
232
+ return `This probe could not open an IPv6 connection from its own side (${detail}), so ${host} was never contacted. This usually means the probe has no usable IPv6 address or route (less often, that it has run out of local ports); this says nothing about whether ${host} is up. Monitor IPv6 destinations from a probe that has IPv6 connectivity.`;
233
+ }
234
+ if (data.failure.isCertain) {
235
+ return `This probe cannot send IPv6 traffic (${detail}), so ${host} was never contacted. The probe has no usable IPv6 address or route; this says nothing about whether ${host} is up. Monitor IPv6 destinations from a probe that has IPv6 connectivity.`;
236
+ }
237
+ return `This probe could not reach ${host} over IPv6 (${detail}). Most likely this probe has no IPv6 route rather than ${host} being down. Monitor IPv6 destinations from a probe that has IPv6 connectivity.`;
238
+ }
239
+ if (ProbeNetworkFailureUtil.isRouteFailure(data.failure.kind)) {
240
+ /*
241
+ * "No route to host" is also what a failed neighbour lookup for a
242
+ * dead on-link host prints, so an uncertain match must leave room for
243
+ * the host being the one that is down.
244
+ */
245
+ if (!data.failure.isCertain) {
246
+ return `This probe may have no route to ${host} (${detail}); ${host} itself may also be down.`;
247
+ }
248
+ return `This probe has no route to ${host}: ${detail}.`;
249
+ }
250
+ return `This probe could not send traffic to ${host} (${detail}), so ${host} was never contacted. The failure is on the probe, not on ${host}.`;
251
+ }
252
+ /*
253
+ * The same cause as a lower-case clause with no trailing period, for a
254
+ * caller that has its own lead-in, e.g. "Traceroute could not run: " +
255
+ * clause + ".".
256
+ */
257
+ static describeClause(data) {
258
+ const detail = data.failure.detail;
259
+ if (ProbeNetworkFailureUtil.isIPv6Failure(data)) {
260
+ return data.failure.isCertain
261
+ ? `this probe cannot send IPv6 traffic (${detail})`
262
+ : `this probe most likely has no IPv6 route (${detail})`;
263
+ }
264
+ if (ProbeNetworkFailureUtil.isRouteFailure(data.failure.kind)) {
265
+ return data.failure.isCertain
266
+ ? `this probe has no route to ${data.host} (${detail})`
267
+ : `this probe may have no route to ${data.host} (${detail}); ${data.host} itself may also be down`;
268
+ }
269
+ return `this probe could not send traffic to ${data.host} (${detail})`;
270
+ }
271
+ /*
272
+ * True for a stored cause that opens the way every describe() sentence
273
+ * does: it is about this probe, not a verdict on the destination. Checks
274
+ * the text rather than classifying it, because a caller such as an SNMP
275
+ * send error ("send EADDRNOTAVAIL ...") carries no strerror marker.
276
+ */
277
+ static isProbeSideCause(text) {
278
+ return Boolean(text && text.startsWith(PROBE_SIDE_CAUSE_PREFIX));
279
+ }
280
+ // classifyOutput + describe, for a caller that only has the OS text.
281
+ static describeOutput(data) {
282
+ const failure = ProbeNetworkFailureUtil.classifyOutput({
283
+ output: data.output,
284
+ operation: data.operation,
285
+ });
286
+ if (!failure) {
287
+ return null;
288
+ }
289
+ return ProbeNetworkFailureUtil.describe({
290
+ host: data.host,
291
+ failure: failure,
292
+ isIPv6Destination: data.isIPv6Destination,
293
+ });
294
+ }
295
+ // classifyError + describe, for a caller holding a thrown value.
296
+ static describeError(data) {
297
+ const failure = ProbeNetworkFailureUtil.classifyError({
298
+ error: data.error,
299
+ operation: data.operation,
300
+ });
301
+ if (!failure) {
302
+ return null;
303
+ }
304
+ return ProbeNetworkFailureUtil.describe({
305
+ host: data.host,
306
+ failure: failure,
307
+ isIPv6Destination: data.isIPv6Destination,
308
+ });
309
+ }
310
+ /*
311
+ * How sure a kind can be for an operation: true (certain), false (likely),
312
+ * or null (not the probe's failure at all for this operation).
313
+ */
314
+ static getCertainty(kind, operation) {
315
+ switch (kind) {
316
+ case ProbeNetworkFailureKind.NoSourceAddress:
317
+ case ProbeNetworkFailureKind.AddressFamilyNotSupported:
318
+ return true;
319
+ case ProbeNetworkFailureKind.NetworkUnreachable:
320
+ return operation === ProbeNetworkOperation.PingOrTraceroute;
321
+ case ProbeNetworkFailureKind.NoRouteToHost:
322
+ /*
323
+ * From a TCP connect this is EHOSTUNREACH, a router or neighbour
324
+ * lookup giving up on the target: not the probe's failure.
325
+ */
326
+ return operation === ProbeNetworkOperation.PingOrTraceroute
327
+ ? false
328
+ : null;
329
+ default:
330
+ return null;
331
+ }
332
+ }
333
+ // See ProbeNetworkFailure.isCauseAmbiguous.
334
+ static isCauseAmbiguous(kind, operation) {
335
+ return (kind === ProbeNetworkFailureKind.NoSourceAddress &&
336
+ operation === ProbeNetworkOperation.TcpConnect);
337
+ }
338
+ // The kinds where "no route" is the honest summary rather than "could not send".
339
+ static isRouteFailure(kind) {
340
+ return (kind === ProbeNetworkFailureKind.NetworkUnreachable ||
341
+ kind === ProbeNetworkFailureKind.NoRouteToHost);
342
+ }
343
+ /*
344
+ * The line of the text that carries the marker (the whole text when there
345
+ * is no marker), trimmed, without a trailing period so it can be quoted
346
+ * mid-sentence, and capped. ping's output mixes a banner and statistics in
347
+ * with the one line that matters.
348
+ */
349
+ static getDetail(text, marker) {
350
+ const lines = (text || "")
351
+ .split(/\r?\n/)
352
+ .map((line) => {
353
+ return line.trim();
354
+ })
355
+ .filter((line) => {
356
+ return line.length > 0;
357
+ });
358
+ const line = (marker
359
+ ? lines.find((candidate) => {
360
+ return candidate.toLowerCase().includes(marker);
361
+ })
362
+ : undefined) ||
363
+ lines[0] ||
364
+ "";
365
+ return line.replace(/\.+$/, "").substring(0, MAX_DETAIL_LENGTH);
366
+ }
367
+ static classifyErrorAtDepth(error, operation, depth) {
368
+ if (!error || typeof error !== "object" || depth > MAX_CAUSE_DEPTH) {
369
+ return null;
370
+ }
371
+ const errorLike = error;
372
+ if (Array.isArray(errorLike.errors) && errorLike.errors.length > 0) {
373
+ const failures = errorLike.errors.map((inner) => {
374
+ return ProbeNetworkFailureUtil.classifyErrorAtDepth(inner, operation, depth + 1);
375
+ });
376
+ if (failures.some((failure) => {
377
+ return failure === null;
378
+ })) {
379
+ return null;
380
+ }
381
+ // The least certain one: the wording must not claim more than every attempt showed.
382
+ const classified = failures;
383
+ const representative = classified.find((failure) => {
384
+ return !failure.isCertain;
385
+ }) || classified[0];
386
+ if (!representative) {
387
+ return null;
388
+ }
389
+ /*
390
+ * Its address is what a caller words the family from, so it is kept
391
+ * only when every attempt named an address of that same family. A
392
+ * dual-stack name whose IPv4 attempt failed as well is not an IPv6
393
+ * problem: a mixed-family aggregate names no address, and the caller
394
+ * falls back to the host it was checking.
395
+ */
396
+ if (!ProbeNetworkFailureUtil.isSingleFamily(classified, representative.address)) {
397
+ const withoutAddress = Object.assign({}, representative);
398
+ delete withoutAddress.address;
399
+ return withoutAddress;
400
+ }
401
+ return representative;
402
+ }
403
+ /*
404
+ * A cause that carries its own code or attempts is the more specific
405
+ * account, and it decides - even when it says "not the probe". A wrapper
406
+ * such as an AxiosError copies its cause's code onto itself, and for an
407
+ * aggregate that is only the FIRST attempt's code.
408
+ */
409
+ if (ProbeNetworkFailureUtil.carriesSocketError(errorLike.cause)) {
410
+ return ProbeNetworkFailureUtil.classifyErrorAtDepth(errorLike.cause, operation, depth + 1);
411
+ }
412
+ const message = typeof errorLike.message === "string" ? errorLike.message : "";
413
+ if (typeof errorLike.code === "string") {
414
+ return ProbeNetworkFailureUtil.classifyErrorCode({
415
+ code: errorLike.code,
416
+ operation: operation,
417
+ detail: message || undefined,
418
+ address: typeof errorLike.address === "string"
419
+ ? HostAddressUtil.stripBrackets(errorLike.address)
420
+ : undefined,
421
+ });
422
+ }
423
+ if (errorLike.cause) {
424
+ const fromCause = ProbeNetworkFailureUtil.classifyErrorAtDepth(errorLike.cause, operation, depth + 1);
425
+ if (fromCause) {
426
+ return fromCause;
427
+ }
428
+ }
429
+ return message
430
+ ? ProbeNetworkFailureUtil.classifyOutput({
431
+ output: message,
432
+ operation: operation,
433
+ })
434
+ : null;
435
+ }
436
+ /*
437
+ * True when every attempt named an address in the same family as
438
+ * `address`. An attempt with no address could have been either family.
439
+ */
440
+ static isSingleFamily(attempts, address) {
441
+ if (!address) {
442
+ return true;
443
+ }
444
+ const isIPv6 = HostAddressUtil.isIPv6(address);
445
+ return attempts.every((attempt) => {
446
+ return (Boolean(attempt.address) &&
447
+ HostAddressUtil.isIPv6(attempt.address || "") === isIPv6);
448
+ });
449
+ }
450
+ // True for a value that has a string code or a list of attempts to go on.
451
+ static carriesSocketError(value) {
452
+ if (!value || typeof value !== "object") {
453
+ return false;
454
+ }
455
+ const errorLike = value;
456
+ return (typeof errorLike.code === "string" ||
457
+ (Array.isArray(errorLike.errors) && errorLike.errors.length > 0));
458
+ }
459
+ }
460
+ //# sourceMappingURL=ProbeNetworkFailureUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProbeNetworkFailureUtil.js","sourceRoot":"","sources":["../../../Utils/ProbeNetworkFailureUtil.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneuptime/common",
3
- "version": "14.0.6",
3
+ "version": "14.0.8",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",