@oneuptime/common 12.0.23 → 12.0.25
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/Span.ts +101 -0
- package/Models/DatabaseModels/DetectionRule.ts +55 -0
- package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +27 -7
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +67 -0
- package/Models/DatabaseModels/Project.ts +68 -0
- package/Models/DatabaseModels/User.ts +68 -0
- package/Server/API/BaseAPI.ts +0 -24
- package/Server/API/SlackAPI.ts +0 -2
- package/Server/API/TelemetryAPI.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789400000000-AddNameToNetworkDeviceDiscoveryScan.ts +28 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789500000000-AddCampaignUtmFields.ts +49 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789512000000-AddDetectionRuleDistinctCountColumns.ts +33 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
- package/Server/Middleware/GzipRequestBody.ts +311 -0
- package/Server/Middleware/MultipartFormData.ts +87 -3
- package/Server/Middleware/SlackAuthorization.ts +96 -18
- package/Server/Services/DetectionRuleService.ts +73 -6
- package/Server/Services/Index.ts +205 -0
- package/Server/Services/NetworkDeviceDiscoveryScanService.ts +59 -0
- package/Server/Services/NetworkDeviceService.ts +148 -0
- package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +65 -0
- package/Server/Services/OnCallDutyPolicyFeedService.ts +1 -1
- package/Server/Services/ProjectService.ts +29 -19
- package/Server/Services/SecurityEventService.ts +90 -13
- package/Server/Services/StatusPageResourceService.ts +223 -0
- package/Server/Services/TelemetryAttributeService.ts +17 -0
- package/Server/Services/UserService.ts +4 -6
- package/Server/Types/Markdown.ts +161 -67
- package/Server/Utils/AI/Toolbox/OnCallTools.ts +12 -4
- package/Server/Utils/AnalyticsDatabase/Statement.ts +13 -1
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +297 -6
- package/Server/Utils/Attribution.ts +4 -0
- package/Server/Utils/Marketing/MarketingEventUtil.ts +45 -7
- package/Server/Utils/SecurityEvent/DetectionRuleEvaluator.ts +55 -3
- package/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.ts +21 -0
- package/Server/Utils/StartServer.ts +12 -32
- package/Server/Utils/Telemetry/LlmCostBudgetEvaluator.ts +101 -4
- package/Server/Utils/Telemetry/LlmMetricSpend.ts +181 -0
- package/Server/Utils/Telemetry/LlmSpan.ts +46 -0
- package/Server/Utils/Workspace/Slack/Actions/Auth.ts +0 -12
- package/Server/Views/Partials/AnalyticsConsent.ejs +159 -102
- package/Server/Views/Partials/Head.ejs +2 -1
- package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +776 -38
- package/Tests/App/Dashboard/CorrelateFilterBuilder.test.tsx +359 -0
- package/Tests/App/Dashboard/CorrelateGraph.test.tsx +865 -0
- package/Tests/App/Dashboard/CorrelationGraph.test.ts +346 -0
- package/Tests/App/Dashboard/CriteriaFilterConditionDropdown.test.tsx +256 -0
- package/Tests/App/Dashboard/CriteriaFilterDefaults.test.ts +738 -0
- package/Tests/App/Dashboard/CriteriaFilterMonitorTypeChange.test.ts +1122 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +283 -0
- package/Tests/App/Dashboard/ExternalStatusPageCriteriaFilter.test.ts +407 -0
- package/Tests/App/Dashboard/LlmCallsTableIdentity.test.tsx +322 -0
- package/Tests/App/Dashboard/LlmOverview.test.tsx +335 -0
- package/Tests/App/Dashboard/LlmSpanDisplay.test.ts +391 -0
- package/Tests/App/Dashboard/LlmUsageBreakdown.test.tsx +1007 -0
- package/Tests/App/Dashboard/MetricSeriesInvestigateMenu.test.tsx +5 -14
- package/Tests/App/Dashboard/MonitorCriteriaActionToggles.test.tsx +426 -0
- package/Tests/App/Dashboard/MonitorStepsCriteriaAlignmentWiring.test.tsx +352 -0
- package/Tests/App/Dashboard/OnCallLayerCardOverrides.test.tsx +278 -0
- package/Tests/App/Dashboard/OnCallLayerShiftPreviewOverrides.test.ts +237 -0
- package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +2 -2
- package/Tests/App/Dashboard/OnCallSchedulePreviewOverrides.test.tsx +460 -0
- package/Tests/App/Dashboard/SecurityEventAttributeUtil.test.ts +171 -0
- package/Tests/App/Dashboard/SecurityEventCorrelation.test.ts +857 -0
- package/Tests/App/Dashboard/SecurityEventDetailObservables.test.tsx +194 -0
- package/Tests/App/Dashboard/SecurityEventsDetectionRulesPage.test.tsx +124 -0
- package/Tests/App/Dashboard/SecurityEventsMonitorStepForm.test.tsx +79 -19
- package/Tests/App/Dashboard/SecurityEventsTableColumns.test.tsx +382 -0
- package/Tests/App/StatusPage/BulkAddStatusPageMonitors.test.ts +216 -0
- package/Tests/App/StatusPage/BulkAddStatusPageMonitorsModal.test.tsx +590 -11
- package/Tests/App/StatusPage/StatusPageResourceExplorer.test.tsx +757 -0
- package/Tests/Models/DiscoveryScanNameColumn.test.ts +293 -0
- package/Tests/Server/API/BaseAPI.test.ts +41 -0
- package/Tests/Server/API/BaseAPIUpdatePayloadValidation.test.ts +9 -16
- package/Tests/Server/API/SecurityEventAttributesAPI.test.ts +564 -0
- package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +120 -4
- package/Tests/Server/Middleware/GzipRequestBody.test.ts +725 -0
- package/Tests/Server/Middleware/MultipartFormData.test.ts +298 -0
- package/Tests/Server/Middleware/SlackAuthorization.test.ts +262 -5
- package/Tests/Server/Services/AddDetectionRuleDistinctCountColumnsMigration.test.ts +311 -0
- package/Tests/Server/Services/DetectionRuleService.test.ts +134 -2
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +7 -1
- package/Tests/Server/Services/FeedRetentionConsistency.test.ts +131 -0
- package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +194 -0
- package/Tests/Server/Services/NetworkDeviceMonitorStatusStamp.test.ts +800 -0
- package/Tests/Server/Services/OnCallScheduleAttachRosterRefresh.test.ts +244 -0
- package/Tests/Server/Services/SecurityEventService.test.ts +376 -0
- package/Tests/Server/Services/StatusPageResourceDuplicates.test.ts +703 -0
- package/Tests/Server/Services/TelemetryAttributeServiceSecurityEvent.test.ts +256 -0
- package/Tests/Server/Types/Workflow/Components/ComponentRegistryParity.test.ts +417 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGeneratorWhereOperators.test.ts +677 -0
- package/Tests/Server/Utils/Marketing/MarketingEventUtil.test.ts +43 -0
- package/Tests/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.test.ts +15 -11
- package/Tests/Server/Utils/SecurityEvent/DetectionRuleEvaluator.test.ts +369 -8
- package/Tests/Server/Utils/SecurityEvent/SigmaClickhouseCompiler.test.ts +35 -0
- package/Tests/Server/Utils/Telemetry/LlmCostBudgetEvaluator.test.ts +387 -4
- package/Tests/Server/Utils/Telemetry/LlmMetricSpend.test.ts +386 -0
- package/Tests/Server/Utils/Telemetry/LlmSpan.test.ts +804 -0
- package/Tests/Server/Views/AnalyticsConsentPartial.test.ts +48 -5
- package/Tests/Types/Code/YamlSyntax.test.ts +396 -0
- package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +957 -0
- package/Tests/Types/Monitor/MonitorCriteriaActionValidation.test.ts +598 -0
- package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +49 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +6 -6
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +4 -4
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +4 -3
- package/Tests/Types/Telemetry/LlmMetricConventions.test.ts +584 -0
- package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +0 -12
- package/Tests/UI/Components/CardModelDetailEdit.test.tsx +1 -17
- package/Tests/UI/Components/CodeEditor.test.tsx +474 -10
- package/Tests/UI/Components/Detail/YamlField.test.tsx +105 -0
- package/Tests/UI/Components/EntityDropdownLabelsBulkAdd.test.tsx +319 -0
- package/Tests/UI/Components/Forms/FormFieldYaml.test.tsx +231 -0
- package/Tests/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.test.ts +1 -0
- package/Tests/UI/Components/Forms/ValidationYAML.test.ts +234 -0
- package/Tests/UI/Components/ModelTable/AttributeColumns.test.tsx +573 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableAttributeColumns.test.tsx +824 -0
- package/Tests/UI/Components/ModelTable/ColumnCustomizationModalAddableColumns.test.tsx +707 -0
- package/Tests/UI/Components/SideOver.test.tsx +1 -1
- package/Tests/UI/Components/StatusPage/ResourceGridSelection.test.tsx +294 -0
- package/Tests/UI/Components/StatusPage/ResourceListSelection.test.tsx +436 -0
- package/Tests/UI/Components/TableBulkCsvExport.test.tsx +6 -2
- package/Tests/UI/Components/Toggle.test.tsx +25 -0
- package/Tests/UI/Components/YamlEditor.test.tsx +847 -0
- package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +252 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +221 -0
- package/Tests/Utils/NetworkDiscovery/ScanNameUtil.test.ts +312 -0
- package/Tests/Utils/StatusPage/ResourceExplorer.test.ts +468 -0
- package/Tests/Utils/Telemetry/LlmMetricQuery.test.ts +770 -0
- package/Types/Code/YamlSyntax.ts +396 -0
- package/Types/Exception/ExceptionCode.ts +1 -0
- package/Types/Exception/PayloadTooLargeException.ts +8 -0
- package/Types/Marketing/Attribution.ts +10 -0
- package/Types/Marketing/MarketingEvent.ts +4 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +116 -56
- package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +2 -1
- package/Types/SecurityEvent/DetectionFindingConstants.ts +11 -0
- package/Types/Telemetry/LlmConventions.ts +255 -0
- package/Types/Telemetry/LlmMetricConventions.ts +329 -0
- package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +3 -0
- package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +10 -1
- package/UI/Components/CodeEditor/CodeEditor.tsx +241 -79
- package/UI/Components/CodeEditor/YamlEditor.tsx +369 -0
- package/UI/Components/Detail/Detail.tsx +10 -0
- package/UI/Components/EntityDropdown/EntityDropdown.tsx +33 -0
- package/UI/Components/Forms/Fields/FormField.tsx +31 -0
- package/UI/Components/Forms/Types/Field.ts +8 -0
- package/UI/Components/Forms/Types/FormFieldSchemaType.ts +1 -0
- package/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.ts +2 -0
- package/UI/Components/Forms/Validation.ts +46 -0
- package/UI/Components/Input/Input.tsx +3 -0
- package/UI/Components/ModelTable/AttributeColumns.tsx +321 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +263 -14
- package/UI/Components/ModelTable/Column.ts +8 -0
- package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +310 -0
- package/UI/Components/ModelTable/ColumnPreference.ts +13 -1
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.tsx +2 -2
- package/UI/Components/SideOver/SideOver.tsx +5 -5
- package/UI/Components/StatusPage/ResourceGrid.tsx +82 -2
- package/UI/Components/StatusPage/ResourceList.tsx +197 -38
- package/UI/Components/Toggle/Toggle.tsx +9 -1
- package/UI/Components/Types/FieldType.ts +1 -0
- package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +73 -1
- package/Utils/NetworkDiscovery/ScanNameUtil.ts +181 -0
- package/Utils/StatusPage/ResourceExplorer.ts +258 -0
- package/Utils/Telemetry/LlmMetricQuery.ts +287 -0
- package/build/dist/Models/AnalyticsModels/Span.js +89 -0
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DetectionRule.js +57 -0
- package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +27 -7
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +69 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +76 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +76 -0
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +3 -19
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/SlackAPI.js +0 -2
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +17 -0
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789400000000-AddNameToNetworkDeviceDiscoveryScan.js +21 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789400000000-AddNameToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789500000000-AddCampaignUtmFields.js +42 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789500000000-AddCampaignUtmFields.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789512000000-AddDetectionRuleDistinctCountColumns.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789512000000-AddDetectionRuleDistinctCountColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/GzipRequestBody.js +224 -0
- package/build/dist/Server/Middleware/GzipRequestBody.js.map +1 -0
- package/build/dist/Server/Middleware/MultipartFormData.js +71 -2
- package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
- package/build/dist/Server/Middleware/SlackAuthorization.js +58 -7
- package/build/dist/Server/Middleware/SlackAuthorization.js.map +1 -1
- package/build/dist/Server/Services/DetectionRuleService.js +49 -4
- package/build/dist/Server/Services/DetectionRuleService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +204 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +50 -0
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +124 -0
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +68 -13
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +25 -45
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/SecurityEventService.js +57 -5
- package/build/dist/Server/Services/SecurityEventService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageResourceService.js +140 -0
- package/build/dist/Server/Services/StatusPageResourceService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryAttributeService.js +17 -0
- package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +2 -12
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Markdown.js +147 -61
- package/build/dist/Server/Types/Markdown.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js +12 -4
- package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +12 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +246 -9
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Attribution.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js +27 -7
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +42 -7
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js +18 -0
- package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +12 -21
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LlmCostBudgetEvaluator.js +76 -5
- package/build/dist/Server/Utils/Telemetry/LlmCostBudgetEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LlmMetricSpend.js +151 -0
- package/build/dist/Server/Utils/Telemetry/LlmMetricSpend.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/LlmSpan.js +24 -1
- package/build/dist/Server/Utils/Telemetry/LlmSpan.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js +0 -10
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js.map +1 -1
- package/build/dist/Types/Code/YamlSyntax.js +212 -0
- package/build/dist/Types/Code/YamlSyntax.js.map +1 -0
- package/build/dist/Types/Exception/ExceptionCode.js +1 -0
- package/build/dist/Types/Exception/ExceptionCode.js.map +1 -1
- package/build/dist/Types/Exception/PayloadTooLargeException.js +8 -0
- package/build/dist/Types/Exception/PayloadTooLargeException.js.map +1 -0
- package/build/dist/Types/Marketing/Attribution.js +10 -0
- package/build/dist/Types/Marketing/Attribution.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +112 -51
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +2 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -1
- package/build/dist/Types/SecurityEvent/DetectionFindingConstants.js +9 -0
- package/build/dist/Types/SecurityEvent/DetectionFindingConstants.js.map +1 -1
- package/build/dist/Types/Telemetry/LlmConventions.js +236 -0
- package/build/dist/Types/Telemetry/LlmConventions.js.map +1 -1
- package/build/dist/Types/Telemetry/LlmMetricConventions.js +290 -0
- package/build/dist/Types/Telemetry/LlmMetricConventions.js.map +1 -0
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +1 -1
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +5 -2
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js +206 -76
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
- package/build/dist/UI/Components/CodeEditor/YamlEditor.js +201 -0
- package/build/dist/UI/Components/CodeEditor/YamlEditor.js.map +1 -0
- package/build/dist/UI/Components/Detail/Detail.js +9 -0
- package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
- package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +16 -1
- package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +14 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Forms/Types/Field.js.map +1 -1
- package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js +1 -0
- package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js.map +1 -1
- package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js +2 -0
- package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js.map +1 -1
- package/build/dist/UI/Components/Forms/Validation.js +27 -0
- package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +1 -1
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/AttributeColumns.js +159 -0
- package/build/dist/UI/Components/ModelTable/AttributeColumns.js.map +1 -0
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +179 -17
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +133 -2
- package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/ColumnPreference.js +7 -1
- package/build/dist/UI/Components/ModelTable/ColumnPreference.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.js +2 -2
- package/build/dist/UI/Components/SideOver/SideOver.js +5 -5
- package/build/dist/UI/Components/StatusPage/ResourceGrid.js +28 -2
- package/build/dist/UI/Components/StatusPage/ResourceGrid.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceList.js +87 -20
- package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -1
- package/build/dist/UI/Components/Toggle/Toggle.js +9 -1
- package/build/dist/UI/Components/Toggle/Toggle.js.map +1 -1
- package/build/dist/UI/Components/Types/FieldType.js +1 -0
- package/build/dist/UI/Components/Types/FieldType.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +37 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/ScanNameUtil.js +120 -0
- package/build/dist/Utils/NetworkDiscovery/ScanNameUtil.js.map +1 -0
- package/build/dist/Utils/StatusPage/ResourceExplorer.js +171 -0
- package/build/dist/Utils/StatusPage/ResourceExplorer.js.map +1 -1
- package/build/dist/Utils/Telemetry/LlmMetricQuery.js +175 -0
- package/build/dist/Utils/Telemetry/LlmMetricQuery.js.map +1 -0
- package/jest.config.json +2 -0
- package/package.json +1 -1
- package/tsconfig.json +2 -1
- package/Tests/UI/Components/Toast.test.tsx +0 -197
- package/Tests/UI/Components/ToastStacking.test.tsx +0 -198
- package/UI/Components/Toast/Toast.tsx +0 -189
- package/UI/Components/Toast/ToastInit.tsx +0 -110
- package/build/dist/UI/Components/Toast/Toast.js +0 -123
- package/build/dist/UI/Components/Toast/Toast.js.map +0 -1
- package/build/dist/UI/Components/Toast/ToastInit.js +0 -53
- package/build/dist/UI/Components/Toast/ToastInit.js.map +0 -1
|
@@ -33,21 +33,24 @@
|
|
|
33
33
|
<!--
|
|
34
34
|
Consent.
|
|
35
35
|
|
|
36
|
-
This block runs BEFORE Google Tag Manager
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
This block runs BEFORE Google Tag Manager, because Consent Mode's defaults
|
|
37
|
+
have to be on the dataLayer before the container reads it.
|
|
38
|
+
|
|
39
|
+
MEASUREMENT IS NO LONGER GATED ON THE BANNER. Consent Mode defaults to
|
|
40
|
+
granted, attribution is captured and stored on every visit, and PostHog
|
|
41
|
+
loads on every visit. The `cookiesAccepted` key is still written and
|
|
42
|
+
`oneUptimeConsent` still reports it, because the banner and the footer's
|
|
43
|
+
cookie-settings link still read and write it — but nothing downstream
|
|
44
|
+
branches on the answer any more.
|
|
45
|
+
|
|
46
|
+
Stated plainly so nobody has to infer it from the code: pressing "Reject
|
|
47
|
+
all" does not stop measurement, does not stop attribution being stored, and
|
|
48
|
+
does not clear what an earlier visit stored. This was a deliberate product
|
|
49
|
+
decision (the booking receiver needs every booking attributed, and a
|
|
50
|
+
booking is itself a deliberate act by the visitor); it is not an oversight,
|
|
51
|
+
and it is not the behaviour the banner's own copy describes. If that copy
|
|
52
|
+
or the banner UI is meant to keep promising a choice, this is the file that
|
|
53
|
+
has to change back.
|
|
51
54
|
-->
|
|
52
55
|
<% if(typeof enableGoogleTagManager !== 'undefined' ? enableGoogleTagManager : false){ %>
|
|
53
56
|
<!--
|
|
@@ -69,7 +72,6 @@
|
|
|
69
72
|
<script>
|
|
70
73
|
window.oneUptimeConsent = (function () {
|
|
71
74
|
var STORAGE_KEY = 'cookiesAccepted';
|
|
72
|
-
var listeners = [];
|
|
73
75
|
|
|
74
76
|
function readRaw() {
|
|
75
77
|
try {
|
|
@@ -95,19 +97,15 @@
|
|
|
95
97
|
}
|
|
96
98
|
|
|
97
99
|
/*
|
|
98
|
-
* Consent Mode v2
|
|
99
|
-
* things like fraud prevention that are not analytics; everything that
|
|
100
|
-
* feeds advertising or measurement starts denied.
|
|
100
|
+
* Consent Mode v2, defaulting to granted across the board.
|
|
101
101
|
*
|
|
102
|
-
* wait_for_update
|
|
103
|
-
*
|
|
104
|
-
* accepts immediately still count.
|
|
102
|
+
* wait_for_update is kept at 500ms so the container's own timing is
|
|
103
|
+
* unchanged, even though nothing arrives later to change the answer.
|
|
105
104
|
*/
|
|
106
105
|
function pushConsentSignal(mode, granted) {
|
|
107
106
|
/*
|
|
108
107
|
* No tag, nothing to tell. On a self-hosted install gtag is never
|
|
109
|
-
* defined
|
|
110
|
-
* capture and PostHog either way.
|
|
108
|
+
* defined; the banner's answer is still recorded either way.
|
|
111
109
|
*/
|
|
112
110
|
if (typeof window.gtag !== 'function') {
|
|
113
111
|
return;
|
|
@@ -125,12 +123,7 @@
|
|
|
125
123
|
});
|
|
126
124
|
}
|
|
127
125
|
|
|
128
|
-
pushConsentSignal('default',
|
|
129
|
-
|
|
130
|
-
// An earlier visit already answered: tell Google before the tag loads.
|
|
131
|
-
if (isGranted()) {
|
|
132
|
-
pushConsentSignal('update', true);
|
|
133
|
-
}
|
|
126
|
+
pushConsentSignal('default', true);
|
|
134
127
|
|
|
135
128
|
function set(granted) {
|
|
136
129
|
try {
|
|
@@ -139,27 +132,24 @@
|
|
|
139
132
|
// Nothing to persist to. The in-page decision still applies.
|
|
140
133
|
}
|
|
141
134
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
135
|
+
/*
|
|
136
|
+
* Deliberately NOT pushing a Consent Mode update here. The default
|
|
137
|
+
* is granted and stays granted; pushing 'denied' on a refusal would
|
|
138
|
+
* re-gate the Google tag and make the banner functional again,
|
|
139
|
+
* which is exactly what this file no longer does.
|
|
140
|
+
*
|
|
141
|
+
* There is no observer list either. Nothing downstream reacts to
|
|
142
|
+
* the answer any more, and an onChange() that could never fire is
|
|
143
|
+
* an API that reads as working code — re-add it alongside the
|
|
144
|
+
* consumer that needs it, not before.
|
|
145
|
+
*/
|
|
151
146
|
}
|
|
152
147
|
|
|
153
148
|
return {
|
|
154
149
|
state: state,
|
|
155
150
|
isGranted: isGranted,
|
|
156
151
|
grant: function () { set(true); },
|
|
157
|
-
deny: function () { set(false); }
|
|
158
|
-
onChange: function (listener) {
|
|
159
|
-
if (typeof listener === 'function') {
|
|
160
|
-
listeners.push(listener);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
152
|
+
deny: function () { set(false); }
|
|
163
153
|
};
|
|
164
154
|
})();
|
|
165
155
|
</script>
|
|
@@ -182,19 +172,36 @@
|
|
|
182
172
|
|
|
183
173
|
CONSENT
|
|
184
174
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
175
|
+
None. Every touch is stored on sight, whatever the banner says and whether
|
|
176
|
+
or not it has been answered. See the block at the top of this file for why.
|
|
177
|
+
|
|
178
|
+
CAL.COM BOOKINGS
|
|
179
|
+
|
|
180
|
+
window.oneUptimeCalAttributionMetadata(bookingKind) flattens the same
|
|
181
|
+
attribution into the scalar string map Cal.com accepts as booking metadata.
|
|
182
|
+
Cal hands it back on its BOOKING_CREATED webhook, which is delivered to the
|
|
183
|
+
CRM — not to OneUptime, which receives no booking webhook at all
|
|
184
|
+
(Docs/analytics/enterprise-conversion-tracking.md).
|
|
189
185
|
-->
|
|
190
186
|
<script>
|
|
191
187
|
(function () {
|
|
188
|
+
/*
|
|
189
|
+
* Must stay in step with UtmWireKeyToPropertyKey in
|
|
190
|
+
* Common/Types/Marketing/Attribution.ts — the signup door whitelists on
|
|
191
|
+
* that map, so a key written here that is missing there is silently
|
|
192
|
+
* dropped on arrival. AttributionCapture.test.ts asserts the two are
|
|
193
|
+
* identical.
|
|
194
|
+
*/
|
|
192
195
|
var UTM_KEY_MAP = {
|
|
193
196
|
'utm_source': 'utmSource',
|
|
194
197
|
'utm_medium': 'utmMedium',
|
|
195
198
|
'utm_campaign': 'utmCampaign',
|
|
196
199
|
'utm_term': 'utmTerm',
|
|
197
|
-
'utm_content': 'utmContent'
|
|
200
|
+
'utm_content': 'utmContent',
|
|
201
|
+
'utm_id': 'utmId',
|
|
202
|
+
'utm_source_platform': 'utmSourcePlatform',
|
|
203
|
+
'utm_creative_format': 'utmCreativeFormat',
|
|
204
|
+
'utm_marketing_tactic': 'utmMarketingTactic'
|
|
198
205
|
};
|
|
199
206
|
|
|
200
207
|
/*
|
|
@@ -208,12 +215,26 @@
|
|
|
208
215
|
// Mirrors MaxAttributionValueLength on the server.
|
|
209
216
|
var MAX_VALUE_LENGTH = 500;
|
|
210
217
|
|
|
211
|
-
|
|
212
|
-
|
|
218
|
+
/*
|
|
219
|
+
* The first touch travels to Cal as one JSON string, so it gets a JSON
|
|
220
|
+
* bound rather than the 500-char per-value one. Truncating JSON
|
|
221
|
+
* produces a string the receiver's JSON.parse rejects, which would drop
|
|
222
|
+
* the whole first touch silently.
|
|
223
|
+
*/
|
|
224
|
+
var MAX_FIRST_TOUCH_LENGTH = 4000;
|
|
213
225
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
226
|
+
/*
|
|
227
|
+
* This page's touch, kept in memory as well as written.
|
|
228
|
+
*
|
|
229
|
+
* Not a consent buffer — storeTouch runs unconditionally now. This is
|
|
230
|
+
* for the browser that refuses localStorage outright: private modes,
|
|
231
|
+
* "block all site data", a sandboxed iframe, enterprise storage policy.
|
|
232
|
+
* There, every setItem throws and is swallowed as best-effort, so a
|
|
233
|
+
* reader that trusted storage alone would hand Cal an empty bag for a
|
|
234
|
+
* visitor who arrived on a paid click seconds earlier — the exact
|
|
235
|
+
* failure this whole path exists to prevent.
|
|
236
|
+
*/
|
|
237
|
+
var currentTouch = null;
|
|
217
238
|
|
|
218
239
|
function setItem(key, value) {
|
|
219
240
|
try {
|
|
@@ -312,15 +333,6 @@
|
|
|
312
333
|
}
|
|
313
334
|
}
|
|
314
335
|
|
|
315
|
-
function clearStoredAttribution() {
|
|
316
|
-
Object.keys(UTM_KEY_MAP).forEach(function (param) {
|
|
317
|
-
removeItem(UTM_KEY_MAP[param]);
|
|
318
|
-
});
|
|
319
|
-
removeItem('utmUrl');
|
|
320
|
-
removeItem('clickIds');
|
|
321
|
-
removeItem('firstTouch');
|
|
322
|
-
}
|
|
323
|
-
|
|
324
336
|
function parseStoredJson(key) {
|
|
325
337
|
var raw = getItem(key);
|
|
326
338
|
if (!raw) { return null; }
|
|
@@ -333,42 +345,49 @@
|
|
|
333
345
|
}
|
|
334
346
|
|
|
335
347
|
/*
|
|
336
|
-
* Everything known about where this visitor came from, whether it
|
|
337
|
-
*
|
|
348
|
+
* Everything known about where this visitor came from, whether it
|
|
349
|
+
* reached storage or is only in memory.
|
|
338
350
|
*
|
|
339
|
-
*
|
|
340
|
-
*
|
|
351
|
+
* This page's touch wins: it is this page load, and the stored copy is
|
|
352
|
+
* at best the same thing and at worst an older visit.
|
|
341
353
|
*/
|
|
342
354
|
window.oneUptimeGetAttribution = function () {
|
|
343
355
|
var utm = {};
|
|
344
356
|
Object.keys(UTM_KEY_MAP).forEach(function (param) {
|
|
345
357
|
var key = UTM_KEY_MAP[param];
|
|
346
|
-
var value = (
|
|
358
|
+
var value = (currentTouch && currentTouch.utmValues[key]) || getItem(key);
|
|
347
359
|
if (value && value !== 'null' && value !== 'undefined') {
|
|
348
360
|
utm[key] = value;
|
|
349
361
|
}
|
|
350
362
|
});
|
|
351
363
|
|
|
352
|
-
var utmUrl = (
|
|
364
|
+
var utmUrl = (currentTouch && currentTouch.url) || getItem('utmUrl');
|
|
353
365
|
if (utmUrl) {
|
|
354
366
|
utm.utmUrl = utmUrl;
|
|
355
367
|
}
|
|
356
368
|
|
|
357
|
-
var clickIds = (
|
|
369
|
+
var clickIds = (currentTouch && currentTouch.hasClickId ? currentTouch.clickIds : null)
|
|
370
|
+
|| parseStoredJson('clickIds')
|
|
371
|
+
|| {};
|
|
358
372
|
|
|
359
373
|
var firstTouch = parseStoredJson('firstTouch');
|
|
360
374
|
|
|
361
|
-
|
|
375
|
+
/*
|
|
376
|
+
* Storage refused the write, so there is no stored first touch to
|
|
377
|
+
* read back. This visit is the only one we will ever know about,
|
|
378
|
+
* which makes it the first one.
|
|
379
|
+
*/
|
|
380
|
+
if (!firstTouch && currentTouch) {
|
|
362
381
|
firstTouch = {};
|
|
363
|
-
Object.keys(
|
|
364
|
-
firstTouch[key] =
|
|
382
|
+
Object.keys(currentTouch.utmValues).forEach(function (key) {
|
|
383
|
+
firstTouch[key] = currentTouch.utmValues[key];
|
|
365
384
|
});
|
|
366
|
-
if (
|
|
367
|
-
firstTouch.clickIds =
|
|
385
|
+
if (currentTouch.hasClickId) {
|
|
386
|
+
firstTouch.clickIds = currentTouch.clickIds;
|
|
368
387
|
}
|
|
369
|
-
firstTouch.landingUrl =
|
|
370
|
-
firstTouch.referrer =
|
|
371
|
-
firstTouch.timestamp =
|
|
388
|
+
firstTouch.landingUrl = currentTouch.url;
|
|
389
|
+
firstTouch.referrer = currentTouch.referrer;
|
|
390
|
+
firstTouch.timestamp = currentTouch.timestamp;
|
|
372
391
|
}
|
|
373
392
|
|
|
374
393
|
return {
|
|
@@ -378,34 +397,72 @@
|
|
|
378
397
|
};
|
|
379
398
|
};
|
|
380
399
|
|
|
381
|
-
|
|
400
|
+
/*
|
|
401
|
+
* The same attribution, flattened into the scalar string map Cal.com
|
|
402
|
+
* accepts as booking metadata.
|
|
403
|
+
*
|
|
404
|
+
* Cal takes booking metadata as FLAT, BRACKETED keys on the embed
|
|
405
|
+
* config — `metadata[utm_source]` — and hands them back on the webhook
|
|
406
|
+
* as payload.metadata.utm_source. NOT as a nested `metadata: {...}`
|
|
407
|
+
* object: Cal serialises each config value into a query parameter, so a
|
|
408
|
+
* nested object becomes the string "[object Object]" and every key
|
|
409
|
+
* inside it is lost. Nothing errors; bookings keep succeeding, they
|
|
410
|
+
* just arrive attributable to nothing — indistinguishable from not
|
|
411
|
+
* having done this at all.
|
|
412
|
+
*
|
|
413
|
+
* https://cal.com/help/embedding/prefill-booking-form-embed
|
|
414
|
+
*
|
|
415
|
+
* Keys are the snake_case wire spelling, which is what the CRM's Cal
|
|
416
|
+
* webhook receiver parses. Returns {} when there is nothing to
|
|
417
|
+
* attribute and no booking kind, so a caller can spread it
|
|
418
|
+
* unconditionally without sending an empty metadata bag.
|
|
419
|
+
*/
|
|
420
|
+
window.oneUptimeCalAttributionMetadata = function (bookingKind) {
|
|
421
|
+
var attribution = window.oneUptimeGetAttribution();
|
|
422
|
+
var config = {};
|
|
382
423
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
* Held, not dropped. A visitor who accepts the banner on this
|
|
389
|
-
* very page — the ordinary path for someone arriving from an
|
|
390
|
-
* ad — keeps the click id that brought them here.
|
|
391
|
-
*/
|
|
392
|
-
pending = touch;
|
|
424
|
+
function put(key, value, maxLength) {
|
|
425
|
+
if (value) {
|
|
426
|
+
config['metadata[' + key + ']'] =
|
|
427
|
+
String(value).slice(0, maxLength || MAX_VALUE_LENGTH);
|
|
428
|
+
}
|
|
393
429
|
}
|
|
394
|
-
}
|
|
395
430
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
if (pending) {
|
|
400
|
-
storeTouch(pending);
|
|
401
|
-
}
|
|
402
|
-
return;
|
|
403
|
-
}
|
|
431
|
+
Object.keys(UTM_KEY_MAP).forEach(function (param) {
|
|
432
|
+
put(param, attribution.utm[UTM_KEY_MAP[param]]);
|
|
433
|
+
});
|
|
404
434
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
435
|
+
put('utm_url', attribution.utm.utmUrl);
|
|
436
|
+
|
|
437
|
+
Object.keys(attribution.clickIds).forEach(function (param) {
|
|
438
|
+
put(param, attribution.clickIds[param]);
|
|
408
439
|
});
|
|
440
|
+
|
|
441
|
+
if (attribution.firstTouch) {
|
|
442
|
+
var serialized = JSON.stringify(attribution.firstTouch);
|
|
443
|
+
if (serialized.length <= MAX_FIRST_TOUCH_LENGTH) {
|
|
444
|
+
put('ou_first_touch', serialized, MAX_FIRST_TOUCH_LENGTH);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/*
|
|
449
|
+
* Unconditional, unlike everything above it. All three embeds book
|
|
450
|
+
* the same Cal event type (oneuptimehq/demo), so without this the
|
|
451
|
+
* receiver cannot tell a support call from an enterprise demo from
|
|
452
|
+
* a self-hosted architecture assessment — they arrive identical.
|
|
453
|
+
*/
|
|
454
|
+
if (bookingKind) {
|
|
455
|
+
config['metadata[ou_booking_kind]'] = String(bookingKind).slice(0, MAX_VALUE_LENGTH);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
return config;
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
var touch = readTouchFromUrl();
|
|
462
|
+
|
|
463
|
+
if (touch) {
|
|
464
|
+
currentTouch = touch;
|
|
465
|
+
storeTouch(touch);
|
|
409
466
|
}
|
|
410
467
|
|
|
411
468
|
/*
|
|
@@ -111,7 +111,8 @@
|
|
|
111
111
|
"sameAs": [
|
|
112
112
|
"https://www.facebook.com/oneuptimeinc",
|
|
113
113
|
"https://twitter.com/OneUptimeInc",
|
|
114
|
-
"https://www.linkedin.com/company/oneuptime"
|
|
114
|
+
"https://www.linkedin.com/company/oneuptime",
|
|
115
|
+
"https://njump.me/npub1kggtaw83q0mctlwvh854xdu3wjmen8tmq9cx9l030x2ylay6wk8qy2f2e6"
|
|
115
116
|
],
|
|
116
117
|
"description": "OneUptime monitors websites, API's, and servers and alerts your team if something goes wrong. It also keeps your customers updated about any downtime."
|
|
117
118
|
}
|