@oneuptime/common 12.0.1 → 12.0.3
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/DatabaseBaseModel/DatabaseBaseModel.ts +14 -0
- package/Models/DatabaseModels/Host.ts +12 -4
- package/Models/DatabaseModels/Index.ts +2 -0
- package/Models/DatabaseModels/KubernetesContainer.ts +5 -4
- package/Models/DatabaseModels/KubernetesResource.ts +8 -7
- package/Models/DatabaseModels/LogDropFilter.ts +9 -20
- package/Models/DatabaseModels/PodmanResource.ts +6 -6
- package/Models/DatabaseModels/ServiceLevelObjective.ts +91 -0
- package/Models/DatabaseModels/StatusPage.ts +95 -0
- package/Models/DatabaseModels/StatusPageMonitorRule.ts +911 -0
- package/Models/DatabaseModels/StatusPageResource.ts +73 -0
- package/Models/DatabaseModels/TraceDropFilter.ts +9 -20
- package/Server/API/BaseAPI.ts +13 -2
- package/Server/API/DashboardAPI.ts +39 -0
- package/Server/API/TeamMemberAPI.ts +85 -0
- package/Server/EnvironmentConfig.ts +31 -1
- package/Server/Infrastructure/GlobalCache.ts +115 -0
- package/Server/Infrastructure/Postgres/DataSourceOptions.ts +16 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785900000000-AddSloMonitorLabelRule.ts +84 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785915638551-IncreaseHostIpAddressesLength.ts +40 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785930000000-WidenInventoryResourceNameColumns.ts +131 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785930709405-AddStatusPageReportPeriod.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.ts +123 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Middleware/ProjectAuthorization.ts +66 -4
- package/Server/Services/AlertStateTimelineService.ts +20 -0
- package/Server/Services/BillingService.ts +600 -51
- package/Server/Services/CephClusterService.ts +27 -45
- package/Server/Services/CephResourceService.ts +43 -4
- package/Server/Services/CloudResourceService.ts +24 -42
- package/Server/Services/DatabaseService.ts +198 -6
- package/Server/Services/DockerHostService.ts +20 -38
- package/Server/Services/DockerResourceService.ts +62 -8
- package/Server/Services/DockerSwarmClusterService.ts +28 -46
- package/Server/Services/DockerSwarmResourceService.ts +53 -4
- package/Server/Services/HostService.ts +47 -57
- package/Server/Services/IncidentStateTimelineService.ts +20 -0
- package/Server/Services/Index.ts +2 -0
- package/Server/Services/IoTDeviceService.ts +1 -17
- package/Server/Services/IoTFleetService.ts +20 -38
- package/Server/Services/KubernetesClusterService.ts +18 -36
- package/Server/Services/KubernetesContainerService.ts +50 -9
- package/Server/Services/KubernetesResourceService.ts +53 -7
- package/Server/Services/LabelService.ts +153 -1
- package/Server/Services/MetricTypeService.ts +84 -0
- package/Server/Services/MonitorService.ts +146 -14
- package/Server/Services/MonitorStatusTimelineService.ts +29 -0
- package/Server/Services/MonitorTemplateService.ts +65 -0
- package/Server/Services/PodmanHostService.ts +20 -38
- package/Server/Services/PodmanResourceService.ts +62 -8
- package/Server/Services/ProjectService.ts +165 -35
- package/Server/Services/ProxmoxClusterService.ts +24 -42
- package/Server/Services/ProxmoxResourceService.ts +43 -4
- package/Server/Services/RumApplicationService.ts +20 -38
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +21 -0
- package/Server/Services/ServerlessFunctionService.ts +25 -43
- package/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.ts +426 -0
- package/Server/Services/ServiceLevelObjectiveService.ts +39 -0
- package/Server/Services/ServiceService.ts +299 -73
- package/Server/Services/StatusPageMonitorRuleEngineService.ts +752 -0
- package/Server/Services/StatusPageMonitorRuleService.ts +471 -0
- package/Server/Services/StatusPageService.ts +95 -36
- package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +18 -1
- package/Server/Services/StatusPageSubscriberService.ts +3 -0
- package/Server/Services/TelemetryEntityRelationshipService.ts +1 -0
- package/Server/Services/TelemetryEntityService.ts +1 -0
- package/Server/Types/Database/JSONColumnQuery.ts +621 -0
- package/Server/Types/Database/Permissions/PublicPermission.ts +9 -2
- package/Server/Types/Database/QueryHelper.ts +17 -32
- package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +170 -39
- package/Server/Utils/Database/TruncateColumnValue.ts +84 -0
- 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/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/UsersTableGroupsByPerson.test.tsx +448 -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/BaseAPIApiKeyAuth.test.ts +704 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +26 -0
- package/Tests/Server/API/TeamMemberRemoveUserFromProjectAPI.test.ts +303 -0
- package/Tests/Server/Infrastructure/GlobalCache.test.ts +226 -0
- package/Tests/Server/Infrastructure/PostgresLockTimeoutOptions.test.ts +181 -0
- package/Tests/Server/Middleware/MasterAdminAuthorization.test.ts +350 -0
- package/Tests/Server/Middleware/ProjectAuthorizationApiKeyHeader.test.ts +362 -0
- package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +687 -0
- package/Tests/Server/Services/BillingService.test.ts +78 -3
- package/Tests/Server/Services/BillingServiceChangePlanCancel.test.ts +645 -0
- package/Tests/Server/Services/BillingServiceTrialPlanChange.test.ts +1005 -0
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlocked.test.ts +342 -0
- package/Tests/Server/Services/DropFilterSaveValidation.test.ts +245 -0
- package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +503 -0
- package/Tests/Server/Services/HostIpAddressesColumnWidth.test.ts +198 -0
- package/Tests/Server/Services/HostServiceUpdateLastSeen.test.ts +658 -0
- package/Tests/Server/Services/InventoryResourceNameColumnWidth.test.ts +500 -0
- package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +586 -0
- package/Tests/Server/Services/InventoryUpsertTruncationGuard.test.ts +1242 -0
- 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/ProjectServiceChangePlan.test.ts +650 -0
- package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +1 -0
- package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +636 -0
- package/Tests/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.test.ts +770 -0
- package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +130 -0
- package/Tests/Server/Services/ServiceUpdateLastSeenSplitGates.test.ts +705 -0
- package/Tests/Server/Services/SloMonitorLabelRuleHooks.test.ts +352 -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/StatusPageSubscriberReport.test.ts +29 -13
- package/Tests/Server/TestingUtils/Services/BillingServiceHelper.ts +69 -8
- package/Tests/Server/Types/Database/JSONColumnQuery.test.ts +593 -0
- package/Tests/Server/Types/Database/Permissions/PublicPermission.test.ts +495 -0
- package/Tests/Server/Types/Database/QueryUtil.test.ts +113 -0
- package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +267 -0
- package/Tests/Server/Utils/Database/ProjectScopedReferenceValidator.test.ts +260 -13
- package/Tests/Server/Utils/Database/TruncateColumnValue.test.ts +179 -0
- package/Tests/Server/Utils/EntityRegistryRowFence.test.ts +302 -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/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/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/Events/Recurring.test.ts +157 -0
- package/Tests/Types/Monitor/SnmpVersionParsing.test.ts +152 -0
- package/Tests/Types/Port.test.ts +38 -0
- package/Tests/UI/Components/LogsHistogram.test.tsx +276 -0
- package/Tests/UI/Components/ModelTable/ModelTableGroupsProjectUsers.test.tsx +375 -0
- package/Tests/UI/Components/ModelTable/useCustomFieldColumns.test.tsx +196 -0
- package/Tests/UI/Components/UseLiveLogsRefresh.test.tsx +489 -0
- package/Tests/UI/Components/UseLogsHistogram.test.tsx +500 -0
- package/Tests/UI/Utils/ProjectUsersModelAPI.test.ts +739 -0
- package/Tests/UI/Utils/TeamMembersByUser.test.ts +633 -0
- package/Tests/Utils/Dashboard/Components/DashboardComponentsUtil.test.ts +120 -0
- package/Tests/Utils/Dashboard/DashboardNetworkMapComponent.test.ts +327 -0
- package/Tests/Utils/StatusPage/ReportPeriod.test.ts +218 -0
- package/Tests/Utils/Telemetry/HostIpAddresses.test.ts +291 -0
- package/Types/CustomField/CustomFieldDefinition.ts +24 -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/DatabaseProperty.ts +26 -0
- package/Types/Database/NumericColumnValue.ts +128 -0
- package/Types/Date.ts +112 -0
- package/Types/Decimal.ts +16 -4
- package/Types/Events/Recurring.ts +99 -1
- package/Types/Permission.ts +48 -0
- package/Types/Port.ts +16 -4
- package/Types/StatusPage/StatusPageReport.ts +11 -0
- package/Types/StatusPage/StatusPageReportPeriodType.ts +21 -0
- package/UI/Components/LogsViewer/useLiveLogsRefresh.ts +86 -0
- package/UI/Components/LogsViewer/useLogsHistogram.ts +113 -0
- package/UI/Components/ModelTable/CustomFieldColumns.tsx +2 -6
- package/UI/Components/ModelTable/useCustomFieldColumns.ts +21 -2
- package/UI/Utils/ModelAPI/ProjectUsersModelAPI.ts +305 -0
- package/UI/Utils/TeamMembersByUser.ts +302 -0
- package/Utils/Dashboard/Components/DashboardNetworkMapComponent.ts +136 -0
- package/Utils/Dashboard/Components/Index.ts +7 -0
- package/Utils/StatusPage/ReportPeriod.ts +236 -0
- package/Utils/Telemetry/HostIpAddresses.ts +98 -0
- 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/Host.js +12 -4
- package/build/dist/Models/DatabaseModels/Host.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/KubernetesContainer.js +4 -4
- package/build/dist/Models/DatabaseModels/KubernetesContainer.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesResource.js +7 -7
- package/build/dist/Models/DatabaseModels/KubernetesResource.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/PodmanResource.js +6 -6
- package/build/dist/Models/DatabaseModels/PodmanResource.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js +87 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPage.js +98 -0
- package/build/dist/Models/DatabaseModels/StatusPage.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/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/Server/API/BaseAPI.js +11 -1
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +39 -0
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/TeamMemberAPI.js +57 -2
- package/build/dist/Server/API/TeamMemberAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +27 -1
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/GlobalCache.js +91 -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/1785900000000-AddSloMonitorLabelRule.js +45 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785900000000-AddSloMonitorLabelRule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785915638551-IncreaseHostIpAddressesLength.js +31 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785915638551-IncreaseHostIpAddressesLength.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785930000000-WidenInventoryResourceNameColumns.js +90 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785930000000-WidenInventoryResourceNameColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785930709405-AddStatusPageReportPeriod.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785930709405-AddStatusPageReportPeriod.js.map +1 -0
- 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/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/ProjectAuthorization.js +59 -4
- package/build/dist/Server/Middleware/ProjectAuthorization.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/BillingService.js +466 -36
- package/build/dist/Server/Services/BillingService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterService.js +26 -39
- package/build/dist/Server/Services/CephClusterService.js.map +1 -1
- package/build/dist/Server/Services/CephResourceService.js +28 -3
- package/build/dist/Server/Services/CephResourceService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceService.js +23 -36
- package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +155 -2
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostService.js +19 -32
- package/build/dist/Server/Services/DockerHostService.js.map +1 -1
- package/build/dist/Server/Services/DockerResourceService.js +34 -4
- package/build/dist/Server/Services/DockerResourceService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterService.js +27 -40
- package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmResourceService.js +28 -3
- package/build/dist/Server/Services/DockerSwarmResourceService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +58 -64
- 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/IoTDeviceService.js +1 -8
- package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetService.js +19 -32
- package/build/dist/Server/Services/IoTFleetService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterService.js +17 -30
- package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesContainerService.js +29 -3
- package/build/dist/Server/Services/KubernetesContainerService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesResourceService.js +32 -4
- package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -1
- package/build/dist/Server/Services/LabelService.js +127 -0
- 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 +128 -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/PodmanHostService.js +19 -32
- package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
- package/build/dist/Server/Services/PodmanResourceService.js +34 -4
- package/build/dist/Server/Services/PodmanResourceService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +135 -21
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterService.js +23 -36
- package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxResourceService.js +28 -3
- package/build/dist/Server/Services/ProxmoxResourceService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationService.js +19 -32
- 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 -37
- package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.js +347 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js +33 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveService.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/StatusPageService.js +69 -46
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +17 -1
- package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberService.js +3 -0
- package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
- 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/Types/Database/JSONColumnQuery.js +402 -0
- package/build/dist/Server/Types/Database/JSONColumnQuery.js.map +1 -0
- package/build/dist/Server/Types/Database/Permissions/PublicPermission.js +9 -2
- package/build/dist/Server/Types/Database/Permissions/PublicPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +17 -27
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- 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/Database/TruncateColumnValue.js +32 -0
- package/build/dist/Server/Utils/Database/TruncateColumnValue.js.map +1 -0
- 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/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/CustomField/CustomFieldDefinition.js +2 -0
- package/build/dist/Types/CustomField/CustomFieldDefinition.js.map +1 -0
- 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/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/Date.js +68 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Decimal.js +14 -3
- package/build/dist/Types/Decimal.js.map +1 -1
- package/build/dist/Types/Events/Recurring.js +63 -0
- package/build/dist/Types/Events/Recurring.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/Types/StatusPage/StatusPageReportPeriodType.js +22 -0
- package/build/dist/Types/StatusPage/StatusPageReportPeriodType.js.map +1 -0
- 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/ModelTable/CustomFieldColumns.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +18 -2
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/ProjectUsersModelAPI.js +213 -0
- package/build/dist/UI/Utils/ModelAPI/ProjectUsersModelAPI.js.map +1 -0
- package/build/dist/UI/Utils/TeamMembersByUser.js +195 -0
- package/build/dist/UI/Utils/TeamMembersByUser.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/StatusPage/ReportPeriod.js +131 -0
- package/build/dist/Utils/StatusPage/ReportPeriod.js.map +1 -0
- package/build/dist/Utils/Telemetry/HostIpAddresses.js +82 -0
- package/build/dist/Utils/Telemetry/HostIpAddresses.js.map +1 -0
- package/jest.config.json +2 -0
- package/package.json +1 -1
- package/tsconfig.json +12 -1
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
export default class TeamMembersByUser {
|
|
2
|
+
/**
|
|
3
|
+
* The identity a membership is grouped under. Null when the row carries no
|
|
4
|
+
* user at all - those rows are never merged, because merging them would put
|
|
5
|
+
* unrelated memberships on one line.
|
|
6
|
+
*/
|
|
7
|
+
static getGroupKey(teamMember) {
|
|
8
|
+
var _a, _b, _c;
|
|
9
|
+
const userId = ((_a = teamMember.userId) === null || _a === void 0 ? void 0 : _a.toString()) || ((_c = (_b = teamMember.user) === null || _b === void 0 ? void 0 : _b._id) === null || _c === void 0 ? void 0 : _c.toString()) || "";
|
|
10
|
+
return userId || null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The name this row sorts and reads under. Falls back to the email so a user
|
|
14
|
+
* who was invited but has not set a name yet still lands somewhere sensible.
|
|
15
|
+
*/
|
|
16
|
+
static getDisplayName(teamMember) {
|
|
17
|
+
var _a, _b, _c, _d;
|
|
18
|
+
return (((_b = (_a = teamMember.user) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.toString()) ||
|
|
19
|
+
((_d = (_c = teamMember.user) === null || _c === void 0 ? void 0 : _c.email) === null || _d === void 0 ? void 0 : _d.toString()) ||
|
|
20
|
+
"");
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* One row per user, in the order each user was first seen. The input order is
|
|
24
|
+
* whatever the server sorted by, so first-seen order keeps that sort intact.
|
|
25
|
+
*
|
|
26
|
+
* The returned rows are the same TeamMember instances that came in (the first
|
|
27
|
+
* membership seen for each user), mutated with the aggregate fields.
|
|
28
|
+
*/
|
|
29
|
+
static groupByUser(teamMembers) {
|
|
30
|
+
const rowsByGroupKey = new Map();
|
|
31
|
+
const rows = [];
|
|
32
|
+
/*
|
|
33
|
+
* Which teams are already on a row, keyed the same way for every
|
|
34
|
+
* membership. Tracked here rather than re-derived from `teamsForUser`
|
|
35
|
+
* because a membership identifies its team by `teamId` while the team
|
|
36
|
+
* object it carries identifies itself by `_id`, and either one can be
|
|
37
|
+
* missing from a given select.
|
|
38
|
+
*/
|
|
39
|
+
const teamKeysByRow = new Map();
|
|
40
|
+
/*
|
|
41
|
+
* Every membership id folded into each row, so the row can be given a
|
|
42
|
+
* stable identity below.
|
|
43
|
+
*/
|
|
44
|
+
const membershipIdsByRow = new Map();
|
|
45
|
+
for (const teamMember of teamMembers) {
|
|
46
|
+
const groupKey = this.getGroupKey(teamMember);
|
|
47
|
+
const existingRow = groupKey
|
|
48
|
+
? rowsByGroupKey.get(groupKey)
|
|
49
|
+
: undefined;
|
|
50
|
+
if (existingRow) {
|
|
51
|
+
this.addMembershipToRow(existingRow, teamMember, teamKeysByRow.get(existingRow), Boolean(teamMember.hasAcceptedInvitation));
|
|
52
|
+
this.rememberMembershipId(membershipIdsByRow.get(existingRow), teamMember);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const row = teamMember;
|
|
56
|
+
const teamKeys = new Set();
|
|
57
|
+
const membershipIds = [];
|
|
58
|
+
/*
|
|
59
|
+
* The row *is* this membership, so read its acceptance before the reset
|
|
60
|
+
* below overwrites it.
|
|
61
|
+
*/
|
|
62
|
+
const hasAcceptedInvitation = Boolean(teamMember.hasAcceptedInvitation);
|
|
63
|
+
row.teamsForUser = [];
|
|
64
|
+
row.teamCountForUser = 0;
|
|
65
|
+
row.pendingTeamCountForUser = 0;
|
|
66
|
+
/*
|
|
67
|
+
* Reset before folding the row's own membership back in: on a grouped row
|
|
68
|
+
* this field means "is a member of this project", which is true as soon as
|
|
69
|
+
* any one of the memberships has been accepted.
|
|
70
|
+
*/
|
|
71
|
+
row.hasAcceptedInvitation = false;
|
|
72
|
+
teamKeysByRow.set(row, teamKeys);
|
|
73
|
+
membershipIdsByRow.set(row, membershipIds);
|
|
74
|
+
this.addMembershipToRow(row, teamMember, teamKeys, hasAcceptedInvitation);
|
|
75
|
+
this.rememberMembershipId(membershipIds, teamMember);
|
|
76
|
+
if (groupKey) {
|
|
77
|
+
rowsByGroupKey.set(groupKey, row);
|
|
78
|
+
}
|
|
79
|
+
rows.push(row);
|
|
80
|
+
}
|
|
81
|
+
for (const row of rows) {
|
|
82
|
+
this.finalizeRow(row, membershipIdsByRow.get(row) || []);
|
|
83
|
+
}
|
|
84
|
+
return rows;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Replaces the team aggregate on each row with the one derived from
|
|
88
|
+
* `allTeamMembers`.
|
|
89
|
+
*
|
|
90
|
+
* Needed because the rows on screen may have been built from a *filtered*
|
|
91
|
+
* membership list - filter the table by one team and grouping only ever sees
|
|
92
|
+
* that team, so the Teams column would claim each user belongs to exactly the
|
|
93
|
+
* team that was filtered for. The caller re-reads the unfiltered memberships
|
|
94
|
+
* for the users on the current page and merges them back in here.
|
|
95
|
+
*
|
|
96
|
+
* Rows with no matching membership in `allTeamMembers` are left untouched.
|
|
97
|
+
*/
|
|
98
|
+
static mergeAllTeamsIntoRows(rows, allTeamMembers) {
|
|
99
|
+
const groupedRows = this.groupByUser(allTeamMembers);
|
|
100
|
+
const groupedRowsByKey = new Map();
|
|
101
|
+
for (const groupedRow of groupedRows) {
|
|
102
|
+
const groupKey = this.getGroupKey(groupedRow);
|
|
103
|
+
if (groupKey) {
|
|
104
|
+
groupedRowsByKey.set(groupKey, groupedRow);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
for (const row of rows) {
|
|
108
|
+
const groupKey = this.getGroupKey(row);
|
|
109
|
+
const groupedRow = groupKey
|
|
110
|
+
? groupedRowsByKey.get(groupKey)
|
|
111
|
+
: undefined;
|
|
112
|
+
if (!groupedRow) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
row.teamsForUser = groupedRow.teamsForUser;
|
|
116
|
+
row.teamCountForUser = groupedRow.teamCountForUser;
|
|
117
|
+
row.pendingTeamCountForUser = groupedRow.pendingTeamCountForUser;
|
|
118
|
+
row.hasAcceptedInvitation = Boolean(groupedRow.hasAcceptedInvitation);
|
|
119
|
+
}
|
|
120
|
+
return rows;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Alphabetical by display name, case-insensitively. Rows with no name at all
|
|
124
|
+
* sort last so the list does not open on a run of blanks.
|
|
125
|
+
*
|
|
126
|
+
* Returns a new array; the input is left alone.
|
|
127
|
+
*/
|
|
128
|
+
static sortRowsByUserName(rows) {
|
|
129
|
+
return [...rows].sort((a, b) => {
|
|
130
|
+
const nameA = this.getDisplayName(a).toLowerCase();
|
|
131
|
+
const nameB = this.getDisplayName(b).toLowerCase();
|
|
132
|
+
if (!nameA && !nameB) {
|
|
133
|
+
return 0;
|
|
134
|
+
}
|
|
135
|
+
if (!nameA) {
|
|
136
|
+
return 1;
|
|
137
|
+
}
|
|
138
|
+
if (!nameB) {
|
|
139
|
+
return -1;
|
|
140
|
+
}
|
|
141
|
+
return nameA.localeCompare(nameB);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
static addMembershipToRow(row, teamMember, teamKeys, hasAcceptedInvitation) {
|
|
145
|
+
var _a, _b, _c;
|
|
146
|
+
if (hasAcceptedInvitation) {
|
|
147
|
+
row.hasAcceptedInvitation = true;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
row.pendingTeamCountForUser = row.pendingTeamCountForUser + 1;
|
|
151
|
+
}
|
|
152
|
+
const team = teamMember.team;
|
|
153
|
+
if (!team) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const teamKey = ((_a = teamMember.teamId) === null || _a === void 0 ? void 0 : _a.toString()) ||
|
|
157
|
+
((_b = team._id) === null || _b === void 0 ? void 0 : _b.toString()) ||
|
|
158
|
+
((_c = team.name) === null || _c === void 0 ? void 0 : _c.toString()) ||
|
|
159
|
+
"";
|
|
160
|
+
if (!teamKey || teamKeys.has(teamKey)) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
teamKeys.add(teamKey);
|
|
164
|
+
row.teamsForUser.push(team);
|
|
165
|
+
}
|
|
166
|
+
static rememberMembershipId(membershipIds, teamMember) {
|
|
167
|
+
var _a;
|
|
168
|
+
const membershipId = ((_a = teamMember._id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
169
|
+
if (membershipId) {
|
|
170
|
+
membershipIds.push(membershipId);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
static finalizeRow(row, membershipIds) {
|
|
174
|
+
row.teamsForUser.sort((a, b) => {
|
|
175
|
+
var _a, _b;
|
|
176
|
+
return (((_a = a.name) === null || _a === void 0 ? void 0 : _a.toString()) || "")
|
|
177
|
+
.toLowerCase()
|
|
178
|
+
.localeCompare((((_b = b.name) === null || _b === void 0 ? void 0 : _b.toString()) || "").toLowerCase());
|
|
179
|
+
});
|
|
180
|
+
row.teamCountForUser = row.teamsForUser.length;
|
|
181
|
+
/*
|
|
182
|
+
* The row's id has to identify the *person*, not "whichever of their
|
|
183
|
+
* memberships was returned first". The table matches a selected row to an
|
|
184
|
+
* on-screen row by _id, and it fetches the on-screen page and the
|
|
185
|
+
* select-all set with two different sorts - so a first-seen id makes the
|
|
186
|
+
* same person carry different ids in the two results, and every
|
|
187
|
+
* multi-team user's checkbox silently fails to tick. The lowest membership
|
|
188
|
+
* id is stable under any ordering the server returns.
|
|
189
|
+
*/
|
|
190
|
+
if (membershipIds.length > 1) {
|
|
191
|
+
row._id = [...membershipIds].sort()[0];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=TeamMembersByUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TeamMembersByUser.js","sourceRoot":"","sources":["../../../../UI/Utils/TeamMembersByUser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { ObjectType } from "../../../Types/JSON";
|
|
2
|
+
import ObjectID from "../../../Types/ObjectID";
|
|
3
|
+
import DashboardBaseComponentUtil from "./DashboardBaseComponent";
|
|
4
|
+
import { ComponentInputType, EntityFilterModelType, } from "../../../Types/Dashboard/DashboardComponents/ComponentArgument";
|
|
5
|
+
import DashboardComponentType from "../../../Types/Dashboard/DashboardComponentType";
|
|
6
|
+
const DisplaySection = {
|
|
7
|
+
name: "Display Options",
|
|
8
|
+
description: "Configure the widget title, size of the map and its labels",
|
|
9
|
+
order: 1,
|
|
10
|
+
};
|
|
11
|
+
const FiltersSection = {
|
|
12
|
+
name: "Filters",
|
|
13
|
+
description: "Narrow down which network sites are drawn",
|
|
14
|
+
order: 2,
|
|
15
|
+
defaultCollapsed: true,
|
|
16
|
+
};
|
|
17
|
+
/*
|
|
18
|
+
* A map is only readable while the markers on it can be told apart, and the
|
|
19
|
+
* fetch is a plain list query — so the widget draws a bounded number of
|
|
20
|
+
* sites rather than every row in the project. 250 comfortably covers a
|
|
21
|
+
* franchise estate at the level a dashboard tile is read at, and the footer
|
|
22
|
+
* says out loud when the cap dropped anything.
|
|
23
|
+
*/
|
|
24
|
+
export const DEFAULT_MAX_SITES = 250;
|
|
25
|
+
export default class DashboardNetworkMapComponentUtil extends DashboardBaseComponentUtil {
|
|
26
|
+
static getDefaultComponent() {
|
|
27
|
+
return {
|
|
28
|
+
_type: ObjectType.DashboardComponent,
|
|
29
|
+
componentType: DashboardComponentType.NetworkMap,
|
|
30
|
+
/*
|
|
31
|
+
* A map needs room in BOTH axes: the world is roughly 2:1, so a
|
|
32
|
+
* short-and-wide tile letterboxes it into a strip. Half the grid
|
|
33
|
+
* across and five rows down is the smallest shape that still reads
|
|
34
|
+
* as a map rather than as a banner.
|
|
35
|
+
*/
|
|
36
|
+
widthInDashboardUnits: 6,
|
|
37
|
+
heightInDashboardUnits: 5,
|
|
38
|
+
topInDashboardUnits: 0,
|
|
39
|
+
leftInDashboardUnits: 0,
|
|
40
|
+
componentId: ObjectID.generate(),
|
|
41
|
+
minHeightInDashboardUnits: 4,
|
|
42
|
+
minWidthInDashboardUnits: 4,
|
|
43
|
+
arguments: {
|
|
44
|
+
maxSites: DEFAULT_MAX_SITES,
|
|
45
|
+
viewMode: "map",
|
|
46
|
+
showLabels: true,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
static getComponentConfigArguments() {
|
|
51
|
+
const args = [];
|
|
52
|
+
args.push({
|
|
53
|
+
name: "Title",
|
|
54
|
+
description: "Header shown above the map",
|
|
55
|
+
required: false,
|
|
56
|
+
type: ComponentInputType.Text,
|
|
57
|
+
id: "title",
|
|
58
|
+
section: DisplaySection,
|
|
59
|
+
});
|
|
60
|
+
args.push({
|
|
61
|
+
name: "View Mode",
|
|
62
|
+
description: "Draw the sites on a world map (default), or list them in a table.",
|
|
63
|
+
required: false,
|
|
64
|
+
type: ComponentInputType.Dropdown,
|
|
65
|
+
id: "viewMode",
|
|
66
|
+
section: DisplaySection,
|
|
67
|
+
dropdownOptions: [
|
|
68
|
+
{ label: "Map", value: "map" },
|
|
69
|
+
{ label: "List", value: "list" },
|
|
70
|
+
],
|
|
71
|
+
});
|
|
72
|
+
args.push({
|
|
73
|
+
name: "Max Sites",
|
|
74
|
+
description: "Maximum number of network sites to draw",
|
|
75
|
+
required: false,
|
|
76
|
+
type: ComponentInputType.Number,
|
|
77
|
+
id: "maxSites",
|
|
78
|
+
placeholder: String(DEFAULT_MAX_SITES),
|
|
79
|
+
section: DisplaySection,
|
|
80
|
+
});
|
|
81
|
+
args.push({
|
|
82
|
+
name: "Show Site Names",
|
|
83
|
+
description: "Print each site's name under its marker. Names come off automatically when the map gets too busy for them to be readable.",
|
|
84
|
+
required: false,
|
|
85
|
+
type: ComponentInputType.Boolean,
|
|
86
|
+
id: "showLabels",
|
|
87
|
+
section: DisplaySection,
|
|
88
|
+
});
|
|
89
|
+
args.push({
|
|
90
|
+
name: "Site Types",
|
|
91
|
+
description: "Only draw sites of these types — e.g. just the stores, or just the regional hubs.",
|
|
92
|
+
required: false,
|
|
93
|
+
type: ComponentInputType.EntityMultiSelectDropdown,
|
|
94
|
+
id: "networkSiteTypeIds",
|
|
95
|
+
section: FiltersSection,
|
|
96
|
+
entityFilterModelType: EntityFilterModelType.NetworkSiteType,
|
|
97
|
+
});
|
|
98
|
+
args.push({
|
|
99
|
+
name: "Status",
|
|
100
|
+
description: "Quick filter by the status rolled up onto the site",
|
|
101
|
+
required: false,
|
|
102
|
+
type: ComponentInputType.Dropdown,
|
|
103
|
+
id: "statusFilter",
|
|
104
|
+
section: FiltersSection,
|
|
105
|
+
dropdownOptions: [
|
|
106
|
+
{ label: "All", value: "" },
|
|
107
|
+
{ label: "Down only", value: "down" },
|
|
108
|
+
{ label: "Operational only", value: "operational" },
|
|
109
|
+
],
|
|
110
|
+
});
|
|
111
|
+
return args;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=DashboardNetworkMapComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardNetworkMapComponent.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/DashboardNetworkMapComponent.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ import DashboardKubernetesStatefulSetListComponentUtil from "./DashboardKubernet
|
|
|
25
25
|
import DashboardLogStreamComponentUtil from "./DashboardLogStreamComponent";
|
|
26
26
|
import DashboardLogChartComponentUtil from "./DashboardLogChartComponent";
|
|
27
27
|
import DashboardMonitorListComponentUtil from "./DashboardMonitorListComponent";
|
|
28
|
+
import DashboardNetworkMapComponentUtil from "./DashboardNetworkMapComponent";
|
|
28
29
|
import DashboardPodmanContainerListComponentUtil from "./DashboardPodmanContainerListComponent";
|
|
29
30
|
import DashboardPodmanHostListComponentUtil from "./DashboardPodmanHostListComponent";
|
|
30
31
|
import DashboardPodmanImageListComponentUtil from "./DashboardPodmanImageListComponent";
|
|
@@ -164,6 +165,9 @@ export default class DashboardComponentsUtil {
|
|
|
164
165
|
if (dashboardComponentType === DashboardComponentType.CephPoolList) {
|
|
165
166
|
return DashboardCephPoolListComponentUtil.getComponentConfigArguments();
|
|
166
167
|
}
|
|
168
|
+
if (dashboardComponentType === DashboardComponentType.NetworkMap) {
|
|
169
|
+
return DashboardNetworkMapComponentUtil.getComponentConfigArguments();
|
|
170
|
+
}
|
|
167
171
|
if (dashboardComponentType === DashboardComponentType.Html) {
|
|
168
172
|
return DashboardHtmlComponentUtil.getComponentConfigArguments();
|
|
169
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/Index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/Index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import OneUptimeDate from "../../Types/Date";
|
|
2
|
+
import EventInterval from "../../Types/Events/EventInterval";
|
|
3
|
+
import Recurring from "../../Types/Events/Recurring";
|
|
4
|
+
import StatusPageReportPeriodType from "../../Types/StatusPage/StatusPageReportPeriodType";
|
|
5
|
+
import Timezone from "../../Types/Timezone";
|
|
6
|
+
class StatusPageReportPeriodUtil {
|
|
7
|
+
static getDefaultPeriodType() {
|
|
8
|
+
return StatusPageReportPeriodType.Rolling;
|
|
9
|
+
}
|
|
10
|
+
/*
|
|
11
|
+
* Resolve the window a report sent at `sentAt` (default: now) covers.
|
|
12
|
+
*
|
|
13
|
+
* Everything is optional because this is called with a half-filled form as
|
|
14
|
+
* the user types, and with columns that are null on status pages created
|
|
15
|
+
* before reports were configurable. Missing values fall back to the same
|
|
16
|
+
* defaults the database columns carry.
|
|
17
|
+
*/
|
|
18
|
+
static getReportPeriod(data) {
|
|
19
|
+
const timezone = data.timezone || this.DEFAULT_TIMEZONE;
|
|
20
|
+
const sentAt = data.sentAt || OneUptimeDate.getCurrentDate();
|
|
21
|
+
if (data.periodType === StatusPageReportPeriodType.PreviousCalendarPeriod) {
|
|
22
|
+
return this.getPreviousCalendarPeriod({
|
|
23
|
+
reportRecurringInterval: data.reportRecurringInterval,
|
|
24
|
+
timezone: timezone,
|
|
25
|
+
sentAt: sentAt,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return this.getRollingPeriod({
|
|
29
|
+
reportDataInDays: data.reportDataInDays,
|
|
30
|
+
timezone: timezone,
|
|
31
|
+
sentAt: sentAt,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
static getRollingPeriod(data) {
|
|
35
|
+
const numberOfDays = this.toWholeDays(data.reportDataInDays, this.DEFAULT_REPORT_DATA_IN_DAYS);
|
|
36
|
+
const endDate = data.sentAt;
|
|
37
|
+
const startDate = OneUptimeDate.getSomeDaysAgoFromDate(endDate, numberOfDays);
|
|
38
|
+
return {
|
|
39
|
+
startDate: startDate,
|
|
40
|
+
endDate: endDate,
|
|
41
|
+
numberOfDays: numberOfDays,
|
|
42
|
+
timezone: data.timezone,
|
|
43
|
+
reportDates: `${numberOfDays} days (${this.formatDay(startDate, data.timezone)} - ${this.formatDay(endDate, data.timezone)})`,
|
|
44
|
+
periodName: numberOfDays === 1 ? "the last day" : `the last ${numberOfDays} days`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/*
|
|
48
|
+
* The last WHOLE calendar period before the report went out, sized by the
|
|
49
|
+
* send frequency. A monthly report sent at any point in August covers
|
|
50
|
+
* 1 Aug 00:00:00.000 minus one month through 31 Jul 23:59:59.999 - i.e. July,
|
|
51
|
+
* exactly as it reads on a calendar, in the status page's report timezone.
|
|
52
|
+
*/
|
|
53
|
+
static getPreviousCalendarPeriod(data) {
|
|
54
|
+
var _a;
|
|
55
|
+
const recurring = data.reportRecurringInterval
|
|
56
|
+
? Recurring.fromJSON(data.reportRecurringInterval)
|
|
57
|
+
: Recurring.getDefault();
|
|
58
|
+
const unit = Recurring.toCalendarUnit(recurring.intervalType);
|
|
59
|
+
const intervalCount = this.toWholeDays((_a = recurring.intervalCount) === null || _a === void 0 ? void 0 : _a.toNumber(), 1);
|
|
60
|
+
/*
|
|
61
|
+
* Exclusive upper bound: the start of the period the report is being sent
|
|
62
|
+
* IN, which is the first instant not yet covered. The inclusive endDate
|
|
63
|
+
* below steps back a millisecond from it so the email reads "Jul 31" rather
|
|
64
|
+
* than "Aug 1".
|
|
65
|
+
*/
|
|
66
|
+
const endExclusive = OneUptimeDate.getStartOfCalendarUnit(data.sentAt, unit, data.timezone);
|
|
67
|
+
const startDate = OneUptimeDate.addRemoveCalendarUnits(endExclusive, unit, -intervalCount, data.timezone);
|
|
68
|
+
const endDate = new Date(endExclusive.getTime() - 1);
|
|
69
|
+
return {
|
|
70
|
+
startDate: startDate,
|
|
71
|
+
endDate: endDate,
|
|
72
|
+
numberOfDays: Math.max(1, Math.round((endExclusive.getTime() - startDate.getTime()) /
|
|
73
|
+
OneUptimeDate.getMillisecondsInDays(1))),
|
|
74
|
+
timezone: data.timezone,
|
|
75
|
+
reportDates: `${this.formatDay(startDate, data.timezone)} - ${this.formatDay(endDate, data.timezone)}`,
|
|
76
|
+
periodName: this.getCalendarPeriodName({
|
|
77
|
+
intervalType: recurring.intervalType,
|
|
78
|
+
intervalCount: intervalCount,
|
|
79
|
+
startDate: startDate,
|
|
80
|
+
endDate: endDate,
|
|
81
|
+
timezone: data.timezone,
|
|
82
|
+
}),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
static getCalendarPeriodName(data) {
|
|
86
|
+
/*
|
|
87
|
+
* Only a single-unit period has a name a reader already knows ("July 2026").
|
|
88
|
+
* Anything spanning several units, and hourly periods, are clearer as an
|
|
89
|
+
* explicit range.
|
|
90
|
+
*/
|
|
91
|
+
if (data.intervalCount === 1) {
|
|
92
|
+
if (data.intervalType === EventInterval.Month) {
|
|
93
|
+
return this.format(data.startDate, "MMMM YYYY", data.timezone);
|
|
94
|
+
}
|
|
95
|
+
if (data.intervalType === EventInterval.Year) {
|
|
96
|
+
return this.format(data.startDate, "YYYY", data.timezone);
|
|
97
|
+
}
|
|
98
|
+
if (data.intervalType === EventInterval.Week) {
|
|
99
|
+
return `the week of ${this.formatDay(data.startDate, data.timezone)}`;
|
|
100
|
+
}
|
|
101
|
+
if (data.intervalType === EventInterval.Day) {
|
|
102
|
+
return this.formatDay(data.startDate, data.timezone);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return `${this.formatDay(data.startDate, data.timezone)} - ${this.formatDay(data.endDate, data.timezone)}`;
|
|
106
|
+
}
|
|
107
|
+
/*
|
|
108
|
+
* Guard against the nulls, decimals and zeroes a JSON column or a mid-edit
|
|
109
|
+
* form field can hold. A zero-length window would divide by zero downstream.
|
|
110
|
+
*/
|
|
111
|
+
static toWholeDays(value, fallback) {
|
|
112
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value < 1) {
|
|
113
|
+
return fallback;
|
|
114
|
+
}
|
|
115
|
+
return Math.floor(value);
|
|
116
|
+
}
|
|
117
|
+
static formatDay(date, timezone) {
|
|
118
|
+
return this.format(date, "MMM D, YYYY", timezone);
|
|
119
|
+
}
|
|
120
|
+
static format(date, format, timezone) {
|
|
121
|
+
return OneUptimeDate.getDateAsCustomFormattedStringInTimezone({
|
|
122
|
+
date: date,
|
|
123
|
+
format: format,
|
|
124
|
+
timezone: timezone,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
StatusPageReportPeriodUtil.DEFAULT_REPORT_DATA_IN_DAYS = 30;
|
|
129
|
+
StatusPageReportPeriodUtil.DEFAULT_TIMEZONE = Timezone.UTC;
|
|
130
|
+
export default StatusPageReportPeriodUtil;
|
|
131
|
+
//# sourceMappingURL=ReportPeriod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportPeriod.js","sourceRoot":"","sources":["../../../../Utils/StatusPage/ReportPeriod.ts"],"names":[],"mappings":"AAAA,OAAO,aAA+B,MAAM,kBAAkB,CAAC;AAC/D,OAAO,aAAa,MAAM,kCAAkC,CAAC;AAC7D,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,0BAA0B,MAAM,mDAAmD,CAAC;AAC3F,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAoC5C,MAAqB,0BAA0B;IAItC,MAAM,CAAC,oBAAoB;QAChC,OAAO,0BAA0B,CAAC,OAAO,CAAC;IAC5C,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,eAAe,CAAC,IAM7B;QACC,MAAM,QAAQ,GAAa,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAClE,MAAM,MAAM,GAAS,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,CAAC;QAEnE,IAAI,IAAI,CAAC,UAAU,KAAK,0BAA0B,CAAC,sBAAsB,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAC,yBAAyB,CAAC;gBACpC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;gBACrD,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC;YAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,IAI/B;QACC,MAAM,YAAY,GAAW,IAAI,CAAC,WAAW,CAC3C,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,2BAA2B,CACjC,CAAC;QAEF,MAAM,OAAO,GAAS,IAAI,CAAC,MAAM,CAAC;QAClC,MAAM,SAAS,GAAS,aAAa,CAAC,sBAAsB,CAC1D,OAAO,EACP,YAAY,CACb,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,YAAY;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,GAAG,YAAY,UAAU,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;YAC7H,UAAU,EACR,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,YAAY,OAAO;SACxE,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,yBAAyB,CAAC,IAIxC;;QACC,MAAM,SAAS,GAAc,IAAI,CAAC,uBAAuB;YACvD,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC;YAClD,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAE3B,MAAM,IAAI,GAAiB,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAW,IAAI,CAAC,WAAW,CAC5C,MAAA,SAAS,CAAC,aAAa,0CAAE,QAAQ,EAAE,EACnC,CAAC,CACF,CAAC;QAEF;;;;;WAKG;QACH,MAAM,YAAY,GAAS,aAAa,CAAC,sBAAsB,CAC7D,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,MAAM,SAAS,GAAS,aAAa,CAAC,sBAAsB,CAC1D,YAAY,EACZ,IAAI,EACJ,CAAC,aAAa,EACd,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,MAAM,OAAO,GAAS,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAE3D,OAAO;YACL,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,IAAI,CAAC,GAAG,CACpB,CAAC,EACD,IAAI,CAAC,KAAK,CACR,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC5C,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,CACzC,CACF;YACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACtG,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC;gBACrC,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,aAAa,EAAE,aAAa;gBAC5B,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;SACH,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,IAMpC;QACC;;;;WAIG;QACH,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;gBAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjE,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC7C,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxE,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7G,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,WAAW,CACxB,KAAgC,EAChC,QAAgB;QAEhB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACtE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,IAAU,EAAE,QAAkB;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEO,MAAM,CAAC,MAAM,CACnB,IAAU,EACV,MAAc,EACd,QAAkB;QAElB,OAAO,aAAa,CAAC,wCAAwC,CAAC;YAC5D,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;;AAjMsB,sDAA2B,GAAW,EAAE,CAAC;AACzC,2CAAgB,GAAa,QAAQ,CAAC,GAAG,CAAC;eAF9C,0BAA0B"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Normalization for the OpenTelemetry `host.ip` resource attribute, which
|
|
3
|
+
* is an ARRAY of every address on every interface — not a single IP.
|
|
4
|
+
*
|
|
5
|
+
* On a Docker host with IPv6 enabled that array grows with the container
|
|
6
|
+
* count: the physical NIC, one address per docker bridge, one per veth,
|
|
7
|
+
* plus an IPv6 link-local per interface. 55 addresses / ~1450 characters
|
|
8
|
+
* has been observed in the wild (issue #3006), and there is no upper
|
|
9
|
+
* bound in the OTel spec.
|
|
10
|
+
*
|
|
11
|
+
* `Host.hostIpAddresses` is a `text` column so the realistic case is
|
|
12
|
+
* stored losslessly. These caps exist only so a pathological (or hostile)
|
|
13
|
+
* collector cannot push an unbounded blob into Postgres on every batch.
|
|
14
|
+
* They sit far above any plausible host, so in practice this function
|
|
15
|
+
* dedupes and joins and nothing else.
|
|
16
|
+
*/
|
|
17
|
+
/** Maximum number of addresses retained. */
|
|
18
|
+
export const MAX_HOST_IP_ADDRESS_COUNT = 256;
|
|
19
|
+
/** Maximum length of the serialized, comma-separated list. */
|
|
20
|
+
export const MAX_HOST_IP_ADDRESSES_LENGTH = 10000;
|
|
21
|
+
const SEPARATOR = ", ";
|
|
22
|
+
/**
|
|
23
|
+
* Turn the raw `host.ip` values into the comma-separated string stored in
|
|
24
|
+
* `Host.hostIpAddresses`.
|
|
25
|
+
*
|
|
26
|
+
* - blank / whitespace-only entries are dropped,
|
|
27
|
+
* - each entry is trimmed,
|
|
28
|
+
* - duplicates are removed case-insensitively (IPv6 hex casing is not
|
|
29
|
+
* stable across resource detectors, so `FE80::1` and `fe80::1` are the
|
|
30
|
+
* same address),
|
|
31
|
+
* - source order is preserved — collectors report interfaces in a stable,
|
|
32
|
+
* meaningful order and reordering would churn the Hosts table column,
|
|
33
|
+
* - the result is capped by both address count and serialized length.
|
|
34
|
+
*
|
|
35
|
+
* Truncation always drops whole addresses from the tail. A half-written
|
|
36
|
+
* address would be worse than a missing one: it reads as a real address
|
|
37
|
+
* and there is no way for a consumer to tell it was cut.
|
|
38
|
+
*
|
|
39
|
+
* Returns `null` when nothing survives, so callers can leave the column
|
|
40
|
+
* untouched rather than writing an empty string.
|
|
41
|
+
*/
|
|
42
|
+
export function normalizeHostIpAddresses(ipAddresses) {
|
|
43
|
+
if (!ipAddresses || ipAddresses.length === 0) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const seen = new Set();
|
|
47
|
+
const kept = [];
|
|
48
|
+
let serializedLength = 0;
|
|
49
|
+
for (const raw of ipAddresses) {
|
|
50
|
+
if (typeof raw !== "string") {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const trimmed = raw.trim();
|
|
54
|
+
if (!trimmed) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const dedupeKey = trimmed.toLowerCase();
|
|
58
|
+
if (seen.has(dedupeKey)) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const lengthWithSeparator = trimmed.length + (kept.length > 0 ? SEPARATOR.length : 0);
|
|
62
|
+
if (serializedLength + lengthWithSeparator > MAX_HOST_IP_ADDRESSES_LENGTH) {
|
|
63
|
+
/*
|
|
64
|
+
* Stop rather than continue: entries are already ordered by the
|
|
65
|
+
* collector, so skipping this one to squeeze in a shorter later one
|
|
66
|
+
* would make the stored list order-dependent on address width.
|
|
67
|
+
*/
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
seen.add(dedupeKey);
|
|
71
|
+
kept.push(trimmed);
|
|
72
|
+
serializedLength += lengthWithSeparator;
|
|
73
|
+
if (kept.length >= MAX_HOST_IP_ADDRESS_COUNT) {
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (kept.length === 0) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return kept.join(SEPARATOR);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=HostIpAddresses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostIpAddresses.js","sourceRoot":"","sources":["../../../../Utils/Telemetry/HostIpAddresses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAW,GAAG,CAAC;AAErD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,4BAA4B,GAAW,KAAK,CAAC;AAE1D,MAAM,SAAS,GAAW,IAAI,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAA6C;IAE7C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAgB,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,IAAI,gBAAgB,GAAW,CAAC,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAW,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAW,OAAO,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,MAAM,mBAAmB,GACvB,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,gBAAgB,GAAG,mBAAmB,GAAG,4BAA4B,EAAE,CAAC;YAC1E;;;;eAIG;YACH,MAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,gBAAgB,IAAI,mBAAmB,CAAC;QAExC,IAAI,IAAI,CAAC,MAAM,IAAI,yBAAyB,EAAE,CAAC;YAC7C,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9B,CAAC"}
|
package/jest.config.json
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"modulePathIgnorePatterns": ["<rootDir>/build/dist"],
|
|
12
12
|
"moduleNameMapper": {
|
|
13
|
+
"\\.(svg|png|jpg|jpeg|gif|webp)$": "<rootDir>/Tests/__mocks__/styleMock.js",
|
|
13
14
|
"Common/(.*)": "<rootDir>/$1",
|
|
14
15
|
"\\.(css|less|scss|sass)$": "<rootDir>/Tests/__mocks__/styleMock.js",
|
|
15
16
|
"^uuid$": "<rootDir>/Tests/__mocks__/uuid.js",
|
|
@@ -25,6 +26,7 @@
|
|
|
25
26
|
"^react$": "<rootDir>/node_modules/react",
|
|
26
27
|
"^react-dom$": "<rootDir>/node_modules/react-dom",
|
|
27
28
|
"^react-dom/(.*)$": "<rootDir>/node_modules/react-dom/$1",
|
|
29
|
+
"^react-router-dom$": "<rootDir>/node_modules/react-router-dom",
|
|
28
30
|
"^react-markdown$": "<rootDir>/Tests/__mocks__/react-markdown.js",
|
|
29
31
|
"^remark-gfm$": "<rootDir>/Tests/__mocks__/remark-gfm.js",
|
|
30
32
|
"^react-syntax-highlighter$": "<rootDir>/Tests/__mocks__/react-syntax-highlighter.js",
|