@oneuptime/common 13.0.8 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/AuditLog.ts +23 -15
- package/Models/DatabaseModels/GlobalConfig.ts +24 -0
- package/Models/DatabaseModels/Monitor.ts +3 -2
- package/Models/DatabaseModels/MonitorTemplate.ts +2 -1
- package/Scripts/generate-service-worker.js +65 -4
- package/Server/API/BaseAPI.ts +26 -5
- package/Server/API/GlobalConfigAPI.ts +228 -462
- package/Server/API/ProjectOIDC.ts +25 -16
- package/Server/API/ProjectSSO.ts +24 -16
- package/Server/API/StatusPageAPI.ts +100 -42
- package/Server/API/TeamMemberAPI.ts +10 -1
- package/Server/Enterprise/EnterpriseEdition.ts +649 -0
- package/Server/Enterprise/EnterpriseFeature.ts +48 -0
- package/Server/Enterprise/EnterpriseLicenseSnapshot.ts +192 -0
- package/Server/Enterprise/EnterpriseServerModule.ts +233 -0
- package/Server/EnvironmentConfig.ts +147 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Middleware/UserAuthorization.ts +38 -16
- package/Server/Services/AuditLogService.ts +84 -1079
- package/Server/Services/EnterpriseLicenseService.ts +38 -0
- package/Server/Services/GlobalConfigService.ts +80 -1
- package/Server/Services/MonitorProbeService.ts +116 -20
- package/Server/Services/MonitorService.ts +56 -4
- package/Server/Services/MonitorStatusTimelineService.ts +284 -0
- package/Server/Services/MonitorTemplateService.ts +26 -0
- package/Server/Services/ProjectService.ts +284 -0
- package/Server/Services/RumSessionPinService.ts +25 -6
- package/Server/Services/StatusPagePrivateUserService.ts +7 -3
- package/Server/Services/StatusPageService.ts +78 -1
- package/Server/Services/TeamMemberService.ts +11 -0
- package/Server/Services/TeamService.ts +10 -0
- package/Server/Services/UserService.ts +10 -17
- package/Server/Types/Database/Permissions/CreatePermission.ts +15 -0
- package/Server/Types/Database/Permissions/EditionPermission.ts +208 -18
- package/Server/Types/Database/Permissions/TablePermission.ts +10 -3
- package/Server/Types/Database/Permissions/UpdatePermission.ts +29 -0
- package/Server/Types/Markdown.ts +41 -0
- package/Server/Utils/CommunityEditionSsoReport.ts +361 -0
- package/Server/Utils/EditionEnforcement.ts +233 -0
- package/Server/Utils/FrontendEnvironment.ts +41 -2
- package/Server/Utils/InstanceHealth/RedisHealth.ts +12 -277
- package/Server/Utils/Monitor/AffectedResourceList.ts +190 -0
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +10 -1
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +543 -333
- package/Server/Utils/Monitor/MonitoringIntervalValidator.ts +116 -0
- package/Server/Utils/Workspace/Slack/Slack.ts +423 -10
- package/Tests/App/Accounts/LoginPasskey.test.tsx +18 -0
- package/Tests/App/Accounts/LoginSsoEdition.test.tsx +616 -0
- package/Tests/App/AdminDashboard/AdminAuthenticationSsoEdition.test.tsx +217 -0
- package/Tests/App/AdminDashboard/AdminEnterprisePluginPage.test.tsx +357 -0
- package/Tests/App/AdminDashboard/EnterpriseLicensesShell.test.tsx +214 -0
- package/Tests/App/AdminDashboard/GlobalSSOEnterpriseShells.test.tsx +271 -0
- package/Tests/App/AdminDashboard/HealthShells.test.tsx +659 -0
- package/Tests/App/Dashboard/AuditLogsAndComplianceShells.test.tsx +572 -0
- package/Tests/App/Dashboard/EnterpriseFeatureUpgrade.test.tsx +547 -0
- package/Tests/App/Dashboard/EnterprisePluginPage.test.tsx +667 -0
- package/Tests/App/Dashboard/IdentityEnterpriseShells.test.tsx +319 -0
- package/Tests/App/Dashboard/OnboardingSsoEmptyState.test.tsx +185 -0
- package/Tests/App/Dashboard/SecurityEventConnectionDiagnostics.test.tsx +45 -9
- package/Tests/App/Dashboard/SecurityEventDetailPanel.test.tsx +399 -0
- package/Tests/App/Dashboard/SecurityEventListRow.test.tsx +214 -0
- package/Tests/App/Dashboard/SecurityEventsEmptyState.test.tsx +1 -83
- package/Tests/App/Dashboard/SecurityEventsNavTabs.test.tsx +248 -0
- package/Tests/App/Dashboard/SecurityEventsViewer.test.tsx +1203 -0
- package/Tests/App/Dashboard/UserEmailCallSites.test.tsx +11 -91
- package/Tests/App/StatusPage/StatusPageSsoEmptyState.test.tsx +319 -0
- package/Tests/Helpers/RefreshAwareApiScan.ts +757 -0
- package/Tests/Helpers/TenantScopedRequestScan.ts +515 -0
- package/Tests/Scripts/GenerateServiceWorker.test.ts +931 -0
- package/Tests/Server/API/BaseAPICreateItemDoesNotMutateModel.test.ts +130 -0
- package/Tests/Server/API/GlobalConfigLicense.test.ts +742 -497
- package/Tests/Server/API/OnCallReadinessAPI.test.ts +35 -909
- package/Tests/Server/API/SsoProviderListingsEdition.test.ts +432 -0
- package/Tests/Server/API/TeamMemberLeaveScimLockEdition.test.ts +252 -0
- package/Tests/Server/Enterprise/EnterpriseEdition.test.ts +824 -0
- package/Tests/Server/Enterprise/EnterpriseFeatureActive.test.ts +643 -0
- package/Tests/Server/Enterprise/EnterpriseLicenseSnapshot.test.ts +294 -0
- package/Tests/Server/Enterprise/EnterpriseModelFeatureMap.test.ts +93 -0
- package/Tests/Server/Enterprise/EnterpriseOnlyModulesLiveInEe.test.ts +582 -0
- package/Tests/Server/Enterprise/EnterpriseServerModule.test.ts +247 -0
- package/Tests/Server/Enterprise/FakeEnterpriseModule.ts +502 -0
- package/Tests/Server/Enterprise/TestBillingFlag.ts +70 -0
- package/Tests/Server/EnvironmentConfigEnterpriseEdition.test.ts +314 -0
- package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +289 -0
- package/Tests/Server/Infrastructure/E2EClickHouseFixtureAccess.test.ts +5 -1
- package/Tests/Server/Middleware/UserAuthorization.test.ts +37 -2
- package/Tests/Server/Middleware/UserAuthorizationEditionEnforcement.test.ts +516 -0
- package/Tests/Server/Services/AuditLogService.test.ts +460 -990
- package/Tests/Server/Services/CreateAndReadResponsesKeepIds.test.ts +263 -0
- package/Tests/Server/Services/EnterpriseLicenseServiceKeyGeneration.test.ts +151 -0
- package/Tests/Server/Services/GlobalConfigServiceLicenseColumns.test.ts +357 -0
- package/Tests/Server/Services/MonitorDestinationInfoIPv6.test.ts +101 -0
- package/Tests/Server/Services/MonitorProbeServiceIntervalScheduling.test.ts +333 -0
- package/Tests/Server/Services/MonitorStatusTimelineDailyAggregates.test.ts +303 -0
- package/Tests/Server/Services/ProjectServiceAuditLogLicense.test.ts +701 -0
- package/Tests/Server/Services/ProjectServiceAuditLogSettingsCache.test.ts +31 -35
- package/Tests/Server/Services/ScimPushGroupsTeamLocksEdition.test.ts +431 -0
- package/Tests/Server/Services/SsoRequirementReadMasking.test.ts +419 -0
- package/Tests/Server/Services/SsoRequirementWriteGuard.test.ts +769 -0
- package/Tests/Server/Services/StatusPagePrivateUserInvitationPolicy.test.ts +94 -0
- package/Tests/Server/Services/UserAuthenticationService.test.ts +35 -0
- package/Tests/Server/Services/UserServiceSeatLimit.test.ts +94 -56
- package/Tests/Server/Types/Database/Permissions/EditionPermission.test.ts +1823 -0
- package/Tests/Server/Types/Markdown.test.ts +181 -0
- package/Tests/Server/Utils/CommunityEditionSsoReport.test.ts +565 -0
- package/Tests/Server/Utils/EditionEnforcement.test.ts +303 -0
- package/Tests/Server/Utils/FrontendEnvironment.test.ts +367 -0
- package/Tests/Server/Utils/InstanceHealth/RedisHealth.test.ts +38 -418
- package/Tests/Server/Utils/Monitor/AffectedResourceList.test.ts +518 -0
- package/Tests/Server/Utils/Monitor/Criteria/EvaluateOverTime.test.ts +24 -4
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +934 -96
- package/Tests/Server/Utils/Monitor/MonitoringIntervalValidator.test.ts +188 -0
- package/Tests/Server/Utils/Workspace/Slack/SlackMarkdownSectionSplit.test.ts +1209 -0
- package/Tests/Types/API/HostnameFromAuthority.test.ts +20 -10
- package/Tests/Types/API/HostnameIPv6.test.ts +149 -0
- package/Tests/Types/Database/CanonicalModelInstance.test.ts +190 -0
- package/Tests/UI/Components/EditionLabelLapseCopy.ts +104 -0
- package/Tests/UI/Components/EditionLabelLicenseManagerWiring.test.tsx +254 -0
- package/Tests/UI/Components/EditionLabelLicenseRefresh.test.tsx +84 -178
- package/Tests/UI/Components/EditionLabelLicenseStatus.test.tsx +1586 -0
- package/Tests/UI/Components/EditionLabelLicenseWritesGuard.test.tsx +157 -0
- package/Tests/UI/Components/Graphs/DayUptimeGraph.test.tsx +49 -2
- package/Tests/UI/Components/MarkdownConverters.test.ts +684 -0
- package/Tests/UI/Components/ModelListEmptyState.test.tsx +289 -0
- package/Tests/UI/Components/TelemetryViewer/TelemetryViewerEmptyContent.test.tsx +131 -0
- package/Tests/UI/EsbuildEnterpriseAlias.test.ts +1127 -0
- package/Tests/Utils/HostAddressUtil.test.ts +138 -0
- package/Tests/Utils/Monitor/MonitorDestinationUtil.test.ts +313 -0
- package/Tests/Utils/Monitor/MonitoringIntervalUtil.test.ts +304 -0
- package/Tests/Utils/StatusPage/UptimeDailyAggregateUtil.test.ts +248 -0
- package/Types/API/Hostname.ts +63 -16
- package/Types/Database/AccessControl/ColumnAccessControl.ts +19 -7
- package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +19 -7
- package/Types/Database/AccessControl/OwnerOnlyColumn.ts +15 -6
- package/Types/Database/CanonicalModelInstance.ts +102 -0
- package/Types/Database/TableColumn.ts +20 -6
- package/Types/EnterpriseLicense/EnterpriseLicensePeriods.ts +29 -0
- package/Types/IP/IPv6.ts +6 -1
- package/Types/Monitor/MonitorStep.ts +6 -1
- package/Types/Monitor/ProxmoxAlertTemplates.ts +1 -1
- package/Types/StatusPage/UptimeDailyAggregate.ts +110 -0
- package/UI/Components/EditionLabel/EditionLabel.tsx +796 -1195
- package/UI/Components/EditionLabel/LicenseManager.ts +119 -0
- package/UI/Components/Graphs/DayUptimeGraph.tsx +123 -15
- package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
- package/UI/Components/ModelList/ModelList.tsx +11 -1
- package/UI/Components/MonitorGraphs/Uptime.tsx +69 -0
- package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +28 -12
- package/UI/esbuild-enterprise.js +263 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +7 -2
- package/Utils/HostAddressUtil.ts +94 -0
- package/Utils/Monitor/MonitorDestinationUtil.ts +157 -0
- package/Utils/Monitor/MonitoringIntervalUtil.ts +436 -0
- package/Utils/StatusPage/UptimeDailyAggregateUtil.ts +192 -0
- package/build/dist/Models/AnalyticsModels/AuditLog.js +23 -15
- package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalConfig.js +25 -0
- package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +2 -2
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js +2 -1
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +26 -5
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/GlobalConfigAPI.js +148 -344
- package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
- package/build/dist/Server/API/ProjectOIDC.js +24 -16
- package/build/dist/Server/API/ProjectOIDC.js.map +1 -1
- package/build/dist/Server/API/ProjectSSO.js +24 -16
- package/build/dist/Server/API/ProjectSSO.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +93 -43
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/TeamMemberAPI.js +8 -1
- package/build/dist/Server/API/TeamMemberAPI.js.map +1 -1
- package/build/dist/Server/Enterprise/EnterpriseEdition.js +466 -0
- package/build/dist/Server/Enterprise/EnterpriseEdition.js.map +1 -0
- package/build/dist/Server/Enterprise/EnterpriseFeature.js +39 -0
- package/build/dist/Server/Enterprise/EnterpriseFeature.js.map +1 -0
- package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js +70 -0
- package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js.map +1 -0
- package/build/dist/Server/Enterprise/EnterpriseServerModule.js +84 -0
- package/build/dist/Server/Enterprise/EnterpriseServerModule.js.map +1 -0
- package/build/dist/Server/EnvironmentConfig.js +84 -2
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/UserAuthorization.js +30 -11
- package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
- package/build/dist/Server/Services/AuditLogService.js +71 -740
- package/build/dist/Server/Services/AuditLogService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseService.js +34 -0
- package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
- package/build/dist/Server/Services/GlobalConfigService.js +63 -0
- package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
- package/build/dist/Server/Services/MonitorProbeService.js +90 -17
- package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +45 -4
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusTimelineService.js +242 -0
- package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +16 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +214 -0
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/RumSessionPinService.js +24 -6
- package/build/dist/Server/Services/RumSessionPinService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserService.js +7 -3
- package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +71 -0
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +10 -0
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TeamService.js +9 -0
- package/build/dist/Server/Services/TeamService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +10 -16
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js +10 -0
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/EditionPermission.js +154 -14
- package/build/dist/Server/Types/Database/Permissions/EditionPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/TablePermission.js +10 -3
- package/build/dist/Server/Types/Database/Permissions/TablePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js +17 -0
- package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js.map +1 -1
- package/build/dist/Server/Types/Markdown.js +31 -0
- package/build/dist/Server/Types/Markdown.js.map +1 -1
- package/build/dist/Server/Utils/CommunityEditionSsoReport.js +223 -0
- package/build/dist/Server/Utils/CommunityEditionSsoReport.js.map +1 -0
- package/build/dist/Server/Utils/EditionEnforcement.js +187 -0
- package/build/dist/Server/Utils/EditionEnforcement.js.map +1 -0
- package/build/dist/Server/Utils/FrontendEnvironment.js +31 -2
- package/build/dist/Server/Utils/FrontendEnvironment.js.map +1 -1
- package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js +6 -193
- package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/AffectedResourceList.js +96 -0
- package/build/dist/Server/Utils/Monitor/AffectedResourceList.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +8 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +449 -261
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitoringIntervalValidator.js +88 -0
- package/build/dist/Server/Utils/Monitor/MonitoringIntervalValidator.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js +331 -11
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
- package/build/dist/Types/API/Hostname.js +59 -11
- package/build/dist/Types/API/Hostname.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +19 -7
- package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +19 -7
- package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js +13 -6
- package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js.map +1 -1
- package/build/dist/Types/Database/CanonicalModelInstance.js +88 -0
- package/build/dist/Types/Database/CanonicalModelInstance.js.map +1 -0
- package/build/dist/Types/Database/TableColumn.js +19 -6
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js +28 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js.map +1 -0
- package/build/dist/Types/IP/IPv6.js +6 -1
- package/build/dist/Types/IP/IPv6.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +5 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +1 -1
- package/build/dist/Types/StatusPage/UptimeDailyAggregate.js +32 -0
- package/build/dist/Types/StatusPage/UptimeDailyAggregate.js.map +1 -0
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +414 -585
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/LicenseManager.js +2 -0
- package/build/dist/UI/Components/EditionLabel/LicenseManager.js.map +1 -0
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +90 -17
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
- package/build/dist/UI/Components/ModelList/ModelList.js +4 -1
- package/build/dist/UI/Components/ModelList/ModelList.js.map +1 -1
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js +42 -1
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +2 -2
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +6 -2
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
- package/build/dist/Utils/HostAddressUtil.js +80 -0
- package/build/dist/Utils/HostAddressUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorDestinationUtil.js +127 -0
- package/build/dist/Utils/Monitor/MonitorDestinationUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitoringIntervalUtil.js +374 -0
- package/build/dist/Utils/Monitor/MonitoringIntervalUtil.js.map +1 -0
- package/build/dist/Utils/StatusPage/UptimeDailyAggregateUtil.js +148 -0
- package/build/dist/Utils/StatusPage/UptimeDailyAggregateUtil.js.map +1 -0
- package/jest.config.json +3 -1
- package/package.json +1 -1
- package/test-setup.sh +103 -34
- package/tsconfig.json +13 -0
- package/Server/API/EnterpriseLicenseAPI.ts +0 -925
- package/Server/API/TeamComplianceAPI.ts +0 -158
- package/Server/Middleware/SCIMAuthorization.ts +0 -141
- package/Server/Services/TeamComplianceService.ts +0 -733
- package/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.ts +0 -186
- package/Server/Utils/InstanceHealth/PostgresHealth.ts +0 -286
- package/Tests/App/AdminDashboard/EnterpriseLicenseInstanceActivity.test.tsx +0 -451
- package/Tests/App/Dashboard/AuditLogsTable.test.tsx +0 -598
- package/Tests/App/Dashboard/SecurityEventsExplorer.test.tsx +0 -761
- package/Tests/App/Dashboard/SecurityEventsSideMenu.test.tsx +0 -247
- package/Tests/App/Dashboard/SecurityEventsTableColumns.test.tsx +0 -382
- package/Tests/App/Dashboard/SecurityEventsVolumeChart.test.tsx +0 -321
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +0 -1851
- package/Tests/Server/Middleware/SCIMAuthorization.test.ts +0 -525
- package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +0 -1845
- package/Tests/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.test.ts +0 -495
- package/Tests/Server/Utils/InstanceHealth/PostgresHealth.test.ts +0 -337
- package/Tests/Utils/EnterpriseLicenseSeats.test.ts +0 -576
- package/Tests/Utils/EnterpriseLicenseSync.test.ts +0 -568
- package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +0 -287
- package/Utils/EnterpriseLicense/EnterpriseLicenseSync.ts +0 -244
- package/build/dist/Server/API/EnterpriseLicenseAPI.js +0 -646
- package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +0 -1
- package/build/dist/Server/API/TeamComplianceAPI.js +0 -111
- package/build/dist/Server/API/TeamComplianceAPI.js.map +0 -1
- package/build/dist/Server/Middleware/SCIMAuthorization.js +0 -124
- package/build/dist/Server/Middleware/SCIMAuthorization.js.map +0 -1
- package/build/dist/Server/Services/TeamComplianceService.js +0 -537
- package/build/dist/Server/Services/TeamComplianceService.js.map +0 -1
- package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js +0 -145
- package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js.map +0 -1
- package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js +0 -194
- package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js.map +0 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +0 -168
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +0 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSync.js +0 -174
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSync.js.map +0 -1
|
@@ -11,6 +11,14 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
11
11
|
import Permission from "../../Types/Permission";
|
|
12
12
|
import { PlanType } from "../../Types/Billing/SubscriptionPlan";
|
|
13
13
|
|
|
14
|
+
/*
|
|
15
|
+
* Immutable audit trail. Nobody creates an entry through the API or as a
|
|
16
|
+
* project user: every entry is written by the Enterprise Edition's audit-log
|
|
17
|
+
* recorder, as root. So create is empty at table level and on every column,
|
|
18
|
+
* and AuditLogService refuses any create that is not root (a master admin's
|
|
19
|
+
* included, whom these lists do not bind). Update and delete are empty too;
|
|
20
|
+
* entries leave only through the retention TTL.
|
|
21
|
+
*/
|
|
14
22
|
export default class AuditLog extends AnalyticsBaseModel {
|
|
15
23
|
public constructor() {
|
|
16
24
|
const projectIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
@@ -27,7 +35,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
27
35
|
Permission.SettingsAdmin,
|
|
28
36
|
Permission.ReadAuditLog,
|
|
29
37
|
],
|
|
30
|
-
create: [
|
|
38
|
+
create: [],
|
|
31
39
|
update: [],
|
|
32
40
|
},
|
|
33
41
|
});
|
|
@@ -46,7 +54,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
46
54
|
Permission.SettingsAdmin,
|
|
47
55
|
Permission.ReadAuditLog,
|
|
48
56
|
],
|
|
49
|
-
create: [
|
|
57
|
+
create: [],
|
|
50
58
|
update: [],
|
|
51
59
|
},
|
|
52
60
|
});
|
|
@@ -64,7 +72,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
64
72
|
Permission.SettingsAdmin,
|
|
65
73
|
Permission.ReadAuditLog,
|
|
66
74
|
],
|
|
67
|
-
create: [
|
|
75
|
+
create: [],
|
|
68
76
|
update: [],
|
|
69
77
|
},
|
|
70
78
|
});
|
|
@@ -82,7 +90,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
82
90
|
Permission.SettingsAdmin,
|
|
83
91
|
Permission.ReadAuditLog,
|
|
84
92
|
],
|
|
85
|
-
create: [
|
|
93
|
+
create: [],
|
|
86
94
|
update: [],
|
|
87
95
|
},
|
|
88
96
|
});
|
|
@@ -111,7 +119,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
111
119
|
Permission.SettingsAdmin,
|
|
112
120
|
Permission.ReadAuditLog,
|
|
113
121
|
],
|
|
114
|
-
create: [
|
|
122
|
+
create: [],
|
|
115
123
|
update: [],
|
|
116
124
|
},
|
|
117
125
|
});
|
|
@@ -143,7 +151,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
143
151
|
Permission.SettingsAdmin,
|
|
144
152
|
Permission.ReadAuditLog,
|
|
145
153
|
],
|
|
146
|
-
create: [
|
|
154
|
+
create: [],
|
|
147
155
|
update: [],
|
|
148
156
|
},
|
|
149
157
|
},
|
|
@@ -162,7 +170,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
162
170
|
Permission.SettingsAdmin,
|
|
163
171
|
Permission.ReadAuditLog,
|
|
164
172
|
],
|
|
165
|
-
create: [
|
|
173
|
+
create: [],
|
|
166
174
|
update: [],
|
|
167
175
|
},
|
|
168
176
|
});
|
|
@@ -180,7 +188,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
180
188
|
Permission.SettingsAdmin,
|
|
181
189
|
Permission.ReadAuditLog,
|
|
182
190
|
],
|
|
183
|
-
create: [
|
|
191
|
+
create: [],
|
|
184
192
|
update: [],
|
|
185
193
|
},
|
|
186
194
|
});
|
|
@@ -198,7 +206,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
198
206
|
Permission.SettingsAdmin,
|
|
199
207
|
Permission.ReadAuditLog,
|
|
200
208
|
],
|
|
201
|
-
create: [
|
|
209
|
+
create: [],
|
|
202
210
|
update: [],
|
|
203
211
|
},
|
|
204
212
|
});
|
|
@@ -216,7 +224,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
216
224
|
Permission.SettingsAdmin,
|
|
217
225
|
Permission.ReadAuditLog,
|
|
218
226
|
],
|
|
219
|
-
create: [
|
|
227
|
+
create: [],
|
|
220
228
|
update: [],
|
|
221
229
|
},
|
|
222
230
|
});
|
|
@@ -235,7 +243,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
235
243
|
Permission.SettingsAdmin,
|
|
236
244
|
Permission.ReadAuditLog,
|
|
237
245
|
],
|
|
238
|
-
create: [
|
|
246
|
+
create: [],
|
|
239
247
|
update: [],
|
|
240
248
|
},
|
|
241
249
|
});
|
|
@@ -254,7 +262,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
254
262
|
Permission.SettingsAdmin,
|
|
255
263
|
Permission.ReadAuditLog,
|
|
256
264
|
],
|
|
257
|
-
create: [
|
|
265
|
+
create: [],
|
|
258
266
|
update: [],
|
|
259
267
|
},
|
|
260
268
|
});
|
|
@@ -272,7 +280,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
272
280
|
Permission.SettingsAdmin,
|
|
273
281
|
Permission.ReadAuditLog,
|
|
274
282
|
],
|
|
275
|
-
create: [
|
|
283
|
+
create: [],
|
|
276
284
|
update: [],
|
|
277
285
|
},
|
|
278
286
|
});
|
|
@@ -293,7 +301,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
293
301
|
Permission.SettingsAdmin,
|
|
294
302
|
Permission.ReadAuditLog,
|
|
295
303
|
],
|
|
296
|
-
create: [
|
|
304
|
+
create: [],
|
|
297
305
|
update: [],
|
|
298
306
|
},
|
|
299
307
|
});
|
|
@@ -320,7 +328,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
320
328
|
Permission.SettingsAdmin,
|
|
321
329
|
Permission.ReadAuditLog,
|
|
322
330
|
],
|
|
323
|
-
create: [
|
|
331
|
+
create: [],
|
|
324
332
|
update: [],
|
|
325
333
|
delete: [],
|
|
326
334
|
},
|
|
@@ -948,6 +948,30 @@ export default class GlobalConfig extends GlobalConfigModel {
|
|
|
948
948
|
})
|
|
949
949
|
public enterpriseLicenseExpiryReminderDays?: number = undefined;
|
|
950
950
|
|
|
951
|
+
/*
|
|
952
|
+
* Set once, by the enterprise module, the first time this installation boots
|
|
953
|
+
* the Enterprise Edition. An Enterprise install with no license at all gets
|
|
954
|
+
* a 14-day evaluation trial counted from here (also the transition for
|
|
955
|
+
* installs that ran the Enterprise Edition on the IS_ENTERPRISE_EDITION
|
|
956
|
+
* variable alone). Written only by the server itself (isRoot).
|
|
957
|
+
*/
|
|
958
|
+
@ColumnAccessControl({
|
|
959
|
+
create: [],
|
|
960
|
+
read: [],
|
|
961
|
+
update: [],
|
|
962
|
+
})
|
|
963
|
+
@TableColumn({
|
|
964
|
+
type: TableColumnType.Date,
|
|
965
|
+
title: "Enterprise Edition First Seen At",
|
|
966
|
+
description:
|
|
967
|
+
"When this installation first booted the OneUptime Enterprise Edition. An unlicensed Enterprise installation gets a 14-day trial counted from this moment.",
|
|
968
|
+
})
|
|
969
|
+
@Column({
|
|
970
|
+
type: ColumnType.Date,
|
|
971
|
+
nullable: true,
|
|
972
|
+
})
|
|
973
|
+
public enterpriseEditionFirstSeenAt?: Date = undefined;
|
|
974
|
+
|
|
951
975
|
/*
|
|
952
976
|
* The four latestRelease* columns cache the daily GitHub release check
|
|
953
977
|
* (Workers/Jobs/InstanceUpdate/CheckForNewVersion). They are a cache, not
|
|
@@ -1044,8 +1044,9 @@ export default class Monitor extends BaseModel {
|
|
|
1044
1044
|
required: false,
|
|
1045
1045
|
type: TableColumnType.ShortText,
|
|
1046
1046
|
title: "Monitoring Interval",
|
|
1047
|
-
description:
|
|
1048
|
-
|
|
1047
|
+
description:
|
|
1048
|
+
'How often would you like OneUptime to monitor this resource? A 5-field cron expression, not a label: "*/5 * * * *" is every five minutes.',
|
|
1049
|
+
example: "*/5 * * * *",
|
|
1049
1050
|
})
|
|
1050
1051
|
@Column({
|
|
1051
1052
|
nullable: true,
|
|
@@ -490,7 +490,8 @@ export default class MonitorTemplate extends BaseModel {
|
|
|
490
490
|
type: TableColumnType.ShortText,
|
|
491
491
|
title: "Monitoring Interval",
|
|
492
492
|
description:
|
|
493
|
-
|
|
493
|
+
'Default monitoring interval for monitors created from this template. A 5-field cron expression, not a label: "*/5 * * * *" is every five minutes.',
|
|
494
|
+
example: "*/5 * * * *",
|
|
494
495
|
})
|
|
495
496
|
@Column({
|
|
496
497
|
nullable: true,
|
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
const fs = require("fs");
|
|
17
17
|
const path = require("path");
|
|
18
18
|
const crypto = require("crypto");
|
|
19
|
+
const {
|
|
20
|
+
EDITION_COMMUNITY,
|
|
21
|
+
EDITION_ENTERPRISE,
|
|
22
|
+
readRequestedEdition,
|
|
23
|
+
getEnterpriseCandidates,
|
|
24
|
+
} = require("../UI/esbuild-enterprise");
|
|
19
25
|
|
|
20
26
|
// Default values
|
|
21
27
|
const DEFAULT_APP_VERSION = "1.0.0";
|
|
@@ -64,6 +70,50 @@ function getGitSha() {
|
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
|
|
73
|
+
/**
|
|
74
|
+
* The edition a frontend build bundles: "community" or "enterprise".
|
|
75
|
+
*
|
|
76
|
+
* The same decision esbuild makes for the frontend's Enterprise plugin (see
|
|
77
|
+
* Common/UI/esbuild-enterprise.js): ONEUPTIME_EDITION=community or
|
|
78
|
+
* enterprise decides outright, and "auto" (the default) means enterprise
|
|
79
|
+
* exactly when this frontend's ee plugin, ee/<frontend directory name>/
|
|
80
|
+
* Index.tsx, is on disk. A frontend with no ee plugin (Accounts, Status Page)
|
|
81
|
+
* is therefore always "community". An unknown ONEUPTIME_EDITION throws, like
|
|
82
|
+
* the build.
|
|
83
|
+
*
|
|
84
|
+
* The edition goes into the service worker's cache version: the Community and
|
|
85
|
+
* Enterprise images of one release share APP_VERSION and GIT_SHA, and without
|
|
86
|
+
* it a browser that cached one edition's assets would keep them after the
|
|
87
|
+
* deployment switched to the other.
|
|
88
|
+
* @param {string} frontendDir - The frontend's directory (where sw.js.template lives)
|
|
89
|
+
* @param {Object} [env] - Environment to read (defaults to process.env)
|
|
90
|
+
* @returns {string}
|
|
91
|
+
*/
|
|
92
|
+
function getEdition(frontendDir, env) {
|
|
93
|
+
const source = env || process.env;
|
|
94
|
+
const requested = readRequestedEdition(source);
|
|
95
|
+
|
|
96
|
+
if (requested === EDITION_COMMUNITY || requested === EDITION_ENTERPRISE) {
|
|
97
|
+
return requested;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const candidates = getEnterpriseCandidates(
|
|
101
|
+
frontendDir,
|
|
102
|
+
path.basename(frontendDir),
|
|
103
|
+
source,
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
const hasPlugin = candidates.some((candidate) => {
|
|
107
|
+
try {
|
|
108
|
+
return fs.statSync(candidate).isFile();
|
|
109
|
+
} catch (error) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
return hasPlugin ? EDITION_ENTERPRISE : EDITION_COMMUNITY;
|
|
115
|
+
}
|
|
116
|
+
|
|
67
117
|
/**
|
|
68
118
|
* Generate service worker from template
|
|
69
119
|
*/
|
|
@@ -85,16 +135,19 @@ function generateServiceWorker(
|
|
|
85
135
|
const packageJsonPath = path.join(path.dirname(templatePath), "package.json");
|
|
86
136
|
const appVersion = getAppVersion(packageJsonPath);
|
|
87
137
|
const gitSha = getGitSha();
|
|
138
|
+
const edition = getEdition(path.dirname(templatePath));
|
|
88
139
|
const buildTimestamp = new Date().toISOString();
|
|
89
140
|
|
|
90
141
|
console.log(`🔧 Generating service worker for ${serviceName}...`);
|
|
91
142
|
console.log(` App Version: ${appVersion}`);
|
|
143
|
+
console.log(` Edition: ${edition}`);
|
|
92
144
|
console.log(` Git SHA: ${gitSha}`);
|
|
93
145
|
console.log(` Build Time: ${buildTimestamp}`);
|
|
94
146
|
|
|
95
147
|
// Replace placeholders
|
|
96
148
|
const generatedContent = template
|
|
97
149
|
.replace(/\{\{APP_VERSION\}\}/g, appVersion)
|
|
150
|
+
.replace(/\{\{EDITION\}\}/g, edition)
|
|
98
151
|
.replace(/\{\{GIT_SHA\}\}/g, gitSha)
|
|
99
152
|
.replace(/\{\{BUILD_TIMESTAMP\}\}/g, buildTimestamp)
|
|
100
153
|
.replace(/\{\{SERVICE_NAME\}\}/g, serviceName);
|
|
@@ -102,11 +155,12 @@ function generateServiceWorker(
|
|
|
102
155
|
// Add generation comment at the top
|
|
103
156
|
const header = `/*
|
|
104
157
|
* Generated Service Worker for ${serviceName}
|
|
105
|
-
*
|
|
158
|
+
*
|
|
106
159
|
* Generated at: ${buildTimestamp}
|
|
107
160
|
* App Version: ${appVersion}
|
|
161
|
+
* Edition: ${edition}
|
|
108
162
|
* Git SHA: ${gitSha}
|
|
109
|
-
*
|
|
163
|
+
*
|
|
110
164
|
* DO NOT EDIT THIS FILE DIRECTLY
|
|
111
165
|
* Edit the template file instead and run the generator script
|
|
112
166
|
*/
|
|
@@ -125,7 +179,9 @@ function generateServiceWorker(
|
|
|
125
179
|
fs.writeFileSync(outputPath, finalContent, "utf8");
|
|
126
180
|
|
|
127
181
|
console.log("✅ Service worker generated successfully:", outputPath);
|
|
128
|
-
console.log(
|
|
182
|
+
console.log(
|
|
183
|
+
` Cache version: oneuptime-v${appVersion}-${edition}-${gitSha}`,
|
|
184
|
+
);
|
|
129
185
|
}
|
|
130
186
|
|
|
131
187
|
// Command line interface
|
|
@@ -151,4 +207,9 @@ if (require.main === module) {
|
|
|
151
207
|
}
|
|
152
208
|
}
|
|
153
209
|
|
|
154
|
-
module.exports = {
|
|
210
|
+
module.exports = {
|
|
211
|
+
generateServiceWorker,
|
|
212
|
+
getAppVersion,
|
|
213
|
+
getGitSha,
|
|
214
|
+
getEdition,
|
|
215
|
+
};
|
package/Server/API/BaseAPI.ts
CHANGED
|
@@ -559,12 +559,33 @@ export default class BaseAPI<
|
|
|
559
559
|
* id as an update of the existing row rather than an insert, so a stray
|
|
560
560
|
* `_id` (or the `id` spelling, which BaseModel.fromJSON has already folded
|
|
561
561
|
* into `_id`) would make a "create" modify an existing record instead.
|
|
562
|
-
*
|
|
563
|
-
*
|
|
564
|
-
*
|
|
562
|
+
*
|
|
563
|
+
* CLEARED, NOT DELETED, and that distinction is load-bearing: `item` is a
|
|
564
|
+
* live model instance that the service then asks for its own column list
|
|
565
|
+
* (DatabaseService.generateDefaultValues -> data.getTableColumns()), and
|
|
566
|
+
* that lookup used to enumerate this very instance's own keys and cache
|
|
567
|
+
* the result for the whole CLASS. Deleting `_id` here therefore taught the
|
|
568
|
+
* process that this model has no `_id` column, and every later response
|
|
569
|
+
* for it - to any caller, including reads - was serialized without one.
|
|
570
|
+
* TableColumn.ts no longer reads the caller's instance, so this is now
|
|
571
|
+
* defence in depth rather than the fix; the trap is removed all the same.
|
|
572
|
+
* DatabaseService.sanitizeUpdateData skips these keys the same way instead
|
|
573
|
+
* of deleting them off a model.
|
|
574
|
+
*
|
|
575
|
+
* `undefined` is what an unset column holds anyway, so nothing downstream
|
|
576
|
+
* can tell it from an absent key: TypeORM reads primary keys through
|
|
577
|
+
* ColumnMetadata.getEntityValue and treats undefined as "no id"
|
|
578
|
+
* (EntityMetadata.getValueMap skips it, so the Subject gets no identifier
|
|
579
|
+
* and must be INSERTed), the create path's own "an id cannot be supplied"
|
|
580
|
+
* guard tests `data._id` for truthiness, ColumnPermissions skips data keys
|
|
581
|
+
* whose value is undefined, and toJSONObject omits them from responses.
|
|
582
|
+
*
|
|
583
|
+
* Only the top-level primary key is cleared - nested `_id`s inside
|
|
584
|
+
* relation objects/arrays reference existing related rows and are left
|
|
585
|
+
* untouched. `id` needs no handling: it is a prototype accessor derived
|
|
586
|
+
* from `_id` (never an own property), and its setter ignores falsy values.
|
|
565
587
|
*/
|
|
566
|
-
|
|
567
|
-
delete (item as any)["id"];
|
|
588
|
+
(item as any)["_id"] = undefined;
|
|
568
589
|
|
|
569
590
|
const miscDataProps: JSONObject = JSONFunctions.deserialize(
|
|
570
591
|
body["miscDataProps"] as JSONObject,
|