@oneuptime/common 10.0.65 → 10.0.67

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 (276) hide show
  1. package/Models/DatabaseModels/DockerHostOwnerTeam.ts +464 -0
  2. package/Models/DatabaseModels/DockerHostOwnerUser.ts +463 -0
  3. package/Models/DatabaseModels/GlobalConfig.ts +56 -0
  4. package/Models/DatabaseModels/Index.ts +28 -0
  5. package/Models/DatabaseModels/KubernetesClusterOwnerTeam.ts +464 -0
  6. package/Models/DatabaseModels/KubernetesClusterOwnerUser.ts +463 -0
  7. package/Models/DatabaseModels/KubernetesResource.ts +548 -0
  8. package/Models/DatabaseModels/MetricPipelineRule.ts +804 -0
  9. package/Models/DatabaseModels/MetricRecordingRule.ts +470 -0
  10. package/Models/DatabaseModels/Monitor.ts +2 -0
  11. package/Models/DatabaseModels/Project.ts +83 -0
  12. package/Models/DatabaseModels/Service.ts +79 -0
  13. package/Models/DatabaseModels/TelegramLog.ts +1025 -0
  14. package/Models/DatabaseModels/TraceDropFilter.ts +508 -0
  15. package/Models/DatabaseModels/TracePipeline.ts +436 -0
  16. package/Models/DatabaseModels/TracePipelineProcessor.ts +454 -0
  17. package/Models/DatabaseModels/TraceRecordingRule.ts +470 -0
  18. package/Models/DatabaseModels/TraceScrubRule.ts +546 -0
  19. package/Models/DatabaseModels/UserNotificationRule.ts +49 -0
  20. package/Models/DatabaseModels/UserNotificationSetting.ts +17 -0
  21. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +48 -0
  22. package/Models/DatabaseModels/UserTelegram.ts +312 -0
  23. package/Server/API/KubernetesResourceAPI.ts +129 -0
  24. package/Server/API/UserTelegramAPI.ts +167 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.ts +399 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.ts +205 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.ts +335 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.ts +29 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.ts +53 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1776761171349-MigrationName.ts +325 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -1
  32. package/Server/Services/DockerHostOwnerTeamService.ts +10 -0
  33. package/Server/Services/DockerHostOwnerUserService.ts +10 -0
  34. package/Server/Services/Index.ts +6 -0
  35. package/Server/Services/KubernetesClusterOwnerTeamService.ts +10 -0
  36. package/Server/Services/KubernetesClusterOwnerUserService.ts +10 -0
  37. package/Server/Services/KubernetesResourceService.ts +351 -0
  38. package/Server/Services/MetricPipelineRuleService.ts +10 -0
  39. package/Server/Services/MetricRecordingRuleService.ts +10 -0
  40. package/Server/Services/TelegramLogService.ts +15 -0
  41. package/Server/Services/TelegramService.ts +139 -0
  42. package/Server/Services/TraceDropFilterService.ts +10 -0
  43. package/Server/Services/TracePipelineProcessorService.ts +10 -0
  44. package/Server/Services/TracePipelineService.ts +10 -0
  45. package/Server/Services/TraceRecordingRuleService.ts +10 -0
  46. package/Server/Services/TraceScrubRuleService.ts +10 -0
  47. package/Server/Services/UserNotificationRuleService.ts +350 -1
  48. package/Server/Services/UserNotificationSettingService.ts +114 -0
  49. package/Server/Services/UserTelegramService.ts +140 -0
  50. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +71 -9
  51. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +483 -75
  52. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +379 -6
  53. package/Server/Utils/Monitor/MonitorResource.ts +29 -15
  54. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +29 -16
  55. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +502 -0
  56. package/Tests/Types/Date.test.ts +158 -0
  57. package/Tests/Utils/MetricUnitUtil.test.ts +216 -0
  58. package/Tests/Utils/Metrics/MetricFormulaEvaluator.test.ts +269 -0
  59. package/Tests/Utils/Metrics/MetricResultUnitConverter.test.ts +231 -0
  60. package/Tests/Utils/RecordingRuleExpression.test.ts +177 -0
  61. package/Types/Date.ts +12 -3
  62. package/Types/Icon/IconProp.ts +1 -0
  63. package/Types/Kubernetes/KubernetesInventoryExtractor.ts +327 -0
  64. package/Types/Kubernetes/KubernetesObjectParser.ts +1949 -0
  65. package/Types/Metrics/MetricDownsamplingRetentionDays.ts +49 -0
  66. package/Types/Metrics/MetricFormulaConfigData.ts +4 -0
  67. package/Types/Metrics/MetricPipelineRuleFilterCondition.ts +136 -0
  68. package/Types/Metrics/MetricPipelineRuleType.ts +27 -0
  69. package/Types/Metrics/RecordingRuleDefinition.ts +180 -0
  70. package/Types/Monitor/CriteriaFilter.ts +43 -0
  71. package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +70 -0
  72. package/Types/Permission.ts +531 -0
  73. package/Types/Telegram/TelegramMessage.ts +9 -0
  74. package/Types/TelegramStatus.ts +14 -0
  75. package/Types/Trace/TraceAggregationType.ts +17 -0
  76. package/Types/Trace/TraceDropFilterAction.ts +6 -0
  77. package/Types/Trace/TracePipelineProcessorType.ts +56 -0
  78. package/Types/Trace/TraceRecordingRuleDefinition.ts +218 -0
  79. package/Types/Trace/TraceScrubAction.ts +7 -0
  80. package/Types/Trace/TraceScrubField.ts +8 -0
  81. package/Types/Trace/TraceScrubPatternType.ts +10 -0
  82. package/UI/Components/CardSelect/CardSelect.tsx +9 -1
  83. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +6 -10
  84. package/UI/Components/Forms/Fields/FormField.tsx +1 -0
  85. package/UI/Components/Forms/Types/Field.ts +1 -0
  86. package/UI/Components/Icon/Icon.tsx +15 -0
  87. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +57 -0
  88. package/UI/Components/Page/Page.tsx +6 -0
  89. package/Utils/MetricUnitUtil.ts +289 -0
  90. package/Utils/Metrics/MetricFormulaEvaluator.ts +610 -0
  91. package/Utils/Metrics/MetricResultUnitConverter.ts +91 -0
  92. package/Utils/Metrics/RecordingRuleExpression.ts +359 -0
  93. package/Utils/ValueFormatter.ts +137 -13
  94. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js +480 -0
  95. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js.map +1 -0
  96. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js +479 -0
  97. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js.map +1 -0
  98. package/build/dist/Models/DatabaseModels/GlobalConfig.js +59 -0
  99. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  100. package/build/dist/Models/DatabaseModels/Index.js +28 -0
  101. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  102. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js +480 -0
  103. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js.map +1 -0
  104. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js +479 -0
  105. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js.map +1 -0
  106. package/build/dist/Models/DatabaseModels/KubernetesResource.js +590 -0
  107. package/build/dist/Models/DatabaseModels/KubernetesResource.js.map +1 -0
  108. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js +836 -0
  109. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js.map +1 -0
  110. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js +497 -0
  111. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js.map +1 -0
  112. package/build/dist/Models/DatabaseModels/Monitor.js +2 -0
  113. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  114. package/build/dist/Models/DatabaseModels/Project.js +85 -0
  115. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  116. package/build/dist/Models/DatabaseModels/Service.js +79 -0
  117. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  118. package/build/dist/Models/DatabaseModels/TelegramLog.js +1056 -0
  119. package/build/dist/Models/DatabaseModels/TelegramLog.js.map +1 -0
  120. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +536 -0
  121. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -0
  122. package/build/dist/Models/DatabaseModels/TracePipeline.js +462 -0
  123. package/build/dist/Models/DatabaseModels/TracePipeline.js.map +1 -0
  124. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js +476 -0
  125. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js.map +1 -0
  126. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js +497 -0
  127. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js.map +1 -0
  128. package/build/dist/Models/DatabaseModels/TraceScrubRule.js +575 -0
  129. package/build/dist/Models/DatabaseModels/TraceScrubRule.js.map +1 -0
  130. package/build/dist/Models/DatabaseModels/UserNotificationRule.js +49 -0
  131. package/build/dist/Models/DatabaseModels/UserNotificationRule.js.map +1 -1
  132. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js +19 -0
  133. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js.map +1 -1
  134. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +48 -0
  135. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  136. package/build/dist/Models/DatabaseModels/UserTelegram.js +331 -0
  137. package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -0
  138. package/build/dist/Server/API/KubernetesResourceAPI.js +98 -0
  139. package/build/dist/Server/API/KubernetesResourceAPI.js.map +1 -0
  140. package/build/dist/Server/API/UserTelegramAPI.js +99 -0
  141. package/build/dist/Server/API/UserTelegramAPI.js.map +1 -0
  142. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js +144 -0
  143. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js.map +1 -0
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js +82 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js.map +1 -0
  146. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js +118 -0
  147. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js.map +1 -0
  148. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js +16 -0
  149. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js.map +1 -0
  150. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js +24 -0
  151. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js.map +1 -0
  152. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776761171349-MigrationName.js +116 -0
  153. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776761171349-MigrationName.js.map +1 -0
  154. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  155. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  156. package/build/dist/Server/Services/DockerHostOwnerTeamService.js +9 -0
  157. package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -0
  158. package/build/dist/Server/Services/DockerHostOwnerUserService.js +9 -0
  159. package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -0
  160. package/build/dist/Server/Services/Index.js +6 -0
  161. package/build/dist/Server/Services/Index.js.map +1 -1
  162. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +9 -0
  163. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -0
  164. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +9 -0
  165. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -0
  166. package/build/dist/Server/Services/KubernetesResourceService.js +237 -0
  167. package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -0
  168. package/build/dist/Server/Services/MetricPipelineRuleService.js +9 -0
  169. package/build/dist/Server/Services/MetricPipelineRuleService.js.map +1 -0
  170. package/build/dist/Server/Services/MetricRecordingRuleService.js +9 -0
  171. package/build/dist/Server/Services/MetricRecordingRuleService.js.map +1 -0
  172. package/build/dist/Server/Services/TelegramLogService.js +13 -0
  173. package/build/dist/Server/Services/TelegramLogService.js.map +1 -0
  174. package/build/dist/Server/Services/TelegramService.js +100 -0
  175. package/build/dist/Server/Services/TelegramService.js.map +1 -0
  176. package/build/dist/Server/Services/TraceDropFilterService.js +9 -0
  177. package/build/dist/Server/Services/TraceDropFilterService.js.map +1 -0
  178. package/build/dist/Server/Services/TracePipelineProcessorService.js +9 -0
  179. package/build/dist/Server/Services/TracePipelineProcessorService.js.map +1 -0
  180. package/build/dist/Server/Services/TracePipelineService.js +9 -0
  181. package/build/dist/Server/Services/TracePipelineService.js.map +1 -0
  182. package/build/dist/Server/Services/TraceRecordingRuleService.js +9 -0
  183. package/build/dist/Server/Services/TraceRecordingRuleService.js.map +1 -0
  184. package/build/dist/Server/Services/TraceScrubRuleService.js +9 -0
  185. package/build/dist/Server/Services/TraceScrubRuleService.js.map +1 -0
  186. package/build/dist/Server/Services/UserNotificationRuleService.js +272 -21
  187. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  188. package/build/dist/Server/Services/UserNotificationSettingService.js +94 -0
  189. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  190. package/build/dist/Server/Services/UserTelegramService.js +133 -0
  191. package/build/dist/Server/Services/UserTelegramService.js.map +1 -0
  192. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +56 -9
  193. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  194. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +335 -53
  195. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  196. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +277 -5
  197. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  198. package/build/dist/Server/Utils/Monitor/MonitorResource.js +25 -12
  199. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  200. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +24 -12
  201. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  202. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +407 -0
  203. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +1 -0
  204. package/build/dist/Tests/Types/Date.test.js +96 -0
  205. package/build/dist/Tests/Types/Date.test.js.map +1 -1
  206. package/build/dist/Tests/Utils/MetricUnitUtil.test.js +159 -0
  207. package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +1 -0
  208. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js +224 -0
  209. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js.map +1 -0
  210. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js +180 -0
  211. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js.map +1 -0
  212. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js +142 -0
  213. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js.map +1 -0
  214. package/build/dist/Types/Date.js +9 -3
  215. package/build/dist/Types/Date.js.map +1 -1
  216. package/build/dist/Types/Icon/IconProp.js +1 -0
  217. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  218. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js +200 -0
  219. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js.map +1 -0
  220. package/build/dist/Types/Kubernetes/KubernetesObjectParser.js +1205 -0
  221. package/build/dist/Types/Kubernetes/KubernetesObjectParser.js.map +1 -0
  222. package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js +32 -0
  223. package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js.map +1 -0
  224. package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js +103 -0
  225. package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js.map +1 -0
  226. package/build/dist/Types/Metrics/MetricPipelineRuleType.js +27 -0
  227. package/build/dist/Types/Metrics/MetricPipelineRuleType.js.map +1 -0
  228. package/build/dist/Types/Metrics/RecordingRuleDefinition.js +110 -0
  229. package/build/dist/Types/Metrics/RecordingRuleDefinition.js.map +1 -0
  230. package/build/dist/Types/Monitor/CriteriaFilter.js +22 -0
  231. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  232. package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js +2 -0
  233. package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js.map +1 -0
  234. package/build/dist/Types/Permission.js +464 -0
  235. package/build/dist/Types/Permission.js.map +1 -1
  236. package/build/dist/Types/Telegram/TelegramMessage.js +2 -0
  237. package/build/dist/Types/Telegram/TelegramMessage.js.map +1 -0
  238. package/build/dist/Types/TelegramStatus.js +15 -0
  239. package/build/dist/Types/TelegramStatus.js.map +1 -0
  240. package/build/dist/Types/Trace/TraceAggregationType.js +18 -0
  241. package/build/dist/Types/Trace/TraceAggregationType.js.map +1 -0
  242. package/build/dist/Types/Trace/TraceDropFilterAction.js +7 -0
  243. package/build/dist/Types/Trace/TraceDropFilterAction.js.map +1 -0
  244. package/build/dist/Types/Trace/TracePipelineProcessorType.js +10 -0
  245. package/build/dist/Types/Trace/TracePipelineProcessorType.js.map +1 -0
  246. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js +145 -0
  247. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js.map +1 -0
  248. package/build/dist/Types/Trace/TraceScrubAction.js +8 -0
  249. package/build/dist/Types/Trace/TraceScrubAction.js.map +1 -0
  250. package/build/dist/Types/Trace/TraceScrubField.js +9 -0
  251. package/build/dist/Types/Trace/TraceScrubField.js.map +1 -0
  252. package/build/dist/Types/Trace/TraceScrubPatternType.js +11 -0
  253. package/build/dist/Types/Trace/TraceScrubPatternType.js.map +1 -0
  254. package/build/dist/UI/Components/CardSelect/CardSelect.js +3 -1
  255. package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
  256. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +6 -9
  257. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  258. package/build/dist/UI/Components/Forms/Fields/FormField.js +1 -1
  259. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  260. package/build/dist/UI/Components/Icon/Icon.js +5 -0
  261. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  262. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +30 -0
  263. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  264. package/build/dist/UI/Components/Page/Page.js +1 -0
  265. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  266. package/build/dist/Utils/MetricUnitUtil.js +232 -0
  267. package/build/dist/Utils/MetricUnitUtil.js.map +1 -0
  268. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js +453 -0
  269. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js.map +1 -0
  270. package/build/dist/Utils/Metrics/MetricResultUnitConverter.js +61 -0
  271. package/build/dist/Utils/Metrics/MetricResultUnitConverter.js.map +1 -0
  272. package/build/dist/Utils/Metrics/RecordingRuleExpression.js +298 -0
  273. package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -0
  274. package/build/dist/Utils/ValueFormatter.js +123 -13
  275. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  276. package/package.json +2 -2
