@oneuptime/common 10.8.2 → 11.0.1

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 (740) hide show
  1. package/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts +16 -18
  2. package/Models/AnalyticsModels/AuditLog.ts +3 -1
  3. package/Models/AnalyticsModels/ExceptionInstance.ts +200 -82
  4. package/Models/AnalyticsModels/Index.ts +7 -2
  5. package/Models/AnalyticsModels/Log.ts +197 -81
  6. package/Models/AnalyticsModels/Metric.ts +199 -86
  7. package/Models/AnalyticsModels/MetricBaselineHourly.ts +44 -25
  8. package/Models/AnalyticsModels/MetricItemAggMV1m.ts +23 -20
  9. package/Models/AnalyticsModels/{MetricItemAggMV1mByHost.ts → MetricItemAggMV1mByHostV2.ts} +58 -47
  10. package/Models/AnalyticsModels/MonitorLog.ts +5 -1
  11. package/Models/AnalyticsModels/Profile.ts +206 -85
  12. package/Models/AnalyticsModels/ProfileSample.ts +196 -83
  13. package/Models/AnalyticsModels/Span.ts +218 -85
  14. package/Models/DatabaseModels/Index.ts +4 -0
  15. package/Models/DatabaseModels/Service.ts +29 -0
  16. package/Models/DatabaseModels/TelemetryEntity.ts +393 -0
  17. package/Models/DatabaseModels/TelemetryEntityRelationship.ts +294 -0
  18. package/Models/DatabaseModels/TelemetryException.ts +10 -10
  19. package/Models/DatabaseModels/TelemetryUsageBilling.ts +5 -5
  20. package/Server/API/AIAgentDataAPI.ts +13 -12
  21. package/Server/API/DashboardAPI.ts +2 -2
  22. package/Server/API/TelemetryAPI.ts +656 -141
  23. package/Server/API/TelemetryExceptionAPI.ts +2 -2
  24. package/Server/Infrastructure/ClickhouseConfig.ts +12 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.ts +48 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.ts +70 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.ts +57 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.ts +207 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.ts +24 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.ts +25 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
  32. package/Server/Infrastructure/Queue.ts +36 -3
  33. package/Server/Middleware/TelemetryIngest.ts +27 -22
  34. package/Server/Services/AlertService.ts +9 -9
  35. package/Server/Services/AnalyticsDatabaseService.ts +204 -35
  36. package/Server/Services/ExceptionAggregationService.ts +41 -18
  37. package/Server/Services/HostService.ts +2 -1
  38. package/Server/Services/IncidentService.ts +19 -19
  39. package/Server/Services/Index.ts +6 -2
  40. package/Server/Services/LogAggregationService.ts +116 -43
  41. package/Server/Services/MetricAggregationService.ts +29 -14
  42. package/Server/Services/MetricBaselineService.ts +34 -34
  43. package/Server/Services/MetricItemAggMV1mByHostV2Service.ts +30 -0
  44. package/Server/Services/MetricService.ts +119 -31
  45. package/Server/Services/OpenTelemetryIngestService.ts +186 -50
  46. package/Server/Services/ProfileAggregationService.ts +904 -126
  47. package/Server/Services/ServiceService.ts +6 -0
  48. package/Server/Services/SpanService.ts +274 -14
  49. package/Server/Services/TelemetryEntityRelationshipService.ts +71 -0
  50. package/Server/Services/TelemetryEntityService.ts +246 -0
  51. package/Server/Services/TelemetryExceptionService.ts +27 -23
  52. package/Server/Services/TelemetryUsageBillingService.ts +38 -31
  53. package/Server/Services/TraceAggregationService.ts +875 -43
  54. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +43 -2
  55. package/Server/Types/Database/Permissions/AccessControlPermission.ts +47 -2
  56. package/Server/Types/Database/Permissions/BasePermission.ts +37 -1
  57. package/Server/Types/Database/Permissions/OwnedScopePermission.ts +21 -3
  58. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +1 -0
  59. package/Server/Types/Database/QueryHelper.ts +41 -0
  60. package/Server/Utils/Alert/AlertPrivacyFilter.ts +9 -2
  61. package/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.ts +9 -2
  62. package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +95 -0
  63. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +133 -0
  64. package/Server/Utils/Incident/IncidentPrivacyFilter.ts +9 -2
  65. package/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.ts +9 -2
  66. package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +1 -1
  67. package/Server/Utils/Monitor/MonitorLogUtil.ts +1 -2
  68. package/Server/Utils/Monitor/MonitorMetricUtil.ts +3 -4
  69. package/Server/Utils/PrivacyFilterUtil.ts +72 -0
  70. package/Server/Utils/Profile/PprofEncoder.ts +135 -11
  71. package/Server/Utils/Telemetry/EntityRegistry.ts +316 -0
  72. package/Server/Utils/Telemetry/ResourceFacetResolver.ts +5 -0
  73. package/Server/Utils/Telemetry/TelemetryEntity.ts +783 -0
  74. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +79 -4
  75. package/Tests/Server/Services/LogAggregationService.test.ts +7 -2
  76. package/Tests/Server/Services/ProfileAggregationService.test.ts +280 -0
  77. package/Tests/Server/Services/ProfileBreakdown.test.ts +161 -0
  78. package/Tests/Server/Services/ProfileFunctionFocus.test.ts +349 -0
  79. package/Tests/Server/Services/TelemetryAttributeService.test.ts +1 -1
  80. package/Tests/Server/Services/TraceAggregationService.test.ts +403 -0
  81. package/Tests/Server/Types/AnalyticsDatabase/ModelPermissionOwnedScope.test.ts +114 -0
  82. package/Tests/Server/Types/Database/Permissions/AccessControlPermission.test.ts +189 -0
  83. package/Tests/Server/Types/Database/Permissions/BasePermission.test.ts +118 -0
  84. package/Tests/Server/Types/Database/Permissions/OwnedScopePermission.test.ts +159 -0
  85. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +275 -8
  86. package/Tests/Server/Utils/PrivacyFilterUtil.test.ts +177 -0
  87. package/Tests/Server/Utils/Profile/PprofEncoder.test.ts +276 -0
  88. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +761 -0
  89. package/Tests/Types/Monitor/MonitorStepEntityScope.test.ts +275 -0
  90. package/Tests/Types/Text.test.ts +52 -0
  91. package/Tests/Utils/ModelImportExport.test.ts +366 -0
  92. package/Tests/Utils/Telemetry/EntityKey.test.ts +150 -0
  93. package/Tests/Utils/Telemetry/EntityKeySqlParity.test.ts +40 -0
  94. package/Tests/Utils/Telemetry/EntityRelationship.test.ts +150 -0
  95. package/Tests/Utils/UUID.test.ts +47 -0
  96. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +14 -9
  97. package/Types/AnalyticsDatabase/TableColumnType.ts +1 -0
  98. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  99. package/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.ts +37 -0
  100. package/Types/Dashboard/DashboardTemplates.ts +4 -5
  101. package/Types/Log/LogQueryParser.ts +2 -2
  102. package/Types/Log/LogQueryToFilter.ts +2 -2
  103. package/Types/Monitor/MonitorStepExceptionMonitor.ts +19 -1
  104. package/Types/Monitor/MonitorStepLogMonitor.ts +20 -1
  105. package/Types/Monitor/MonitorStepMetricMonitor.ts +27 -0
  106. package/Types/Monitor/MonitorStepProfileMonitor.ts +19 -1
  107. package/Types/Monitor/MonitorStepTraceMonitor.ts +18 -1
  108. package/Types/Monitor/MonitorType.ts +8 -1
  109. package/Types/ObjectID.ts +10 -0
  110. package/Types/Telemetry/EntityRelationshipType.ts +31 -0
  111. package/Types/Telemetry/EntityType.ts +33 -0
  112. package/Types/Telemetry/TelemetrySavedViewState.ts +2 -0
  113. package/Types/Text.ts +34 -0
  114. package/Types/Trace/TraceAggregationType.ts +1 -0
  115. package/Types/Trace/TraceRecordingRuleDefinition.ts +74 -0
  116. package/UI/Components/ImportExport/ExportModelCard.tsx +90 -0
  117. package/UI/Components/ImportExport/ImportModelsModal.tsx +239 -0
  118. package/UI/Components/LogsViewer/LogsViewer.tsx +12 -9
  119. package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +10 -9
  120. package/UI/Components/LogsViewer/components/LogSearchBar.tsx +1 -1
  121. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +2 -2
  122. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +4 -4
  123. package/UI/Components/LogsViewer/components/LogsTable.tsx +5 -3
  124. package/UI/Components/ModelTable/ModelTable.tsx +294 -143
  125. package/UI/Components/Navbar/NavBarMenuModal.tsx +81 -44
  126. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +33 -10
  127. package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +18 -3
  128. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +91 -68
  129. package/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.tsx +9 -2
  130. package/UI/Utils/LogExport.ts +2 -2
  131. package/UI/Utils/ModelImportExport.ts +207 -0
  132. package/UI/Utils/TelemetryService.ts +20 -20
  133. package/Utils/Dashboard/Components/DashboardTraceChartComponent.ts +134 -0
  134. package/Utils/Dashboard/Components/Index.ts +7 -0
  135. package/Utils/ModelImportExport.ts +369 -0
  136. package/Utils/Telemetry/EntityKey.ts +151 -0
  137. package/Utils/Telemetry/EntityRelationship.ts +113 -0
  138. package/Utils/Traces/CriticalPath.ts +7 -7
  139. package/Utils/UUID.ts +57 -0
  140. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js +14 -13
  141. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
  142. package/build/dist/Models/AnalyticsModels/AuditLog.js +2 -1
  143. package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
  144. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +125 -22
  145. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  146. package/build/dist/Models/AnalyticsModels/Index.js +7 -2
  147. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  148. package/build/dist/Models/AnalyticsModels/Log.js +123 -22
  149. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  150. package/build/dist/Models/AnalyticsModels/Metric.js +125 -27
  151. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  152. package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js +38 -21
  153. package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js.map +1 -1
  154. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +17 -16
  155. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
  156. package/build/dist/Models/AnalyticsModels/{MetricItemAggMV1mByHost.js → MetricItemAggMV1mByHostV2.js} +54 -42
  157. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js.map +1 -0
  158. package/build/dist/Models/AnalyticsModels/MonitorLog.js +4 -1
  159. package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
  160. package/build/dist/Models/AnalyticsModels/Profile.js +132 -26
  161. package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
  162. package/build/dist/Models/AnalyticsModels/ProfileSample.js +121 -23
  163. package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
  164. package/build/dist/Models/AnalyticsModels/Span.js +144 -26
  165. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  166. package/build/dist/Models/DatabaseModels/Index.js +4 -0
  167. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  168. package/build/dist/Models/DatabaseModels/Service.js +30 -0
  169. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  170. package/build/dist/Models/DatabaseModels/TelemetryEntity.js +419 -0
  171. package/build/dist/Models/DatabaseModels/TelemetryEntity.js.map +1 -0
  172. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +317 -0
  173. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -0
  174. package/build/dist/Models/DatabaseModels/TelemetryException.js +12 -12
  175. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  176. package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js +7 -7
  177. package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js.map +1 -1
  178. package/build/dist/Server/API/AIAgentDataAPI.js +14 -13
  179. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  180. package/build/dist/Server/API/DashboardAPI.js +2 -2
  181. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  182. package/build/dist/Server/API/TelemetryAPI.js +425 -129
  183. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  184. package/build/dist/Server/API/TelemetryExceptionAPI.js +2 -2
  185. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
  186. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +12 -0
  187. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  188. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.js +29 -0
  189. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.js.map +1 -0
  190. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.js +38 -0
  191. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.js.map +1 -0
  192. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.js +33 -0
  193. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.js.map +1 -0
  194. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.js +78 -0
  195. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.js.map +1 -0
  196. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.js +19 -0
  197. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.js.map +1 -0
  198. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.js +18 -0
  199. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.js.map +1 -0
  200. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  201. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  202. package/build/dist/Server/Infrastructure/Queue.js +14 -3
  203. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  204. package/build/dist/Server/Middleware/TelemetryIngest.js +16 -18
  205. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  206. package/build/dist/Server/Services/AlertService.js +9 -9
  207. package/build/dist/Server/Services/AlertService.js.map +1 -1
  208. package/build/dist/Server/Services/AnalyticsDatabaseService.js +115 -40
  209. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  210. package/build/dist/Server/Services/ExceptionAggregationService.js +38 -18
  211. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  212. package/build/dist/Server/Services/HostService.js +2 -1
  213. package/build/dist/Server/Services/HostService.js.map +1 -1
  214. package/build/dist/Server/Services/IncidentService.js +19 -19
  215. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  216. package/build/dist/Server/Services/Index.js +6 -2
  217. package/build/dist/Server/Services/Index.js.map +1 -1
  218. package/build/dist/Server/Services/LogAggregationService.js +100 -42
  219. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  220. package/build/dist/Server/Services/MetricAggregationService.js +27 -14
  221. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  222. package/build/dist/Server/Services/MetricBaselineService.js +28 -28
  223. package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
  224. package/build/dist/Server/Services/MetricItemAggMV1mByHostV2Service.js +28 -0
  225. package/build/dist/Server/Services/MetricItemAggMV1mByHostV2Service.js.map +1 -0
  226. package/build/dist/Server/Services/MetricService.js +116 -31
  227. package/build/dist/Server/Services/MetricService.js.map +1 -1
  228. package/build/dist/Server/Services/OpenTelemetryIngestService.js +103 -36
  229. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  230. package/build/dist/Server/Services/ProfileAggregationService.js +613 -105
  231. package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
  232. package/build/dist/Server/Services/ServiceService.js +9 -5
  233. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  234. package/build/dist/Server/Services/SpanService.js +217 -15
  235. package/build/dist/Server/Services/SpanService.js.map +1 -1
  236. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +72 -0
  237. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -0
  238. package/build/dist/Server/Services/TelemetryEntityService.js +201 -0
  239. package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -0
  240. package/build/dist/Server/Services/TelemetryExceptionService.js +18 -18
  241. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  242. package/build/dist/Server/Services/TelemetryUsageBillingService.js +27 -21
  243. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  244. package/build/dist/Server/Services/TraceAggregationService.js +568 -43
  245. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  246. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +38 -2
  247. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  248. package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js +36 -2
  249. package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js.map +1 -1
  250. package/build/dist/Server/Types/Database/Permissions/BasePermission.js +25 -1
  251. package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
  252. package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js +17 -3
  253. package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js.map +1 -1
  254. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +1 -0
  255. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  256. package/build/dist/Server/Types/Database/QueryHelper.js +31 -0
  257. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  258. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js +3 -2
  259. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js.map +1 -1
  260. package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js +3 -2
  261. package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js.map +1 -1
  262. package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js +46 -0
  263. package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js.map +1 -0
  264. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +97 -3
  265. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  266. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js +3 -2
  267. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js.map +1 -1
  268. package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js +3 -2
  269. package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js.map +1 -1
  270. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +1 -1
  271. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
  272. package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js +1 -2
  273. package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js.map +1 -1
  274. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +3 -4
  275. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  276. package/build/dist/Server/Utils/PrivacyFilterUtil.js +47 -0
  277. package/build/dist/Server/Utils/PrivacyFilterUtil.js.map +1 -0
  278. package/build/dist/Server/Utils/Profile/PprofEncoder.js +132 -4
  279. package/build/dist/Server/Utils/Profile/PprofEncoder.js.map +1 -1
  280. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +228 -0
  281. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -0
  282. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +5 -0
  283. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
  284. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +569 -0
  285. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -0
  286. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +14 -9
  287. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  288. package/build/dist/Types/AnalyticsDatabase/TableColumnType.js +1 -0
  289. package/build/dist/Types/AnalyticsDatabase/TableColumnType.js.map +1 -1
  290. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  291. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  292. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.js +2 -0
  293. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.js.map +1 -0
  294. package/build/dist/Types/Dashboard/DashboardTemplates.js +4 -5
  295. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  296. package/build/dist/Types/Log/LogQueryParser.js +2 -2
  297. package/build/dist/Types/Log/LogQueryParser.js.map +1 -1
  298. package/build/dist/Types/Log/LogQueryToFilter.js +1 -1
  299. package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -1
  300. package/build/dist/Types/Monitor/MonitorStepExceptionMonitor.js +9 -1
  301. package/build/dist/Types/Monitor/MonitorStepExceptionMonitor.js.map +1 -1
  302. package/build/dist/Types/Monitor/MonitorStepLogMonitor.js +9 -1
  303. package/build/dist/Types/Monitor/MonitorStepLogMonitor.js.map +1 -1
  304. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js +13 -0
  305. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
  306. package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js +9 -1
  307. package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js.map +1 -1
  308. package/build/dist/Types/Monitor/MonitorStepTraceMonitor.js +9 -1
  309. package/build/dist/Types/Monitor/MonitorStepTraceMonitor.js.map +1 -1
  310. package/build/dist/Types/Monitor/MonitorType.js +8 -1
  311. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  312. package/build/dist/Types/ObjectID.js +9 -0
  313. package/build/dist/Types/ObjectID.js.map +1 -1
  314. package/build/dist/Types/Telemetry/EntityRelationshipType.js +32 -0
  315. package/build/dist/Types/Telemetry/EntityRelationshipType.js.map +1 -0
  316. package/build/dist/Types/Telemetry/EntityType.js +34 -0
  317. package/build/dist/Types/Telemetry/EntityType.js.map +1 -0
  318. package/build/dist/Types/Text.js +32 -1
  319. package/build/dist/Types/Text.js.map +1 -1
  320. package/build/dist/Types/Trace/TraceAggregationType.js +1 -0
  321. package/build/dist/Types/Trace/TraceAggregationType.js.map +1 -1
  322. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js +50 -1
  323. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js.map +1 -1
  324. package/build/dist/UI/Components/ImportExport/ExportModelCard.js +50 -0
  325. package/build/dist/UI/Components/ImportExport/ExportModelCard.js.map +1 -0
  326. package/build/dist/UI/Components/ImportExport/ImportModelsModal.js +115 -0
  327. package/build/dist/UI/Components/ImportExport/ImportModelsModal.js.map +1 -0
  328. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +10 -9
  329. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  330. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +8 -8
  331. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
  332. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +1 -1
  333. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
  334. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +2 -2
  335. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  336. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +4 -4
  337. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  338. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +3 -3
  339. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
  340. package/build/dist/UI/Components/ModelTable/ModelTable.js +166 -74
  341. package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
  342. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +43 -30
  343. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
  344. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +6 -2
  345. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  346. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +14 -3
  347. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
  348. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +18 -10
  349. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  350. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js +4 -2
  351. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js.map +1 -1
  352. package/build/dist/UI/Utils/LogExport.js +2 -2
  353. package/build/dist/UI/Utils/LogExport.js.map +1 -1
  354. package/build/dist/UI/Utils/ModelImportExport.js +142 -0
  355. package/build/dist/UI/Utils/ModelImportExport.js.map +1 -0
  356. package/build/dist/UI/Utils/TelemetryService.js +16 -16
  357. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  358. package/build/dist/Utils/Dashboard/Components/DashboardTraceChartComponent.js +110 -0
  359. package/build/dist/Utils/Dashboard/Components/DashboardTraceChartComponent.js.map +1 -0
  360. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  361. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  362. package/build/dist/Utils/ModelImportExport.js +257 -0
  363. package/build/dist/Utils/ModelImportExport.js.map +1 -0
  364. package/build/dist/Utils/Telemetry/EntityKey.js +115 -0
  365. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -0
  366. package/build/dist/Utils/Telemetry/EntityRelationship.js +71 -0
  367. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -0
  368. package/build/dist/Utils/Traces/CriticalPath.js +5 -5
  369. package/build/dist/Utils/Traces/CriticalPath.js.map +1 -1
  370. package/build/dist/Utils/UUID.js +50 -0
  371. package/build/dist/Utils/UUID.js.map +1 -1
  372. package/package.json +2 -1
  373. package/tsconfig.json +10 -1
  374. package/Server/Services/MetricItemAggMV1mByHostService.ts +0 -30
  375. package/Types/Profile/ProfileMetricType.ts +0 -16
  376. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHost.js.map +0 -1
  377. package/build/dist/Server/Services/MetricItemAggMV1mByHostService.js +0 -28
  378. package/build/dist/Server/Services/MetricItemAggMV1mByHostService.js.map +0 -1
  379. package/build/dist/Tests/MockType.js +0 -5
  380. package/build/dist/Tests/MockType.js.map +0 -1
  381. package/build/dist/Tests/Models/AnalyticsModels/Log.test.js +0 -12
  382. package/build/dist/Tests/Models/AnalyticsModels/Log.test.js.map +0 -1
  383. package/build/dist/Tests/Models/File.test.js +0 -10
  384. package/build/dist/Tests/Models/File.test.js.map +0 -1
  385. package/build/dist/Tests/Server/API/BaseAPI.test.js +0 -590
  386. package/build/dist/Tests/Server/API/BaseAPI.test.js.map +0 -1
  387. package/build/dist/Tests/Server/API/Helpers.js +0 -27
  388. package/build/dist/Tests/Server/API/Helpers.js.map +0 -1
  389. package/build/dist/Tests/Server/API/ProbeAPI.test.js +0 -84
  390. package/build/dist/Tests/Server/API/ProbeAPI.test.js.map +0 -1
  391. package/build/dist/Tests/Server/API/ProjectAPI.test.js +0 -170
  392. package/build/dist/Tests/Server/API/ProjectAPI.test.js.map +0 -1
  393. package/build/dist/Tests/Server/API/UserSmsApi.test.js +0 -177
  394. package/build/dist/Tests/Server/API/UserSmsApi.test.js.map +0 -1
  395. package/build/dist/Tests/Server/Middleware/BearerTokenAuthorization.test.js +0 -63
  396. package/build/dist/Tests/Server/Middleware/BearerTokenAuthorization.test.js.map +0 -1
  397. package/build/dist/Tests/Server/Middleware/ClusterKeyAuthorization.test.js +0 -58
  398. package/build/dist/Tests/Server/Middleware/ClusterKeyAuthorization.test.js.map +0 -1
  399. package/build/dist/Tests/Server/Middleware/NotificationMiddleware.test.js +0 -101
  400. package/build/dist/Tests/Server/Middleware/NotificationMiddleware.test.js.map +0 -1
  401. package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js +0 -160
  402. package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js.map +0 -1
  403. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +0 -410
  404. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +0 -1
  405. package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js +0 -165
  406. package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js.map +0 -1
  407. package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js +0 -193
  408. package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js.map +0 -1
  409. package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js +0 -435
  410. package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js.map +0 -1
  411. package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js +0 -320
  412. package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js.map +0 -1
  413. package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js +0 -266
  414. package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js.map +0 -1
  415. package/build/dist/Tests/Server/Services/BillingService.test.js +0 -910
  416. package/build/dist/Tests/Server/Services/BillingService.test.js.map +0 -1
  417. package/build/dist/Tests/Server/Services/LogAggregationService.test.js +0 -75
  418. package/build/dist/Tests/Server/Services/LogAggregationService.test.js.map +0 -1
  419. package/build/dist/Tests/Server/Services/ProbeService.test.js +0 -127
  420. package/build/dist/Tests/Server/Services/ProbeService.test.js.map +0 -1
  421. package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js +0 -114
  422. package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js.map +0 -1
  423. package/build/dist/Tests/Server/Services/TeamMemberService.test.js +0 -106
  424. package/build/dist/Tests/Server/Services/TeamMemberService.test.js.map +0 -1
  425. package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js +0 -50
  426. package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js.map +0 -1
  427. package/build/dist/Tests/Server/TestingUtils/Init.js +0 -4
  428. package/build/dist/Tests/Server/TestingUtils/Init.js.map +0 -1
  429. package/build/dist/Tests/Server/TestingUtils/Postgres/TestDataSourceOptions.js +0 -9
  430. package/build/dist/Tests/Server/TestingUtils/Postgres/TestDataSourceOptions.js.map +0 -1
  431. package/build/dist/Tests/Server/TestingUtils/Redis/TestRedisOptions.js +0 -16
  432. package/build/dist/Tests/Server/TestingUtils/Redis/TestRedisOptions.js.map +0 -1
  433. package/build/dist/Tests/Server/TestingUtils/Services/BillingServiceHelper.js +0 -125
  434. package/build/dist/Tests/Server/TestingUtils/Services/BillingServiceHelper.js.map +0 -1
  435. package/build/dist/Tests/Server/TestingUtils/Services/ProjectServiceHelper.js +0 -39
  436. package/build/dist/Tests/Server/TestingUtils/Services/ProjectServiceHelper.js.map +0 -1
  437. package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceServiceHelper.js +0 -20
  438. package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceServiceHelper.js.map +0 -1
  439. package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceStateServiceHelper.js +0 -31
  440. package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceStateServiceHelper.js.map +0 -1
  441. package/build/dist/Tests/Server/TestingUtils/Services/TeamMemberServiceHelper.js +0 -14
  442. package/build/dist/Tests/Server/TestingUtils/Services/TeamMemberServiceHelper.js.map +0 -1
  443. package/build/dist/Tests/Server/TestingUtils/Services/TeamServiceHelper.js +0 -21
  444. package/build/dist/Tests/Server/TestingUtils/Services/TeamServiceHelper.js.map +0 -1
  445. package/build/dist/Tests/Server/TestingUtils/Services/Types.js +0 -2
  446. package/build/dist/Tests/Server/TestingUtils/Services/Types.js.map +0 -1
  447. package/build/dist/Tests/Server/TestingUtils/Services/UserServiceHelper.js +0 -37
  448. package/build/dist/Tests/Server/TestingUtils/Services/UserServiceHelper.js.map +0 -1
  449. package/build/dist/Tests/Server/TestingUtils/__mocks__/Stripe.mock.js +0 -13
  450. package/build/dist/Tests/Server/TestingUtils/__mocks__/Stripe.mock.js.map +0 -1
  451. package/build/dist/Tests/Server/TestingUtils/__mocks__/TestDatabase.mock.js +0 -22
  452. package/build/dist/Tests/Server/TestingUtils/__mocks__/TestDatabase.mock.js.map +0 -1
  453. package/build/dist/Tests/Server/Types/Domain.test.js +0 -78
  454. package/build/dist/Tests/Server/Types/Domain.test.js.map +0 -1
  455. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/Statement.test.js +0 -94
  456. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/Statement.test.js.map +0 -1
  457. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js +0 -459
  458. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js.map +0 -1
  459. package/build/dist/Tests/Server/Utils/Cookie.test.js +0 -83
  460. package/build/dist/Tests/Server/Utils/Cookie.test.js.map +0 -1
  461. package/build/dist/Tests/Server/Utils/CronTab.test.js +0 -29
  462. package/build/dist/Tests/Server/Utils/CronTab.test.js.map +0 -1
  463. package/build/dist/Tests/Server/Utils/JsonToCsv.test.js +0 -114
  464. package/build/dist/Tests/Server/Utils/JsonToCsv.test.js.map +0 -1
  465. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +0 -606
  466. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +0 -1
  467. package/build/dist/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.js +0 -255
  468. package/build/dist/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.js.map +0 -1
  469. package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js +0 -142
  470. package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js.map +0 -1
  471. package/build/dist/Tests/Server/Utils/StatusPageResource.test.js +0 -122
  472. package/build/dist/Tests/Server/Utils/StatusPageResource.test.js.map +0 -1
  473. package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js +0 -0
  474. package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js.map +0 -1
  475. package/build/dist/Tests/Server/Utils/VM/VMAPI.test.js +0 -205
  476. package/build/dist/Tests/Server/Utils/VM/VMAPI.test.js.map +0 -1
  477. package/build/dist/Tests/Spy.js +0 -4
  478. package/build/dist/Tests/Spy.js.map +0 -1
  479. package/build/dist/Tests/Types/API/ErrorResponse.test.js +0 -13
  480. package/build/dist/Tests/Types/API/ErrorResponse.test.js.map +0 -1
  481. package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js +0 -33
  482. package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js.map +0 -1
  483. package/build/dist/Tests/Types/API/HTTPMethod.test.js +0 -16
  484. package/build/dist/Tests/Types/API/HTTPMethod.test.js.map +0 -1
  485. package/build/dist/Tests/Types/API/Headers.test.js +0 -14
  486. package/build/dist/Tests/Types/API/Headers.test.js.map +0 -1
  487. package/build/dist/Tests/Types/API/Hostname.test.js +0 -22
  488. package/build/dist/Tests/Types/API/Hostname.test.js.map +0 -1
  489. package/build/dist/Tests/Types/API/Protocal.test.js +0 -19
  490. package/build/dist/Tests/Types/API/Protocal.test.js.map +0 -1
  491. package/build/dist/Tests/Types/API/Response.test.js +0 -14
  492. package/build/dist/Tests/Types/API/Response.test.js.map +0 -1
  493. package/build/dist/Tests/Types/API/ResponseType.test.js +0 -13
  494. package/build/dist/Tests/Types/API/ResponseType.test.js.map +0 -1
  495. package/build/dist/Tests/Types/API/Route.test.js +0 -30
  496. package/build/dist/Tests/Types/API/Route.test.js.map +0 -1
  497. package/build/dist/Tests/Types/API/StatusCode.test.js +0 -26
  498. package/build/dist/Tests/Types/API/StatusCode.test.js.map +0 -1
  499. package/build/dist/Tests/Types/API/URL.test.js +0 -33
  500. package/build/dist/Tests/Types/API/URL.test.js.map +0 -1
  501. package/build/dist/Tests/Types/Alerts/AlertEventType.test.js +0 -34
  502. package/build/dist/Tests/Types/Alerts/AlertEventType.test.js.map +0 -1
  503. package/build/dist/Tests/Types/Alerts/AlertType.test.js +0 -19
  504. package/build/dist/Tests/Types/Alerts/AlertType.test.js.map +0 -1
  505. package/build/dist/Tests/Types/AppEnvironment.test.js +0 -13
  506. package/build/dist/Tests/Types/AppEnvironment.test.js.map +0 -1
  507. package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js +0 -13
  508. package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js.map +0 -1
  509. package/build/dist/Tests/Types/ArrayUtil.test.js +0 -71
  510. package/build/dist/Tests/Types/ArrayUtil.test.js.map +0 -1
  511. package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js +0 -181
  512. package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js.map +0 -1
  513. package/build/dist/Tests/Types/BrandColors.test.js +0 -124
  514. package/build/dist/Tests/Types/BrandColors.test.js.map +0 -1
  515. package/build/dist/Tests/Types/Char.test.js +0 -82
  516. package/build/dist/Tests/Types/Char.test.js.map +0 -1
  517. package/build/dist/Tests/Types/Code/CodeType.test.js +0 -13
  518. package/build/dist/Tests/Types/Code/CodeType.test.js.map +0 -1
  519. package/build/dist/Tests/Types/Color.test.js +0 -44
  520. package/build/dist/Tests/Types/Color.test.js.map +0 -1
  521. package/build/dist/Tests/Types/Company/CompanySize.test.js +0 -20
  522. package/build/dist/Tests/Types/Company/CompanySize.test.js.map +0 -1
  523. package/build/dist/Tests/Types/Company/JobRole.test.js +0 -22
  524. package/build/dist/Tests/Types/Company/JobRole.test.js.map +0 -1
  525. package/build/dist/Tests/Types/Countries.test.js +0 -249
  526. package/build/dist/Tests/Types/Countries.test.js.map +0 -1
  527. package/build/dist/Tests/Types/Database/ColumnLength.test.js +0 -43
  528. package/build/dist/Tests/Types/Database/ColumnLength.test.js.map +0 -1
  529. package/build/dist/Tests/Types/Database/ColumnType.test.js +0 -79
  530. package/build/dist/Tests/Types/Database/ColumnType.test.js.map +0 -1
  531. package/build/dist/Tests/Types/Database/Columns.test.js +0 -20
  532. package/build/dist/Tests/Types/Database/Columns.test.js.map +0 -1
  533. package/build/dist/Tests/Types/Database/CompareBase.test.js +0 -37
  534. package/build/dist/Tests/Types/Database/CompareBase.test.js.map +0 -1
  535. package/build/dist/Tests/Types/Database/Date.test.js +0 -62
  536. package/build/dist/Tests/Types/Database/Date.test.js.map +0 -1
  537. package/build/dist/Tests/Types/Database/EqualTo.test.js +0 -65
  538. package/build/dist/Tests/Types/Database/EqualTo.test.js.map +0 -1
  539. package/build/dist/Tests/Types/Database/EqualToOrNull.test.js +0 -62
  540. package/build/dist/Tests/Types/Database/EqualToOrNull.test.js.map +0 -1
  541. package/build/dist/Tests/Types/Database/InBetween.test.js +0 -72
  542. package/build/dist/Tests/Types/Database/InBetween.test.js.map +0 -1
  543. package/build/dist/Tests/Types/Database/LimitMax.test.js +0 -18
  544. package/build/dist/Tests/Types/Database/LimitMax.test.js.map +0 -1
  545. package/build/dist/Tests/Types/Database/NotEqual.test.js +0 -19
  546. package/build/dist/Tests/Types/Database/NotEqual.test.js.map +0 -1
  547. package/build/dist/Tests/Types/Database/Search.test.js +0 -10
  548. package/build/dist/Tests/Types/Database/Search.test.js.map +0 -1
  549. package/build/dist/Tests/Types/DatabaseType.test.js +0 -7
  550. package/build/dist/Tests/Types/DatabaseType.test.js.map +0 -1
  551. package/build/dist/Tests/Types/Date.test.js +0 -194
  552. package/build/dist/Tests/Types/Date.test.js.map +0 -1
  553. package/build/dist/Tests/Types/Dictionary.test.js +0 -25
  554. package/build/dist/Tests/Types/Dictionary.test.js.map +0 -1
  555. package/build/dist/Tests/Types/Domain.test.js +0 -54
  556. package/build/dist/Tests/Types/Domain.test.js.map +0 -1
  557. package/build/dist/Tests/Types/Email/Email.test.js +0 -51
  558. package/build/dist/Tests/Types/Email/Email.test.js.map +0 -1
  559. package/build/dist/Tests/Types/EmailWithName.test.js +0 -36
  560. package/build/dist/Tests/Types/EmailWithName.test.js.map +0 -1
  561. package/build/dist/Tests/Types/EncryptionAlgorithm.test.js +0 -7
  562. package/build/dist/Tests/Types/EncryptionAlgorithm.test.js.map +0 -1
  563. package/build/dist/Tests/Types/Exception/ApiException.test.js +0 -10
  564. package/build/dist/Tests/Types/Exception/ApiException.test.js.map +0 -1
  565. package/build/dist/Tests/Types/Exception/BadDataException.test.js +0 -12
  566. package/build/dist/Tests/Types/Exception/BadDataException.test.js.map +0 -1
  567. package/build/dist/Tests/Types/Exception/BadOperationException.test.js +0 -10
  568. package/build/dist/Tests/Types/Exception/BadOperationException.test.js.map +0 -1
  569. package/build/dist/Tests/Types/Exception/BadRequestException.test.js +0 -12
  570. package/build/dist/Tests/Types/Exception/BadRequestException.test.js.map +0 -1
  571. package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js +0 -10
  572. package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js.map +0 -1
  573. package/build/dist/Tests/Types/Exception/Exception.test.js +0 -15
  574. package/build/dist/Tests/Types/Exception/Exception.test.js.map +0 -1
  575. package/build/dist/Tests/Types/Exception/NotImplementedException.test.js +0 -12
  576. package/build/dist/Tests/Types/Exception/NotImplementedException.test.js.map +0 -1
  577. package/build/dist/Tests/Types/File.test.js +0 -22
  578. package/build/dist/Tests/Types/File.test.js.map +0 -1
  579. package/build/dist/Tests/Types/HashedString.test.js +0 -51
  580. package/build/dist/Tests/Types/HashedString.test.js.map +0 -1
  581. package/build/dist/Tests/Types/Html.test.js +0 -8
  582. package/build/dist/Tests/Types/Html.test.js.map +0 -1
  583. package/build/dist/Tests/Types/IP/IP.test.js +0 -65
  584. package/build/dist/Tests/Types/IP/IP.test.js.map +0 -1
  585. package/build/dist/Tests/Types/IP/IPType.test.js +0 -10
  586. package/build/dist/Tests/Types/IP/IPType.test.js.map +0 -1
  587. package/build/dist/Tests/Types/IP/IPv4.test.js +0 -17
  588. package/build/dist/Tests/Types/IP/IPv4.test.js.map +0 -1
  589. package/build/dist/Tests/Types/IP/IPv6.test.js +0 -17
  590. package/build/dist/Tests/Types/IP/IPv6.test.js.map +0 -1
  591. package/build/dist/Tests/Types/JSON.test.js +0 -37
  592. package/build/dist/Tests/Types/JSON.test.js.map +0 -1
  593. package/build/dist/Tests/Types/JSONFunctions.test.js +0 -38
  594. package/build/dist/Tests/Types/JSONFunctions.test.js.map +0 -1
  595. package/build/dist/Tests/Types/ListData.test.js +0 -34
  596. package/build/dist/Tests/Types/ListData.test.js.map +0 -1
  597. package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js +0 -121
  598. package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js.map +0 -1
  599. package/build/dist/Tests/Types/Name.test.js +0 -26
  600. package/build/dist/Tests/Types/Name.test.js.map +0 -1
  601. package/build/dist/Tests/Types/ObjectID.test.js +0 -12
  602. package/build/dist/Tests/Types/ObjectID.test.js.map +0 -1
  603. package/build/dist/Tests/Types/OnCallDutyPolicy/LayerUtil.test.js +0 -530
  604. package/build/dist/Tests/Types/OnCallDutyPolicy/LayerUtil.test.js.map +0 -1
  605. package/build/dist/Tests/Types/Permission.test.js +0 -99
  606. package/build/dist/Tests/Types/Permission.test.js.map +0 -1
  607. package/build/dist/Tests/Types/Phone.test.js +0 -37
  608. package/build/dist/Tests/Types/Phone.test.js.map +0 -1
  609. package/build/dist/Tests/Types/Port.test.js +0 -35
  610. package/build/dist/Tests/Types/Port.test.js.map +0 -1
  611. package/build/dist/Tests/Types/PositiveNumber.test.js +0 -101
  612. package/build/dist/Tests/Types/PositiveNumber.test.js.map +0 -1
  613. package/build/dist/Tests/Types/SecuritySeverity.test.js +0 -16
  614. package/build/dist/Tests/Types/SecuritySeverity.test.js.map +0 -1
  615. package/build/dist/Tests/Types/SerializableObject.test.js +0 -37
  616. package/build/dist/Tests/Types/SerializableObject.test.js.map +0 -1
  617. package/build/dist/Tests/Types/Sleep.test.js +0 -14
  618. package/build/dist/Tests/Types/Sleep.test.js.map +0 -1
  619. package/build/dist/Tests/Types/Text.test.js +0 -8
  620. package/build/dist/Tests/Types/Text.test.js.map +0 -1
  621. package/build/dist/Tests/Types/Timezone.test.js +0 -596
  622. package/build/dist/Tests/Types/Timezone.test.js.map +0 -1
  623. package/build/dist/Tests/Types/Typeof.test.js +0 -16
  624. package/build/dist/Tests/Types/Typeof.test.js.map +0 -1
  625. package/build/dist/Tests/Types/UserType.test.js +0 -16
  626. package/build/dist/Tests/Types/UserType.test.js.map +0 -1
  627. package/build/dist/Tests/Types/Version.test.js +0 -35
  628. package/build/dist/Tests/Types/Version.test.js.map +0 -1
  629. package/build/dist/Tests/Types/XML.test.js +0 -35
  630. package/build/dist/Tests/Types/XML.test.js.map +0 -1
  631. package/build/dist/Tests/UI/Components/404.test.js +0 -59
  632. package/build/dist/Tests/UI/Components/404.test.js.map +0 -1
  633. package/build/dist/Tests/UI/Components/Alert.test.js +0 -83
  634. package/build/dist/Tests/UI/Components/Alert.test.js.map +0 -1
  635. package/build/dist/Tests/UI/Components/Badge.test.js +0 -59
  636. package/build/dist/Tests/UI/Components/Badge.test.js.map +0 -1
  637. package/build/dist/Tests/UI/Components/BasicForm.test.js +0 -92
  638. package/build/dist/Tests/UI/Components/BasicForm.test.js.map +0 -1
  639. package/build/dist/Tests/UI/Components/Breadcrumbs.test.js +0 -69
  640. package/build/dist/Tests/UI/Components/Breadcrumbs.test.js.map +0 -1
  641. package/build/dist/Tests/UI/Components/Button.test.js +0 -104
  642. package/build/dist/Tests/UI/Components/Button.test.js.map +0 -1
  643. package/build/dist/Tests/UI/Components/Card.test.js +0 -81
  644. package/build/dist/Tests/UI/Components/Card.test.js.map +0 -1
  645. package/build/dist/Tests/UI/Components/ColorViewer.test.js +0 -42
  646. package/build/dist/Tests/UI/Components/ColorViewer.test.js.map +0 -1
  647. package/build/dist/Tests/UI/Components/ComponentsModal.test.js +0 -233
  648. package/build/dist/Tests/UI/Components/ComponentsModal.test.js.map +0 -1
  649. package/build/dist/Tests/UI/Components/ConfirmModal.test.js +0 -57
  650. package/build/dist/Tests/UI/Components/ConfirmModal.test.js.map +0 -1
  651. package/build/dist/Tests/UI/Components/DictionaryOfStrings.test.js +0 -84
  652. package/build/dist/Tests/UI/Components/DictionaryOfStrings.test.js.map +0 -1
  653. package/build/dist/Tests/UI/Components/Dropdown.test.js +0 -146
  654. package/build/dist/Tests/UI/Components/Dropdown.test.js.map +0 -1
  655. package/build/dist/Tests/UI/Components/DuplicateModel.test.js +0 -229
  656. package/build/dist/Tests/UI/Components/DuplicateModel.test.js.map +0 -1
  657. package/build/dist/Tests/UI/Components/EmptyState/EmptyState.test.js +0 -26
  658. package/build/dist/Tests/UI/Components/EmptyState/EmptyState.test.js.map +0 -1
  659. package/build/dist/Tests/UI/Components/ErrorBoundary.test.js +0 -32
  660. package/build/dist/Tests/UI/Components/ErrorBoundary.test.js.map +0 -1
  661. package/build/dist/Tests/UI/Components/FilePicker.test.js +0 -342
  662. package/build/dist/Tests/UI/Components/FilePicker.test.js.map +0 -1
  663. package/build/dist/Tests/UI/Components/HiddenText.test.js +0 -50
  664. package/build/dist/Tests/UI/Components/HiddenText.test.js.map +0 -1
  665. package/build/dist/Tests/UI/Components/Input.test.js +0 -223
  666. package/build/dist/Tests/UI/Components/Input.test.js.map +0 -1
  667. package/build/dist/Tests/UI/Components/Item.test.js +0 -58
  668. package/build/dist/Tests/UI/Components/Item.test.js.map +0 -1
  669. package/build/dist/Tests/UI/Components/List.test.js +0 -83
  670. package/build/dist/Tests/UI/Components/List.test.js.map +0 -1
  671. package/build/dist/Tests/UI/Components/Loader.test.js +0 -19
  672. package/build/dist/Tests/UI/Components/Loader.test.js.map +0 -1
  673. package/build/dist/Tests/UI/Components/MarkdownEditor.test.js +0 -85
  674. package/build/dist/Tests/UI/Components/MarkdownEditor.test.js.map +0 -1
  675. package/build/dist/Tests/UI/Components/MasterPage.test.js +0 -46
  676. package/build/dist/Tests/UI/Components/MasterPage.test.js.map +0 -1
  677. package/build/dist/Tests/UI/Components/Modal.test.js +0 -127
  678. package/build/dist/Tests/UI/Components/Modal.test.js.map +0 -1
  679. package/build/dist/Tests/UI/Components/NavBar.test.js +0 -52
  680. package/build/dist/Tests/UI/Components/NavBar.test.js.map +0 -1
  681. package/build/dist/Tests/UI/Components/OrderedStatesList.test.js +0 -86
  682. package/build/dist/Tests/UI/Components/OrderedStatesList.test.js.map +0 -1
  683. package/build/dist/Tests/UI/Components/Pagination.test.js +0 -137
  684. package/build/dist/Tests/UI/Components/Pagination.test.js.map +0 -1
  685. package/build/dist/Tests/UI/Components/Pill.test.js +0 -55
  686. package/build/dist/Tests/UI/Components/Pill.test.js.map +0 -1
  687. package/build/dist/Tests/UI/Components/Probe.test.js +0 -52
  688. package/build/dist/Tests/UI/Components/Probe.test.js.map +0 -1
  689. package/build/dist/Tests/UI/Components/ProgressBar.test.js +0 -41
  690. package/build/dist/Tests/UI/Components/ProgressBar.test.js.map +0 -1
  691. package/build/dist/Tests/UI/Components/RadioButtons.test.js +0 -66
  692. package/build/dist/Tests/UI/Components/RadioButtons.test.js.map +0 -1
  693. package/build/dist/Tests/UI/Components/SideMenuItem.test.js +0 -99
  694. package/build/dist/Tests/UI/Components/SideMenuItem.test.js.map +0 -1
  695. package/build/dist/Tests/UI/Components/SideOver.test.js +0 -77
  696. package/build/dist/Tests/UI/Components/SideOver.test.js.map +0 -1
  697. package/build/dist/Tests/UI/Components/Tabs.test.js +0 -56
  698. package/build/dist/Tests/UI/Components/Tabs.test.js.map +0 -1
  699. package/build/dist/Tests/UI/Components/Template/Template.test.js +0 -15
  700. package/build/dist/Tests/UI/Components/Template/Template.test.js.map +0 -1
  701. package/build/dist/Tests/UI/Components/TextArea.test.js +0 -112
  702. package/build/dist/Tests/UI/Components/TextArea.test.js.map +0 -1
  703. package/build/dist/Tests/UI/Components/TimePicker/TimePicker.test.js +0 -352
  704. package/build/dist/Tests/UI/Components/TimePicker/TimePicker.test.js.map +0 -1
  705. package/build/dist/Tests/UI/Components/Toast.test.js +0 -48
  706. package/build/dist/Tests/UI/Components/Toast.test.js.map +0 -1
  707. package/build/dist/Tests/UI/Components/Toggle.test.js +0 -95
  708. package/build/dist/Tests/UI/Components/Toggle.test.js.map +0 -1
  709. package/build/dist/Tests/UI/Components/TopSection.test.js +0 -33
  710. package/build/dist/Tests/UI/Components/TopSection.test.js.map +0 -1
  711. package/build/dist/Tests/UI/Components/XAxis.test.js +0 -21
  712. package/build/dist/Tests/UI/Components/XAxis.test.js.map +0 -1
  713. package/build/dist/Tests/UI/Index.js +0 -2
  714. package/build/dist/Tests/UI/Index.js.map +0 -1
  715. package/build/dist/Tests/UI/Mocks/FileMock.js +0 -3
  716. package/build/dist/Tests/UI/Mocks/FileMock.js.map +0 -1
  717. package/build/dist/Tests/Utils/API.test.js +0 -399
  718. package/build/dist/Tests/Utils/API.test.js.map +0 -1
  719. package/build/dist/Tests/Utils/Analytics.test.js +0 -67
  720. package/build/dist/Tests/Utils/Analytics.test.js.map +0 -1
  721. package/build/dist/Tests/Utils/CronTime.test.js +0 -22
  722. package/build/dist/Tests/Utils/CronTime.test.js.map +0 -1
  723. package/build/dist/Tests/Utils/Faker.test.js +0 -27
  724. package/build/dist/Tests/Utils/Faker.test.js.map +0 -1
  725. package/build/dist/Tests/Utils/MetricUnitUtil.test.js +0 -187
  726. package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +0 -1
  727. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js +0 -224
  728. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js.map +0 -1
  729. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js +0 -180
  730. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js.map +0 -1
  731. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js +0 -142
  732. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js.map +0 -1
  733. package/build/dist/Tests/Utils/Slug.test.js +0 -20
  734. package/build/dist/Tests/Utils/Slug.test.js.map +0 -1
  735. package/build/dist/Tests/Utils/UUID.test.js +0 -48
  736. package/build/dist/Tests/Utils/UUID.test.js.map +0 -1
  737. package/build/dist/Tests/jest.setup.js +0 -30
  738. package/build/dist/Tests/jest.setup.js.map +0 -1
  739. package/build/dist/Types/Profile/ProfileMetricType.js +0 -17
  740. package/build/dist/Types/Profile/ProfileMetricType.js.map +0 -1
