@oneuptime/common 12.0.1 → 12.0.3

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 (385) hide show
  1. package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +14 -0
  2. package/Models/DatabaseModels/Host.ts +12 -4
  3. package/Models/DatabaseModels/Index.ts +2 -0
  4. package/Models/DatabaseModels/KubernetesContainer.ts +5 -4
  5. package/Models/DatabaseModels/KubernetesResource.ts +8 -7
  6. package/Models/DatabaseModels/LogDropFilter.ts +9 -20
  7. package/Models/DatabaseModels/PodmanResource.ts +6 -6
  8. package/Models/DatabaseModels/ServiceLevelObjective.ts +91 -0
  9. package/Models/DatabaseModels/StatusPage.ts +95 -0
  10. package/Models/DatabaseModels/StatusPageMonitorRule.ts +911 -0
  11. package/Models/DatabaseModels/StatusPageResource.ts +73 -0
  12. package/Models/DatabaseModels/TraceDropFilter.ts +9 -20
  13. package/Server/API/BaseAPI.ts +13 -2
  14. package/Server/API/DashboardAPI.ts +39 -0
  15. package/Server/API/TeamMemberAPI.ts +85 -0
  16. package/Server/EnvironmentConfig.ts +31 -1
  17. package/Server/Infrastructure/GlobalCache.ts +115 -0
  18. package/Server/Infrastructure/Postgres/DataSourceOptions.ts +16 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1785900000000-AddSloMonitorLabelRule.ts +84 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1785915638551-IncreaseHostIpAddressesLength.ts +40 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1785930000000-WidenInventoryResourceNameColumns.ts +131 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1785930709405-AddStatusPageReportPeriod.ts +25 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.ts +123 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  25. package/Server/Middleware/ProjectAuthorization.ts +66 -4
  26. package/Server/Services/AlertStateTimelineService.ts +20 -0
  27. package/Server/Services/BillingService.ts +600 -51
  28. package/Server/Services/CephClusterService.ts +27 -45
  29. package/Server/Services/CephResourceService.ts +43 -4
  30. package/Server/Services/CloudResourceService.ts +24 -42
  31. package/Server/Services/DatabaseService.ts +198 -6
  32. package/Server/Services/DockerHostService.ts +20 -38
  33. package/Server/Services/DockerResourceService.ts +62 -8
  34. package/Server/Services/DockerSwarmClusterService.ts +28 -46
  35. package/Server/Services/DockerSwarmResourceService.ts +53 -4
  36. package/Server/Services/HostService.ts +47 -57
  37. package/Server/Services/IncidentStateTimelineService.ts +20 -0
  38. package/Server/Services/Index.ts +2 -0
  39. package/Server/Services/IoTDeviceService.ts +1 -17
  40. package/Server/Services/IoTFleetService.ts +20 -38
  41. package/Server/Services/KubernetesClusterService.ts +18 -36
  42. package/Server/Services/KubernetesContainerService.ts +50 -9
  43. package/Server/Services/KubernetesResourceService.ts +53 -7
  44. package/Server/Services/LabelService.ts +153 -1
  45. package/Server/Services/MetricTypeService.ts +84 -0
  46. package/Server/Services/MonitorService.ts +146 -14
  47. package/Server/Services/MonitorStatusTimelineService.ts +29 -0
  48. package/Server/Services/MonitorTemplateService.ts +65 -0
  49. package/Server/Services/PodmanHostService.ts +20 -38
  50. package/Server/Services/PodmanResourceService.ts +62 -8
  51. package/Server/Services/ProjectService.ts +165 -35
  52. package/Server/Services/ProxmoxClusterService.ts +24 -42
  53. package/Server/Services/ProxmoxResourceService.ts +43 -4
  54. package/Server/Services/RumApplicationService.ts +20 -38
  55. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +21 -0
  56. package/Server/Services/ServerlessFunctionService.ts +25 -43
  57. package/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.ts +426 -0
  58. package/Server/Services/ServiceLevelObjectiveService.ts +39 -0
  59. package/Server/Services/ServiceService.ts +299 -73
  60. package/Server/Services/StatusPageMonitorRuleEngineService.ts +752 -0
  61. package/Server/Services/StatusPageMonitorRuleService.ts +471 -0
  62. package/Server/Services/StatusPageService.ts +95 -36
  63. package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +18 -1
  64. package/Server/Services/StatusPageSubscriberService.ts +3 -0
  65. package/Server/Services/TelemetryEntityRelationshipService.ts +1 -0
  66. package/Server/Services/TelemetryEntityService.ts +1 -0
  67. package/Server/Types/Database/JSONColumnQuery.ts +621 -0
  68. package/Server/Types/Database/Permissions/PublicPermission.ts +9 -2
  69. package/Server/Types/Database/QueryHelper.ts +17 -32
  70. package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +170 -39
  71. package/Server/Utils/Database/TruncateColumnValue.ts +84 -0
  72. package/Server/Utils/Monitor/MonitorResource.ts +63 -36
  73. package/Server/Utils/Monitor/MonitorStatusTimeline.ts +36 -0
  74. package/Server/Utils/Monitor/MonitorStepsProjectValidator.ts +148 -127
  75. package/Server/Utils/Monitor/MonitorStepsReferenceExtractor.ts +434 -0
  76. package/Server/Utils/SingleFlight.ts +83 -0
  77. package/Server/Utils/StatusPage/MonitorRulePatternValidator.ts +46 -0
  78. package/Server/Utils/Telemetry/EntityRegistry.ts +107 -26
  79. package/Server/Utils/Telemetry/ResourceHeartbeat.ts +314 -0
  80. package/Server/Utils/Telemetry/Telemetry.ts +351 -122
  81. package/Tests/App/Dashboard/UsersTableGroupsByPerson.test.tsx +448 -0
  82. package/Tests/App/Dashboard/WidgetCatalog.test.ts +2 -0
  83. package/Tests/Models/DatabaseModels/ColumnTransformerInvariants.test.ts +306 -0
  84. package/Tests/Models/DatabaseModels/NumberColumnDeserialization.test.ts +333 -0
  85. package/Tests/Models/DatabaseModels/StatusPageMonitorRuleModel.test.ts +190 -0
  86. package/Tests/Server/API/BaseAPIApiKeyAuth.test.ts +704 -0
  87. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +26 -0
  88. package/Tests/Server/API/TeamMemberRemoveUserFromProjectAPI.test.ts +303 -0
  89. package/Tests/Server/Infrastructure/GlobalCache.test.ts +226 -0
  90. package/Tests/Server/Infrastructure/PostgresLockTimeoutOptions.test.ts +181 -0
  91. package/Tests/Server/Middleware/MasterAdminAuthorization.test.ts +350 -0
  92. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyHeader.test.ts +362 -0
  93. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +687 -0
  94. package/Tests/Server/Services/BillingService.test.ts +78 -3
  95. package/Tests/Server/Services/BillingServiceChangePlanCancel.test.ts +645 -0
  96. package/Tests/Server/Services/BillingServiceTrialPlanChange.test.ts +1005 -0
  97. package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlocked.test.ts +342 -0
  98. package/Tests/Server/Services/DropFilterSaveValidation.test.ts +245 -0
  99. package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +503 -0
  100. package/Tests/Server/Services/HostIpAddressesColumnWidth.test.ts +198 -0
  101. package/Tests/Server/Services/HostServiceUpdateLastSeen.test.ts +658 -0
  102. package/Tests/Server/Services/InventoryResourceNameColumnWidth.test.ts +500 -0
  103. package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +586 -0
  104. package/Tests/Server/Services/InventoryUpsertTruncationGuard.test.ts +1242 -0
  105. package/Tests/Server/Services/MetricTypeAttachServices.test.ts +222 -0
  106. package/Tests/Server/Services/MissingReferenceWriteGuard.test.ts +614 -0
  107. package/Tests/Server/Services/MonitorStatusTimelineFastPath.test.ts +23 -0
  108. package/Tests/Server/Services/ProjectServiceChangePlan.test.ts +650 -0
  109. package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +1 -0
  110. package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +636 -0
  111. package/Tests/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.test.ts +770 -0
  112. package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +130 -0
  113. package/Tests/Server/Services/ServiceUpdateLastSeenSplitGates.test.ts +705 -0
  114. package/Tests/Server/Services/SloMonitorLabelRuleHooks.test.ts +352 -0
  115. package/Tests/Server/Services/StatusPageMonitorRuleEngineService.test.ts +1719 -0
  116. package/Tests/Server/Services/StatusPageMonitorRuleHooks.test.ts +1212 -0
  117. package/Tests/Server/Services/StatusPageMonitorRuleMonitorCreateHook.test.ts +228 -0
  118. package/Tests/Server/Services/StatusPageSubscriberReport.test.ts +29 -13
  119. package/Tests/Server/TestingUtils/Services/BillingServiceHelper.ts +69 -8
  120. package/Tests/Server/Types/Database/JSONColumnQuery.test.ts +593 -0
  121. package/Tests/Server/Types/Database/Permissions/PublicPermission.test.ts +495 -0
  122. package/Tests/Server/Types/Database/QueryUtil.test.ts +113 -0
  123. package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +267 -0
  124. package/Tests/Server/Utils/Database/ProjectScopedReferenceValidator.test.ts +260 -13
  125. package/Tests/Server/Utils/Database/TruncateColumnValue.test.ts +179 -0
  126. package/Tests/Server/Utils/EntityRegistryRowFence.test.ts +302 -0
  127. package/Tests/Server/Utils/MetricTypeIndexConvergence.test.ts +598 -0
  128. package/Tests/Server/Utils/Monitor/MonitorStatusTimelineUnusableStatus.test.ts +154 -0
  129. package/Tests/Server/Utils/Monitor/MonitorStepsProjectValidator.test.ts +638 -92
  130. package/Tests/Server/Utils/Monitor/MonitorStepsReferenceExtractor.test.ts +724 -0
  131. package/Tests/Server/Utils/SingleFlight.test.ts +221 -0
  132. package/Tests/Types/Dashboard/NetworkDashboardTemplate.test.ts +793 -0
  133. package/Tests/Types/Database/BigIntColumnTransformer.test.ts +147 -0
  134. package/Tests/Types/Database/DatabasePropertyTransformer.test.ts +140 -0
  135. package/Tests/Types/Database/NumericColumnValue.test.ts +127 -0
  136. package/Tests/Types/Decimal.test.ts +37 -0
  137. package/Tests/Types/Events/Recurring.test.ts +157 -0
  138. package/Tests/Types/Monitor/SnmpVersionParsing.test.ts +152 -0
  139. package/Tests/Types/Port.test.ts +38 -0
  140. package/Tests/UI/Components/LogsHistogram.test.tsx +276 -0
  141. package/Tests/UI/Components/ModelTable/ModelTableGroupsProjectUsers.test.tsx +375 -0
  142. package/Tests/UI/Components/ModelTable/useCustomFieldColumns.test.tsx +196 -0
  143. package/Tests/UI/Components/UseLiveLogsRefresh.test.tsx +489 -0
  144. package/Tests/UI/Components/UseLogsHistogram.test.tsx +500 -0
  145. package/Tests/UI/Utils/ProjectUsersModelAPI.test.ts +739 -0
  146. package/Tests/UI/Utils/TeamMembersByUser.test.ts +633 -0
  147. package/Tests/Utils/Dashboard/Components/DashboardComponentsUtil.test.ts +120 -0
  148. package/Tests/Utils/Dashboard/DashboardNetworkMapComponent.test.ts +327 -0
  149. package/Tests/Utils/StatusPage/ReportPeriod.test.ts +218 -0
  150. package/Tests/Utils/Telemetry/HostIpAddresses.test.ts +291 -0
  151. package/Types/CustomField/CustomFieldDefinition.ts +24 -0
  152. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  153. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
  154. package/Types/Dashboard/DashboardComponents/DashboardNetworkMapComponent.ts +40 -0
  155. package/Types/Dashboard/DashboardTemplates.ts +397 -0
  156. package/Types/Database/BigIntColumnTransformer.ts +74 -0
  157. package/Types/Database/DatabaseProperty.ts +26 -0
  158. package/Types/Database/NumericColumnValue.ts +128 -0
  159. package/Types/Date.ts +112 -0
  160. package/Types/Decimal.ts +16 -4
  161. package/Types/Events/Recurring.ts +99 -1
  162. package/Types/Permission.ts +48 -0
  163. package/Types/Port.ts +16 -4
  164. package/Types/StatusPage/StatusPageReport.ts +11 -0
  165. package/Types/StatusPage/StatusPageReportPeriodType.ts +21 -0
  166. package/UI/Components/LogsViewer/useLiveLogsRefresh.ts +86 -0
  167. package/UI/Components/LogsViewer/useLogsHistogram.ts +113 -0
  168. package/UI/Components/ModelTable/CustomFieldColumns.tsx +2 -6
  169. package/UI/Components/ModelTable/useCustomFieldColumns.ts +21 -2
  170. package/UI/Utils/ModelAPI/ProjectUsersModelAPI.ts +305 -0
  171. package/UI/Utils/TeamMembersByUser.ts +302 -0
  172. package/Utils/Dashboard/Components/DashboardNetworkMapComponent.ts +136 -0
  173. package/Utils/Dashboard/Components/Index.ts +7 -0
  174. package/Utils/StatusPage/ReportPeriod.ts +236 -0
  175. package/Utils/Telemetry/HostIpAddresses.ts +98 -0
  176. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +12 -0
  177. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
  178. package/build/dist/Models/DatabaseModels/Host.js +12 -4
  179. package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
  180. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  181. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  182. package/build/dist/Models/DatabaseModels/KubernetesContainer.js +4 -4
  183. package/build/dist/Models/DatabaseModels/KubernetesContainer.js.map +1 -1
  184. package/build/dist/Models/DatabaseModels/KubernetesResource.js +7 -7
  185. package/build/dist/Models/DatabaseModels/KubernetesResource.js.map +1 -1
  186. package/build/dist/Models/DatabaseModels/LogDropFilter.js +9 -20
  187. package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -1
  188. package/build/dist/Models/DatabaseModels/PodmanResource.js +6 -6
  189. package/build/dist/Models/DatabaseModels/PodmanResource.js.map +1 -1
  190. package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js +87 -0
  191. package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/StatusPage.js +98 -0
  193. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  194. package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js +925 -0
  195. package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js.map +1 -0
  196. package/build/dist/Models/DatabaseModels/StatusPageResource.js +72 -0
  197. package/build/dist/Models/DatabaseModels/StatusPageResource.js.map +1 -1
  198. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +9 -20
  199. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -1
  200. package/build/dist/Server/API/BaseAPI.js +11 -1
  201. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  202. package/build/dist/Server/API/DashboardAPI.js +39 -0
  203. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  204. package/build/dist/Server/API/TeamMemberAPI.js +57 -2
  205. package/build/dist/Server/API/TeamMemberAPI.js.map +1 -1
  206. package/build/dist/Server/EnvironmentConfig.js +27 -1
  207. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  208. package/build/dist/Server/Infrastructure/GlobalCache.js +91 -0
  209. package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
  210. package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js +5 -3
  211. package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js.map +1 -1
  212. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785900000000-AddSloMonitorLabelRule.js +45 -0
  213. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785900000000-AddSloMonitorLabelRule.js.map +1 -0
  214. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785915638551-IncreaseHostIpAddressesLength.js +31 -0
  215. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785915638551-IncreaseHostIpAddressesLength.js.map +1 -0
  216. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785930000000-WidenInventoryResourceNameColumns.js +90 -0
  217. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785930000000-WidenInventoryResourceNameColumns.js.map +1 -0
  218. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785930709405-AddStatusPageReportPeriod.js +14 -0
  219. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785930709405-AddStatusPageReportPeriod.js.map +1 -0
  220. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.js +48 -0
  221. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.js.map +1 -0
  222. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  223. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  224. package/build/dist/Server/Middleware/ProjectAuthorization.js +59 -4
  225. package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
  226. package/build/dist/Server/Services/AlertStateTimelineService.js +19 -0
  227. package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
  228. package/build/dist/Server/Services/BillingService.js +466 -36
  229. package/build/dist/Server/Services/BillingService.js.map +1 -1
  230. package/build/dist/Server/Services/CephClusterService.js +26 -39
  231. package/build/dist/Server/Services/CephClusterService.js.map +1 -1
  232. package/build/dist/Server/Services/CephResourceService.js +28 -3
  233. package/build/dist/Server/Services/CephResourceService.js.map +1 -1
  234. package/build/dist/Server/Services/CloudResourceService.js +23 -36
  235. package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
  236. package/build/dist/Server/Services/DatabaseService.js +155 -2
  237. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  238. package/build/dist/Server/Services/DockerHostService.js +19 -32
  239. package/build/dist/Server/Services/DockerHostService.js.map +1 -1
  240. package/build/dist/Server/Services/DockerResourceService.js +34 -4
  241. package/build/dist/Server/Services/DockerResourceService.js.map +1 -1
  242. package/build/dist/Server/Services/DockerSwarmClusterService.js +27 -40
  243. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
  244. package/build/dist/Server/Services/DockerSwarmResourceService.js +28 -3
  245. package/build/dist/Server/Services/DockerSwarmResourceService.js.map +1 -1
  246. package/build/dist/Server/Services/HostService.js +58 -64
  247. package/build/dist/Server/Services/HostService.js.map +1 -1
  248. package/build/dist/Server/Services/IncidentStateTimelineService.js +19 -0
  249. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  250. package/build/dist/Server/Services/Index.js +2 -0
  251. package/build/dist/Server/Services/Index.js.map +1 -1
  252. package/build/dist/Server/Services/IoTDeviceService.js +1 -8
  253. package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
  254. package/build/dist/Server/Services/IoTFleetService.js +19 -32
  255. package/build/dist/Server/Services/IoTFleetService.js.map +1 -1
  256. package/build/dist/Server/Services/KubernetesClusterService.js +17 -30
  257. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
  258. package/build/dist/Server/Services/KubernetesContainerService.js +29 -3
  259. package/build/dist/Server/Services/KubernetesContainerService.js.map +1 -1
  260. package/build/dist/Server/Services/KubernetesResourceService.js +32 -4
  261. package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -1
  262. package/build/dist/Server/Services/LabelService.js +127 -0
  263. package/build/dist/Server/Services/LabelService.js.map +1 -1
  264. package/build/dist/Server/Services/MetricTypeService.js +74 -0
  265. package/build/dist/Server/Services/MetricTypeService.js.map +1 -1
  266. package/build/dist/Server/Services/MonitorService.js +128 -9
  267. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  268. package/build/dist/Server/Services/MonitorStatusTimelineService.js +28 -0
  269. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  270. package/build/dist/Server/Services/MonitorTemplateService.js +60 -0
  271. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  272. package/build/dist/Server/Services/PodmanHostService.js +19 -32
  273. package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
  274. package/build/dist/Server/Services/PodmanResourceService.js +34 -4
  275. package/build/dist/Server/Services/PodmanResourceService.js.map +1 -1
  276. package/build/dist/Server/Services/ProjectService.js +135 -21
  277. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  278. package/build/dist/Server/Services/ProxmoxClusterService.js +23 -36
  279. package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
  280. package/build/dist/Server/Services/ProxmoxResourceService.js +28 -3
  281. package/build/dist/Server/Services/ProxmoxResourceService.js.map +1 -1
  282. package/build/dist/Server/Services/RumApplicationService.js +19 -32
  283. package/build/dist/Server/Services/RumApplicationService.js.map +1 -1
  284. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +20 -0
  285. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  286. package/build/dist/Server/Services/ServerlessFunctionService.js +24 -37
  287. package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -1
  288. package/build/dist/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.js +347 -0
  289. package/build/dist/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.js.map +1 -0
  290. package/build/dist/Server/Services/ServiceLevelObjectiveService.js +33 -1
  291. package/build/dist/Server/Services/ServiceLevelObjectiveService.js.map +1 -1
  292. package/build/dist/Server/Services/ServiceService.js +236 -61
  293. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  294. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +603 -0
  295. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -0
  296. package/build/dist/Server/Services/StatusPageMonitorRuleService.js +401 -0
  297. package/build/dist/Server/Services/StatusPageMonitorRuleService.js.map +1 -0
  298. package/build/dist/Server/Services/StatusPageService.js +69 -46
  299. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  300. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +17 -1
  301. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
  302. package/build/dist/Server/Services/StatusPageSubscriberService.js +3 -0
  303. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  304. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +1 -0
  305. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -1
  306. package/build/dist/Server/Services/TelemetryEntityService.js +1 -0
  307. package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -1
  308. package/build/dist/Server/Types/Database/JSONColumnQuery.js +402 -0
  309. package/build/dist/Server/Types/Database/JSONColumnQuery.js.map +1 -0
  310. package/build/dist/Server/Types/Database/Permissions/PublicPermission.js +9 -2
  311. package/build/dist/Server/Types/Database/Permissions/PublicPermission.js.map +1 -1
  312. package/build/dist/Server/Types/Database/QueryHelper.js +17 -27
  313. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  314. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +105 -29
  315. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -1
  316. package/build/dist/Server/Utils/Database/TruncateColumnValue.js +32 -0
  317. package/build/dist/Server/Utils/Database/TruncateColumnValue.js.map +1 -0
  318. package/build/dist/Server/Utils/Monitor/MonitorResource.js +56 -32
  319. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  320. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js +30 -3
  321. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js.map +1 -1
  322. package/build/dist/Server/Utils/Monitor/MonitorStepsProjectValidator.js +110 -98
  323. package/build/dist/Server/Utils/Monitor/MonitorStepsProjectValidator.js.map +1 -1
  324. package/build/dist/Server/Utils/Monitor/MonitorStepsReferenceExtractor.js +312 -0
  325. package/build/dist/Server/Utils/Monitor/MonitorStepsReferenceExtractor.js.map +1 -0
  326. package/build/dist/Server/Utils/SingleFlight.js +76 -0
  327. package/build/dist/Server/Utils/SingleFlight.js.map +1 -0
  328. package/build/dist/Server/Utils/StatusPage/MonitorRulePatternValidator.js +29 -0
  329. package/build/dist/Server/Utils/StatusPage/MonitorRulePatternValidator.js.map +1 -0
  330. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +78 -19
  331. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  332. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js +160 -0
  333. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -0
  334. package/build/dist/Server/Utils/Telemetry/Telemetry.js +279 -104
  335. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  336. package/build/dist/Types/CustomField/CustomFieldDefinition.js +2 -0
  337. package/build/dist/Types/CustomField/CustomFieldDefinition.js.map +1 -0
  338. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  339. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  340. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  341. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  342. package/build/dist/Types/Dashboard/DashboardComponents/DashboardNetworkMapComponent.js +2 -0
  343. package/build/dist/Types/Dashboard/DashboardComponents/DashboardNetworkMapComponent.js.map +1 -0
  344. package/build/dist/Types/Dashboard/DashboardTemplates.js +368 -0
  345. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  346. package/build/dist/Types/Database/BigIntColumnTransformer.js +66 -0
  347. package/build/dist/Types/Database/BigIntColumnTransformer.js.map +1 -0
  348. package/build/dist/Types/Database/DatabaseProperty.js +25 -0
  349. package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
  350. package/build/dist/Types/Database/NumericColumnValue.js +97 -0
  351. package/build/dist/Types/Database/NumericColumnValue.js.map +1 -0
  352. package/build/dist/Types/Date.js +68 -0
  353. package/build/dist/Types/Date.js.map +1 -1
  354. package/build/dist/Types/Decimal.js +14 -3
  355. package/build/dist/Types/Decimal.js.map +1 -1
  356. package/build/dist/Types/Events/Recurring.js +63 -0
  357. package/build/dist/Types/Events/Recurring.js.map +1 -1
  358. package/build/dist/Types/Permission.js +42 -0
  359. package/build/dist/Types/Permission.js.map +1 -1
  360. package/build/dist/Types/Port.js +15 -5
  361. package/build/dist/Types/Port.js.map +1 -1
  362. package/build/dist/Types/StatusPage/StatusPageReportPeriodType.js +22 -0
  363. package/build/dist/Types/StatusPage/StatusPageReportPeriodType.js.map +1 -0
  364. package/build/dist/UI/Components/LogsViewer/useLiveLogsRefresh.js +44 -0
  365. package/build/dist/UI/Components/LogsViewer/useLiveLogsRefresh.js.map +1 -0
  366. package/build/dist/UI/Components/LogsViewer/useLogsHistogram.js +75 -0
  367. package/build/dist/UI/Components/LogsViewer/useLogsHistogram.js.map +1 -0
  368. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -1
  369. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +18 -2
  370. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -1
  371. package/build/dist/UI/Utils/ModelAPI/ProjectUsersModelAPI.js +213 -0
  372. package/build/dist/UI/Utils/ModelAPI/ProjectUsersModelAPI.js.map +1 -0
  373. package/build/dist/UI/Utils/TeamMembersByUser.js +195 -0
  374. package/build/dist/UI/Utils/TeamMembersByUser.js.map +1 -0
  375. package/build/dist/Utils/Dashboard/Components/DashboardNetworkMapComponent.js +114 -0
  376. package/build/dist/Utils/Dashboard/Components/DashboardNetworkMapComponent.js.map +1 -0
  377. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  378. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  379. package/build/dist/Utils/StatusPage/ReportPeriod.js +131 -0
  380. package/build/dist/Utils/StatusPage/ReportPeriod.js.map +1 -0
  381. package/build/dist/Utils/Telemetry/HostIpAddresses.js +82 -0
  382. package/build/dist/Utils/Telemetry/HostIpAddresses.js.map +1 -0
  383. package/jest.config.json +2 -0
  384. package/package.json +1 -1
  385. package/tsconfig.json +12 -1
