[Security Solution] move detection_engine files out of the detections folder (#221867)

## Summary

This PR is only moving files and update file paths. No code changes are
implemented whatsoever.
The PR focuses on moving a bunch of folders and files that lived under
the `detections` folder but were actually only used within the
`detection_engine` folder.
- if the files/folders were used within a single `detection_engine`
folder (like for example `rule_actions_overflow` is only used within
`rule_details_ui`) then things were moved closest to where it was used)
- if the files/folders were used within multiple `detection_engine`
folders, then things were moved into a `components` folder under the
existing `common` folder at the root of `detection_engine`

**_If there are any folders or files that you feel should live in a
specific folder, let me know. I'm happy to move things around some
more!_**

### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
This commit is contained in:
Philippe Oberti 2025-06-02 14:08:18 -05:00 committed by GitHub
parent dbe3a5d769
commit 9b4f96731b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
55 changed files with 120 additions and 122 deletions

2
.github/CODEOWNERS vendored
View file

@ -2514,8 +2514,6 @@ x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout @elastic/
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_preview @elastic/security-detection-engine
/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/detections/mitre @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/common @elastic/security-detection-rule-management

View file

@ -231,6 +231,11 @@ module.exports = {
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]common[\/\\]components[\/\\]utility_bar[\/\\]utility_bar_action.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]common[\/\\]mock[\/\\]storybook_providers.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]common[\/\\]mock[\/\\]test_providers.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]related_integrations[\/\\]integrations_description[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]related_integrations[\/\\]integrations_description[\/\\]integration_status_badge.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]related_integrations[\/\\]integrations_description[\/\\]integration_version_mismatch_icon.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]related_integrations[\/\\]integrations_popover[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]rule_switch[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation[\/\\]components[\/\\]eql_query_edit[\/\\]eql_overview_link.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation[\/\\]components[\/\\]ml_job_link[\/\\]ml_job_link.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation[\/\\]components[\/\\]step_about_rule_details[\/\\]index.test.tsx/,
@ -256,6 +261,7 @@ module.exports = {
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation_ui[\/\\]pages[\/\\]rule_creation[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_details_ui[\/\\]pages[\/\\]rule_details[\/\\]execution_log_table[\/\\]execution_log_table.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_details_ui[\/\\]pages[\/\\]rule_details[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_details_ui[\/\\]pages[\/\\]rule_details[\/\\]rule_actions_overflow[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_exceptions[\/\\]components[\/\\]add_exception_flyout[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_exceptions[\/\\]components[\/\\]all_exception_items_table[\/\\]all_items.test.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_exceptions[\/\\]components[\/\\]all_exception_items_table[\/\\]all_items.tsx/,
@ -278,6 +284,7 @@ module.exports = {
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management[\/\\]components[\/\\]rule_details[\/\\]badge_list.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management[\/\\]components[\/\\]rule_details[\/\\]rule_about_section.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management[\/\\]components[\/\\]rule_details[\/\\]rule_details_flyout.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]pre_packaged_rules[\/\\]load_empty_prompt.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]rules_table[\/\\]add_prebuilt_rules_table[\/\\]add_prebuilt_rules_table_filters.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]rules_table[\/\\]rules_table_filters[\/\\]rule_search_field.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]rules_table[\/\\]rules_table_filters[\/\\]rules_table_filters.tsx/,
@ -299,13 +306,6 @@ module.exports = {
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]alerts_table[\/\\]additional_filters_action[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]alerts_table[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]osquery[\/\\]osquery_flyout.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]pre_packaged_rules[\/\\]load_empty_prompt.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]related_integrations[\/\\]integrations_description[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]related_integrations[\/\\]integrations_description[\/\\]integration_status_badge.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]related_integrations[\/\\]integrations_description[\/\\]integration_version_mismatch_icon.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]related_integrations[\/\\]integrations_popover[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]rule_actions_overflow[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]rule_switch[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]severity[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]status[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]value_lists_management_flyout[\/\\]reference_error_modal[\/\\]reference_error_modal.tsx/,

View file