@@ -0,0 +1,140 @@
1
+ import { IsBillingEnabled } from "../EnvironmentConfig";
2
+ import CreateBy from "../Types/Database/CreateBy";
3
+ import DeleteBy from "../Types/Database/DeleteBy";
4
+ import { OnCreate, OnDelete } from "../Types/Database/Hooks";
5
+ import DatabaseService from "./DatabaseService";
6
+ import ProjectService from "./ProjectService";
7
+ import UserNotificationRuleService from "./UserNotificationRuleService";
8
+ import LIMIT_MAX from "../../Types/Database/LimitMax";
9
+ import BadDataException from "../../Types/Exception/BadDataException";
10
+ import ObjectID from "../../Types/ObjectID";
11
+ import Text from "../../Types/Text";
12
+ import Project from "../../Models/DatabaseModels/Project";
13
+ import Model from "../../Models/DatabaseModels/UserTelegram";
14
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
15
+
16
+ export class Service extends DatabaseService<Model> {
17
+ public constructor() {
18
+ super(Model);
19
+ }
20
+
21
+ @CaptureSpan()
22
+ protected override async onBeforeDelete(
23
+ deleteBy: DeleteBy<Model>,
24
+ ): Promise<OnDelete<Model>> {
25
+ const itemsToDelete: Array<Model> = await this.findBy({
26
+ query: deleteBy.query,
27
+ select: {
28
+ _id: true,
29
+ projectId: true,
30
+ },
31
+ skip: 0,
32
+ limit: LIMIT_MAX,
33
+ props: {
34
+ isRoot: true,
35
+ },
36
+ });
37
+
38
+ for (const item of itemsToDelete) {
39
+ await UserNotificationRuleService.deleteBy({
40
+ query: {
41
+ userTelegramId: item.id!,
42
+ projectId: item.projectId!,
43
+ },
44
+ limit: LIMIT_MAX,
45
+ skip: 0,
46
+ props: {
47
+ isRoot: true,
48
+ },
49
+ });
50
+ }
51
+
52
+ return {
53
+ deleteBy,
54
+ carryForward: null,
55
+ };
56
+ }
57
+
58
+ @CaptureSpan()
59
+ protected override async onBeforeCreate(
60
+ createBy: CreateBy<Model>,
61
+ ): Promise<OnCreate<Model>> {
62
+ if (!createBy.props.isRoot && createBy.data.isVerified) {
63
+ throw new BadDataException("isVerified cannot be set to true");
64
+ }
65
+
66
+ if (!createBy.props.isRoot && createBy.data.telegramChatId) {
67
+ throw new BadDataException("telegramChatId cannot be set directly");
68
+ }
69
+
70
+ const project: Project | null = await ProjectService.findOneById({
71
+ id: createBy.data.projectId!,
72
+ props: {
73
+ isRoot: true,
74
+ },
75
+ select: {
76
+ enableTelegramNotifications: true,
77
+ smsOrCallCurrentBalanceInUSDCents: true,
78
+ },
79
+ });
80
+
81
+ if (!project) {
82
+ throw new BadDataException("Project not found");
83
+ }
84
+
85
+ if (!project.enableTelegramNotifications) {
86
+ throw new BadDataException(
87
+ "Telegram notifications are disabled for this project. Please enable them in Project Settings > Notification Settings.",
88
+ );
89
+ }
90
+
91
+ if (
92
+ (project.smsOrCallCurrentBalanceInUSDCents as number) <= 100 &&
93
+ IsBillingEnabled
94
+ ) {
95
+ throw new BadDataException(
96
+ "Your notification balance is low. Please recharge your balance in Project Settings > Notification Settings.",
97
+ );
98
+ }
99
+
100
+ return {
101
+ createBy,
102
+ carryForward: null,
103
+ };
104
+ }
105
+
106
+ @CaptureSpan()
107
+ public async regenerateVerificationCode(itemId: ObjectID): Promise<void> {
108
+ const item: Model | null = await this.findOneById({
109
+ id: itemId,
110
+ props: {
111
+ isRoot: true,
112
+ },
113
+ select: {
114
+ isVerified: true,
115
+ },
116
+ });
117
+
118
+ if (!item) {
119
+ throw new BadDataException(
120
+ "Item with ID " + itemId.toString() + " not found",
121
+ );
122
+ }
123
+
124
+ if (item.isVerified) {
125
+ throw new BadDataException("Telegram account already verified");
126
+ }
127
+
128
+ await this.updateOneById({
129
+ id: itemId,
130
+ props: {
131
+ isRoot: true,
132
+ },
133
+ data: {
134
+ verificationCode: Text.generateRandomNumber(6),
135
+ },
136
+ });
137
+ }
138
+ }
139
+
140
+ export default new Service();
@@ -389,6 +389,8 @@ export default class CompareCriteria {
389
389
  value: Array<number> | number;
390
390
  threshold: number;
391
391
  criteriaFilter: CriteriaFilter;
392
+ metricDisplayName?: string | undefined;
393
+ unit?: string | undefined;
392
394
  }): string | null {
393
395
  if (data.value === null || data.value === undefined) {
394
396
  return null;
@@ -412,6 +414,8 @@ export default class CompareCriteria {
412
414
  values: data.value,
413
415
  threshold: data.threshold as number,
414
416
  criteriaFilter: data.criteriaFilter,
417
+ metricDisplayName: data.metricDisplayName,
418
+ unit: data.unit,
415
419
  });
416
420
  }