@@ -17,6 +17,10 @@ import TableColumn, {
17
17
  getTableColumns,
18
18
  } from "../../../Types/Database/TableColumn";
19
19
  import TableColumnType from "../../../Types/Database/TableColumnType";
20
+ import {
21
+ coerceNumericColumnValue,
22
+ isNumericTableColumnType,
23
+ } from "../../../Types/Database/NumericColumnValue";
20
24
  import { getFirstColorFieldColumn } from "../../../Types/Database/ColorField";
21
25
  import Dictionary from "../../../Types/Dictionary";
22
26
  import Email from "../../../Types/Email";
@@ -727,6 +731,16 @@ export default class DatabaseBaseModel extends BaseEntity {
727
731
  json[key] as JSONArray,
728
732
  tableColumnMetadata.modelType,
729
733
  );
734
+ } else if (isNumericTableColumnType(tableColumnMetadata.type)) {
735
+ /*
736
+ * An `<input type="number">` hands back a string, so the dashboard
737
+ * posts "10" for a number column. This is the one place that knows
738
+ * the column's declared type, and it runs on both sides of the
739
+ * wire — ModelForm on the way out, BaseAPI on the way in — so a
740
+ * number column holds a number before any hook or validator reads
741
+ * it. See Types/Database/NumericColumnValue.
742
+ */
743
+ (baseModel as any)[key] = coerceNumericColumnValue(json[key]);
730
744
  } else {
731
745
  (baseModel as any)[key] = json[key];
732
746
  }
