@oneuptime/common 12.0.28 → 12.0.30

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 (367) hide show
  1. package/Models/DatabaseModels/DashboardDomain.ts +43 -0
  2. package/Models/DatabaseModels/Index.ts +11 -0
  3. package/Models/DatabaseModels/MonitorTemplate.ts +15 -3
  4. package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +43 -0
  5. package/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.ts +662 -0
  6. package/Models/DatabaseModels/ProjectOnCallCalendarFeed.ts +584 -0
  7. package/Models/DatabaseModels/StatusPageDomain.ts +43 -0
  8. package/Models/DatabaseModels/UserOnCallCalendarFeed.ts +546 -0
  9. package/Models/DatabaseModels/UserOnCallShiftReminder.ts +231 -0
  10. package/Models/DatabaseModels/UserOnCallShiftReminderLog.ts +331 -0
  11. package/Server/API/DashboardDomainAPI.ts +74 -0
  12. package/Server/API/MicrosoftTeamsAPI.ts +81 -180
  13. package/Server/API/OnCallCalendarAPI.ts +2194 -0
  14. package/Server/API/StatusPageDomainAPI.ts +74 -0
  15. package/Server/EnvironmentConfig.ts +138 -0
  16. package/Server/Infrastructure/OnCallCalendarFeedCache.ts +1050 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1790200000000-AllowNullMonitorNameOnMonitorTemplate.ts +43 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1790300000000-AddCertificateReissueRequestedAtToDomains.ts +40 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.ts +253 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  21. package/Server/Middleware/OnCallCalendarFeedRateLimit.ts +487 -0
  22. package/Server/Middleware/ProjectAuthorization.ts +6 -1
  23. package/Server/Services/DashboardDomainService.ts +131 -0
  24. package/Server/Services/Index.ts +12 -0
  25. package/Server/Services/LogPipelineProcessorService.ts +88 -0
  26. package/Server/Services/MonitorTemplateService.ts +70 -11
  27. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +32 -0
  28. package/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.ts +260 -0
  29. package/Server/Services/OnCallDutyPolicyScheduleLayerService.ts +70 -3
  30. package/Server/Services/OnCallDutyPolicyScheduleLayerUserService.ts +138 -3
  31. package/Server/Services/OnCallDutyPolicyScheduleService.ts +1465 -134
  32. package/Server/Services/OnCallDutyPolicyUserOverrideService.ts +167 -31
  33. package/Server/Services/ProjectOnCallCalendarFeedService.ts +192 -0
  34. package/Server/Services/StatusPageDomainService.ts +163 -3
  35. package/Server/Services/StatusPagePrivateUserSessionService.ts +197 -56
  36. package/Server/Services/TeamMemberService.ts +489 -1
  37. package/Server/Services/TeamService.ts +50 -0
  38. package/Server/Services/UserNotificationSettingService.ts +44 -1
  39. package/Server/Services/UserOnCallCalendarFeedService.ts +159 -0
  40. package/Server/Services/UserOnCallShiftReminderLogService.ts +151 -0
  41. package/Server/Services/UserOnCallShiftReminderService.ts +112 -0
  42. package/Server/Types/Domain.ts +17 -0
  43. package/Server/Utils/APIKey/AccessPermission.ts +24 -0
  44. package/Server/Utils/Greenlock/Greenlock.ts +156 -58
  45. package/Server/Utils/LogPipelineProcessorValidation.ts +112 -0
  46. package/Server/Utils/OnCall/CalendarFeedToken.ts +241 -0
  47. package/Server/Utils/OnCall/OnCallCalendarFeedRenderer.ts +1488 -0
  48. package/Server/Utils/OnCall/OnCallCalendarFeedUrls.ts +230 -0
  49. package/Server/Utils/OnCall/OnCallShiftChangeListeners.ts +227 -0
  50. package/Server/Utils/OnCall/OnCallShiftMaterializer.ts +1127 -0
  51. package/Server/Utils/OnCall/OnCallShiftReminderListener.ts +174 -0
  52. package/Server/Utils/OnCall/OnCallShiftReminderRunner.ts +2584 -0
  53. package/Server/Utils/Response.ts +134 -0
  54. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.ts +1094 -45
  55. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +153 -17
  56. package/Server/Utils/StartServer.ts +10 -0
  57. package/Server/Utils/Telemetry/AppMetrics.ts +51 -0
  58. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.ts +23 -11
  59. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.ts +0 -170
  60. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Authorization.ts +158 -0
  61. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +23 -11
  62. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +35 -13
  63. package/Tests/App/Dashboard/MonitorTemplateColumnAndFacet.test.tsx +505 -0
  64. package/Tests/App/Dashboard/OnCallCalendarFeedLinks.test.tsx +229 -0
  65. package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +489 -0
  66. package/Tests/App/Dashboard/OnCallCalendarFeedSideMenus.test.tsx +149 -0
  67. package/Tests/App/Dashboard/OnCallCalendarFeedUtil.test.ts +855 -0
  68. package/Tests/App/Dashboard/OnCallPersonalCalendarFeed.test.tsx +1209 -0
  69. package/Tests/App/Dashboard/OnCallSharedCalendarFeedCard.test.tsx +1019 -0
  70. package/Tests/App/Dashboard/OnCallShiftRemindersAndUpcomingShifts.test.tsx +655 -0
  71. package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +73 -0
  72. package/Tests/App/StatusPage/StatusPageLoginCodeBootstrap.test.ts +106 -0
  73. package/Tests/App/StatusPage/StatusPageLoginCodeUtil.test.ts +84 -0
  74. package/Tests/App/StatusPage/StatusPageRedirectSafety.test.ts +119 -0
  75. package/Tests/Models/MonitorTemplateMonitorNameColumn.test.ts +258 -0
  76. package/Tests/Models/OnCallCalendarFeedModels.test.ts +642 -0
  77. package/Tests/Models/OnCallDutyPolicyScheduleCalendarFeed.test.ts +288 -0
  78. package/Tests/Models/OnCallDutyPolicyScheduleShiftConfigVersion.test.ts +88 -0
  79. package/Tests/Models/UserOnCallShiftReminderModels.test.ts +368 -0
  80. package/Tests/Server/API/CustomDomainReissueSslAPI.test.ts +469 -0
  81. package/Tests/Server/API/Helpers.ts +8 -0
  82. package/Tests/Server/API/MicrosoftTeamsBotMessagesEndpoint.test.ts +729 -0
  83. package/Tests/Server/API/MicrosoftTeamsBotTestEndpoint.test.ts +26 -0
  84. package/Tests/Server/API/MicrosoftTeamsLegacyWebhookRemoval.test.ts +402 -0
  85. package/Tests/Server/API/OnCallCalendarAPI.test.ts +4461 -0
  86. package/Tests/Server/EnvironmentConfigOnCallCalendarFeed.test.ts +357 -0
  87. package/Tests/Server/Infrastructure/OnCallCalendarFeedCache.test.ts +1589 -0
  88. package/Tests/Server/Infrastructure/Postgres/AddOnCallCalendarFeedsMigration.test.ts +369 -0
  89. package/Tests/Server/Middleware/OnCallCalendarFeedRateLimit.test.ts +1365 -0
  90. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +4 -0
  91. package/Tests/Server/Services/AddCertificateReissueRequestedAtToDomainsMigration.test.ts +287 -0
  92. package/Tests/Server/Services/CustomDomainCertificateReissue.test.ts +477 -0
  93. package/Tests/Server/Services/FeedRetentionConsistency.test.ts +70 -0
  94. package/Tests/Server/Services/LogPipelineProcessorSaveValidation.test.ts +249 -0
  95. package/Tests/Server/Services/MonitorTemplateServiceBulkSync.test.ts +549 -0
  96. package/Tests/Server/Services/MonitorTemplateServiceNetworkDeviceSync.test.ts +16 -3
  97. package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +57 -0
  98. package/Tests/Server/Services/OnCallCalendarFeedServices.test.ts +1103 -0
  99. package/Tests/Server/Services/OnCallDutyPolicyScheduleResolver.test.ts +1037 -0
  100. package/Tests/Server/Services/OnCallShiftConfigPropagation.test.ts +1270 -0
  101. package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +151 -15
  102. package/Tests/Server/Services/StatusPagePrivateUserSessionService.test.ts +587 -0
  103. package/Tests/Server/Services/TeamDeleteMemberCleanup.test.ts +156 -0
  104. package/Tests/Server/Services/TeamMemberOnCallCleanup.test.ts +755 -0
  105. package/Tests/Server/Services/UserNotificationSettingShiftReminderDefaults.test.ts +267 -0
  106. package/Tests/Server/Services/UserOnCallShiftReminderServices.test.ts +583 -0
  107. package/Tests/Server/Types/Database/Permissions/ApiKeyFileAccess.test.ts +286 -0
  108. package/Tests/Server/Types/Database/Permissions/MonitorTemplateColumnAccess.test.ts +328 -0
  109. package/Tests/Server/Types/Database/Permissions/OnCallCalendarFeedPermissions.test.ts +254 -0
  110. package/Tests/Server/Types/Database/QueryHelperFindWithSameTextAndIsNull.test.ts +83 -0
  111. package/Tests/Server/Utils/AI/SRE/ConfidenceSignal.test.ts +377 -0
  112. package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +16 -1
  113. package/Tests/Server/Utils/Greenlock/CertificateRenewalSchedule.test.ts +250 -0
  114. package/Tests/Server/Utils/LogPipelineProcessorValidation.test.ts +198 -0
  115. package/Tests/Server/Utils/OnCall/CalendarFeedToken.test.ts +467 -0
  116. package/Tests/Server/Utils/OnCall/OnCallCalendarFeedRenderer.test.ts +2142 -0
  117. package/Tests/Server/Utils/OnCall/OnCallCalendarFeedUrls.test.ts +278 -0
  118. package/Tests/Server/Utils/OnCall/OnCallResolverTestHarness.ts +440 -0
  119. package/Tests/Server/Utils/OnCall/OnCallShiftChangeListeners.test.ts +314 -0
  120. package/Tests/Server/Utils/OnCall/OnCallShiftMaterializer.test.ts +1502 -0
  121. package/Tests/Server/Utils/OnCall/OnCallShiftReminderListener.test.ts +491 -0
  122. package/Tests/Server/Utils/OnCall/OnCallShiftReminderRunner.test.ts +3088 -0
  123. package/Tests/Server/Utils/OnCall/OnCallShiftReminderTestHarness.ts +910 -0
  124. package/Tests/Server/Utils/ResponseSendCalendarResponse.test.ts +561 -0
  125. package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +48 -9
  126. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsAuth.test.ts +726 -0
  127. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClient.test.ts +74 -11
  128. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsErrorHandling.test.ts +1107 -0
  129. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +20 -3
  130. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +51 -11
  131. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerHardening.test.ts +1246 -0
  132. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsRequestContract.test.ts +961 -0
  133. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsResponseParsing.test.ts +653 -0
  134. package/Tests/Server/Utils/StartServerEncryptionSecretWarning.test.ts +64 -0
  135. package/Tests/Server/Utils/Telemetry/AppMetrics.test.ts +29 -0
  136. package/Tests/Server/Utils/Workspace/MicrosoftTeamsActionAuthorization.test.ts +880 -0
  137. package/Tests/Types/API/HTTPResponse.test.ts +175 -0
  138. package/Tests/Types/API/Route.test.ts +36 -4
  139. package/Tests/Types/Calendar/ICalendar.test.ts +488 -0
  140. package/Tests/Types/Database/DatabaseProperty.test.ts +171 -0
  141. package/Tests/Types/DateLocalShortDateTimeString.test.ts +518 -0
  142. package/Tests/Types/DateLocalTimeString.test.ts +259 -0
  143. package/Tests/Types/DateUserPrefers12HourFormat.test.ts +316 -0
  144. package/Tests/Types/NotificationSetting/NotificationSettingEventType.test.ts +53 -0
  145. package/Tests/Types/OnCallDutyPolicy/CalendarFeedTestFixtures.ts +310 -0
  146. package/Tests/Types/OnCallDutyPolicy/CalendarFeedWindow.test.ts +205 -0
  147. package/Tests/Types/OnCallDutyPolicy/LayerUtilLayerMetaAndIterationCap.test.ts +458 -0
  148. package/Tests/Types/OnCallDutyPolicy/MaterializedShift.test.ts +197 -0
  149. package/Tests/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.test.ts +1986 -0
  150. package/Tests/Types/OnCallDutyPolicy/ScheduleShiftUtilGroupKey.test.ts +678 -0
  151. package/Tests/Types/OnCallDutyPolicy/ShiftSeamUtil.test.ts +417 -0
  152. package/Tests/UI/Components/LogsHistogram.test.tsx +41 -2
  153. package/Tests/UI/Components/LogsViewerEmptyStateTimeRange.test.tsx +212 -0
  154. package/Tests/UI/Components/TelemetryChartClockFormat.test.tsx +359 -0
  155. package/Tests/UI/Components/TimeRangePickerClockFormat.test.tsx +422 -0
  156. package/Tests/UI/Components/TimeRangePickerDropdown.test.tsx +146 -8
  157. package/Tests/UI/MicrosoftTeams/MicrosoftTeamsMessagingEndpointGuidance.test.tsx +520 -0
  158. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +10 -0
  159. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
  160. package/Tests/UI/Utils/Navigation.test.ts +82 -0
  161. package/Tests/Utils/Array.test.ts +100 -0
  162. package/Tests/Utils/CertificateReissue.test.ts +225 -0
  163. package/Tests/Utils/Grok/Grok.test.ts +492 -0
  164. package/Tests/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.test.ts +181 -13
  165. package/Types/API/Route.ts +20 -5
  166. package/Types/Calendar/ICalendar.ts +442 -0
  167. package/Types/Date.ts +143 -13
  168. package/Types/Email/EmailTemplateType.ts +2 -0
  169. package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
  170. package/Types/OnCallDutyPolicy/CalendarFeedWindow.ts +140 -0
  171. package/Types/OnCallDutyPolicy/Layer.ts +190 -35
  172. package/Types/OnCallDutyPolicy/MaterializedShift.ts +274 -0
  173. package/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.ts +1415 -0
  174. package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +159 -4
  175. package/Types/OnCallDutyPolicy/ShiftSeamUtil.ts +106 -0
  176. package/Types/Rum/SessionReplay.ts +62 -1
  177. package/UI/Components/Date/TimeRangePickerDropdown.tsx +9 -5
  178. package/UI/Components/LogsViewer/LogsViewer.tsx +12 -7
  179. package/UI/Components/LogsViewer/components/HistogramTooltip.tsx +18 -17
  180. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +21 -28
  181. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +2 -4
  182. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +2 -4
  183. package/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.tsx +17 -16
  184. package/UI/Utils/Navigation.ts +42 -0
  185. package/Utils/Array.ts +37 -0
  186. package/Utils/CertificateReissue.ts +128 -0
  187. package/Utils/Grok/Grok.ts +461 -0
  188. package/Utils/Grok/GrokPatterns.ts +118 -0
  189. package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +58 -6
  190. package/build/dist/Models/DatabaseModels/DashboardDomain.js +44 -0
  191. package/build/dist/Models/DatabaseModels/DashboardDomain.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/Index.js +11 -0
  193. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  194. package/build/dist/Models/DatabaseModels/MonitorTemplate.js +17 -4
  195. package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
  196. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +44 -0
  197. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
  198. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js +699 -0
  199. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js.map +1 -0
  200. package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js +620 -0
  201. package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js.map +1 -0
  202. package/build/dist/Models/DatabaseModels/StatusPageDomain.js +44 -0
  203. package/build/dist/Models/DatabaseModels/StatusPageDomain.js.map +1 -1
  204. package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js +585 -0
  205. package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js.map +1 -0
  206. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js +247 -0
  207. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js.map +1 -0
  208. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js +355 -0
  209. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js.map +1 -0
  210. package/build/dist/Server/API/DashboardDomainAPI.js +43 -1
  211. package/build/dist/Server/API/DashboardDomainAPI.js.map +1 -1
  212. package/build/dist/Server/API/MicrosoftTeamsAPI.js +74 -118
  213. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  214. package/build/dist/Server/API/OnCallCalendarAPI.js +1371 -0
  215. package/build/dist/Server/API/OnCallCalendarAPI.js.map +1 -0
  216. package/build/dist/Server/API/StatusPageDomainAPI.js +43 -1
  217. package/build/dist/Server/API/StatusPageDomainAPI.js.map +1 -1
  218. package/build/dist/Server/EnvironmentConfig.js +102 -0
  219. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  220. package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js +663 -0
  221. package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js.map +1 -0
  222. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790200000000-AllowNullMonitorNameOnMonitorTemplate.js +34 -0
  223. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790200000000-AllowNullMonitorNameOnMonitorTemplate.js.map +1 -0
  224. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790300000000-AddCertificateReissueRequestedAtToDomains.js +28 -0
  225. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790300000000-AddCertificateReissueRequestedAtToDomains.js.map +1 -0
  226. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js +103 -0
  227. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js.map +1 -0
  228. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  229. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  230. package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js +342 -0
  231. package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js.map +1 -0
  232. package/build/dist/Server/Middleware/ProjectAuthorization.js +6 -1
  233. package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
  234. package/build/dist/Server/Services/DashboardDomainService.js +104 -0
  235. package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
  236. package/build/dist/Server/Services/Index.js +12 -0
  237. package/build/dist/Server/Services/Index.js.map +1 -1
  238. package/build/dist/Server/Services/LogPipelineProcessorService.js +65 -0
  239. package/build/dist/Server/Services/LogPipelineProcessorService.js.map +1 -1
  240. package/build/dist/Server/Services/MonitorTemplateService.js +57 -11
  241. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  242. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +20 -0
  243. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  244. package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js +219 -0
  245. package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js.map +1 -0
  246. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js +47 -3
  247. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js.map +1 -1
  248. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js +112 -3
  249. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js.map +1 -1
  250. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +955 -9
  251. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  252. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js +93 -6
  253. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js.map +1 -1
  254. package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js +157 -0
  255. package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js.map +1 -0
  256. package/build/dist/Server/Services/StatusPageDomainService.js +132 -3
  257. package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
  258. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js +112 -32
  259. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js.map +1 -1
  260. package/build/dist/Server/Services/TeamMemberService.js +396 -1
  261. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  262. package/build/dist/Server/Services/TeamService.js +43 -0
  263. package/build/dist/Server/Services/TeamService.js.map +1 -1
  264. package/build/dist/Server/Services/UserNotificationSettingService.js +26 -1
  265. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  266. package/build/dist/Server/Services/UserOnCallCalendarFeedService.js +140 -0
  267. package/build/dist/Server/Services/UserOnCallCalendarFeedService.js.map +1 -0
  268. package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js +116 -0
  269. package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js.map +1 -0
  270. package/build/dist/Server/Services/UserOnCallShiftReminderService.js +92 -0
  271. package/build/dist/Server/Services/UserOnCallShiftReminderService.js.map +1 -0
  272. package/build/dist/Server/Types/Domain.js +16 -0
  273. package/build/dist/Server/Types/Domain.js.map +1 -1
  274. package/build/dist/Server/Utils/APIKey/AccessPermission.js +24 -0
  275. package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
  276. package/build/dist/Server/Utils/Greenlock/Greenlock.js +110 -35
  277. package/build/dist/Server/Utils/Greenlock/Greenlock.js.map +1 -1
  278. package/build/dist/Server/Utils/LogPipelineProcessorValidation.js +77 -0
  279. package/build/dist/Server/Utils/LogPipelineProcessorValidation.js.map +1 -0
  280. package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js +161 -0
  281. package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js.map +1 -0
  282. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js +983 -0
  283. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js.map +1 -0
  284. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js +155 -0
  285. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js.map +1 -0
  286. package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js +145 -0
  287. package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js.map +1 -0
  288. package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js +752 -0
  289. package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js.map +1 -0
  290. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js +92 -0
  291. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js.map +1 -0
  292. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js +1786 -0
  293. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js.map +1 -0
  294. package/build/dist/Server/Utils/Response.js +97 -0
  295. package/build/dist/Server/Utils/Response.js.map +1 -1
  296. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js +777 -36
  297. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js.map +1 -1
  298. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +108 -17
  299. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
  300. package/build/dist/Server/Utils/StartServer.js +9 -1
  301. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  302. package/build/dist/Server/Utils/Telemetry/AppMetrics.js +41 -0
  303. package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
  304. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js +17 -6
  305. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js.map +1 -1
  306. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js +0 -159
  307. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js.map +1 -1
  308. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Authorization.js +128 -0
  309. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Authorization.js.map +1 -0
  310. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +17 -6
  311. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
  312. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +25 -13
  313. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  314. package/build/dist/Types/API/Route.js +16 -5
  315. package/build/dist/Types/API/Route.js.map +1 -1
  316. package/build/dist/Types/Calendar/ICalendar.js +290 -0
  317. package/build/dist/Types/Calendar/ICalendar.js.map +1 -0
  318. package/build/dist/Types/Date.js +115 -13
  319. package/build/dist/Types/Date.js.map +1 -1
  320. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  321. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  322. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
  323. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  324. package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js +97 -0
  325. package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js.map +1 -0
  326. package/build/dist/Types/OnCallDutyPolicy/Layer.js +113 -19
  327. package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
  328. package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js +134 -0
  329. package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js.map +1 -0
  330. package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js +800 -0
  331. package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js.map +1 -0
  332. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +97 -3
  333. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
  334. package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js +77 -0
  335. package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js.map +1 -0
  336. package/build/dist/Types/Rum/SessionReplay.js +38 -0
  337. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  338. package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js +9 -5
  339. package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js.map +1 -1
  340. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +12 -7
  341. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  342. package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js +15 -14
  343. package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js.map +1 -1
  344. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +17 -22
  345. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  346. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +2 -4
  347. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
  348. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +2 -4
  349. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  350. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js +15 -14
  351. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js.map +1 -1
  352. package/build/dist/UI/Utils/Navigation.js +30 -0
  353. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  354. package/build/dist/Utils/Array.js +25 -0
  355. package/build/dist/Utils/Array.js.map +1 -1
  356. package/build/dist/Utils/CertificateReissue.js +97 -0
  357. package/build/dist/Utils/CertificateReissue.js.map +1 -0
  358. package/build/dist/Utils/Grok/Grok.js +324 -0
  359. package/build/dist/Utils/Grok/Grok.js.map +1 -0
  360. package/build/dist/Utils/Grok/GrokPatterns.js +112 -0
  361. package/build/dist/Utils/Grok/GrokPatterns.js.map +1 -0
  362. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +63 -3
  363. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -1
  364. package/package.json +1 -1
  365. package/UI/Utils/JsonWebToken.ts +0 -14
  366. package/build/dist/UI/Utils/JsonWebToken.js +0 -10
  367. package/build/dist/UI/Utils/JsonWebToken.js.map +0 -1
