@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
@@ -11,6 +11,14 @@ import ObjectID from "../../Types/ObjectID";
11
11
  import Permission from "../../Types/Permission";
12
12
  import { PlanType } from "../../Types/Billing/SubscriptionPlan";
13
13
 
14
+ /*
15
+ * Immutable audit trail. Nobody creates an entry through the API or as a
16
+ * project user: every entry is written by the Enterprise Edition's audit-log
17
+ * recorder, as root. So create is empty at table level and on every column,
18
+ * and AuditLogService refuses any create that is not root (a master admin's
19
+ * included, whom these lists do not bind). Update and delete are empty too;
20
+ * entries leave only through the retention TTL.
21
+ */
14
22
  export default class AuditLog extends AnalyticsBaseModel {
15
23
  public constructor() {
16
24
  const projectIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
@@ -27,7 +35,7 @@ export default class AuditLog extends AnalyticsBaseModel {
27
35
  Permission.SettingsAdmin,
28
36
  Permission.ReadAuditLog,
29
37
  ],
30
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
38
+ create: [],
31
39
  update: [],
32
40
  },
33
41
  });
@@ -46,7 +54,7 @@ export default class AuditLog extends AnalyticsBaseModel {
46
54
  Permission.SettingsAdmin,
47
55
  Permission.ReadAuditLog,
48
56
  ],
49
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
57
+ create: [],
50
58
  update: [],
51
59
  },
52
60
  });
@@ -64,7 +72,7 @@ export default class AuditLog extends AnalyticsBaseModel {
64
72
  Permission.SettingsAdmin,
65
73
  Permission.ReadAuditLog,
66
74
  ],
67
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
75
+ create: [],
68
76
  update: [],
69
77
  },
70
78
  });
@@ -82,7 +90,7 @@ export default class AuditLog extends AnalyticsBaseModel {
82
90
  Permission.SettingsAdmin,
83
91
  Permission.ReadAuditLog,
84
92
  ],
85
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
93
+ create: [],
86
94
  update: [],
87
95
  },
88
96
  });
@@ -111,7 +119,7 @@ export default class AuditLog extends AnalyticsBaseModel {
111
119
  Permission.SettingsAdmin,
112
120
  Permission.ReadAuditLog,
113
121
  ],
114
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
122
+ create: [],
115
123
  update: [],
116
124
  },
117
125
  });
@@ -143,7 +151,7 @@ export default class AuditLog extends AnalyticsBaseModel {
143
151
  Permission.SettingsAdmin,
144
152
  Permission.ReadAuditLog,
145
153
  ],
146
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
154
+ create: [],
147
155
  update: [],
148
156
  },
149
157
  },
@@ -162,7 +170,7 @@ export default class AuditLog extends AnalyticsBaseModel {
162
170
  Permission.SettingsAdmin,
163
171
  Permission.ReadAuditLog,
164
172
  ],
165
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
173
+ create: [],
166
174
  update: [],
167
175
  },
168
176
  });
@@ -180,7 +188,7 @@ export default class AuditLog extends AnalyticsBaseModel {
180
188
  Permission.SettingsAdmin,
181
189
  Permission.ReadAuditLog,
182
190
  ],
183
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
191
+ create: [],
184
192
  update: [],
185
193
  },
186
194
  });
@@ -198,7 +206,7 @@ export default class AuditLog extends AnalyticsBaseModel {
198
206
  Permission.SettingsAdmin,
199
207
  Permission.ReadAuditLog,
200
208
  ],
201
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
209
+ create: [],
202
210
  update: [],
203
211
  },
204
212
  });
@@ -216,7 +224,7 @@ export default class AuditLog extends AnalyticsBaseModel {
216
224
  Permission.SettingsAdmin,
217
225
  Permission.ReadAuditLog,
218
226
  ],
219
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
227
+ create: [],
220
228
  update: [],
221
229
  },
222
230
  });