@@ -594,6 +594,15 @@ export default class Host extends BaseModel {
594
594
  })
595
595
  public hostType?: string = undefined;
596
596
 
597
+ /*
598
+ * `text`, not varchar(500). A Docker/Kubernetes host with IPv6 enabled
599
+ * reports one host.ip entry per interface — physical NICs, docker
600
+ * bridges, every veth, plus an IPv6 link-local per interface. Real
601
+ * reports of 55 addresses / ~1450 characters exist, and the count grows
602
+ * with the number of containers, so any fixed bound is the wrong shape
603
+ * here. Overflowing it used to abort the whole Host metadata write and
604
+ * strand the host as "disconnected" (issue #3006).
605
+ */
597
606
  @ColumnAccessControl({
598
607
  create: [],
599
608
  read: [
@@ -614,17 +623,16 @@ export default class Host extends BaseModel {
614
623
  })
615
624
  @TableColumn({
616
625
  required: false,
617
- type: TableColumnType.LongText,
626
+ type: TableColumnType.VeryLongText,
618
627
  canReadOnRelationQuery: true,
619
628
  title: "Host IP Addresses",
620
629
  description:
621
- "Comma-separated list of IP addresses reported by the OTel host.ip resource attribute. The first non-loopback IPv4 is used for display.",
630
+ "Comma-separated list of every IP address reported by the OTel host.ip resource attribute, in the order the collector reported them, deduplicated. The Hosts list shows the most routable one (IPv4, non-loopback, non-link-local) first; the host detail page groups them all by category.",
622
631
  example: "192.168.1.42, 10.0.0.5",
623
632
  })
624
633
  @Column({
625
634
  nullable: true,
626
- type: ColumnType.LongText,
627
- length: ColumnLength.LongText,
635
+ type: ColumnType.VeryLongText,
628
636
  })
629
637
  public hostIpAddresses?: string = undefined;
630
638
 
@@ -375,6 +375,7 @@ import MonitorOwnerRule from "./MonitorOwnerRule";
375
375
  import MonitorLabelRule from "./MonitorLabelRule";
376
376
  import StatusPageOwnerRule from "./StatusPageOwnerRule";
377
377
  import StatusPageLabelRule from "./StatusPageLabelRule";
378
+ import StatusPageMonitorRule from "./StatusPageMonitorRule";
378
379
  import HostOwnerRule from "./HostOwnerRule";
379
380
  import HostLabelRule from "./HostLabelRule";
380
381
  import ServiceOwnerRule from "./ServiceOwnerRule";
@@ -559,6 +560,7 @@ const AllModelTypes: Array<{
559
560
  MonitorLabelRule,
560
561
  StatusPageOwnerRule,
561
562
  StatusPageLabelRule,
563
+ StatusPageMonitorRule,
562
564
  HostOwnerRule,
563
565
  HostLabelRule,
564
566
  ServiceOwnerRule,
@@ -193,15 +193,16 @@ export default class KubernetesContainer extends BaseModel {
193
193
  })
194
194
  @TableColumn({
195
195
  required: true,
196
- type: TableColumnType.ShortText,
196
+ type: TableColumnType.LongText,
197
197
  canReadOnRelationQuery: true,
198
198
  title: "Pod Name",
199
- description: "metadata.name of the parent Pod.",
199
+ description:
200
+ "metadata.name of the parent Pod. Generated pod names (deployment + replicaset hash + pod hash) routinely run past 100 characters, so this is a 500-char column rather than the usual 100.",
200
201
  })
201
202
  @Column({
202
203
  nullable: false,
203
- type: ColumnType.ShortText,
204
- length: ColumnLength.ShortText,
204
+ type: ColumnType.LongText,
205
+ length: ColumnLength.LongText,
205
206
  })
206
207
  public podName?: string = undefined;
207
208
 
@@ -214,15 +214,16 @@ export default class KubernetesResource extends BaseModel {
214
214
  })
215
215
  @TableColumn({
216
216
  required: true,
217
- type: TableColumnType.ShortText,
217
+ type: TableColumnType.LongText,
218
218
  canReadOnRelationQuery: true,
219
219
  title: "Name",
220
- description: "Kubernetes resource name (metadata.name).",
220
+ description:
221
+ "Kubernetes resource name (metadata.name). Kubernetes allows DNS-subdomain names up to 253 characters, so this is a 500-char column rather than the usual 100.",
221
222
  })
222
223
  @Column({
223
224
  nullable: false,
224
- type: ColumnType.ShortText,
225
- length: ColumnLength.ShortText,
225
+ type: ColumnType.LongText,
226
+ length: ColumnLength.LongText,
226
227
  })
227
228
  public name?: string = undefined;
228
229
 
@@ -449,7 +450,7 @@ export default class KubernetesResource extends BaseModel {
449
450
  })