@@ -0,0 +1,584 @@
1
+ import Project from "./Project";
2
+ import User from "./User";
3
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
4
+ import Route from "../../Types/API/Route";
5
+ import { PlanType } from "../../Types/Billing/SubscriptionPlan";
6
+ import AllowAccessIfSubscriptionIsUnpaid from "../../Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid";
7
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
8
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
9
+ import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
10
+ import ColumnLength from "../../Types/Database/ColumnLength";
11
+ import ColumnType from "../../Types/Database/ColumnType";
12
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
13
+ import TableColumn from "../../Types/Database/TableColumn";
14
+ import TableColumnType from "../../Types/Database/TableColumnType";
15
+ import TableMetadata from "../../Types/Database/TableMetadata";
16
+ import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import IconProp from "../../Types/Icon/IconProp";
18
+ import ObjectID from "../../Types/ObjectID";
19
+ import Permission from "../../Types/Permission";
20
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
21
+
22
+ /*
23
+ * The project-wide shared calendar feed: the capability token behind
24
+ * `GET /on-call-calendar/project/:token/project.ics`, which renders
25
+ * everybody's shifts on EVERY schedule in the project (plus opt-in
26
+ * coverage-gap events).
27
+ *
28
+ * Identical in shape and access to OnCallDutyPolicyScheduleCalendarFeed minus
29
+ * the schedule relation: one row per project (projectId is UNIQUE), the four
30
+ * table access lists copied verbatim from OnCallDutyPolicySchedule, tokens
31
+ * minted only by the service and never readable through CRUD. No
32
+ * @CanAccessIfCanReadOn - there is no single parent row to scope by.
33
+ */
34
+ const createPermissions: Array<Permission> = [
35
+ Permission.ProjectOwner,
36
+ Permission.ProjectAdmin,
37
+ Permission.ProjectMember,
38
+ Permission.OnCallAdmin,
39
+ Permission.OnCallMember,
40
+ Permission.CreateProjectOnCallDutyPolicySchedule,
41
+ ];
42
+
43
+ const readPermissions: Array<Permission> = [
44
+ Permission.ProjectOwner,
45
+ Permission.ProjectAdmin,
46
+ Permission.ProjectMember,
47
+ Permission.Viewer,
48
+ Permission.OnCallAdmin,
49
+ Permission.OnCallMember,
50
+ Permission.OnCallViewer,
51
+ Permission.ReadProjectOnCallDutyPolicySchedule,
52
+ ];
53
+
54
+ const updatePermissions: Array<Permission> = [
55
+ Permission.ProjectOwner,
56
+ Permission.ProjectAdmin,
57
+ Permission.ProjectMember,
58
+ Permission.OnCallAdmin,
59
+ Permission.OnCallMember,
60
+ Permission.EditProjectOnCallDutyPolicySchedule,
61
+ ];
62
+
63
+ @TableBillingAccessControl({
64
+ create: PlanType.Growth,
65
+ read: PlanType.Growth,
66
+ update: PlanType.Growth,
67
+ delete: PlanType.Growth,
68
+ })
69
+ @TenantColumn("projectId")
70
+ @AllowAccessIfSubscriptionIsUnpaid()
71
+ @TableAccessControl({
72
+ create: [
73
+ Permission.ProjectOwner,
74
+ Permission.ProjectAdmin,
75
+ Permission.ProjectMember,
76
+ Permission.OnCallAdmin,
77
+ Permission.OnCallMember,
78
+ Permission.CreateProjectOnCallDutyPolicySchedule,
79
+ ],
80
+ read: [
81
+ Permission.ProjectOwner,
82
+ Permission.ProjectAdmin,
83
+ Permission.ProjectMember,
84
+ Permission.Viewer,
85
+ Permission.OnCallAdmin,
86
+ Permission.OnCallMember,
87
+ Permission.OnCallViewer,
88
+ Permission.ReadProjectOnCallDutyPolicySchedule,
89
+ ],
90
+ delete: [
91
+ Permission.ProjectOwner,
92
+ Permission.ProjectAdmin,
93
+ Permission.ProjectMember,
94
+ Permission.OnCallAdmin,
95
+ Permission.OnCallMember,
96
+ Permission.DeleteProjectOnCallDutyPolicySchedule,
97
+ ],
98
+ update: [
99
+ Permission.ProjectOwner,
100
+ Permission.ProjectAdmin,
101
+ Permission.ProjectMember,
102
+ Permission.OnCallAdmin,
103
+ Permission.OnCallMember,
104
+ Permission.EditProjectOnCallDutyPolicySchedule,
105
+ ],
106
+ })
107
+ @CrudApiEndpoint(new Route("/project-on-call-calendar-feed"))
108
+ @Entity({
109
+ name: "ProjectOnCallCalendarFeed",
110
+ })
111
+ @TableMetadata({
112
+ tableName: "ProjectOnCallCalendarFeed",
113
+ singularName: "Project On-Call Calendar Feed",
114
+ pluralName: "Project On-Call Calendar Feeds",
115
+ icon: IconProp.Calendar,
116
+ tableDescription:
117
+ "A shared calendar-subscription link that renders everybody's shifts on every on-call schedule in the project.",
118
+ })
119
+ @Index(["projectId"], { unique: true })
120
+ export default class ProjectOnCallCalendarFeed extends BaseModel {
121
+ @ColumnAccessControl({
122
+ create: createPermissions,
123
+ read: readPermissions,
124
+ update: [],
125
+ })
126
+ @TableColumn({
127
+ manyToOneRelationColumn: "projectId",
128
+ type: TableColumnType.Entity,
129
+ modelType: Project,
130
+ title: "Project",
131
+ description: "Relation to Project Resource in which this object belongs",
132
+ example: "5f8b9c0d-e1a2-4b3c-8d5e-6f7a8b9c0d1e",
133
+ })
134
+ @ManyToOne(
135
+ () => {
136
+ return Project;
137
+ },
138
+ {
139
+ eager: false,
140
+ nullable: true,
141
+ onDelete: "CASCADE",
142
+ orphanedRowAction: "nullify",
143
+ },
144
+ )
145
+ @JoinColumn({ name: "projectId" })
146
+ public project?: Project = undefined;
147
+
148
+ @ColumnAccessControl({
149
+ create: createPermissions,
150
+ read: readPermissions,
151
+ update: [],
152
+ })
153
+ @TableColumn({
154
+ type: TableColumnType.ObjectID,
155
+ required: true,
156
+ canReadOnRelationQuery: true,
157
+ title: "Project ID",
158
+ description: "ID of your OneUptime Project in which this object belongs",
159
+ example: "5f8b9c0d-e1a2-4b3c-8d5e-6f7a8b9c0d1e",
160
+ })
161
+ @Column({
162
+ type: ColumnType.ObjectID,
163
+ nullable: false,
164
+ transformer: ObjectID.getDatabaseTransformer(),
165
+ })
166
+ public projectId?: ObjectID = undefined;
167
+
168
+ @ColumnAccessControl({
169
+ create: [],
170
+ read: [],
171
+ update: [],
172
+ })
173
+ @TableColumn({
174
+ type: TableColumnType.ShortText,
175
+ required: true,
176
+ computed: true,
177
+ canReadOnRelationQuery: false,
178
+ title: "Token Hash",
179
+ description: "SHA-256 digest of the feed token; the lookup key",
180
+ hideColumnInDocumentation: true,
181
+ })
182
+ @Column({
183
+ type: ColumnType.ShortText,
184
+ length: ColumnLength.ShortText,
185
+ nullable: false,
186
+ unique: true,
187
+ })
188
+ public tokenHash?: string = undefined;
189
+
190
+ @ColumnAccessControl({
191
+ create: [],
192
+ read: [],
193
+ update: [],
194
+ })
195
+ @TableColumn({
196
+ type: TableColumnType.VeryLongText,
197
+ computed: true,
198
+ encrypted: true,
199
+ canReadOnRelationQuery: false,
200
+ title: "Token",
201
+ description: "Encrypted feed token, re-displayed only to schedule readers",
202
+ hideColumnInDocumentation: true,
203
+ })
204
+ @Column({
205
+ type: ColumnType.VeryLongText,
206
+ nullable: true,
207
+ })
208
+ public token?: string = undefined;
209
+
210
+ @ColumnAccessControl({
211
+ create: [],
212
+ read: [],
213
+ update: [],
214
+ })
215
+ @Index()
216
+ @TableColumn({
217
+ type: TableColumnType.ShortText,
218
+ computed: true,
219
+ canReadOnRelationQuery: false,
220
+ title: "Previous Token Hash",
221
+ description: "Digest of the rotated-out token, honoured with an empty feed",
222
+ hideColumnInDocumentation: true,
223
+ })
224
+ @Column({
225
+ type: ColumnType.ShortText,
226
+ length: ColumnLength.ShortText,
227
+ nullable: true,
228
+ })
229
+ public previousTokenHash?: string = undefined;
230
+
231
+ @ColumnAccessControl({
232
+ create: [],
233
+ read: [],
234
+ update: [],
235
+ })
236
+ @TableColumn({
237
+ type: TableColumnType.Date,
238
+ computed: true,
239
+ canReadOnRelationQuery: false,
240
+ title: "Previous Token Expires At",
241
+ description: "When the rotated-out token stops being honoured",
242
+ hideColumnInDocumentation: true,
243
+ })
244
+ @Column({
245
+ type: ColumnType.Date,
246
+ nullable: true,
247
+ })
248
+ public previousTokenExpiresAt?: Date = undefined;
249
+
250
+ @ColumnAccessControl({
251
+ create: [],
252
+ read: readPermissions,
253
+ update: [],
254
+ })
255
+ @TableColumn({
256
+ type: TableColumnType.ShortText,
257
+ computed: true,
258
+ canReadOnRelationQuery: false,
259
+ title: "Token Hint",
260
+ description: "Last four characters of the feed token, for display",
261
+ example: "k3Qx",
262
+ })
263
+ @Column({
264
+ type: ColumnType.ShortText,
265
+ length: ColumnLength.ShortText,
266
+ nullable: true,
267
+ })
268
+ public tokenHint?: string = undefined;
269
+
270
+ @ColumnAccessControl({
271
+ create: createPermissions,
272
+ read: readPermissions,
273
+ update: updatePermissions,
274
+ })
275
+ @TableColumn({
276
+ isDefaultValueColumn: true,
277
+ type: TableColumnType.Boolean,
278
+ defaultValue: true,
279
+ title: "Enabled",
280
+ description:
281
+ "When off, the link keeps working but serves an empty calendar so subscribed apps clear their copy.",
282
+ example: true,
283
+ })
284
+ @Column({
285
+ type: ColumnType.Boolean,
286
+ default: true,
287
+ nullable: false,
288
+ })
289
+ public isEnabled?: boolean = undefined;
290
+
291
+ @ColumnAccessControl({
292
+ create: createPermissions,
293
+ read: readPermissions,
294
+ update: updatePermissions,
295
+ })
296
+ @TableColumn({
297
+ isDefaultValueColumn: true,
298
+ type: TableColumnType.Boolean,
299
+ defaultValue: false,
300
+ title: "Include Coverage Gaps",
301
+ description:
302
+ "Emit a 'No coverage' event where a schedule's layers intended coverage but nobody is on call.",
303
+ example: false,
304
+ })
305
+ @Column({
306
+ type: ColumnType.Boolean,
307
+ default: false,
308
+ nullable: false,
309
+ })
310
+ public includeCoverageGaps?: boolean = undefined;
311
+
312
+ @ColumnAccessControl({
313
+ create: createPermissions,
314
+ read: readPermissions,
315
+ update: updatePermissions,
316
+ })
317
+ @TableColumn({
318
+ isDefaultValueColumn: true,
319
+ type: TableColumnType.Number,
320
+ defaultValue: 60,
321
+ title: "Minimum Gap Minutes",
322
+ description:
323
+ "Coverage gaps shorter than this many minutes are not emitted as events.",
324
+ example: 60,
325
+ })
326
+ @Column({
327
+ type: ColumnType.Number,
328
+ default: 60,
329
+ nullable: false,
330
+ })
331
+ public minimumGapMinutes?: number = undefined;
332
+
333
+ @ColumnAccessControl({
334
+ create: createPermissions,
335
+ read: readPermissions,
336
+ update: updatePermissions,
337
+ })
338
+ @TableColumn({
339
+ isDefaultValueColumn: true,
340
+ type: TableColumnType.Number,
341
+ defaultValue: 2,
342
+ title: "Past Days",
343
+ description:
344
+ "How many days of past shifts the feed includes. Past shifts reflect the current rotation, not who was actually paged.",
345
+ example: 2,
346
+ })
347
+ @Column({
348
+ type: ColumnType.Number,
349
+ default: 2,
350
+ nullable: false,
351
+ })
352
+ public pastDays?: number = undefined;
353
+
354
+ @ColumnAccessControl({
355
+ create: createPermissions,
356
+ read: readPermissions,
357
+ update: updatePermissions,
358
+ })
359
+ @TableColumn({
360
+ isDefaultValueColumn: true,
361
+ type: TableColumnType.Number,
362
+ defaultValue: 90,
363
+ title: "Future Days",
364
+ description: "How many days of upcoming shifts the feed includes.",
365
+ example: 90,
366
+ })
367
+ @Column({
368
+ type: ColumnType.Number,
369
+ default: 90,
370
+ nullable: false,
371
+ })
372
+ public futureDays?: number = undefined;
373
+
374
+ @ColumnAccessControl({
375
+ create: createPermissions,
376
+ read: readPermissions,
377
+ update: updatePermissions,
378
+ })
379
+ @TableColumn({
380
+ isDefaultValueColumn: true,
381
+ type: TableColumnType.Boolean,
382
+ defaultValue: false,
383
+ title: "Rotate When Member Leaves",
384
+ description:
385
+ "Automatically regenerate this link whenever a user leaves the project.",
386
+ example: false,
387
+ })
388
+ @Column({
389
+ type: ColumnType.Boolean,
390
+ default: false,
391
+ nullable: false,
392
+ })
393
+ public rotateWhenMemberLeaves?: boolean = undefined;
394
+
395
+ @ColumnAccessControl({
396
+ create: [],
397
+ read: readPermissions,
398
+ update: [],
399
+ })
400
+ @TableColumn({
401
+ type: TableColumnType.Date,
402
+ computed: true,
403
+ title: "Rotated At",
404
+ description: "When the current token was minted",
405
+ })
406
+ @Column({
407
+ type: ColumnType.Date,
408
+ nullable: true,
409
+ })
410
+ public rotatedAt?: Date = undefined;
411
+
412
+ @ColumnAccessControl({
413
+ create: [],
414
+ read: readPermissions,
415
+ update: [],
416
+ })
417
+ @TableColumn({
418
+ type: TableColumnType.Date,
419
+ computed: true,
420
+ title: "Last Fetched At",
421
+ description: "When a calendar client last fetched this feed",
422
+ })
423
+ @Column({
424
+ type: ColumnType.Date,
425
+ nullable: true,
426
+ })
427
+ public lastFetchedAt?: Date = undefined;
428
+
429
+ @ColumnAccessControl({
430
+ create: [],
431
+ read: readPermissions,
432
+ update: [],
433
+ })
434
+ @TableColumn({
435
+ type: TableColumnType.ShortText,
436
+ computed: true,
437
+ title: "Last Fetched Client",
438
+ description:
439
+ "Coarse family of the calendar client that last fetched this feed (for example Google Calendar)",
440
+ example: "Google Calendar",
441
+ })
442
+ @Column({
443
+ type: ColumnType.ShortText,
444
+ length: ColumnLength.ShortText,
445
+ nullable: true,
446
+ })
447
+ public lastFetchedClient?: string = undefined;
448
+
449
+ @ColumnAccessControl({
450
+ create: [],
451
+ read: readPermissions,
452
+ update: [],
453
+ })
454
+ @TableColumn({
455
+ isDefaultValueColumn: true,
456
+ type: TableColumnType.Number,
457
+ defaultValue: 0,
458
+ computed: true,
459
+ title: "Fetch Count",
460
+ description: "Approximate number of times this feed has been fetched",
461
+ example: 143,
462
+ })
463
+ @Column({
464
+ type: ColumnType.Number,
465
+ default: 0,
466
+ nullable: false,
467
+ })
468
+ public fetchCount?: number = undefined;
469
+
470
+ @ColumnAccessControl({
471
+ create: [],
472
+ read: readPermissions,
473
+ update: [],
474
+ })
475
+ @TableColumn({
476
+ isDefaultValueColumn: true,
477
+ type: TableColumnType.Boolean,
478
+ defaultValue: false,
479
+ computed: true,
480
+ title: "Last Render Truncated",
481
+ description:
482
+ "Whether the last render had to shrink the window or stop early to stay within limits",
483
+ example: false,
484
+ })
485
+ @Column({
486
+ type: ColumnType.Boolean,
487
+ default: false,
488
+ nullable: false,
489
+ })
490
+ public lastRenderTruncated?: boolean = undefined;
491
+
492
+ @ColumnAccessControl({
493
+ create: createPermissions,
494
+ read: readPermissions,
495
+ update: [],
496
+ })
497
+ @TableColumn({
498
+ manyToOneRelationColumn: "createdByUserId",
499
+ type: TableColumnType.Entity,
500
+ modelType: User,
501
+ title: "Created by User",
502
+ description:
503
+ "Relation to User who created this object (if this object was created by a User)",
504
+ })
505
+ @ManyToOne(
506
+ () => {
507
+ return User;
508
+ },
509
+ {
510
+ eager: false,
511
+ nullable: true,
512
+ onDelete: "SET NULL",
513
+ orphanedRowAction: "nullify",
514
+ },
515
+ )
516
+ @JoinColumn({ name: "createdByUserId" })
517
+ public createdByUser?: User = undefined;
518
+
519
+ @ColumnAccessControl({
520
+ create: createPermissions,
521
+ read: readPermissions,
522
+ update: [],
523
+ })
524
+ @TableColumn({
525
+ type: TableColumnType.ObjectID,
526
+ title: "Created by User ID",
527
+ description:
528
+ "User ID who created this object (if this object was created by a User)",
529
+ example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
530
+ })
531
+ @Column({
532
+ type: ColumnType.ObjectID,
533
+ nullable: true,
534
+ transformer: ObjectID.getDatabaseTransformer(),
535
+ })
536
+ public createdByUserId?: ObjectID = undefined;
537
+
538
+ @ColumnAccessControl({
539
+ create: [],
540
+ read: [],
541
+ update: [],
542
+ })
543
+ @TableColumn({
544
+ manyToOneRelationColumn: "deletedByUserId",
545
+ type: TableColumnType.Entity,
546
+ title: "Deleted by User",
547
+ modelType: User,
548
+ description:
549
+ "Relation to User who deleted this object (if this object was deleted by a User)",
550
+ })
551
+ @ManyToOne(
552
+ () => {
553
+ return User;
554
+ },
555
+ {
556
+ cascade: false,
557
+ eager: false,
558
+ nullable: true,
559
+ onDelete: "SET NULL",
560
+ orphanedRowAction: "nullify",
561
+ },
562
+ )
563
+ @JoinColumn({ name: "deletedByUserId" })
564
+ public deletedByUser?: User = undefined;
565
+
566
+ @ColumnAccessControl({
567
+ create: [],
568
+ read: [],
569
+ update: [],
570
+ })
571
+ @TableColumn({
572
+ type: TableColumnType.ObjectID,
573
+ title: "Deleted by User ID",
574
+ description:
575
+ "User ID who deleted this object (if this object was deleted by a User)",
576
+ example: "b2c3d4e5-f6a7-8901-bcde-f12345678901",
577
+ })
578
+ @Column({
579
+ type: ColumnType.ObjectID,
580
+ nullable: true,
581
+ transformer: ObjectID.getDatabaseTransformer(),
582
+ })
583
+ public deletedByUserId?: ObjectID = undefined;
584
+ }
@@ -761,4 +761,47 @@ export default class StatusPageDomain extends BaseModel {
761
761
  default: false, // default is false
762
762
  })
