@oneuptime/common 13.0.8 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/Models/AnalyticsModels/AuditLog.ts +23 -15
  2. package/Models/DatabaseModels/GlobalConfig.ts +24 -0
  3. package/Models/DatabaseModels/Monitor.ts +3 -2
  4. package/Models/DatabaseModels/MonitorTemplate.ts +2 -1
  5. package/Scripts/generate-service-worker.js +65 -4
  6. package/Server/API/BaseAPI.ts +26 -5
  7. package/Server/API/GlobalConfigAPI.ts +228 -462
  8. package/Server/API/ProjectOIDC.ts +25 -16
  9. package/Server/API/ProjectSSO.ts +24 -16
  10. package/Server/API/StatusPageAPI.ts +100 -42
  11. package/Server/API/TeamMemberAPI.ts +10 -1
  12. package/Server/Enterprise/EnterpriseEdition.ts +649 -0
  13. package/Server/Enterprise/EnterpriseFeature.ts +48 -0
  14. package/Server/Enterprise/EnterpriseLicenseSnapshot.ts +192 -0
  15. package/Server/Enterprise/EnterpriseServerModule.ts +233 -0
  16. package/Server/EnvironmentConfig.ts +147 -2
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.ts +25 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  19. package/Server/Middleware/UserAuthorization.ts +38 -16
  20. package/Server/Services/AuditLogService.ts +84 -1079
  21. package/Server/Services/EnterpriseLicenseService.ts +38 -0
  22. package/Server/Services/GlobalConfigService.ts +80 -1
  23. package/Server/Services/MonitorProbeService.ts +116 -20
  24. package/Server/Services/MonitorService.ts +56 -4
  25. package/Server/Services/MonitorStatusTimelineService.ts +284 -0
  26. package/Server/Services/MonitorTemplateService.ts +26 -0
  27. package/Server/Services/ProjectService.ts +284 -0
  28. package/Server/Services/RumSessionPinService.ts +25 -6
  29. package/Server/Services/StatusPagePrivateUserService.ts +7 -3
  30. package/Server/Services/StatusPageService.ts +78 -1
  31. package/Server/Services/TeamMemberService.ts +11 -0
  32. package/Server/Services/TeamService.ts +10 -0
  33. package/Server/Services/UserService.ts +10 -17
  34. package/Server/Types/Database/Permissions/CreatePermission.ts +15 -0
  35. package/Server/Types/Database/Permissions/EditionPermission.ts +208 -18
  36. package/Server/Types/Database/Permissions/TablePermission.ts +10 -3
  37. package/Server/Types/Database/Permissions/UpdatePermission.ts +29 -0
  38. package/Server/Types/Markdown.ts +41 -0
  39. package/Server/Utils/CommunityEditionSsoReport.ts +361 -0
  40. package/Server/Utils/EditionEnforcement.ts +233 -0
  41. package/Server/Utils/FrontendEnvironment.ts +41 -2
  42. package/Server/Utils/InstanceHealth/RedisHealth.ts +12 -277
  43. package/Server/Utils/Monitor/AffectedResourceList.ts +190 -0
  44. package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +10 -1
  45. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +543 -333
  46. package/Server/Utils/Monitor/MonitoringIntervalValidator.ts +116 -0
  47. package/Server/Utils/Workspace/Slack/Slack.ts +423 -10
  48. package/Tests/App/Accounts/LoginPasskey.test.tsx +18 -0
  49. package/Tests/App/Accounts/LoginSsoEdition.test.tsx +616 -0
  50. package/Tests/App/AdminDashboard/AdminAuthenticationSsoEdition.test.tsx +217 -0
  51. package/Tests/App/AdminDashboard/AdminEnterprisePluginPage.test.tsx +357 -0
  52. package/Tests/App/AdminDashboard/EnterpriseLicensesShell.test.tsx +214 -0
  53. package/Tests/App/AdminDashboard/GlobalSSOEnterpriseShells.test.tsx +271 -0
  54. package/Tests/App/AdminDashboard/HealthShells.test.tsx +659 -0
  55. package/Tests/App/Dashboard/AuditLogsAndComplianceShells.test.tsx +572 -0
  56. package/Tests/App/Dashboard/EnterpriseFeatureUpgrade.test.tsx +547 -0
  57. package/Tests/App/Dashboard/EnterprisePluginPage.test.tsx +667 -0
  58. package/Tests/App/Dashboard/IdentityEnterpriseShells.test.tsx +319 -0
  59. package/Tests/App/Dashboard/OnboardingSsoEmptyState.test.tsx +185 -0
  60. package/Tests/App/Dashboard/SecurityEventConnectionDiagnostics.test.tsx +45 -9
  61. package/Tests/App/Dashboard/SecurityEventDetailPanel.test.tsx +399 -0
  62. package/Tests/App/Dashboard/SecurityEventListRow.test.tsx +214 -0
  63. package/Tests/App/Dashboard/SecurityEventsEmptyState.test.tsx +1 -83
  64. package/Tests/App/Dashboard/SecurityEventsNavTabs.test.tsx +248 -0
  65. package/Tests/App/Dashboard/SecurityEventsViewer.test.tsx +1203 -0
  66. package/Tests/App/Dashboard/UserEmailCallSites.test.tsx +11 -91
  67. package/Tests/App/StatusPage/StatusPageSsoEmptyState.test.tsx +319 -0
  68. package/Tests/Helpers/RefreshAwareApiScan.ts +757 -0
  69. package/Tests/Helpers/TenantScopedRequestScan.ts +515 -0
  70. package/Tests/Scripts/GenerateServiceWorker.test.ts +931 -0
  71. package/Tests/Server/API/BaseAPICreateItemDoesNotMutateModel.test.ts +130 -0
  72. package/Tests/Server/API/GlobalConfigLicense.test.ts +742 -497
  73. package/Tests/Server/API/OnCallReadinessAPI.test.ts +35 -909
  74. package/Tests/Server/API/SsoProviderListingsEdition.test.ts +432 -0
  75. package/Tests/Server/API/TeamMemberLeaveScimLockEdition.test.ts +252 -0
  76. package/Tests/Server/Enterprise/EnterpriseEdition.test.ts +824 -0
  77. package/Tests/Server/Enterprise/EnterpriseFeatureActive.test.ts +643 -0
  78. package/Tests/Server/Enterprise/EnterpriseLicenseSnapshot.test.ts +294 -0
  79. package/Tests/Server/Enterprise/EnterpriseModelFeatureMap.test.ts +93 -0
  80. package/Tests/Server/Enterprise/EnterpriseOnlyModulesLiveInEe.test.ts +582 -0
  81. package/Tests/Server/Enterprise/EnterpriseServerModule.test.ts +247 -0
  82. package/Tests/Server/Enterprise/FakeEnterpriseModule.ts +502 -0
  83. package/Tests/Server/Enterprise/TestBillingFlag.ts +70 -0
  84. package/Tests/Server/EnvironmentConfigEnterpriseEdition.test.ts +314 -0
  85. package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +289 -0
  86. package/Tests/Server/Infrastructure/E2EClickHouseFixtureAccess.test.ts +5 -1
  87. package/Tests/Server/Middleware/UserAuthorization.test.ts +37 -2
  88. package/Tests/Server/Middleware/UserAuthorizationEditionEnforcement.test.ts +516 -0
  89. package/Tests/Server/Services/AuditLogService.test.ts +460 -990
  90. package/Tests/Server/Services/CreateAndReadResponsesKeepIds.test.ts +263 -0
  91. package/Tests/Server/Services/EnterpriseLicenseServiceKeyGeneration.test.ts +151 -0
  92. package/Tests/Server/Services/GlobalConfigServiceLicenseColumns.test.ts +357 -0
  93. package/Tests/Server/Services/MonitorDestinationInfoIPv6.test.ts +101 -0
  94. package/Tests/Server/Services/MonitorProbeServiceIntervalScheduling.test.ts +333 -0
  95. package/Tests/Server/Services/MonitorStatusTimelineDailyAggregates.test.ts +303 -0
  96. package/Tests/Server/Services/ProjectServiceAuditLogLicense.test.ts +701 -0
  97. package/Tests/Server/Services/ProjectServiceAuditLogSettingsCache.test.ts +31 -35
  98. package/Tests/Server/Services/ScimPushGroupsTeamLocksEdition.test.ts +431 -0
  99. package/Tests/Server/Services/SsoRequirementReadMasking.test.ts +419 -0
  100. package/Tests/Server/Services/SsoRequirementWriteGuard.test.ts +769 -0
  101. package/Tests/Server/Services/StatusPagePrivateUserInvitationPolicy.test.ts +94 -0
  102. package/Tests/Server/Services/UserAuthenticationService.test.ts +35 -0
  103. package/Tests/Server/Services/UserServiceSeatLimit.test.ts +94 -56
  104. package/Tests/Server/Types/Database/Permissions/EditionPermission.test.ts +1823 -0
  105. package/Tests/Server/Types/Markdown.test.ts +181 -0
  106. package/Tests/Server/Utils/CommunityEditionSsoReport.test.ts +565 -0
  107. package/Tests/Server/Utils/EditionEnforcement.test.ts +303 -0
  108. package/Tests/Server/Utils/FrontendEnvironment.test.ts +367 -0
  109. package/Tests/Server/Utils/InstanceHealth/RedisHealth.test.ts +38 -418
  110. package/Tests/Server/Utils/Monitor/AffectedResourceList.test.ts +518 -0
  111. package/Tests/Server/Utils/Monitor/Criteria/EvaluateOverTime.test.ts +24 -4
  112. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +934 -96
  113. package/Tests/Server/Utils/Monitor/MonitoringIntervalValidator.test.ts +188 -0
  114. package/Tests/Server/Utils/Workspace/Slack/SlackMarkdownSectionSplit.test.ts +1209 -0
  115. package/Tests/Types/API/HostnameFromAuthority.test.ts +20 -10
  116. package/Tests/Types/API/HostnameIPv6.test.ts +149 -0
  117. package/Tests/Types/Database/CanonicalModelInstance.test.ts +190 -0
  118. package/Tests/UI/Components/EditionLabelLapseCopy.ts +104 -0
  119. package/Tests/UI/Components/EditionLabelLicenseManagerWiring.test.tsx +254 -0
  120. package/Tests/UI/Components/EditionLabelLicenseRefresh.test.tsx +84 -178
  121. package/Tests/UI/Components/EditionLabelLicenseStatus.test.tsx +1586 -0
  122. package/Tests/UI/Components/EditionLabelLicenseWritesGuard.test.tsx +157 -0
  123. package/Tests/UI/Components/Graphs/DayUptimeGraph.test.tsx +49 -2
  124. package/Tests/UI/Components/MarkdownConverters.test.ts +684 -0
  125. package/Tests/UI/Components/ModelListEmptyState.test.tsx +289 -0
  126. package/Tests/UI/Components/TelemetryViewer/TelemetryViewerEmptyContent.test.tsx +131 -0
  127. package/Tests/UI/EsbuildEnterpriseAlias.test.ts +1127 -0
  128. package/Tests/Utils/HostAddressUtil.test.ts +138 -0
  129. package/Tests/Utils/Monitor/MonitorDestinationUtil.test.ts +313 -0
  130. package/Tests/Utils/Monitor/MonitoringIntervalUtil.test.ts +304 -0
  131. package/Tests/Utils/StatusPage/UptimeDailyAggregateUtil.test.ts +248 -0
  132. package/Types/API/Hostname.ts +63 -16
  133. package/Types/Database/AccessControl/ColumnAccessControl.ts +19 -7
  134. package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +19 -7
  135. package/Types/Database/AccessControl/OwnerOnlyColumn.ts +15 -6
  136. package/Types/Database/CanonicalModelInstance.ts +102 -0
  137. package/Types/Database/TableColumn.ts +20 -6
  138. package/Types/EnterpriseLicense/EnterpriseLicensePeriods.ts +29 -0
  139. package/Types/IP/IPv6.ts +6 -1
  140. package/Types/Monitor/MonitorStep.ts +6 -1
  141. package/Types/Monitor/ProxmoxAlertTemplates.ts +1 -1
  142. package/Types/StatusPage/UptimeDailyAggregate.ts +110 -0
  143. package/UI/Components/EditionLabel/EditionLabel.tsx +796 -1195
  144. package/UI/Components/EditionLabel/LicenseManager.ts +119 -0
  145. package/UI/Components/Graphs/DayUptimeGraph.tsx +123 -15
  146. package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
  147. package/UI/Components/ModelList/ModelList.tsx +11 -1
  148. package/UI/Components/MonitorGraphs/Uptime.tsx +69 -0
  149. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +28 -12
  150. package/UI/esbuild-enterprise.js +263 -0
  151. package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +7 -2
  152. package/Utils/HostAddressUtil.ts +94 -0
  153. package/Utils/Monitor/MonitorDestinationUtil.ts +157 -0
  154. package/Utils/Monitor/MonitoringIntervalUtil.ts +436 -0
  155. package/Utils/StatusPage/UptimeDailyAggregateUtil.ts +192 -0
  156. package/build/dist/Models/AnalyticsModels/AuditLog.js +23 -15
  157. package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
  158. package/build/dist/Models/DatabaseModels/GlobalConfig.js +25 -0
  159. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  160. package/build/dist/Models/DatabaseModels/Monitor.js +2 -2
  161. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  162. package/build/dist/Models/DatabaseModels/MonitorTemplate.js +2 -1
  163. package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
  164. package/build/dist/Server/API/BaseAPI.js +26 -5
  165. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  166. package/build/dist/Server/API/GlobalConfigAPI.js +148 -344
  167. package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
  168. package/build/dist/Server/API/ProjectOIDC.js +24 -16
  169. package/build/dist/Server/API/ProjectOIDC.js.map +1 -1
  170. package/build/dist/Server/API/ProjectSSO.js +24 -16
  171. package/build/dist/Server/API/ProjectSSO.js.map +1 -1
  172. package/build/dist/Server/API/StatusPageAPI.js +93 -43
  173. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  174. package/build/dist/Server/API/TeamMemberAPI.js +8 -1
  175. package/build/dist/Server/API/TeamMemberAPI.js.map +1 -1
  176. package/build/dist/Server/Enterprise/EnterpriseEdition.js +466 -0
  177. package/build/dist/Server/Enterprise/EnterpriseEdition.js.map +1 -0
  178. package/build/dist/Server/Enterprise/EnterpriseFeature.js +39 -0
  179. package/build/dist/Server/Enterprise/EnterpriseFeature.js.map +1 -0
  180. package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js +70 -0
  181. package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js.map +1 -0
  182. package/build/dist/Server/Enterprise/EnterpriseServerModule.js +84 -0
  183. package/build/dist/Server/Enterprise/EnterpriseServerModule.js.map +1 -0
  184. package/build/dist/Server/EnvironmentConfig.js +84 -2
  185. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  186. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.js +18 -0
  187. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.js.map +1 -0
  188. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  189. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  190. package/build/dist/Server/Middleware/UserAuthorization.js +30 -11
  191. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  192. package/build/dist/Server/Services/AuditLogService.js +71 -740
  193. package/build/dist/Server/Services/AuditLogService.js.map +1 -1
  194. package/build/dist/Server/Services/EnterpriseLicenseService.js +34 -0
  195. package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
  196. package/build/dist/Server/Services/GlobalConfigService.js +63 -0
  197. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  198. package/build/dist/Server/Services/MonitorProbeService.js +90 -17
  199. package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
  200. package/build/dist/Server/Services/MonitorService.js +45 -4
  201. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  202. package/build/dist/Server/Services/MonitorStatusTimelineService.js +242 -0
  203. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  204. package/build/dist/Server/Services/MonitorTemplateService.js +16 -0
  205. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  206. package/build/dist/Server/Services/ProjectService.js +214 -0
  207. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  208. package/build/dist/Server/Services/RumSessionPinService.js +24 -6
  209. package/build/dist/Server/Services/RumSessionPinService.js.map +1 -1
  210. package/build/dist/Server/Services/StatusPagePrivateUserService.js +7 -3
  211. package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
  212. package/build/dist/Server/Services/StatusPageService.js +71 -0
  213. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  214. package/build/dist/Server/Services/TeamMemberService.js +10 -0
  215. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  216. package/build/dist/Server/Services/TeamService.js +9 -0
  217. package/build/dist/Server/Services/TeamService.js.map +1 -1
  218. package/build/dist/Server/Services/UserService.js +10 -16
  219. package/build/dist/Server/Services/UserService.js.map +1 -1
  220. package/build/dist/Server/Types/Database/Permissions/CreatePermission.js +10 -0
  221. package/build/dist/Server/Types/Database/Permissions/CreatePermission.js.map +1 -1
  222. package/build/dist/Server/Types/Database/Permissions/EditionPermission.js +154 -14
  223. package/build/dist/Server/Types/Database/Permissions/EditionPermission.js.map +1 -1
  224. package/build/dist/Server/Types/Database/Permissions/TablePermission.js +10 -3
  225. package/build/dist/Server/Types/Database/Permissions/TablePermission.js.map +1 -1
  226. package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js +17 -0
  227. package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js.map +1 -1
  228. package/build/dist/Server/Types/Markdown.js +31 -0
  229. package/build/dist/Server/Types/Markdown.js.map +1 -1
  230. package/build/dist/Server/Utils/CommunityEditionSsoReport.js +223 -0
  231. package/build/dist/Server/Utils/CommunityEditionSsoReport.js.map +1 -0
  232. package/build/dist/Server/Utils/EditionEnforcement.js +187 -0
  233. package/build/dist/Server/Utils/EditionEnforcement.js.map +1 -0
  234. package/build/dist/Server/Utils/FrontendEnvironment.js +31 -2
  235. package/build/dist/Server/Utils/FrontendEnvironment.js.map +1 -1
  236. package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js +6 -193
  237. package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js.map +1 -1
  238. package/build/dist/Server/Utils/Monitor/AffectedResourceList.js +96 -0
  239. package/build/dist/Server/Utils/Monitor/AffectedResourceList.js.map +1 -0
  240. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +8 -1
  241. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
  242. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +449 -261
  243. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  244. package/build/dist/Server/Utils/Monitor/MonitoringIntervalValidator.js +88 -0
  245. package/build/dist/Server/Utils/Monitor/MonitoringIntervalValidator.js.map +1 -0
  246. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +331 -11
  247. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  248. package/build/dist/Types/API/Hostname.js +59 -11
  249. package/build/dist/Types/API/Hostname.js.map +1 -1
  250. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +19 -7
  251. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
  252. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +19 -7
  253. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
  254. package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js +13 -6
  255. package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js.map +1 -1
  256. package/build/dist/Types/Database/CanonicalModelInstance.js +88 -0
  257. package/build/dist/Types/Database/CanonicalModelInstance.js.map +1 -0
  258. package/build/dist/Types/Database/TableColumn.js +19 -6
  259. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  260. package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js +28 -0
  261. package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js.map +1 -0
  262. package/build/dist/Types/IP/IPv6.js +6 -1
  263. package/build/dist/Types/IP/IPv6.js.map +1 -1
  264. package/build/dist/Types/Monitor/MonitorStep.js +5 -0
  265. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  266. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +1 -1
  267. package/build/dist/Types/StatusPage/UptimeDailyAggregate.js +32 -0
  268. package/build/dist/Types/StatusPage/UptimeDailyAggregate.js.map +1 -0
  269. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +414 -585
  270. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  271. package/build/dist/UI/Components/EditionLabel/LicenseManager.js +2 -0
  272. package/build/dist/UI/Components/EditionLabel/LicenseManager.js.map +1 -0
  273. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +90 -17
  274. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
  275. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
  276. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
  277. package/build/dist/UI/Components/ModelList/ModelList.js +4 -1
  278. package/build/dist/UI/Components/ModelList/ModelList.js.map +1 -1
  279. package/build/dist/UI/Components/MonitorGraphs/Uptime.js +42 -1
  280. package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
  281. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +2 -2
  282. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  283. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +6 -2
  284. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
  285. package/build/dist/Utils/HostAddressUtil.js +80 -0
  286. package/build/dist/Utils/HostAddressUtil.js.map +1 -0
  287. package/build/dist/Utils/Monitor/MonitorDestinationUtil.js +127 -0
  288. package/build/dist/Utils/Monitor/MonitorDestinationUtil.js.map +1 -0
  289. package/build/dist/Utils/Monitor/MonitoringIntervalUtil.js +374 -0
  290. package/build/dist/Utils/Monitor/MonitoringIntervalUtil.js.map +1 -0
  291. package/build/dist/Utils/StatusPage/UptimeDailyAggregateUtil.js +148 -0
  292. package/build/dist/Utils/StatusPage/UptimeDailyAggregateUtil.js.map +1 -0
  293. package/jest.config.json +3 -1
  294. package/package.json +1 -1
  295. package/test-setup.sh +103 -34
  296. package/tsconfig.json +13 -0
  297. package/Server/API/EnterpriseLicenseAPI.ts +0 -925
  298. package/Server/API/TeamComplianceAPI.ts +0 -158
  299. package/Server/Middleware/SCIMAuthorization.ts +0 -141
  300. package/Server/Services/TeamComplianceService.ts +0 -733
  301. package/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.ts +0 -186
  302. package/Server/Utils/InstanceHealth/PostgresHealth.ts +0 -286
  303. package/Tests/App/AdminDashboard/EnterpriseLicenseInstanceActivity.test.tsx +0 -451
  304. package/Tests/App/Dashboard/AuditLogsTable.test.tsx +0 -598
  305. package/Tests/App/Dashboard/SecurityEventsExplorer.test.tsx +0 -761
  306. package/Tests/App/Dashboard/SecurityEventsSideMenu.test.tsx +0 -247
  307. package/Tests/App/Dashboard/SecurityEventsTableColumns.test.tsx +0 -382
  308. package/Tests/App/Dashboard/SecurityEventsVolumeChart.test.tsx +0 -321
  309. package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +0 -1851
  310. package/Tests/Server/Middleware/SCIMAuthorization.test.ts +0 -525
  311. package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +0 -1845
  312. package/Tests/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.test.ts +0 -495
  313. package/Tests/Server/Utils/InstanceHealth/PostgresHealth.test.ts +0 -337
  314. package/Tests/Utils/EnterpriseLicenseSeats.test.ts +0 -576
  315. package/Tests/Utils/EnterpriseLicenseSync.test.ts +0 -568
  316. package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +0 -287
  317. package/Utils/EnterpriseLicense/EnterpriseLicenseSync.ts +0 -244
  318. package/build/dist/Server/API/EnterpriseLicenseAPI.js +0 -646
  319. package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +0 -1
  320. package/build/dist/Server/API/TeamComplianceAPI.js +0 -111
  321. package/build/dist/Server/API/TeamComplianceAPI.js.map +0 -1
  322. package/build/dist/Server/Middleware/SCIMAuthorization.js +0 -124
  323. package/build/dist/Server/Middleware/SCIMAuthorization.js.map +0 -1
  324. package/build/dist/Server/Services/TeamComplianceService.js +0 -537
  325. package/build/dist/Server/Services/TeamComplianceService.js.map +0 -1
  326. package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js +0 -145
  327. package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js.map +0 -1
  328. package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js +0 -194
  329. package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js.map +0 -1
  330. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +0 -168
  331. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +0 -1
  332. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSync.js +0 -174
  333. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSync.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectOIDC.js","sourceRoot":"","sources":["../../../../Server/API/ProjectOIDC.ts"],"names":[],"mappings":"AAAA,OAAO,kBAEN,MAAM,gCAAgC,CAAC;AAMxC,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,WAAW,MAAM,yCAAyC,CAAC;AAElE,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAG3C;IACC;;QACE,KAAK,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAEvC,iBAAiB;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,uBAAuB,EACrC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,MAAM,SAAS,GAAa,IAAI,QAAQ,CACtC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAW,CAClC,CAAC;gBAEF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,CAC5C,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,GAAuB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBACzD,KAAK,EAAE;wBACL,SAAS,EAAE,SAAS;wBACpB,SAAS,EAAE,IAAI;qBAChB;oBACD,KAAK,EAAE,iBAAiB;oBACxB,IAAI,EAAE,CAAC;oBACP,MAAM,EAAE;wBACN,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,IAAI;wBACjB,GAAG,EAAE,IAAI;qBACV;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,uBAAuB,CACrC,GAAG,EACH,GAAG,EACH,IAAI,EACJ,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC/B,WAAW,CACZ,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"ProjectOIDC.js","sourceRoot":"","sources":["../../../../Server/API/ProjectOIDC.ts"],"names":[],"mappings":"AAAA,OAAO,kBAEN,MAAM,gCAAgC,CAAC;AAMxC,OAAO,kBAAkB,MAAM,6BAA6B,CAAC;AAC7D,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,WAAW,MAAM,yCAAyC,CAAC;AAElE,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAG3C;IACC;;QACE,KAAK,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAEvC,iBAAiB;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,uBAAuB,EACrC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,MAAM,SAAS,GAAa,IAAI,QAAQ,CACtC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAW,CAClC,CAAC;gBAEF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,CAC5C,CAAC;gBACJ,CAAC;gBAED;;;;mBAIG;gBACH,MAAM,IAAI,GACR,kBAAkB,CAAC,kBAAkB,EAAE;oBACrC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;wBACxB,KAAK,EAAE;4BACL,SAAS,EAAE,SAAS;4BACpB,SAAS,EAAE,IAAI;yBAChB;wBACD,KAAK,EAAE,iBAAiB;wBACxB,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE;4BACN,IAAI,EAAE,IAAI;4BACV,WAAW,EAAE,IAAI;4BACjB,GAAG,EAAE,IAAI;yBACV;wBACD,KAAK,EAAE;4BACL,MAAM,EAAE,IAAI;yBACb;qBACF,CAAC;oBACJ,CAAC,CAAC,EAAE,CAAC;gBAET,OAAO,QAAQ,CAAC,uBAAuB,CACrC,GAAG,EACH,GAAG,EACH,IAAI,EACJ,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC/B,WAAW,CACZ,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import ProjectSsoService from "../Services/ProjectSsoService";