@ -9,7 +9,7 @@ import React from 'react';
import styled from 'styled-components';
import type { RelatedIntegrationArray } from '../../../../../../common/api/detection_engine/model/rule_schema';
import type { ListItems } from '../../../../../detection_engine/rule_creation_ui/components/description_step/types';
import type { ListItems } from '../../../../rule_creation_ui/components/description_step/types';
import type { IntegrationDetails } from '../integration_details';
import { useRelatedIntegrations } from '../use_related_integrations';

View file

@ -5,15 +5,15 @@
* 2.0.
*/
import { cleanup, waitFor, renderHook } from '@testing-library/react';
import { cleanup, renderHook, waitFor } from '@testing-library/react';
import { useIntegrations } from './use_integrations';
import { fleetIntegrationsApi } from '../../../../detection_engine/fleet_integrations/api';
import { fleetIntegrationsApi } from '../../../fleet_integrations/api';
import { useToasts } from '../../../../common/lib/kibana';
import { createReactQueryWrapper } from '../../../../common/mock';
jest.mock('../../../../detection_engine/fleet_integrations/api');
jest.mock('../../../fleet_integrations/api');
jest.mock('../../../../common/lib/kibana');
describe('useIntegrations', () => {

View file

@ -8,7 +8,7 @@
import { useQuery } from '@tanstack/react-query';
import type { Integration } from '../../../../../common/api/detection_engine/fleet_integrations';
import { fleetIntegrationsApi } from '../../../../detection_engine/fleet_integrations';
import { fleetIntegrationsApi } from '../../../fleet_integrations';
const ONE_MINUTE = 60000;

View file

@ -5,24 +5,22 @@
* 2.0.
*/
import { mount, type ComponentType as EnzymeComponentType } from 'enzyme';
import { type ComponentType as EnzymeComponentType, mount } from 'enzyme';
import React from 'react';
import { waitFor } from '@testing-library/react';
import { performBulkAction } from '../../../../detection_engine/rule_management/api/api';
import { performBulkAction } from '../../../rule_management/api/api';
import { RuleSwitchComponent } from '.';
import { getRulesSchemaMock } from '../../../../../common/api/detection_engine/model/rule_schema/mocks';
import { useRulesTableContextOptional } from '../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context';
import { useRulesTableContextMock } from '../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/rules_table_context';
import { useRulesTableContextOptional } from '../../../rule_management_ui/components/rules_table/rules_table/rules_table_context';
import { useRulesTableContextMock } from '../../../rule_management_ui/components/rules_table/rules_table/__mocks__/rules_table_context';
import { TestProviders } from '../../../../common/mock';
import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
import { useAppToastsMock } from '../../../../common/hooks/use_app_toasts.mock';
jest.mock('../../../../common/hooks/use_app_toasts');
jest.mock('../../../../detection_engine/rule_management/api/api');
jest.mock(
'../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context'
);
jest.mock('../../../rule_management/api/api');
jest.mock('../../../rule_management_ui/components/rules_table/rules_table/rules_table_context');
jest.mock('../../../../common/lib/apm/use_start_transaction');
const useAppToastsValueMock = useAppToastsMock.create();

View file

@ -12,8 +12,8 @@ import styled from 'styled-components';
import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions';
import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction';
import { useExecuteBulkAction } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action';
import { useRulesTableContextOptional } from '../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context';
import { useExecuteBulkAction } from '../../../rule_management/logic/bulk_actions/use_execute_bulk_action';
import { useRulesTableContextOptional } from '../../../rule_management_ui/components/rules_table/rules_table/rules_table_context';
import { ruleSwitchAriaLabel } from './translations';
const StaticSwitch = styled(EuiSwitch)`

View file

@ -12,17 +12,17 @@ import semver from 'semver';
import { css } from '@emotion/css';
import type { EuiComboBoxOptionOption } from '@elastic/eui';
import {
EuiTextTruncate,
EuiButtonIcon,
EuiComboBox,
EuiFieldText,
EuiFlexGroup,
EuiFlexItem,
EuiFormRow,
EuiTextTruncate,
} from '@elastic/eui';
import type { FieldHook } from '../../../../shared_imports';
import type { Integration, RelatedIntegration } from '../../../../../common/api/detection_engine';
import { useIntegrations } from '../../../../detections/components/rules/related_integrations/use_integrations';
import { useIntegrations } from '../../../common/components/related_integrations/use_integrations';
import { IntegrationStatusBadge } from './integration_status_badge';
import * as i18n from './translations';

View file

@ -6,7 +6,7 @@
*/
import { EuiDescriptionList, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { isEmpty, chunk, get, pick, isNumber } from 'lodash/fp';
import { chunk, get, isEmpty, isNumber, pick } from 'lodash/fp';
import React, { memo, useState } from 'react';
import styled from 'styled-components';
import type { ThreatMapping, Threats, Type } from '@kbn/securitysolution-io-ts-alerting-types';
@ -17,7 +17,7 @@ import type {
RelatedIntegrationArray,
RequiredFieldArray,
} from '../../../../../common/api/detection_engine/model/rule_schema';
import { buildRelatedIntegrationsDescription } from '../../../../detections/components/rules/related_integrations/integrations_description';
import { buildRelatedIntegrationsDescription } from '../../../common/components/related_integrations/integrations_description';
import { DEFAULT_TIMELINE_TITLE } from '../../../../timelines/components/timeline/translations';
import type { EqlOptions } from '../../../../../common/search_strategy';
import { useKibana } from '../../../../common/lib/kibana';
@ -26,26 +26,26 @@ import type { FieldValueTimeline } from '../../../rule_creation/components/pick_
import type { FormSchema } from '../../../../shared_imports';
import type { ListItems } from './types';
import {
buildAlertSuppressionDescription,
buildAlertSuppressionMissingFieldsDescription,
buildAlertSuppressionWindowDescription,
buildEqlOptionsDescription,
buildHighlightedFieldsOverrideDescription,
buildIntervalDescription,
buildNoteDescription,
buildQueryBarDescription,
buildRequiredFieldsDescription,
buildRiskScoreDescription,
buildRuleTypeDescription,
buildSetupDescription,
buildSeverityDescription,
buildStringArrayDescription,
buildThreatDescription,
buildThreatMappingDescription,
buildThresholdDescription,
buildUnorderedListArrayDescription,
buildUrlsDescription,
buildNoteDescription,
buildRiskScoreDescription,
buildRuleTypeDescription,
buildThresholdDescription,
buildThreatMappingDescription,
buildEqlOptionsDescription,
buildRequiredFieldsDescription,
buildAlertSuppressionDescription,
buildAlertSuppressionWindowDescription,
buildAlertSuppressionMissingFieldsDescription,
buildHighlightedFieldsOverrideDescription,
buildSetupDescription,
getQueryLabel,
buildIntervalDescription,
} from './helpers';
import * as i18n from './translations';
import { buildMlJobsDescription } from './build_ml_jobs_description';
@ -55,10 +55,10 @@ import { filterEmptyThreats } from '../../pages/rule_creation/helpers';
import { useLicense } from '../../../../common/hooks/use_license';
import type { LicenseService } from '../../../../../common/license';
import {
isThresholdRule,
isSuppressionRuleConfiguredWithMissingFields,
isSuppressionRuleConfiguredWithGroupBy,
isSuppressionRuleConfiguredWithDuration,
isSuppressionRuleConfiguredWithGroupBy,
isSuppressionRuleConfiguredWithMissingFields,
isThresholdRule,
} from '../../../../../common/detection_engine/utils';
import {
ALERT_SUPPRESSION_DURATION_FIELD_NAME,
@ -80,6 +80,7 @@ import type { FieldValueQueryBar } from '../query_bar_field';
const DescriptionListContainer = styled(EuiDescriptionList)`
max-width: 600px;
.euiDescriptionList__description {
overflow-wrap: anywhere;
}

View file

@ -78,7 +78,7 @@ import {
buildShowBuildingBlockFilter,
buildThreatMatchFilter,
} from '../../../../detections/components/alerts_table/default_config';
import { RuleSwitch } from '../../../../detections/components/rules/rule_switch';
import { RuleSwitch } from '../../../common/components/rule_switch';
import { StepPanel } from '../../../rule_creation/components/step_panel';
import {
getMachineLearningJobId,
@ -89,7 +89,7 @@ import { CreatedBy, UpdatedBy } from '../../../../detections/components/rules/ru
import { useGlobalTime } from '../../../../common/containers/use_global_time';
import { inputsSelectors } from '../../../../common/store/inputs';
import { setAbsoluteRangeDatePicker } from '../../../../common/store/inputs/actions';
import { RuleActionsOverflow } from '../../../../detections/components/rules/rule_actions_overflow';
import { RuleActionsOverflow } from './rule_actions_overflow';
import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities';
import { hasMlAdminPermissions } from '../../../../../common/machine_learning/has_ml_admin_permissions';
import { hasMlLicense } from '../../../../../common/machine_learning/has_ml_license';
@ -117,7 +117,7 @@ import {
RuleStatus,
RuleStatusFailedCallOut,
ruleStatusI18n,
} from '../../../../detections/components/rules/rule_execution_status';
} from '../../../common/components/rule_execution_status';
import { ExecutionEventsTable } from '../../../rule_monitoring';
import { ExecutionLogTable } from './execution_log_table/execution_log_table';
import { RuleBackfillsInfo } from '../../../rule_gaps/components/rule_backfills_info';

View file

@ -8,24 +8,22 @@
import { fireEvent, render, waitFor } from '@testing-library/react';
import React from 'react';
import { RuleActionsOverflow } from '.';
import { ManualRuleRunEventTypes } from '../../../../common/lib/telemetry';
import { TestProviders } from '../../../../common/mock';
import { useBulkExport } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_bulk_export';
import { useExecuteBulkAction } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action';
import { mockRule } from '../../../../detection_engine/rule_management_ui/components/rules_table/__mocks__/mock';
import { ManualRuleRunEventTypes } from '../../../../../common/lib/telemetry';
import { TestProviders } from '../../../../../common/mock';
import { useBulkExport } from '../../../../rule_management/logic/bulk_actions/use_bulk_export';
import { useExecuteBulkAction } from '../../../../rule_management/logic/bulk_actions/use_execute_bulk_action';
import { mockRule } from '../../../../rule_management_ui/components/rules_table/__mocks__/mock';
const showBulkDuplicateExceptionsConfirmation = () => Promise.resolve(null);
const showManualRuleRunConfirmation = () => Promise.resolve(null);
jest.mock('../../../../common/hooks/use_experimental_features');
jest.mock(
'../../../../detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action'
);
jest.mock('../../../../detection_engine/rule_management/logic/bulk_actions/use_bulk_export');
jest.mock('../../../../../common/hooks/use_experimental_features');
jest.mock('../../../../rule_management/logic/bulk_actions/use_execute_bulk_action');
jest.mock('../../../../rule_management/logic/bulk_actions/use_bulk_export');
const mockReportEvent = jest.fn();
jest.mock('../../../../common/lib/kibana', () => {
const actual = jest.requireActual('../../../../common/lib/kibana');
jest.mock('../../../../../common/lib/kibana', () => {
const actual = jest.requireActual('../../../../../common/lib/kibana');
return {
...actual,
useKibana: jest.fn().mockImplementation(() => {

View file

@ -14,27 +14,27 @@ import {
} from '@elastic/eui';
import React, { useCallback, useMemo } from 'react';
import styled from 'styled-components';
import { useScheduleRuleRun } from '../../../../detection_engine/rule_gaps/logic/use_schedule_rule_run';
import type { TimeRange } from '../../../../detection_engine/rule_gaps/types';
import { APP_UI_ID, SecurityPageName } from '../../../../../common/constants';
import { DuplicateOptions } from '../../../../../common/detection_engine/rule_management/constants';
import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
import { getRulesUrl } from '../../../../common/components/link_to/redirect_to_detection_engine';
import { useBoolState } from '../../../../common/hooks/use_bool_state';
import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions';
import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction';
import { useKibana } from '../../../../common/lib/kibana';
import { canEditRuleWithActions } from '../../../../common/utils/privileges';
import type { Rule } from '../../../../detection_engine/rule_management/logic';
import { useBulkExport } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_bulk_export';
import { useScheduleRuleRun } from '../../../../rule_gaps/logic/use_schedule_rule_run';
import type { TimeRange } from '../../../../rule_gaps/types';
import { APP_UI_ID, SecurityPageName } from '../../../../../../common';
import { DuplicateOptions } from '../../../../../../common/detection_engine/rule_management/constants';
import { BulkActionTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
import { getRulesUrl } from '../../../../../common/components/link_to/redirect_to_detection_engine';
import { useBoolState } from '../../../../../common/hooks/use_bool_state';
import { SINGLE_RULE_ACTIONS } from '../../../../../common/lib/apm/user_actions';
import { useStartTransaction } from '../../../../../common/lib/apm/use_start_transaction';
import { useKibana } from '../../../../../common/lib/kibana';
import { canEditRuleWithActions } from '../../../../../common/utils/privileges';
import type { Rule } from '../../../../rule_management/logic';
import { useBulkExport } from '../../../../rule_management/logic/bulk_actions/use_bulk_export';
import {
goToRuleEditPage,
useExecuteBulkAction,
} from '../../../../detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action';
import { useDownloadExportedRules } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules';
import * as i18nActions from '../../../../detection_engine/common/translations';
} from '../../../../rule_management/logic/bulk_actions/use_execute_bulk_action';
import { useDownloadExportedRules } from '../../../../rule_management/logic/bulk_actions/use_download_exported_rules';
import * as i18nActions from '../../../../common/translations';
import * as i18n from './translations';
import { ManualRuleRunEventTypes } from '../../../../common/lib/telemetry';
import { ManualRuleRunEventTypes } from '../../../../../common/lib/telemetry';
const MyEuiButtonIcon = styled(EuiButtonIcon)`
&.euiButtonIcon {

View file

@ -7,20 +7,20 @@
import React, { useMemo } from 'react';
import { isEmpty } from 'lodash/fp';
import {
EuiDescriptionList,
EuiText,
EuiFlexGrid,
EuiFlexItem,
EuiFlexGroup,
EuiLoadingSpinner,
EuiButtonIcon,
EuiPopover,
} from '@elastic/eui';
import type { EuiDescriptionListProps } from '@elastic/eui';
import {
EuiButtonIcon,
EuiDescriptionList,
EuiFlexGrid,
EuiFlexGroup,
EuiFlexItem,
EuiLoadingSpinner,
EuiPopover,
EuiText,
} from '@elastic/eui';
import type {
Type,
ThreatMapping as ThreatMappingType,
Type,
} from '@kbn/securitysolution-io-ts-alerting-types';
import type { Filter } from '@kbn/es-query';
import type { SavedQuery } from '@kbn/data-plugin/public';
@ -38,7 +38,7 @@ import type {
import { AlertSuppressionMissingFieldsStrategyEnum } from '../../../../../common/api/detection_engine/model/rule_schema';
import { assertUnreachable } from '../../../../../common/utility_types';
import * as descriptionStepI18n from '../../../rule_creation_ui/components/description_step/translations';
import { RelatedIntegrationsDescription } from '../../../../detections/components/rules/related_integrations/integrations_description';
import { RelatedIntegrationsDescription } from '../../../common/components/related_integrations/integrations_description';
import { AlertSuppressionLabel } from '../../../rule_creation_ui/components/description_step/alert_suppression_label';
import { useGetSavedQuery } from '../../../common/use_get_saved_query';
import * as threatMatchI18n from '../../../../common/components/threat_match/translations';

View file

@ -8,7 +8,7 @@
import React from 'react';
import { EuiDescriptionList } from '@elastic/eui';
import * as ruleDetailsI18n from '../../../../translations';
import { RelatedIntegrationsDescription } from '../../../../../../../../detections/components/rules/related_integrations/integrations_description';
import { RelatedIntegrationsDescription } from '../../../../../../../common/components/related_integrations/integrations_description';
import type { RelatedIntegrationArray } from '../../../../../../../../../common/api/detection_engine';
import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder';

View file

@ -7,12 +7,12 @@
import React from 'react';
import {
EuiButtonIcon,
EuiPopover,
EuiText,
EuiPopoverFooter,
EuiPopoverTitle,
EuiSpacer,
EuiPopoverFooter,
EuiButtonIcon,
EuiText,
} from '@elastic/eui';
import { RuleExecutionStatusEnum } from '../../../../../common/api/detection_engine/rule_monitoring';
@ -24,7 +24,7 @@ import { getRuleDetailsTabUrl } from '../../../../common/components/link_to/redi
import { SecurityPageName } from '../../../../../common/constants';
import { SecuritySolutionLinkButton } from '../../../../common/components/links';
import { isMlRule } from '../../../../../common/detection_engine/utils';
import { getCapitalizedStatusText } from '../../../../detections/components/rules/rule_execution_status/utils';
import { getCapitalizedStatusText } from '../../../common/components/rule_execution_status/utils';
import type { Rule } from '../../../rule_management/logic';
import { isJobStarted } from '../../../../../common/machine_learning/helpers';
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';

View file

@ -8,11 +8,11 @@
import { EuiBadge, EuiButton, EuiButtonEmpty } from '@elastic/eui';
import React from 'react';
import { css } from '@emotion/react';
import { INSTALL_PREBUILT_RULES_ANCHOR } from '../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour';
import { INSTALL_PREBUILT_RULES_ANCHOR } from '../rules_table/rules_table/guided_onboarding/rules_management_tour';
import * as i18n from './translations';
import { useGetSecuritySolutionLinkProps } from '../../../../common/components/links';
import { SecurityPageName } from '../../../../../common';
import { usePrebuiltRulesStatus } from '../../../../detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_status';
import { usePrebuiltRulesStatus } from '../../../rule_management/logic/prebuilt_rules/use_prebuilt_rules_status';
interface AddElasticRulesButtonProps {
'data-test-subj'?: string;

View file

@ -8,7 +8,7 @@
import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import React, { memo } from 'react';
import styled from 'styled-components';
import { useUserData } from '../../user_info';
import { useUserData } from '../../../../detections/components/user_info';
import { AddElasticRulesButton } from './add_elastic_rules_button';
import * as i18n from './translations';

View file

@ -6,13 +6,13 @@
*/
import type { EuiBasicTableColumn } from '@elastic/eui';
import { EuiBadge, EuiText, EuiLink } from '@elastic/eui';
import { EuiBadge, EuiLink, EuiText } from '@elastic/eui';
import React, { useMemo } from 'react';
import { RulesTableEmptyColumnName } from '../rules_table_empty_column_name';
import { SHOW_RELATED_INTEGRATIONS_SETTING } from '../../../../../../common/constants';
import { PopoverItems } from '../../../../../common/components/popover_items';
import { useUiSetting$ } from '../../../../../common/lib/kibana';
import { IntegrationsPopover } from '../../../../../detections/components/rules/related_integrations/integrations_popover';
import { IntegrationsPopover } from '../../../../common/components/related_integrations/integrations_popover';
import { SeverityBadge } from '../../../../../common/components/severity_badge';
import * as i18n from '../../../../common/translations';
import type { Rule } from '../../../../rule_management/logic';
@ -21,8 +21,8 @@ import { hasUserCRUDPermission } from '../../../../../common/utils/privileges';
import type { AddPrebuiltRulesTableActions } from './add_prebuilt_rules_table_context';
import { useAddPrebuiltRulesTableContext } from './add_prebuilt_rules_table_context';
import type {
RuleSignatureId,
RuleResponse,
RuleSignatureId,
} from '../../../../../../common/api/detection_engine/model/rule_schema';
import { getNormalizedSeverity } from '../helpers';
import { PrebuiltRulesInstallButton } from './add_prebuilt_rules_install_button';

View file

@ -7,12 +7,12 @@
import React from 'react';
import {
EuiButtonIcon,
EuiPopover,
EuiText,
EuiPopoverFooter,
EuiPopoverTitle,
EuiSpacer,
EuiPopoverFooter,
EuiButtonIcon,
EuiText,
} from '@elastic/eui';
import { RuleExecutionStatusEnum } from '../../../../../common/api/detection_engine/rule_monitoring';
@ -24,7 +24,7 @@ import { getRuleDetailsTabUrl } from '../../../../common/components/link_to/redi
import { SecurityPageName } from '../../../../../common/constants';
import { SecuritySolutionLinkButton } from '../../../../common/components/links';
import { isMlRule } from '../../../../../common/detection_engine/utils';
import { getCapitalizedStatusText } from '../../../../detections/components/rules/rule_execution_status/utils';
import { getCapitalizedStatusText } from '../../../common/components/rule_execution_status/utils';
import type { Rule } from '../../../rule_management/logic';
import { isJobStarted } from '../../../../../common/machine_learning/helpers';
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';

View file

@ -12,8 +12,8 @@ import { EuiFilterButton, EuiPopover, EuiSelectable } from '@elastic/eui';
import * as i18n from '../../../../common/translations';
import type { RuleExecutionStatus } from '../../../../../../common/api/detection_engine';
import { RuleExecutionStatusEnum } from '../../../../../../common/api/detection_engine';
import { getCapitalizedStatusText } from '../../../../../detections/components/rules/rule_execution_status/utils';
import { RuleStatusBadge } from '../../../../../detections/components/rules/rule_execution_status/rule_status_badge';
import { getCapitalizedStatusText } from '../../../../common/components/rule_execution_status/utils';
import { RuleStatusBadge } from '../../../../common/components/rule_execution_status';
interface OptionData {
status: RuleExecutionStatus;

View file

@ -16,7 +16,7 @@ import { FormattedMessage } from '@kbn/i18n-react';
import React, { useCallback, useMemo, useRef } from 'react';
import { Loader } from '../../../../common/components/loader';
import { useBoolState } from '../../../../common/hooks/use_bool_state';
import { PrePackagedRulesPrompt } from '../../../../detections/components/rules/pre_packaged_rules/load_empty_prompt';
import { PrePackagedRulesPrompt } from '../pre_packaged_rules/load_empty_prompt';
import type { Rule } from '../../../rule_management/logic';
import * as i18n from '../../../common/translations';
import type { EuiBasicTableOnChange } from '../../../common/types';

View file

@ -23,7 +23,7 @@ import type { RuleSignatureId } from '../../../../../../common/api/detection_eng
import { PopoverItems } from '../../../../../common/components/popover_items';
import { useUiSetting$ } from '../../../../../common/lib/kibana';
import { hasUserCRUDPermission } from '../../../../../common/utils/privileges';
import { IntegrationsPopover } from '../../../../../detections/components/rules/related_integrations/integrations_popover';
import { IntegrationsPopover } from '../../../../common/components/related_integrations/integrations_popover';
import { SeverityBadge } from '../../../../../common/components/severity_badge';
import { useUserData } from '../../../../../detections/components/user_info';
import * as i18n from '../../../../common/translations';

View file

@ -30,9 +30,9 @@ import {
canEditRuleWithActions,
explainLackOfPermission,
} from '../../../../common/utils/privileges';
import { IntegrationsPopover } from '../../../../detections/components/rules/related_integrations/integrations_popover';
import { RuleStatusBadge } from '../../../../detections/components/rules/rule_execution_status';
import { RuleSwitch } from '../../../../detections/components/rules/rule_switch';
import { IntegrationsPopover } from '../../../common/components/related_integrations/integrations_popover';
import { RuleStatusBadge } from '../../../common/components/rule_execution_status';
import { RuleSwitch } from '../../../common/components/rule_switch';
import { SeverityBadge } from '../../../../common/components/severity_badge';
import * as i18n from '../../../common/translations';
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';

View file

@ -6,7 +6,7 @@
*/
import React from 'react';
import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiToolTip, EuiSpacer } from '@elastic/eui';
import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiToolTip } from '@elastic/eui';
import { MaintenanceWindowCallout } from '@kbn/alerts-ui-shared';
import { DEFAULT_APP_CATEGORIES } from '@kbn/core-application-common';
import { APP_UI_ID } from '../../../../../common/constants';
@ -19,9 +19,9 @@ import { useKibana } from '../../../../common/lib/kibana';
import { hasUserCRUDPermission } from '../../../../common/utils/privileges';
import { SpyRoute } from '../../../../common/utils/route/spy_routes';
import { MissingPrivilegesCallOut } from '../../../../detections/components/callouts/missing_privileges_callout';
import { MlJobCompatibilityCallout } from '../../../../detections/components/callouts/ml_job_compatibility_callout';
import { MlJobCompatibilityCallout } from '../../components/ml_job_compatibility_callout';
import { NeedAdminForUpdateRulesCallOut } from '../../../../detections/components/callouts/need_admin_for_update_callout';
import { AddElasticRulesButton } from '../../../../detections/components/rules/pre_packaged_rules/add_elastic_rules_button';
import { AddElasticRulesButton } from '../../components/pre_packaged_rules/add_elastic_rules_button';
import { ValueListsFlyout } from '../../../../detections/components/value_lists_management_flyout';
import { useUserData } from '../../../../detections/components/user_info';
import { useListsConfig } from '../../../../detections/containers/detection_engine/lists/use_lists_config';
@ -31,7 +31,7 @@ import { AllRules } from '../../components/rules_table';
import { RulesTableContextProvider } from '../../components/rules_table/rules_table/rules_table_context';
import { HeaderPage } from '../../../../common/components/header_page';
import { RuleUpdateCallouts } from '../../components/rule_update_callouts/rule_update_callouts';
import { BlogPostPrebuiltRuleCustomizationCallout } from '../../../../detections/components/callouts/blog_post_prebuilt_rule_customization_callout';
import { BlogPostPrebuiltRuleCustomizationCallout } from '../../components/blog_post_prebuilt_rule_customization_callout';
import { RuleImportModal } from '../../components/rule_import_modal/rule_import_modal';
const RulesPageComponent: React.FC = () => {

View file

@ -10,11 +10,11 @@ import { EuiHealth } from '@elastic/eui';
import type { RuleExecutionStatus } from '../../../../../../../common/api/detection_engine/rule_monitoring';
import { getEmptyTagValue } from '../../../../../../common/components/empty_value';
import { RuleStatusBadge } from '../../../../../../detections/components/rules/rule_execution_status';
import { RuleStatusBadge } from '../../../../../common/components/rule_execution_status';
import {
getCapitalizedStatusText,
getStatusColor,
} from '../../../../../../detections/components/rules/rule_execution_status/utils';
} from '../../../../../common/components/rule_execution_status/utils';
const EMPTY_STATUS_TEXT = getEmptyTagValue();

View file

@ -26,9 +26,12 @@ const mockUseIntegrations = jest.fn().mockReturnValue({
data: [],
});
jest.mock('../../../../detections/components/rules/related_integrations/use_integrations', () => ({
useIntegrations: () => mockUseIntegrations(),
}));
jest.mock(
'../../../../detection_engine/common/components/related_integrations/use_integrations',
() => ({
useIntegrations: () => mockUseIntegrations(),
})
);
jest.mock('../../../../common/hooks/use_space_id', () => ({
useSpaceId: () => 'test-space-id',

View file

@ -9,7 +9,7 @@ import { useEffect, useMemo } from 'react';
import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features';
import type { ManagedUserHits } from '../../../../../common/search_strategy/security_solution/users/managed_details';
import { useIntegrations } from '../../../../detections/components/rules/related_integrations/use_integrations';
import { useIntegrations } from '../../../../detection_engine/common/components/related_integrations/use_integrations';
import { UsersQueries } from '../../../../../common/api/search_strategy';
import { useSpaceId } from '../../../../common/hooks/use_space_id';
import { useSearchStrategy } from '../../../../common/containers/use_search_strategy';
@ -17,10 +17,10 @@ import { useGlobalTime } from '../../../../common/containers/use_global_time';
import { useQueryInspector } from '../../../../common/components/page/manage_query';
import {
ENTRA_ID_PACKAGE_NAME,
OKTA_PACKAGE_NAME,
getEntraUserIndex,
getOktaUserIndex,
MANAGED_USER_QUERY_ID,
OKTA_PACKAGE_NAME,
} from '../constants';
import * as i18n from '../translations';

View file

@ -9,7 +9,7 @@ import React from 'react';
import { EuiHorizontalRule, EuiLoadingSpinner, EuiText } from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
import type { RelatedIntegration } from '../../../../../common/api/detection_engine';
import { IntegrationsPopover } from '../../../../detections/components/rules/related_integrations/integrations_popover';
import { IntegrationsPopover } from '../../../../detection_engine/common/components/related_integrations/integrations_popover';
import type { RuleMigrationRule } from '../../../../../common/siem_migrations/model/rule_migration.gen';
import * as i18n from './translations';
import type { TableColumn } from './constants';