417
421
 
@@ -432,6 +436,8 @@ export default class CompareCriteria {
432
436
  values: data.value,
433
437
  threshold: data.threshold as number,
434
438
  criteriaFilter: data.criteriaFilter,
439
+ metricDisplayName: data.metricDisplayName,
440
+ unit: data.unit,
435
441
  });
436
442
  }
437
443
 
@@ -452,6 +458,8 @@ export default class CompareCriteria {
452
458
  values: data.value,
453
459
  threshold: data.threshold as number,
454
460
  criteriaFilter: data.criteriaFilter,
461
+ metricDisplayName: data.metricDisplayName,
462
+ unit: data.unit,
455
463
  });
456
464
  }
457
465
 
@@ -472,6 +480,8 @@ export default class CompareCriteria {
472
480
  values: data.value,
473
481
  threshold: data.threshold as number,
474
482
  criteriaFilter: data.criteriaFilter,
483
+ metricDisplayName: data.metricDisplayName,
484
+ unit: data.unit,
475
485
  });
476
486
  }
477
487
 
@@ -492,6 +502,8 @@ export default class CompareCriteria {
492
502
  values: data.value,
493
503
  threshold: data.threshold as number,
494
504
  criteriaFilter: data.criteriaFilter,
505
+ metricDisplayName: data.metricDisplayName,
506
+ unit: data.unit,
495
507
  });
