@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
@@ -359,6 +359,13 @@ export default class ModelPermission {
359
359
  "deletedAt",
360
360
  "updatedAt",
361
361
  "version",
362
+ /*
363
+ * Synthetic query key compiled by StatementGenerator to
364
+ * (hasAny(entityKeys, ...) OR attributes[...] = ...) — not a real
365
+ * column; it only narrows rows on models that have entityKeys and
366
+ * never widens access (authorization stays on primaryEntityId).
367
+ */
368
+ "entityScope",
362
369
  ];
363
370
 
364
371
  return returnArr;
@@ -825,10 +832,44 @@ export default class ModelPermission {
825
832
  }
826
833
 
827
834
  const fkColumn: string = model.ownedThrough.fkColumn;
828
- const idList: Array<string> =
835
+ const sentinelNoMatch: Array<string> = [
836
+ ObjectID.getZeroObjectID().toString(),
837
+ ];
838
+ let idList: Array<string> =
829
839
  allowedResourceIds.size > 0
830
840
  ? Array.from(allowedResourceIds)
831
- : [ObjectID.getZeroObjectID().toString()]; // sentinel: match nothing
841
+ : sentinelNoMatch;
842
+
843
+ /*
844
+ * Intersect with any caller-supplied FK filter (e.g. a per-service
845
+ * telemetry page querying primaryEntityId) instead of overwriting it —
846
+ * overwriting would widen the query to every allowed resource. The FK
847
+ * is a scalar column, so set intersection is exact.
848
+ */
849
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
850
+ const existingFkFilter: unknown = (query as any)[fkColumn];
851
+ if (existingFkFilter instanceof Includes) {
852
+ const requestedIds: Set<string> = new Set<string>(
853
+ existingFkFilter.values.map((value: string | ObjectID | number) => {
854
+ return value.toString();
855
+ }),
856
+ );
857
+ idList = idList.filter((id: string) => {
858
+ return requestedIds.has(id);
859
+ });
860
+ } else if (
861
+ typeof existingFkFilter === "string" ||
862
+ existingFkFilter instanceof ObjectID
863
+ ) {
864
+ const requestedId: string = existingFkFilter.toString();
865
+ idList = idList.filter((id: string) => {
866
+ return id === requestedId;
867
+ });
868
+ }
869
+
870
+ if (idList.length === 0) {
871
+ idList = sentinelNoMatch;
872
+ }
832
873
 
833
874
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
834
875
  (query as any)[fkColumn] = new Includes(idList);
@@ -19,6 +19,9 @@ import Permission, {
19
19
  PermissionHelper,
20
20
  UserPermission,
21
21
  } from "../../../../Types/Permission";
22
+ import { combineWithPrivacyClause } from "../../../Utils/PrivacyFilterUtil";
23
+ import QueryHelper from "../QueryHelper";
24
+ import QueryUtil from "../QueryUtil";
22
25
  import CaptureSpan from "../../../Utils/Telemetry/CaptureSpan";
23
26
 
