@oneuptime/common 12.0.2 → 12.0.4
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/DatabaseModels/CephCluster.ts +14 -0
- package/Models/DatabaseModels/CodeRepository.ts +14 -6
- package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +14 -0
- package/Models/DatabaseModels/DockerHost.ts +14 -0
- package/Models/DatabaseModels/GlobalOidcProject.ts +18 -0
- package/Models/DatabaseModels/GlobalSsoProject.ts +18 -0
- package/Models/DatabaseModels/Index.ts +2 -0
- package/Models/DatabaseModels/IoTFleet.ts +14 -0
- package/Models/DatabaseModels/KubernetesCluster.ts +14 -0
- package/Models/DatabaseModels/LogDropFilter.ts +9 -20
- package/Models/DatabaseModels/NetworkDevice.ts +14 -0
- package/Models/DatabaseModels/NetworkInterface.ts +18 -0
- package/Models/DatabaseModels/Project.ts +16 -2
- package/Models/DatabaseModels/ProxmoxCluster.ts +14 -0
- package/Models/DatabaseModels/Service.ts +30 -0
- package/Models/DatabaseModels/StatusPageMonitorRule.ts +911 -0
- package/Models/DatabaseModels/StatusPagePrivateUser.ts +30 -0
- package/Models/DatabaseModels/StatusPageResource.ts +73 -0
- package/Models/DatabaseModels/TraceDropFilter.ts +9 -20
- package/Models/DatabaseModels/User.ts +30 -0
- package/Server/API/AIAgentDataAPI.ts +31 -0
- package/Server/API/BaseAPI.ts +13 -2
- package/Server/API/DashboardAPI.ts +458 -12
- package/Server/API/GitHubAPI.ts +119 -283
- package/Server/API/UserAPI.ts +263 -1
- package/Server/EnvironmentConfig.ts +38 -4
- package/Server/Infrastructure/GlobalCache.ts +152 -0
- package/Server/Infrastructure/Postgres/DataSourceOptions.ts +16 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.ts +123 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.ts +21 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.ts +68 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts +100 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.ts +214 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.ts +69 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
- package/Server/Services/AlertStateTimelineService.ts +20 -0
- package/Server/Services/AnalyticsDatabaseService.ts +72 -1
- package/Server/Services/CephClusterService.ts +26 -86
- package/Server/Services/CloudResourceService.ts +23 -83
- package/Server/Services/CodeRepositoryService.ts +105 -2
- package/Server/Services/DatabaseService.ts +296 -2
- package/Server/Services/DockerHostService.ts +19 -79
- package/Server/Services/DockerSwarmClusterService.ts +27 -88
- package/Server/Services/HostService.ts +46 -99
- package/Server/Services/IncidentStateTimelineService.ts +20 -0
- package/Server/Services/Index.ts +2 -0
- package/Server/Services/IoTFleetService.ts +19 -79
- package/Server/Services/KubernetesClusterService.ts +17 -78
- package/Server/Services/LabelService.ts +57 -10
- package/Server/Services/MetricTypeService.ts +84 -0
- package/Server/Services/MonitorService.ts +89 -14
- package/Server/Services/MonitorStatusTimelineService.ts +29 -0
- package/Server/Services/MonitorTemplateService.ts +65 -0
- package/Server/Services/OpenTelemetryIngestService.ts +230 -26
- package/Server/Services/PodmanHostService.ts +19 -79
- package/Server/Services/ProxmoxClusterService.ts +23 -83
- package/Server/Services/RumApplicationService.ts +19 -80
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +21 -0
- package/Server/Services/ServerlessFunctionService.ts +24 -85
- package/Server/Services/ServiceService.ts +299 -73
- package/Server/Services/StatusPageMonitorRuleEngineService.ts +752 -0
- package/Server/Services/StatusPageMonitorRuleService.ts +471 -0
- package/Server/Services/TelemetryEntityRelationshipService.ts +1 -0
- package/Server/Services/TelemetryEntityService.ts +1 -0
- package/Server/Services/UserService.ts +184 -0
- package/Server/Utils/AI/Toolbox/CodeTools.ts +45 -4
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +13 -0
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +157 -4
- package/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.ts +130 -0
- package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +170 -39
- package/Server/Utils/Monitor/MonitorResource.ts +63 -36
- package/Server/Utils/Monitor/MonitorStatusTimeline.ts +36 -0
- package/Server/Utils/Monitor/MonitorStepsProjectValidator.ts +148 -127
- package/Server/Utils/Monitor/MonitorStepsReferenceExtractor.ts +434 -0
- package/Server/Utils/PasswordHash.ts +306 -0
- package/Server/Utils/SingleFlight.ts +83 -0
- package/Server/Utils/StatusPage/MonitorRulePatternValidator.ts +46 -0
- package/Server/Utils/Telemetry/EntityRegistry.ts +107 -26
- package/Server/Utils/Telemetry/ResourceHeartbeat.ts +314 -0
- package/Server/Utils/Telemetry/Telemetry.ts +351 -122
- package/Tests/App/Dashboard/OverviewCustomFields.test.tsx +333 -0
- package/Tests/App/Dashboard/UserCustomFields.test.tsx +392 -0
- package/Tests/App/Dashboard/WidgetCatalog.test.ts +2 -0
- package/Tests/Models/DatabaseModels/ColumnTransformerInvariants.test.ts +306 -0
- package/Tests/Models/DatabaseModels/NumberColumnDeserialization.test.ts +333 -0
- package/Tests/Models/DatabaseModels/StatusPageMonitorRuleModel.test.ts +190 -0
- package/Tests/Server/API/AIAgentDataRepositoryToken.test.ts +381 -0
- package/Tests/Server/API/DashboardPublicAttributeValuesAPI.test.ts +943 -0
- package/Tests/Server/API/DashboardPublicMetricsAggregateAPI.test.ts +1296 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +26 -0
- package/Tests/Server/API/DashboardPublicTemplatePayloads.test.ts +598 -0
- package/Tests/Server/API/GitHubAppInstallationBindingAPI.test.ts +539 -0
- package/Tests/Server/API/Helpers.ts +6 -1
- package/Tests/Server/API/UserProjectsAPI.test.ts +852 -0
- package/Tests/Server/Infrastructure/GlobalCache.test.ts +354 -0
- package/Tests/Server/Infrastructure/PostgresLockTimeoutOptions.test.ts +181 -0
- package/Tests/Server/Infrastructure/SemaphoreMutex.test.ts +215 -0
- package/Tests/Server/Services/AddPerUserPasswordSaltMigration.test.ts +178 -0
- package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +582 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +5 -0
- package/Tests/Server/Services/CodeRepositoryInstallationBinding.test.ts +305 -0
- package/Tests/Server/Services/CodeRepositoryResolutionBinding.test.ts +147 -0
- package/Tests/Server/Services/DatabaseServicePerUserPasswordSalt.test.ts +870 -0
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlocked.test.ts +342 -0
- package/Tests/Server/Services/DropFilterSaveValidation.test.ts +245 -0
- package/Tests/Server/Services/HostServiceUpdateLastSeen.test.ts +163 -15
- package/Tests/Server/Services/MetricTypeAttachServices.test.ts +222 -0
- package/Tests/Server/Services/MissingReferenceWriteGuard.test.ts +614 -0
- package/Tests/Server/Services/MonitorStatusTimelineFastPath.test.ts +23 -0
- package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +568 -0
- package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +305 -56
- package/Tests/Server/Services/RestoreDroppedUniqueIndexesMigration.test.ts +386 -0
- package/Tests/Server/Services/RestoreServiceLowerNameIndexMigration.test.ts +240 -0
- package/Tests/Server/Services/ServiceUpdateLastSeenSplitGates.test.ts +705 -0
- package/Tests/Server/Services/StatusPageMonitorRuleEngineService.test.ts +1719 -0
- package/Tests/Server/Services/StatusPageMonitorRuleHooks.test.ts +1212 -0
- package/Tests/Server/Services/StatusPageMonitorRuleMonitorCreateHook.test.ts +228 -0
- package/Tests/Server/Services/UserServiceFirstMasterAdminElection.test.ts +885 -0
- package/Tests/Server/Services/WidenHashedStringColumnsForScryptMigration.test.ts +220 -0
- package/Tests/Server/Utils/AI/CodeTools.test.ts +47 -1
- package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +10 -0
- package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +267 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +120 -0
- package/Tests/Server/Utils/CodeRepository/GitHubInstallationBinding.test.ts +292 -0
- package/Tests/Server/Utils/Database/ProjectScopedReferenceValidator.test.ts +260 -13
- package/Tests/Server/Utils/EntityRegistryRowFence.test.ts +302 -0
- package/Tests/Server/Utils/GitHubInstallationOwnershipVerification.test.ts +340 -0
- package/Tests/Server/Utils/GitHubWebhookAndTreeCacheIsolation.test.ts +250 -0
- package/Tests/Server/Utils/MetricTypeIndexConvergence.test.ts +598 -0
- package/Tests/Server/Utils/Monitor/MonitorStatusTimelineUnusableStatus.test.ts +154 -0
- package/Tests/Server/Utils/Monitor/MonitorStepsProjectValidator.test.ts +638 -92
- package/Tests/Server/Utils/Monitor/MonitorStepsReferenceExtractor.test.ts +724 -0
- package/Tests/Server/Utils/PasswordHash.test.ts +555 -0
- package/Tests/Server/Utils/SingleFlight.test.ts +221 -0
- package/Tests/Types/Dashboard/NetworkDashboardTemplate.test.ts +793 -0
- package/Tests/Types/Database/BigIntColumnTransformer.test.ts +147 -0
- package/Tests/Types/Database/ColumnLength.test.ts +7 -1
- package/Tests/Types/Database/DatabasePropertyTransformer.test.ts +140 -0
- package/Tests/Types/Database/NumericColumnValue.test.ts +127 -0
- package/Tests/Types/Decimal.test.ts +37 -0
- package/Tests/Types/HashedStringPerUserSalt.test.ts +476 -0
- package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +293 -0
- package/Tests/Types/Monitor/HostAlertTemplates.test.ts +249 -0
- package/Tests/Types/Monitor/IotAlertTemplates.test.ts +320 -0
- package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +271 -0
- package/Tests/Types/Monitor/SnmpVersionParsing.test.ts +152 -0
- package/Tests/Types/Port.test.ts +38 -0
- package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +696 -0
- package/Tests/UI/Components/LogsHistogram.test.tsx +276 -0
- package/Tests/UI/Components/UseLiveLogsRefresh.test.tsx +489 -0
- package/Tests/UI/Components/UseLogsHistogram.test.tsx +500 -0
- package/Tests/UI/Utils/UserProjectsModelAPI.test.ts +714 -0
- package/Tests/Utils/Dashboard/Components/DashboardComponentsUtil.test.ts +120 -0
- package/Tests/Utils/Dashboard/DashboardNetworkMapComponent.test.ts +327 -0
- package/Tests/Utils/TeamMembersByProject.test.ts +655 -0
- package/Types/Dashboard/DashboardComponentType.ts +1 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardNetworkMapComponent.ts +40 -0
- package/Types/Dashboard/DashboardTemplates.ts +397 -0
- package/Types/Database/BigIntColumnTransformer.ts +74 -0
- package/Types/Database/ColumnLength.ts +9 -1
- package/Types/Database/DatabaseProperty.ts +26 -0
- package/Types/Database/NumericColumnValue.ts +128 -0
- package/Types/Database/TableColumn.ts +11 -0
- package/Types/Database/UnsynchronizedIndex.ts +48 -0
- package/Types/Decimal.ts +16 -4
- package/Types/HashedString.ts +139 -4
- package/Types/Permission.ts +48 -0
- package/Types/Port.ts +16 -4
- package/UI/Components/CustomFields/CustomFieldsDetail.tsx +85 -11
- package/UI/Components/LogsViewer/useLiveLogsRefresh.ts +86 -0
- package/UI/Components/LogsViewer/useLogsHistogram.ts +113 -0
- package/UI/Components/Navbar/NavBar.tsx +12 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +19 -7
- package/UI/Utils/ModelAPI/UserProjectsModelAPI.ts +257 -0
- package/Utils/Dashboard/Components/DashboardNetworkMapComponent.ts +136 -0
- package/Utils/Dashboard/Components/Index.ts +7 -0
- package/Utils/TeamMembersByProject.ts +237 -0
- package/build/dist/Models/DatabaseModels/CephCluster.js +16 -1
- package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CodeRepository.js +14 -6
- package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +12 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHost.js +16 -1
- package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalOidcProject.js +16 -1
- package/build/dist/Models/DatabaseModels/GlobalOidcProject.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalSsoProject.js +16 -1
- package/build/dist/Models/DatabaseModels/GlobalSsoProject.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleet.js +16 -1
- package/build/dist/Models/DatabaseModels/IoTFleet.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js +16 -1
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/LogDropFilter.js +9 -20
- package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +16 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkInterface.js +16 -1
- package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +16 -2
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +16 -1
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Service.js +28 -1
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js +925 -0
- package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js +32 -0
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageResource.js +72 -0
- package/build/dist/Models/DatabaseModels/StatusPageResource.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TraceDropFilter.js +9 -20
- package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +32 -0
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +21 -2
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +11 -1
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +343 -10
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/GitHubAPI.js +94 -167
- package/build/dist/Server/API/GitHubAPI.js.map +1 -1
- package/build/dist/Server/API/UserAPI.js +187 -2
- package/build/dist/Server/API/UserAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +34 -4
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/GlobalCache.js +120 -0
- package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js +5 -3
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.js +48 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js +59 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js +93 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js +101 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.js +66 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.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/Services/AlertStateTimelineService.js +19 -0
- package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +57 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterService.js +26 -76
- package/build/dist/Server/Services/CephClusterService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceService.js +23 -73
- package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
- package/build/dist/Server/Services/CodeRepositoryService.js +90 -2
- package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +246 -2
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostService.js +19 -69
- package/build/dist/Server/Services/DockerHostService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterService.js +27 -78
- package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +58 -102
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateTimelineService.js +19 -0
- package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +2 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetService.js +19 -69
- package/build/dist/Server/Services/IoTFleetService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterService.js +17 -68
- package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
- package/build/dist/Server/Services/LabelService.js +42 -7
- package/build/dist/Server/Services/LabelService.js.map +1 -1
- package/build/dist/Server/Services/MetricTypeService.js +74 -0
- package/build/dist/Server/Services/MetricTypeService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +81 -9
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusTimelineService.js +28 -0
- package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +60 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +155 -25
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostService.js +19 -69
- package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterService.js +23 -73
- package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationService.js +19 -70
- package/build/dist/Server/Services/RumApplicationService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +20 -0
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionService.js +24 -75
- package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +236 -61
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +603 -0
- package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/StatusPageMonitorRuleService.js +401 -0
- package/build/dist/Server/Services/StatusPageMonitorRuleService.js.map +1 -0
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +1 -0
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryEntityService.js +1 -0
- package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +165 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +31 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +13 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +126 -4
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js +136 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js.map +1 -0
- package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +105 -29
- package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +56 -32
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js +30 -3
- package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStepsProjectValidator.js +110 -98
- package/build/dist/Server/Utils/Monitor/MonitorStepsProjectValidator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStepsReferenceExtractor.js +312 -0
- package/build/dist/Server/Utils/Monitor/MonitorStepsReferenceExtractor.js.map +1 -0
- package/build/dist/Server/Utils/PasswordHash.js +237 -0
- package/build/dist/Server/Utils/PasswordHash.js.map +1 -0
- package/build/dist/Server/Utils/SingleFlight.js +76 -0
- package/build/dist/Server/Utils/SingleFlight.js.map +1 -0
- package/build/dist/Server/Utils/StatusPage/MonitorRulePatternValidator.js +29 -0
- package/build/dist/Server/Utils/StatusPage/MonitorRulePatternValidator.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +78 -19
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js +160 -0
- package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +279 -104
- package/build/dist/Server/Utils/Telemetry/Telemetry.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/ComponentArgument.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardNetworkMapComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardNetworkMapComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +368 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/Database/BigIntColumnTransformer.js +66 -0
- package/build/dist/Types/Database/BigIntColumnTransformer.js.map +1 -0
- package/build/dist/Types/Database/ColumnLength.js +9 -1
- package/build/dist/Types/Database/ColumnLength.js.map +1 -1
- package/build/dist/Types/Database/DatabaseProperty.js +25 -0
- package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
- package/build/dist/Types/Database/NumericColumnValue.js +97 -0
- package/build/dist/Types/Database/NumericColumnValue.js.map +1 -0
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/Database/UnsynchronizedIndex.js +46 -0
- package/build/dist/Types/Database/UnsynchronizedIndex.js.map +1 -0
- package/build/dist/Types/Decimal.js +14 -3
- package/build/dist/Types/Decimal.js.map +1 -1
- package/build/dist/Types/HashedString.js +95 -5
- package/build/dist/Types/HashedString.js.map +1 -1
- package/build/dist/Types/Permission.js +42 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Port.js +15 -5
- package/build/dist/Types/Port.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +51 -10
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/useLiveLogsRefresh.js +44 -0
- package/build/dist/UI/Components/LogsViewer/useLiveLogsRefresh.js.map +1 -0
- package/build/dist/UI/Components/LogsViewer/useLogsHistogram.js +75 -0
- package/build/dist/UI/Components/LogsViewer/useLogsHistogram.js.map +1 -0
- package/build/dist/UI/Components/Navbar/NavBar.js +3 -1
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +19 -7
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js +156 -0
- package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardNetworkMapComponent.js +114 -0
- package/build/dist/Utils/Dashboard/Components/DashboardNetworkMapComponent.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/TeamMembersByProject.js +145 -0
- package/build/dist/Utils/TeamMembersByProject.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import ModelAPI from "./ModelAPI";
|
|
2
|
+
import API from "../API/API";
|
|
3
|
+
import { APP_API_URL } from "../../Config";
|
|
4
|
+
import BaseModel from "../../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
5
|
+
import Team from "../../../Models/DatabaseModels/Team";
|
|
6
|
+
import TeamMember from "../../../Models/DatabaseModels/TeamMember";
|
|
7
|
+
import User from "../../../Models/DatabaseModels/User";
|
|
8
|
+
import HTTPErrorResponse from "../../../Types/API/HTTPErrorResponse";
|
|
9
|
+
import HTTPMethod from "../../../Types/API/HTTPMethod";
|
|
10
|
+
import URL from "../../../Types/API/URL";
|
|
11
|
+
import BadDataException from "../../../Types/Exception/BadDataException";
|
|
12
|
+
import ObjectID from "../../../Types/ObjectID";
|
|
13
|
+
export default class UserProjectsModelAPI extends ModelAPI {
|
|
14
|
+
static async getList(data) {
|
|
15
|
+
if (!(new data.modelType() instanceof TeamMember)) {
|
|
16
|
+
/*
|
|
17
|
+
* Not the model this API exists for - a table's entity filter fetching
|
|
18
|
+
* its dropdown options, say. Behave like the plain one, but through
|
|
19
|
+
* `super` so a subclass's getCommonHeaders still applies.
|
|
20
|
+
*/
|
|
21
|
+
return super.getList(data);
|
|
22
|
+
}
|
|
23
|
+
const userId = this.getUserIdFromQuery(data.query);
|
|
24
|
+
if (!userId) {
|
|
25
|
+
/*
|
|
26
|
+
* Without a user there is no list to fetch - the endpoint is
|
|
27
|
+
* "the projects of THIS user". Failing loudly beats returning an empty
|
|
28
|
+
* list, which would render as "this user is in no projects".
|
|
29
|
+
*/
|
|
30
|
+
throw new BadDataException("A user id is required to list the projects a user belongs to.");
|
|
31
|
+
}
|
|
32
|
+
const url = URL.fromString(APP_API_URL.toString())
|
|
33
|
+
.addRoute(new User().getCrudApiPath())
|
|
34
|
+
.addRoute(`/${userId.toString()}/projects`);
|
|
35
|
+
const result = await API.fetch({
|
|
36
|
+
method: HTTPMethod.POST,
|
|
37
|
+
url: url,
|
|
38
|
+
data: {},
|
|
39
|
+
headers: this.getCommonHeaders(data.requestOptions),
|
|
40
|
+
params: {
|
|
41
|
+
limit: data.limit.toString(),
|
|
42
|
+
skip: data.skip.toString(),
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
if (result instanceof HTTPErrorResponse) {
|
|
46
|
+
throw result;
|
|
47
|
+
}
|
|
48
|
+
const rows = result.data.map((item) => {
|
|
49
|
+
return this.toRow(item);
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
data: rows,
|
|
53
|
+
count: result.count,
|
|
54
|
+
skip: result.skip,
|
|
55
|
+
limit: result.limit,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Removes the user from the project on this row - every one of their team
|
|
60
|
+
* memberships in it, not just the one whose id the row happens to carry.
|
|
61
|
+
*
|
|
62
|
+
* A grouped row stands for a project, so deleting one membership would leave
|
|
63
|
+
* the row on screen (still in the project, via their other teams) and look
|
|
64
|
+
* like the delete silently failed. Removing the user from a single team is
|
|
65
|
+
* done from the memberships table on the same page, where a row is a
|
|
66
|
+
* membership again.
|
|
67
|
+
*
|
|
68
|
+
* This goes through one `remove-from-project` request rather than a DELETE
|
|
69
|
+
* per membership, and that is load-bearing rather than an optimisation. The
|
|
70
|
+
* server refuses to remove the last accepted member of the Owners team, and
|
|
71
|
+
* it refuses per request - so a loop deletes every other membership first and
|
|
72
|
+
* only then reports a failure, leaving the person stripped of the teams the
|
|
73
|
+
* caller was just told they had not lost. The endpoint runs that check across
|
|
74
|
+
* the whole set before deleting anything.
|
|
75
|
+
*/
|
|
76
|
+
static async deleteItem(data) {
|
|
77
|
+
if (!(new data.modelType() instanceof TeamMember)) {
|
|
78
|
+
return super.deleteItem(data);
|
|
79
|
+
}
|
|
80
|
+
const rowMembership = await this.getItem({
|
|
81
|
+
modelType: TeamMember,
|
|
82
|
+
id: data.id,
|
|
83
|
+
select: {
|
|
84
|
+
_id: true,
|
|
85
|
+
userId: true,
|
|
86
|
+
projectId: true,
|
|
87
|
+
},
|
|
88
|
+
requestOptions: data.requestOptions,
|
|
89
|
+
});
|
|
90
|
+
const userId = rowMembership === null || rowMembership === void 0 ? void 0 : rowMembership.userId;
|
|
91
|
+
const projectId = rowMembership === null || rowMembership === void 0 ? void 0 : rowMembership.projectId;
|
|
92
|
+
if (!userId || !projectId) {
|
|
93
|
+
/*
|
|
94
|
+
* The row is gone, or came back without the user or project it stands
|
|
95
|
+
* for. Fall back to the single delete the table asked for rather than
|
|
96
|
+
* guessing which project to empty.
|
|
97
|
+
*/
|
|
98
|
+
return super.deleteItem(data);
|
|
99
|
+
}
|
|
100
|
+
const url = URL.fromString(APP_API_URL.toString())
|
|
101
|
+
.addRoute(new User().getCrudApiPath())
|
|
102
|
+
.addRoute(`/${userId.toString()}/remove-from-project`);
|
|
103
|
+
const result = await API.post({
|
|
104
|
+
url: url,
|
|
105
|
+
data: {
|
|
106
|
+
projectId: projectId.toString(),
|
|
107
|
+
},
|
|
108
|
+
headers: this.getCommonHeaders(data.requestOptions),
|
|
109
|
+
});
|
|
110
|
+
if (result instanceof HTTPErrorResponse) {
|
|
111
|
+
throw result;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The user the table is listing projects for.
|
|
116
|
+
*
|
|
117
|
+
* Accepts the id in the shapes a table query can carry it in: an ObjectID
|
|
118
|
+
* (what the page passes) or a plain string.
|
|
119
|
+
*/
|
|
120
|
+
static getUserIdFromQuery(query) {
|
|
121
|
+
const value = query["userId"];
|
|
122
|
+
if (value instanceof ObjectID) {
|
|
123
|
+
return value;
|
|
124
|
+
}
|
|
125
|
+
if (typeof value === "string" && value) {
|
|
126
|
+
return new ObjectID(value);
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* One row of the response.
|
|
132
|
+
*
|
|
133
|
+
* The base of the row is a TeamMember and hydrates as one. The aggregate
|
|
134
|
+
* fields are not columns of TeamMember, so BaseModel.fromJSON drops them -
|
|
135
|
+
* they are read off the raw JSON and attached here.
|
|
136
|
+
*/
|
|
137
|
+
static toRow(item) {
|
|
138
|
+
const row = BaseModel.fromJSON(item, TeamMember);
|
|
139
|
+
row.teamsForProject = BaseModel.fromJSONArray(item["teams"] || [], Team);
|
|
140
|
+
row.teamCountForProject = row.teamsForProject.length;
|
|
141
|
+
row.pendingTeamCountForProject = this.toCount(item["pendingTeamCount"]);
|
|
142
|
+
row.teamMemberIdsForProject = (item["teamMemberIds"] || [])
|
|
143
|
+
.map((id) => {
|
|
144
|
+
return (id === null || id === void 0 ? void 0 : id.toString()) || "";
|
|
145
|
+
})
|
|
146
|
+
.filter((id) => {
|
|
147
|
+
return Boolean(id);
|
|
148
|
+
});
|
|
149
|
+
return row;
|
|
150
|
+
}
|
|
151
|
+
static toCount(value) {
|
|
152
|
+
const count = Number(value);
|
|
153
|
+
return Number.isFinite(count) && count > 0 ? count : 0;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=UserProjectsModelAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserProjectsModelAPI.js","sourceRoot":"","sources":["../../../../../UI/Utils/ModelAPI/UserProjectsModelAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { ObjectType } from "../../../Types/JSON";
|
|
2
|
+
import ObjectID from "../../../Types/ObjectID";
|
|
3
|
+
import DashboardBaseComponentUtil from "./DashboardBaseComponent";
|
|
4
|
+
import { ComponentInputType, EntityFilterModelType, } from "../../../Types/Dashboard/DashboardComponents/ComponentArgument";
|
|
5
|
+
import DashboardComponentType from "../../../Types/Dashboard/DashboardComponentType";
|
|
6
|
+
const DisplaySection = {
|
|
7
|
+
name: "Display Options",
|
|
8
|
+
description: "Configure the widget title, size of the map and its labels",
|
|
9
|
+
order: 1,
|
|
10
|
+
};
|
|
11
|
+
const FiltersSection = {
|
|
12
|
+
name: "Filters",
|
|
13
|
+
description: "Narrow down which network sites are drawn",
|
|
14
|
+
order: 2,
|
|
15
|
+
defaultCollapsed: true,
|
|
16
|
+
};
|
|
17
|
+
/*
|
|
18
|
+
* A map is only readable while the markers on it can be told apart, and the
|
|
19
|
+
* fetch is a plain list query — so the widget draws a bounded number of
|
|
20
|
+
* sites rather than every row in the project. 250 comfortably covers a
|
|
21
|
+
* franchise estate at the level a dashboard tile is read at, and the footer
|
|
22
|
+
* says out loud when the cap dropped anything.
|
|
23
|
+
*/
|
|
24
|
+
export const DEFAULT_MAX_SITES = 250;
|
|
25
|
+
export default class DashboardNetworkMapComponentUtil extends DashboardBaseComponentUtil {
|
|
26
|
+
static getDefaultComponent() {
|
|
27
|
+
return {
|
|
28
|
+
_type: ObjectType.DashboardComponent,
|
|
29
|
+
componentType: DashboardComponentType.NetworkMap,
|
|
30
|
+
/*
|
|
31
|
+
* A map needs room in BOTH axes: the world is roughly 2:1, so a
|
|
32
|
+
* short-and-wide tile letterboxes it into a strip. Half the grid
|
|
33
|
+
* across and five rows down is the smallest shape that still reads
|
|
34
|
+
* as a map rather than as a banner.
|
|
35
|
+
*/
|
|
36
|
+
widthInDashboardUnits: 6,
|
|
37
|
+
heightInDashboardUnits: 5,
|
|
38
|
+
topInDashboardUnits: 0,
|
|
39
|
+
leftInDashboardUnits: 0,
|
|
40
|
+
componentId: ObjectID.generate(),
|
|
41
|
+
minHeightInDashboardUnits: 4,
|
|
42
|
+
minWidthInDashboardUnits: 4,
|
|
43
|
+
arguments: {
|
|
44
|
+
maxSites: DEFAULT_MAX_SITES,
|
|
45
|
+
viewMode: "map",
|
|
46
|
+
showLabels: true,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
static getComponentConfigArguments() {
|
|
51
|
+
const args = [];
|
|
52
|
+
args.push({
|
|
53
|
+
name: "Title",
|
|
54
|
+
description: "Header shown above the map",
|
|
55
|
+
required: false,
|
|
56
|
+
type: ComponentInputType.Text,
|
|
57
|
+
id: "title",
|
|
58
|
+
section: DisplaySection,
|
|
59
|
+
});
|
|
60
|
+
args.push({
|
|
61
|
+
name: "View Mode",
|
|
62
|
+
description: "Draw the sites on a world map (default), or list them in a table.",
|
|
63
|
+
required: false,
|
|
64
|
+
type: ComponentInputType.Dropdown,
|
|
65
|
+
id: "viewMode",
|
|
66
|
+
section: DisplaySection,
|
|
67
|
+
dropdownOptions: [
|
|
68
|
+
{ label: "Map", value: "map" },
|
|
69
|
+
{ label: "List", value: "list" },
|
|
70
|
+
],
|
|
71
|
+
});
|
|
72
|
+
args.push({
|
|
73
|
+
name: "Max Sites",
|
|
74
|
+
description: "Maximum number of network sites to draw",
|
|
75
|
+
required: false,
|
|
76
|
+
type: ComponentInputType.Number,
|
|
77
|
+
id: "maxSites",
|
|
78
|
+
placeholder: String(DEFAULT_MAX_SITES),
|
|
79
|
+
section: DisplaySection,
|
|
80
|
+
});
|
|
81
|
+
args.push({
|
|
82
|
+
name: "Show Site Names",
|
|
83
|
+
description: "Print each site's name under its marker. Names come off automatically when the map gets too busy for them to be readable.",
|
|
84
|
+
required: false,
|
|
85
|
+
type: ComponentInputType.Boolean,
|
|
86
|
+
id: "showLabels",
|
|
87
|
+
section: DisplaySection,
|
|
88
|
+
});
|
|
89
|
+
args.push({
|
|
90
|
+
name: "Site Types",
|
|
91
|
+
description: "Only draw sites of these types — e.g. just the stores, or just the regional hubs.",
|
|
92
|
+
required: false,
|
|
93
|
+
type: ComponentInputType.EntityMultiSelectDropdown,
|
|
94
|
+
id: "networkSiteTypeIds",
|
|
95
|
+
section: FiltersSection,
|
|
96
|
+
entityFilterModelType: EntityFilterModelType.NetworkSiteType,
|
|
97
|
+
});
|
|
98
|
+
args.push({
|
|
99
|
+
name: "Status",
|
|
100
|
+
description: "Quick filter by the status rolled up onto the site",
|
|
101
|
+
required: false,
|
|
102
|
+
type: ComponentInputType.Dropdown,
|
|
103
|
+
id: "statusFilter",
|
|
104
|
+
section: FiltersSection,
|
|
105
|
+
dropdownOptions: [
|
|
106
|
+
{ label: "All", value: "" },
|
|
107
|
+
{ label: "Down only", value: "down" },
|
|
108
|
+
{ label: "Operational only", value: "operational" },
|
|
109
|
+
],
|
|
110
|
+
});
|
|
111
|
+
return args;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=DashboardNetworkMapComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardNetworkMapComponent.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/DashboardNetworkMapComponent.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ import DashboardKubernetesStatefulSetListComponentUtil from "./DashboardKubernet
|
|
|
25
25
|
import DashboardLogStreamComponentUtil from "./DashboardLogStreamComponent";
|
|
26
26
|
import DashboardLogChartComponentUtil from "./DashboardLogChartComponent";
|
|
27
27
|
import DashboardMonitorListComponentUtil from "./DashboardMonitorListComponent";
|
|
28
|
+
import DashboardNetworkMapComponentUtil from "./DashboardNetworkMapComponent";
|
|
28
29
|
import DashboardPodmanContainerListComponentUtil from "./DashboardPodmanContainerListComponent";
|
|
29
30
|
import DashboardPodmanHostListComponentUtil from "./DashboardPodmanHostListComponent";
|
|
30
31
|
import DashboardPodmanImageListComponentUtil from "./DashboardPodmanImageListComponent";
|
|
@@ -164,6 +165,9 @@ export default class DashboardComponentsUtil {
|
|
|
164
165
|
if (dashboardComponentType === DashboardComponentType.CephPoolList) {
|
|
165
166
|
return DashboardCephPoolListComponentUtil.getComponentConfigArguments();
|
|
166
167
|
}
|
|
168
|
+
if (dashboardComponentType === DashboardComponentType.NetworkMap) {
|
|
169
|
+
return DashboardNetworkMapComponentUtil.getComponentConfigArguments();
|
|
170
|
+
}
|
|
167
171
|
if (dashboardComponentType === DashboardComponentType.Html) {
|
|
168
172
|
return DashboardHtmlComponentUtil.getComponentConfigArguments();
|
|
169
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/Index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/Index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
export default class TeamMembersByProject {
|
|
2
|
+
/**
|
|
3
|
+
* The project a membership is grouped under. Null when the membership carries
|
|
4
|
+
* no project at all - those rows are never merged, because merging them would
|
|
5
|
+
* put memberships of unrelated projects on one line.
|
|
6
|
+
*/
|
|
7
|
+
static getGroupKey(teamMember) {
|
|
8
|
+
var _a, _b, _c;
|
|
9
|
+
const projectId = ((_a = teamMember.projectId) === null || _a === void 0 ? void 0 : _a.toString()) ||
|
|
10
|
+
((_c = (_b = teamMember.project) === null || _b === void 0 ? void 0 : _b._id) === null || _c === void 0 ? void 0 : _c.toString()) ||
|
|
11
|
+
"";
|
|
12
|
+
return projectId || null;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The name this row reads and sorts under. Falls back to the project id so a
|
|
16
|
+
* row whose project could not be joined still lands somewhere deterministic
|
|
17
|
+
* rather than sorting as a blank.
|
|
18
|
+
*/
|
|
19
|
+
static getProjectName(row) {
|
|
20
|
+
var _a, _b, _c, _d, _e;
|
|
21
|
+
return (((_b = (_a = row.project) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.toString()) ||
|
|
22
|
+
((_c = row.projectId) === null || _c === void 0 ? void 0 : _c.toString()) ||
|
|
23
|
+
((_e = (_d = row.project) === null || _d === void 0 ? void 0 : _d._id) === null || _e === void 0 ? void 0 : _e.toString()) ||
|
|
24
|
+
"");
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* One row per project, in the order each project was first seen. The input
|
|
28
|
+
* order is whatever the caller sorted the memberships by, so first-seen order
|
|
29
|
+
* keeps that sort intact.
|
|
30
|
+
*/
|
|
31
|
+
static groupByProject(teamMembers) {
|
|
32
|
+
const rowsByGroupKey = new Map();
|
|
33
|
+
const rows = [];
|
|
34
|
+
/*
|
|
35
|
+
* Which teams are already on a row. Tracked separately rather than
|
|
36
|
+
* re-derived from `teams`, because a membership identifies its team by
|
|
37
|
+
* `teamId` while the team object it carries identifies itself by `_id`, and
|
|
38
|
+
* either one can be missing from a given select.
|
|
39
|
+
*/
|
|
40
|
+
const teamKeysByRow = new Map();
|
|
41
|
+
for (const teamMember of teamMembers) {
|
|
42
|
+
const groupKey = this.getGroupKey(teamMember);
|
|
43
|
+
let row = groupKey
|
|
44
|
+
? rowsByGroupKey.get(groupKey)
|
|
45
|
+
: undefined;
|
|
46
|
+
if (!row) {
|
|
47
|
+
row = {
|
|
48
|
+
id: undefined,
|
|
49
|
+
projectId: teamMember.projectId || undefined,
|
|
50
|
+
project: teamMember.project || undefined,
|
|
51
|
+
teams: [],
|
|
52
|
+
teamMemberIds: [],
|
|
53
|
+
hasAcceptedInvitation: false,
|
|
54
|
+
pendingTeamCount: 0,
|
|
55
|
+
joinedAt: undefined,
|
|
56
|
+
};
|
|
57
|
+
teamKeysByRow.set(row, new Set());
|
|
58
|
+
if (groupKey) {
|
|
59
|
+
rowsByGroupKey.set(groupKey, row);
|
|
60
|
+
}
|
|
61
|
+
rows.push(row);
|
|
62
|
+
}
|
|
63
|
+
this.addMembershipToRow(row, teamMember, teamKeysByRow.get(row));
|
|
64
|
+
}
|
|
65
|
+
for (const row of rows) {
|
|
66
|
+
this.finalizeRow(row);
|
|
67
|
+
}
|
|
68
|
+
return rows;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Alphabetical by project name, case-insensitively. Rows with no name at all
|
|
72
|
+
* sort last so the list does not open on a run of blanks.
|
|
73
|
+
*
|
|
74
|
+
* Returns a new array; the input is left alone.
|
|
75
|
+
*/
|
|
76
|
+
static sortByProjectName(rows) {
|
|
77
|
+
return [...rows].sort((a, b) => {
|
|
78
|
+
const nameA = this.getProjectName(a).toLowerCase();
|
|
79
|
+
const nameB = this.getProjectName(b).toLowerCase();
|
|
80
|
+
if (!nameA && !nameB) {
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
if (!nameA) {
|
|
84
|
+
return 1;
|
|
85
|
+
}
|
|
86
|
+
if (!nameB) {
|
|
87
|
+
return -1;
|
|
88
|
+
}
|
|
89
|
+
return nameA.localeCompare(nameB);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
static addMembershipToRow(row, teamMember, teamKeys) {
|
|
93
|
+
var _a, _b, _c, _d;
|
|
94
|
+
if (teamMember.hasAcceptedInvitation) {
|
|
95
|
+
row.hasAcceptedInvitation = true;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
row.pendingTeamCount = row.pendingTeamCount + 1;
|
|
99
|
+
}
|
|
100
|
+
/*
|
|
101
|
+
* A later membership can carry the joined project when the first one did
|
|
102
|
+
* not (different selects, or a nullified relation), so fill in whatever is
|
|
103
|
+
* still missing rather than trusting the first membership seen.
|
|
104
|
+
*/
|
|
105
|
+
if (!row.project && teamMember.project) {
|
|
106
|
+
row.project = teamMember.project;
|
|
107
|
+
}
|
|
108
|
+
if (!row.projectId && teamMember.projectId) {
|
|
109
|
+
row.projectId = teamMember.projectId;
|
|
110
|
+
}
|
|
111
|
+
const membershipId = ((_a = teamMember._id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
112
|
+
if (membershipId) {
|
|
113
|
+
row.teamMemberIds.push(membershipId);
|
|
114
|
+
}
|
|
115
|
+
const createdAt = teamMember.createdAt;
|
|
116
|
+
if (createdAt && (!row.joinedAt || createdAt < row.joinedAt)) {
|
|
117
|
+
row.joinedAt = createdAt;
|
|
118
|
+
}
|
|
119
|
+
const team = teamMember.team;
|
|
120
|
+
if (!team) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const teamKey = ((_b = teamMember.teamId) === null || _b === void 0 ? void 0 : _b.toString()) ||
|
|
124
|
+
((_c = team._id) === null || _c === void 0 ? void 0 : _c.toString()) ||
|
|
125
|
+
((_d = team.name) === null || _d === void 0 ? void 0 : _d.toString()) ||
|
|
126
|
+
"";
|
|
127
|
+
if (!teamKey || teamKeys.has(teamKey)) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
teamKeys.add(teamKey);
|
|
131
|
+
row.teams.push(team);
|
|
132
|
+
}
|
|
133
|
+
static finalizeRow(row) {
|
|
134
|
+
row.teams.sort((a, b) => {
|
|
135
|
+
var _a, _b;
|
|
136
|
+
return (((_a = a.name) === null || _a === void 0 ? void 0 : _a.toString()) || "")
|
|
137
|
+
.toLowerCase()
|
|
138
|
+
.localeCompare((((_b = b.name) === null || _b === void 0 ? void 0 : _b.toString()) || "").toLowerCase());
|
|
139
|
+
});
|
|
140
|
+
if (row.teamMemberIds.length > 0) {
|
|
141
|
+
row.id = [...row.teamMemberIds].sort()[0];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=TeamMembersByProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TeamMembersByProject.js","sourceRoot":"","sources":["../../../Utils/TeamMembersByProject.ts"],"names":[],"mappings":"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"}
|