2
+ import EditionEnforcement from "../Utils/EditionEnforcement";
2
3
  import Response from "../Utils/Response";
3
4
  import BaseAPI from "./BaseAPI";
4
5
  import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
@@ -18,22 +19,29 @@ export default class ProjectSsoAPI extends BaseAPI {
18
19
  if (!projectId) {
19
20
  return Response.sendErrorResponse(req, res, new BadDataException("Invalid project id."));
20
21
  }
21
- const sso = await this.service.findBy({
22
- query: {
23
- projectId: projectId,
24
- isEnabled: true,
25
- },
26
- limit: LIMIT_PER_PROJECT,
27
- skip: 0,
28
- select: {
29
- name: true,
30
- description: true,
31
- _id: true,
32
- },
33
- props: {
34
- isRoot: true,
35
- },
36
- });
22
+ /*
23
+ * Only list providers a user can actually sign in with: the
24
+ * Community Edition serves no SAML login routes, so it lists none
25
+ * rather than send the user to a 404.
26
+ */
27
+ const sso = EditionEnforcement.areSsoRoutesServed()
28
+ ? await this.service.findBy({
29
+ query: {
30
+ projectId: projectId,
31
+ isEnabled: true,
32
+ },
33
+ limit: LIMIT_PER_PROJECT,
34
+ skip: 0,
35
+ select: {
36
+ name: true,
37
+ description: true,
38
+ _id: true,
39
+ },
40
+ props: {
41
+ isRoot: true,
42
+ },
43
+ })
44
+ : [];
37
45
  return Response.sendEntityArrayResponse(req, res, sso, new PositiveNumber(sso.length), ProjectSSO);
38
46
  }
