@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
|
@@ -319,6 +319,7 @@ export default class StatusPagePrivateUser extends BaseModel {
|
|
|
319
319
|
@TableColumn({
|
|
320
320
|
title: "Password",
|
|
321
321
|
hashed: true,
|
|
322
|
+
hashSaltColumn: "passwordSalt",
|
|
322
323
|
type: TableColumnType.HashedString,
|
|
323
324
|
})
|
|
324
325
|
@Column({
|
|
@@ -330,6 +331,35 @@ export default class StatusPagePrivateUser extends BaseModel {
|
|
|
330
331
|
})
|
|
331
332
|
public password?: HashedString = undefined;
|
|
332
333
|
|
|
334
|
+
/*
|
|
335
|
+
* Per-user salt mixed into `password`'s hash. Written by the database
|
|
336
|
+
* write path on every password write — never by an API caller, hence the
|
|
337
|
+
* empty access control and `computed: true`.
|
|
338
|
+
*
|
|
339
|
+
* Nullable on purpose: rows that predate per-user salts have none, and are
|
|
340
|
+
* verified against the legacy unsalted scheme until the next successful
|
|
341
|
+
* login re-hashes them with a fresh salt.
|
|
342
|
+
*/
|
|
343
|
+
@ColumnAccessControl({
|
|
344
|
+
create: [],
|
|
345
|
+
read: [],
|
|
346
|
+
update: [],
|
|
347
|
+
})
|
|
348
|
+
@TableColumn({
|
|
349
|
+
title: "Password Salt",
|
|
350
|
+
description: "Per-user random salt mixed into this user's password hash.",
|
|
351
|
+
computed: true,
|
|
352
|
+
type: TableColumnType.ShortText,
|
|
353
|
+
hideColumnInDocumentation: true,
|
|
354
|
+
})
|
|
355
|
+
@Column({
|
|
356
|
+
type: ColumnType.ShortText,
|
|
357
|
+
length: ColumnLength.ShortText,
|
|
358
|
+
unique: false,
|
|
359
|
+
nullable: true,
|
|
360
|
+
})
|
|
361
|
+
public passwordSalt?: string = undefined;
|
|
362
|
+
|
|
333
363
|
@ColumnAccessControl({
|
|
334
364
|
create: [],
|
|
335
365
|
read: [],
|
|
@@ -3,6 +3,7 @@ import MonitorGroup from "./MonitorGroup";
|
|
|
3
3
|
import Project from "./Project";
|
|
4
4
|
import StatusPage from "./StatusPage";
|
|
5
5
|
import StatusPageGroup from "./StatusPageGroup";
|
|
6
|
+
import StatusPageMonitorRule from "./StatusPageMonitorRule";
|
|
6
7
|
import User from "./User";
|
|
7
8
|
import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
|
|
8
9
|
import Route from "../../Types/API/Route";
|
|
@@ -520,6 +521,78 @@ export default class StatusPageResource extends BaseModel {
|
|
|
520
521
|
})
|
|
521
522
|
public statusPageGroupId?: ObjectID = undefined;
|
|
522
523
|
|
|
524
|
+
/*
|
|
525
|
+
* Set only on resources a StatusPageMonitorRule created. It is what lets the
|
|
526
|
+
* rule engine undo its own work without ever touching a resource a human
|
|
527
|
+
* added by hand, so it is deliberately not writable through the API - the
|
|
528
|
+
* engine sets it as root.
|
|
529
|
+
*/
|
|
530
|
+
@ColumnAccessControl({
|
|
531
|
+
create: [],
|
|
532
|
+
read: [
|
|
533
|
+
Permission.ProjectOwner,
|
|
534
|
+
Permission.ProjectAdmin,
|
|
535
|
+
Permission.ProjectMember,
|
|
536
|
+
Permission.Viewer,
|
|
537
|
+
Permission.StatusPageAdmin,
|
|
538
|
+
Permission.StatusPageMember,
|
|
539
|
+
Permission.StatusPageViewer,
|
|
540
|
+
Permission.ReadStatusPageResource,
|
|
541
|
+
],
|
|
542
|
+
update: [],
|
|
543
|
+
})
|
|
544
|
+
@TableColumn({
|
|
545
|
+
manyToOneRelationColumn: "statusPageMonitorRuleId",
|
|
546
|
+
type: TableColumnType.Entity,
|
|
547
|
+
modelType: StatusPageMonitorRule,
|
|
548
|
+
title: "Status Page Monitor Rule",
|
|
549
|
+
description:
|
|
550
|
+
"Rule that added this resource to the status page, if it was added by a rule instead of by hand",
|
|
551
|
+
})
|
|
552
|
+
@ManyToOne(
|
|
553
|
+
() => {
|
|
554
|
+
return StatusPageMonitorRule;
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
eager: false,
|
|
558
|
+
nullable: true,
|
|
559
|
+
onDelete: "CASCADE",
|
|
560
|
+
orphanedRowAction: "nullify",
|
|
561
|
+
},
|
|
562
|
+
)
|
|
563
|
+
@JoinColumn({ name: "statusPageMonitorRuleId" })
|
|
564
|
+
public statusPageMonitorRule?: StatusPageMonitorRule = undefined;
|
|
565
|
+
|
|
566
|
+
@ColumnAccessControl({
|
|
567
|
+
create: [],
|
|
568
|
+
read: [
|
|
569
|
+
Permission.ProjectOwner,
|
|
570
|
+
Permission.ProjectAdmin,
|
|
571
|
+
Permission.ProjectMember,
|
|
572
|
+
Permission.Viewer,
|
|
573
|
+
Permission.StatusPageAdmin,
|
|
574
|
+
Permission.StatusPageMember,
|
|
575
|
+
Permission.StatusPageViewer,
|
|
576
|
+
Permission.ReadStatusPageResource,
|
|
577
|
+
],
|
|
578
|
+
update: [],
|
|
579
|
+
})
|
|
580
|
+
@Index()
|
|
581
|
+
@TableColumn({
|
|
582
|
+
type: TableColumnType.ObjectID,
|
|
583
|
+
required: false,
|
|
584
|
+
title: "Status Page Monitor Rule ID",
|
|
585
|
+
description:
|
|
586
|
+
"ID of the rule that added this resource, if it was added by a rule instead of by hand",
|
|
587
|
+
example: "d0e1f2a3-b4c5-4678-9abc-def012345678",
|
|
588
|
+
})
|
|
589
|
+
@Column({
|
|
590
|
+
type: ColumnType.ObjectID,
|
|
591
|
+
nullable: true,
|
|
592
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
593
|
+
})
|
|
594
|
+
public statusPageMonitorRuleId?: ObjectID = undefined;
|
|
595
|
+
|
|
523
596
|
@ColumnAccessControl({
|
|
524
597
|
create: [
|
|
525
598
|
Permission.ProjectOwner,
|
|
@@ -7,6 +7,7 @@ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessCo
|
|
|
7
7
|
import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
|
|
8
8
|
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
9
9
|
import ColumnType from "../../Types/Database/ColumnType";
|
|
10
|
+
import { getBigIntDatabaseTransformer } from "../../Types/Database/BigIntColumnTransformer";
|
|
10
11
|
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
11
12
|
import EnableDocumentation from "../../Types/Database/EnableDocumentation";
|
|
12
13
|
import TableColumn from "../../Types/Database/TableColumn";
|
|
@@ -436,26 +437,14 @@ export default class TraceDropFilter extends BaseModel {
|
|
|
436
437
|
type: ColumnType.BigPositiveNumber,
|
|
437
438
|
nullable: false,
|
|
438
439
|
default: 0,
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
* Postgres bigint comes back from the driver as a string. The UI
|
|
448
|
-
* renders this as a number, so normalize here rather than making
|
|
449
|
-
* every reader remember.
|
|
450
|
-
*/
|
|
451
|
-
from: (value: string | null | undefined): number | null => {
|
|
452
|
-
if (value === null || value === undefined) {
|
|
453
|
-
return null;
|
|
454
|
-
}
|
|
455
|
-
const parsed: number = parseInt(value, 10);
|
|
456
|
-
return isNaN(parsed) ? null : parsed;
|
|
457
|
-
},
|
|
458
|
-
},
|
|
440
|
+
/*
|
|
441
|
+
* Shared transformer, not an inline one: it has to preserve `undefined`
|
|
442
|
+
* so this NOT NULL column's DEFAULT 0 is what a create actually gets.
|
|
443
|
+
* An inline transformer that mapped `undefined` to `null` made every
|
|
444
|
+
* drop-filter insert fail the not-null constraint. See
|
|
445
|
+
* Types/Database/BigIntColumnTransformer.
|
|
446
|
+
*/
|
|
447
|
+
transformer: getBigIntDatabaseTransformer(),
|
|
459
448
|
})
|
|
460
449
|
public droppedCount?: number = undefined;
|
|
461
450
|
|
|
@@ -140,6 +140,7 @@ class User extends UserModel {
|
|
|
140
140
|
@TableColumn({
|
|
141
141
|
title: "Password",
|
|
142
142
|
hashed: true,
|
|
143
|
+
hashSaltColumn: "passwordSalt",
|
|
143
144
|
type: TableColumnType.HashedString,
|
|
144
145
|
})
|
|
145
146
|
@Column({
|
|
@@ -151,6 +152,35 @@ class User extends UserModel {
|
|
|
151
152
|
})
|
|
152
153
|
public password?: HashedString = undefined;
|
|
153
154
|
|
|
155
|
+
/*
|
|
156
|
+
* Per-user salt mixed into `password`'s hash. Written by the database
|
|
157
|
+
* write path on every password write — never by an API caller, hence the
|
|
158
|
+
* empty access control and `computed: true`.
|
|
159
|
+
*
|
|
160
|
+
* Nullable on purpose: rows that predate per-user salts have none, and are
|
|
161
|
+
* verified against the legacy unsalted scheme until the next successful
|
|
162
|
+
* login re-hashes them with a fresh salt.
|
|
163
|
+
*/
|
|
164
|
+
@ColumnAccessControl({
|
|
165
|
+
create: [],
|
|
166
|
+
read: [],
|
|
167
|
+
update: [],
|
|
168
|
+
})
|
|
169
|
+
@TableColumn({
|
|
170
|
+
title: "Password Salt",
|
|
171
|
+
description: "Per-user random salt mixed into this user's password hash.",
|
|
172
|
+
computed: true,
|
|
173
|
+
type: TableColumnType.ShortText,
|
|
174
|
+
hideColumnInDocumentation: true,
|
|
175
|
+
})
|
|
176
|
+
@Column({
|
|
177
|
+
type: ColumnType.ShortText,
|
|
178
|
+
length: ColumnLength.ShortText,
|
|
179
|
+
unique: false,
|
|
180
|
+
nullable: true,
|
|
181
|
+
})
|
|
182
|
+
public passwordSalt?: string = undefined;
|
|
183
|
+
|
|
154
184
|
@ColumnAccessControl({
|
|
155
185
|
create: [],
|
|
156
186
|
read: [Permission.CurrentUser],
|
|
@@ -69,6 +69,7 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
69
69
|
import GitHubUtil, {
|
|
70
70
|
GitHubInstallationToken,
|
|
71
71
|
} from "../Utils/CodeRepository/GitHub/GitHub";
|
|
72
|
+
import GitHubInstallationBinding from "../Utils/CodeRepository/GitHub/GitHubInstallationBinding";
|
|
72
73
|
import CodeRepositoryType from "../../Types/CodeRepository/CodeRepositoryType";
|
|
73
74
|
import URL from "../../Types/API/URL";
|
|
74
75
|
import PullRequestState from "../../Types/CodeRepository/PullRequestState";
|
|
@@ -1166,6 +1167,36 @@ export default class AIAgentDataAPI {
|
|
|
1166
1167
|
);
|
|
1167
1168
|
}
|
|
1168
1169
|
|
|
1170
|
+
/*
|
|
1171
|
+
* The project check above proves the ROW is in the agent's project.
|
|
1172
|
+
* It does not prove the INSTALLATION is — and those are different
|
|
1173
|
+
* questions, because the row's installation ID is just a number
|
|
1174
|
+
* stored on a record. Someone who could get an arbitrary
|
|
1175
|
+
* installation ID onto a row in a project they own would otherwise
|
|
1176
|
+
* pass every check to this point and be handed a live `ghs_` token
|
|
1177
|
+
* for another tenant's repositories. So re-derive the binding from
|
|
1178
|
+
* the project itself, right before minting.
|
|
1179
|
+
*/
|
|
1180
|
+
if (
|
|
1181
|
+
!codeRepository.projectId ||
|
|
1182
|
+
!(await GitHubInstallationBinding.isInstallationBoundToProject({
|
|
1183
|
+
projectId: codeRepository.projectId,
|
|
1184
|
+
installationId: codeRepository.gitHubAppInstallationId,
|
|
1185
|
+
}))
|
|
1186
|
+
) {
|
|
1187
|
+
logger.error(
|
|
1188
|
+
`Refusing to mint a GitHub token for code repository ${codeRepositoryId.toString()}: installation ${codeRepository.gitHubAppInstallationId} is not bound to project ${codeRepository.projectId?.toString()}.`,
|
|
1189
|
+
);
|
|
1190
|
+
|
|
1191
|
+
return Response.sendErrorResponse(
|
|
1192
|
+
req,
|
|
1193
|
+
res,
|
|
1194
|
+
new BadDataException(
|
|
1195
|
+
"This repository's GitHub App installation is not connected to its project. Please reconnect the GitHub App from Project Settings.",
|
|
1196
|
+
),
|
|
1197
|
+
);
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1169
1200
|
/*
|
|
1170
1201
|
* G11 guardrail: per-repo open-PR cap, enforced HERE because the
|
|
1171
1202
|
* token is the agent's only way to clone and push — a repo at its
|
package/Server/API/BaseAPI.ts
CHANGED
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
LIMIT_PER_PROJECT,
|
|
23
23
|
} from "../../Types/Database/LimitMax";
|
|
24
24
|
import PartialEntity from "../../Types/Database/PartialEntity";
|
|
25
|
+
import { coerceNumericColumnsInJSON } from "../../Types/Database/NumericColumnValue";
|
|
25
26
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
26
27
|
import BadRequestException from "../../Types/Exception/BadRequestException";
|
|
27
28
|
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
@@ -418,8 +419,18 @@ export default class BaseAPI<
|
|
|
418
419
|
);
|
|
419
420
|
}
|
|
420
421
|
|
|
421
|
-
|
|
422
|
-
|
|
422
|
+
/*
|
|
423
|
+
* Coerced the same way createItem's BaseModel.fromJSON coerces, so a
|
|
424
|
+
* PATCH and a POST agree on what a number column holds. The dashboard's
|
|
425
|
+
* number fields are `<input type="number">`, whose value is a string,
|
|
426
|
+
* and the save-time hooks read these values before Postgres would
|
|
427
|
+
* coerce them — a sample percentage of "10" was rejected as "not a
|
|
428
|
+
* number" on a form that had one filled in.
|
|
429
|
+
* github.com/OneUptime/oneuptime/issues/3027
|
|
430
|
+
*/
|
|
431
|
+
const item: PartialEntity<TBaseModel> = coerceNumericColumnsInJSON(
|
|
432
|
+
JSONFunctions.deserialize(dataInBody as JSONObject),
|
|
433
|
+
new this.entityType(),
|
|
423
434
|
) as PartialEntity<TBaseModel>;
|
|
424
435
|
|
|
425
436
|
delete (item as any)["_id"];
|