24
27
  export default class AccessControlPermission {
@@ -232,8 +235,50 @@ export default class AccessControlPermission {
232
235
  this.getAccessControlIdsForQuery(modelType, query, select, props, type);
233
236
 
234
237
  if (accessControlIds.length > 0) {
235
- (query as any)[model.getAccessControlColumn() as string] =
236
- accessControlIds;
238
+ const accessControlColumn: string =
239
+ model.getAccessControlColumn() as string;
240
+ const existingFilter: unknown = (query as any)[accessControlColumn];
241
+
242
+ if (existingFilter === undefined || existingFilter === null) {
243
+ (query as any)[accessControlColumn] = accessControlIds;
244
+ } else {
245
+ /*
246
+ * The caller already filters on the access-control column (e.g.
247
+ * "show monitors with label X"). Overwriting that filter with the
248
+ * permitted set would silently widen it to "any permitted label".
249
+ * Both predicates must hold independently — a record with labels
250
+ * {X, Y} (X requested, Y permitted) must match even when X itself
251
+ * is not permitted — so keep the caller's filter on the relation
252
+ * key and AND the permitted-set predicate onto _id as a join-table
253
+ * subquery.
254
+ */
255
+ const manyToManyMeta: {
256
+ joinTableName: string;
257
+ ownerColumnName: string;
258
+ relationColumnName: string;
259
+ } | null = QueryUtil.getManyToManyRelationMetadata(
260
+ modelType,
261
+ accessControlColumn,
262
+ );
263
+
264
+ if (manyToManyMeta) {
265
+ (query as any)._id = combineWithPrivacyClause(
266
+ (query as any)._id,
267
+ QueryHelper.anyOfEntitiesInManyToMany({
268
+ values: accessControlIds,
269
+ joinTableName: manyToManyMeta.joinTableName,
270
+ ownerColumnName: manyToManyMeta.ownerColumnName,
271
+ relationColumnName: manyToManyMeta.relationColumnName,
272
+ }),
273
+ );
274
+ } else {
275
+ /*
276
+ * Join metadata unavailable — fail closed to the permitted set.
277
+ * The caller's filter is dropped, but access never widens.
278
+ */
279
+ (query as any)[accessControlColumn] = accessControlIds;
280
+ }
281
+ }
237
282
  }
238
283
  }
239
284
 
@@ -13,6 +13,7 @@ import TenantPermission from "./TenantPermission";
13
13
  import UserPermissions from "./UserPermission";
14
14
  import BaseModel from "../../../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
15
15
  import DatabaseCommonInteractionProps from "../../../../Types/BaseDatabase/DatabaseCommonInteractionProps";
16
+ import { JSONObject } from "../../../../Types/JSON";
16
17
  import { TableColumnMetadata } from "../../../../Types/Database/TableColumn";
17
18
  import TableColumnType from "../../../../Types/Database/TableColumnType";
18
19
  import ObjectID from "../../../../Types/ObjectID";
@@ -121,10 +122,45 @@ export default class BasePermission {
121
122
  const tableColumnMetadataModel: BaseModel =
122
123
  new tableColumnMetadata.modelType();
123
124
 
124
- (query as any)[model.canAccessIfCanReadOn as string] = {
125
+ const accessControlQuery: JSONObject = {
125
126
  [tableColumnMetadataModel.getAccessControlColumn() as string]:
126
127
  accessControlIds,
127
128
  };
129
+
130
+ /*
131
+ * Preserve any caller-supplied filter on the relation key
132
+ * instead of overwriting it. Plain relation objects are
133
+ * merged (the access-control predicate wins on a key
134
+ * collision — fail closed, access never widens); a scalar
135
+ * id filter is folded in as the relation's _id. Anything
136
+ * else falls back to the access-control query alone.
137
+ */
138
+ const existingRelationFilter: unknown = (query as any)[
139
+ model.canAccessIfCanReadOn as string
140
+ ];
141
+
142
+ if (
143
+ typeof existingRelationFilter === "string" ||
144
+ existingRelationFilter instanceof ObjectID
145
+ ) {
146
+ (query as any)[model.canAccessIfCanReadOn as string] = {
147
+ _id: existingRelationFilter.toString(),
148
+ ...accessControlQuery,
149
+ };
150
+ } else if (
151
+ existingRelationFilter &&
152
+ typeof existingRelationFilter === "object" &&
153
+ !Array.isArray(existingRelationFilter) &&
154
+ existingRelationFilter.constructor === Object
155
+ ) {
156
+ (query as any)[model.canAccessIfCanReadOn as string] = {
157
+ ...(existingRelationFilter as JSONObject),
158
+ ...accessControlQuery,
159
+ };
160
+ } else {
161
+ (query as any)[model.canAccessIfCanReadOn as string] =
162
+ accessControlQuery;
163
+ }
128
164
  }
129
165
  }
130
166
  }
@@ -24,6 +24,7 @@ import Permission, {
24
24
  PermissionHelper,
25
25
  UserPermission,
26
26
  } from "../../../../Types/Permission";
27
+ import { combineWithPrivacyClause } from "../../../Utils/PrivacyFilterUtil";
27
28
  import CaptureSpan from "../../../Utils/Telemetry/CaptureSpan";
28
29
 
29
30
  /*
@@ -133,8 +134,17 @@ export default class OwnedScopePermission {
133
134
  ObjectID.getZeroObjectID().toString(),
134
135
  );
135
136
  } else {
137
+ /*
138
+ * AND-combine with any caller-supplied FK filter (e.g. the
139
+ * dashboard's `incidentId: <this incident>`) — overwriting it would
140
+ * widen the query to every owned parent.
141
+ */
136
142
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
- (query as any)[fkColumn] = QueryHelper.any(allowedIds);
143
+ (query as any)[fkColumn] = combineWithPrivacyClause(
144
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
145
+ (query as any)[fkColumn],
146
+ QueryHelper.any(allowedIds),
147
+ );
138
148
  }