@@ -235,7 +243,7 @@ export default class AuditLog extends AnalyticsBaseModel {
235
243
  Permission.SettingsAdmin,
236
244
  Permission.ReadAuditLog,
237
245
  ],
238
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
246
+ create: [],
239
247
  update: [],
240
248
  },
241
249
  });
@@ -254,7 +262,7 @@ export default class AuditLog extends AnalyticsBaseModel {
254
262
  Permission.SettingsAdmin,
255
263
  Permission.ReadAuditLog,
256
264
  ],
257
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
265
+ create: [],
258
266
  update: [],
259
267
  },
260
268
  });
@@ -272,7 +280,7 @@ export default class AuditLog extends AnalyticsBaseModel {
272
280
  Permission.SettingsAdmin,
273
281
  Permission.ReadAuditLog,
274
282
  ],
275
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
283
+ create: [],
276
284
  update: [],
277
285
  },
278
286
  });
@@ -293,7 +301,7 @@ export default class AuditLog extends AnalyticsBaseModel {
293
301
  Permission.SettingsAdmin,
294
302
  Permission.ReadAuditLog,
295
303
  ],
296
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
304
+ create: [],
297
305
  update: [],
298
306
  },
299
307
  });
@@ -320,7 +328,7 @@ export default class AuditLog extends AnalyticsBaseModel {
320
328
  Permission.SettingsAdmin,
321
329
  Permission.ReadAuditLog,
322
330
  ],
323
- create: [Permission.ProjectOwner, Permission.ProjectAdmin],
331
+ create: [],
324
332
  update: [],
325
333
  delete: [],
326
334
  },
@@ -948,6 +948,30 @@ export default class GlobalConfig extends GlobalConfigModel {
948
948
  })
949
949
  public enterpriseLicenseExpiryReminderDays?: number = undefined;
950
950
 
951
+ /*
952
+ * Set once, by the enterprise module, the first time this installation boots
953
+ * the Enterprise Edition. An Enterprise install with no license at all gets
954
+ * a 14-day evaluation trial counted from here (also the transition for
955
+ * installs that ran the Enterprise Edition on the IS_ENTERPRISE_EDITION
956
+ * variable alone). Written only by the server itself (isRoot).
957
+ */
958
+ @ColumnAccessControl({
959
+ create: [],
960
+ read: [],
961
+ update: [],
962
+ })
963
+ @TableColumn({
964
+ type: TableColumnType.Date,
965
+ title: "Enterprise Edition First Seen At",
966
+ description:
967
+ "When this installation first booted the OneUptime Enterprise Edition. An unlicensed Enterprise installation gets a 14-day trial counted from this moment.",
968
+ })
969
+ @Column({
970
+ type: ColumnType.Date,
971
+ nullable: true,
972
+ })
973
+ public enterpriseEditionFirstSeenAt?: Date = undefined;
974
+
951
975
  /*
952
976
  * The four latestRelease* columns cache the daily GitHub release check
953
977
  * (Workers/Jobs/InstanceUpdate/CheckForNewVersion). They are a cache, not
@@ -1044,8 +1044,9 @@ export default class Monitor extends BaseModel {
1044
1044
  required: false,
1045
1045
  type: TableColumnType.ShortText,
1046
1046
  title: "Monitoring Interval",
1047
- description: "How often would you like OneUptime to monitor this resource?",
1048
- example: "Every 5 minutes",
1047
+ description:
1048
+ 'How often would you like OneUptime to monitor this resource? A 5-field cron expression, not a label: "*/5 * * * *" is every five minutes.',
1049
+ example: "*/5 * * * *",
1049
1050
  })