450
451
  @TableColumn({
451
452
  required: false,
452
- type: TableColumnType.ShortText,
453
+ type: TableColumnType.LongText,
453
454
  canReadOnRelationQuery: true,
454
455
  title: "Controller Deployment Name",
455
456
  description:
@@ -457,8 +458,8 @@ export default class KubernetesResource extends BaseModel {
457
458
  })
458
459
  @Column({
459
460
  nullable: true,
460
- type: ColumnType.ShortText,
461
- length: ColumnLength.ShortText,
461
+ type: ColumnType.LongText,
462
+ length: ColumnLength.LongText,
462
463
  })
463
464
  public controllerDeploymentName?: string = undefined;
464
465
 
@@ -7,6 +7,7 @@ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessCo
7
7
  import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
8
8
  import ColumnLength from "../../Types/Database/ColumnLength";
9
9
  import ColumnType from "../../Types/Database/ColumnType";
10
+ import { getBigIntDatabaseTransformer } from "../../Types/Database/BigIntColumnTransformer";
10
11
  import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
11
12
  import EnableDocumentation from "../../Types/Database/EnableDocumentation";
12
13
  import TableColumn from "../../Types/Database/TableColumn";
@@ -436,26 +437,14 @@ export default class LogDropFilter extends BaseModel {
436
437
  type: ColumnType.BigPositiveNumber,
437
438
  nullable: false,
438
439
  default: 0,
439
- transformer: {
440
- to: (value: number | null | undefined): string | null => {
441
- if (value === null || value === undefined) {
442
- return null;
443
- }
444
- return Math.trunc(value).toString();
445
- },
446
- /*
447
- * Postgres bigint comes back from the driver as a string. The UI
448
- * renders this as a number, so normalize here rather than making
449
- * every reader remember.
450
- */
451
- from: (value: string | null | undefined): number | null => {
452
- if (value === null || value === undefined) {
453
- return null;
454
- }
455
- const parsed: number = parseInt(value, 10);
456
- return isNaN(parsed) ? null : parsed;
457
- },
458
- },
440
+ /*
441
+ * Shared transformer, not an inline one: it has to preserve `undefined`
442
+ * so this NOT NULL column's DEFAULT 0 is what a create actually gets.
443
+ * An inline transformer that mapped `undefined` to `null` made every
444
+ * drop-filter insert fail the not-null constraint. See
445
+ * Types/Database/BigIntColumnTransformer.
446
+ */
447
+ transformer: getBigIntDatabaseTransformer(),
459
448
  })