763
763
  public isCustomCertificate?: boolean = undefined;
764
+
765
+ /*
766
+ * When a reissue of this domain's Let's Encrypt certificate was last
767
+ * REQUESTED from the dashboard - not when one last succeeded.
768
+ *
769
+ * This is the whole state behind the reissue cooldown. Certificates come
770
+ * from a Let's Encrypt account shared by every customer on the
771
+ * installation, and a failed order still spends a validation attempt
772
+ * against that account, so the stamp is written before the order is
773
+ * attempted and is left in place whether the order succeeds or fails.
774
+ *
775
+ * Null means this domain has never had a reissue requested; automated
776
+ * renewal never writes here, so the cron keeping a certificate fresh can
777
+ * never be the reason a customer's button is refused.
778
+ */
779
+ @ColumnAccessControl({
780
+ create: [],
781
+ read: [
782
+ Permission.ProjectOwner,
783
+ Permission.ProjectAdmin,
784
+ Permission.ProjectMember,
785
+ Permission.Viewer,
786
+ Permission.StatusPageAdmin,
787
+ Permission.StatusPageMember,
788
+ Permission.StatusPageViewer,
789
+ Permission.ReadStatusPageDomain,
790
+ ],
791
+ update: [],
792
+ })
793
+ @TableColumn({
794
+ required: false,
795
+ computed: true,
796
+ type: TableColumnType.Date,
797
+ title: "Certificate Reissue Requested At",
798
+ description:
799
+ "When a reissue of the SSL certificate for this domain was last requested. Used to rate limit how often a certificate can be reissued.",
800
+ })
801
+ @Column({
802
+ type: ColumnType.Date,
803
+ nullable: true,
804
+ unique: false,
805
+ })
806
+ public certificateReissueRequestedAt?: Date = undefined;
764
807
  }