1050
1051
  @Column({
1051
1052
  nullable: true,
@@ -490,7 +490,8 @@ export default class MonitorTemplate extends BaseModel {
490
490
  type: TableColumnType.ShortText,
491
491
  title: "Monitoring Interval",
492
492
  description:
493
- "Default monitoring interval for monitors created from this template",
493
+ 'Default monitoring interval for monitors created from this template. A 5-field cron expression, not a label: "*/5 * * * *" is every five minutes.',
494
+ example: "*/5 * * * *",
494
495
  })
495
496
  @Column({
496
497
  nullable: true,
@@ -16,6 +16,12 @@
16
16
  const fs = require("fs");
17
17
  const path = require("path");
18
18
  const crypto = require("crypto");
19
+ const {
20
+ EDITION_COMMUNITY,
21
+ EDITION_ENTERPRISE,
22
+ readRequestedEdition,
23
+ getEnterpriseCandidates,
24
+ } = require("../UI/esbuild-enterprise");
19
25
 
20
26
  // Default values
21
27
  const DEFAULT_APP_VERSION = "1.0.0";
@@ -64,6 +70,50 @@ function getGitSha() {
64
70
  }
65
71
  }
66
72
 
73
+ /**
74
+ * The edition a frontend build bundles: "community" or "enterprise".
75
+ *
76
+ * The same decision esbuild makes for the frontend's Enterprise plugin (see
77
+ * Common/UI/esbuild-enterprise.js): ONEUPTIME_EDITION=community or
78
+ * enterprise decides outright, and "auto" (the default) means enterprise
79
+ * exactly when this frontend's ee plugin, ee/<frontend directory name>/
80
+ * Index.tsx, is on disk. A frontend with no ee plugin (Accounts, Status Page)
81
+ * is therefore always "community". An unknown ONEUPTIME_EDITION throws, like
82
+ * the build.
83
+ *
84
+ * The edition goes into the service worker's cache version: the Community and
85
+ * Enterprise images of one release share APP_VERSION and GIT_SHA, and without
86
+ * it a browser that cached one edition's assets would keep them after the
87
+ * deployment switched to the other.
88
+ * @param {string} frontendDir - The frontend's directory (where sw.js.template lives)
89
+ * @param {Object} [env] - Environment to read (defaults to process.env)
90
+ * @returns {string}
91
+ */
92
+ function getEdition(frontendDir, env) {
93
+ const source = env || process.env;
94
+ const requested = readRequestedEdition(source);
95
+
96
+ if (requested === EDITION_COMMUNITY || requested === EDITION_ENTERPRISE) {
97
+ return requested;
98
+ }
99
+
100
+ const candidates = getEnterpriseCandidates(
101
+ frontendDir,
102
+ path.basename(frontendDir),
103
+ source,
104
+ );
105
+
106
+ const hasPlugin = candidates.some((candidate) => {
107
+ try {
108
+ return fs.statSync(candidate).isFile();
109
+ } catch (error) {
110
+ return false;
111
+ }
112
+ });
113
+
114
+ return hasPlugin ? EDITION_ENTERPRISE : EDITION_COMMUNITY;
115
+ }
116
+
67
117
  /**
68
118
  * Generate service worker from template
69
119
  */
@@ -85,16 +135,19 @@ function generateServiceWorker(
85
135
  const packageJsonPath = path.join(path.dirname(templatePath), "package.json");
86
136
  const appVersion = getAppVersion(packageJsonPath);
87
137
  const gitSha = getGitSha();
138
+ const edition = getEdition(path.dirname(templatePath));
88
139
  const buildTimestamp = new Date().toISOString();
89
140
 
90
141
  console.log(`🔧 Generating service worker for ${serviceName}...`);
91
142
  console.log(` App Version: ${appVersion}`);
143
+ console.log(` Edition: ${edition}`);
92
144
  console.log(` Git SHA: ${gitSha}`);
93
145
  console.log(` Build Time: ${buildTimestamp}`);
94
146
 
95
147
  // Replace placeholders
96
148
  const generatedContent = template
97
149
  .replace(/\{\{APP_VERSION\}\}/g, appVersion)
150
+ .replace(/\{\{EDITION\}\}/g, edition)
98
151
  .replace(/\{\{GIT_SHA\}\}/g, gitSha)
99
152
  .replace(/\{\{BUILD_TIMESTAMP\}\}/g, buildTimestamp)
100
153
  .replace(/\{\{SERVICE_NAME\}\}/g, serviceName);
@@ -102,11 +155,12 @@ function generateServiceWorker(
102
155
  // Add generation comment at the top
103
156
  const header = `/*
104
157
  * Generated Service Worker for ${serviceName}
105
- *
158
+ *
106
159
  * Generated at: ${buildTimestamp}
107
160
  * App Version: ${appVersion}
161
+ * Edition: ${edition}
108
162
  * Git SHA: ${gitSha}
109
- *
163
+ *
110
164
  * DO NOT EDIT THIS FILE DIRECTLY
111
165
  * Edit the template file instead and run the generator script
112
166
  */
@@ -125,7 +179,9 @@ function generateServiceWorker(
125
179
  fs.writeFileSync(outputPath, finalContent, "utf8");
126
180
 
127
181
  console.log("✅ Service worker generated successfully:", outputPath);
128
- console.log(` Cache version: oneuptime-v${appVersion}-${gitSha}`);
182
+ console.log(
183
+ ` Cache version: oneuptime-v${appVersion}-${edition}-${gitSha}`,
184
+ );
129
185
  }
130
186
 
131
187
  // Command line interface
@@ -151,4 +207,9 @@ if (require.main === module) {
151
207
  }
152
208
  }
153
209
 
154
- module.exports = { generateServiceWorker, getAppVersion, getGitSha };
210
+ module.exports = {
211
+ generateServiceWorker,
212
+ getAppVersion,
213
+ getGitSha,
214
+ getEdition,
215
+ };
@@ -559,12 +559,33 @@ export default class BaseAPI<
559
559
  * id as an update of the existing row rather than an insert, so a stray
560
560
  * `_id` (or the `id` spelling, which BaseModel.fromJSON has already folded
561
561
  * into `_id`) would make a "create" modify an existing record instead.
562
- * updateItem strips `_id` for a related reason; do it here too. Only the
563
- * top-level primary key is removed - nested `_id`s inside relation
564
- * objects/arrays reference existing related rows and are left untouched.
562
+ *
563
+ * CLEARED, NOT DELETED, and that distinction is load-bearing: `item` is a
564
+ * live model instance that the service then asks for its own column list
565
+ * (DatabaseService.generateDefaultValues -> data.getTableColumns()), and
566
+ * that lookup used to enumerate this very instance's own keys and cache
567
+ * the result for the whole CLASS. Deleting `_id` here therefore taught the
568
+ * process that this model has no `_id` column, and every later response
569
+ * for it - to any caller, including reads - was serialized without one.
570
+ * TableColumn.ts no longer reads the caller's instance, so this is now
571
+ * defence in depth rather than the fix; the trap is removed all the same.
572
+ * DatabaseService.sanitizeUpdateData skips these keys the same way instead
573
+ * of deleting them off a model.
574
+ *
575
+ * `undefined` is what an unset column holds anyway, so nothing downstream
576
+ * can tell it from an absent key: TypeORM reads primary keys through
577
+ * ColumnMetadata.getEntityValue and treats undefined as "no id"
578
+ * (EntityMetadata.getValueMap skips it, so the Subject gets no identifier
579
+ * and must be INSERTed), the create path's own "an id cannot be supplied"
580
+ * guard tests `data._id` for truthiness, ColumnPermissions skips data keys
581
+ * whose value is undefined, and toJSONObject omits them from responses.
582
+ *
583
+ * Only the top-level primary key is cleared - nested `_id`s inside
584
+ * relation objects/arrays reference existing related rows and are left
585
+ * untouched. `id` needs no handling: it is a prototype accessor derived
586
+ * from `_id` (never an own property), and its setter ignores falsy values.
565
587
  */
566
- delete (item as any)["_id"];
567
- delete (item as any)["id"];
588
+ (item as any)["_id"] = undefined;
568
589
 
569
590
  const miscDataProps: JSONObject = JSONFunctions.deserialize(
570
591
  body["miscDataProps"] as JSONObject,