139
149
  } else if (allowedIds.length === 0) {
140
150
  // Top-level operational resource: no accessible IDs -> match nothing.
@@ -143,9 +153,17 @@ export default class OwnedScopePermission {
143
153
  ObjectID.getZeroObjectID().toString(),
144
154
  );
145
155
  } else {
146
- // Top-level operational resource: filter on _id.
156
+ /*
157
+ * Top-level operational resource: filter on _id, AND-combined with any
158
+ * caller-supplied _id (get/update of a specific record) — overwriting
159
+ * it would resolve the request against a different owned record.
160
+ */
147
161
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
148
- (query as any)._id = QueryHelper.any(allowedIds);
162
+ (query as any)._id = combineWithPrivacyClause(
163
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
+ (query as any)._id,
165
+ QueryHelper.any(allowedIds),
166
+ );
149
167
  }
150
168
 
151
169
  return query;
@@ -154,6 +154,7 @@ const ownerTableRegistry: Map<string, OwnerTablePair> = new Map<
154
154
  {
155
155
  ownerUserService: ServiceOwnerUserService,
156
156
  ownerTeamService: ServiceOwnerTeamService,
157
+ // FK column on the Postgres ServiceOwnerUser/Team tables, not the ClickHouse telemetry column.
157
158
  fkColumn: "serviceId",
158
159
  canOwnTelemetry: true,
159
160
  modelService: ServiceService,
@@ -289,6 +289,47 @@ export default class QueryHelper {
289
289
  );
290
290
  }
291
291
 