39
47
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectSSO.js","sourceRoot":"","sources":["../../../../Server/API/ProjectSSO.ts"],"names":[],"mappings":"AAAA,OAAO,iBAEN,MAAM,+BAA+B,CAAC;AAMvC,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,UAAU,MAAM,wCAAwC,CAAC;AAEhE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAG1C;IACC;;QACE,KAAK,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAErC,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,sBAAsB,EACpC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,MAAM,SAAS,GAAa,IAAI,QAAQ,CACtC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAW,CAClC,CAAC;gBAEF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,CAC5C,CAAC;gBACJ,CAAC;gBAED,MAAM,GAAG,GAAsB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBACvD,KAAK,EAAE;wBACL,SAAS,EAAE,SAAS;wBACpB,SAAS,EAAE,IAAI;qBAChB;oBACD,KAAK,EAAE,iBAAiB;oBACxB,IAAI,EAAE,CAAC;oBACP,MAAM,EAAE;wBACN,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,IAAI;wBACjB,GAAG,EAAE,IAAI;qBACV;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,uBAAuB,CACrC,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAC9B,UAAU,CACX,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"ProjectSSO.js","sourceRoot":"","sources":["../../../../Server/API/ProjectSSO.ts"],"names":[],"mappings":"AAAA,OAAO,iBAEN,MAAM,+BAA+B,CAAC;AAMvC,OAAO,kBAAkB,MAAM,6BAA6B,CAAC;AAC7D,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,UAAU,MAAM,wCAAwC,CAAC;AAEhE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAG1C;IACC;;QACE,KAAK,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAErC,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,sBAAsB,EACpC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,MAAM,SAAS,GAAa,IAAI,QAAQ,CACtC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAW,CAClC,CAAC;gBAEF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,CAC5C,CAAC;gBACJ,CAAC;gBAED;;;;mBAIG;gBACH,MAAM,GAAG,GAAsB,kBAAkB,CAAC,kBAAkB,EAAE;oBACpE,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;wBACxB,KAAK,EAAE;4BACL,SAAS,EAAE,SAAS;4BACpB,SAAS,EAAE,IAAI;yBAChB;wBACD,KAAK,EAAE,iBAAiB;wBACxB,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE;4BACN,IAAI,EAAE,IAAI;4BACV,WAAW,EAAE,IAAI;4BACjB,GAAG,EAAE,IAAI;yBACV;wBACD,KAAK,EAAE;4BACL,MAAM,EAAE,IAAI;yBACb;qBACF,CAAC;oBACJ,CAAC,CAAC,EAAE,CAAC;gBAEP,OAAO,QAAQ,CAAC,uBAAuB,CACrC,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAC9B,UAAU,CACX,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -33,11 +33,13 @@ import StatusPageHeaderLinkService from "../Services/StatusPageHeaderLinkService
33
33
  import StatusPageHistoryChartBarColorRuleService from "../Services/StatusPageHistoryChartBarColorRuleService";
