@oneuptime/common 10.8.2 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts +16 -18
- package/Models/AnalyticsModels/AuditLog.ts +3 -1
- package/Models/AnalyticsModels/ExceptionInstance.ts +200 -82
- package/Models/AnalyticsModels/Index.ts +7 -2
- package/Models/AnalyticsModels/Log.ts +197 -81
- package/Models/AnalyticsModels/Metric.ts +199 -86
- package/Models/AnalyticsModels/MetricBaselineHourly.ts +44 -25
- package/Models/AnalyticsModels/MetricItemAggMV1m.ts +23 -20
- package/Models/AnalyticsModels/{MetricItemAggMV1mByHost.ts → MetricItemAggMV1mByHostV2.ts} +58 -47
- package/Models/AnalyticsModels/MonitorLog.ts +5 -1
- package/Models/AnalyticsModels/Profile.ts +206 -85
- package/Models/AnalyticsModels/ProfileSample.ts +196 -83
- package/Models/AnalyticsModels/Span.ts +218 -85
- package/Models/DatabaseModels/Index.ts +4 -0
- package/Models/DatabaseModels/Service.ts +29 -0
- package/Models/DatabaseModels/TelemetryEntity.ts +393 -0
- package/Models/DatabaseModels/TelemetryEntityRelationship.ts +294 -0
- package/Models/DatabaseModels/TelemetryException.ts +10 -10
- package/Models/DatabaseModels/TelemetryUsageBilling.ts +5 -5
- package/Server/API/AIAgentDataAPI.ts +13 -12
- package/Server/API/DashboardAPI.ts +2 -2
- package/Server/API/TelemetryAPI.ts +656 -141
- package/Server/API/TelemetryExceptionAPI.ts +2 -2
- package/Server/Infrastructure/ClickhouseConfig.ts +12 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.ts +48 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.ts +70 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.ts +57 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.ts +207 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.ts +24 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
- package/Server/Infrastructure/Queue.ts +36 -3
- package/Server/Middleware/TelemetryIngest.ts +27 -22
- package/Server/Services/AlertService.ts +9 -9
- package/Server/Services/AnalyticsDatabaseService.ts +204 -35
- package/Server/Services/ExceptionAggregationService.ts +41 -18
- package/Server/Services/HostService.ts +2 -1
- package/Server/Services/IncidentService.ts +19 -19
- package/Server/Services/Index.ts +6 -2
- package/Server/Services/LogAggregationService.ts +116 -43
- package/Server/Services/MetricAggregationService.ts +29 -14
- package/Server/Services/MetricBaselineService.ts +34 -34
- package/Server/Services/MetricItemAggMV1mByHostV2Service.ts +30 -0
- package/Server/Services/MetricService.ts +119 -31
- package/Server/Services/OpenTelemetryIngestService.ts +186 -50
- package/Server/Services/ProfileAggregationService.ts +904 -126
- package/Server/Services/ServiceService.ts +6 -0
- package/Server/Services/SpanService.ts +274 -14
- package/Server/Services/TelemetryEntityRelationshipService.ts +71 -0
- package/Server/Services/TelemetryEntityService.ts +246 -0
- package/Server/Services/TelemetryExceptionService.ts +27 -23
- package/Server/Services/TelemetryUsageBillingService.ts +38 -31
- package/Server/Services/TraceAggregationService.ts +875 -43
- package/Server/Types/AnalyticsDatabase/ModelPermission.ts +43 -2
- package/Server/Types/Database/Permissions/AccessControlPermission.ts +47 -2
- package/Server/Types/Database/Permissions/BasePermission.ts +37 -1
- package/Server/Types/Database/Permissions/OwnedScopePermission.ts +21 -3
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +1 -0
- package/Server/Types/Database/QueryHelper.ts +41 -0
- package/Server/Utils/Alert/AlertPrivacyFilter.ts +9 -2
- package/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.ts +9 -2
- package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +95 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +133 -0
- package/Server/Utils/Incident/IncidentPrivacyFilter.ts +9 -2
- package/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.ts +9 -2
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +1 -1
- package/Server/Utils/Monitor/MonitorLogUtil.ts +1 -2
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +3 -4
- package/Server/Utils/PrivacyFilterUtil.ts +72 -0
- package/Server/Utils/Profile/PprofEncoder.ts +135 -11
- package/Server/Utils/Telemetry/EntityRegistry.ts +316 -0
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +5 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +783 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +79 -4
- package/Tests/Server/Services/LogAggregationService.test.ts +7 -2
- package/Tests/Server/Services/ProfileAggregationService.test.ts +280 -0
- package/Tests/Server/Services/ProfileBreakdown.test.ts +161 -0
- package/Tests/Server/Services/ProfileFunctionFocus.test.ts +349 -0
- package/Tests/Server/Services/TelemetryAttributeService.test.ts +1 -1
- package/Tests/Server/Services/TraceAggregationService.test.ts +403 -0
- package/Tests/Server/Types/AnalyticsDatabase/ModelPermissionOwnedScope.test.ts +114 -0
- package/Tests/Server/Types/Database/Permissions/AccessControlPermission.test.ts +189 -0
- package/Tests/Server/Types/Database/Permissions/BasePermission.test.ts +118 -0
- package/Tests/Server/Types/Database/Permissions/OwnedScopePermission.test.ts +159 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +275 -8
- package/Tests/Server/Utils/PrivacyFilterUtil.test.ts +177 -0
- package/Tests/Server/Utils/Profile/PprofEncoder.test.ts +276 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +761 -0
- package/Tests/Types/Monitor/MonitorStepEntityScope.test.ts +275 -0
- package/Tests/Types/Text.test.ts +52 -0
- package/Tests/Utils/Telemetry/EntityKey.test.ts +150 -0
- package/Tests/Utils/Telemetry/EntityKeySqlParity.test.ts +40 -0
- package/Tests/Utils/Telemetry/EntityRelationship.test.ts +150 -0
- package/Tests/Utils/UUID.test.ts +47 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +14 -9
- package/Types/AnalyticsDatabase/TableColumnType.ts +1 -0
- package/Types/Dashboard/DashboardComponentType.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.ts +37 -0
- package/Types/Dashboard/DashboardTemplates.ts +4 -5
- package/Types/Log/LogQueryParser.ts +2 -2
- package/Types/Log/LogQueryToFilter.ts +2 -2
- package/Types/Monitor/MonitorStepExceptionMonitor.ts +19 -1
- package/Types/Monitor/MonitorStepLogMonitor.ts +20 -1
- package/Types/Monitor/MonitorStepMetricMonitor.ts +27 -0
- package/Types/Monitor/MonitorStepProfileMonitor.ts +19 -1
- package/Types/Monitor/MonitorStepTraceMonitor.ts +18 -1
- package/Types/Monitor/MonitorType.ts +8 -1
- package/Types/ObjectID.ts +10 -0
- package/Types/Telemetry/EntityRelationshipType.ts +31 -0
- package/Types/Telemetry/EntityType.ts +33 -0
- package/Types/Telemetry/TelemetrySavedViewState.ts +2 -0
- package/Types/Text.ts +34 -0
- package/Types/Trace/TraceAggregationType.ts +1 -0
- package/Types/Trace/TraceRecordingRuleDefinition.ts +74 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +12 -9
- package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +10 -9
- package/UI/Components/LogsViewer/components/LogSearchBar.tsx +1 -1
- package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +2 -2
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +4 -4
- package/UI/Components/LogsViewer/components/LogsTable.tsx +5 -3
- package/UI/Components/Navbar/NavBarMenuModal.tsx +81 -44
- package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +33 -10
- package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +18 -3
- package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +91 -68
- package/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.tsx +9 -2
- package/UI/Utils/LogExport.ts +2 -2
- package/UI/Utils/TelemetryService.ts +20 -20
- package/Utils/Dashboard/Components/DashboardTraceChartComponent.ts +134 -0
- package/Utils/Dashboard/Components/Index.ts +7 -0
- package/Utils/Telemetry/EntityKey.ts +151 -0
- package/Utils/Telemetry/EntityRelationship.ts +113 -0
- package/Utils/Traces/CriticalPath.ts +7 -7
- package/Utils/UUID.ts +57 -0
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js +14 -13
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/AuditLog.js +2 -1
- package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +125 -22
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Index.js +7 -2
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +123 -22
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js +125 -27
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js +38 -21
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +17 -16
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/{MetricItemAggMV1mByHost.js → MetricItemAggMV1mByHostV2.js} +54 -42
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/MonitorLog.js +4 -1
- package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Profile.js +132 -26
- package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ProfileSample.js +121 -23
- package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js +144 -26
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +4 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Service.js +30 -0
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryEntity.js +419 -0
- package/build/dist/Models/DatabaseModels/TelemetryEntity.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +317 -0
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js +12 -12
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js +7 -7
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +14 -13
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +2 -2
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +425 -129
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryExceptionAPI.js +2 -2
- package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js +12 -0
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.js +29 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.js +38 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.js +33 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.js +78 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +14 -3
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +16 -18
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +9 -9
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +115 -40
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/ExceptionAggregationService.js +38 -18
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +2 -1
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +19 -19
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +6 -2
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +100 -42
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +27 -14
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricBaselineService.js +28 -28
- package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
- package/build/dist/Server/Services/MetricItemAggMV1mByHostV2Service.js +28 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByHostV2Service.js.map +1 -0
- package/build/dist/Server/Services/MetricService.js +116 -31
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +103 -36
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/ProfileAggregationService.js +613 -105
- package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +9 -5
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/SpanService.js +217 -15
- package/build/dist/Server/Services/SpanService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +72 -0
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -0
- package/build/dist/Server/Services/TelemetryEntityService.js +201 -0
- package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -0
- package/build/dist/Server/Services/TelemetryExceptionService.js +18 -18
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +27 -21
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +568 -43
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +38 -2
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js +36 -2
- package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js +25 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js +17 -3
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +1 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +31 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js +3 -2
- package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js +3 -2
- package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js +46 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js.map +1 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +97 -3
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js +3 -2
- package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js +3 -2
- package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js +1 -2
- package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +3 -4
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/PrivacyFilterUtil.js +47 -0
- package/build/dist/Server/Utils/PrivacyFilterUtil.js.map +1 -0
- package/build/dist/Server/Utils/Profile/PprofEncoder.js +132 -4
- package/build/dist/Server/Utils/Profile/PprofEncoder.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +228 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +5 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +569 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +14 -9
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/TableColumnType.js +1 -0
- package/build/dist/Types/AnalyticsDatabase/TableColumnType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +4 -5
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/Log/LogQueryParser.js +2 -2
- package/build/dist/Types/Log/LogQueryParser.js.map +1 -1
- package/build/dist/Types/Log/LogQueryToFilter.js +1 -1
- package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepExceptionMonitor.js +9 -1
- package/build/dist/Types/Monitor/MonitorStepExceptionMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepLogMonitor.js +9 -1
- package/build/dist/Types/Monitor/MonitorStepLogMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js +13 -0
- package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js +9 -1
- package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepTraceMonitor.js +9 -1
- package/build/dist/Types/Monitor/MonitorStepTraceMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +8 -1
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/ObjectID.js +9 -0
- package/build/dist/Types/ObjectID.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityRelationshipType.js +32 -0
- package/build/dist/Types/Telemetry/EntityRelationshipType.js.map +1 -0
- package/build/dist/Types/Telemetry/EntityType.js +34 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -0
- package/build/dist/Types/Text.js +32 -1
- package/build/dist/Types/Text.js.map +1 -1
- package/build/dist/Types/Trace/TraceAggregationType.js +1 -0
- package/build/dist/Types/Trace/TraceAggregationType.js.map +1 -1
- package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js +50 -1
- package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +10 -9
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +8 -8
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +2 -2
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +4 -4
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +3 -3
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +43 -30
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +6 -2
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +14 -3
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +18 -10
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js +4 -2
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js.map +1 -1
- package/build/dist/UI/Utils/LogExport.js +2 -2
- package/build/dist/UI/Utils/LogExport.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +16 -16
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardTraceChartComponent.js +110 -0
- package/build/dist/Utils/Dashboard/Components/DashboardTraceChartComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityKey.js +115 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityRelationship.js +71 -0
- package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -0
- package/build/dist/Utils/Traces/CriticalPath.js +5 -5
- package/build/dist/Utils/Traces/CriticalPath.js.map +1 -1
- package/build/dist/Utils/UUID.js +50 -0
- package/build/dist/Utils/UUID.js.map +1 -1
- package/package.json +2 -1
- package/tsconfig.json +10 -1
- package/Server/Services/MetricItemAggMV1mByHostService.ts +0 -30
- package/Types/Profile/ProfileMetricType.ts +0 -16
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHost.js.map +0 -1
- package/build/dist/Server/Services/MetricItemAggMV1mByHostService.js +0 -28
- package/build/dist/Server/Services/MetricItemAggMV1mByHostService.js.map +0 -1
- package/build/dist/Tests/MockType.js +0 -5
- package/build/dist/Tests/MockType.js.map +0 -1
- package/build/dist/Tests/Models/AnalyticsModels/Log.test.js +0 -12
- package/build/dist/Tests/Models/AnalyticsModels/Log.test.js.map +0 -1
- package/build/dist/Tests/Models/File.test.js +0 -10
- package/build/dist/Tests/Models/File.test.js.map +0 -1
- package/build/dist/Tests/Server/API/BaseAPI.test.js +0 -590
- package/build/dist/Tests/Server/API/BaseAPI.test.js.map +0 -1
- package/build/dist/Tests/Server/API/Helpers.js +0 -27
- package/build/dist/Tests/Server/API/Helpers.js.map +0 -1
- package/build/dist/Tests/Server/API/ProbeAPI.test.js +0 -84
- package/build/dist/Tests/Server/API/ProbeAPI.test.js.map +0 -1
- package/build/dist/Tests/Server/API/ProjectAPI.test.js +0 -170
- package/build/dist/Tests/Server/API/ProjectAPI.test.js.map +0 -1
- package/build/dist/Tests/Server/API/UserSmsApi.test.js +0 -177
- package/build/dist/Tests/Server/API/UserSmsApi.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/BearerTokenAuthorization.test.js +0 -63
- package/build/dist/Tests/Server/Middleware/BearerTokenAuthorization.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/ClusterKeyAuthorization.test.js +0 -58
- package/build/dist/Tests/Server/Middleware/ClusterKeyAuthorization.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/NotificationMiddleware.test.js +0 -101
- package/build/dist/Tests/Server/Middleware/NotificationMiddleware.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js +0 -160
- package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +0 -410
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js +0 -165
- package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js +0 -193
- package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js +0 -435
- package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js +0 -320
- package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js +0 -266
- package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/BillingService.test.js +0 -910
- package/build/dist/Tests/Server/Services/BillingService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/LogAggregationService.test.js +0 -75
- package/build/dist/Tests/Server/Services/LogAggregationService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/ProbeService.test.js +0 -127
- package/build/dist/Tests/Server/Services/ProbeService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js +0 -114
- package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/TeamMemberService.test.js +0 -106
- package/build/dist/Tests/Server/Services/TeamMemberService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js +0 -50
- package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Init.js +0 -4
- package/build/dist/Tests/Server/TestingUtils/Init.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Postgres/TestDataSourceOptions.js +0 -9
- package/build/dist/Tests/Server/TestingUtils/Postgres/TestDataSourceOptions.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Redis/TestRedisOptions.js +0 -16
- package/build/dist/Tests/Server/TestingUtils/Redis/TestRedisOptions.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/BillingServiceHelper.js +0 -125
- package/build/dist/Tests/Server/TestingUtils/Services/BillingServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/ProjectServiceHelper.js +0 -39
- package/build/dist/Tests/Server/TestingUtils/Services/ProjectServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceServiceHelper.js +0 -20
- package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceStateServiceHelper.js +0 -31
- package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceStateServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/TeamMemberServiceHelper.js +0 -14
- package/build/dist/Tests/Server/TestingUtils/Services/TeamMemberServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/TeamServiceHelper.js +0 -21
- package/build/dist/Tests/Server/TestingUtils/Services/TeamServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/Types.js +0 -2
- package/build/dist/Tests/Server/TestingUtils/Services/Types.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/UserServiceHelper.js +0 -37
- package/build/dist/Tests/Server/TestingUtils/Services/UserServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/__mocks__/Stripe.mock.js +0 -13
- package/build/dist/Tests/Server/TestingUtils/__mocks__/Stripe.mock.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/__mocks__/TestDatabase.mock.js +0 -22
- package/build/dist/Tests/Server/TestingUtils/__mocks__/TestDatabase.mock.js.map +0 -1
- package/build/dist/Tests/Server/Types/Domain.test.js +0 -78
- package/build/dist/Tests/Server/Types/Domain.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/Statement.test.js +0 -94
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/Statement.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js +0 -459
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Cookie.test.js +0 -83
- package/build/dist/Tests/Server/Utils/Cookie.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/CronTab.test.js +0 -29
- package/build/dist/Tests/Server/Utils/CronTab.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/JsonToCsv.test.js +0 -114
- package/build/dist/Tests/Server/Utils/JsonToCsv.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +0 -606
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.js +0 -255
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js +0 -142
- package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/StatusPageResource.test.js +0 -122
- package/build/dist/Tests/Server/Utils/StatusPageResource.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js +0 -0
- package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/VM/VMAPI.test.js +0 -205
- package/build/dist/Tests/Server/Utils/VM/VMAPI.test.js.map +0 -1
- package/build/dist/Tests/Spy.js +0 -4
- package/build/dist/Tests/Spy.js.map +0 -1
- package/build/dist/Tests/Types/API/ErrorResponse.test.js +0 -13
- package/build/dist/Tests/Types/API/ErrorResponse.test.js.map +0 -1
- package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js +0 -33
- package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js.map +0 -1
- package/build/dist/Tests/Types/API/HTTPMethod.test.js +0 -16
- package/build/dist/Tests/Types/API/HTTPMethod.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Headers.test.js +0 -14
- package/build/dist/Tests/Types/API/Headers.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Hostname.test.js +0 -22
- package/build/dist/Tests/Types/API/Hostname.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Protocal.test.js +0 -19
- package/build/dist/Tests/Types/API/Protocal.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Response.test.js +0 -14
- package/build/dist/Tests/Types/API/Response.test.js.map +0 -1
- package/build/dist/Tests/Types/API/ResponseType.test.js +0 -13
- package/build/dist/Tests/Types/API/ResponseType.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Route.test.js +0 -30
- package/build/dist/Tests/Types/API/Route.test.js.map +0 -1
- package/build/dist/Tests/Types/API/StatusCode.test.js +0 -26
- package/build/dist/Tests/Types/API/StatusCode.test.js.map +0 -1
- package/build/dist/Tests/Types/API/URL.test.js +0 -33
- package/build/dist/Tests/Types/API/URL.test.js.map +0 -1
- package/build/dist/Tests/Types/Alerts/AlertEventType.test.js +0 -34
- package/build/dist/Tests/Types/Alerts/AlertEventType.test.js.map +0 -1
- package/build/dist/Tests/Types/Alerts/AlertType.test.js +0 -19
- package/build/dist/Tests/Types/Alerts/AlertType.test.js.map +0 -1
- package/build/dist/Tests/Types/AppEnvironment.test.js +0 -13
- package/build/dist/Tests/Types/AppEnvironment.test.js.map +0 -1
- package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js +0 -13
- package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js.map +0 -1
- package/build/dist/Tests/Types/ArrayUtil.test.js +0 -71
- package/build/dist/Tests/Types/ArrayUtil.test.js.map +0 -1
- package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js +0 -181
- package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js.map +0 -1
- package/build/dist/Tests/Types/BrandColors.test.js +0 -124
- package/build/dist/Tests/Types/BrandColors.test.js.map +0 -1
- package/build/dist/Tests/Types/Char.test.js +0 -82
- package/build/dist/Tests/Types/Char.test.js.map +0 -1
- package/build/dist/Tests/Types/Code/CodeType.test.js +0 -13
- package/build/dist/Tests/Types/Code/CodeType.test.js.map +0 -1
- package/build/dist/Tests/Types/Color.test.js +0 -44
- package/build/dist/Tests/Types/Color.test.js.map +0 -1
- package/build/dist/Tests/Types/Company/CompanySize.test.js +0 -20
- package/build/dist/Tests/Types/Company/CompanySize.test.js.map +0 -1
- package/build/dist/Tests/Types/Company/JobRole.test.js +0 -22
- package/build/dist/Tests/Types/Company/JobRole.test.js.map +0 -1
- package/build/dist/Tests/Types/Countries.test.js +0 -249
- package/build/dist/Tests/Types/Countries.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/ColumnLength.test.js +0 -43
- package/build/dist/Tests/Types/Database/ColumnLength.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/ColumnType.test.js +0 -79
- package/build/dist/Tests/Types/Database/ColumnType.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/Columns.test.js +0 -20
- package/build/dist/Tests/Types/Database/Columns.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/CompareBase.test.js +0 -37
- package/build/dist/Tests/Types/Database/CompareBase.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/Date.test.js +0 -62
- package/build/dist/Tests/Types/Database/Date.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/EqualTo.test.js +0 -65
- package/build/dist/Tests/Types/Database/EqualTo.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/EqualToOrNull.test.js +0 -62
- package/build/dist/Tests/Types/Database/EqualToOrNull.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/InBetween.test.js +0 -72
- package/build/dist/Tests/Types/Database/InBetween.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/LimitMax.test.js +0 -18
- package/build/dist/Tests/Types/Database/LimitMax.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/NotEqual.test.js +0 -19
- package/build/dist/Tests/Types/Database/NotEqual.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/Search.test.js +0 -10
- package/build/dist/Tests/Types/Database/Search.test.js.map +0 -1
- package/build/dist/Tests/Types/DatabaseType.test.js +0 -7
- package/build/dist/Tests/Types/DatabaseType.test.js.map +0 -1
- package/build/dist/Tests/Types/Date.test.js +0 -194
- package/build/dist/Tests/Types/Date.test.js.map +0 -1
- package/build/dist/Tests/Types/Dictionary.test.js +0 -25
- package/build/dist/Tests/Types/Dictionary.test.js.map +0 -1
- package/build/dist/Tests/Types/Domain.test.js +0 -54
- package/build/dist/Tests/Types/Domain.test.js.map +0 -1
- package/build/dist/Tests/Types/Email/Email.test.js +0 -51
- package/build/dist/Tests/Types/Email/Email.test.js.map +0 -1
- package/build/dist/Tests/Types/EmailWithName.test.js +0 -36
- package/build/dist/Tests/Types/EmailWithName.test.js.map +0 -1
- package/build/dist/Tests/Types/EncryptionAlgorithm.test.js +0 -7
- package/build/dist/Tests/Types/EncryptionAlgorithm.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/ApiException.test.js +0 -10
- package/build/dist/Tests/Types/Exception/ApiException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/BadDataException.test.js +0 -12
- package/build/dist/Tests/Types/Exception/BadDataException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/BadOperationException.test.js +0 -10
- package/build/dist/Tests/Types/Exception/BadOperationException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/BadRequestException.test.js +0 -12
- package/build/dist/Tests/Types/Exception/BadRequestException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js +0 -10
- package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/Exception.test.js +0 -15
- package/build/dist/Tests/Types/Exception/Exception.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/NotImplementedException.test.js +0 -12
- package/build/dist/Tests/Types/Exception/NotImplementedException.test.js.map +0 -1
- package/build/dist/Tests/Types/File.test.js +0 -22
- package/build/dist/Tests/Types/File.test.js.map +0 -1
- package/build/dist/Tests/Types/HashedString.test.js +0 -51
- package/build/dist/Tests/Types/HashedString.test.js.map +0 -1
- package/build/dist/Tests/Types/Html.test.js +0 -8
- package/build/dist/Tests/Types/Html.test.js.map +0 -1
- package/build/dist/Tests/Types/IP/IP.test.js +0 -65
- package/build/dist/Tests/Types/IP/IP.test.js.map +0 -1
- package/build/dist/Tests/Types/IP/IPType.test.js +0 -10
- package/build/dist/Tests/Types/IP/IPType.test.js.map +0 -1
- package/build/dist/Tests/Types/IP/IPv4.test.js +0 -17
- package/build/dist/Tests/Types/IP/IPv4.test.js.map +0 -1
- package/build/dist/Tests/Types/IP/IPv6.test.js +0 -17
- package/build/dist/Tests/Types/IP/IPv6.test.js.map +0 -1
- package/build/dist/Tests/Types/JSON.test.js +0 -37
- package/build/dist/Tests/Types/JSON.test.js.map +0 -1
- package/build/dist/Tests/Types/JSONFunctions.test.js +0 -38
- package/build/dist/Tests/Types/JSONFunctions.test.js.map +0 -1
- package/build/dist/Tests/Types/ListData.test.js +0 -34
- package/build/dist/Tests/Types/ListData.test.js.map +0 -1
- package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js +0 -121
- package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js.map +0 -1
- package/build/dist/Tests/Types/Name.test.js +0 -26
- package/build/dist/Tests/Types/Name.test.js.map +0 -1
- package/build/dist/Tests/Types/ObjectID.test.js +0 -12
- package/build/dist/Tests/Types/ObjectID.test.js.map +0 -1
- package/build/dist/Tests/Types/OnCallDutyPolicy/LayerUtil.test.js +0 -530
- package/build/dist/Tests/Types/OnCallDutyPolicy/LayerUtil.test.js.map +0 -1
- package/build/dist/Tests/Types/Permission.test.js +0 -99
- package/build/dist/Tests/Types/Permission.test.js.map +0 -1
- package/build/dist/Tests/Types/Phone.test.js +0 -37
- package/build/dist/Tests/Types/Phone.test.js.map +0 -1
- package/build/dist/Tests/Types/Port.test.js +0 -35
- package/build/dist/Tests/Types/Port.test.js.map +0 -1
- package/build/dist/Tests/Types/PositiveNumber.test.js +0 -101
- package/build/dist/Tests/Types/PositiveNumber.test.js.map +0 -1
- package/build/dist/Tests/Types/SecuritySeverity.test.js +0 -16
- package/build/dist/Tests/Types/SecuritySeverity.test.js.map +0 -1
- package/build/dist/Tests/Types/SerializableObject.test.js +0 -37
- package/build/dist/Tests/Types/SerializableObject.test.js.map +0 -1
- package/build/dist/Tests/Types/Sleep.test.js +0 -14
- package/build/dist/Tests/Types/Sleep.test.js.map +0 -1
- package/build/dist/Tests/Types/Text.test.js +0 -8
- package/build/dist/Tests/Types/Text.test.js.map +0 -1
- package/build/dist/Tests/Types/Timezone.test.js +0 -596
- package/build/dist/Tests/Types/Timezone.test.js.map +0 -1
- package/build/dist/Tests/Types/Typeof.test.js +0 -16
- package/build/dist/Tests/Types/Typeof.test.js.map +0 -1
- package/build/dist/Tests/Types/UserType.test.js +0 -16
- package/build/dist/Tests/Types/UserType.test.js.map +0 -1
- package/build/dist/Tests/Types/Version.test.js +0 -35
- package/build/dist/Tests/Types/Version.test.js.map +0 -1
- package/build/dist/Tests/Types/XML.test.js +0 -35
- package/build/dist/Tests/Types/XML.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/404.test.js +0 -59
- package/build/dist/Tests/UI/Components/404.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Alert.test.js +0 -83
- package/build/dist/Tests/UI/Components/Alert.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Badge.test.js +0 -59
- package/build/dist/Tests/UI/Components/Badge.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/BasicForm.test.js +0 -92
- package/build/dist/Tests/UI/Components/BasicForm.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Breadcrumbs.test.js +0 -69
- package/build/dist/Tests/UI/Components/Breadcrumbs.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Button.test.js +0 -104
- package/build/dist/Tests/UI/Components/Button.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Card.test.js +0 -81
- package/build/dist/Tests/UI/Components/Card.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ColorViewer.test.js +0 -42
- package/build/dist/Tests/UI/Components/ColorViewer.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ComponentsModal.test.js +0 -233
- package/build/dist/Tests/UI/Components/ComponentsModal.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ConfirmModal.test.js +0 -57
- package/build/dist/Tests/UI/Components/ConfirmModal.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/DictionaryOfStrings.test.js +0 -84
- package/build/dist/Tests/UI/Components/DictionaryOfStrings.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Dropdown.test.js +0 -146
- package/build/dist/Tests/UI/Components/Dropdown.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/DuplicateModel.test.js +0 -229
- package/build/dist/Tests/UI/Components/DuplicateModel.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/EmptyState/EmptyState.test.js +0 -26
- package/build/dist/Tests/UI/Components/EmptyState/EmptyState.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ErrorBoundary.test.js +0 -32
- package/build/dist/Tests/UI/Components/ErrorBoundary.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/FilePicker.test.js +0 -342
- package/build/dist/Tests/UI/Components/FilePicker.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/HiddenText.test.js +0 -50
- package/build/dist/Tests/UI/Components/HiddenText.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Input.test.js +0 -223
- package/build/dist/Tests/UI/Components/Input.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Item.test.js +0 -58
- package/build/dist/Tests/UI/Components/Item.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/List.test.js +0 -83
- package/build/dist/Tests/UI/Components/List.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Loader.test.js +0 -19
- package/build/dist/Tests/UI/Components/Loader.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/MarkdownEditor.test.js +0 -85
- package/build/dist/Tests/UI/Components/MarkdownEditor.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/MasterPage.test.js +0 -46
- package/build/dist/Tests/UI/Components/MasterPage.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Modal.test.js +0 -127
- package/build/dist/Tests/UI/Components/Modal.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/NavBar.test.js +0 -52
- package/build/dist/Tests/UI/Components/NavBar.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/OrderedStatesList.test.js +0 -86
- package/build/dist/Tests/UI/Components/OrderedStatesList.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Pagination.test.js +0 -137
- package/build/dist/Tests/UI/Components/Pagination.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Pill.test.js +0 -55
- package/build/dist/Tests/UI/Components/Pill.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Probe.test.js +0 -52
- package/build/dist/Tests/UI/Components/Probe.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ProgressBar.test.js +0 -41
- package/build/dist/Tests/UI/Components/ProgressBar.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/RadioButtons.test.js +0 -66
- package/build/dist/Tests/UI/Components/RadioButtons.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/SideMenuItem.test.js +0 -99
- package/build/dist/Tests/UI/Components/SideMenuItem.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/SideOver.test.js +0 -77
- package/build/dist/Tests/UI/Components/SideOver.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Tabs.test.js +0 -56
- package/build/dist/Tests/UI/Components/Tabs.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Template/Template.test.js +0 -15
- package/build/dist/Tests/UI/Components/Template/Template.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/TextArea.test.js +0 -112
- package/build/dist/Tests/UI/Components/TextArea.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/TimePicker/TimePicker.test.js +0 -352
- package/build/dist/Tests/UI/Components/TimePicker/TimePicker.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Toast.test.js +0 -48
- package/build/dist/Tests/UI/Components/Toast.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Toggle.test.js +0 -95
- package/build/dist/Tests/UI/Components/Toggle.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/TopSection.test.js +0 -33
- package/build/dist/Tests/UI/Components/TopSection.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/XAxis.test.js +0 -21
- package/build/dist/Tests/UI/Components/XAxis.test.js.map +0 -1
- package/build/dist/Tests/UI/Index.js +0 -2
- package/build/dist/Tests/UI/Index.js.map +0 -1
- package/build/dist/Tests/UI/Mocks/FileMock.js +0 -3
- package/build/dist/Tests/UI/Mocks/FileMock.js.map +0 -1
- package/build/dist/Tests/Utils/API.test.js +0 -399
- package/build/dist/Tests/Utils/API.test.js.map +0 -1
- package/build/dist/Tests/Utils/Analytics.test.js +0 -67
- package/build/dist/Tests/Utils/Analytics.test.js.map +0 -1
- package/build/dist/Tests/Utils/CronTime.test.js +0 -22
- package/build/dist/Tests/Utils/CronTime.test.js.map +0 -1
- package/build/dist/Tests/Utils/Faker.test.js +0 -27
- package/build/dist/Tests/Utils/Faker.test.js.map +0 -1
- package/build/dist/Tests/Utils/MetricUnitUtil.test.js +0 -187
- package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +0 -1
- package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js +0 -224
- package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js.map +0 -1
- package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js +0 -180
- package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js.map +0 -1
- package/build/dist/Tests/Utils/RecordingRuleExpression.test.js +0 -142
- package/build/dist/Tests/Utils/RecordingRuleExpression.test.js.map +0 -1
- package/build/dist/Tests/Utils/Slug.test.js +0 -20
- package/build/dist/Tests/Utils/Slug.test.js.map +0 -1
- package/build/dist/Tests/Utils/UUID.test.js +0 -48
- package/build/dist/Tests/Utils/UUID.test.js.map +0 -1
- package/build/dist/Tests/jest.setup.js +0 -30
- package/build/dist/Tests/jest.setup.js.map +0 -1
- package/build/dist/Types/Profile/ProfileMetricType.js +0 -17
- 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
|
|
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
|
-
:
|
|
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
|
-
|
|
236
|
-
|
|
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
|
-
|
|
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] =
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
139
|
+
(query as any).incidentEpisodeId = combineWithPrivacyClause(
|
|
140
|
+
(query as any).incidentEpisodeId,
|
|
141
|
+
rawClause,
|
|
142
|
+
);
|
|
136
143
|
return query;
|
|
137
144
|
}
|