@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
|
@@ -7,23 +7,29 @@ import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
|
|
|
7
7
|
import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
8
8
|
import { DashboardClientUrl, GitHubAppName, HomeClientUrl, } from "../EnvironmentConfig";
|
|
9
9
|
import ObjectID from "../../Types/ObjectID";
|
|
10
|
-
import GitHubUtil
|
|
10
|
+
import GitHubUtil from "../Utils/CodeRepository/GitHub/GitHub";
|
|
11
11
|
import CodeRepositoryService from "../Services/CodeRepositoryService";
|
|
12
12
|
import ProjectService from "../Services/ProjectService";
|
|
13
13
|
import AccessTokenService from "../Services/AccessTokenService";
|
|
14
|
-
import CodeRepository from "../../Models/DatabaseModels/CodeRepository";
|
|
15
|
-
import CodeRepositoryType from "../../Types/CodeRepository/CodeRepositoryType";
|
|
16
14
|
import URL from "../../Types/API/URL";
|
|
17
15
|
import UserMiddleware from "../Middleware/UserAuthorization";
|
|
18
16
|
import JSONWebToken from "../Utils/JsonWebToken";
|
|
19
|
-
import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
20
17
|
export default class GitHubAPI {
|
|
21
18
|
/*
|
|
22
|
-
* Resolves the projects linked to a GitHub App installation.
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
19
|
+
* Resolves the projects linked to a GitHub App installation.
|
|
20
|
+
*
|
|
21
|
+
* Project.gitHubAppInstallationId is the only source consulted, because it
|
|
22
|
+
* is the only one GitHub has vouched for — the install callback writes it
|
|
23
|
+
* after verifying the installer controls the installation, and the
|
|
24
|
+
* uninstall webhook clears it.
|
|
25
|
+
*
|
|
26
|
+
* This used to fall back to CodeRepository rows carrying the installation
|
|
27
|
+
* ID. That inverted the trust: a row is supposed to derive its right to an
|
|
28
|
+
* installation FROM its project, so letting a row nominate its project as a
|
|
29
|
+
* link target meant anyone who could write an installation ID onto a row in
|
|
30
|
+
* their own project would have that project treated as an owner of the
|
|
31
|
+
* installation — and every webhook would then import the victim's
|
|
32
|
+
* repositories into it.
|
|
27
33
|
*/
|
|
28
34
|
static async getProjectIdsForInstallation(installationId) {
|
|
29
35
|
const projectIds = [];
|
|
@@ -42,31 +48,10 @@ export default class GitHubAPI {
|
|
|
42
48
|
});
|
|
43
49
|
for (const project of projects) {
|
|
44
50
|
if (project.id) {
|
|
45
|
-
projectIds.push(project.id
|
|
51
|
+
projectIds.push(project.id);
|
|
46
52
|
}
|
|
47
53
|
}
|
|
48
|
-
|
|
49
|
-
query: {
|
|
50
|
-
gitHubAppInstallationId: installationId,
|
|
51
|
-
},
|
|
52
|
-
select: {
|
|
53
|
-
projectId: true,
|
|
54
|
-
},
|
|
55
|
-
limit: LIMIT_MAX,
|
|
56
|
-
skip: 0,
|
|
57
|
-
props: {
|
|
58
|
-
isRoot: true,
|
|
59
|
-
},
|
|
60
|
-
});
|
|
61
|
-
for (const codeRepository of codeRepositories) {
|
|
62
|
-
if (codeRepository.projectId &&
|
|
63
|
-
!projectIds.includes(codeRepository.projectId.toString())) {
|
|
64
|
-
projectIds.push(codeRepository.projectId.toString());
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return projectIds.map((projectId) => {
|
|
68
|
-
return new ObjectID(projectId);
|
|
69
|
-
});
|
|
54
|
+
return projectIds;
|
|
70
55
|
}
|
|
71
56
|
// Imports all repositories in an installation into every project linked to it.
|
|
72
57
|
static async importInstallationRepositoriesForLinkedProjects(installationId) {
|
|
@@ -125,7 +110,7 @@ export default class GitHubAPI {
|
|
|
125
110
|
* The state parameter contains base64 encoded JSON with projectId and userId
|
|
126
111
|
*/
|
|
127
112
|
router.get("/github/auth/callback", async (req, res) => {
|
|
128
|
-
var _a, _b;
|
|
113
|
+
var _a, _b, _c;
|
|
129
114
|
try {
|
|
130
115
|
// GitHub sends state parameter back which contains projectId and userId
|
|
131
116
|
const state = (_a = req.query["state"]) === null || _a === void 0 ? void 0 : _a.toString();
|
|
@@ -140,7 +125,7 @@ export default class GitHubAPI {
|
|
|
140
125
|
projectId = decodedState["projectId"];
|
|
141
126
|
userId = decodedState["userId"];
|
|
142
127
|
}
|
|
143
|
-
catch (
|
|
128
|
+
catch (_d) {
|
|
144
129
|
return Response.sendErrorResponse(req, res, new BadDataException("Invalid or expired state parameter. Please restart the GitHub App installation."));
|
|
145
130
|
}
|
|
146
131
|
if (!projectId) {
|
|
@@ -159,6 +144,41 @@ export default class GitHubAPI {
|
|
|
159
144
|
if (!installationId) {
|
|
160
145
|
return Response.sendErrorResponse(req, res, new BadDataException("Installation ID is required. Please install the GitHub App first."));
|
|
161
146
|
}
|
|
147
|
+
/*
|
|
148
|
+
* Prove the installation actually belongs to the person completing
|
|
149
|
+
* this redirect, before writing the binding everything downstream
|
|
150
|
+
* trusts.
|
|
151
|
+
*
|
|
152
|
+
* A valid `state` only says "this OneUptime user asked to install
|
|
153
|
+
* something for this project" — it says nothing about WHICH
|
|
154
|
+
* installation, and `installation_id` is an unauthenticated integer
|
|
155
|
+
* in a query string. Without this step anyone could start an install
|
|
156
|
+
* for their own project, then hand-edit the callback URL to a victim's
|
|
157
|
+
* installation ID: OneUptime would record their project as the owner
|
|
158
|
+
* of that installation, import the victim's private repositories into
|
|
159
|
+
* it, and mint write-scoped tokens for them on demand.
|
|
160
|
+
*
|
|
161
|
+
* The OAuth `code` is the missing proof. GitHub mints it for one
|
|
162
|
+
* GitHub account, it is single-use, and trading it in tells us which
|
|
163
|
+
* installations that account can actually administer.
|
|
164
|
+
*/
|
|
165
|
+
const oauthCode = (_c = req.query["code"]) === null || _c === void 0 ? void 0 : _c.toString();
|
|
166
|
+
if (!oauthCode) {
|
|
167
|
+
return Response.sendErrorResponse(req, res, new BadDataException('GitHub did not return an authorization code, so this installation could not be verified. Please enable "Request user authorization (OAuth) during installation" in the GitHub App settings and install again.'));
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
await GitHubUtil.assertUserControlsInstallation({
|
|
171
|
+
oauthCode: oauthCode,
|
|
172
|
+
installationId: installationId,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
catch (verificationError) {
|
|
176
|
+
logger.error(`GitHub Auth Callback: refusing to bind installation ${installationId} to project ${projectId} — could not verify the installing user controls it.`, getLogAttributesFromRequest(req));
|
|
177
|
+
logger.error(verificationError, getLogAttributesFromRequest(req));
|
|
178
|
+
return Response.sendErrorResponse(req, res, verificationError instanceof Error
|
|
179
|
+
? new BadDataException(verificationError.message)
|
|
180
|
+
: new BadDataException("Could not verify this GitHub App installation."));
|
|
181
|
+
}
|
|
162
182
|
/*
|
|
163
183
|
* Store the installation ID in the project
|
|
164
184
|
* This allows reuse when connecting additional repositories
|
|
@@ -202,16 +222,32 @@ export default class GitHubAPI {
|
|
|
202
222
|
}
|
|
203
223
|
});
|
|
204
224
|
// Initiate GitHub App installation
|
|
205
|
-
router.get("/github/auth/install", async (req, res) => {
|
|
206
|
-
var _a
|
|
225
|
+
router.get("/github/auth/install", UserMiddleware.getUserMiddleware, async (req, res) => {
|
|
226
|
+
var _a;
|
|
207
227
|
try {
|
|
208
228
|
if (!GitHubAppName) {
|
|
209
229
|
return Response.sendErrorResponse(req, res, new BadDataException("GitHub App is not configured. Please set GITHUB_APP_NAME."));
|
|
210
230
|
}
|
|
231
|
+
const oneuptimeRequest = req;
|
|
232
|
+
/*
|
|
233
|
+
* The state this route signs is what the callback trusts to decide
|
|
234
|
+
* which project gets the installation, so it must only ever be
|
|
235
|
+
* issued to the logged-in user for a project they belong to. Taking
|
|
236
|
+
* the user id from a query parameter — as this route used to — let
|
|
237
|
+
* anyone mint a valid state for any (project, user) pair without
|
|
238
|
+
* even holding a session.
|
|
239
|
+
*/
|
|
240
|
+
if (!oneuptimeRequest.userAuthorization) {
|
|
241
|
+
return Response.sendErrorResponse(req, res, new NotAuthenticatedException("Authentication is required to install the GitHub App."));
|
|
242
|
+
}
|
|
211
243
|
const projectId = (_a = req.query["projectId"]) === null || _a === void 0 ? void 0 : _a.toString();
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
244
|
+
if (!projectId) {
|
|
245
|
+
return Response.sendErrorResponse(req, res, new BadDataException("Project ID is required"));
|
|
246
|
+
}
|
|
247
|
+
const userId = oneuptimeRequest.userAuthorization.userId.toString();
|
|
248
|
+
const userTenantAccessPermission = await AccessTokenService.getUserTenantAccessPermission(new ObjectID(userId), new ObjectID(projectId));
|
|
249
|
+
if (!userTenantAccessPermission) {
|
|
250
|
+
return Response.sendErrorResponse(req, res, new NotAuthorizedException("You do not have access to this project."));
|
|
215
251
|
}
|
|
216
252
|
/*
|
|
217
253
|
* Redirect to GitHub App installation page
|
|
@@ -231,134 +267,25 @@ export default class GitHubAPI {
|
|
|
231
267
|
: new BadDataException("An error occurred"));
|
|
232
268
|
}
|
|
233
269
|
});
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
if (!userTenantAccessPermission) {
|
|
254
|
-
return Response.sendErrorResponse(req, res, new NotAuthorizedException("You do not have access to this project."));
|
|
255
|
-
}
|
|
256
|
-
const repositories = await GitHubUtil.listRepositoriesForInstallation(installationId);
|
|
257
|
-
return Response.sendJsonObjectResponse(req, res, {
|
|
258
|
-
repositories: repositories,
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
catch (error) {
|
|
262
|
-
logger.error("GitHub List Repositories Error:", getLogAttributesFromRequest(req));
|
|
263
|
-
logger.error(error, getLogAttributesFromRequest(req));
|
|
264
|
-
// Handle stale installation ID - clear it from the project and return specific error
|
|
265
|
-
if (error instanceof GitHubInstallationNotFoundError) {
|
|
266
|
-
const projectId = (_c = req.params["projectId"]) === null || _c === void 0 ? void 0 : _c.toString();
|
|
267
|
-
if (projectId) {
|
|
268
|
-
try {
|
|
269
|
-
// Clear the stale installation ID from the project
|
|
270
|
-
await ProjectService.updateOneById({
|
|
271
|
-
id: new ObjectID(projectId),
|
|
272
|
-
data: {
|
|
273
|
-
gitHubAppInstallationId: null,
|
|
274
|
-
},
|
|
275
|
-
props: {
|
|
276
|
-
isRoot: true,
|
|
277
|
-
},
|
|
278
|
-
});
|
|
279
|
-
logger.info(`Cleared stale GitHub App installation ID from project ${projectId}`, getLogAttributesFromRequest(req));
|
|
280
|
-
}
|
|
281
|
-
catch (clearError) {
|
|
282
|
-
logger.error("Failed to clear stale installation ID from project:", getLogAttributesFromRequest(req));
|
|
283
|
-
logger.error(clearError, getLogAttributesFromRequest(req));
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
// Return the specific error so the frontend knows to prompt reinstallation
|
|
287
|
-
return Response.sendErrorResponse(req, res, error);
|
|
288
|
-
}
|
|
289
|
-
return Response.sendErrorResponse(req, res, error instanceof Error
|
|
290
|
-
? new BadDataException(error.message)
|
|
291
|
-
: new BadDataException("An error occurred"));
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
// Connect a repository to a project
|
|
295
|
-
router.post("/github/repository/connect", UserMiddleware.getUserMiddleware, async (req, res) => {
|
|
296
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
297
|
-
try {
|
|
298
|
-
const oneuptimeRequest = req;
|
|
299
|
-
// Require authentication
|
|
300
|
-
if (!oneuptimeRequest.userAuthorization) {
|
|
301
|
-
return Response.sendErrorResponse(req, res, new NotAuthenticatedException("Authentication is required to connect a repository."));
|
|
302
|
-
}
|
|
303
|
-
const body = req.body;
|
|
304
|
-
const projectId = (_a = body["projectId"]) === null || _a === void 0 ? void 0 : _a.toString();
|
|
305
|
-
const installationId = (_b = body["installationId"]) === null || _b === void 0 ? void 0 : _b.toString();
|
|
306
|
-
const repositoryName = (_c = body["repositoryName"]) === null || _c === void 0 ? void 0 : _c.toString();
|
|
307
|
-
const organizationName = (_d = body["organizationName"]) === null || _d === void 0 ? void 0 : _d.toString();
|
|
308
|
-
const name = (_e = body["name"]) === null || _e === void 0 ? void 0 : _e.toString();
|
|
309
|
-
const defaultBranch = (_f = body["defaultBranch"]) === null || _f === void 0 ? void 0 : _f.toString();
|
|
310
|
-
const repositoryUrl = (_g = body["repositoryUrl"]) === null || _g === void 0 ? void 0 : _g.toString();
|
|
311
|
-
const description = (_h = body["description"]) === null || _h === void 0 ? void 0 : _h.toString();
|
|
312
|
-
if (!projectId) {
|
|
313
|
-
return Response.sendErrorResponse(req, res, new BadDataException("Project ID is required"));
|
|
314
|
-
}
|
|
315
|
-
if (!installationId) {
|
|
316
|
-
return Response.sendErrorResponse(req, res, new BadDataException("Installation ID is required"));
|
|
317
|
-
}
|
|
318
|
-
// Verify user has access to this project
|
|
319
|
-
const userTenantAccessPermission = await AccessTokenService.getUserTenantAccessPermission(oneuptimeRequest.userAuthorization.userId, new ObjectID(projectId));
|
|
320
|
-
if (!userTenantAccessPermission) {
|
|
321
|
-
return Response.sendErrorResponse(req, res, new NotAuthorizedException("You do not have access to this project."));
|
|
322
|
-
}
|
|
323
|
-
if (!repositoryName) {
|
|
324
|
-
return Response.sendErrorResponse(req, res, new BadDataException("Repository name is required"));
|
|
325
|
-
}
|
|
326
|
-
if (!organizationName) {
|
|
327
|
-
return Response.sendErrorResponse(req, res, new BadDataException("Organization name is required"));
|
|
328
|
-
}
|
|
329
|
-
// Create the code repository record
|
|
330
|
-
const codeRepository = new CodeRepository();
|
|
331
|
-
codeRepository.projectId = new ObjectID(projectId);
|
|
332
|
-
codeRepository.name = name || `${organizationName}/${repositoryName}`;
|
|
333
|
-
codeRepository.repositoryHostedAt = CodeRepositoryType.GitHub;
|
|
334
|
-
codeRepository.organizationName = organizationName;
|
|
335
|
-
codeRepository.repositoryName = repositoryName;
|
|
336
|
-
codeRepository.mainBranchName = defaultBranch || "main";
|
|
337
|
-
codeRepository.gitHubAppInstallationId = installationId;
|
|
338
|
-
if (repositoryUrl) {
|
|
339
|
-
codeRepository.repositoryUrl = URL.fromString(repositoryUrl);
|
|
340
|
-
}
|
|
341
|
-
if (description) {
|
|
342
|
-
codeRepository.description = description;
|
|
343
|
-
}
|
|
344
|
-
const createdRepository = await CodeRepositoryService.create({
|
|
345
|
-
data: codeRepository,
|
|
346
|
-
props: {
|
|
347
|
-
isRoot: true,
|
|
348
|
-
},
|
|
349
|
-
});
|
|
350
|
-
return Response.sendJsonObjectResponse(req, res, {
|
|
351
|
-
repository: BaseModel.toJSON(createdRepository, CodeRepository),
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
catch (error) {
|
|
355
|
-
logger.error("GitHub Connect Repository Error:", getLogAttributesFromRequest(req));
|
|
356
|
-
logger.error(error, getLogAttributesFromRequest(req));
|
|
357
|
-
return Response.sendErrorResponse(req, res, error instanceof Error
|
|
358
|
-
? new BadDataException(error.message)
|
|
359
|
-
: new BadDataException("An error occurred"));
|
|
360
|
-
}
|
|
361
|
-
});
|
|
270
|
+
/*
|
|
271
|
+
* GET /github/repositories/:projectId/:installationId and
|
|
272
|
+
* POST /github/repository/connect used to live here. Both are gone.
|
|
273
|
+
*
|
|
274
|
+
* Both took an installation ID straight from the caller and checked only
|
|
275
|
+
* that the caller could access the project THEY had named — a comparison
|
|
276
|
+
* the caller controls both sides of, since anyone can create a project and
|
|
277
|
+
* own it. The listing route would then return any installation's private
|
|
278
|
+
* repository list (an enumeration oracle over a small integer space), and
|
|
279
|
+
* the connect route would persist the caller's installation ID onto a
|
|
280
|
+
* CodeRepository row, which is exactly the self-asserted binding the
|
|
281
|
+
* repository-token endpoint later minted a `ghs_` token from.
|
|
282
|
+
*
|
|
283
|
+
* Nothing called them: repositories are imported automatically by the
|
|
284
|
+
* install callback below and kept in sync by the installation webhooks, so
|
|
285
|
+
* the binding is always established by GitHub rather than asserted by a
|
|
286
|
+
* client. There is no supported way to name an installation ID over the
|
|
287
|
+
* API any more, and that is deliberate — see GitHubInstallationBinding.
|
|
288
|
+
*/
|
|
362
289
|
// GitHub webhook handler
|
|
363
290
|
router.post("/github/webhook", async (req, res) => {
|
|
364
291
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubAPI.js","sourceRoot":"","sources":["../../../../Server/API/GitHubAPI.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GitHubAPI.js","sourceRoot":"","sources":["../../../../Server/API/GitHubAPI.ts"],"names":[],"mappings":"AAAA,OAAO,OAKN,MAAM,kBAAkB,CAAC;AAC1B,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,yBAAyB,MAAM,iDAAiD,CAAC;AACxF,OAAO,sBAAsB,MAAM,8CAA8C,CAAC;AAClF,OAAO,MAAM,EAAE,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAC/D,OAAO,qBAEN,MAAM,mCAAmC,CAAC;AAC3C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,kBAAkB,MAAM,gCAAgC,CAAC;AAEhE,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,YAAY,MAAM,uBAAuB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B;;;;;;;;;;;;;;;OAeG;IACK,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAC/C,cAAsB;QAEtB,MAAM,UAAU,GAAoB,EAAE,CAAC;QAEvC,MAAM,QAAQ,GAAmB,MAAM,cAAc,CAAC,MAAM,CAAC;YAC3D,KAAK,EAAE;gBACL,uBAAuB,EAAE,cAAc;aACxC;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;aACV;YACD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;gBACf,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,+EAA+E;IACvE,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAClE,cAAsB;QAEtB,MAAM,UAAU,GACd,MAAM,SAAS,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;QAE/D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACT,sDAAsD,cAAc,+BAA+B,CACpG,CAAC;YACF,OAAO;QACT,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,YAAY,GAChB,MAAM,qBAAqB,CAAC,2BAA2B,CAAC;gBACtD,SAAS,EAAE,SAAS;gBACpB,cAAc,EAAE,cAAc;aAC/B,CAAC,CAAC;YAEL,MAAM,CAAC,IAAI,CACT,4BAA4B,YAAY,CAAC,QAAQ,kBAAkB,YAAY,CAAC,OAAO,0BAA0B,SAAS,CAAC,QAAQ,EAAE,qBAAqB,cAAc,EAAE,CAC3K,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,KAAK,CAAC,iCAAiC,CACpD,cAAsB,EACtB,mBAA8B;;QAE9B,KAAK,MAAM,iBAAiB,IAAI,mBAAmB,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAuB,MAAC,iBAAgC,aAAhC,iBAAiB,uBAAjB,iBAAiB,CACrD,WAAW,CACZ,0CAAE,QAAQ,EAAE,CAAC;YAEd,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAW,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEjD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,SAAS;YACX,CAAC;YAED,MAAM,gBAAgB,GAAW,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACnE,MAAM,cAAc,GAAW,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAElE,MAAM,YAAY,GAAW,MAAM,qBAAqB,CAAC,QAAQ,CAAC;gBAChE,KAAK,EAAE;oBACL,uBAAuB,EAAE,cAAc;oBACvC,gBAAgB,EAAE,gBAAgB;oBAClC,cAAc,EAAE,cAAc;iBAC/B;gBACD,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CACT,2BAA2B,YAAY,6BAA6B,QAAQ,kBAAkB,cAAc,GAAG,CAChH,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,SAAS;QACd,MAAM,MAAM,GAAkB,OAAO,CAAC,SAAS,EAAE,CAAC;QAElD;;;;WAIG;QACH,MAAM,CAAC,GAAG,CACR,uBAAuB,EACvB,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,EAAE;;YAClD,IAAI,CAAC;gBACH,wEAAwE;gBACxE,MAAM,KAAK,GAAuB,MAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,0CAAE,QAAQ,EAAE,CAAC;gBAEjE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,6BAA6B,CAAC,CACpD,CAAC;gBACJ,CAAC;gBAED,2CAA2C;gBAC3C,IAAI,SAA6B,CAAC;gBAClC,IAAI,MAA0B,CAAC;gBAE/B,IAAI,CAAC;oBACH,MAAM,YAAY,GAChB,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACxC,SAAS,GAAG,YAAY,CAAC,WAAW,CAAuB,CAAC;oBAC5D,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAuB,CAAC;gBACxD,CAAC;gBAAC,WAAM,CAAC;oBACP,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAClB,iFAAiF,CAClF,CACF,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,iCAAiC,CAAC,CACxD,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,8BAA8B,CAAC,CACrD,CAAC;gBACJ,CAAC;gBAED,8CAA8C;gBAC9C,MAAM,0BAA0B,GAC9B,MAAM,kBAAkB,CAAC,6BAA6B,CACpD,IAAI,QAAQ,CAAC,MAAM,CAAC,EACpB,IAAI,QAAQ,CAAC,SAAS,CAAC,CACxB,CAAC;gBAEJ,IAAI,CAAC,0BAA0B,EAAE,CAAC;oBAChC,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,sBAAsB,CACxB,yCAAyC,CAC1C,CACF,CAAC;gBACJ,CAAC;gBAED,sEAAsE;gBACtE,MAAM,cAAc,GAClB,MAAA,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,0CAAE,QAAQ,EAAE,CAAC;gBAE3C,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAClB,mEAAmE,CACpE,CACF,CAAC;gBACJ,CAAC;gBAED;;;;;;;;;;;;;;;;;mBAiBG;gBACH,MAAM,SAAS,GAAuB,MAAA,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,QAAQ,EAAE,CAAC;gBAEpE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAClB,+MAA+M,CAChN,CACF,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,UAAU,CAAC,8BAA8B,CAAC;wBAC9C,SAAS,EAAE,SAAS;wBACpB,cAAc,EAAE,cAAc;qBAC/B,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,iBAAiB,EAAE,CAAC;oBAC3B,MAAM,CAAC,KAAK,CACV,uDAAuD,cAAc,eAAe,SAAS,sDAAsD,EACnJ,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;oBACF,MAAM,CAAC,KAAK,CACV,iBAAiB,EACjB,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;oBAEF,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,iBAAiB,YAAY,KAAK;wBAChC,CAAC,CAAC,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC;wBACjD,CAAC,CAAC,IAAI,gBAAgB,CAClB,gDAAgD,CACjD,CACN,CAAC;gBACJ,CAAC;gBAED;;;mBAGG;gBACH,MAAM,cAAc,CAAC,aAAa,CAAC;oBACjC,EAAE,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC;oBAC3B,IAAI,EAAE;wBACJ,uBAAuB,EAAE,cAAc;qBACxC;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEH;;;;;mBAKG;gBACH,IAAI,CAAC;oBACH,MAAM,YAAY,GAChB,MAAM,qBAAqB,CAAC,2BAA2B,CAAC;wBACtD,SAAS,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC;wBAClC,cAAc,EAAE,cAAc;qBAC/B,CAAC,CAAC;oBAEL,MAAM,CAAC,IAAI,CACT,2BAA2B,cAAc,cAAc,YAAY,CAAC,QAAQ,kBAAkB,YAAY,CAAC,OAAO,0BAA0B,SAAS,EAAE,EACvJ,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gBACJ,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,MAAM,CAAC,KAAK,CACV,yEAAyE,cAAc,iBAAiB,SAAS,GAAG,EACpH,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;oBACF,MAAM,CAAC,KAAK,CACV,WAAW,EACX,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gBACJ,CAAC;gBAED,kDAAkD;gBAClD,MAAM,WAAW,GAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,SAAS,oCAAoC,cAAc,EAAE,CAAC;gBAE9H,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CACV,6BAA6B,EAC7B,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gBACF,MAAM,CAAC,KAAK,CACV,KAAK,EACL,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gBACF,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,KAAK,YAAY,KAAK;oBACpB,CAAC,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;oBACrC,CAAC,CAAC,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,CAC9C,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,mCAAmC;QACnC,MAAM,CAAC,GAAG,CACR,sBAAsB,EACtB,cAAc,CAAC,iBAAiB,EAChC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,EAAE;;YAClD,IAAI,CAAC;gBACH,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAClB,2DAA2D,CAC5D,CACF,CAAC;gBACJ,CAAC;gBAED,MAAM,gBAAgB,GAAqB,GAAuB,CAAC;gBAEnE;;;;;;;mBAOG;gBACH,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;oBACxC,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,yBAAyB,CAC3B,uDAAuD,CACxD,CACF,CAAC;gBACJ,CAAC;gBAED,MAAM,SAAS,GACb,MAAA,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,0CAAE,QAAQ,EAAE,CAAC;gBAErC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,wBAAwB,CAAC,CAC/C,CAAC;gBACJ,CAAC;gBAED,MAAM,MAAM,GACV,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAEvD,MAAM,0BAA0B,GAC9B,MAAM,kBAAkB,CAAC,6BAA6B,CACpD,IAAI,QAAQ,CAAC,MAAM,CAAC,EACpB,IAAI,QAAQ,CAAC,SAAS,CAAC,CACxB,CAAC;gBAEJ,IAAI,CAAC,0BAA0B,EAAE,CAAC;oBAChC,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,sBAAsB,CACxB,yCAAyC,CAC1C,CACF,CAAC;gBACJ,CAAC;gBAED;;;;mBAIG;gBACH,MAAM,KAAK,GAAW,YAAY,CAAC,eAAe,CAChD,EAAE,SAAS,EAAE,MAAM,EAAE,EACrB,IAAI,CACL,CAAC;gBAEF,MAAM,WAAW,GAAW,GAAG,aAAa,CAAC,QAAQ,EAAE,0BAA0B,CAAC;gBAClF,MAAM,UAAU,GAAW,2BAA2B,aAAa,4BAA4B,kBAAkB,CAAC,KAAK,CAAC,iBAAiB,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;gBAE3K,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CACV,gCAAgC,EAChC,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gBACF,MAAM,CAAC,KAAK,CACV,KAAK,EACL,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gBACF,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,KAAK,YAAY,KAAK;oBACpB,CAAC,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;oBACrC,CAAC,CAAC,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,CAC9C,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;QAEF;;;;;;;;;;;;;;;;;;WAkBG;QAEH,yBAAyB;QACzB,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,EAAE;;YAClD,IAAI,CAAC;gBACH,MAAM,SAAS,GAAuB,GAAG,CAAC,OAAO,CAC/C,qBAAqB,CACA,CAAC;gBACxB,MAAM,KAAK,GAAuB,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAEjD,CAAC;gBAEd,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,2BAA2B,CAAC,CAClD,CAAC;gBACJ,CAAC;gBAED,0CAA0C;gBAC1C,MAAM,OAAO,GAAW,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEjD,2BAA2B;gBAC3B,MAAM,OAAO,GAAY,UAAU,CAAC,sBAAsB,CACxD,OAAO,EACP,SAAS,CACV,CAAC;gBAEF,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,2BAA2B,CAAC,CAClD,CAAC;gBACJ,CAAC;gBAED,MAAM,CAAC,KAAK,CACV,kCAAkC,KAAK,EAAE,EACzC,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gBAEF,gEAAgE;gBAChE,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;oBAC7B,MAAM,MAAM,GAAuB,MAAA,MAAC,GAAG,CAAC,IAAmB,0CACzD,QAAQ,CACT,0CAAE,QAAQ,EAAE,CAAC;oBACd,MAAM,cAAc,GAAuB,MAAA,MACzC,MAAC,GAAG,CAAC,IAAmB,0CAAG,cAAc,CAC1C,0CAAG,IAAI,CAAC,0CAAE,QAAQ,EAAE,CAAC;oBAEtB;;;;uBAIG;oBACH,IAAI,MAAM,KAAK,SAAS,IAAI,cAAc,EAAE,CAAC;wBAC3C,IAAI,CAAC;4BACH,MAAM,SAAS,CAAC,+CAA+C,CAC7D,cAAc,CACf,CAAC;wBACJ,CAAC;wBAAC,OAAO,WAAW,EAAE,CAAC;4BACrB,MAAM,CAAC,KAAK,CACV,6DAA6D,cAAc,GAAG,EAC9E,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;4BACF,MAAM,CAAC,KAAK,CACV,WAAW,EACX,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAED,IAAI,MAAM,KAAK,SAAS,IAAI,cAAc,EAAE,CAAC;wBAC3C,MAAM,CAAC,IAAI,CACT,2BAA2B,cAAc,yCAAyC,EAClF,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;wBAEF,IAAI,CAAC;4BACH,2DAA2D;4BAC3D,MAAM,cAAc,CAAC,QAAQ,CAAC;gCAC5B,KAAK,EAAE;oCACL,uBAAuB,EAAE,cAAc;iCACxC;gCACD,IAAI,EAAE;oCACJ,uBAAuB,EAAE,IAAyB;iCACnD;gCACD,KAAK,EAAE,IAAI;gCACX,IAAI,EAAE,CAAC;gCACP,KAAK,EAAE;oCACL,MAAM,EAAE,IAAI;iCACb;6BACF,CAAC,CAAC;4BAEH,uEAAuE;4BACvE,MAAM,qBAAqB,CAAC,QAAQ,CAAC;gCACnC,KAAK,EAAE;oCACL,uBAAuB,EAAE,cAAc;iCACxC;gCACD,IAAI,EAAE;oCACJ,uBAAuB,EAAE,IAAyB;iCACnD;gCACD,KAAK,EAAE,KAAK;gCACZ,IAAI,EAAE,CAAC;gCACP,KAAK,EAAE;oCACL,MAAM,EAAE,IAAI;iCACb;6BACF,CAAC,CAAC;4BAEH,MAAM,CAAC,IAAI,CACT,gDAAgD,cAAc,gBAAgB,EAC9E,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;wBACJ,CAAC;wBAAC,OAAO,UAAU,EAAE,CAAC;4BACpB,MAAM,CAAC,KAAK,CACV,2CAA2C,cAAc,iBAAiB,EAC1E,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;4BACF,MAAM,CAAC,KAAK,CACV,UAAU,EACV,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED;;;;mBAIG;gBACH,IAAI,KAAK,KAAK,2BAA2B,EAAE,CAAC;oBAC1C,MAAM,IAAI,GAAe,GAAG,CAAC,IAAkB,CAAC;oBAChD,MAAM,cAAc,GAAuB,MAAA,MACzC,IAAI,CAAC,cAAc,CACpB,0CAAG,IAAI,CAAC,0CAAE,QAAQ,EAAE,CAAC;oBAEtB,IAAI,cAAc,EAAE,CAAC;wBACnB,MAAM,iBAAiB,GACpB,IAAI,CAAC,oBAAoB,CAAe,IAAI,EAAE,CAAC;wBAClD,MAAM,mBAAmB,GACtB,IAAI,CAAC,sBAAsB,CAAe,IAAI,EAAE,CAAC;wBAEpD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACjC,IAAI,CAAC;gCACH,MAAM,SAAS,CAAC,+CAA+C,CAC7D,cAAc,CACf,CAAC;4BACJ,CAAC;4BAAC,OAAO,WAAW,EAAE,CAAC;gCACrB,MAAM,CAAC,KAAK,CACV,mEAAmE,cAAc,GAAG,EACpF,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gCACF,MAAM,CAAC,KAAK,CACV,WAAW,EACX,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;4BACJ,CAAC;wBACH,CAAC;wBAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACnC,IAAI,CAAC;gCACH,MAAM,SAAS,CAAC,iCAAiC,CAC/C,cAAc,EACd,mBAAmB,CACpB,CAAC;4BACJ,CAAC;4BAAC,OAAO,WAAW,EAAE,CAAC;gCACrB,MAAM,CAAC,KAAK,CACV,6DAA6D,cAAc,GAAG,EAC9E,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gCACF,MAAM,CAAC,KAAK,CACV,WAAW,EACX,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED;;;;mBAIG;gBAEH,OAAO,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE;oBAC/C,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,kBAAkB;iBACd,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CACV,uBAAuB,EACvB,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gBACF,MAAM,CAAC,KAAK,CACV,KAAK,EACL,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;gBACF,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,KAAK,YAAY,KAAK;oBACpB,CAAC,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;oBACrC,CAAC,CAAC,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,CAC9C,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -1,16 +1,137 @@
|
|
|
1
|
+
import Team from "../../Models/DatabaseModels/Team";
|
|
2
|
+
import TeamMember from "../../Models/DatabaseModels/TeamMember";
|
|
1
3
|
import User from "../../Models/DatabaseModels/User";
|
|
4
|
+
import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
5
|
+
import LIMIT_MAX, { DEFAULT_LIMIT } from "../../Types/Database/LimitMax";
|
|
6
|
+
import BadDataException from "../../Types/Exception/BadDataException";
|
|
2
7
|
import NotFoundException from "../../Types/Exception/NotFoundException";
|
|
3
8
|
import ObjectID from "../../Types/ObjectID";
|
|
9
|
+
import PositiveNumber from "../../Types/PositiveNumber";
|
|
10
|
+
import TeamMembersByProject from "../../Utils/TeamMembersByProject";
|
|
11
|
+
import MasterAdminAuthorization from "../Middleware/MasterAdminAuthorization";
|
|
12
|
+
import TeamMemberService from "../Services/TeamMemberService";
|
|
4
13
|
import UserService from "../Services/UserService";
|
|
14
|
+
import CommonAPI from "./CommonAPI";
|
|
5
15
|
import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
|
|
6
16
|
import Response from "../Utils/Response";
|
|
7
17
|
import BaseAPI from "./BaseAPI";
|
|
8
18
|
const BLANK_PROFILE_PICTURE_PATH = "/usr/src/Common/UI/Images/users/blank-profile.svg";
|
|
9
19
|
export default class UserAPI extends BaseAPI {
|
|
10
20
|
constructor() {
|
|
11
|
-
var _a;
|
|
21
|
+
var _a, _b, _c;
|
|
12
22
|
super(User, UserService);
|
|
13
|
-
|
|
23
|
+
/*
|
|
24
|
+
* Every project one user belongs to, one row per project, for the Admin
|
|
25
|
+
* Dashboard's User > Projects page.
|
|
26
|
+
*
|
|
27
|
+
* There is no CRUD list that answers this. `GET /team-member` scoped to a
|
|
28
|
+
* user returns MEMBERSHIPS - a (user, team) pair - so a user on three teams
|
|
29
|
+
* of one project comes back as three rows and reads as three projects. This
|
|
30
|
+
* endpoint folds those into one row per project carrying every team the
|
|
31
|
+
* user is on there, which is both what the page renders and what any
|
|
32
|
+
* caller asking "which projects is this person in?" actually wants.
|
|
33
|
+
*
|
|
34
|
+
* Master-admin only: it deliberately reads across every tenant, which is
|
|
35
|
+
* exactly what no project-scoped caller is allowed to do. The middleware is
|
|
36
|
+
* the gate; the read below runs as root because a master admin is not a
|
|
37
|
+
* member of the projects being listed and so has no tenant permissions to
|
|
38
|
+
* read them with.
|
|
39
|
+
*/
|
|
40
|
+
this.router.post(`${(_a = new this.entityType().getCrudApiPath()) === null || _a === void 0 ? void 0 : _a.toString()}/:userId/projects`, MasterAdminAuthorization.isAuthorizedMasterAdminMiddleware, async (req, res, next) => {
|
|
41
|
+
try {
|
|
42
|
+
const userId = UserAPI.getUserIdFromParams(req);
|
|
43
|
+
const memberships = await TeamMemberService.findBy({
|
|
44
|
+
query: {
|
|
45
|
+
userId: userId,
|
|
46
|
+
},
|
|
47
|
+
select: {
|
|
48
|
+
_id: true,
|
|
49
|
+
projectId: true,
|
|
50
|
+
teamId: true,
|
|
51
|
+
hasAcceptedInvitation: true,
|
|
52
|
+
createdAt: true,
|
|
53
|
+
project: {
|
|
54
|
+
_id: true,
|
|
55
|
+
name: true,
|
|
56
|
+
slug: true,
|
|
57
|
+
},
|
|
58
|
+
team: {
|
|
59
|
+
_id: true,
|
|
60
|
+
name: true,
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
limit: LIMIT_MAX,
|
|
64
|
+
skip: 0,
|
|
65
|
+
sort: {},
|
|
66
|
+
props: {
|
|
67
|
+
isRoot: true,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
const rows = TeamMembersByProject.sortByProjectName(TeamMembersByProject.groupByProject(memberships));
|
|
71
|
+
const skip = UserAPI.getPositiveIntegerParam(req.query["skip"], 0);
|
|
72
|
+
const limit = UserAPI.getPositiveIntegerParam(req.query["limit"], DEFAULT_LIMIT);
|
|
73
|
+
const page = rows.slice(skip, skip + limit);
|
|
74
|
+
return Response.sendJsonArrayResponse(req, res, page.map((row) => {
|
|
75
|
+
return UserAPI.serializeUserProjectMembership(userId, row);
|
|
76
|
+
}), new PositiveNumber(rows.length));
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
return next(err);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
/*
|
|
83
|
+
* Removes one user from one project - every team they belong to in it - in
|
|
84
|
+
* a single call.
|
|
85
|
+
*
|
|
86
|
+
* A row on the User > Projects page is a project, so "remove" there means
|
|
87
|
+
* "remove from the project". Doing that as N separate DELETEs from the
|
|
88
|
+
* browser is not equivalent: TeamMemberService.onBeforeDelete refuses to
|
|
89
|
+
* remove the last accepted member of a team that shouldHaveAtLeastOneMember
|
|
90
|
+
* (the Owners team), and it refuses per request - so a client-side loop
|
|
91
|
+
* deletes every other membership first and only then reports the failure,
|
|
92
|
+
* leaving the user stripped of the teams the admin was just told they had
|
|
93
|
+
* not lost. One deleteBy over the whole set runs that guard against all of
|
|
94
|
+
* the user's memberships in the project before anything is deleted.
|
|
95
|
+
*
|
|
96
|
+
* This is the master-admin twin of
|
|
97
|
+
* POST /team-member/remove-user-from-project, which takes its project from
|
|
98
|
+
* the request's tenant. A master admin is not a member of the project and
|
|
99
|
+
* sends no tenant, so the project is named in the body here - the
|
|
100
|
+
* master-admin middleware, not a tenant, is what authorizes the call.
|
|
101
|
+
*
|
|
102
|
+
* The delete runs with the CALLER'S props rather than as root, so the
|
|
103
|
+
* Owners-team and SCIM Push Groups guards still apply: a master admin can
|
|
104
|
+
* remove people, but not leave a project ownerless or fight the customer's
|
|
105
|
+
* identity provider behind its back.
|
|
106
|
+
*/
|
|
107
|
+
this.router.post(`${(_b = new this.entityType().getCrudApiPath()) === null || _b === void 0 ? void 0 : _b.toString()}/:userId/remove-from-project`, MasterAdminAuthorization.isAuthorizedMasterAdminMiddleware, async (req, res, next) => {
|
|
108
|
+
var _a;
|
|
109
|
+
try {
|
|
110
|
+
const userId = UserAPI.getUserIdFromParams(req);
|
|
111
|
+
const projectIdParam = (((_a = req.body) === null || _a === void 0 ? void 0 : _a["projectId"]) || "").trim();
|
|
112
|
+
if (!projectIdParam) {
|
|
113
|
+
return Response.sendErrorResponse(req, res, new BadDataException("Project ID is required"));
|
|
114
|
+
}
|
|
115
|
+
ObjectID.validateUUID(projectIdParam);
|
|
116
|
+
const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
117
|
+
const numberOfMembershipsDeleted = await TeamMemberService.deleteBy({
|
|
118
|
+
query: {
|
|
119
|
+
userId: userId,
|
|
120
|
+
projectId: new ObjectID(projectIdParam),
|
|
121
|
+
},
|
|
122
|
+
limit: LIMIT_MAX,
|
|
123
|
+
skip: 0,
|
|
124
|
+
props: props,
|
|
125
|
+
});
|
|
126
|
+
return Response.sendJsonObjectResponse(req, res, {
|
|
127
|
+
numberOfMembershipsDeleted: numberOfMembershipsDeleted,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
return next(err);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
this.router.get(`${(_c = new this.entityType().getCrudApiPath()) === null || _c === void 0 ? void 0 : _c.toString()}/profile-picture/:userId`, async (req, res) => {
|
|
14
135
|
const userIdParam = req.params["userId"];
|
|
15
136
|
if (!userIdParam) {
|
|
16
137
|
return this.sendBlankProfile(req, res);
|
|
@@ -52,6 +173,70 @@ export default class UserAPI extends BaseAPI {
|
|
|
52
173
|
}
|
|
53
174
|
});
|
|
54
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* The `:userId` in the path, rejected loudly if it is not a uuid.
|
|
178
|
+
*
|
|
179
|
+
* Validating rather than trusting matters even behind the master-admin gate:
|
|
180
|
+
* the value flows into a query, and a malformed id should fail as bad input
|
|
181
|
+
* rather than reach the database layer.
|
|
182
|
+
*/
|
|
183
|
+
static getUserIdFromParams(req) {
|
|
184
|
+
const userIdParam = (req.params["userId"] || "").trim();
|
|
185
|
+
if (!userIdParam) {
|
|
186
|
+
throw new BadDataException("User ID is required");
|
|
187
|
+
}
|
|
188
|
+
ObjectID.validateUUID(userIdParam);
|
|
189
|
+
return new ObjectID(userIdParam);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* A non-negative integer from a query string, or the fallback.
|
|
193
|
+
*
|
|
194
|
+
* Anything unparseable (missing, "abc", "-5", "1e9999") falls back rather
|
|
195
|
+
* than becoming NaN - a NaN skip/limit turns Array.slice into "return
|
|
196
|
+
* everything from 0", which would silently ignore paging instead of failing.
|
|
197
|
+
*/
|
|
198
|
+
static getPositiveIntegerParam(value, fallback) {
|
|
199
|
+
if (value === undefined || value === null || value === "") {
|
|
200
|
+
return fallback;
|
|
201
|
+
}
|
|
202
|
+
const parsed = Number(value.toString());
|
|
203
|
+
if (!Number.isFinite(parsed) || !Number.isInteger(parsed) || parsed < 0) {
|
|
204
|
+
return fallback;
|
|
205
|
+
}
|
|
206
|
+
return parsed;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* One grouped row as JSON.
|
|
210
|
+
*
|
|
211
|
+
* The row is sent as a TeamMember - the model the row is built from, and the
|
|
212
|
+
* one the Admin Dashboard's table is typed against - carrying the project it
|
|
213
|
+
* stands for. The aggregate fields (`teams`, the counts) are not columns of
|
|
214
|
+
* TeamMember, so they are attached after serialization; the client reads them
|
|
215
|
+
* off the raw JSON before hydrating the model.
|
|
216
|
+
*/
|
|
217
|
+
static serializeUserProjectMembership(userId, row) {
|
|
218
|
+
const teamMember = new TeamMember();
|
|
219
|
+
if (row.id) {
|
|
220
|
+
teamMember._id = row.id;
|
|
221
|
+
}
|
|
222
|
+
teamMember.userId = userId;
|
|
223
|
+
teamMember.hasAcceptedInvitation = row.hasAcceptedInvitation;
|
|
224
|
+
if (row.projectId) {
|
|
225
|
+
teamMember.projectId = row.projectId;
|
|
226
|
+
}
|
|
227
|
+
if (row.project) {
|
|
228
|
+
teamMember.project = row.project;
|
|
229
|
+
}
|
|
230
|
+
if (row.joinedAt) {
|
|
231
|
+
teamMember.createdAt = row.joinedAt;
|
|
232
|
+
}
|
|
233
|
+
const json = BaseModel.toJSON(teamMember, TeamMember);
|
|
234
|
+
json["teams"] = BaseModel.toJSONArray(row.teams, Team);
|
|
235
|
+
json["teamCount"] = row.teams.length;
|
|
236
|
+
json["pendingTeamCount"] = row.pendingTeamCount;
|
|
237
|
+
json["teamMemberIds"] = [...row.teamMemberIds];
|
|
238
|
+
return json;
|
|
239
|
+
}
|
|
55
240
|
sendBlankProfile(req, res) {
|
|
56
241
|
Response.setNoCacheHeaders(res);
|
|
57
242
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserAPI.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,kCAAkC,CAAC;AACpD,OAAO,iBAAiB,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"UserAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserAPI.ts"],"names":[],"mappings":"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"}
|