@@ -1,530 +0,0 @@
1
- import LayerUtil from "../../../Types/OnCallDutyPolicy/Layer";
2
- import RestrictionTimes, { RestrictionType, } from "../../../Types/OnCallDutyPolicy/RestrictionTimes";
3
- import Recurring from "../../../Types/Events/Recurring";
4
- import OneUptimeDate from "../../../Types/Date";
5
- import EventInterval from "../../../Types/Events/EventInterval";
6
- import DayOfWeek, { DayOfWeekUtil } from "../../../Types/Day/DayOfWeek";
7
- // Helper to create a user model with id only.
8
- function user(id) {
9
- return {
10
- id: {
11
- toString: () => {
12
- return id;
13
- },
14
- },
15
- };
16
- }
17
- function buildLayerProps(data) {
18
- const restrictionTimes = new RestrictionTimes();
19
- if (data.restriction) {
20
- restrictionTimes.restictionType = data.restriction.type;
21
- if (data.restriction.type === RestrictionType.Daily &&
22
- data.restriction.start &&
23
- data.restriction.end) {
24
- restrictionTimes.dayRestrictionTimes = {
25
- startTime: OneUptimeDate.getDateWithCustomTime({
26
- hours: parseInt(data.restriction.start.split(":")[0] || "0"),
27
- minutes: parseInt(data.restriction.start.split(":")[1] || "0"),
28
- seconds: 0,
29
- }),
30
- endTime: OneUptimeDate.getDateWithCustomTime({
31
- hours: parseInt(data.restriction.end.split(":")[0] || "0"),
32
- minutes: parseInt(data.restriction.end.split(":")[1] || "0"),
33
- seconds: 0,
34
- }),
35
- };
36
- }
37
- }
38
- else if (data.weeklyRestrictions && data.weeklyRestrictions.length > 0) {
39
- restrictionTimes.restictionType = RestrictionType.Weekly;
40
- const weekly = [];
41
- // Base week anchor (start of week for provided start date)
42
- const baseWeekStart = OneUptimeDate.getStartOfTheWeek(data.start);
43
- const baseWeekDay = OneUptimeDate.getDayOfWeek(baseWeekStart);
44
- const baseWeekDayNumber = DayOfWeekUtil.getNumberOfDayOfWeek(baseWeekDay);
45
- for (const r of data.weeklyRestrictions) {
46
- const desiredStartDayNum = DayOfWeekUtil.getNumberOfDayOfWeek(r.startDay);
47
- const desiredEndDayNum = DayOfWeekUtil.getNumberOfDayOfWeek(r.endDay);
48
- const startOffsetDays = desiredStartDayNum - baseWeekDayNumber;
49
- const endOffsetDays = desiredEndDayNum - baseWeekDayNumber;
50
- const startDate = OneUptimeDate.addRemoveDays(baseWeekStart, startOffsetDays);
51
- const endDate = OneUptimeDate.addRemoveDays(baseWeekStart, endOffsetDays);
52
- const startTime = OneUptimeDate.keepTimeButMoveDay(OneUptimeDate.getDateWithCustomTime({
53
- hours: parseInt(r.start.split(":")[0] || "0"),
54
- minutes: parseInt(r.start.split(":")[1] || "0"),
55
- seconds: 0,
56
- }), startDate);
57
- const endTime = OneUptimeDate.keepTimeButMoveDay(OneUptimeDate.getDateWithCustomTime({
58
- hours: parseInt(r.end.split(":")[0] || "0"),
59
- minutes: parseInt(r.end.split(":")[1] || "0"),
60
- seconds: 0,
61
- }), endDate);
62
- weekly.push({
63
- startDay: r.startDay,
64
- endDay: r.endDay,
65
- startTime,
66
- endTime,
67
- });
68
- }
69
- restrictionTimes.weeklyRestrictionTimes = weekly;
70
- }
71
- else {
72
- restrictionTimes.restictionType = RestrictionType.None;
73
- restrictionTimes.dayRestrictionTimes = null;
74
- }
75
- const rotation = data.rotation
76
- ? Recurring.fromJSON({
77
- _type: "Recurring",
78
- value: {
79
- intervalType: data.rotation.intervalType,
80
- intervalCount: {
81
- _type: "PositiveNumber",
82
- value: data.rotation.intervalCount,
83
- },
84
- },
85
- })
86
- : Recurring.fromJSON({
87
- _type: "Recurring",
88
- value: {
89
- intervalType: EventInterval.Day,
90
- intervalCount: { _type: "PositiveNumber", value: 1 },
91
- },
92
- });
93
- return {
94
- users: data.users.map(user),
95
- startDateTimeOfLayer: data.start,
96
- handOffTime: data.handoff,
97
- restrictionTimes,
98
- rotation,
99
- };
100
- }
101
- describe("LayerUtil getEvents - Daily Restrictions", () => {
102
- test("Should return full-day events when no restriction", () => {
103
- const util = new LayerUtil();
104
- const start = OneUptimeDate.getStartOfDay(new Date());
105
- const end = OneUptimeDate.addRemoveDays(start, 1); // one day calendar
106
- const layer = buildLayerProps({
107
- users: ["u1"],
108
- start: start,
109
- handoff: OneUptimeDate.addRemoveDays(start, 10),
110
- });
111
- const events = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: start, calendarEndDate: end }));
112
- expect(events.length).toBe(1);
113
- const only = events[0];
114
- expect(only.start.getTime()).toBe(start.getTime());
115
- expect(only.end.getTime()).toBe(end.getTime());
116
- });
117
- test("Should trim to same-day restriction window (11:00-23:00)", () => {
118
- const util = new LayerUtil();
119
- const start = OneUptimeDate.getStartOfDay(new Date());
120
- const calendarEnd = OneUptimeDate.addRemoveDays(start, 1);
121
- const layer = buildLayerProps({
122
- users: ["u1"],
123
- start: start,
124
- handoff: OneUptimeDate.addRemoveDays(start, 2),
125
- restriction: {
126
- type: RestrictionType.Daily,
127
- start: "11:00",
128
- end: "23:00",
129
- },
130
- });
131
- const events = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: start, calendarEndDate: calendarEnd }));
132
- expect(events.length).toBe(1);
133
- const ev = events[0];
134
- expect(OneUptimeDate.getLocalHourAndMinuteFromDate(ev.start)).toBe("11:00");
135
- expect(OneUptimeDate.getLocalHourAndMinuteFromDate(ev.end)).toBe("23:00");
136
- });
137
- test("Should produce two segments for overnight window (23:00-11:00 next day)", () => {
138
- const util = new LayerUtil();
139
- const todayStart = OneUptimeDate.getStartOfDay(new Date());
140
- // Extend calendar to cover next day morning (till at least 12:00) so both segments can appear.
141
- const calendarEnd = OneUptimeDate.addRemoveHours(todayStart, 36); // 24h + 12h
142
- const layer = buildLayerProps({
143
- users: ["u1"],
144
- start: todayStart,
145
- handoff: OneUptimeDate.addRemoveDays(todayStart, 2),
146
- restriction: {
147
- type: RestrictionType.Daily,
148
- start: "23:00",
149
- end: "11:00",
150
- },
151
- });
152
- const events = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: todayStart, calendarEndDate: calendarEnd }));
153
- /*
154
- * Expect two events: 23:00 -> 23:59:59 (approx) and 00:00 -> 11:00 next day (depending on trimming logic)
155
- * We simplify by checking presence of one starting at 23:00 and one ending at 11:00.
156
- */
157
- expect(events.length).toBeGreaterThanOrEqual(2); // Expect at least two distinct segments across midnight.
158
- const has23Window = events.some((e) => {
159
- return OneUptimeDate.getLocalHourAndMinuteFromDate(e.start) === "23:00";
160
- });
161
- // End might be 10:59 or 11:00 depending on second trimming; allow both 10 or 11 hour boundary.
162
- const hasMorningCoverage = events.some((e) => {
163
- const startHM = OneUptimeDate.getLocalHourAndMinuteFromDate(e.start);
164
- const endHM = OneUptimeDate.getLocalHourAndMinuteFromDate(e.end);
165
- // Morning segment should end at or near 11:00 and start at or near 00:00
166
- return ((startHM === "00:00" || startHM === "00:01" || startHM === "23:59") &&
167
- (endHM === "11:00" || endHM === "10:59" || endHM === "10:58"));
168
- });
169
- expect(has23Window).toBeTruthy();
170
- expect(hasMorningCoverage).toBeTruthy();
171
- });
172
- });
173
- describe("LayerUtil getEvents - Multi-day Daily Windows", () => {
174
- test("Daily restriction (09:00-17:00) over 3 day calendar produces one window per day", () => {
175
- const util = new LayerUtil();
176
- const day1 = OneUptimeDate.getStartOfDay(new Date());
177
- const calendarEnd = OneUptimeDate.addRemoveDays(day1, 3); // 3 days window
178
- const layer = buildLayerProps({
179
- users: ["u1"],
180
- start: day1,
181
- handoff: OneUptimeDate.addRemoveDays(day1, 1), // initial handoff end of day1
182
- restriction: {
183
- type: RestrictionType.Daily,
184
- start: "09:00",
185
- end: "17:00",
186
- },
187
- rotation: { intervalType: EventInterval.Day, intervalCount: 1 },
188
- });
189
- const events = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: day1, calendarEndDate: calendarEnd }));
190
- const windowsStartingAtNine = events.filter((e) => {
191
- return OneUptimeDate.getLocalHourAndMinuteFromDate(e.start) === "09:00";
192
- });
193
- expect(windowsStartingAtNine.length).toBeGreaterThanOrEqual(2);
194
- });
195
- });
196
- describe("LayerUtil getEvents - Weekly Restrictions", () => {
197
- test("Simple weekly window Monday 09:00 to Wednesday 17:00 yields trimmed events", () => {
198
- const util = new LayerUtil();
199
- const monday = OneUptimeDate.getStartOfTheWeek(new Date());
200
- const calendarEnd = OneUptimeDate.addRemoveDays(monday, 7);
201
- const layer = buildLayerProps({
202
- users: ["u1"],
203
- start: monday,
204
- handoff: OneUptimeDate.addRemoveWeeks(monday, 1),
205
- weeklyRestrictions: [
206
- {
207
- startDay: DayOfWeek.Monday,
208
- endDay: DayOfWeek.Wednesday,
209
- start: "09:00",
210
- end: "17:00",
211
- },
212
- ],
213
- rotation: { intervalType: EventInterval.Week, intervalCount: 1 },
214
- });
215
- const events = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: monday, calendarEndDate: calendarEnd }));
216
- const hasStartNine = events.some((e) => {
217
- return OneUptimeDate.getLocalHourAndMinuteFromDate(e.start) === "09:00";
218
- });
219
- const hasEndSeventeen = events.some((e) => {
220
- return OneUptimeDate.getLocalHourAndMinuteFromDate(e.end) === "17:00";
221
- });
222
- expect(hasStartNine).toBeTruthy();
223
- expect(hasEndSeventeen).toBeTruthy();
224
- });
225
- test("Weekly wrap-around Friday 22:00 to Monday 06:00 produces appropriate segments", () => {
226
- const util = new LayerUtil();
227
- const monday = OneUptimeDate.getStartOfTheWeek(new Date());
228
- const calendarEnd = OneUptimeDate.addRemoveDays(monday, 7);
229
- const layer = buildLayerProps({
230
- users: ["u1"],
231
- start: monday,
232
- handoff: OneUptimeDate.addRemoveWeeks(monday, 1),
233
- weeklyRestrictions: [
234
- {
235
- startDay: DayOfWeek.Friday,
236
- endDay: DayOfWeek.Monday,
237
- start: "22:00",
238
- end: "06:00",
239
- },
240
- ],
241
- rotation: { intervalType: EventInterval.Week, intervalCount: 1 },
242
- });
243
- const events = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: monday, calendarEndDate: calendarEnd }));
244
- const has22 = events.some((e) => {
245
- return OneUptimeDate.getLocalHourAndMinuteFromDate(e.start) === "22:00";
246
- });
247
- const has06 = events.some((e) => {
248
- return OneUptimeDate.getLocalHourAndMinuteFromDate(e.end) === "06:00";
249
- });
250
- expect(has22).toBeTruthy();
251
- expect(has06).toBeTruthy();
252
- });
253
- });
254
- describe("LayerUtil getEvents - Daily Rotation Across Users", () => {
255
- test("Daily rotation cycles users", () => {
256
- const util = new LayerUtil();
257
- const day1 = OneUptimeDate.getStartOfDay(new Date());
258
- const calendarEnd = OneUptimeDate.addRemoveDays(day1, 3); // 3 days
259
- const layer = buildLayerProps({
260
- users: ["a", "b"],
261
- start: day1,
262
- handoff: OneUptimeDate.addRemoveDays(day1, 1),
263
- rotation: { intervalType: EventInterval.Day, intervalCount: 1 },
264
- });
265
- const events = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: day1, calendarEndDate: calendarEnd }));
266
- if (events.length >= 2) {
267
- expect(events[0].title).not.toBe(events[1].title);
268
- }
269
- });
270
- });
271
- describe("LayerUtil getMultiLayerEvents - Partial Overlap Trimming", () => {
272
- test("Primary layer inside backup trims backup", () => {
273
- const util = new LayerUtil();
274
- const start = OneUptimeDate.getStartOfDay(new Date());
275
- const calendarEnd = OneUptimeDate.addRemoveHours(start, 6);
276
- const primary = buildLayerProps({
277
- users: ["primary"],
278
- start: OneUptimeDate.addRemoveHours(start, 2),
279
- handoff: OneUptimeDate.addRemoveHours(start, 4),
280
- });
281
- const backup = buildLayerProps({
282
- users: ["backup"],
283
- start: start,
284
- handoff: OneUptimeDate.addRemoveHours(start, 6),
285
- });
286
- const events = util.getMultiLayerEvents({
287
- layers: [primary, backup],
288
- calendarStartDate: start,
289
- calendarEndDate: calendarEnd,
290
- });
291
- const containsPrimary = events.some((e) => {
292
- return e.title === "primary";
293
- });
294
- const containsBackup = events.some((e) => {
295
- return e.title === "backup";
296
- });
297
- expect(containsPrimary).toBeTruthy();
298
- expect(containsBackup).toBeTruthy();
299
- });
300
- });
301
- describe("LayerUtil getEvents - Rotation Handoff", () => {
302
- test("Hourly rotation changes user after each hour", () => {
303
- const util = new LayerUtil();
304
- const start = OneUptimeDate.getStartOfDay(new Date());
305
- const calendarEnd = OneUptimeDate.addRemoveHours(start, 5); // 5 hours window
306
- const layer = buildLayerProps({
307
- users: ["u1", "u2", "u3"],
308
- start: start,
309
- handoff: OneUptimeDate.addRemoveHours(start, 1), // first handoff at +1h
310
- rotation: { intervalType: EventInterval.Hour, intervalCount: 1 },
311
- });
312
- const events = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: start, calendarEndDate: calendarEnd }));
313
- // Expect roughly 5 events (one per hour) and user IDs rotate in sequence.
314
- expect(events.length).toBeGreaterThanOrEqual(4);
315
- const userSequence = events.map((e) => {
316
- return e.title;
317
- });
318
- /*
319
- * Titles are user ids (strings we passed) according to implementation.
320
- * Check that at least first three rotate u1 -> u2 -> u3
321
- */
322
- expect(userSequence.slice(0, 3)).toEqual(["u1", "u2", "u3"]);
323
- });
324
- });
325
- describe("LayerUtil getEvents - Rotation skips restricted days (issue #2413)", () => {
326
- test("Daily rotation Mon-Fri 09-19 should advance to next user after weekend", () => {
327
- const util = new LayerUtil();
328
- // Anchor on a Monday at 09:00. Use start of week then move to Monday 09:00.
329
- const startOfWeek = OneUptimeDate.getStartOfTheWeek(new Date());
330
- // moment.startOf("week") is Sunday; add 1 day to get Monday.
331
- const mondayStart = OneUptimeDate.addRemoveDays(startOfWeek, 1);
332
- const monday9AM = OneUptimeDate.keepTimeButMoveDay(OneUptimeDate.getDateWithCustomTime({
333
- hours: 9,
334
- minutes: 0,
335
- seconds: 0,
336
- }), mondayStart);
337
- const monday7PM = OneUptimeDate.keepTimeButMoveDay(OneUptimeDate.getDateWithCustomTime({
338
- hours: 19,
339
- minutes: 0,
340
- seconds: 0,
341
- }), mondayStart);
342
- const calendarEnd = OneUptimeDate.addRemoveDays(monday9AM, 14); // two weeks
343
- const layer = buildLayerProps({
344
- users: ["A", "B", "C"],
345
- start: monday9AM,
346
- handoff: monday7PM, // first handoff 10 hours after start
347
- weeklyRestrictions: [
348
- {
349
- startDay: DayOfWeek.Monday,
350
- endDay: DayOfWeek.Monday,
351
- start: "09:00",
352
- end: "19:00",
353
- },
354
- {
355
- startDay: DayOfWeek.Tuesday,
356
- endDay: DayOfWeek.Tuesday,
357
- start: "09:00",
358
- end: "19:00",
359
- },
360
- {
361
- startDay: DayOfWeek.Wednesday,
362
- endDay: DayOfWeek.Wednesday,
363
- start: "09:00",
364
- end: "19:00",
365
- },
366
- {
367
- startDay: DayOfWeek.Thursday,
368
- endDay: DayOfWeek.Thursday,
369
- start: "09:00",
370
- end: "19:00",
371
- },
372
- {
373
- startDay: DayOfWeek.Friday,
374
- endDay: DayOfWeek.Friday,
375
- start: "09:00",
376
- end: "19:00",
377
- },
378
- ],
379
- rotation: { intervalType: EventInterval.Day, intervalCount: 1 },
380
- });
381
- const events = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: monday9AM, calendarEndDate: calendarEnd }));
382
- // Filter the events that begin at 09:00 (i.e. true workday slots).
383
- const workdayEvents = events.filter((e) => {
384
- return OneUptimeDate.getLocalHourAndMinuteFromDate(e.start) === "09:00";
385
- });
386
- /*
387
- * Expect 10 workdays across 2 weeks (Mon-Fri x 2).
388
- * Sequence should be A, B, C, A, B, C, A, B, C, A — contiguous rotation
389
- * skipping the weekend without burning rotations.
390
- */
391
- const sequence = workdayEvents.map((e) => {
392
- return e.title;
393
- });
394
- // Specifically: friday week 1 user must NOT equal monday week 2 user.
395
- const fridayWeek1 = sequence[4];
396
- const mondayWeek2 = sequence[5];
397
- expect(fridayWeek1).toBeDefined();
398
- expect(mondayWeek2).toBeDefined();
399
- expect(fridayWeek1).not.toBe(mondayWeek2);
400
- /*
401
- * And the user on Monday week 2 should be the rotation step after Friday week 1.
402
- * With 3 users and 1-day rotation, after Fri (B) we expect Mon to be C.
403
- */
404
- expect(sequence.slice(0, 10)).toEqual([
405
- "A",
406
- "B",
407
- "C",
408
- "A",
409
- "B",
410
- "C",
411
- "A",
412
- "B",
413
- "C",
414
- "A",
415
- ]);
416
- });
417
- });
418
- describe("LayerUtil getEvents - Rotation continuous across calendar windows (issue #2413)", () => {
419
- test("Week 2 preview should continue rotation from where week 1 ended", () => {
420
- const util = new LayerUtil();
421
- // Anchor on a Monday at 09:00.
422
- const startOfWeek = OneUptimeDate.getStartOfTheWeek(new Date());
423
- const mondayStart = OneUptimeDate.addRemoveDays(startOfWeek, 1);
424
- const monday9AM = OneUptimeDate.keepTimeButMoveDay(OneUptimeDate.getDateWithCustomTime({
425
- hours: 9,
426
- minutes: 0,
427
- seconds: 0,
428
- }), mondayStart);
429
- const monday7PM = OneUptimeDate.keepTimeButMoveDay(OneUptimeDate.getDateWithCustomTime({
430
- hours: 19,
431
- minutes: 0,
432
- seconds: 0,
433
- }), mondayStart);
434
- const layer = buildLayerProps({
435
- users: ["A", "B", "C"],
436
- start: monday9AM,
437
- handoff: monday7PM,
438
- weeklyRestrictions: [
439
- {
440
- startDay: DayOfWeek.Monday,
441
- endDay: DayOfWeek.Monday,
442
- start: "09:00",
443
- end: "19:00",
444
- },
445
- {
446
- startDay: DayOfWeek.Tuesday,
447
- endDay: DayOfWeek.Tuesday,
448
- start: "09:00",
449
- end: "19:00",
450
- },
451
- {
452
- startDay: DayOfWeek.Wednesday,
453
- endDay: DayOfWeek.Wednesday,
454
- start: "09:00",
455
- end: "19:00",
456
- },
457
- {
458
- startDay: DayOfWeek.Thursday,
459
- endDay: DayOfWeek.Thursday,
460
- start: "09:00",
461
- end: "19:00",
462
- },
463
- {
464
- startDay: DayOfWeek.Friday,
465
- endDay: DayOfWeek.Friday,
466
- start: "09:00",
467
- end: "19:00",
468
- },
469
- ],
470
- rotation: { intervalType: EventInterval.Day, intervalCount: 1 },
471
- });
472
- // Simulate the dashboard preview: ask for week 1 then week 2 separately.
473
- const week1Start = monday9AM;
474
- const week1End = OneUptimeDate.addRemoveDays(monday9AM, 7);
475
- const week2Start = week1End;
476
- const week2End = OneUptimeDate.addRemoveDays(week1End, 7);
477
- const week1 = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: week1Start, calendarEndDate: week1End }));
478
- const week2 = util.getEvents(Object.assign(Object.assign({}, layer), { calendarStartDate: week2Start, calendarEndDate: week2End }));
479
- // Filter to the workday slots that begin at 09:00 in each week.
480
- const workdayUsers = (events) => {
481
- return events
482
- .filter((e) => {
483
- return (OneUptimeDate.getLocalHourAndMinuteFromDate(e.start) === "09:00");
484
- })
485
- .map((e) => {
486
- return e.title;
487
- });
488
- };
489
- const week1Sequence = workdayUsers(week1);
490
- const week2Sequence = workdayUsers(week2);
491
- expect(week1Sequence).toEqual(["A", "B", "C", "A", "B"]);
492
- /*
493
- * The first user of week 2 must be the rotation step after the last user of week 1.
494
- * Week 1 ends on Friday with B, so Monday week 2 must be C — not A or B.
495
- */
496
- expect(week2Sequence[0]).toBeDefined();
497
- expect(week2Sequence[0]).toBe("C");
498
- expect(week2Sequence).toEqual(["C", "A", "B", "C", "A"]);
499
- });
500
- });
501
- describe("LayerUtil getMultiLayerEvents - Overlap Priority", () => {
502
- test("Higher priority (lower index) layer should trim overlapping lower priority events", () => {
503
- const util = new LayerUtil();
504
- const start = OneUptimeDate.getStartOfDay(new Date());
505
- const calendarEnd = OneUptimeDate.addRemoveHours(start, 6);
506
- const layer1 = buildLayerProps({
507
- users: ["primary"],
508
- start: start,
509
- handoff: OneUptimeDate.addRemoveHours(start, 6),
510
- });
511
- const layer2 = buildLayerProps({
512
- users: ["backup"],
513
- start: start,
514
- handoff: OneUptimeDate.addRemoveHours(start, 6),
515
- });
516
- const events = util.getMultiLayerEvents({
517
- layers: [layer1, layer2],
518
- calendarStartDate: start,
519
- calendarEndDate: calendarEnd,
520
- });
521
- // All events should belong to primary (priority 1) with no backup overlapping intervals left.
522
- const titles = events.map((e) => {
523
- return e.title;
524
- });
525
- expect(titles.every((t) => {
526
- return t === "primary";
527
- })).toBeTruthy();
528
- });
529
- });
530
- //# sourceMappingURL=LayerUtil.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LayerUtil.test.js","sourceRoot":"","sources":["../../../../../Tests/Types/OnCallDutyPolicy/LayerUtil.test.ts"],"names":[],"mappings":"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"}
@@ -1,99 +0,0 @@
1
- import ObjectID from "../../Types/ObjectID";
2
- import Permission, { PermissionHelper, } from "../../Types/Permission";
3
- import PermissionScope from "../../Types/Database/AccessControl/PermissionScope";
4
- describe("Permission", () => {
5
- test("Permission.ProjectMember should be ProjectMember", () => {
6
- expect(Permission.ProjectMember).toBe("ProjectMember");
7
- });
8
- test("Permission.Public should be Public", () => {
9
- expect(Permission.Public).toBe("Public");
10
- });
11
- });
12
- const makeRow = (permission, scope, labelIds = []) => {
13
- return {
14
- _type: "UserPermission",
15
- permission,
16
- labelIds,
17
- scope,
18
- };
19
- };
20
- describe("PermissionHelper label/scope filtering", () => {
21
- /*
22
- * Regression coverage for the bug where a team permission with
23
- * scope=Labels on a role permission (IncidentViewer, MonitorViewer,
24
- * Viewer, …) was treated as an unconditional grant because the
25
- * legacy filter consulted the per-permission `isAccessControlPermission`
26
- * flag instead of the explicit scope on the row.
27
- */
28
- test("getNonAccessControlPermissions: scope=All counts as unrestricted", () => {
29
- const rows = [
30
- makeRow(Permission.IncidentViewer, PermissionScope.All, []),
31
- ];
32
- expect(PermissionHelper.getNonAccessControlPermissions(rows)).toEqual([
33
- Permission.IncidentViewer,
34
- ]);
35
- });
36
- test("getNonAccessControlPermissions: scope=Labels with labels is restricted (NOT included)", () => {
37
- const labelId = ObjectID.generate();
38
- const rows = [
39
- makeRow(Permission.IncidentViewer, PermissionScope.Labels, [labelId]),
40
- ];
41
- expect(PermissionHelper.getNonAccessControlPermissions(rows)).toEqual([]);
42
- });
43
- test("getNonAccessControlPermissions: scope=Labels with empty labels is treated as unrestricted (legacy parity)", () => {
44
- const rows = [
45
- makeRow(Permission.IncidentViewer, PermissionScope.Labels, []),
46
- ];
47
- expect(PermissionHelper.getNonAccessControlPermissions(rows)).toEqual([
48
- Permission.IncidentViewer,
49
- ]);
50
- });
51
- test("getNonAccessControlPermissions: scope=Owned is excluded (OwnedScope handles it)", () => {
52
- const rows = [
53
- makeRow(Permission.IncidentViewer, PermissionScope.Owned, []),
54
- ];
55
- expect(PermissionHelper.getNonAccessControlPermissions(rows)).toEqual([]);
56
- });
57
- test("getNonAccessControlPermissions: legacy row (scope undefined, no labels) is unrestricted", () => {
58
- const rows = [
59
- makeRow(Permission.CurrentUser, undefined, []),
60
- ];
61
- expect(PermissionHelper.getNonAccessControlPermissions(rows)).toEqual([
62
- Permission.CurrentUser,
63
- ]);
64
- });
65
- test("getAccessControlPermissions: role permission with scope=Labels + labels is collected", () => {
66
- const labelId = ObjectID.generate();
67
- const row = makeRow(Permission.IncidentViewer, PermissionScope.Labels, [labelId]);
68
- expect(PermissionHelper.getAccessControlPermissions([row])).toEqual([row]);
69
- });
70
- test("getAccessControlPermissions: granular permission with scope=Labels + labels is collected", () => {
71
- const labelId = ObjectID.generate();
72
- const row = makeRow(Permission.ReadProjectIncident, PermissionScope.Labels, [labelId]);
73
- expect(PermissionHelper.getAccessControlPermissions([row])).toEqual([row]);
74
- });
75
- test("getAccessControlPermissions: scope=All with labels is NOT collected (All wins over labels)", () => {
76
- const labelId = ObjectID.generate();
77
- const row = makeRow(Permission.IncidentViewer, PermissionScope.All, [labelId]);
78
- expect(PermissionHelper.getAccessControlPermissions([row])).toEqual([]);
79
- });
80
- test("getAccessControlPermissions: scope=Owned never contributes a label filter", () => {
81
- const labelId = ObjectID.generate();
82
- const row = makeRow(Permission.IncidentViewer, PermissionScope.Owned, [labelId]);
83
- expect(PermissionHelper.getAccessControlPermissions([row])).toEqual([]);
84
- });
85
- test("Mixed: All row on a different permission does NOT suppress a Labels row's filter", () => {
86
- const labelId = ObjectID.generate();
87
- const rows = [
88
- makeRow(Permission.MonitorViewer, PermissionScope.All, []),
89
- makeRow(Permission.IncidentViewer, PermissionScope.Labels, [labelId]),
90
- ];
91
- expect(PermissionHelper.getNonAccessControlPermissions(rows)).toEqual([
92
- Permission.MonitorViewer,
93
- ]);
94
- expect(PermissionHelper.getAccessControlPermissions(rows)).toEqual([
95
- rows[1],
96
- ]);
97
- });
98
- });
99
- //# sourceMappingURL=Permission.test.js.map