460
449
  public droppedCount?: number = undefined;
461
450
 
@@ -192,7 +192,7 @@ export default class PodmanResource extends BaseModel {
192
192
  })
193
193
  @TableColumn({
194
194
  required: true,
195
- type: TableColumnType.ShortText,
195
+ type: TableColumnType.LongText,
196
196
  canReadOnRelationQuery: true,
197
197
  title: "Name",
198
198
  description:
@@ -200,8 +200,8 @@ export default class PodmanResource extends BaseModel {
200
200
  })
201
201
  @Column({
202
202
  nullable: false,
203
- type: ColumnType.ShortText,
204
- length: ColumnLength.ShortText,
203
+ type: ColumnType.LongText,
204
+ length: ColumnLength.LongText,
205
205
  })
206
206
  public name?: string = undefined;
207
207
 
@@ -232,7 +232,7 @@ export default class PodmanResource extends BaseModel {
232
232
  })
233
233
  @TableColumn({
234
234
  required: false,
235
- type: TableColumnType.ShortText,
235
+ type: TableColumnType.LongText,
236
236
  canReadOnRelationQuery: true,
237
237
  title: "Image Name",
238
238
  description:
@@ -240,8 +240,8 @@ export default class PodmanResource extends BaseModel {
240
240
  })
241
241
  @Column({
242
242
  nullable: true,
243
- type: ColumnType.ShortText,
244
- length: ColumnLength.ShortText,
243
+ type: ColumnType.LongText,
244
+ length: ColumnLength.LongText,
245
245
  })
246
246
  public imageName?: string = undefined;
247
247
 
@@ -493,6 +493,97 @@ export default class ServiceLevelObjective extends BaseModel {
493
493
  })