496
508
  }
497
509
 
@@ -512,6 +524,8 @@ export default class CompareCriteria {
512
524
  values: data.value,
513
525
  threshold: data.threshold as number,
514
526
  criteriaFilter: data.criteriaFilter,
527
+ metricDisplayName: data.metricDisplayName,
528
+ unit: data.unit,
515
529
  });
516
530
  }
517
531
 
@@ -526,6 +540,8 @@ export default class CompareCriteria {
526
540
  values: Array<number | boolean> | number | boolean | string;
527
541
  threshold: number | string | boolean;
528
542
  criteriaFilter: CriteriaFilter;
543
+ metricDisplayName?: string | undefined;
544
+ unit?: string | undefined;
529
545
  }): string {
530
546
  // CPU Percent over the last 5 minutes is 10 which is less than the threshold of 20
531
547
  let message: string = "";
@@ -546,7 +562,17 @@ export default class CompareCriteria {
546
562
  message += "All values of";
547
563
  }
548
564
 
549
- message += ` ${data.criteriaFilter.checkOn}`;
565
+ /*
566
+ * Prefer a metric-specific display name over the generic "Metric Value"
567
+ * label when evaluating metric monitors.
568
+ */
569
+ const label: string =
570
+ data.metricDisplayName &&
571
+ data.criteriaFilter.checkOn === CheckOn.MetricValue
572
+ ? data.metricDisplayName
573
+ : data.criteriaFilter.checkOn;
574
+
575
+ message += ` ${label}`;
550
576
 
551
577
  if (data.criteriaFilter.checkOn === CheckOn.DiskUsagePercent) {
552
578
  const diskPath: string =
@@ -562,6 +588,8 @@ export default class CompareCriteria {
562
588
  message += ` over the last ${data.criteriaFilter.evaluateOverTimeOptions.timeValueInMinutes} minutes`;
563
589
  }
564
590
 
591
+ const unitSuffix: string = data.unit ? ` ${data.unit}` : "";
592
+
565
593
  if (
566
594
  data.criteriaFilter.filterType !== FilterType.True &&
567
595
  data.criteriaFilter.filterType !== FilterType.False
@@ -570,29 +598,29 @@ export default class CompareCriteria {
570
598
  data.values,
571
599
  );
572
600
 
573
- message += ` is ${formattedValues}`;
601
+ message += ` is ${formattedValues}${unitSuffix}`;
574
602
 
575
603
  message += " which is";
576
604
  }
577
605
 
578
606
  switch (data.criteriaFilter.filterType) {
579
607
  case FilterType.GreaterThan:
580
- message += ` greater than ${CompareCriteria.formatSingleValue(data.threshold)}. `;
608
+ message += ` greater than ${CompareCriteria.formatSingleValue(data.threshold)}${unitSuffix}. `;
581
609
  break;
582
610
  case FilterType.GreaterThanOrEqualTo:
583
- message += ` greater than or equal to ${CompareCriteria.formatSingleValue(data.threshold)}. `;
611
+ message += ` greater than or equal to ${CompareCriteria.formatSingleValue(data.threshold)}${unitSuffix}. `;
584
612
  break;
585
613
  case FilterType.LessThan:
586
- message += ` less than ${CompareCriteria.formatSingleValue(data.threshold)}. `;
614
+ message += ` less than ${CompareCriteria.formatSingleValue(data.threshold)}${unitSuffix}. `;
587
615
  break;
588
616
  case FilterType.LessThanOrEqualTo:
589
- message += ` less than or equal to ${CompareCriteria.formatSingleValue(data.threshold)}. `;
617
+ message += ` less than or equal to ${CompareCriteria.formatSingleValue(data.threshold)}${unitSuffix}. `;
590
618
  break;
591
619
  case FilterType.NotEqualTo:
592
- message += ` not equal to ${CompareCriteria.formatSingleValue(data.threshold)}. `;
620
+ message += ` not equal to ${CompareCriteria.formatSingleValue(data.threshold)}${unitSuffix}. `;
593
621
  break;
594
622
  case FilterType.EqualTo:
595
- message += ` equal to ${CompareCriteria.formatSingleValue(data.threshold)}. `;
623
+ message += ` equal to ${CompareCriteria.formatSingleValue(data.threshold)}${unitSuffix}. `;
596
624
  break;
597
625
  case FilterType.Contains:
598
626
  message += ` contains ${CompareCriteria.formatSingleValue(data.threshold)}. `;
@@ -621,11 +649,45 @@ export default class CompareCriteria {
621
649
  values: Array<number | boolean> | number | boolean | string,
622
650
  ): string {
623
651
  if (Array.isArray(values)) {
624
- return values
652
+ /*
653
+ * For a small number of values, list them verbatim so the message
654
+ * reads naturally ("is 42, 55, 60"). For larger arrays, summarize
655
+ * — dumping 30+ numbers on one line makes the root cause unreadable
656
+ * and the detailed breakdown is shown in the Breaching Samples
657
+ * table below.
658
+ */
659
+ const MAX_INLINE: number = 5;
660
+
661
+ if (values.length <= MAX_INLINE) {
662
+ return values
663
+ .map((value: number | boolean) => {
664
+ return CompareCriteria.formatSingleValue(value);
665
+ })
666
+ .join(", ");
667
+ }
668
+
669
+ const numericValues: Array<number> = values.filter(
670
+ (value: number | boolean): value is number => {
671
+ return typeof value === "number" && Number.isFinite(value);
672
+ },
673
+ );
674
+
675
+ if (numericValues.length === values.length && numericValues.length > 0) {
676
+ const min: number = Math.min(...numericValues);
677
+ const max: number = Math.max(...numericValues);
678
+ return `${numericValues.length} samples between ${CompareCriteria.formatSingleValue(
679
+ min,
680
+ )} and ${CompareCriteria.formatSingleValue(max)}`;
681
+ }
682
+
683
+ // Fall back to a truncated list when not all values are numeric
684
+ const head: string = values
685
+ .slice(0, MAX_INLINE)
625
686
  .map((value: number | boolean) => {
626
687
  return CompareCriteria.formatSingleValue(value);
627
688
  })
628
689
  .join(", ");
690
+ return `${head}, … (${values.length} values total)`;
629
691
  }
630
692
 
631
693
  return CompareCriteria.formatSingleValue(values);