34
34
  import StatusPageResourceService from "../Services/StatusPageResourceService";
35
35
  import StatusPageService, { Service as StatusPageServiceType, } from "../Services/StatusPageService";
36
+ import UptimeDailyAggregateUtil from "../../Utils/StatusPage/UptimeDailyAggregateUtil";
36
37
  import StatusPageSsoService from "../Services/StatusPageSsoService";
37
38
  import StatusPageOidcService from "../Services/StatusPageOidcService";
38
39
  import StatusPageSubscriberService from "../Services/StatusPageSubscriberService";
39
40
  import ModelPermission from "../Types/Database/Permissions/Index";
40
41
  import QueryHelper from "../Types/Database/QueryHelper";
42
+ import EditionEnforcement from "../Utils/EditionEnforcement";
41
43
  import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
42
44
  import { SEARCH_ENGINE_INDEXING_FLAG_NAME, isSearchEngineIndexingEnabled, } from "../../Types/StatusPage/SearchEngineIndexing";
43
45
  import Response from "../Utils/Response";
@@ -718,15 +720,23 @@ class StatusPageAPI extends BaseAPI {
718
720
  select.headerHTML = true;
719
721
  select.footerHTML = true;
720
722
  }
721
- const hasEnabledSSO = await StatusPageSsoService.countBy({
722
- query: {
723
- isEnabled: true,
724
- statusPageId: objectId,
725
- },
726
- props: {
727
- isRoot: true,
728
- },
729
- });
723
+ /*
724
+ * The status page app offers SSO sign-in when this is non-zero.
725
+ * While SSO is not active - the Community Edition serves no status
726
+ * page SSO routes, and on a lapsed Enterprise license they refuse -
727
+ * it reports none rather than send visitors into a dead end.
728
+ */
729
+ const hasEnabledSSO = EditionEnforcement.areSsoRoutesServed()
730
+ ? await StatusPageSsoService.countBy({
731
+ query: {
732
+ isEnabled: true,
733
+ statusPageId: objectId,
734
+ },
735
+ props: {
736
+ isRoot: true,
737
+ },
738
+ })
739
+ : new PositiveNumber(0);
730
740
  const item = await this.service.findOneById({
731
741
  id: objectId,
732
742
  select,
@@ -750,6 +760,18 @@ class StatusPageAPI extends BaseAPI {
750
760
  delete item.headerHTML;
751
761
  delete item.footerHTML;
752
762
  }
763
+ /*
764
+ * The status page app forces SSO sign-in from this flag. Report
765
+ * the EFFECTIVE requirement: while SSO is not active (the
766
+ * Community Edition, or a lapsed Enterprise license) it is not
767
+ * enforced and password sign-in works, so the page must not send
768
+ * visitors into an SSO flow that does not exist or refuses. The
769
+ * stored value is untouched and applies again as soon as SSO is
770
+ * active.
771
+ */
772
+ if (!EditionEnforcement.isSsoEnforced()) {
773
+ item.requireSsoForLogin = false;
774
+ }
753
775
  const footerLinks = await StatusPageFooterLinkService.findBy({
754
776
  query: {
755
777
  statusPageId: objectId,
@@ -863,23 +885,29 @@ class StatusPageAPI extends BaseAPI {
863
885
  this.router.post(`${(_t = new this.entityType().getCrudApiPath()) === null || _t === void 0 ? void 0 : _t.toString()}/sso/:statusPageId`, UserMiddleware.getPublicRouteUserMiddleware, async (req, res, next) => {
864
886
  try {
865
887
  const objectId = new ObjectID(req.params["statusPageId"]);
866
- const sso = await StatusPageSsoService.findBy({
867
- query: {
868
- statusPageId: objectId,
869
- isEnabled: true,
870
- },
871
- select: {
872
- signOnURL: true,
873
- name: true,
874
- description: true,
875
- _id: true,
876
- },
877
- limit: LIMIT_PER_PROJECT,
878
- skip: 0,
879
- props: {
880
- isRoot: true,
881
- },
882
- });
888
+ /*
889
+ * Only list providers a visitor can actually sign in with: the
890
+ * Community Edition serves no status page SSO login routes.
891
+ */
892
+ const sso = EditionEnforcement.areSsoRoutesServed()
893
+ ? await StatusPageSsoService.findBy({
894
+ query: {
895
+ statusPageId: objectId,
896
+ isEnabled: true,
897
+ },
898
+ select: {
899
+ signOnURL: true,
900
+ name: true,
901
+ description: true,
902
+ _id: true,
903
+ },
904
+ limit: LIMIT_PER_PROJECT,
905
+ skip: 0,
906
+ props: {
907
+ isRoot: true,
908
+ },
909
+ })
910
+ : [];
883
911
  return Response.sendEntityArrayResponse(req, res, sso, new PositiveNumber(sso.length), StatusPageSSO);
884
912
  }
885
913
  catch (err) {
@@ -889,22 +917,28 @@ class StatusPageAPI extends BaseAPI {
889
917
  this.router.post(`${(_u = new this.entityType().getCrudApiPath()) === null || _u === void 0 ? void 0 : _u.toString()}/oidc/:statusPageId`, UserMiddleware.getPublicRouteUserMiddleware, async (req, res, next) => {
890
918
  try {
891
919
  const objectId = new ObjectID(req.params["statusPageId"]);
892
- const oidc = await StatusPageOidcService.findBy({
893
- query: {
894
- statusPageId: objectId,
895
- isEnabled: true,
896
- },
897
- select: {
898
- name: true,
899
- description: true,
900
- _id: true,
901
- },
902
- limit: LIMIT_PER_PROJECT,
903
- skip: 0,
904
- props: {
905
- isRoot: true,
906
- },
907
- });
920
+ /*
921
+ * Only list providers a visitor can actually sign in with: the
922
+ * Community Edition serves no status page OIDC login routes.
923
+ */
924
+ const oidc = EditionEnforcement.areSsoRoutesServed()
925
+ ? await StatusPageOidcService.findBy({
926
+ query: {
927
+ statusPageId: objectId,
928
+ isEnabled: true,
929
+ },
930
+ select: {
931
+ name: true,
932
+ description: true,
933
+ _id: true,
934
+ },
935
+ limit: LIMIT_PER_PROJECT,
936
+ skip: 0,
937
+ props: {
938
+ isRoot: true,
939
+ },
940
+ })
941
+ : [];
908
942
  return Response.sendEntityArrayResponse(req, res, oidc, new PositiveNumber(oidc.length), StatusPageOIDC);
909
943
  }
910
944
  catch (err) {
@@ -3161,6 +3195,20 @@ class StatusPageAPI extends BaseAPI {
3161
3195
  startDate: startDateForMonitorTimeline,
3162
3196
  endDate: endDateForMonitorTimeline,
3163
3197
  });
3198
+ /*
3199
+ * What the uptime bars are actually painted from.
3200
+ *
3201
+ * `monitorStatusTimelines` above stays in the response - it is documented
3202
+ * public API and the E2E helpers read it for current status - but it must
3203
+ * NOT drive the bars. It is capped at LIMIT_MAX across every monitor on
3204
+ * the page and sorted newest-first, so on a page with churny monitors it
3205
+ * returns a few recent days and silently drops the rest.
3206
+ */
3207
+ const uptimeDailyAggregate = await StatusPageService.getUptimeDailyAggregateForStatusPage({
3208
+ monitorIds: monitorsOnStatusPageForTimeline,
3209
+ startDate: startDateForMonitorTimeline,
3210
+ endDate: endDateForMonitorTimeline,
3211
+ });
3164
3212
  // return everything.
3165
3213
  return {
3166
3214
  statusPageResources,
@@ -3168,6 +3216,7 @@ class StatusPageAPI extends BaseAPI {
3168
3216
  monitorGroupCurrentStatuses,
3169
3217
  statusPageGroups: groups,
3170
3218
  monitorStatusTimelines,
3219
+ uptimeDailyAggregate,
3171
3220
  statusPage,
3172
3221
  monitorsOnStatusPage,
3173
3222
  monitorsInGroup,
@@ -3191,7 +3240,7 @@ class StatusPageAPI extends BaseAPI {
3191
3240
  * (clamped to 1..90 days, ending now) instead of issuing a separate
3192
3241
  * StatusPage query here just to read that one column.
3193
3242
  */
3194
- const { monitorStatuses, monitorGroupCurrentStatuses, statusPageResources, statusPage, monitorsOnStatusPage, monitorStatusTimelines, statusPageGroups, monitorsInGroup, startDateForMonitorTimeline: startDate, endDateForMonitorTimeline: endDate, } = await this.getStatusPageResourcesAndTimelines({
3243
+ const { monitorStatuses, monitorGroupCurrentStatuses, statusPageResources, statusPage, monitorsOnStatusPage, monitorStatusTimelines, uptimeDailyAggregate, statusPageGroups, monitorsInGroup, startDateForMonitorTimeline: startDate, endDateForMonitorTimeline: endDate, } = await this.getStatusPageResourcesAndTimelines({
3195
3244
  statusPageId: statusPageId,
3196
3245
  });
3197
3246
  // check if status page has active incident.
@@ -3842,6 +3891,7 @@ class StatusPageAPI extends BaseAPI {
3842
3891
  episodePublicNotes: BaseModel.toJSONArray(episodePublicNotes, IncidentEpisodePublicNote),
3843
3892
  episodeStateTimelines: BaseModel.toJSONArray(episodeStateTimelines, IncidentEpisodeStateTimeline),
3844
3893
  monitorStatusTimelines: BaseModel.toJSONArray(monitorStatusTimelines, MonitorStatusTimeline),
3894
+ uptimeDailyAggregate: UptimeDailyAggregateUtil.toJSON(uptimeDailyAggregate),
3845
3895
  resourceGroups: BaseModel.toJSONArray(statusPageGroups, StatusPageGroup),
3846
3896
  monitorStatuses: BaseModel.toJSONArray(monitorStatuses, MonitorStatus),
3847
3897
  statusPageResources: BaseModel.toJSONArray(statusPageResources, StatusPageResource),