292
+ /**
293
+ * Returns a filter that matches owner rows that are linked to *any* of the
294
+ * provided related entity ids through a many-to-many join table. The
295
+ * returned FindOperator is intended to be applied to the primary id column
296
+ * of the owner entity. An empty values array matches nothing (fail closed).
297
+ */
298
+ @CaptureSpan()
299
+ public static anyOfEntitiesInManyToMany(data: {
300
+ values: Array<string | ObjectID>;
301
+ joinTableName: string;
302
+ ownerColumnName: string;
303
+ relationColumnName: string;
304
+ }): FindWhereProperty<any> {
305
+ const values: Array<string> = data.values.map(
306
+ (value: string | ObjectID) => {
307
+ return value.toString();
308
+ },
309
+ );
310
+
311
+ if (!values || values.length === 0) {
312
+ return Raw(() => {
313
+ return `TRUE = FALSE`;
314
+ }, {});
315
+ }
316
+
317
+ const valuesRid: string = Text.generateRandomText(10);
318
+
319
+ const joinTable: string = data.joinTableName.replace(/"/g, '""');
320
+ const ownerCol: string = data.ownerColumnName.replace(/"/g, '""');
321
+ const relationCol: string = data.relationColumnName.replace(/"/g, '""');
322
+
323
+ return Raw(
324
+ (alias: string) => {
325
+ return `(${alias} IN (SELECT "${joinTable}"."${ownerCol}" FROM "${joinTable}" WHERE "${joinTable}"."${relationCol}" IN (:...${valuesRid})))`;
326
+ },
327
+ {
328
+ [valuesRid]: values,
329
+ },
330
+ );
331
+ }
332
+
292
333
  /**
293
334
  * Matches owner rows that have no rows in the join table — i.e. the
294
335
  * many-to-many collection is empty. Apply to the owner's primary id column.
@@ -5,6 +5,7 @@ import Permission, {
5
5
  UserTenantAccessPermission,
6
6
  } from "../../../Types/Permission";
7
7
  import Text from "../../../Types/Text";
8
+ import { combineWithPrivacyClause } from "../PrivacyFilterUtil";
8
9
  import { Raw } from "typeorm";
9
10
 
10
11
  /*
@@ -124,7 +125,10 @@ export function applyAlertSelfPrivacyFilter<T>(
124
125
  return { isPrivate: rawClause } as unknown as T;
125
126
  }
126
127
 
127
- (query as any).isPrivate = rawClause;
128
+ (query as any).isPrivate = combineWithPrivacyClause(
129
+ (query as any).isPrivate,
130
+ rawClause,
131
+ );
128
132
  return query;
129
133
  }
130
134
 
@@ -143,6 +147,9 @@ export function applyAlertRelatedRecordPrivacyFilter<T>(
143
147
  return { alertId: rawClause } as unknown as T;
144
148
  }
145
149
 
146
- (query as any).alertId = rawClause;
150
+ (query as any).alertId = combineWithPrivacyClause(
151
+ (query as any).alertId,
152
+ rawClause,
153
+ );
147
154
  return query;
148
155
  }
@@ -5,6 +5,7 @@ import Permission, {
5
5
  UserTenantAccessPermission,
6
6
  } from "../../../Types/Permission";
7
7
  import Text from "../../../Types/Text";
8
+ import { combineWithPrivacyClause } from "../PrivacyFilterUtil";
8
9
  import { Raw } from "typeorm";
9
10
 
10
11
  export function shouldBypassAlertEpisodePrivacy(
@@ -107,7 +108,10 @@ export function applyAlertEpisodeSelfPrivacyFilter<T>(
107
108
  return { isPrivate: rawClause } as unknown as T;
108
109
  }
109
110
 
110
- (query as any).isPrivate = rawClause;
111
+ (query as any).isPrivate = combineWithPrivacyClause(
112
+ (query as any).isPrivate,
113
+ rawClause,
114
+ );
111
115
  return query;
112
116
  }
113
117
 
@@ -126,6 +130,9 @@ export function applyAlertEpisodeRelatedRecordPrivacyFilter<T>(
126
130
  return { alertEpisodeId: rawClause } as unknown as T;
127
131
  }
128
132
 
129
- (query as any).alertEpisodeId = rawClause;
133
+ (query as any).alertEpisodeId = combineWithPrivacyClause(
134
+ (query as any).alertEpisodeId,
135
+ rawClause,
136
+ );
130
137
  return query;
131
138
  }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Builder for the trailing ` SETTINGS ...` clause appended to ClickHouse
3
+ * read queries.
4
+ *
5
+ * Every read built through this helper carries a per-query memory ceiling
6
+ * (max_memory_usage) and spills oversized GROUP BY / ORDER BY states to
7
+ * disk (max_bytes_before_external_group_by / _sort) instead of letting a
8
+ * single dashboard query take down the server — historically no layer
9
+ * bounded per-query memory at all. Execution-time caps and overflow
10
+ * behavior stay per-call-site: each caller keeps the value it shipped
11
+ * with.
12
+ *
13
+ * All values emitted here MUST be trusted literals (numbers / hardcoded
14
+ * strings) — the clause is appended verbatim to SQL, never parameterized.
15
+ */
16
+
17
+ export type TimeoutOverflowMode = "break" | "throw";
18
+
19
+ // 3 GiB.
20
+ export const DEFAULT_MAX_MEMORY_USAGE_IN_BYTES: number = 3221225472;
21
+
22
+ // 1.5 GiB — half the memory ceiling so spill kicks in before the cap.
23
+ export const DEFAULT_MAX_BYTES_BEFORE_EXTERNAL_GROUP_BY_IN_BYTES: number = 1610612736;
24
+
25
+ // 1.5 GiB.
26
+ export const DEFAULT_MAX_BYTES_BEFORE_EXTERNAL_SORT_IN_BYTES: number = 1610612736;
27
+
28
+ export interface QuerySettingsOptions {
29
+ /**
30
+ * Wall-clock cap in seconds (max_execution_time). Omitted from the
31
+ * clause entirely when undefined, leaving the server default in force.
32
+ */
33
+ maxExecutionTimeInSeconds?: number | undefined;
34
+ /**
35
+ * What ClickHouse does when max_execution_time fires: 'break' returns
36
+ * partial results, 'throw' fails the query (the server default).
37
+ * Omitted from the clause when undefined.
38
+ */
39
+ timeoutOverflowMode?: TimeoutOverflowMode | undefined;
40
+ maxMemoryUsageInBytes?: number | undefined;
41
+ maxBytesBeforeExternalGroupByInBytes?: number | undefined;
42
+ maxBytesBeforeExternalSortInBytes?: number | undefined;
43
+ /**
44
+ * Site-specific passthrough settings (e.g. optimize_use_projections,
45
+ * optimize_aggregation_in_order, max_threads). Keys and values are
46
+ * emitted verbatim — string values are single-quoted.
47
+ */
48
+ additionalSettings?: Record<string, number | string> | undefined;
49
+ }
50
+
51
+ export function getQuerySettings(options?: QuerySettingsOptions): string {
52
+ const parts: Array<string> = [];
53
+
54
+ if (options?.maxExecutionTimeInSeconds !== undefined) {
55
+ parts.push(`max_execution_time = ${options.maxExecutionTimeInSeconds}`);
56
+ }
57
+
58
+ if (options?.timeoutOverflowMode !== undefined) {
59
+ parts.push(`timeout_overflow_mode = '${options.timeoutOverflowMode}'`);
60
+ }
61
+
62
+ parts.push(
63
+ `max_memory_usage = ${
64
+ options?.maxMemoryUsageInBytes ?? DEFAULT_MAX_MEMORY_USAGE_IN_BYTES
65
+ }`,
66
+ );
67
+ parts.push(
68
+ `max_bytes_before_external_group_by = ${
69
+ options?.maxBytesBeforeExternalGroupByInBytes ??
70
+ DEFAULT_MAX_BYTES_BEFORE_EXTERNAL_GROUP_BY_IN_BYTES
71
+ }`,
72
+ );
73
+ parts.push(
74
+ `max_bytes_before_external_sort = ${
75
+ options?.maxBytesBeforeExternalSortInBytes ??
76
+ DEFAULT_MAX_BYTES_BEFORE_EXTERNAL_SORT_IN_BYTES
77
+ }`,
78
+ );
79
+
80
+ if (options?.additionalSettings) {
81
+ for (const [key, value] of Object.entries(options.additionalSettings)) {
82
+ parts.push(
83
+ typeof value === "string" ? `${key} = '${value}'` : `${key} = ${value}`,
84
+ );
85
+ }
86
+ }
87
+
88
+ return ` SETTINGS ${parts.join(", ")}`;
89
+ }
90
+
91
+ export default class QuerySettingsHelper {
92
+ public static getQuerySettings(options?: QuerySettingsOptions): string {
93
+ return getQuerySettings(options);
94
+ }
95
+ }
@@ -46,6 +46,20 @@ import AggregateBy, {
46
46
  import CaptureSpan from "../Telemetry/CaptureSpan";
47
47
  import { getPercentileLevel } from "../../../Types/BaseDatabase/AggregationType";
48
48
 
49
+ /**
50
+ * Value carried under the synthetic query key "entityScope": the
51
+ * entity-membership read with an attribute OR-fallback. Rows stamped with
52
+ * `entityKeys` are matched via the bloom-indexed membership column; rows
53
+ * ingested before the column existed (empty array, no backfill by decision)
54
+ * still match via the resource attribute. See
55
+ * Internal/Docs/OpenTelemetryEntities.md (phase-4 read-switch).
56
+ */
57
+ export interface EntityScopeQueryValue {
58
+ entityKeys: Array<string>;
59
+ attributeKey: string;
60
+ attributeValue: string;
61
+ }
62
+
49
63
  export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
50
64
  public model!: TBaseModel;
51
65
  public modelType!: { new (): TBaseModel };
@@ -267,6 +281,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
267
281
  value = `CAST(${this.escapeStringLiteral(value.toString())} AS Int128)`;
268
282
  }
269
283
 
284
+ if (column.type === TableColumnType.UInt64) {
285
+ value = `CAST(${this.escapeStringLiteral(value.toString())} AS UInt64)`;
286
+ }
287
+
270
288
  if (column.type === TableColumnType.BigNumber) {
271
289
  if (typeof value === "string") {
272
290
  value = parseInt(value);
@@ -411,6 +429,88 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
411
429
  continue;
412
430
  }
413
431
 
432
+ /*
433
+ * "entityScope" is a synthetic query key (not a column):
434
+ * { entityKeys, attributeKey, attributeValue } compiles to
435
+ * (hasAny(entityKeys, [...]) OR attributes['k'] = 'v')
436
+ * so new rows ride the bloom-indexed `entityKeys` membership column
437
+ * while pre-column rows (empty array — no backfill by decision) still
438
+ * match via the resource attribute. Both sides are parameter-bound:
439
+ * the array exactly like the Includes/hasAny path above, the
440
+ * attribute lookup exactly like the map-equality fast path below.
441
+ * Ignored (no predicate, no throw) for models without an
442
+ * `entityKeys` Array(String) column.
443
+ */
444
+ if (key === "entityScope") {
445
+ const scope: EntityScopeQueryValue | undefined = value as
446
+ | EntityScopeQueryValue
447
+ | undefined;
448
+
449
+ const entityKeysColumn: AnalyticsTableColumn | null =
450
+ this.model.getTableColumn("entityKeys");
451
+
452
+ if (
453
+ !scope ||
454
+ !entityKeysColumn ||
455
+ entityKeysColumn.type !== TableColumnType.ArrayText
456
+ ) {
457
+ continue;
458
+ }
459
+
460
+ const scopeEntityKeys: Array<string> = scope.entityKeys || [];
461
+
462
+ const attributesColumn: AnalyticsTableColumn | null =
463
+ this.model.getTableColumn("attributes");
464
+ const hasAttributeFallback: boolean =
465
+ Boolean(scope.attributeKey) &&
466
+ Boolean(attributesColumn) &&
467
+ attributesColumn!.type === TableColumnType.MapStringString;
468
+
469
+ if (scopeEntityKeys.length === 0 && !hasAttributeFallback) {
470
+ continue;
471
+ }
472
+
473
+ if (first) {
474
+ first = false;
475
+ } else {
476
+ whereStatement.append(SQL` `);
477
+ }
478
+
479
+ if (scopeEntityKeys.length > 0 && hasAttributeFallback) {
480
+ whereStatement.append(
481
+ SQL`AND (hasAny(${entityKeysColumn.key}, ${{
482
+ value: scopeEntityKeys,
483
+ type: TableColumnType.ArrayText,
484
+ }}) OR ${attributesColumn!.key}[${{
485
+ value: scope.attributeKey,
486
+ type: TableColumnType.Text,
487
+ }}] = ${{
488
+ value: String(scope.attributeValue ?? ""),
489
+ type: TableColumnType.Text,
490
+ }})`,
491
+ );
492
+ } else if (scopeEntityKeys.length > 0) {
493
+ whereStatement.append(
494
+ SQL`AND hasAny(${entityKeysColumn.key}, ${{
495
+ value: scopeEntityKeys,
496
+ type: TableColumnType.ArrayText,
497
+ }})`,
498
+ );
499
+ } else {
500
+ whereStatement.append(
501
+ SQL`AND ${attributesColumn!.key}[${{
502
+ value: scope.attributeKey,
503
+ type: TableColumnType.Text,
504
+ }}] = ${{
505
+ value: String(scope.attributeValue ?? ""),
506
+ type: TableColumnType.Text,
507
+ }}`,
508
+ );
509
+ }
510
+
511
+ continue;
512
+ }
513
+
414
514
  const tableColumn: AnalyticsTableColumn | null =
415
515
  this.model.getTableColumn(key);
416
516
 
@@ -490,6 +590,29 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
490
590
  type: tableColumn.type,
491
591
  }}`,
492
592
  );
593
+ } else if (
594
+ value instanceof Includes &&
595
+ tableColumn.type === TableColumnType.ArrayText
596
+ ) {
597
+ /*
598
+ * Array(String) membership (e.g. `entityKeys` / `attributeKeys`):
599
+ * `hasAny(col, [v1, v2])` — true when the row's array contains any
600
+ * of the values. Repurposes Includes for array columns, where the
601
+ * scalar `col IN (...)` form is invalid. The bloom_filter skip index
602
+ * on these columns prunes granules for this predicate. An empty
603
+ * Includes drops to no predicate (mirrors the map-Includes behavior),
604
+ * never `hasAny(col, [])`.
605
+ */
606
+ const arrayIncludeValues: Array<string> =
607
+ ((value as Includes).values as Array<string>) || [];
608
+ if (arrayIncludeValues.length > 0) {
609
+ whereStatement.append(
610
+ SQL`AND hasAny(${key}, ${{
611
+ value: arrayIncludeValues,
612
+ type: TableColumnType.ArrayText,
613
+ }})`,
614
+ );
615
+ }
493
616
  } else if (value instanceof Includes) {
494
617
  whereStatement.append(
495
618
  SQL`AND ${key} IN ${{
@@ -1046,6 +1169,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
1046
1169
  Int32: TableColumnType.Number,
1047
1170
  Int64: TableColumnType.BigNumber,
1048
1171
  Int128: TableColumnType.LongNumber,
1172
+ UInt64: TableColumnType.UInt64,
1049
1173
  Float32: TableColumnType.Decimal,
1050
1174
  Float64: TableColumnType.Decimal,
1051
1175
  DateTime: TableColumnType.Date,
@@ -1097,6 +1221,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
1097
1221
  [TableColumnType.BigNumber]: SQL`Int64`,
1098
1222
  [TableColumnType.MapStringString]: SQL`Map(String, String)`,
1099
1223
  [TableColumnType.UInt8]: SQL`UInt8`,
1224
+ [TableColumnType.UInt64]: SQL`UInt64`,
1100
1225
  }[column.type];
1101
1226
 
1102
1227
  if (!statement) {
@@ -1296,6 +1421,14 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
1296
1421
  statement.append(`\nTTL ${this.model.ttlExpression}`);
1297
1422
  }
1298
1423
 
1424
+ /*
1425
+ * Append table-level SETTINGS if specified (e.g. ttl_only_drop_parts = 1
1426
+ * so TTL drops whole time-partitions instead of rewriting parts).
1427
+ */
1428
+ if (this.model.tableSettings) {
1429
+ statement.append(`\nSETTINGS ${this.model.tableSettings}`);
1430
+ }
1431
+
1299
1432
  /* eslint-enable prettier/prettier */
1300
1433
 
1301
1434
  logger.debug(`${this.model.tableName} Table Create Statement`);
@@ -5,6 +5,7 @@ import Permission, {
5
5
  UserTenantAccessPermission,
6
6
  } from "../../../Types/Permission";
7
7
  import Text from "../../../Types/Text";
8
+ import { combineWithPrivacyClause } from "../PrivacyFilterUtil";
8
9
  import { Raw } from "typeorm";
9
10
 
10
11
  /*
@@ -124,7 +125,10 @@ export function applyIncidentSelfPrivacyFilter<T>(
124
125
  return { isPrivate: rawClause } as unknown as T;
125
126
  }
126
127
 
127
- (query as any).isPrivate = rawClause;
128
+ (query as any).isPrivate = combineWithPrivacyClause(
129
+ (query as any).isPrivate,
130
+ rawClause,
131
+ );
128
132
  return query;
129
133
  }
130
134
 
@@ -143,6 +147,9 @@ export function applyIncidentRelatedRecordPrivacyFilter<T>(
143
147
  return { incidentId: rawClause } as unknown as T;
144
148
  }
145
149
 
146
- (query as any).incidentId = rawClause;
150
+ (query as any).incidentId = combineWithPrivacyClause(
151
+ (query as any).incidentId,
152
+ rawClause,
153
+ );
147
154
  return query;
148
155
  }
@@ -5,6 +5,7 @@ import Permission, {
5
5
  UserTenantAccessPermission,
6
6
  } from "../../../Types/Permission";
7
7
  import Text from "../../../Types/Text";
8
+ import { combineWithPrivacyClause } from "../PrivacyFilterUtil";
8
9
  import { Raw } from "typeorm";
9
10
 
10
11
  /*
@@ -113,7 +114,10 @@ export function applyIncidentEpisodeSelfPrivacyFilter<T>(
113
114
  return { isPrivate: rawClause } as unknown as T;
114
115
  }
115
116
 
116
- (query as any).isPrivate = rawClause;
117
+ (query as any).isPrivate = combineWithPrivacyClause(
118
+ (query as any).isPrivate,
119
+ rawClause,
120
+ );
117
121
  return query;
118
122
  }
119
123
 
@@ -132,6 +136,9 @@ export function applyIncidentEpisodeRelatedRecordPrivacyFilter<T>(
132
136
  return { incidentEpisodeId: rawClause } as unknown as T;
133
137
  }
134
138
 
135
- (query as any).incidentEpisodeId = rawClause;
139
+ (query as any).incidentEpisodeId = combineWithPrivacyClause(
140
+ (query as any).incidentEpisodeId,
141
+ rawClause,
142
+ );
136
143
  return query;
137
144
  }