494
494
  public monitors?: Array<Monitor> = undefined;
495
495
 
496
+ @ColumnAccessControl({
497
+ create: [
498
+ Permission.ProjectOwner,
499
+ Permission.ProjectAdmin,
500
+ Permission.CreateServiceLevelObjective,
501
+ ],
502
+ read: [
503
+ Permission.ProjectOwner,
504
+ Permission.ProjectAdmin,
505
+ Permission.ProjectMember,
506
+ Permission.Viewer,
507
+ Permission.ReadServiceLevelObjective,
508
+ ],
509
+ update: [
510
+ Permission.ProjectOwner,
511
+ Permission.ProjectAdmin,
512
+ Permission.EditServiceLevelObjective,
513
+ ],
514
+ })
515
+ @TableColumn({
516
+ required: false,
517
+ type: TableColumnType.EntityArray,
518
+ modelType: Label,
519
+ title: "Auto-Add Monitors With Labels",
520
+ description:
521
+ "Monitor labels that automatically attach monitors to this SLO. Any monitor in the project carrying at least one of these labels is added to the Monitors list, and is removed again when it stops carrying any of them.",
522
+ })
523
+ @ManyToMany(
524
+ () => {
525
+ return Label;
526
+ },
527
+ { eager: false },
528
+ )
529
+ @JoinTable({
530
+ name: "ServiceLevelObjectiveMonitorLabel",
531
+ inverseJoinColumn: {
532
+ name: "labelId",
533
+ referencedColumnName: "_id",
534
+ },
535
+ joinColumn: {
536
+ name: "serviceLevelObjectiveId",
537
+ referencedColumnName: "_id",
538
+ },
539
+ })
540
+ public monitorLabels?: Array<Label> = undefined;
541
+
542
+ /*
543
+ * Bookkeeping shadow of `monitors`: the subset of attached monitors that the
544
+ * label rule put there. Without it the rule could not tell a monitor it
545
+ * added from one a human attached by hand, so "this monitor no longer
546
+ * matches, detach it" would silently delete deliberate, manual attachments.
547
+ * Root-only: it is derived state, never something a client sets.
548
+ */
549
+ @ColumnAccessControl({
550
+ create: [],
551
+ read: [
552
+ Permission.ProjectOwner,
553
+ Permission.ProjectAdmin,
554
+ Permission.ProjectMember,
555
+ Permission.Viewer,
556
+ Permission.ReadServiceLevelObjective,
557
+ ],
558
+ update: [],
559
+ })
560
+ @TableColumn({
561
+ required: false,
562
+ type: TableColumnType.EntityArray,
563
+ modelType: Monitor,
564
+ title: "Auto Added Monitors",
565
+ description:
566
+ "Monitors that were attached to this SLO by its label rule rather than by hand. Maintained by the server.",
567
+ })
568
+ @ManyToMany(
569
+ () => {
570
+ return Monitor;
571
+ },
572
+ { eager: false },
573
+ )
574
+ @JoinTable({
575
+ name: "ServiceLevelObjectiveAutoAddedMonitor",
576
+ inverseJoinColumn: {
577
+ name: "monitorId",
578
+ referencedColumnName: "_id",
579
+ },
580
+ joinColumn: {
581
+ name: "serviceLevelObjectiveId",
582
+ referencedColumnName: "_id",
583
+ },
584
+ })
585
+ public autoAddedMonitors?: Array<Monitor> = undefined;
586
+
496
587
  @ColumnAccessControl({
497
588
  create: [
498
589
  Permission.ProjectOwner,
@@ -44,6 +44,7 @@ import {
44
44
  ManyToOne,
45
45
  } from "typeorm";
46
46
  import UptimePrecision from "../../Types/StatusPage/UptimePrecision";
47
+ import StatusPageReportPeriodType from "../../Types/StatusPage/StatusPageReportPeriodType";
47
48
  import { DEFAULT_STATUS_PAGE_LANGUAGE } from "../../Types/StatusPage/StatusPageLanguage";
48
49
 
49
50
  @OperationalResource()
@@ -2633,6 +2634,100 @@ export default class StatusPage extends BaseModel {
2633
2634
  })
2634
2635
  public reportDataInDays?: number = undefined;
2635
2636
 
2637
+ @ColumnAccessControl({
2638
+ create: [
2639
+ Permission.ProjectOwner,
2640
+ Permission.ProjectAdmin,
2641
+ Permission.ProjectMember,
2642
+ Permission.StatusPageAdmin,
2643
+ Permission.StatusPageMember,
2644
+ Permission.CreateProjectStatusPage,
2645
+ ],
2646
+ read: [
2647
+ Permission.ProjectOwner,
2648
+ Permission.ProjectAdmin,
2649
+ Permission.ProjectMember,
2650
+ Permission.Viewer,
2651
+ Permission.StatusPageAdmin,
2652
+ Permission.StatusPageMember,
2653
+ Permission.StatusPageViewer,
2654
+ Permission.ReadProjectStatusPage,
2655
+ ],
2656
+ update: [
2657
+ Permission.ProjectOwner,
2658
+ Permission.ProjectAdmin,
2659
+ Permission.ProjectMember,
2660
+ Permission.StatusPageAdmin,
2661
+ Permission.StatusPageMember,
2662
+ Permission.EditProjectStatusPage,
2663
+ ],
2664
+ })
2665
+ @TableColumn({
2666
+ type: TableColumnType.ShortText,
2667
+ defaultValue: StatusPageReportPeriodType.Rolling,
2668
+ title: "Report Period Type",
2669
+ description:
2670
+ "Should the report cover a rolling number of days, or the previous whole calendar period?",
2671
+ })
2672
+ @Column({
2673
+ type: ColumnType.ShortText,
2674
+ nullable: true,
2675
+ default: StatusPageReportPeriodType.Rolling,
2676
+ })
2677
+ @ColumnBillingAccessControl({
2678
+ read: PlanType.Free,
2679
+ update: PlanType.Growth,
2680
+ create: PlanType.Free,
2681
+ })
2682
+ public reportPeriodType?: StatusPageReportPeriodType = undefined;
2683
+
2684
+ @ColumnAccessControl({
2685
+ create: [
2686
+ Permission.ProjectOwner,
2687
+ Permission.ProjectAdmin,
2688
+ Permission.ProjectMember,
2689
+ Permission.StatusPageAdmin,
2690
+ Permission.StatusPageMember,
2691
+ Permission.CreateProjectStatusPage,
2692
+ ],
2693
+ read: [
2694
+ Permission.ProjectOwner,
2695
+ Permission.ProjectAdmin,
2696
+ Permission.ProjectMember,
2697
+ Permission.Viewer,
2698
+ Permission.StatusPageAdmin,
2699
+ Permission.StatusPageMember,
2700
+ Permission.StatusPageViewer,
2701
+ Permission.ReadProjectStatusPage,
2702
+ ],
2703
+ update: [
2704
+ Permission.ProjectOwner,
2705
+ Permission.ProjectAdmin,
2706
+ Permission.ProjectMember,
2707
+ Permission.StatusPageAdmin,
2708
+ Permission.StatusPageMember,
2709
+ Permission.EditProjectStatusPage,
2710
+ ],
2711
+ })
2712
+ @TableColumn({
2713
+ type: TableColumnType.ShortText,
2714
+ defaultValue: Timezone.UTC,
2715
+ title: "Report Timezone",
2716
+ description:
2717
+ "The timezone report periods and send times are resolved in. A monthly report in this timezone runs from the 1st at 00:00 to the last day at 23:59.",
2718
+ })
2719
+ @Column({
2720
+ type: ColumnType.ShortText,
2721
+ nullable: true,
2722
+ default: Timezone.UTC,
2723
+ })
2724
+ @ColumnBillingAccessControl({
2725
+ read: PlanType.Free,
2726
+ update: PlanType.Growth,
2727
+ create: PlanType.Free,
2728
+ })
2729
+ public reportTimezone?: Timezone = undefined;
2730
+
2636
2731
  @ColumnAccessControl({
2637
2732
  create: [
2638
2733
  Permission.ProjectOwner,