From 833e13faff59b99f24cd793b932081d6cfc9d879 Mon Sep 17 00:00:00 2001 From: Candace Park <56409205+parkiino@users.noreply.github.com> Date: Thu, 13 May 2021 09:37:56 -0400 Subject: [PATCH 01/27] [Security Solution][Endpoint][Host Isolation] Send case ids from UI to isolate api (#99484) --- x-pack/plugins/cases/common/api/helpers.ts | 5 ++ .../components/host_isolation/index.tsx | 58 ++++++++++++++----- .../components/host_isolation/translations.ts | 14 +++-- .../detection_engine/alerts/__mocks__/api.ts | 17 +++++- .../detection_engine/alerts/api.test.ts | 31 ++++++++++ .../containers/detection_engine/alerts/api.ts | 20 +++++++ .../detection_engine/alerts/mock.ts | 12 +++- .../detection_engine/alerts/translations.ts | 5 ++ .../detection_engine/alerts/types.ts | 2 + .../alerts/use_cases_from_alerts.test.tsx | 41 +++++++++++++ .../alerts/use_cases_from_alerts.tsx | 51 ++++++++++++++++ .../alerts/use_host_isolation.tsx | 6 +- 12 files changed, 235 insertions(+), 27 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx create mode 100644 x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx diff --git a/x-pack/plugins/cases/common/api/helpers.ts b/x-pack/plugins/cases/common/api/helpers.ts index 43e292b91db4b..7ac686ce5c8dd 100644 --- a/x-pack/plugins/cases/common/api/helpers.ts +++ b/x-pack/plugins/cases/common/api/helpers.ts @@ -14,6 +14,7 @@ import { SUB_CASES_URL, CASE_PUSH_URL, SUB_CASE_USER_ACTIONS_URL, + CASE_ALERTS_URL, } from '../constants'; export const getCaseDetailsUrl = (id: string): string => { @@ -47,3 +48,7 @@ export const getSubCaseUserActionUrl = (caseID: string, subCaseId: string): stri export const getCasePushUrl = (caseId: string, connectorId: string): string => { return CASE_PUSH_URL.replace('{case_id}', caseId).replace('{connector_id}', connectorId); }; + +export const getCasesFromAlertsUrl = (alertId: string): string => { + return CASE_ALERTS_URL.replace('{alert_id}', alertId); +}; diff --git a/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx b/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx index 30ee7e77f3a7d..3897458e8459c 100644 --- a/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx @@ -21,7 +21,6 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { useHostIsolation } from '../../containers/detection_engine/alerts/use_host_isolation'; -import { TimelineEventsDetailsItem } from '../../../../common/search_strategy/timeline'; import { CANCEL, CASES_ASSOCIATED_WITH_ALERT, @@ -31,6 +30,9 @@ import { RETURN_TO_ALERT_DETAILS, } from './translations'; import { Maybe } from '../../../../../observability/common/typings'; +import { useCasesFromAlerts } from '../../containers/detection_engine/alerts/use_cases_from_alerts'; +import { CaseDetailsLink } from '../../../common/components/links'; +import { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; export const HostIsolationPanel = React.memo( ({ @@ -59,7 +61,13 @@ export const HostIsolationPanel = React.memo( return findAlertRule ? findAlertRule[0] : ''; }, [details]); - const { loading, isolateHost } = useHostIsolation({ agentId, comment }); + const alertId = useMemo(() => { + const findAlertId = find({ category: '_id', field: '_id' }, details)?.values; + return findAlertId ? findAlertId[0] : ''; + }, [details]); + + const { caseIds } = useCasesFromAlerts({ alertId }); + const { loading, isolateHost } = useHostIsolation({ agentId, comment, caseIds }); const confirmHostIsolation = useCallback(async () => { const hostIsolated = await isolateHost(); @@ -68,8 +76,25 @@ export const HostIsolationPanel = React.memo( const backToAlertDetails = useCallback(() => cancelCallback(), [cancelCallback]); - // a placeholder until we get the case count returned from a new case route in a future pr - const caseCount: number = 0; + const casesList = useMemo( + () => + caseIds.map((id, index) => { + return ( +
  • + + + +
  • + ); + }), + [caseIds] + ); + + const caseCount: number = useMemo(() => caseIds.length, [caseIds]); const hostIsolated = useMemo(() => { return ( @@ -92,20 +117,13 @@ export const HostIsolationPanel = React.memo(

    - + )} @@ -121,7 +139,7 @@ export const HostIsolationPanel = React.memo( ); - }, [backToAlertDetails, hostName]); + }, [backToAlertDetails, hostName, caseCount, casesList]); const hostNotIsolated = useMemo(() => { return ( @@ -137,7 +155,7 @@ export const HostIsolationPanel = React.memo( cases: ( {caseCount} - {CASES_ASSOCIATED_WITH_ALERT} + {CASES_ASSOCIATED_WITH_ALERT(caseCount)} {alertRule} ), @@ -171,7 +189,15 @@ export const HostIsolationPanel = React.memo( ); - }, [alertRule, backToAlertDetails, comment, confirmHostIsolation, hostName, loading]); + }, [ + alertRule, + backToAlertDetails, + comment, + confirmHostIsolation, + hostName, + loading, + caseCount, + ]); return isIsolated ? hostIsolated : hostNotIsolated; } diff --git a/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts b/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts index 97a1a278952a6..8d6334f6c340d 100644 --- a/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts +++ b/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts @@ -31,12 +31,14 @@ export const CONFIRM = i18n.translate('xpack.securitySolution.endpoint.hostIsola defaultMessage: 'Confirm', }); -export const CASES_ASSOCIATED_WITH_ALERT = i18n.translate( - 'xpack.securitySolution.endpoint.hostIsolation.isolateHost.casesAssociatedWihtAlert', - { - defaultMessage: ' cases associated with the rule ', - } -); +export const CASES_ASSOCIATED_WITH_ALERT = (caseCount: number): string => + i18n.translate( + 'xpack.securitySolution.endpoint.hostIsolation.isolateHost.casesAssociatedWithAlert', + { + defaultMessage: ' {caseCount, plural, one {case} other {cases}} associated with the rule ', + values: { caseCount }, + } + ); export const RETURN_TO_ALERT_DETAILS = i18n.translate( 'xpack.securitySolution.endpoint.hostIsolation.returnToAlertDetails', diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts index e1f5b53e2f4c3..ea64f39226cd2 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts @@ -5,8 +5,15 @@ * 2.0. */ -import { QueryAlerts, AlertSearchResponse, BasicSignals, AlertsIndex, Privilege } from '../types'; -import { alertsMock, mockSignalIndex, mockUserPrivilege } from '../mock'; +import { + QueryAlerts, + AlertSearchResponse, + BasicSignals, + AlertsIndex, + Privilege, + CasesFromAlertsResponse, +} from '../types'; +import { alertsMock, mockSignalIndex, mockUserPrivilege, mockCaseIdsFromAlertId } from '../mock'; export const fetchQueryAlerts = async ({ query, @@ -22,3 +29,9 @@ export const getUserPrivilege = async ({ signal }: BasicSignals): Promise => Promise.resolve(mockSignalIndex); + +export const getCaseIdsFromAlertId = async ({ + alertId, +}: { + alertId: string; +}): Promise => Promise.resolve(mockCaseIdsFromAlertId); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts index 82f275f7dc9ba..9aa5cfd229292 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts @@ -12,6 +12,7 @@ import { mockStatusAlertQuery, mockSignalIndex, mockUserPrivilege, + mockHostIsolation, } from './mock'; import { fetchQueryAlerts, @@ -19,6 +20,7 @@ import { getSignalIndex, getUserPrivilege, createSignalIndex, + createHostIsolation, } from './api'; const abortCtrl = new AbortController(); @@ -163,4 +165,33 @@ describe('Detections Alerts API', () => { expect(alertsResp).toEqual(mockSignalIndex); }); }); + + describe('createHostIsolation', () => { + beforeEach(() => { + fetchMock.mockClear(); + fetchMock.mockResolvedValue(mockHostIsolation); + }); + + test('check parameter url', async () => { + await createHostIsolation({ + agentId: 'fd8a122b-4c54-4c05-b295-e5f8381fc59d', + comment: 'commento', + caseIds: ['88c04a90-b19c-11eb-b838-bf3c7840b969'], + }); + expect(fetchMock).toHaveBeenCalledWith('/api/endpoint/isolate', { + method: 'POST', + body: + '{"agent_ids":["fd8a122b-4c54-4c05-b295-e5f8381fc59d"],"comment":"commento","case_ids":["88c04a90-b19c-11eb-b838-bf3c7840b969"]}', + }); + }); + + test('happy path', async () => { + const hostIsolationResponse = await createHostIsolation({ + agentId: 'fd8a122b-4c54-4c05-b295-e5f8381fc59d', + comment: 'commento', + caseIds: ['88c04a90-b19c-11eb-b838-bf3c7840b969'], + }); + expect(hostIsolationResponse).toEqual(mockHostIsolation); + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts index dbcb11383432f..300005b23caaa 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts @@ -6,6 +6,7 @@ */ import { UpdateDocumentByQueryResponse } from 'elasticsearch'; +import { getCasesFromAlertsUrl } from '../../../../../../cases/common'; import { HostIsolationResponse } from '../../../../../common/endpoint/types'; import { DETECTION_ENGINE_QUERY_SIGNALS_URL, @@ -22,6 +23,7 @@ import { AlertSearchResponse, AlertsIndex, UpdateAlertStatusProps, + CasesFromAlertsResponse, } from './types'; /** @@ -109,20 +111,38 @@ export const createSignalIndex = async ({ signal }: BasicSignals): Promise => KibanaServices.get().http.fetch(ISOLATE_HOST_ROUTE, { method: 'POST', body: JSON.stringify({ agent_ids: [agentId], comment, + case_ids: caseIds, }), }); + +/** + * Get list of associated case ids from alert id + * + * @param alert id + */ +export const getCaseIdsFromAlertId = async ({ + alertId, +}: { + alertId: string; +}): Promise => + KibanaServices.get().http.fetch(getCasesFromAlertsUrl(alertId), { + method: 'get', + }); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts index 18651063df8ca..69358958a395c 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { AlertSearchResponse, AlertsIndex, Privilege } from './types'; +import { HostIsolationResponse } from '../../../../../common/endpoint/types/actions'; +import { AlertSearchResponse, AlertsIndex, Privilege, CasesFromAlertsResponse } from './types'; export const alertsMock: AlertSearchResponse = { took: 7, @@ -1039,3 +1040,12 @@ export const mockUserPrivilege: Privilege = { is_authenticated: true, has_encryption_key: true, }; + +export const mockHostIsolation: HostIsolationResponse = { + action: '713085d6-ab45-4e9e-b41d-96563cafdd97', +}; + +export const mockCaseIdsFromAlertId: CasesFromAlertsResponse = [ + '818601a0-b26b-11eb-8759-6b318e8cf4bc', + '8a774850-b26b-11eb-8759-6b318e8cf4bc', +]; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts index 2998c97376c26..ed6a22375a776 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts @@ -32,3 +32,8 @@ export const HOST_ISOLATION_FAILURE = i18n.translate( 'xpack.securitySolution.endpoint.hostIsolation.failedToIsolate.title', { defaultMessage: 'Failed to isolate host' } ); + +export const CASES_FROM_ALERTS_FAILURE = i18n.translate( + 'xpack.securitySolution.endpoint.hostIsolation.casesFromAlerts.title', + { defaultMessage: 'Failed to find associated cases' } +); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts index 26108ca939a57..52b477d95076b 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts @@ -48,6 +48,8 @@ export interface AlertsIndex { index_mapping_outdated: boolean; } +export type CasesFromAlertsResponse = string[]; + export interface Privilege { username: string; has_all_requested: boolean; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx new file mode 100644 index 0000000000000..0867fb001051a --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { useCasesFromAlerts } from './use_cases_from_alerts'; +import * as api from './api'; +import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; +import { useAppToastsMock } from '../../../../common/hooks/use_app_toasts.mock'; +import { mockCaseIdsFromAlertId } from './mock'; + +jest.mock('./api'); +jest.mock('../../../../common/hooks/use_app_toasts'); + +describe('useCasesFromAlerts hook', () => { + let appToastsMock: jest.Mocked>; + beforeEach(() => { + jest.resetAllMocks(); + appToastsMock = useAppToastsMock.create(); + (useAppToasts as jest.Mock).mockReturnValue(appToastsMock); + }); + afterEach(() => { + jest.restoreAllMocks(); + }); + + it('returns an array of caseIds', async () => { + const spyOnCases = jest.spyOn(api, 'getCaseIdsFromAlertId'); + const { result, waitForNextUpdate } = renderHook(() => + useCasesFromAlerts({ alertId: 'anAlertId' }) + ); + await waitForNextUpdate(); + expect(spyOnCases).toHaveBeenCalledTimes(1); + expect(result.current).toEqual({ + loading: false, + caseIds: mockCaseIdsFromAlertId, + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx new file mode 100644 index 0000000000000..fb130eb744700 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isEmpty } from 'lodash'; +import { useEffect, useState } from 'react'; +import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; +import { getCaseIdsFromAlertId } from './api'; +import { CASES_FROM_ALERTS_FAILURE } from './translations'; +import { CasesFromAlertsResponse } from './types'; + +interface CasesFromAlertsStatus { + loading: boolean; + caseIds: CasesFromAlertsResponse; +} + +export const useCasesFromAlerts = ({ alertId }: { alertId: string }): CasesFromAlertsStatus => { + const [loading, setLoading] = useState(false); + const [cases, setCases] = useState([]); + const { addError } = useAppToasts(); + + useEffect(() => { + // isMounted tracks if a component is mounted before changing state + let isMounted = true; + setLoading(true); + const fetchData = async () => { + try { + const casesResponse = await getCaseIdsFromAlertId({ alertId }); + if (isMounted) { + setCases(casesResponse); + } + } catch (error) { + addError(error.message, { title: CASES_FROM_ALERTS_FAILURE }); + } + if (isMounted) { + setLoading(false); + } + }; + if (!isEmpty(alertId)) { + fetchData(); + } + return () => { + // updates to show component is unmounted + isMounted = false; + }; + }, [alertId, addError]); + return { loading, caseIds: cases }; +}; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation.tsx index 684bc6af5d2c7..ad3c6e91c03fe 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation.tsx @@ -18,11 +18,13 @@ interface HostIsolationStatus { interface UseHostIsolationProps { agentId: string; comment: string; + caseIds?: string[]; } export const useHostIsolation = ({ agentId, comment, + caseIds, }: UseHostIsolationProps): HostIsolationStatus => { const [loading, setLoading] = useState(false); const { addError } = useAppToasts(); @@ -30,7 +32,7 @@ export const useHostIsolation = ({ const isolateHost = useCallback(async () => { try { setLoading(true); - const isolationStatus = await createHostIsolation({ agentId, comment }); + const isolationStatus = await createHostIsolation({ agentId, comment, caseIds }); setLoading(false); return isolationStatus.action ? true : false; } catch (error) { @@ -38,6 +40,6 @@ export const useHostIsolation = ({ addError(error.message, { title: HOST_ISOLATION_FAILURE }); return false; } - }, [agentId, comment, addError]); + }, [agentId, comment, caseIds, addError]); return { loading, isolateHost }; }; From 6e66415b7e143c59a8400b51b2163d7411d7f981 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Thu, 13 May 2021 16:04:59 +0200 Subject: [PATCH 02/27] [Security Solution] [Detections] Adds Preview results for threshold rules (#99350) * adds Preview results for threshold rules * fixes typo * adds pipe to remove flakyness * fixes typecheck issue Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../detection_rules/threshold_rule.spec.ts | 27 ++++++++++++++--- .../cypress/screens/create_new_rule.ts | 2 ++ .../cypress/tasks/create_new_rule.ts | 30 ++++++++++++++++++- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts index f9971dfc0f791..7c09b311807be 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts @@ -6,7 +6,7 @@ */ import { formatMitreAttackDescription } from '../../helpers/rules'; -import { indexPatterns, newThresholdRule } from '../../objects/rule'; +import { indexPatterns, newRule, newThresholdRule } from '../../objects/rule'; import { ALERT_RULE_METHOD, @@ -26,6 +26,7 @@ import { RULES_TABLE, SEVERITY, } from '../../screens/alerts_detection_rules'; +import { PREVIEW_HEADER_SUBTITLE } from '../../screens/create_new_rule'; import { ABOUT_DETAILS, ABOUT_INVESTIGATION_NOTES, @@ -64,13 +65,16 @@ import { goToRuleDetails, waitForRulesTableToBeLoaded, } from '../../tasks/alerts_detection_rules'; +import { createCustomRuleActivated } from '../../tasks/api_calls/rules'; import { createTimeline } from '../../tasks/api_calls/timelines'; import { cleanKibana } from '../../tasks/common'; import { createAndActivateRule, fillAboutRuleAndContinue, fillDefineThresholdRuleAndContinue, + fillDefineThresholdRule, fillScheduleRuleAndContinue, + previewResults, selectThresholdRuleType, waitForAlertsToPopulate, waitForTheRuleToBeExecuted, @@ -92,12 +96,12 @@ describe('Detection rules, threshold', () => { createTimeline(newThresholdRule.timeline).then((response) => { rule.timeline.id = response.body.data.persistTimeline.timeline.savedObjectId; }); - }); - - it('Creates and activates a new threshold rule', () => { loginAndWaitForPageWithoutDateRange(DETECTIONS_URL); waitForAlertsPanelToBeLoaded(); waitForAlertsIndexToBeCreated(); + }); + + it('Creates and activates a new threshold rule', () => { goToManageAlertsDetectionRules(); waitForRulesTableToBeLoaded(); goToCreateNewRule(); @@ -175,4 +179,19 @@ describe('Detection rules, threshold', () => { cy.get(ALERT_RULE_SEVERITY).first().should('have.text', rule.severity.toLowerCase()); cy.get(ALERT_RULE_RISK_SCORE).first().should('have.text', rule.riskScore); }); + + it('Preview results', () => { + const previewRule = { ...newThresholdRule }; + previewRule.index!.push('.siem-signals*'); + + createCustomRuleActivated(newRule); + goToManageAlertsDetectionRules(); + waitForRulesTableToBeLoaded(); + goToCreateNewRule(); + selectThresholdRuleType(); + fillDefineThresholdRule(previewRule); + previewResults(); + + cy.get(PREVIEW_HEADER_SUBTITLE).should('have.text', '3 unique hits'); + }); }); diff --git a/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts index db8d93dfbbef9..a580068b636e4 100644 --- a/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts @@ -127,6 +127,8 @@ export const MITRE_ATTACK_ADD_TECHNIQUE_BUTTON = '[data-test-subj="addMitreAttac export const MITRE_ATTACK_ADD_SUBTECHNIQUE_BUTTON = '[data-test-subj="addMitreAttackSubtechnique"]'; +export const PREVIEW_HEADER_SUBTITLE = '[data-test-subj="header-panel-subtitle"]'; + export const QUERY_PREVIEW_BUTTON = '[data-test-subj="queryPreviewButton"]'; export const REFERENCE_URLS_INPUT = diff --git a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts index cd342e9456906..9c15b1f03932d 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts @@ -260,12 +260,18 @@ export const fillScheduleRuleAndContinue = (rule: CustomRule | MachineLearningRu cy.get(LOOK_BACK_TIME_TYPE).select(rule.lookBack.timeType); }; -export const fillDefineThresholdRuleAndContinue = (rule: ThresholdRule) => { +export const fillDefineThresholdRule = (rule: ThresholdRule) => { const thresholdField = 0; const threshold = 1; cy.get(IMPORT_QUERY_FROM_SAVED_TIMELINE_LINK).click(); cy.get(TIMELINE(rule.timeline.id!)).click(); + cy.get(COMBO_BOX_CLEAR_BTN).click(); + + rule.index!.forEach((index) => { + cy.get(COMBO_BOX_INPUT).first().type(`${index}{enter}`); + }); + cy.get(CUSTOM_QUERY_INPUT).should('have.value', rule.customQuery); cy.get(THRESHOLD_INPUT_AREA) .find(INPUT) @@ -274,6 +280,24 @@ export const fillDefineThresholdRuleAndContinue = (rule: ThresholdRule) => { cy.get(THRESHOLD_FIELD_SELECTION).click({ force: true }); cy.wrap(inputs[threshold]).clear().type(rule.threshold); }); +}; + +export const fillDefineThresholdRuleAndContinue = (rule: ThresholdRule) => { + const thresholdField = 0; + const threshold = 1; + + const typeThresholdField = ($el: Cypress.ObjectLike) => cy.wrap($el).type(rule.thresholdField); + + cy.get(IMPORT_QUERY_FROM_SAVED_TIMELINE_LINK).click(); + cy.get(TIMELINE(rule.timeline.id!)).click(); + cy.get(CUSTOM_QUERY_INPUT).should('have.value', rule.customQuery); + cy.get(THRESHOLD_INPUT_AREA) + .find(INPUT) + .then((inputs) => { + cy.wrap(inputs[thresholdField]).pipe(typeThresholdField); + cy.get(THRESHOLD_FIELD_SELECTION).click({ force: true }); + cy.wrap(inputs[threshold]).clear().type(rule.threshold); + }); cy.get(DEFINE_CONTINUE_BUTTON).should('exist').click({ force: true }); cy.get(CUSTOM_QUERY_INPUT).should('not.exist'); @@ -478,6 +502,10 @@ export const selectThresholdRuleType = () => { cy.get(THRESHOLD_TYPE).click({ force: true }); }; +export const previewResults = () => { + cy.get(QUERY_PREVIEW_BUTTON).click(); +}; + export const waitForAlertsToPopulate = async (alertCountThreshold = 1) => { cy.waitUntil( () => { From 49020d804475bdd61778357531fd82c5a8247452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Thu, 13 May 2021 16:16:26 +0200 Subject: [PATCH 03/27] [SO Migrations v2] Log doc-count progress (#99865) --- ...kibana-plugin-core-public.doclinksstart.md | 2 - .../migrationsv2/actions/index.ts | 16 +- .../saved_objects/migrationsv2/model.test.ts | 98 +++++++++++- .../saved_objects/migrationsv2/model.ts | 34 +++++ .../migrationsv2/progress.test.ts | 140 ++++++++++++++++++ .../saved_objects/migrationsv2/progress.ts | 74 +++++++++ .../saved_objects/migrationsv2/types.ts | 11 ++ 7 files changed, 369 insertions(+), 6 deletions(-) create mode 100644 src/core/server/saved_objects/migrationsv2/progress.test.ts create mode 100644 src/core/server/saved_objects/migrationsv2/progress.ts diff --git a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md index ac625095da2a4..78d2d8daa3d45 100644 --- a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md +++ b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md @@ -17,7 +17,5 @@ export interface DocLinksStart | --- | --- | --- | | [DOC\_LINK\_VERSION](./kibana-plugin-core-public.doclinksstart.doc_link_version.md) | string | | | [ELASTIC\_WEBSITE\_URL](./kibana-plugin-core-public.doclinksstart.elastic_website_url.md) | string | | - | [links](./kibana-plugin-core-public.doclinksstart.links.md) | {
    readonly canvas: {
    readonly guide: string;
    };
    readonly dashboard: {
    readonly guide: string;
    readonly drilldowns: string;
    readonly drilldownsTriggerPicker: string;
    readonly urlDrilldownTemplateSyntax: string;
    readonly urlDrilldownVariables: string;
    };
    readonly discover: Record<string, string>;
    readonly filebeat: {
    readonly base: string;
    readonly installation: string;
    readonly configuration: string;
    readonly elasticsearchOutput: string;
    readonly elasticsearchModule: string;
    readonly startup: string;
    readonly exportedFields: string;
    };
    readonly auditbeat: {
    readonly base: string;
    };
    readonly metricbeat: {
    readonly base: string;
    readonly configure: string;
    readonly httpEndpoint: string;
    readonly install: string;
    readonly start: string;
    };
    readonly enterpriseSearch: {
    readonly base: string;
    readonly appSearchBase: string;
    readonly workplaceSearchBase: string;
    };
    readonly heartbeat: {
    readonly base: string;
    };
    readonly logstash: {
    readonly base: string;
    };
    readonly functionbeat: {
    readonly base: string;
    };
    readonly winlogbeat: {
    readonly base: string;
    };
    readonly aggs: {
    readonly composite: string;
    readonly composite_missing_bucket: string;
    readonly date_histogram: string;
    readonly date_range: string;
    readonly date_format_pattern: string;
    readonly filter: string;
    readonly filters: string;
    readonly geohash_grid: string;
    readonly histogram: string;
    readonly ip_range: string;
    readonly range: string;
    readonly significant_terms: string;
    readonly terms: string;
    readonly avg: string;
    readonly avg_bucket: string;
    readonly max_bucket: string;
    readonly min_bucket: string;
    readonly sum_bucket: string;
    readonly cardinality: string;
    readonly count: string;
    readonly cumulative_sum: string;
    readonly derivative: string;
    readonly geo_bounds: string;
    readonly geo_centroid: string;
    readonly max: string;
    readonly median: string;
    readonly min: string;
    readonly moving_avg: string;
    readonly percentile_ranks: string;
    readonly serial_diff: string;
    readonly std_dev: string;
    readonly sum: string;
    readonly top_hits: string;
    };
    readonly runtimeFields: {
    readonly overview: string;
    readonly mapping: string;
    };
    readonly scriptedFields: {
    readonly scriptFields: string;
    readonly scriptAggs: string;
    readonly painless: string;
    readonly painlessApi: string;
    readonly painlessLangSpec: string;
    readonly painlessSyntax: string;
    readonly painlessWalkthrough: string;
    readonly luceneExpressions: string;
    };
    readonly search: {
    readonly sessions: string;
    };
    readonly indexPatterns: {
    readonly introduction: string;
    readonly fieldFormattersNumber: string;
    readonly fieldFormattersString: string;
    };
    readonly addData: string;
    readonly kibana: string;
    readonly upgradeAssistant: string;
    readonly elasticsearch: Record<string, string>;
    readonly siem: {
    readonly guide: string;
    readonly gettingStarted: string;
    };
    readonly query: {
    readonly eql: string;
    readonly kueryQuerySyntax: string;
    readonly luceneQuerySyntax: string;
    readonly percolate: string;
    readonly queryDsl: string;
    };
    readonly date: {
    readonly dateMath: string;
    readonly dateMathIndexNames: string;
    };
    readonly management: Record<string, string>;
    readonly ml: Record<string, string>;
    readonly transforms: Record<string, string>;
    readonly visualize: Record<string, string>;
    readonly apis: Readonly<{
    bulkIndexAlias: string;
    byteSizeUnits: string;
    createAutoFollowPattern: string;
    createFollower: string;
    createIndex: string;
    createSnapshotLifecyclePolicy: string;
    createRoleMapping: string;
    createRoleMappingTemplates: string;
    createRollupJobsRequest: string;
    createApiKey: string;
    createPipeline: string;
    createTransformRequest: string;
    cronExpressions: string;
    executeWatchActionModes: string;
    indexExists: string;
    openIndex: string;
    putComponentTemplate: string;
    painlessExecute: string;
    painlessExecuteAPIContexts: string;
    putComponentTemplateMetadata: string;
    putSnapshotLifecyclePolicy: string;
    putIndexTemplateV1: string;
    putWatch: string;
    simulatePipeline: string;
    timeUnits: string;
    updateTransform: string;
    }>;
    readonly observability: Record<string, string>;
    readonly alerting: Record<string, string>;
    readonly maps: Record<string, string>;
    readonly monitoring: Record<string, string>;
    readonly security: Readonly<{
    apiKeyServiceSettings: string;
    clusterPrivileges: string;
    elasticsearchSettings: string;
    elasticsearchEnableSecurity: string;
    indicesPrivileges: string;
    kibanaTLS: string;
    kibanaPrivileges: string;
    mappingRoles: string;
    mappingRolesFieldRules: string;
    runAsPrivilege: string;
    }>;
    readonly watcher: Record<string, string>;
    readonly ccs: Record<string, string>;
    readonly plugins: Record<string, string>;
    readonly snapshotRestore: Record<string, string>;
    readonly ingest: Record<string, string>;
    } | | - diff --git a/src/core/server/saved_objects/migrationsv2/actions/index.ts b/src/core/server/saved_objects/migrationsv2/actions/index.ts index d0623de51e4c3..c2e0476960c3b 100644 --- a/src/core/server/saved_objects/migrationsv2/actions/index.ts +++ b/src/core/server/saved_objects/migrationsv2/actions/index.ts @@ -456,6 +456,7 @@ export const openPit = ( export interface ReadWithPit { outdatedDocuments: SavedObjectsRawDoc[]; readonly lastHitSortValue: number[] | undefined; + readonly totalHits: number | undefined; } /* @@ -481,13 +482,20 @@ export const readWithPit = ( pit: { id: pitId, keep_alive: pitKeepAlive }, size: batchSize, search_after: searchAfter, - // Improve performance by not calculating the total number of hits - // matching the query. - track_total_hits: false, + /** + * We want to know how many documents we need to process so we can log the progress. + * But we also want to increase the performance of these requests, + * so we ask ES to report the total count only on the first request (when searchAfter does not exist) + */ + track_total_hits: typeof searchAfter === 'undefined', query, }, }) .then((response) => { + const totalHits = + typeof response.body.hits.total === 'number' + ? response.body.hits.total // This format is to be removed in 8.0 + : response.body.hits.total?.value; const hits = response.body.hits.hits; if (hits.length > 0) { @@ -495,12 +503,14 @@ export const readWithPit = ( // @ts-expect-error @elastic/elasticsearch _source is optional outdatedDocuments: hits as SavedObjectsRawDoc[], lastHitSortValue: hits[hits.length - 1].sort as number[], + totalHits, }); } return Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits, }); }) .catch(catchRetryableEsClientErrors); diff --git a/src/core/server/saved_objects/migrationsv2/model.test.ts b/src/core/server/saved_objects/migrationsv2/model.test.ts index bdaedba9c9ea3..adeb78e568af3 100644 --- a/src/core/server/saved_objects/migrationsv2/model.test.ts +++ b/src/core/server/saved_objects/migrationsv2/model.test.ts @@ -45,6 +45,7 @@ import { createInitialState, model } from './model'; import { ResponseType } from './next'; import { SavedObjectsMigrationConfigType } from '../saved_objects_config'; import { TransformErrorObjects, TransformSavedObjectDocumentError } from '../migrations/core'; +import { createInitialProgress } from './progress'; describe('migrations v2 model', () => { const baseState: BaseState = { @@ -768,6 +769,8 @@ describe('migrations v2 model', () => { expect(newState.controlState).toBe('REINDEX_SOURCE_TO_TEMP_READ'); expect(newState.sourceIndexPitId).toBe('pit_id'); expect(newState.lastHitSortValue).toBe(undefined); + expect(newState.progress.processed).toBe(undefined); + expect(newState.progress.total).toBe(undefined); }); }); @@ -783,6 +786,7 @@ describe('migrations v2 model', () => { lastHitSortValue: undefined, corruptDocumentIds: [], transformErrors: [], + progress: createInitialProgress(), }; it('REINDEX_SOURCE_TO_TEMP_READ -> REINDEX_SOURCE_TO_TEMP_INDEX if the index has outdated documents to reindex', () => { @@ -791,21 +795,34 @@ describe('migrations v2 model', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_READ'> = Either.right({ outdatedDocuments, lastHitSortValue, + totalHits: 1, }); const newState = model(state, res) as ReindexSourceToTempIndex; expect(newState.controlState).toBe('REINDEX_SOURCE_TO_TEMP_INDEX'); expect(newState.outdatedDocuments).toBe(outdatedDocuments); expect(newState.lastHitSortValue).toBe(lastHitSortValue); + expect(newState.progress.processed).toBe(undefined); + expect(newState.progress.total).toBe(1); + expect(newState.logs).toMatchInlineSnapshot(` + Array [ + Object { + "level": "info", + "message": "Starting to process 1 documents.", + }, + ] + `); }); it('REINDEX_SOURCE_TO_TEMP_READ -> REINDEX_SOURCE_TO_TEMP_CLOSE_PIT if no outdated documents to reindex', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_READ'> = Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits: undefined, }); const newState = model(state, res) as ReindexSourceToTempClosePit; expect(newState.controlState).toBe('REINDEX_SOURCE_TO_TEMP_CLOSE_PIT'); expect(newState.sourceIndexPitId).toBe('pit_id'); + expect(newState.logs).toStrictEqual([]); // No logs because no hits }); it('REINDEX_SOURCE_TO_TEMP_READ -> FATAL if no outdated documents to reindex and transform failures seen with previous outdated documents', () => { @@ -817,12 +834,14 @@ describe('migrations v2 model', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_READ'> = Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits: undefined, }); const newState = model(testState, res) as FatalState; expect(newState.controlState).toBe('FATAL'); expect(newState.reason).toMatchInlineSnapshot( `"Migrations failed. Reason: Corrupt saved object documents: a:b. To allow migrations to proceed, please delete these documents."` ); + expect(newState.logs).toStrictEqual([]); // No logs because no hits }); }); @@ -857,6 +876,7 @@ describe('migrations v2 model', () => { lastHitSortValue: undefined, corruptDocumentIds: [], transformErrors: [], + progress: { processed: undefined, total: 1 }, }; const processedDocs = [ { @@ -869,8 +889,28 @@ describe('migrations v2 model', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_INDEX'> = Either.right({ processedDocs, }); - const newState = model(state, res); + const newState = model(state, res) as ReindexSourceToTempIndexBulk; + expect(newState.controlState).toEqual('REINDEX_SOURCE_TO_TEMP_INDEX_BULK'); + expect(newState.progress.processed).toBe(0); // Result of `(undefined ?? 0) + corruptDocumentsId.length` + }); + + it('increments the progress.processed counter', () => { + const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_INDEX'> = Either.right({ + processedDocs, + }); + + const testState = { + ...state, + outdatedDocuments: [{ _id: '1', _source: { type: 'vis' } }], + progress: { + processed: 1, + total: 1, + }, + }; + + const newState = model(testState, res) as ReindexSourceToTempIndexBulk; expect(newState.controlState).toEqual('REINDEX_SOURCE_TO_TEMP_INDEX_BULK'); + expect(newState.progress.processed).toBe(2); }); it('REINDEX_SOURCE_TO_TEMP_INDEX -> REINDEX_SOURCE_TO_TEMP_READ if action succeeded but we have carried through previous failures', () => { @@ -886,6 +926,7 @@ describe('migrations v2 model', () => { expect(newState.controlState).toEqual('REINDEX_SOURCE_TO_TEMP_READ'); expect(newState.corruptDocumentIds.length).toEqual(1); expect(newState.transformErrors.length).toEqual(0); + expect(newState.progress.processed).toBe(0); }); it('REINDEX_SOURCE_TO_TEMP_INDEX -> REINDEX_SOURCE_TO_TEMP_READ when response is left documents_transform_failed', () => { @@ -918,6 +959,7 @@ describe('migrations v2 model', () => { sourceIndexPitId: 'pit_id', targetIndex: '.kibana_7.11.0_001', lastHitSortValue: undefined, + progress: createInitialProgress(), }; test('REINDEX_SOURCE_TO_TEMP_INDEX_BULK -> REINDEX_SOURCE_TO_TEMP_READ if action succeeded', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_INDEX_BULK'> = Either.right( @@ -1018,6 +1060,7 @@ describe('migrations v2 model', () => { hasTransformedDocs: false, corruptDocumentIds: [], transformErrors: [], + progress: createInitialProgress(), }; it('OUTDATED_DOCUMENTS_SEARCH_READ -> OUTDATED_DOCUMENTS_TRANSFORM if found documents to transform', () => { @@ -1026,21 +1069,65 @@ describe('migrations v2 model', () => { const res: ResponseType<'OUTDATED_DOCUMENTS_SEARCH_READ'> = Either.right({ outdatedDocuments, lastHitSortValue, + totalHits: 10, }); const newState = model(state, res) as OutdatedDocumentsTransform; expect(newState.controlState).toBe('OUTDATED_DOCUMENTS_TRANSFORM'); expect(newState.outdatedDocuments).toBe(outdatedDocuments); expect(newState.lastHitSortValue).toBe(lastHitSortValue); + expect(newState.progress.processed).toBe(undefined); + expect(newState.progress.total).toBe(10); + expect(newState.logs).toMatchInlineSnapshot(` + Array [ + Object { + "level": "info", + "message": "Starting to process 10 documents.", + }, + ] + `); + }); + + it('keeps the previous progress.total if not obtained in the result', () => { + const outdatedDocuments = [{ _id: '1', _source: { type: 'vis' } }]; + const lastHitSortValue = [123456]; + const res: ResponseType<'OUTDATED_DOCUMENTS_SEARCH_READ'> = Either.right({ + outdatedDocuments, + lastHitSortValue, + totalHits: undefined, + }); + const testState = { + ...state, + progress: { + processed: 5, + total: 10, + }, + }; + const newState = model(testState, res) as OutdatedDocumentsTransform; + expect(newState.controlState).toBe('OUTDATED_DOCUMENTS_TRANSFORM'); + expect(newState.outdatedDocuments).toBe(outdatedDocuments); + expect(newState.lastHitSortValue).toBe(lastHitSortValue); + expect(newState.progress.processed).toBe(5); + expect(newState.progress.total).toBe(10); + expect(newState.logs).toMatchInlineSnapshot(` + Array [ + Object { + "level": "info", + "message": "Processed 5 documents out of 10.", + }, + ] + `); }); it('OUTDATED_DOCUMENTS_SEARCH_READ -> OUTDATED_DOCUMENTS_SEARCH_CLOSE_PIT if no outdated documents to transform', () => { const res: ResponseType<'OUTDATED_DOCUMENTS_SEARCH_READ'> = Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits: undefined, }); const newState = model(state, res) as OutdatedDocumentsSearchClosePit; expect(newState.controlState).toBe('OUTDATED_DOCUMENTS_SEARCH_CLOSE_PIT'); expect(newState.pitId).toBe('pit_id'); + expect(newState.logs).toStrictEqual([]); // No logs because no hits }); it('OUTDATED_DOCUMENTS_SEARCH_READ -> FATAL if no outdated documents to transform and we have failed document migrations', () => { @@ -1060,6 +1147,7 @@ describe('migrations v2 model', () => { const res: ResponseType<'OUTDATED_DOCUMENTS_SEARCH_READ'> = Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits: undefined, }); const transformErrorsState: OutdatedDocumentsSearchRead = { ...state, @@ -1072,6 +1160,7 @@ describe('migrations v2 model', () => { expect(newState.reason.includes('Corrupt saved object documents: ')).toBe(true); expect(newState.reason.includes('Transformation errors: ')).toBe(true); expect(newState.reason.includes('randomvis: 7.12.0')).toBe(true); + expect(newState.logs).toStrictEqual([]); // No logs because no hits }); }); @@ -1138,6 +1227,7 @@ describe('migrations v2 model', () => { pitId: 'pit_id', lastHitSortValue: [3, 4], hasTransformedDocs: false, + progress: createInitialProgress(), }; describe('OUTDATED_DOCUMENTS_TRANSFORM if action succeeds', () => { const processedDocs = [ @@ -1156,6 +1246,7 @@ describe('migrations v2 model', () => { expect(newState.transformedDocs).toEqual(processedDocs); expect(newState.retryCount).toEqual(0); expect(newState.retryDelay).toEqual(0); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); test('OUTDATED_DOCUMENTS_TRANSFORM -> OUTDATED_DOCUMENTS_SEARCH_READ if there are are existing documents that failed transformation', () => { const outdatedDocumentsTransformStateWithFailedDocuments: OutdatedDocumentsTransform = { @@ -1172,6 +1263,7 @@ describe('migrations v2 model', () => { expect(newState.corruptDocumentIds).toEqual(corruptDocumentIds); expect(newState.retryCount).toEqual(0); expect(newState.retryDelay).toEqual(0); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); test('OUTDATED_DOCUMENTS_TRANSFORM -> OUTDATED_DOCUMENTS_SEARCH_READ if there are are existing documents that failed transformation because of transform errors', () => { const outdatedDocumentsTransformStateWithFailedDocuments: OutdatedDocumentsTransform = { @@ -1189,6 +1281,7 @@ describe('migrations v2 model', () => { expect(newState.transformErrors.length).toEqual(1); expect(newState.retryCount).toEqual(0); expect(newState.retryDelay).toEqual(0); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); }); describe('OUTDATED_DOCUMENTS_TRANSFORM if action fails', () => { @@ -1204,6 +1297,7 @@ describe('migrations v2 model', () => { ) as OutdatedDocumentsSearchRead; expect(newState.controlState).toEqual('OUTDATED_DOCUMENTS_SEARCH_READ'); expect(newState.corruptDocumentIds).toEqual(corruptDocumentIds); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); test('OUTDATED_DOCUMENTS_TRANSFORM -> OUTDATED_DOCUMENTS_SEARCH_READ combines newly failed documents with those already on state if documents failed the transform', () => { const newFailedTransformDocumentIds = ['b:other', 'c:__']; @@ -1226,6 +1320,7 @@ describe('migrations v2 model', () => { ...corruptDocumentIds, ...newFailedTransformDocumentIds, ]); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); }); }); @@ -1246,6 +1341,7 @@ describe('migrations v2 model', () => { pitId: 'pit_id', lastHitSortValue: [3, 4], hasTransformedDocs: false, + progress: createInitialProgress(), }; test('TRANSFORMED_DOCUMENTS_BULK_INDEX should throw a throwBadResponse error if action failed', () => { const res: ResponseType<'TRANSFORMED_DOCUMENTS_BULK_INDEX'> = Either.left({ diff --git a/src/core/server/saved_objects/migrationsv2/model.ts b/src/core/server/saved_objects/migrationsv2/model.ts index cf9d6aec6b5b0..3ef3cb4f83b6f 100644 --- a/src/core/server/saved_objects/migrationsv2/model.ts +++ b/src/core/server/saved_objects/migrationsv2/model.ts @@ -18,6 +18,12 @@ import { SavedObjectsMigrationVersion } from '../types'; import { disableUnknownTypeMappingFields } from '../migrations/core/migration_context'; import { excludeUnusedTypesQuery, TransformErrorObjects } from '../migrations/core'; import { SavedObjectsMigrationConfigType } from '../saved_objects_config'; +import { + createInitialProgress, + incrementProcessedProgress, + logProgress, + setProgressTotal, +} from './progress'; /** * A helper function/type for ensuring that all control state's are handled. @@ -509,6 +515,7 @@ export const model = (currentState: State, resW: ResponseType): // placeholders to collect document transform problems corruptDocumentIds: [], transformErrors: [], + progress: createInitialProgress(), }; } else { throwBadResponse(stateP, res); @@ -517,12 +524,16 @@ export const model = (currentState: State, resW: ResponseType): // we carry through any failures we've seen with transforming documents on state const res = resW as ExcludeRetryableEsError>; if (Either.isRight(res)) { + const progress = setProgressTotal(stateP.progress, res.right.totalHits); + const logs = logProgress(stateP.logs, progress); if (res.right.outdatedDocuments.length > 0) { return { ...stateP, controlState: 'REINDEX_SOURCE_TO_TEMP_INDEX', outdatedDocuments: res.right.outdatedDocuments, lastHitSortValue: res.right.lastHitSortValue, + progress, + logs, }; } else { // we don't have any more outdated documents and need to either fail or move on to updating the target mappings. @@ -542,6 +553,7 @@ export const model = (currentState: State, resW: ResponseType): return { ...stateP, controlState: 'REINDEX_SOURCE_TO_TEMP_CLOSE_PIT', + logs, }; } } @@ -566,12 +578,18 @@ export const model = (currentState: State, resW: ResponseType): // collecting issues along the way rather than failing // REINDEX_SOURCE_TO_TEMP_INDEX handles the document transforms const res = resW as ExcludeRetryableEsError>; + + // Increment the processed documents, no matter what the results are. + // Otherwise the progress might look off when there are errors. + const progress = incrementProcessedProgress(stateP.progress, stateP.outdatedDocuments.length); + if (Either.isRight(res)) { if (stateP.corruptDocumentIds.length === 0 && stateP.transformErrors.length === 0) { return { ...stateP, controlState: 'REINDEX_SOURCE_TO_TEMP_INDEX_BULK', // handles the actual bulk indexing into temp index transformedDocs: [...res.right.processedDocs], + progress, }; } else { // we don't have any transform issues with the current batch of outdated docs but @@ -581,6 +599,7 @@ export const model = (currentState: State, resW: ResponseType): return { ...stateP, controlState: 'REINDEX_SOURCE_TO_TEMP_READ', + progress, }; } } else { @@ -592,6 +611,7 @@ export const model = (currentState: State, resW: ResponseType): controlState: 'REINDEX_SOURCE_TO_TEMP_READ', corruptDocumentIds: [...stateP.corruptDocumentIds, ...left.corruptDocumentIds], transformErrors: [...stateP.transformErrors, ...left.transformErrors], + progress, }; } else { // should never happen @@ -676,6 +696,7 @@ export const model = (currentState: State, resW: ResponseType): controlState: 'OUTDATED_DOCUMENTS_SEARCH_READ', pitId: res.right.pitId, lastHitSortValue: undefined, + progress: createInitialProgress(), hasTransformedDocs: false, corruptDocumentIds: [], transformErrors: [], @@ -687,11 +708,16 @@ export const model = (currentState: State, resW: ResponseType): const res = resW as ExcludeRetryableEsError>; if (Either.isRight(res)) { if (res.right.outdatedDocuments.length > 0) { + const progress = setProgressTotal(stateP.progress, res.right.totalHits); + const logs = logProgress(stateP.logs, progress); + return { ...stateP, controlState: 'OUTDATED_DOCUMENTS_TRANSFORM', outdatedDocuments: res.right.outdatedDocuments, lastHitSortValue: res.right.lastHitSortValue, + progress, + logs, }; } else { // we don't have any more outdated documents and need to either fail or move on to updating the target mappings. @@ -720,6 +746,11 @@ export const model = (currentState: State, resW: ResponseType): } } else if (stateP.controlState === 'OUTDATED_DOCUMENTS_TRANSFORM') { const res = resW as ExcludeRetryableEsError>; + + // Increment the processed documents, no matter what the results are. + // Otherwise the progress might look off when there are errors. + const progress = incrementProcessedProgress(stateP.progress, stateP.outdatedDocuments.length); + if (Either.isRight(res)) { // we haven't seen corrupt documents or any transformation errors thus far in the migration // index the migrated docs @@ -729,6 +760,7 @@ export const model = (currentState: State, resW: ResponseType): controlState: 'TRANSFORMED_DOCUMENTS_BULK_INDEX', transformedDocs: [...res.right.processedDocs], hasTransformedDocs: true, + progress, }; } else { // We have seen corrupt documents and/or transformation errors @@ -736,6 +768,7 @@ export const model = (currentState: State, resW: ResponseType): return { ...stateP, controlState: 'OUTDATED_DOCUMENTS_SEARCH_READ', + progress, }; } } else { @@ -747,6 +780,7 @@ export const model = (currentState: State, resW: ResponseType): corruptDocumentIds: [...stateP.corruptDocumentIds, ...res.left.corruptDocumentIds], transformErrors: [...stateP.transformErrors, ...res.left.transformErrors], hasTransformedDocs: false, + progress, }; } else { throwBadResponse(stateP, res as never); diff --git a/src/core/server/saved_objects/migrationsv2/progress.test.ts b/src/core/server/saved_objects/migrationsv2/progress.test.ts new file mode 100644 index 0000000000000..a0d89c2c63300 --- /dev/null +++ b/src/core/server/saved_objects/migrationsv2/progress.test.ts @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { MigrationLog } from './types'; +import { + createInitialProgress, + incrementProcessedProgress, + logProgress, + setProgressTotal, +} from './progress'; + +describe('createInitialProgress', () => { + test('create initial progress', () => { + expect(createInitialProgress()).toStrictEqual({ + processed: undefined, + total: undefined, + }); + }); +}); + +describe('setProgressTotal', () => { + const previousProgress = { + processed: undefined, + total: 10, + }; + test('should keep the previous total if not provided', () => { + expect(setProgressTotal(previousProgress)).toStrictEqual(previousProgress); + }); + + test('should keep the previous total is undefined', () => { + expect(setProgressTotal(previousProgress, undefined)).toStrictEqual(previousProgress); + }); + + test('should overwrite if the previous total is provided', () => { + expect(setProgressTotal(previousProgress, 20)).toStrictEqual({ + processed: undefined, + total: 20, + }); + }); +}); + +describe('logProgress', () => { + const previousLogs: MigrationLog[] = []; + + test('should not log anything if there is no total', () => { + const progress = { + processed: undefined, + total: undefined, + }; + expect(logProgress(previousLogs, progress)).toStrictEqual([]); + }); + + test('should not log anything if total is 0', () => { + const progress = { + processed: undefined, + total: 0, + }; + expect(logProgress(previousLogs, progress)).toStrictEqual([]); + }); + + test('should log the "Starting..." log', () => { + const progress = { + processed: undefined, + total: 10, + }; + expect(logProgress(previousLogs, progress)).toStrictEqual([ + { + level: 'info', + message: 'Starting to process 10 documents.', + }, + ]); + }); + + test('should log the "Processed..." log', () => { + const progress = { + processed: 5, + total: 10, + }; + expect(logProgress(previousLogs, progress)).toStrictEqual([ + { + level: 'info', + message: 'Processed 5 documents out of 10.', + }, + ]); + }); +}); + +describe('incrementProcessedProgress', () => { + const previousProgress = { + processed: undefined, + total: 10, + }; + test('should not increment if the incrementValue is not defined', () => { + expect(incrementProcessedProgress(previousProgress)).toStrictEqual({ + processed: 0, + total: 10, + }); + }); + + test('should not increment if the incrementValue is undefined', () => { + expect(incrementProcessedProgress(previousProgress, undefined)).toStrictEqual({ + processed: 0, + total: 10, + }); + }); + + test('should not increment if the incrementValue is not defined (with some processed values)', () => { + const testPreviousProgress = { + ...previousProgress, + processed: 1, + }; + expect(incrementProcessedProgress(testPreviousProgress, undefined)).toStrictEqual({ + processed: 1, + total: 10, + }); + }); + + test('should increment if the incrementValue is defined', () => { + expect(incrementProcessedProgress(previousProgress, 5)).toStrictEqual({ + processed: 5, + total: 10, + }); + }); + + test('should increment if the incrementValue is defined (with some processed values)', () => { + const testPreviousProgress = { + ...previousProgress, + processed: 5, + }; + expect(incrementProcessedProgress(testPreviousProgress, 5)).toStrictEqual({ + processed: 10, + total: 10, + }); + }); +}); diff --git a/src/core/server/saved_objects/migrationsv2/progress.ts b/src/core/server/saved_objects/migrationsv2/progress.ts new file mode 100644 index 0000000000000..d626cd6528902 --- /dev/null +++ b/src/core/server/saved_objects/migrationsv2/progress.ts @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { MigrationLog, Progress } from './types'; + +/** + * Returns an initial state of the progress object (everything undefined) + */ +export function createInitialProgress(): Progress { + return { + processed: undefined, + total: undefined, + }; +} + +/** + * Overwrites the total of the progress if anything provided + * @param previousProgress + * @param total + */ +export function setProgressTotal( + previousProgress: Progress, + total = previousProgress.total +): Progress { + return { + ...previousProgress, + total, + }; +} + +/** + * Returns a new list of MigrationLogs with the info entry about the progress + * @param previousLogs + * @param progress + */ +export function logProgress(previousLogs: MigrationLog[], progress: Progress): MigrationLog[] { + const logs = [...previousLogs]; + + if (progress.total) { + if (typeof progress.processed === 'undefined') { + logs.push({ + level: 'info', + message: `Starting to process ${progress.total} documents.`, + }); + } else { + logs.push({ + level: 'info', + message: `Processed ${progress.processed} documents out of ${progress.total}.`, + }); + } + } + + return logs; +} + +/** + * Increments the processed count and returns a new Progress + * @param previousProgress Previous state of the progress + * @param incrementProcessedBy Amount to increase the processed count by + */ +export function incrementProcessedProgress( + previousProgress: Progress, + incrementProcessedBy = 0 +): Progress { + return { + ...previousProgress, + processed: (previousProgress.processed ?? 0) + incrementProcessedBy, + }; +} diff --git a/src/core/server/saved_objects/migrationsv2/types.ts b/src/core/server/saved_objects/migrationsv2/types.ts index f5800a3cd9570..e3e52212d56cb 100644 --- a/src/core/server/saved_objects/migrationsv2/types.ts +++ b/src/core/server/saved_objects/migrationsv2/types.ts @@ -26,6 +26,11 @@ export interface MigrationLog { message: string; } +export interface Progress { + processed: number | undefined; + total: number | undefined; +} + export interface BaseState extends ControlState { /** The first part of the index name such as `.kibana` or `.kibana_task_manager` */ readonly indexPrefix: string; @@ -183,6 +188,7 @@ export interface ReindexSourceToTempRead extends PostInitState { readonly lastHitSortValue: number[] | undefined; readonly corruptDocumentIds: string[]; readonly transformErrors: TransformErrorObjects[]; + readonly progress: Progress; } export interface ReindexSourceToTempClosePit extends PostInitState { @@ -197,6 +203,7 @@ export interface ReindexSourceToTempIndex extends PostInitState { readonly lastHitSortValue: number[] | undefined; readonly corruptDocumentIds: string[]; readonly transformErrors: TransformErrorObjects[]; + readonly progress: Progress; } export interface ReindexSourceToTempIndexBulk extends PostInitState { @@ -204,6 +211,7 @@ export interface ReindexSourceToTempIndexBulk extends PostInitState { readonly transformedDocs: SavedObjectsRawDoc[]; readonly sourceIndexPitId: string; readonly lastHitSortValue: number[] | undefined; + readonly progress: Progress; } export type SetTempWriteBlock = PostInitState & { @@ -252,6 +260,7 @@ export interface OutdatedDocumentsSearchRead extends PostInitState { readonly hasTransformedDocs: boolean; readonly corruptDocumentIds: string[]; readonly transformErrors: TransformErrorObjects[]; + readonly progress: Progress; } export interface OutdatedDocumentsSearchClosePit extends PostInitState { @@ -276,6 +285,7 @@ export interface OutdatedDocumentsTransform extends PostInitState { readonly hasTransformedDocs: boolean; readonly corruptDocumentIds: string[]; readonly transformErrors: TransformErrorObjects[]; + readonly progress: Progress; } export interface TransformedDocumentsBulkIndex extends PostInitState { /** @@ -286,6 +296,7 @@ export interface TransformedDocumentsBulkIndex extends PostInitState { readonly lastHitSortValue: number[] | undefined; readonly hasTransformedDocs: boolean; readonly pitId: string; + readonly progress: Progress; } export interface MarkVersionIndexReady extends PostInitState { From ee9d469295d80598ec1ce8142869987812fd9597 Mon Sep 17 00:00:00 2001 From: Thomas Neirynck Date: Thu, 13 May 2021 10:39:37 -0400 Subject: [PATCH 04/27] [RFC][Maps] Adding a timeslider to Maps (#98355) Accepted. Additional notes in the github issue. --- rfcs/images/timeslider/toolbar.png | Bin 0 -> 9372 bytes rfcs/images/timeslider/v1.png | Bin 0 -> 935400 bytes rfcs/images/timeslider/v2.png | Bin 0 -> 147212 bytes rfcs/text/0018_timeslider.md | 217 +++++++++++++++++++++++++++++ 4 files changed, 217 insertions(+) create mode 100644 rfcs/images/timeslider/toolbar.png create mode 100644 rfcs/images/timeslider/v1.png create mode 100644 rfcs/images/timeslider/v2.png create mode 100644 rfcs/text/0018_timeslider.md diff --git a/rfcs/images/timeslider/toolbar.png b/rfcs/images/timeslider/toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..3dae2af0d77f72ad4e9912bdfbbf184a39dd557f GIT binary patch literal 9372 zcmV;NBxBo&P)T-}jyFzVDv*Tj)I+gpiFGd0Fp5kk-VpQqsm$?QX^P z5^yRK!QiR@2FxEkDuz5THc%CoC7@Ipyf&iN#H<5V-Z=Imhh!_8Xe?2FpwVDSNSZq% z&GSCyKDzsy{BiE>+qe7l<3493`B#*<(~on$^YwSW^PTVf`ZWIDO@9a$Y#SYY_}~Ah zY=MD07-QzYO#vdB|E?}%`vC+*2|#yV+H@^AOI~%o*ww*+0nn-=<@UEi5%$`vt7yMo z?CL;<&i1!K5mxZ(5Yhb6wyFizL5RedW|d3`$EliBR@FjbgI7f<4(k9k4BaY_4b=yk z`zco-V)cy`dvvzhbSUPJmO|(|2xG3U)bf|FvIH=nw)G}N)Hdk23?ICy1Y8WEJ!T@b4m-;2WY%W$e<`Kbn}dL1QT0?Wcxe6Qcb8iaJWa89-Ts74xB0 zd1-0M`gb~=wpPIy1E{Eg|Dco(bw@V#CE^jOL4g=!*}QRfE;F;3CxloW1V1bABi18L z*N7u31wbNMBC)C`Pbp=L4RuAXU*FY~>Jc#!m9Jml1#D?%DUXP}`;^t%&Mm!=lt9ldhh*T<_ zGQ%(c?Ec#u&C&?z>FIHlZ9h;XQSGkJK=19Q#3;Eyz@@GMzCtO zQW{FRGO8`Pxu}%S0Lp&KJQc8n24x_TNaVKLZnGV%$Y+kM<>8f5pXXLLC^gIh+&ZG0 z!q~2F#e*RLuwlc7YO!-j4FvPu_I=!1H?hwtO%D*Y~ zb8>GSdF#0s{=$0X*u;rr6DN+m`GaSld1`og$n8dI7>H=?s-k&~S5($GL<6nmu~aIi zlm_slHeC!44Vb@APJVRHy$__*8IRjbaR(Kr%L2<3XxC`t$eQPVw?fby?=nwyRoaAOctF z7yP()mYItHFg!HyfzS_fDbnTOLlXXL7ZqEj#i)! zunwrqe#H05Bxf%2W&^;3_uu#5-u>~ZQy&39GCAXYqgg&5RZF#Fsa4LlwL&AJfmU+O zm3r%9{KijC{Ne)uI5u&DA4z92lao{YpozV=-t1O_TNO+=+EEhrm^?do8A0HRne3IaTM-6(9U%h0H796W{p8=dI+kTII!Q}vpT^m zDreH0)AHcu2s#TP5;*);OJ@o;*y?h6(AK4b#F_L~cTo?tsOo?v2-VS!G@LgA)YzKT zvEUG?S~svx+iLY7HNjT6N7kct5U9iCceG6iH~7`wn$)pP0&{{dsJ}elZw1T*x<~E8 z-`)pnf*{{vk_>DuUlmu{I_(SLY6#V6f0q&0*y@!HfjV?ucb8{1U|H4>p9@$_0P7a0 z!-r(jO5f3uD{?qZBLZUb3#LYn9&N5YAcZC$upYn=IYaO(lOV&1cFIhK5h6Yh{80LW{FIle!gzE6T!##D}=#sTxQo5!k zj`|=<9s7yp2IrEs6#tJY+nTRI%!l<+)gimp{C2Jdem#kO) zJ!?@^TAhHa={YoO$-35hn+128EjnZ0K=ReSWbIl@8`TnMMvI8Gh9Y$@S(`Q1eQzW1 z8&j*^*ekuy*CJ7P$yJJIyHWyY!`dm?>UmUQuGF<>AR>bEHR&dRF~(mYZF;> z;kn)GYMQbH>X0P~z@8sOBmk6~F%ouecKPh=BGnDX7z4@-$~bGtFHeWO=K-Qb5C|d? zSt3A)L@Zs>XT0<1L=8fq4&BU^B4GJlctVI_P;MZENQ?oY05ULxGKNe-2CTH#fQSQG zddU2Nb9L~>ON0PHLI{ye)8KEPm)hB0-zvy=aO<$V4v(B$$_<1NLMfFbLJ`0Kt_Yxn zF-A+Ts(Tm+g4tTG6hI;oeuR`^|d2GzN4yQ?mo)LDP>$P z{{9|tQ(%k{#(<$j!11P(U5K(45D~C6n3$$vD#fhbTl%KMD@aE~28_$Z0I=*qfDoXR zcNs)R4T=cBvuFevFlI2YHiiKJpk$gpZ!aT+095IM_aG>{5Wbg%Q>x~wzzU)7(0Pw2 zRS(F3@h(FMp%fS^btQ=qN+}_d?G*whn&LQyOhhPIq8Z%~LdkkRhTZL22h6}b)rJksM~P_ zfxtQ>Qsqj`I+z)K02}E^Y#r`WV}kdQYejlR`zX1TT*#Uchpo+Ri^0HylU_BlFoxzv z1qdU3>J6KFnM5CO4y zP&Jp=%Nrt9$p8U*O5+e^(!oAJmU<1h4+?6u34O!{HL3sw#+dCL?{@YSaB-!!&8rxg z&kb0MUMJxdnK2G9dqpDCX#N;1pE=r|vw0ls0@tR~T;)Mk) zztwCVYk|*51E?dN&P<+~GFNJchlf-(z}{M-)pAEHTRQAtny4IKxbENKB8NZTdH2V6 z+NJMaE&t>w7O(8A$XlntX*6A(l!1!e(AChxra<9FWu+rN7KRaH%l z3=aXo*x2aq@m&vp{c!;1yYj-yGi3&hhpMj_L-;dxbx7STW|5`HD=+a=N4Ai(n!Q>{|zV-pqR^J<_o=wdEaPfku9{rUe&CTGpjV#n(h*^j!T(zGcyRK zXXRDU*w|<~lSw9LOqcOB3$tZxY;^L})Y!IB-=%z3y*Zc}rM4$96_cSV(J_=VdX&C7XK zKH=tNEp=Ek#{TUOqN7^%D2zKQWmU}@z`ytN$l{JW4;?yq7w5W6o|<~~@N0(--W7=M z;g}M+wWk%j0AIR`HS{PQ@q2Cu_V3$s>n)R~rnowWhlk8a#HTJx$$YNZ=41zm)lr=X zuR|tPP3#`ur6#I^v0CAo6KsiTfOn8?E!s4Z;4|7<6;WE0V5Lz{f#H$T$ zNLBjQ5>SA;VdH)WVxHz>^Y@|vdQY%GqOICMbfiYHf5YZ+OBA%XEZn_+& zXO29K?xXRsg>gCndRhsR+1I7ztmA| zt5V0Jng{?T5}}j=1w=AEmpM1HL>V)5odGR{DgpL>;S2KsoDxMOStf{*Eb|SAkW_Pk z0;5@jj__SL-K@juHHjnxBItk$8iqj-`G+FPK@`7UsFX_10d=%uQ zA4J9g2_X!TQ3`}m%dXX2FT#-+vBYvR+feQxCIQN{ouH~|dSE7`*-~^YI6*}(2*5`l zT3#kX0A{9b%r*;ii;S_dt1dec#4^>?o&l_6K-#rNEA$=WORE~m7;vhXVGzQ*3$v2M z++hj!86$irnerY40VA%~MeD-Znp<>SHNRrwFHm?3YCmh;Nv2%5Pui`eGnYWF)a){} zw2wIq^+Y%J#}g5`@wg+C*Uw(c&MfA6`6Y+48oB@%b=W!STnN);j`T!#tnX|}^@ylO zm7N>92rlzaT`@*E)6{uoQ)={vFq3XL`>>f_rLe(e!jBcFBHYA%tuCe+5uMD$IhHvq@i z6x$E4HzjRz7Cy4JZWBc6_##e=Sc)DHXr^j(0- z$tmmpNH4$iyw}xi6)eIE|8*9uUWltTQ93p@YO3I#dmosboC@&C2{G@d4G=C_mwvEn z>-CM>W(`P@!$N@HEyu%?^~z#8-y?_C6*7cHafUYPEI}i^~axm<|+OsU#awl zIq0_EKx)|R#x`va0#g^fgFJZueI6^7ZChLNfN-F#9Bjl^ZMuMZS8dw~uehVRx~LCr z)<_Lesjp-vE3gq=tkxPRhu`+CWthRJhqyexs9P6i$*tb~+XF)DsC=ug4t(S3XBzJ# zRE$b$bf9K>mM^;u_OJX)3Uak(iL*;kwsxs|8)%kQChb z9nSvJPC=b@wavwPeV?VxqS&x1_12uEZ9g}xo$%y_iGYZyoYr(XQaNqa9S790F*qWg zX#qFvjFTI-8VIx~X*q>R$n^XQz@<$?ogGo7@ip31PCGNRJUzc6D~*=cIK=!8+Yv;< z7&UjmA%slNXV1+pQ%ViPV3d|VObX0*uXDZ?67WS8LL^BdgjBd;Xl{SAI(|eLq>I;C zI4a|gj7SZxBlEk9jGq+x+R_SRsbs#>58pA25JDtLxWP}G?WMNWRy4U`gc1HHp>}SV z`?yodkE4mwPFZzx!=7v?2 z6`UK^bolSzVIDWzV*)JfH>iHm)OMql4^UxLmT#{VSPM6-6%bm7>#zb9ZWw@r8-^%V zFKD_JQfhpK8wOzMLk%^kG59-hi+pH%&dw~JZ_HvlQU^Dzr4YJOUv3y1>W*yePsAev z)>2JijAir2*-M$3r9j-URwL-f;9%i~4fjNMT+=jeSRyK4zo84s^6XLp-ML}yLC~GB zE!;4=p*P-iIX3jhOD|VDxMA&tE5F0~e5$!&5RVAB^bH~&k*YrkC*+v496tMZKt(}T z?pABLVSLP9EBOxRd$d(&ueL9an#O@wA2-a0-(k^6Aa2-uN8dm4=3B=mPV64P;S2x# zPrSdzVn-FbrrnHEjzAOq^6^0CoKB~I_LCoFGMQHnf9Kf5@vqhNxt`VLhWYS2z`=5H z^KkDSegD0q@9*7n%NM`!r}x}@eJL^UDMMwe-6%OkL^TIeh2tTIW{($$z)!B>4lS%r^avG#rJZV zJT)~k65xxgrFz#WH_T2O41xpu_dWde#{uBU#~=OT7yg7F{I}ouj|cYet95J2I%;ng zgz3pr3|^Bod-vS3ZQIswJpBy+SmNa5)IIk;aNxi{-95fbRTB?A^4MjekwE+o4qwTh zeEiY(j=ulO;qOdO&rF`0y8Gb2BXPl(I8BX{NATOlSnl5DZw_NhE=#A+%O@=#zuei_K_ep zz?$TSx$-+&E$FH*N{UyBf5#20z>G@UEQ$?lXA0+){=4e9VcyOXuQqO&H}GoXhB3Fj zzpqYim}ncdtC$;R@;ihh?(eu^72s9K4YTn(@G9qqfeR_i%3~^tel>8z+~SU^O!`&A z4RdyWi+pH%&R0G+jJr4IMp;)cH%z!sI$X8fFku9Am2$&CG|pWO+%TQ8oJRfm9Tskw zfJN6VR1I5zt*gk1bBj6v+`dzG=@_2V+$)b8wysM8fd75QfZy#K27FQpa52NcH{W5A zCJ;BQA*|lMVM84f034qd`wsCvfw^IsSO3dv6BEZTOeXAASb}=7w?bJ+T;L&pz|ikA8UMM?XCB>@!a>#{T?Y9P}kLtS&dKKS98I z|BjltVE~X$XCD6g;}6__A78|O-$H3U_J8vH~ty`wrv}I`K9ML@s=ME!paQ`(2Azv!jb_1f3Q&k zkEpbcr*!whFCRVnzLkW|Edl^`kMDZ=R)x@{H`Sf$o zzxdn>f5F+Mn>TIXrzU=J;-0VEKb@R4kJM3qE5Lh7Z@i?CKr21Lr5qa@{oZ#EGsYfz zjg^ zuIchohoI}WQ_x17S525r833?zsG#PRYslyw1rEtUg5`wk|+P|Z60Pcw z)+1L5H*9^kC^^U|GrNhkzm)Z2k&+MqAeOWZT6%=p={jRdZ=y6Y&?#Lh!eUmZ46x)T z>fweV!f;nOs$jZ6)i7Bp(&SPTJ}E7l(YkmsGm~!W1raHwM3Q)Ckt9iI7ivuYc)^%n zDk4BvT)u8NOo1%t46t}2Qx^e^A`y|I3jW=P>5xn|^oIIX|1p7U5D_CX%xCqbtRSu9 z|9uvVfgmDqVq9gE;U7rDGS|V;Q)GhCkUXC$T+;r)baUnYkRyQnJBWfm}5JxQ97g2xdmO42mto0G9l#ePG%%Tg84n$J5~y; zHxZgRyRw+oB|>BgKeag#R#1`1PkxpD!)=K~nEdQFsU0KHj;MTQu5f;#fB?tOwFxvU{Cf9o9x#Hzni)B@(QBh8n8=i-a(*F<^M&?iJZnLgRZ!IX1=hrqW{r#9oG&=7qdnzB!y*?Ewa4E;$cD=F0UA!ajBrwtpj15 z!uH|l?u~H(Jiky(E@^wO>-hbx@!w46WeGzPGKLEoBM~P5cxPu%Oag$BZe_4j*}J_% zjmS>Z5L<^E5Rs1?RvncYr53(Uwbr9yC7q{$$^ak|BH4l=5!f~uon0yvbT-lzn$PHcssvr`a zPiuW@NHdrkAt8yJnJWx+Dg~W|WL(G^eX5KAXXlC?QDQKNgfLUkqaloj$XtpNWGh7$ zRR|KixUBWWB>;#h(p*OGR}}`3El`89kc@L_eN$fy0Axf>l;!f_cWm!Be`0w>3K(O@ zE-;%$tj@(+T2z+ivs8_c-y{o{(%N9B91r9C3iQS$25@$v0D$o@=}Rbx7z;@s&lS$F zBBjuqkPDg-3rhg7yh1-XpUdRwK&MjBjEEx5XY|gPOequ%me<)xw{mhOzpkK6%@#gA z8qXGJSjPFZ-ls}M-OvnrVaXU9LY=bZ9AyBVF*&y^7?_2NlCGb+GTYCc%Lg;4870^2 zW*q>yp)Ujg2(Z2<+#Qz}v&BM@>J0X7??^6bibRIHl!8Xn1!MQ-*x9*apDOnjXje>H z$Y=~;$GYh0OZj+6>WH%Lm?RTKgt@fdn~(~+VNjM@(Y6mo)v%N;8n<4nMijiTSlHMX z=~3m52q|b(GXMa3qV&^S$u_?Qs+U zoLwx0q|%X$W-QL>lrlteVX+vJF&;+7SaPwb8w>yx8Py0`DHsw$a;aF*DCX&M&WI^U zDU|@0SM-kFa4KiaW%Mlr@qCd2!19Wb$>$UqV+zh^ikiVbUeGB6g4X>f%T4V;we)*hX9^+rqjIFb65d*atJ9Q^;v_F-zC?kn0A>$vN(WDiJzk zP|#Sh+V5%xXhv1-0HEp2+Rt?gADqi=>gN@Z^CrpGSW+gmi4`M_%aK8sU9wp$SKhGG6w0x0DXxDPs>1hcWCxI0ihs_FFR zZK`I_nN%^SRdjc5Q76dhp#T6k3DJU&>oAKEF_KmV9nekI1-hdlelz z9)j)tkX(iXJF1!)QlO|+ZnT~fs6*H7!MxCkIF$myp74$Vn4e#snVm0oZ?R?V!wTtF zl@HG4W>dO^zySW}x()z9gpf>Rf{d}E!MLO0u@(R%Q^tlKWqiagAvZ~zE&$*Y10@6D zESKAN%BH;t@*RW_=Z+?BZZ)7?IPXHl@eu@o-!8ynu5>)2U|we*&ugFkL`O`)Oo1`R zWC@46LJV+vu_zHT)TInYa?@EQ5ec1NC}fLte0?NSFeC~12oMCk%TUUCVpY#Wkna$x z13U*BXdpeYrKj}c*act=WI_O7A+1Nd6@$`bM(>Wxl;P12QzPA>3k&)FM1l~qsYm(g zhv}R~`x46Ef3&h=BwXuq$L@7tx;8}Ui^1u6qqdY}@CkSw_|!F+(-=XxaZ~Icew+P& zXI46*vW%!kWv#BnY_^|ddsB%00c-$L_t)W zkm}f2#KiarZ0LeLTP1-yd`+(DN-+x@UniwG< z@Q=pggB=nenOWA?_b4F(sT^ehYNR=fVQvcx{zY3gQimu+q*Iha11dEb(F|tJnpZRi z0DG^E4XW}&&Hx68SkzfaLId!F^SRC#kqKx`(1v)Rl{Bq3en+jw;G*-w6zmIxY@ z^{et=2RS{x+}+)=YklN@p2~(K5)b2T*TtDZ*Z0WpeVAR$>4P01HNq3ut+5WnShaVr z6vF=5jUD+SQzVQiP|O!bdzq>lQeSv_o@lC zy>#AcXvI7LL=b?2Rsc#3C8SVl&_YfrT~N7FfimCIaQOsg?WlP>lXfDPE2dM~cGf6V z$7;UkY=tBdS#JJoh#sh!-_cG`N_D+CP9Y$KuC%QZcpw}ODIukuHLevy5P~wM6`N13 z@xbbDsNw-#)7w1i3s>RRiaHcUZnH2oZ==>uD2jaMY|ZzX zgx_abE1d-ZVzJ2FeDj%kZm8kaz*T{+8-2aa*()Rn*4CWG30*f%pPugS?wC%_#bc3l zW@Tuow{;2TW&QfWx{JzI z_c?Lt6%@Nr(11SX##aP`5kK(*=+v$9b1}MpdjC|b~5R{`0(VJLZO-QSj)f9 z(o*am-##`Xw5u~Hqe@^MEoBU}6Wg!dSk&}|g;el4`sKRp6aM_= W;4|=uAI>)b0000fP15YVWo7sxT!5Ni-A!6aWB#CM_kd0stV2008igNU+c|_F|QO z&;y*4sI(dq64KI!;yM6829Os2s^*@4yyBLu+tGT!XR=tTH7fJRuqXm81sL=_82@H82$hE2lTWOdvfRh z=VeYgqyM)pQjQY=P4)k6JHdyBt@VGq+D{Kb{``OXMIv`rz#ex+_}7|KFWm|JuuzF0 zx<@1mfZh!3Dgiy8QyT$?-{}mdCuhe**;^a?@Ly*W9-m_yYZi`yrJJG7!Qbt{VqHqC z6S4>!)(`}!CHz+S_N3?ZqMj-1sP-mllRM_Aap~qflK*4o9wV3!H+VCa-R)Z;8IlOV z9v@Fs8J_puG%LTrVj3YK?;bDCd-C9kx34tk1h%hWK9dfea+RU&@}6U#!n;l{9aVm$ zy~&FIwd4WFp&?{e-g9bg%RhN^w^4=k0r=HF-`v#9d=DwmKDXo6TJs&$rpJ7?^>n21 zf-yrQ#)N=x{NWF|R|0{8V~u-b_U$LnDTKuT`($BGnY&;q#qs$@t5D;^;B=l0j9?*Y zUq8ich$fq7`5I(;cHt|1COvdaUontjLF)8bIe0Q6WBXb@;P(;`u3NUH`UYDPJaF7Y z^*8o_K0b(ZUPWF}{RTXM5}fX^qmAAQ%&Y$Z9oi4(sb*gt9NaXMZ1-WoXF(GH_^-zo zo-XoEEqWQmC+4mE(0fcsQ3Q)ny*OJkgsG0-ZUA7Tm1CE_QqB1lBF9~^shIKAH>Tul zP*wB#gR>>~>iOScLw#9=UMy8AI3|*36Q4|S={7z)K+RxA4aQtIN)B0r z5ThWX^%$jN!^TpTakoyV&;YRj_F!a8!WeN;G;le!{knyk3uX*jb=WqqznN$wST{f~ zhL)MMK#oz(F#{I!=f$U`!}vlVIe(ocP+cC?;(%5G8VeDpFl3R*BSwjyo~w1w2e9!>jz+(YbqEfYm2^* zX!JN~3~2IaNbEy1xRaN(J=wFp?+@Fp+{^Tu%s3^|@Oet685tXUoXTh%ta5ju zAQ&*Be0*Q2C_uZ5f*!{K3kbHx;A$uS(jO4l6|sv!@C8EcYv-`omv@4N5QoM)m;#rK zD!1NeyI~c+Vsh#E_C!gF$`VSAgQuC_!D-Sqi|u||g`s#+{LGTJu&Co;Cp%gGS3B=Z z+i7iQhRDpTl@b~Ib!E(K?C4YhhS0Ul*9ISPiqfOUV&#Oj*E!81#jM9|LqoFQ=@=m; z)am2P`=GAs(&0INj(!Pc_ve^3q3fqC=p(e=5~-P5nDRtI-&h8oNqKfL@5Iv4l_#>0 z7FtdKTfgJgd(@u&)9xZn3aDGcK&M{q5=JmD5qj%N;V=Vr-2mzS^}V=^gfjkx93J`1 z(LuRTjpB57kd872Lc3swS(oJ|yV`2FZVL!F$AnW4QNq9n zP;F>YeUL(|0{IQc+ZZ-)sS?gr)Gy77hohmtBLl>K9;z`-l_NU%Tx5%HBB{B0eQ<ZL zawo|^MMEPoB_(Fp@dK<-7O1wYwV}cG#>;BXyJ_J-NwPXg0tp$xt1RkRKAFRFCqXmu zvv#h<;?=nDTM+3pSr?XZh3ng&8`b?XPgx8eKz6#6Erm?bkUIhuc_bC@_Q^X&6YSdl-@FCGML2X!Cp)fABeMR6*Dw`g zB@Wvtqpf;bK641g#U^u0dCGY5=Hq%Rr0Mahu1t{)t@d5$POzu0u77g z&VRPj&jc1P)3SW7M%-4EH4XiynG6M=9hd+xKLP%;XVtT3$EmFK*O7kDJB)5?^s-ZT zz8B~D!^;~*@Vxd_jb*K6OuIKvXP`H*z}fNfvG>&&PZWtD3gE2m3aklwoUQUXv4ZHk z=|exGm&7My%^niy=8Kq@iZr2|gzXNg;joPgUeqe0^u`f{K2=z-6em1AaYGawzhJha zw{R-cjo$Wy@jk_IX_e4a^X_d_zh?NgTC8?cuk7snAvRP;=cy&GhkZw`zkX5$H^i&| zA+_=dKw`DWf-FA`_f=k*N*arAD?mgG^Y^r|tcn<5ie*XMKV@`{&~e_h;Ek7l+Vpjm ztUyiKRJ4;-ZrU_tNL+>p9T%|J@|;=;_YQse=)Jp_r>QiK#G&Ind;qLJMYy(w<@TC# zi196=XdoFK5a)pdX9_-`u=%)X#Sj`?_D78)#!?%z9k1_Syj;_N7MnyM2Sz7kaG2b- zl^-Abw7L~Ky6vVHHLn!xBp@J2L|heOqoKKQy^@gPg00cRotTF%uNST?qtxA88fc}3 zq3fLEmCP`s#3a8U_1RCWii#3fUVW2(`SL2kx!DD_y48F#q=<{bM!m|q>m%Ea_KE_F zm3L=G=+Lwdvt`}G3l`($$*tqQZ+ywRVR#tm1#%eZ5|gxTdQG)ZrGe`lc)}2RyGz;| zOHNtQ{A68W4W{`}blS8@USf z`Y0Vov*LBup2lOB$!Z)3If~RSYp>9*=L6(KyLRMId zjyI7#A{<1?ic{>Yg*&#iiiUW}qjywnlU2F-*Qmqeoyg$vq8bbh3B8*cwh5le%GI#7 zR!G(a4MAJO<0}s;c`pHXqTxi&24)xKR>S7}9?kB*+5P9uX>`ufDfYzXTzV;m&ug7hGWvCqlcX)^x~ z#nnu{S}*H$e}7>;sc)U})v4Uw&^t2ARA!kekk7;1@UTqMhy*=yD3|BNhVuLG2Y>i%4*@47)DiW-96MBz=dr-NC;-p#cC)r0YlCv%BL= zs;A%o7VfJgI_Rl|vZ-^IwA3XaF_s0GIJ^*cVk zg;*+^`KE%(O534W2~zK-oRYtMi%0mdqQ8yzGn+Ov88yna+C6Wge6RD8As9rw_IE38 zReH^r^$-Ky25arn))oDV1-=Ib&Bts+V+ViqZ;6o_pS1Qg0#~aqcK<9&YLc>{ndm8d z{*m1QkgqH|l%Gt_O1|w~anO^minz~VXm(t*7ih{ca`WvGS!1;q&)<#)L|d_*V8*Bj zu=lHdZMqB@Z_~5#%ce<}H@2I2E?$AhBgvrYaB}D>K7QxE#Nuy8y9h!5p7!p?+uw#C zIwn@*=6*!-iG!h=Av;!?+F_Y(}i>mu!1Syc;5=tB0> z)B${=VD2FO@P~=e6Anh2pNmsEmdY>cZfiw=Vc?HbLD7Rx2USXvJ?|Hb;cF$jCeK+y zed3c~5oPIv8pg^DA*<8F#@B*U1^|A@SEQI9)I=ySFjlcr5KakYWNIB=Ir@S?K+FOr zFWfqOG1W*&4jjOw(1Kk;S$=xLg^4{8=mbt4;+=NUkNp9d;2djVnS0?v-KtN@#6a}4 z$nOymiKUXU$dBIdberbn+XI#-k48KTv9&z4RI1AS&_LE*tl>e2w@%q zjxSw-K?Xa3np|-RmV`8Buo5eo43^Ld`oERZD7bsE&LZx_b*abC-FtR;EFY0#{3G~fWX(Xq2~7}+LGNyQ z(etq+*jQNXUY{S}DsHyp6osD8doHR7Lq5!jqGxg!^W&p3gK=fqsgA0tWu#on?0Pol ze#Bjp7^->=OgZo|<5H;dD0x1_KUe9qDd+bZJ+HKn=|0F-76k;&{Z~y@F`zw(h(3;!4Lo5%U zH|xBoeRZKbYvDP{)@^n1-1S>=zdFqjXtZ83ucdakB;RYZd`rZDl#h-Lt#L-a$+BV+Z-YTS~^E6eHL0y-!mos8mIu336+`VOM&+4Q2-}?IIy6{0G*eMG z{b?w85MFK1%d6=k&i-<-mxLI&*&{CB&;cf-S8|d8*!&>Zz04!!dIg)kHf}McJQ(xwIhl zZO`2YwR_DgDTPC+X#}p;D?j)7$*FKqdQ1e1T)(L0};X#rDHkG zmh-zer=sRM){d^244gfjw!*~T3FE=%K+e)Q{4Scp;*bgi4bBpy=3L#}sOA3tL&5uP z(~~<{9A0xVl#-eit872!eu5XWNS;Q@?Amx5zOYQ;rf}6--@GGqa;yP)LoyH^nyWgR z8`|4_ppFnIqMH8Af=r*7iLL6hK^re75|wsAM@L6}{mtW1mEX$^#AJ1<#~6(NX%u4Z z8^rQC0VhnS&4`HMXS!b~1ZQHGyq@i8LwR ztstBDcq}cKS=!2`?+HGz6E zzrerXJcIzI6wCU)N*(+&hZPrIS|b*NCdst9zWJ}?Xj8*nA^5gIgiHjNf5JvE&EzK^j>$uf2_tN#)**_BUIWo+; z5301Pq4=1jF@O9=iPb(gXU^2jqOVvs(eM*GLKz0BoSV5^8s9)hO!MOygfdDhh1<)P z4zrlgla7(c4Vp}#7dgGWE8B{*O?NV5pJv4`i1CS7aF}N8mrrfmj~($AvYQR?u{b!$ z8~8&TU+HybBXe;4@V;m~)$RKHYgJKee))5u?y2`pfw{B1orUf27z>n~ThdLvsir{^ zHTbGrwPu$ZLI=!hIhfmwok~5V6f{tj*6zE>YPPx2wd3T;>CVWNB<@czI|}NGN#8v;<)jxyGokN?TaTN&QEfC9w$q@)2*0U^Pbw^Dl?H#W`AFnX944H0cecEhXDNYP&6 z7)ip*NLrE5egErDT=>*64uCG;@pkp@jtk~Is#Hhw)bjbXK8~HJ#+H3QZCD@oHyBYc z$s0(yfT|q-^G&-l6+c3K2)lO2HOFG=H1!v7D->ZZHGS;>iBohWZuyRY{<(tZh~urc z|9SS226NrCV@$!XsiR`U3j52dl7q1|K`h&@{rui&1}@64Rgb$M=g{O0p@-JNu(&t=W;@R+OtBZ>67&SlRBIK0S9u@eNr@AV4+52t* zp{ZXal_;wINBEdncte0A7@0bq4XkzfCn2}Awb3rK)qaS2r0VkK`uf_Lhl`U)P_K_~ zD}Cws4?TyO%|eqcICCrhQY_%JxU@Y-GQtooc%`t*%q!R||;Pj`T+bm%^ z+gBV-JwGQijXx_JNC-hMu0SVIql<#1+73Z>)VxP2b+MBRRe4bh)`?bgNJGy%;agWX z1W!0w7SLg?1;?8HLn@W@kA%EKD=P!Pg9pyWR?D|lY1Kk(QNb1c)&`qY`^os-{ucQo zVKuec4SR9Kq?8bC_J-W->Yvk+R(B_h^vzET9A=4cnlTP`?QD-FF3*})sUkUvmLHJtYsSoi$L`VC z`elHZ%Lf+i0i7K$q0T+m4~l=n--p!gCeFkXr4}V%QF;zv3avvUDBqr?frh`u_!7ED* zgEe|udS5<|4k`8xO+NAFCs(2&&=kdFhvz_wHlM6l$=XBJlpxZW#$Gt+R; z{xxPcJ~-^ks~1wqSh~1%gNK{Mq~ofsYvrVAJ}?(~WbGPCh7?PMEs9hSv-nMx1GOE> zhvK8Ekyh3$oCITnAD+(Ir0M%u>i&(!djvE@vC>k&prBw!cegi}e&mB?w37ly4UCkX z9gDwyVu3x~C_brm>TaE*lT%t+THNRL3wKU=C;klNRl;X2R>FYnuBXWDjp~k41c1;y zq^Y$quS5U<7%wk-9bYno0ql8i%$HXguql&K<){7NlkB*d+4Xxd@~~)#b3g|~Tu~{) z$WavdsvBoMf&A{~o!(j;JsP%N6yN}-qd9luiEj6Yr{(Gh`$ma$J00+^f>c+@nsbi<9>Vs zm`a#AXp8lGuwrKNI*k4pVM*b3anvv?Btxm8S~%fuTw0l1g#iRdPgyU4G&)|!?7Vj_ zN0>8&?QGo|i~g2aEZyp-aog}Y=l8R6w#t9H-WTd;=imTjcXYtS!#_c*97q{VfpkOy zjz6#GFAyZCCDBilwtX>_jU#Xq5|sm7>*@p#xfH!YR_YLlB$|c ze}P{3C^>Xvx63M@obz>iVdx54@bKURoP?ZK123>?myTU!5J2M}KfQOYkwPyt#uVlC zry5GX@?ZPd{-i3yRbe*;fGzsA?gZXK6qo$Cl@5Bl9af^lm*-&XhnHmzV@r%n<1z2r zEH5XLPUK=Lw<0JAcB-TshC0kHiw?iv1vD6QGPT)3Zlmr_WiDk!%-GXbKA^zo2}mGq zq^Imw`?CD2b>=wz)^WH$pA5qu2%NsyEuF=9K7Qv^6nVP8UtLmU_U#ZY__WEPWX!gz zgs;-<$M&`vWEK+IlS+qn^qy(fEc^kTosx2EFotpn!Y z42HuLeKvlP^;>j)h=(;CME&`-e`8A81ElY<{sd7Bb3TNZv5qBE+Egn**t+z+?zZ)l zin{)Q3}cvlV2zYgH-n`WNXFUd0(yHK!B}&Diko#*O!o2Mx4tE6Zfzh)zOhn-4F;I& zdT07^&#fBpUxX)pxNCQ^Q_`s2i)1m)Q6{oY=^z9Ysv zfYExcpS*&)qUm~_YnsPDJ`P27yflxmh$CCrouR^ez4-dE;=`iH70Cf@85ucFbl09D zKg&Xs1Spm5&^rD8{nf|OEUz;`!=+}cvv8JY&LJ7$~3`QzJcKzo;n-S&Ym+z0W$`Q^Fw&1~#w zKUgQcuB9YX1)NR;B`ho~1XoW*s?H81NfS-^V!PR$gD@$6ci)E>f>S{E_kSq`8mz5t zEMmnE=2(3D_yg%ZqqtFn0Lp5*oY=j5nmFo^@3b8e<=hjmu>Ltmg~rt#KfbpR6&jDG zwzAT)*c}z#NTQSMTb?C1-p3Xs>ElYLKeVl?SGDIBH(Uah6HNNShHY|~zXSyuG3Gns z4_nM^1i>EL2mLLTCjUb=0wS2l_3kDM%PRE@l;a=f^FU8`hA-Ri)}D4*{BG9tR}6}J zz9B*R)Y{rw+lS>MmzDV%n}N}=A3HyOc-v&qp=+nCwl4na$$!ljSSL9O_v9K_bRpF7E)|FTe{;MHX^+co~fo z>-%+)qn041aN6w;{oX*g@Nv}rQP&VGEkJZ!#_Kf) zODN}7zibr)9ivyyPNyQ_5e2pil~(E$$g>5ch3|g;c!}WE;%hiNJwpWO7s1VJDx?~* zeu5m8=`ni+;v$EQvd*rYJnWU(!Habz+mgZwE)E_aNr<_ej_bVGY!^>0O`y{r?ZHEng7xGyU2kP3zHpAPlbQCXd_8@I`Y~p zDhir&PI&=8H|+JtCYP53u}@J!RiWst;NMPQRHuuYk-L-Czb-xe+UfyL)2#1-z@Ck0 z3xayC+1g#Ebatn?Reb>*buLt==j|a2i_`Yj1_2_lJzbOEStapA!$ zI9kNcE*oN~!*lMGGq+MjlVQS7yj6k8ogn4-lN_%rN# zg>=A*G5LhN{)9wL5T>*=aZ}x9L{-H9|(K-xK*exVtHu zC>K_+vy5%0r=(-C7kqKD&NOk8ALw>y{yMho(B`!or75A2B~0^FWe93wohEsBAtTSv z(ZwKGX2#$TO0a|tSFudpWg+#x2H|Qmw7nLg4FpV?igln0mLE_*Ffs0`8}by*O!S{w zPdS|w3M#$LQ;w6AS;^cR3CT#YV$L|D0bXA>t)9>|1g!rmGT_iTv}TCDeb5pzG`h%r zsQFC##eIKrAZzxf`g2$?W|4gS)0+k?0EwJW`yk@)<0JO$?7&Mvwe4jYOWGSL$TOQv z_$(KBtI>8v3;{M6lZ;3u#a4d*-~h(|xlPYVAFxAT9te#eK92BTi_7@twk{$F1i)r) z+q<}&GbFU}_F$-QvDwTmFTBU|t8;bPhIn6;VT-~Btj;ACmT>GX5?5lQ4gAn9Arh?2 zFaJIgQm=;DzOpj#ha?m9vt;b_r-kL{7)$aOA2Sm%Vt}(tgA-xlthkXBF6yfnjUxNC_wE6gzvx`Q=CtVE#X@7t{6A^fLsJ*WI`%>Xe zYGFbY0TWPV+c-QG4;}uw;73A^c0gWe8HK9d2Y@opQ4}O1!+x@xdIVSf=H^=M4~eRt zih;fhAk^?5)$$Qh8V7?!$o2Z?%}JxLMl97=%-hqYwaG~jXk~2qZpBVH!1IeB(-_k` zbPf3|?w!Q(mF0zn<{wA5k!fyAHa)37emg~rYpWCID6s(IKI9iHD^ zQwdU*!yGc>%)It!HC1GYfcIO9ichO9ad~BovC%tfir__b5hNlDfXJ4#GI;=%Ibx?ATFzG9tF|V zQe!p0omqUu*8XIHoHXIYS9QbIP#p9M}sY=P=c76X`Xn`e40ostuwN~40Aa30oP02{yP33cIunne8 zufv5FO!&UxNK_Sh4eUk+tH?;3_A`q9wn$y#uFPU{d(D+)ep+8i$W6ZY5}h@BTF>Ay zAJb=b?UvZ0k)wczVk$`c+igrKT+L@EFce*`txa=4S#1lBU3-6%+0X`CJw>FFiV{3( zi@D`r1v`1D`elnC&H4q@9x+&+G9sa-wX-AbYWIZ%$Z{vlp;eTP)>8)^ zu+xJTpH)6cyoD5=Q~v!g(Y80#(_l<}h*;NpK0OET`F^*{K-BCk5r;enJ}Q0)x%5=w zjTPQ!18%pj@91qMIksn&Cmegs(YU`bYs_v+WviOZ7H}DPO+swT4Q>|09{H7H<)-yo zA1e^Tlg3g(gGUFpRyODeK~O3@AfzXU=j~xLSGFp-@f=H3nimK97ugD?G1%L8|6v7K za`D9AC%^MD;peleM8lTr^)4~ls`j}3#rUut=A<~R&8wT!WkXes^s7Z##mG+_Ejb&# zFT$Rzlw;h-cC}4((jE_eF7=@>>#JU8`W@a6`fe*X&sXDndwWh``DtrQOCYnpo*vP{ zcQLV^9t`2aKaBRU$SS5AJW?;`t6J~d>JUlL@3LyzeoE>Dya7mKG7PE z$~N|ugYSoIR8T^7>u&}`(H-c<*qeM4^b^ujmzZPYr{x;^JW_ItYi2eMHUZ>fw^kde zmFl(2ny^yCos|1@1(9PX>Y;xk2-F=Oek4`C{j|~-3l|tu_-QKiUX=$`J;BD(`jwGU zUQk2z9l*7TOjjpnJ|Pi)VxBFOiKVkg zXCfBNqy57`&phKoiHU>>8y~&8>TipGU{RT#KI-$NOYAz!DwkHOM9_M6>O3%HP z+yCw-R48HH6H02W)!2Umo^W2-yBVw@N_nEcY+K7%;yzpK=sUH)_Yq8YkWfb^&!r;~ zbgq6>QrBr&+PflX>9Baw(N0vKom*YJ+>?BRY&d_jqDB%m@mX2R^6lPm{M1tUtEVOx zDG(FsKGSpi&b3uA77GjBc)A4xwdePj8x|dDWt=EA;`v%1##)67h2N#6z|sb8o|luq z!o{wwbkaI>bJ z1rv(iq5!B+1Oy^(24FQ6onh@0i=+3$k=GCaqS-v7Yh{;qRy>aH-k!eVTf>f+#R;z( zy0p>-jG^Z!#d6MZN|X0aW83Bf;Bf$B6@P9X0s%vrgJMXg&BRe(9`~#?^#1N|J}3&k zK4HvxyPvNs_du&x9v%yP3)*92OjdKYU${OZ!T{{~YzVn+UPw&x7#L4muIBa(+-Hp& zBT3X>mke3by(jaJkLA8%p1z$n?vAIuoSeN4P`*9AS64qGRN&-ktZ#6^^k3j80;dTV z<>o&3hV{35VMxW&A&JUbwL-R-J`cX_LO|D3j8$ofjLh`B-ur_&JzPKvt%0nt+$Lkq z*~%5Kq|Y7qw@X3-7Mu5XYle`8lcBMp;qh@U`K!OQnGSr|V-NpfV>l%88VXVYN8X{@ zTZ(Y{Qj|`(c3-mIQ~O>#ijj0DCL)b^UqdeG*j~P~n>!^L+?$zcPr8E2y7`>BKsuCM zXmJBT=VPe-0Sih3)74-Ji~|6_bCY*nX)8fwyiX|P@eIK41m7kma3x>>&31UMG9^6+ zrs-@!3&$_EYk_3qG@vMFGor-MCvk#MCtLgw%kY=Y5C277fOagZSnHku#`4t-%V&Mp zAzV#8Jf!Q)=N&w1V6LmHYdgs7B%Gz4&BiQ;x45VWEyAg?v>|p%IkfDy7sLqM98KY1 zWMBXoO&7{b57RRe5+3xURuGujY>(^u;HFFk!+K1obbcq23i5GcBR}Cp;)8D7Ny5UI9TsGY+N<)83Qs3 z`#mvby^KZz#4(FMkD$>K932ucFbo5MD2&4+x|V5pqgk3-T1KgbLt5M9%du3-GDnAm zBp%m8?N1mbK=@#17mrmhzms6(EoR*g>xFuz9FwqLg{gc94Bg@dB0}2hHxH7y*c7BW4+l`K*)Yh;PhnMNxazT*J*XbM7w5w)y zmS<2)&$w%Y==0S_zIV#ck~_V9t{cgBCk^Wt&eTrdZ(Y)a%bQOh?M72oQ-?L6)uV-! z)A6<2gJ17=zmf3H&nz!4FRQrh?`O6@wYIeI?xm!hLdmI*5(hUttKUbr(;HnLgH%B zkC4Zf&tM5tx;&(3aRWPZe69L86*no0Pyi92qoW(80Xbf5Houz7xI8CG4}(UUz6lqf z{&Wvwn~KOA7dSydOmcWYNTngC%{MyyFRs_oWb29oP>mSc$9JsGl=vujh~4ev#DHVq zwsSFen)j|*?`{Ma4-Y2~38@+h5DL(RxETeadd=++bz%G)SV684o@>;n-Oe#$GEreP z@N$T=CyPFet*Ji!6J{WO?HMC%t@NPAqPu~$r~Xl^D))x6n@0Kim@Z`iRG)4(>~+4ctZnl4lrXR@~-=XJi{uN?=K6M7yB!*I#fE^Sqnokon#GdJt=9ayHS)-S{l zYW7C3`PoG~RTrkib}7wXD4aLKn&PQ9ajYn4V^P|%_0vR z0RJ)d^fNid+NBwIkb?-+twZ3Ts`dh;|D^5A@WHIp*Y5m;M^@b%A`Di=rFnJUb<;bA zY5@GlbH*}-$Z?ifkcY!!FRVIlCsC6cEE!TSHY*R&`;O`*zv3RHP>2b!GwgeSTtAL- z+sRc{`(}vZuk^#DD0Q2o14OgHm50Xe8tT(@u_af*=d`zqQVS*1A!E0nErk}wt@^l| zG=C)iNr)zlVBhE97{mV4_#*^4RUYZ6_FVk=v%4*us2-u{W1^6cA* zE0Q0gAKa?RckvKf^|RkKq;fv=1{1m$?m`8f*%_R3OeFZ%=0w^ClG>_WS~lRG){Bje>4io zMmij(dVN_br9hFt)9=?W(U`x%E`5B$VhfA_O!_9e3#;doye>_21RtU{RDU>3fG9h% zV%~aoHWHOj@i>uO^(1+fG?Fq7AB!e<3I zG@UJUntI65u8LF<`yW(91$$80Ng!!~a`>F2%kbevsMc}9RD;{*8^MEUZt#f81DtqJ z6N80d)G&3@(rO$pzeN)JwLKPFBvW$n(29OU7p0PBpktWpHnwy7_}@_HaBRdigU}t& z|J#g`;S#}CG@`C!Ko5+?LwAC{kr`5Q@mMPPX((Lz6-fTS8%J3F_xN`(>Rqj)<3fzR&-B&ExZBN?Ut!{|1so>qyUFbaH;;^bb%@mOZ*aC$bF6yHZvpEnX?*-KUlA9FV%E- zoenq;-Uv7ed>fny!nHX6U~%ij*a$AMDSD&AH?=$Nn`IN1@Kp?Ot(O&}4O%Q4-=~xh zt+t}Cyg-&btRtR|_r#}EF5}p4>v*K*ErQldh279*GNli{Q0&c2BoZySjI#u-PVcu1 z{JIfJQJ73w?dALa6H@#^xFW>5R{(b}$%z^gC%Q3rDapEY!F_FKj-8NYX}R@` zyicn->(syp&XYo0848y}dH+W*D8i`r8%yk-S~X&+992NVeT~rf$R$vEldxj#X$h)w zAOX6T^bjN|MSF+dhtEP>2@ zRPx~SCe7Tw%lsIi?NPaSX;tSNV~mVeDAgJv^`TmH@EOf#z66wf3Xe1HjbEE`q+f!# zl-#JL^AQi#@`*~iW^MALJ3?vlr^1EuVhA=LxH>}<$(Ku|auKi+r~Lvt{PL@FHt^N* zvF6NsE!m5~u5Y+;&To&RDb`{R8Nd(WGf2Jy0!l@JRIB%_(EST7BB-<~aODc?*kLmk zNs22X5)$aWy*xWOKmxTJp$92yKfw(~dV{WV;=%100_){iNrnpsxEZIx7y|9yOS#SANN?diXZow2>upc{BTfZDHY7NVEI0ZecW8d zILb=Y6Xkvlr@Jj8Z=iG7SUQ~$r&2^Q#CY*WG8A=6sVrrkLWxUHR`lXN^_EStp;IuA zR&4=#BXC2q-#F53_SD~(Fb01-yrrja(k&Ysd`muHu-jpkLv zH%q0)(qx6cPluTqsxg5bk4V3$6M}nvS0o>gKm@&?xs@g-?>1TfvI)Y){`^ihbq5OG ziBm;>?Bz*T^+R7yi>R`fJI21@GSLhOcoKX$Bz)0)Q~$mSKHQR@gzHo{!Q$V^23w)pg0n^$K>BwRaO9L!Wc;n!6lKIkCMkLGz6*lTgwDU zzuyB6{DgGY>NABCUEW2+*R#Wy$J7{zVeue^Vf&TI;Fkm!XcICGz01CbbIH#Aek5oV zP=t0uCD%1vT_#E6kO*HXn)g=m*~zK z<(79E&#Gx1S|{v=rX@<($dl+)knh^+ zOHm828u`D^zB&8|nk&&bdGhPtJ#4gcxQTj`?1p0~{9fY5pdi6;szbb@(hawzCh;f< zyk1+{-&pkHQH@aZjzh;Ux$hTNzrvwF@X^GuTEQYwi>{W&*01?ak+80T>sE+?U*bzW z;QLL$Wsa(YJF`@FR2vXYrc%_Majzw7UxR@|e{?kWIFR)1@huIoP5WRpdxx=lXNN8V zqqTMv!?!-xk*oDqFSQ12vonVC2TXK0@&an*sKy@+sC@js;c-71MB$A*HVi)5#oSfc zu5kWslVD1q^3jc$3+PMuw8lOO`PI=q*2Hw#v|}P;z-jGX~$EpoR| zDe90la@skwl)o3JMDRiDd$MDb&UZJ|WgBUrC_}}eukJ;71HBS>$7}8O3 z_1fC`NQ%YQY9^>;g3e@%ESYaiURfL*6ZqQtMJd1OM^eQS?8tYv0UNm=oht6v-eKHG zwKKgfQFBr;9fF&QvpH|bv8*a{jGZDeKxFOf^{~XwO$uDn>}09F^n++ll?yaN?DC&h z>D(%8w7zn>eaG*$Q0l%7>%ds$H&JWN5!Zb~d3@bYoGQole?>z|oMvt5yGO{40X7#( zjBnnz6N=_~&1#4>ryv6`CZ86;pCYl-|N#JH`D(k-^heuXPGsIB5 zD5CskWbKHl`0)*n>AK#0w3|)yDS24rEnKAAtpe@4k5#sA!c8El-}=StN4jaO!sI2r zQQMkV^MIS(@9i6bJM+7Vm|6n3b6BzB3@uu94Hq%MGd2Go70JY5Bz9~WC{mtfup>e` z<3CsZTG=3F$?sjdrTQAH>*c>&##XC#F@=`hxL6fY(5SE_$yhP=-7)9t(!R)s+cNL+ zV^UwY$DXGH7h;m79AxiUUWw%92`=t>?*V;!0PJs;WOF-tep5~IR9}EU-x|L&V4rO3 zGU7$z9E6+1B1RmjX_XO>(*Hgh`5>E-Qzc{eCT#LY?&z;^Bu*od{zXDqrrV^MG_}ga zTf)7VAfmkUqqyR`@7gppg>zf!H2e%wYY5n%XB%wYvZW++<@T)tf{S$P&@UhXbmYt` zpOv|!-eThn-)-6n&cO-nVhubcrL(GFLU=Deijds>Mfe;8WG2F_W5L$hP_Yks5?HHD16GK zQ@N1rs28z<%y>p4NmKSA(lL0#{Jj;+rOl2mu1nUnALU}&Jw;5c|IW;1q}`|E_$o_k&YkxOPNuJzP{-0+-6%lhn1n{Cx7oYLFks1TVk?{q(ywT zfn|#|pzx*2!f+IC&p~Oa{&w_Re&;r!jLIOAfeyLt z5C;Lh)J%YadzQS4Be0beG#V{{i>$dpFU~OZ?OpvrEiS#($xkA1p`urC(G-((_oC1o z|L-s8p7nSC0p9<;`v0}%y$Ak3wDLcf`HTKTqW{|#DPx*7;2(nc-`>C$ z|G#(IhrGjY_&-{J|C;{)vFrZZw?R$<&sHDL-&ZplWa~Hy-;0*W2Pw58{rh_mc~r}L zQaZmT{8l9|D#bx%n}!#SEr)_uhhR+YSgHfq=Kg=uQmB~|3ofgEO`CvsU&hMP{?u6n zka57MjFFV6jbiQ;Jml?}C82=`5Q9Q&^JsfNDK;aT!@m3K|CcXUoq?=JhHua2BqK*Dd7bQYu#iK#lZ=Ii zS;$Id=1I#x-1*OVkK->S$vys67JMzuwdC^A;-d7Ju+fiibeJ)iw770wx^oR0p($*2 zmhdjC6E*}i6Ha7a2!MDI#oulSTHA`EP$ei6aPLJ)AQ&tejM=Z%I6#PQW!}pCzwghP zL?8-V>*n<|lK6%_r$?Ib10W_kivLJ(qjN&$=QaBYQJM)*g?GcaeR1foOU-Bg3^7u} z5KIE}e?__gk@Gf^(|;&$5MmsHsR{T^sY9rnM!`N3xwbgyw2B%ojLXl#H;_hCg6bMoR z4enCh-6`(w-Vz|V6}M8nSc7}9;O_eJ-FNT%eeeDCl8litNXR*7@3r@uYp%K0!82jB zQY@oEq#V{zPcU)wjmctaVVvRreNIe?e^p}5vbG`0x`_1k6dV&ysiCRgfKXNN(C2&| zdJPx5Z3k%-NMSmz#W1`Mki|SD|68c}^&BZc^5Y9yR3X5A{#H>6K5`C{XtGR^kQ69> zS0hrN4nU(=1lv9F^j442u+#s#dJOM|=~bQmA;f#s$wHA`NKQx|M_NOanx`=OumOsR z1M7R>516#UQuLZeF$_Rdd}$_zL^$EwA!6C>w~8y62=yV43|ajvVQ6?Vl!gE>F*`=j z?;3}1k`)v8E28J)22N#U(HA{Ut=0Ev?-mmr{qKx=jL38TppNTAH1N{?;==hvJT41i z-X;0(X$_gMijhLz|0^kR8K3?vl2H_6BjI))jCLN*-vD>b?|D(2Q`;|&;iJ+}x?5G0 znQR^&`x@mb1P=V&y)y9{dW^HxmOAMrP|s;YujbsqFtJ3%F{(b|Y-`C8E(gFN$`ae& z$w@AB5~eClc!d?JlHI$W<1p85cRZjO#WtQTURglX^;h;=VSWxg4@FHeIvUGW-@(di zWPGG?e(F&4+OwmxSm_lMnsk!fYLzw3-^fuy|4vkt(TQM4l{=Zi7FRlAU}L$~#(@SO zU(V^SVJH;smYW&<6LD{rdovVKhePseo0Rm`Tc9ZcvfCxDZqu<&>*jjSK}EX`?>V-613V0__e zngpmw05V>rk6`fiy^Um+i1|8#|NZL6!cd%o5O-L7e?L?47=h*b_dz&`3GWcoB1W)@ z@7}j#GK#DJ?A+PTUDp&;&!)i87aAT_s3z5sE>t}0)a*Le;e;k4$l(mt76x_s4Y+l zus|9rscITyZf=2dxZwxI+_kb^zM2}rFf_~+bdy#!RjT=Rzuoop!*LJwN&<< z7GvVGZklQY{tn)myX1(II-nrM!tA@7D_MVcWIL1o?72&Q*IDu6@=*gqcrxB~Vl5AD zQq~m07;9O!Z`&W!ZGUrY8sPsF-4tN)&^*aMu-_`af_83E2L01?3F>vhr0ob=qmO^I z8|tgCZZ+{T%iJMD)Dn)z>EAiyoa1do0Ub#Bx`j-i)!-ej}C+zsH7a;;y2mN;gl28DmC9Mg>N9Jo7=f zSkfO&K_fv>dJvB4sy+@51@^}q z(IK)dZe2HL`*w%=P$*Zw?^Ach>*UXREn$OwZ%!;#K|zqaA`lsDCtqH1ogw{>z+Y`p!@cxqBqr-iAZqYFN=KlbEd zS5H~-KWtYIoki#{T)2okAM0nqpHsxIpXYs!xkTgkRW5S&I-Q(V$Z)s@gN%a7N7~j8KaCn?Cko4JtTlyU8-`8)kMKZFh|27%>{xOi|Jw7UC;Gi*j zM&QtC|54SoyoV;ZMAQSFmxd{K^*XT`*3`N;b(<>!zi63Wz83%UXX?ae_33VHZKBHK zde!r>QCT^bplIEu`dG-n4lWq5A*z{bwJ3CG0Rq7sj+Q#0Z8lp`Tj~yJ<{ceA2py$^ z(%W^pZ(qnP#NMEEZ-?Dg`|h59wG6-R3h+GKJKD;na;C|DEhDvCjQdrJ1|Jg@Iq09a z=wKIiquti0*lItoPqNy4G+JS`$Ay+E$4loe0e8t+aWg+{-H&BdC2wL^Z{r=rhg}8a zr!7wlxI_4Swtz=*y{3Zpc4&aGInk7P!Hln1*H_HSy+uPMma)SrZ)PV}!cutIVvXtg zEu0~Jg)C+B9!a#wrWvd{^}_Wm#RL3&N-K%sm?$6%max(EpbBX% z)v@74v{qGWbsoemI{fG|LL^W4Re(T7LMPeMii+mLGzwf;O%vOE)0%m`aGRPr8KlZ4 zBH`n&g8}O;Y&82*R}u5{^8SH=mX6TzXTqX>e@#`xwB&V6rU!%Oj8Qj@W?GO^aovZe}tZHr5(d__m@$yo{4-iE*KYnqPHH+Cg zzm@L!Sdx4-A=m5caqMF`hGVwDCqt*{cM~^cBbWPDL}wRm zc@1JBKD#wxNkvqS<{j_y`mNqSJ%SCLyed>IW0r5rQ~@S-cDPM!{bX>l^br&zkwYL6 z085S@vi~Ctap(g@l@#vJpAw&jIsL}`djri+XJ)odYRRH^vmm>z?z_dLm0Gp!wPisr zaf5*7WfId0Ej}{SR=lkK^;0q#Hey^D*Pq=6zkB%2=2VyD%?m8Y1+%OSG1 zha~p$&+Z62omp%{G=A`aQ#BznY1Ubv!MY$_UD(vr+`m{8jWk z(R)O50_iZy_YCJAXR8NxIuU{5Gp?6K*jF z!HSos!(Kmnas~#!=;gIwsj|TYsA*@8ZJ%u|ecTzed>-*~)7mZ0U8^EJkm z#$-9?QLcCS&xZrYhoUF7`_)@H`Fp~CH-nQfOLS{!`AmgD%T|$cgb**U58{vC22{-I zZf9m7BOLSUApMTRSV7hN-SI7~c*)b>0}fp;kUYBDJT}4_Z9Z2oT=nbrnba0`9%-mL zaDcVyAwIDFOOjm;#%xjN&AC&e5=O?7Z1R0Ud#%}yy8WHn4Tr9J4>#~4XuPw={}9Tq zD{#E}?9cY5y1Y_>as8cYt^^`+dosu*v((_U-0EiYr)+BCWbhmzmN$M}*xlV-S?RpH zYmMeyn5wePtuM5)U2dJ;HT$!oJSdEVBUBBNGW+(;)Zt*xYnD`kBDyauTz+NIV-2`! z1OoZV``n)g#v%r0vp|GrI;5~Fnfga_+YNxN@mKh?7#id zKW{?v4{V)AaW4H0(@pw5o4eqq$IF)x^sp9l%_cz)`(;8UhDX5-c78HnSHDXXd5bX| z%Y>datt$)%oPhH^3noXv1ev`g-&1~Pz`;d@+vQAJfH)sQb)kxbGfKBE*~N=kpjXf7 z>37<8ccGn2$B#Rks_uEQeRGj{k*lruH(b`U1~U)ds@veFr-}J8lU>D>#}7YGW9~ov zyt^a+JXh|i*DtBWT`y3%ez;uwT#KK~{n|8>lWVOl>{lMpyJSA{&Goa(ZKuiQo5E*g8$d;<(^euAD1Lf@tt$Bp%UgkE z^{eCy*FTQx&+AE~j~{z`tRlQi&GQ<8_$!~o*rt5n?a;!%1m@Q{S4S&;9?$o^kCx#S zzh-XelI0{n8Mpg?N%~?Z;v~kYnOdiOtS>|#LgaA9mMW#cqyHn zz3&nS@)v(Rjv8?%y4VZD{+55P)NAtYyAoV||LbpJBDLg2a?^_c^*Vbt4(y?)a4 zBiE~FDiP<4`)dgeU2xM@Q7p!ar1QAnOG}rQwC!zI7An|foH^BynX|L^_B?45E^aIU zE+3cYd(}6)GIz@XGYOB&eK_q^y}HQx!S-~u*wz&={xz)+k+}Oik+^ZabbWI3OV(V@ z+)g>xn2ddN)UDACXMV*GV^z}g7f)r`Ze~E&bK;?>JO9+|>$JvG!DOb)|BE&<{oCrP$p?Vedd7!W>ZG zpUurR5sQ!QRXRPQ+%fCwd`770xq)q@4&TVt^`RK-0aQ^z{&|lPFLu3dgV@+KxPFrw zErs&cT|_WDR-#d&(&E5Jeo(pA@5xuaF@!z8c;wA5DHIa z-|f0>bSu~Sqp5JnNp!FnaOckrmX)0#5b`3=l5E!lcJm@f{yE@Rc{XFTW9 zc{rHazUrTX#tlE6`f5tES}M&CaereWP};!+aO+oBAw;BX*Rdgh0;`2d(|7*xF2C72 z&qB5KE9i*-rLLjon?ckoaYGy@BcqeSTF~mlFllw`nKO(JQEulqppruvAHgG7p?i5d z?hpL|vDh!x^?z=Aw(<2fSzh1=+jeaBfmfSdN47_^1#ocVapGfUrZwEyk1HxFzS!9- zLXtkI)2(k_@X7-G>-e&li_e`niXQ1{0R)ZViSWqa@Gg4o{OSiYY3^l9!RX3%a^2EPrq>-7xT| z=38vW`N4)gWFy;W`EBP!`!iL-u-WHcpCifT+5FM1q{x%-RTn&NeFy8(fQ>o(Uaspy zNl$mr3(4pHCJKsu!~v9n!1j|rHv6-cuc`AhGP35qcl%OPNvIC(GJz0CD|GiyG-6Yq z8>qCY?ks}xi1Udhef&ixBV|TjUIlGFkJANL>UeFp* zo&p&N1U@Z3N)DOTEwh648myMV=Ts#sp(Dx0=eAvU{Vo5lYAcb%89hMhM> z%6%qI*52NW*=;}c8YZj227Z0!P0QYmY=OMUcuY7 z8lH9?o@BSk6Q?!a;@1WkowTI?2snZ@1w7T~H?Vcu-Dh8mUkJ&d11LS^ST1)(?RDEA z_k)u}&#Q)h4xXMj>(K)Kn`cV-{zs{9Hm%jqJDO@MywC(=u{ZU0soXR3lXsb_D=QOf z*VoU!9s$p5R87mxh=pcuem76*FCv1YXDi0C??%JnlDhbACSI z*D=Ib@ualuhC}@h$BHFMwI-8_j19_myHq80MD=~Cx%`#cQ2$#W49;Uk!$!77FHJi+ zbyjj0jV+cVKIzY3P4#ev7XAMMKN(jaquRZFgt-P_gv@!ETUCuVX zSJ84W(jwjo!R2~SmVzx$=Yax=5jHXNK5bAa6lWfx_2rpAuw`sAe$8 zeupvk`8%vd&mVz5HT9_iE}NdG8Y}z|W6_VhzkZrwrIXgz(x(jD>>S{AGRRbUN9fec zMK~lY$6}>JNst`*3-M_4xyHqfkBe1(OT>-8m}0BIHj=VV4iT1+m{c=d>?kT%W8&&h z^KiYm%pJ9;Z>^$$Xs@bSHrXO-hP=f}^&$pL44?nNH%^=NjidTZd%}lw)A%L0hsboN zmo=G)gU%7?P*#lbSfm14QCeL+0>|c`){NmE3v#Jpi$>9cm}hMx8+cl;^6Gv{6u{vn zQ2h>5(1+plPLS2dzRl;{biUnqr;58Qhz#JZ&nz;=iH$=*G&5s?VD*hgU~>gKU7XVSk&y?Ll9*u^%zwJ~s-2n*_m){B#AGoMQKe&kyUIOOth8 z?D764Q|n)4M8;++O2cltAFHoAd`zyMJL^9SX%=qnRrJ-&- z|EXZQjDT!E^{dXLOgB_FQt#0MBXF2^30S6c$*?7q-mkt9j2c_Vl z-*44K>`mJ?G~ShCUuYWUv#xPWG~O=8Cw7O}5vt3|uu`F&Rg8%d*B3bgQGFUb#@Yq@ z-VVpR^YcKEj2~U1n!O?j9mQx6P^g9w{)K%mRO2gJQHwN^JjX^6pO0T}%2$p9V1CJB zq(fdu)Epi^P0C~oR&?AASK`cLb3SUM%?ZKx_EG5@cEsN5!5W5!%7{u-9Om15yiUB# z?-t6d5tAQ?I3#cuG-P%?Owx5r-Q{*OSc`~aR+d^UuUAl3Z@0k9^7p3ITv3vIv6y$UC9JxSws2$ar@kqmGKR>Q4k193Z#@z>L#-Bz4 zV8lgG2v#T+C;c#Xd}FQoMKW0;pL3y=Upd(&&i;B*3g6)-M{?qa!jWd`4Pg&orRK6e z!aK-GDZ`E)hy?_u?(k3-9A6wisR|CvX5H(hU)s?fEE(-bVTAWmQtu3sV#qnP-r(_Qci^n*xdk4#T#gva)8 zoZjf?KW>U&OWt+UtNK2Ti6#wgB4EiI&zs2D{m+%!^}|&)A#qyzpblT{#j&RA6$Irs zJ*~OuaX?A_+7LlO89~~K9GYw! zfq}PrM~^ZC0(M$Hi|m3stt+#$)t~M8VwJ~#M~r%m`MH;as~1{)R@)G-y{JlF-j?et zYHK@tXjxfa?r14*be+o4LA#5A9@!F0pRgs4=z>mqW0Tm~4e$PpJ4Kk&+FGHW#6#_u zGcj2{cGi4OVl1?Ky9{ip?{hgN>Sbx$Ve|90V0fLY+}&WJDZ-TRr{39X&q@6&a%76l z?`gt!9@|JIX?h%TkbGW!I=iqruDJiLEM9%Q=X2eC*>#_LccfCUcGv2`{fUn)LjX5f zP@`XXG$O`m68kJj+S&mnW>0@%;TK89GL+s`;X_T*>sqH6x@ z8n*MD(>#jmuGUtlM(9zJ5=T~6rr%?1Zr43Vz=9fBRDiqD+3TLu_ih6L;9kK)O}MiW zeQZ=AR+sTAh`J|zO|QpB@YZ>#L6sv!?Nqi<2wP2WF~; zYQMLz0Y+KdWrYgwUyj4Exy2zzI(0&veuOP|-HmdhbZ<^oSY_m#`~DNXvDcnjSu=w8V$672ym}V|-H%jClG4nnB&S7_ zhvq5y`S~k#8y_5=|Au=k`NQNny1uJ1?X+5CY!{OnB6yiodFp_t?tA%gd3j}6`)wE^ zJhO(BSl-E(08a;nd$}wu>i6vOC_M|caxzEnGPZIo>u-Gv0f02~H*a!k*vea4cE?m# zt}f0wpL?EfMi9!m*48YupI#h3wOYTooM{+&gvD*h7~$=ZR%cl2^my0BLJ$2w*X?v0 zw7lFm9>PN2kGPuR6)$TY81L)sRXq+vCStpJEVS7WAS@?u2+_l>_+S3uqWAZ{s{n8RmOh47RXvHZ14zV?1y6y^d28^H8xDm%k#sd$QlxjS>vV7|v$_!6`PIO2ZbQYM3M-8iknP z`EQ--I5;MfO;W_Rrl!m#FzD~^IW35(wz8?F?-w3PA+F^qjd`7XS@gD5(Zw0P$r&AC z0g#xt$@-KUq(h*yuH4p|^k6Q2`NVGobTF8&> zLyxNm*TwABr~dRbPDA&Dxznhqs2?-0^k?hm4N6;VOKw&xaM~RZ06w+5%P5R zW`rT&-=C$ar6p8AOf5*fBUHNZ8>08NiqqIYe?JELc$HpldtKchzR_9)`BYY>#r9cO z_q-$E;XR`14H(gNt_&nzU!OU)HPYNSesQU(`T0jt{oI`M%*@Q`a};leS&<59`T`$Y_bAH-bNFsHiAc?dTYM`edB3z1EF*&WDAC zA+lWJ9VM?#b4Nr>S|x<}{UFr=U%m*XD!Oy%&Mf^QhBanp&L@|6FY4%$lkX|RD8)qi zczNrK%2^X57VB%+_JONX0@>OfP~D?#nO{JGMTCdjzk?p7(trEr=ZBIlP&J$Jndz1M z2l@I;+g3VpZthzI(Xx|9A?dw8DwwmkI|@HT3~8-ag&Gs3q<`IyACQ)oOm50IZ(fs$ z=`s-uI4mS67Hb#|knQhNXXIq)b^2<{$)Uk13FPGm!o$OLb+Y#NtmCOA%l38PXDVTH zFrQW}wtvO~wj0z_PqaZ~cUZ|kJ&lNcPY%=^#&>;d=a!b{CTBiVbPnMi-2P}3ct?0z zivDkx7=%dhkzn;z`)$nn`>tLikq=8)UGR1}&dR)8^5Jlx&G{CH28b9;pn#ZXlv)92 zn;&iATx@bk*Z?va)Ec3t{DNQj!WcdS;Sk!UZs)wv5INW%{`*5mBkgYC)w_YV>f?`( ze>oAjI6^yTAE%}75JQezHrb_jlY7}80DAlNRruc9D!UmwBw_fsZyWXVOF4}n#%}i) zR}X}j9kRBesUr>#bMl9F%$@N2Iftwb#Em|-Mhz{)!#vs>%gYL%5QO0Q?L$2E-O#V8 zi`lM+P&}vdvh!a|vi%cvjVMNvn}bKAM>Cy6lN|doadCF5wdWegnMChYpBI`s+l_m5 zU^t1t>JWSxpK`q<_NxqWdLJ5Dc#z_}p8a*(F(L-@J!rK_io6Mukv|GJIn{M|*m)=E zRPI-0OU+O(&Bv=u)SWnE?~wmR^1U9*fCR?^3LOnkzR4#kwZB-^0$ez~N7}=TeBEyP zAUJDdPy`Nw+bSTZMCqY)Qu{UUYXsbYmRLPQ+E6ZYfEw(ab-u<37q{7#+di~0JU z0g^m!St+F*+&+|+19H6=9*SuH;thmIbN1OoV*bVo>a|&I?47Nin`?iT@e_}R-le>_ z7paw{&T&abp^F{}bdeZHPEFq&(z3RSbm2;k)@`vI?mSnp#9X@1YEG#d$m|n7cW1ay zWT-?C>bX62%j^o1fmxWXGW@xmzDoAiiuf5RlHvzAZ z_N>bt+HUV=W-JVIgI%iZDM2eK;>BnVlco11&Zk-;aBE)g5iM+Gv|P8Nl^W=6nU zqR2hyFoJCDeCl5eB%8ftr4m+t@s5^_9h0_H!wM`dL* zz%6hPnx}v-U7V4KRn0(yVW^?sgtxd;!`H(l7Q`+J42@u@fzaWo{=2My#y1mgxCKbv z-He^pzf7!5&kEZWoxM;y&Ya5mhH)r-P=62f(0;;ZPxyDBOK@u3aWt&Eom_I=#pTNr z7kx7EI{I9e?J1o!z@+n?%GOOHt*L~=IV-7;3b5bpM{5UNVSOlf2qqQ(@aWetZa%*C z#pVX$n(G5fNhfP}fnKt5hf>{{6?6u{k`!18guBhiO4}k*+44LXVnt8?4T0R15qU^Z z?#Kdccgn;~MN4*$qzJM8d+ERBoM-JptG068YtO#Es?>8F)78x;bXo|K`%k2W-4lLE zdn8h~r=_kNvqu6TZg$gj8$niy*{>mI zEB2Z`Y@3o`wo2PPATT0U;QSDFa@43zi~tmdhKMBJOG?0DtT%O5@ZdPffwZQ)PqsJx zUU;cD8iIbE-61&s&$d&e=BtIRMZO+2e8<8rU`jmKGM&J-rois54~s&}$)2jEi-URj z#|g@!8|TR|grfW+YtX36Xg0_jHFIux@G3P>C~eBtA9Oq>Z<}CXV3TIJK#`@(Oc;m0 z`#;JB)Stemv?~NPkk;MSu&obMU*|_qFt~)f3Z1-cM9waai))JvqHRdEF2Bm?#(qw9 z9o7t$cJlTPyLv@{NsW0R-wyr`+vwe&5n&3 zjj{EsRcejKh_C%d%E<=oKMWBOR$NRB{h#fZ$bTQ+w=>?p>&ofdWpIZD6FrX)?QGtt{>gB=&d|(NeV|u z-6RCl_M33)m%t7FWA;Dk)-1mV{>!ZXncN%gzVQ3kTK}2ne+Dlk-%AZC`d`C{_}KCN zSFHc{YuMx(-G~wT_dn}R6d=F)&oKS-;oo3%lA8bPOZb?ie5L>InKT!?|M#}{kM;jV z!(}o0&jtJ!m&)m@X45m((+*R~SQzkyItJKBV*wWE)?%RM$AlrHr%s z^KzImh?Q11fr|6~r&=iV{Y~>N&lXVX6rX_+4-b^Y&1?`Mic9?|mlIAYMOG(N#Uzd8 z5Re26dPkY^YK}8ro2!u0gNnFKb zUrH#W*s;)$Kb#_|QFbKl{>li;7mJ_>I$~`PE)bG}OBoq6DY|Rg=zc2AW?{vWH&VSs#6gg*DRQb9IEQ`7Eb9^eNQ;KWLJ6oz$y)O+# zbYC0@@PhKW#2+FB5_)Osv|K1w`TN zwl&J_on~+u&#TlTMW?9Y6ey;-T&js;CRG>@1H%O_p(_p2F*vC#;k)$S%aHY7TC^+6 zFxu z>i{abW_y{*@DrW)eNhhd8OUlxw0*0Njj@(N7@r~ID9uz08zO(F9dabx{i6Apd?$pK zVYcd9B*|t&BPlE;E+p@O8nR@KBaV=E13pK7f}bhr6)hP_KS)PYM6+wQUI4lYUc;A^ zZHcM31Z6luJ2)uAWa{A(kYD+VrBROblRzZYKc6pg@CE~2RIA=_eeW(XFn$OaMlw?` z^i4|~i8Nix{}d5)FtHZ*W(Fb#Nr-0sz~H;cF-0ZYk0__Q|B#d$618bLoa}eA*m6gp zkm^(A+=#a4?3hN3E|VHw##MP&dcnJ8tPMn!LzB{p!}aqP0I?CXjUX>-Bl=sWt;2d^ zA>G1FsxB^Qn*~BnvTKxwc)v_OjIlG94)_H7q#aNLa&uM{q7NCihu8Ax^a04oI(ke) zEmD|6C|g)(3zbl|NwtO=1!>t4o=~ncKD;=czJsO2rGRGEjMAS>8-cmn5&dI8s{2}Y z1#6TX7zuSKU1C!_mO=MAB>{fsMA-={Wv&|%=24^sM2fsr-p3v^L>$;2=oEr$tjPaT z_hS#MBc5~+t!c}pq$H@jB{V{1^b>6~w*>{S5cwzi&^Bka3VDU>*$`CF&mVn2cG|B* zyuVPz-C5&4s)#Gi45UO{19MniII@jPEL$km#78Z#@Y_ce$E2ZXOLCi@EM~wHOly~U zb{UHn>EN8KQe-B0;aPe~UihB20Yu0&t2c$u(qn#jUp(QR6K!E7U5N-|3^_qd9|=Ud zJ)BQ2WeN&@Uj@4AlS;{1K!@=3<(U8M69FwJ<$J6xRqZQ$ns|)I79qx9dcNXdt;R+U zi@}yOy|&Y)?BnZj?;$xpv{a0xj5w-z4Wm3Rd22JALyS?%!!VOl?znh^3VLI``Rm|f z*=?%IXvqbaF$>!VlZW9lOq!gjFJ*iq63u`S6tu=9N?-%r>#?KBM0UjLG^qocD;7fd zKv!sa@GP0D$cQwCOu`?u+XI_fgd&Z0i&$J+z~NXwC~kosh{eO*C-aDjm3Y%hwn1Mc zq9K?S7&L%X3RHma8Wb=ATU@`cGi)V1@o#CSHy9KuoMx7}uTRI~YnHB#ryTTOhOm?^ zeM&dic4ntdUT`rj?hEqDTwglW=H?oBns#JdVtm+wYSLj-+ zEuy1HUiXg_dc=E3%7;Rr!fCNvVXhO)``J?#BuGxpo&d@jthAh7zdFOxLx%^4p~v7cP@6{-t4vfsihrOdTabPjpEE# zA$0%CFDzVrnw8=LA?j!s{GQ3WCApo)<%meV_sxDB+iTo7UT&3hgn=HFp21-^{pTpr z;mjJqWz+CD6tgedX$dGfNOri6)F2g%&hNq87U8z4>V-U8B2x3&E;+Qpgd%$HSy)ACZ#vob9BABhZ+0?sB(%Uqvp+H9ATh zm5(d-f?`lZnZ-~u#{0k*OLCk)x&>Spnrs7MtHbVityh+DGG|<9Dr0-rzZ=CfOSLH{ zPSt+W-u)3`xCQxkJyx2rB;W^btR?EE;aDAAh>OuJC_sOvNYXJgGb@IAj*5mbGmzg_ z490dBwI~Porj_J2anMh%8xOl^9$?z3!Ul-xhJy=d!4$fB=+Xz$|f z$IkCR`BAD-HqX+zGJSlc181Q~&Dpv>4@r7&4IpNhGv-lkL+xDT1otU{qynwYPiZqG zW{Q~*@GX`$LxyvmXxP$vj!W3@`I`bLc6XX=Kl&~gKx_yHTZu)_nK)ZB19?#p;Xf~` zXv9);UwkC3VDwL7<_?B(j9Xt;GhY{E^DdMWnD(>9Fc-5P#VfvvPO7^PZkt8&R+jTN z!KaNMc^JdfJ!_TwXd+57meJo5+P$gDrpF>ulg7Yp58ZtH%=TXMV}FYoi^j_<+sDNp zOH_h&@~U_2diG=>W9#b**ZX9+y1?4UWiPMHGZ%OpAn~v{o%xivY%e$@jNK6mH_}e~ zNz7uaWm3s4I_k2X_;yWMuQ8X2=Gmr>^~so2(K+`{PVDblWglvt1f!c^IW=uIex+$z%+wdNCkHd0$^kgj6(z;A_&NyP91T@l? zW7;U@HkmgW8H)MvuRGBgnS?4|Q7m^1-h2N3iGO61hx`jPw@dd}l9${AO{Dr`%)PbR>r6o=~7Xt?Ac={z%GgBrbx&cW(3T zTOQ#b&vLp=W1Y9jD#%DAeCs>ZEh|SUR9D`Q%uWF1+o0GmduM>NnY{yW;zcL zCF;I4TTcOiXkMjemoj^iVL~)WZr>3kDai4lvDB}S6!%MqGCP8!4|2XGO|@DEdD9H0 z$V)ji8b;DT2@BUM+s_i_B1f=Ioc-c5j}6uvWyl~LRIH$ZU*IUxOVCo2v>yo5Qc>0(|FKlTK**=i=BNFk!LukM)sTh;>6-CCEp9&V1uzX8 zjem?2N}eK4_1#iy_llJk>CkPUCM2_tp-`U)P{iofugKiPdPv`Hy|m za6}?-ULmwM`Z%j6StA9p(jA3B!-}5-eC4DoYHg(`n2PuuG<{nJPl< z{{n;N+;)Je-?aEU@s>I|b~rFand>v1-$B`gPuOb#p!bb8eJ&}~KU0=YNk1xW_FtZ` zlCI+atPU}#l-*Z8-DCkpeW%5nSczK46H^^**#~b$6luD2hl!$38V8)v8m+v8E!ELs@Rq2X z3Sve>d@T(9z?!Mv2qui9+4+n@0-^K9S3JLyb*%px!K&VrSuNv6g_cS9^pUIBm!dZ0 zy{92qhyUxRGoM+dFz!C21QemJVjo_>JF#Zn2sNHiK;BvVk_j!5xw*1e!&~P^u5(a_ zSpgC}g6y}TAF!~^#*ZK)Ngf$Bq(Z(+7vx(J^LqVgML5Ix7q%`4r>9PeJ$erGBNKTx zR|q+9{F`?s)|i|~cSMCW7F`MDADj-K@^(d+Oy>F#tinXE2a)3Oe2Xw;BB#`Arb1wP%lQ?2= z>pLfCnH&z-xqi9lS|pR&tMNr0X`K+TDGl$=4f1>eX*ZoCrg_Q3P(;yu^j2&dE}bdC zNi6qS;|?w=SK&7R*D(gZ;8%i#NP^k4na$_xji3%!XaxoDz;F_RN@Ru5qSEeGNBwf| z)vBhdN+Bs#-y~U#B&;K^g768Q7j0+2;$L;@#kf4h7L_Vsz{>LI)%;P%+z*?-=G>v` zif?WrrQHHeA{XZK&pk3)hUY@?YcDj)&+$+T^my99ngoT4?t&PgxOk0@#?^Odvnf8p z6hSREa z+dnstPNlL~JL2VS%hoaTIqptN^>_6)1@_|2czm&V+LHp=Xa>v5zTUOJjZmx{NooIx zgI!e!Eb~6GGRTdaN)m_B)UyNwLx(p6(7DY4N-Jb!j!X=98kx9Z>ZxUGQ_>7LqRXkY zb5fcS4zBV(29W0Kih{FGn}R#~ptZxdrFJbw9l-Y=Uy+CjnglDdY>VU;oFINa*)9Ej z4My!uFwhIkM!FJHj>N2p&Ji%G7IwmamAEyTJ&Q8v(=L-i_%wBy1K8uxd&3@B^sZV= zv4FKlV~`jXgg*nJ9Ff1!>yY(w9+FOAF3x(lJx#%L8WTG%zp?Ae$Ivs)q2jRg#@dY*f$mDnJbz#McA^ z4Wu1S6YX+R;aBFQcE!ZBs#vWRMJ1cC9H!G~t;7NXc4bKn+W1}y$7hd3V$~<8QaDFXvj>oliWwq+F^;+(78bFI) zP}PWtFY?_@8PdwueZXBy{D5`jzVQ_KPldbrMxtbTz9v4dI|y3n2@MS(is9~W|I+ZX z5D!1s(2y8|j7LD^CV!XxoQ zrh-B$$BgXfefO{j34bRomz=bI_&cgo(ftV8TYrJ;<1a||#fl;%tCMNrBxA!j^DJt2 zL|$g`rc$yYdCgL{l?f93{YK&*`5pQJubzbikT46|>a`g3D$+UGoeU%)%m6ymBgml7 zBz*R0B;ikxZ7!A@W2_^}L`KhCKeFR%_l0z~RrreE=TvwvX&a3((FEHH)w_7777$?% zGvC+BL?6`hfjVntz_JsDsRo~2r1dXXP9KBxV+_+aE_q0J_6N;LjG!T#(c>CgSa|Ot z53(WLTi4(xpO0`Q$|zSKmF1D3VVp#ju&keLoYvloJ(TxS%IlXAEtSfPreP+jgH0caQ>5a z>1khbD5|t(0`s$3rE_vr0as^=IuBYN@Z%$6dwz*Hfdyj-8EfRUyKwE?mTNz&{~ zaUx8cT_r$weZ?V`O_MmU@MVY z7MfRQlry3g&15O8&;B_(pP9&R<*yN<+B-)4ZZM^1D74-W6jc!Tyj? z=H(>r07;vQWaoRtKD1P*tyy~cGlNC6fQzgY5?2qT0T&4a=1PycI^N(Afd_;^YpCg+m&-FSV~S=;YNL3BNl z&UZ9z5sM$RJa|$8!Ac{^&F|#_hLOw;Vjnw}V)zpoM9;z&+wG`2QA4=jvvsbsbSkFk z3=Zov6xrAru|%G?!G;Sqw1Y4XobiX^?dE^KbZa#`r`s%YEMs z{Epp~j3xvgQ^}hW{PZeGt%xh6oHmQv$1n#UOjCj-W*Go~#~+R>tU`@4@p+SxuTxPe zXY3k{{AC(ibT)>A!h=-T%Akt+t=Q;3{IWC{!L1Dwzb+^%`~jP5Vd|3u=;{RfwS2ah zrZ);H=Yd&rtW4SxT!gZlJr%kMT1Tmus!F@nHFsh=baWrI%jtHiovtjzp``6Q;hF$J zMUnVkJh7jIqS`t6?y6n1V25OewZwxXfU2IA_5&OKkbDvQFzS2D-Olh~6)}9QE}p06 zmyh^$h{|GIW0CZFTkLXH8`&}uW!T0I=sVzSq4%*U2-rHo799X>#_Yp-qr$uRV#TJw z*2bIw-}doz;W?4-R0&kfSOvb=6Ylf{pny4cWMu>KhqqFaSrhL*_vdQc#!KI*U#O)j zHe>RCQZ?lZevcWyQ6(XPpW`N~XpV>~U*=qd<|9y8^!d}Pb_O=vkM13fLX=G@6>(E7 zh;5jze!`d|gYid{0ma|RhS>6oqKz3#qF-zAdUNH%&RWp%MPZ|!uon-hJW9qAJY>M& zJeRGE1OkF>4b_oWtTAv14FLEI3ADdAJJveL#*mcLZ`%zir&0{CQo*|#Jf&rozrkgf z!KUd!_joE22@C=A=i(wrqP{t36qiEn%brqZbT}b#bX3qSip4+Z>=v?<7QC=RkO?^` z+D8;%-jL}i-B7fU2t~hF`}NDQyTqK0wcv;&JBn_3kaDM2C5)!ovB`>I4;z4k?e7Qq zXhqPU2@2(LDw}A!OsE7*(>uwDB{L^DMUZr#p11fW64;H=P>494>18Km%7(uaD^7p6 z{zrq4>9-BVdR=bSI@k6vE_fiXoIJ7ec_pz7OwM0_}L6y-I$)Z9i*0Fn^7oQjd@44fd7~88! zVdg8XLNgP#bOB}g$FOVFRC<>(_XkM@xbj*u@u2XrJ@G3wGUbb!82aR4l^u-e?6r_S zoMaJYrwBrR=**&eLP1E>D-Nzgh_Jht#h-LKaj>gXrU0FCTVf|R$Vcnu>gNE$LDehB zD>$np9r_&`ER~Sn2$x-}Hy(MlnB!JonEmLRUG^36Qze56*oKaTgo+e7I$m+$$8)f& z(DT$JWvK)`e0$G8cm&!V#2ZMeW~M0ivlqC9;Hy}KE2?@#qZ`O1FjEzyr>2khEyJr# z)G&c}SG$#>zz2atc-PvdDpbt8B8s}rcz2fa?mJDI$qf*6)w@QB>X->Qesm_lBrORf z>tFpK)xcSwC%dIRx8-Gma-O_9v6Qn#Vx}{8EjsglyJ+mCa)y9x1WYiZf*Nz{udlm9 zIBVU>W;?lIR?Q~L0mG{h4JKIIFJS?-nFw*FKH%$h$>v`@g>F~4NPu;Qao(e~0`)3SwD90w1ss@AE z>in3j+9a5O5-5z~O5Oh=eZ;-H>zD1v6iqy*jQOU(UVWLw-8>M+D+)zIWQYBLbxzQv z(omj{BFyq9GPGq!OS@aM zwBDHg>3&g`xmXpUUA)Wu8!p#CYK8N0nw_GiUfRUFY|U@D9dr7Mai5KX+3_t+JF(K8 zRLP39Zm&=h0}n9E5A_kUKs3opgvE<(S4Un#$h~3w`9V2eZ*Cif%OUt}zonS;ByPTR+ev;M2o75xO(css)#Pc)ehxO?$wDc&>B$X-1Ab!-bCYi+jB=s67#Wg7Qjp{2+1NI`6n+}!A;_tcVD!B+5lC)u6?_s|*bdlx z#^bH&h3}}DLT_;$k>VmKPCqj+O!``6)pzjX?=if$QAtxWav0A&`MbfcV^svs)^iw} z)N4bz#n|R}g`@pg@TTcTcAuI*g{d7m3!LxH8d^N@U1zL>DT5(C3j(bRpGtsQyb=d1 z(`Y9C^t642!~}W&)uNf9?7qms`*=7dLm`$znTG#I*0A2Y19}>MQ!2_%w-w3NTtveeJ;2R?Ah_D-ah znn5AVnd5IIjlxx={=x4B@%fp~&H+lz^ zNDnC-2Koc-Xf}~m@mGDgTD6+!w`I<-#&otcHf%8?m3G?yqO*dqkR(gZQzhH*l4=N< zu#K8@RZ}ARhgR4FKt^8A|6thf8 zxtN5dzV*C9-b>>|E=&ZxeYFSqExAYu-5KXLPdnbGa)+Az$}fFO*|9*+*jJg)Z~>s=8ug|5v+3q15->vBca6o%bYXXivMmDYz!I5^(WsxLJR*`Wk6yrGj{(C?>& zGt($PZM)5_tD-X5SfPAp>>BvxLKeYoM5LRxiGSYP;_LQ#O+4&7GXT_MZDr`FbSnpM zBUF9od2=qwa{X^$n<6dm?!9>SNZ&%2(#p7`h9<>dIY`+VJId~N`m@V3N51Y&6QLJk zO7*`Vf@&jC5C@0^wY2{p%SCE-z*q7zO?qbt+rOqEQ!;fB<(At2@h|9JP`<={Qr_+^ ze`+Q4z1Y<~y==V5kbASNO=pD^lfNX3K3wZX+`oe+ zuKW}hdd8?#e|Nt$^5I`Wj!tB*$3_LuOBmtY2u3s-U{+@h^YbI1k2tFd!}{qLj1px~ zuP@XvG0Iu z_|TGJ^F}!DGUigfL)z(f^?0gSbS|4qjw?jf6_@~qLFiS@m zlcq*lf`-YB@7C-6bv#2NL-41uKV10woNg@g)}U)VEB8&dT>D~uN+YN!k@I?ZxG7uV z%4aP-E^WQ!qjSzWCCwS0T1z~-Y#B40^bdQB&^M7Oyt`b>yDO+%nfYhVw_EbMOb&my z&^9P6q_^Re+--X_)69ciF-cn;Mw>y(QWptE@ z?;%|w>^xG(x3xsx?B<5!aZ=q6KSwa3PH(2P5KU_^j0s24 zFljL>Pv7&zM8QPtqPi5xVi(m}E1pM8zS&^Xk8Rv797)Zm-FSP+vSJX(9p0WSTs~A) z!EVA;+n?*koVCYyB8u}e88w$~Z=Pf5qJ_^_7huoVvW#(6mn}H5kAbk4(8yUrDq}P+ zs^RW>PB`}T)FGkUmpjt5L#>0@j>g``Qt!uiyJ7ko5Dw+L=I1!q@{01Zs89w(97|;; zd~_mI95aqyW2O08zC?1Pqoail-^Ry&fL!WnHNTp1dbDyswn}PuJhtsbJolBH*ZJ=f zY+u3l3%b<+K$z0xErx z(;Ig^LbpPT%QF)bie~dWA3pT^T+E=i7Cr)S@hO)TNED#f<^8ffpXGUeeQb9u>~;0q z0Q?Q}`rHizc&+u66KZ`4z?$4I0vG?teC0V4FtLN>kdikNet5NF= z;$vmw`gXj`GlKS{)xe@~z=S`~Vi|6?_p7`#jAl!de{5?1PcJDxqt;Xcs*Sr<@8pVE zMe{GdY^fV72RE%C}DO8No^uNK7Jg`p2&&GceNK&r1DrnE*b z;;^&o`T-f)G_};o2J@q*c3ii=vhr=)BJ5G&YUOck;BLZNF1YO%o2o}4mc$Y9@bh+@ z&_Y06Rn5hdT~~yKMv|!q^xn?iBf6C}>^q~TU7N_mb*M)Z=iTzdfdFe+vxBPS*ZRBW z3QQY|u!ea$U|MYhgn?XCsVu*e{1hHlI_JYc!Euxn{_#x(m&zD@F0g{c_pCL$x!rrg zg|LCng`1b#a~|tVZBk*hZq!54$SpgMXrwj}Axu6u7J zg07yyBiQx&V1=GivxAMdnKA>B5e5zpFYzkG91%+Qn2emw^4(t0WsR+(4ERTmG&&PcanxN#2(W|R;IM6o(J=i(|mdLeM`*~SO ziA*Eb@M_{KPQ`OSSbsjqo0WCL_%uaW* zm?EFNF#e6~m%lQu=7Z`-jgFa;`5pvMdk3xo>mhksT)(>;0Z%};z^Gxx`Pzm@uh3!< zaAqfe8N3A4=^hr7gzaGVZ0!6y)@OPDVnJxU=iLQV+L#E?)OFn(4U#XaivX%5RfcwB z4th`i=-e=?(ATG#>~5(BU7wG9^HE`cL?CYK&)v$?H2@15;3=QGExS_gX!HBC@$tDI z-O+bL0@pN`4-Uzt^ObJ2284@aa3_#+f6SyX>)hXT*(++ z{E4Y)LLHAyff_XMM;vU8(AV+!*7xaQYv8h_r4KH!!|xlpV2FdA2YeRGCL5uHItLw#)^oaGu+-)v|V^#sNlT>w-D9 zHLr`#a&q6t^%&vbRmEKypSvS^5TR!hHHAjjUq*lbE^OtB6(x6qYntjVPS@(s%gBAbmQquPdAPDEvPVuasWHUlFoX0h&37^+sDO+3ARFS-L9}?!}%r z=OGUO;SuQvM+r9QJL#y)?G@&0Ojnm%hO(*RcnbI)3Y2C~4{s4b(quGG`A50R+4JP2 zwuz*NxtlTYl3bb!?=DsHa5DxnKmnx>N#M6{X(^|Qp`6mu(ci9bUSk`0d)o*SAehpd z7#Rib@`vp`ihXsiEvYu77T|_JlI7_DE_V@U6z=EFTThRNF2%ZfPWDUbufLi~3=cx# z5$U0Lm@JALJh0tRgg^=3i|7VU9xjTmOmF1&$8Jy9T|JMk*G6K|CGfVInwro4;aa=? zWm}onoP@poXYk$D?- zKU~HR_IPz^l8X4igMg$fcJ1k=c$lTJvb?;&3zurgvGK)UY}|#BfiX;421f^?R1C0R zL#3)yoQGU=C=n<3_29OtF=;k6$9=X~Kz^nJ(*qx!-XUUhti7Q`8gj>PNfps05>SiJX-(jxna<$_b(v>L&Gq-DF-{=vFD0z#6*4B91=p%Z! zYE!Cth&%E$xY$z$YkWL6Yf749bw%{qZCDYL_kGDIt^ZX54RV`$?%=^%y&ed^UH)w? zbB^5!=AF~qBR)@>>BV8AtUP)r8RV`zK=8acnL#{M91*0gL`>++z$rs5xXN)86LaJJ1hDkyRNg^2z}<}jFLSvoKdz^W zDo&5i?VNfH8L3eeQLZmNn{<68hZjv$4T^H@6;MEiEyR{ai99ARFD{JaUiDVf2Th;4 zfRy;87{3xEn8c!|bsuqQ1#j~p)m<*;tN(`wBU54)e>FB$gPm5;KeV~eeje_^dVFT=PO=bfgL;>l@ZTG%7$r8dVIlI(rGx!ZguRA+oir}zvG3bhrPS*Wt zMLSHWfmv(OFbXFq>*+|H$42{kkyvlTef31>@$~LxMbpYC>hQN6EO5R|b25>1(C0v; z{o&xSqU9(SJ=%o?HUhifvC{Rv_HK8hCb(?!L|VOiP}lKQG3QbIA1uHqewZ|rv|r$~ z<#4rIN`ZP)*T~z($*J4B{chCP>xdkXsk)MvhKd!nT|Q@#*q*wrWvw<@f2`pqLA2~2 zTdA8>CA3+>08KImh1J_E0N2zSBmD9gSS}FsNG<*+;{R{pe~^-zF7An)Q!^z9kTGcS z4-1nHyGU~54gta#M3FR16BpiCL(`R+xk@^Iy7GIYC6cve{k*XLbh&OfwY2;_aV?3U z^PPa}OJ2LLB1)C}R+Glax3-6OhTsqdq042`wde4|Aqo^buURgTz2$8{8k}ic^_VBD zG?Bq13>y@+k+YA@fq+eg0PgnpM`(V~tF0FeTL}!F_t^rGjEaei>b4(8EQ&PM=kp)G z4Jo{R-2&_H*ME;Fj(s=I)1X^Zce39a=zBZ*4m;3JXaQD+{LuEC%~iU{FvO^sKe{5- zw_0CZT|N~_kj$7CyIV(1W;L!Obfj*!e0oCWK6@}T6+#VxT$apTF{)F$l9L`2y-sCl zt^SNh6?MOJA|+tgUV;8SyYD%7bT**zNq@1qfAuN&`8#GO4a(i~{A~MnNn$eH+C|l_ zUJch}r}3hM(`bN2YbQsbhE`Q|*_7DhOn+wJfFMv{Z%np{ z3vr+da+x}|kw@)Z^nvw7do)HO@l57Z*82whK!mnSOhLaN&9GW7kL^lIi=+FEy5B9F z0vaYM6r!&As%D;%D;3ZUefV<0vfR_hzUG*`lcZ58q4i*pL0cQLjlp>SE)K*^j2f^)I(mmSKnDxG@x2rw{})y#gTF~l~|zDe5>Q$ zYZ4?4rQ>gIbLh`tmcs;y)^dVm0`_MU%Hu~&x+(6vwmkjVbvPg{AML4;Z1$z$7PeU+NM4Kb8YdvGs^2Mux#&kVx4NX$9bkb3by&> zs1(1!&$H78=8D1Jj|x%G!#bplhlV^li=2?ncGyy=UJbwd)?woBSf832*r|`lW??Dg ze1pl$McrtF$c)Qn>ImkNrKQzooDP?P#n8gM@fYWlah=@oBldc@$WC1V~+_jG_HALgUw`AqC??e_Re{gG*HSC%lTh!5?N^v<}g-@Aq@* z$QF4n>>60CiZ0}@9(`|fqvd2D^qd^F3_VXMHSza>TO}^HT&XXairbTpVw(KpXL^%B1XfizA-kJ-m*MN8YGkBpeJ-THmNX1o zFZbMXV7&-Qn7XeKY2}LhIO^ssrz$DoO^O5L7piJ`IQsJ^&urt3FN>uN>>oiIQ;W+! zM}M4_T+4K;IMH6aY;O}*Xf`rA5(rrsfIv7QQXfJ;RNL6dCf0Joi|XjeVFxLpy>Hxs z2Z7Kjb-(ThGcG1VL}@d8{!Xru3VS(syO%D;e8s>rTRTUt&|9rX1RYqGJU$>T#<+~R zeKhs?%cDRd=*5{JQ?Au4leC;9kslHw#be8BClktr!BwZ)Mvez;ooM{O*$Y9Wi5O%g z49~sW>ry}jSLKS7(>i%$(CjOFpg~+%KkR^Yl`#lUe1s0ta{34iM_`m&TK`g@jb%(? zeI6Vq8`!-7fOqT{}TBgtY1sBMCfUvAx5W$rO`&``t)5J zG*SDssp(#!+_t1VLe_s+Qweqv7=7X|UgU1CBIf)127jNqwDb*G*_T+K=>#!;THMS( zzgq&xPHfA*=~S0^eV^Zpnz|;HS zkN%Uic9}iN60bPumpQ1S{$3xqA2eBbKNKW!@u<2l`ib7nt}=l@PE&7SHzC~f*(FiC z(nH3E4I&dxMU1!AqI%W*myKDjC)VREb{}J+f@4VE2GfL_xSUr7oE)%mMIKg z54#UXL>*2PLzu+<#A%O&?%tsZD_Mc}m zLMh}sK<^ops;tF??yT3sZw#oV=V+Gj1_r`*>{lYAaRLth?-9}l$N=uUlf zS2;ut*O(AoKb)9vmGHT7+i2zC(yOTxcC64ja%?R3+^Cl;8nHyK}zEK=++3eGXLjaYrz(xsr5#?;pA@U-z75 zYPqfssWK+b&#A~=*P2TAv_PqB!O06QB>g{Rf8Kn#fAToB-F*e4~7b8ybY&=_ZsXtpAl)QCOTSFAuCm+4x%s~*$aa?$TlH@B*>SeArF*W*F(C(m^f=m%cNS*~U zi4lI|Ry6-?^QC_JvqDP#=uU^y;%;)Vy{le#`!^gLTl6P=rdm{)ZSp(cF-PIBKWxdN zExIf5zdrHzRf<{{Mb4`Y^ezrLPX#NVRT6a&-MXj3A&LO1 zu|x|~iP81#S}KZY`UBCgu2s()bQ%u6saHfXX>XSQaWXvO((@o|a{Mvw4Lr=yqXvIct#36;`K3fqi*&* z?JUfC%rm&r4n=W2`r|z)xr7`3dlHH6M7CGEUNfRTC+;<>m`sX!To+LwTm}J3c5B61 zD9i~P)aH3u(x0{e(u42}bCZ?*7V7KJU!|U&^z^5BKG5Tw(GoiF>LK#B-uLp{U%f)E zy!2~1FYA5#>nP~s1I^Zj-CFHtgqa86P4N73bGgHe51VIZWQ=p7#~4x6+iyMW zs|Uiy82JL9E1cP?zr=B~-her9=_wOgJ5a+~|T zd%};sud}bNvt;?(mnItud0=)+$gty=H+pS0y-oEIy}qmImJu;gcVQ_+%sbc zdChxb%PEu@AGK>Z9rEa!EkDwLnsIX>Cwyy9e}BB0h-){tU`lZy=Z#0;ruZx6^Ysb+ zREADA`++b`*#?@+Sz#{y^!!csWpi~aOCz!AsycD=En;9`1b2?K6-U2I zOG`sB0NibKe2=$98h8Cu4-SAVG#u(RJ5(=l+T?3*{=1+W9^?ZgtX8FrtbdyJ8;_gk zGa5>s8WAWLo1Le|C{RQLh6>D}K^ngddZe|tIQ}jL|DWQ+{|U@vYFyOu%NufD6=h|e z7bAy3i2I6PnABp7DNrnVqQ+Uy$HRi{G?a~ECh1f&lSOhsa7cOG{_dN(l30j*ed%*a z`E+oli?Ti3Tue8Q8sCI5KC)(c9DVWdn!IrT&Sr z)xrdE;h$V5akpDrN$^vmZXm-H`fzyX$$~ljQGz6cqy59}*Cvm6eCJ^eJgkimPpK-} z@Ex$GQoJN2G3ln8%>qVNh#e_r)~dkSWHWz#8EMP?=EG*W$uzvLlfo^~>3! z+B_u)JhCsf*f0D$KZpOAN>tM5=={w+&$gh-LH>4z@G^HdZ3!$pSb#!Al)*tEcFAK1ni)(oxXRAh5+Cfids^KAPfU!{Sh z2`y!zR3lYa|5q$+E#^0YYqBb z%(YA7an{$Su+2Ui=2kVRmz=>oyt9`vcQha&E`L0;|`4nu2hh z_sOSZz6|-ql7K7|!{uwMu^l-Czzm-k^^3vQE{ zYP4Awlb3}0K5O{G6tmYG$Pe$10Ry%%M~}hiVQ||)#IVv}kLziRK+^D=jb1`qof?k? zo;DXVg*E+=%kt)ji$}7%YhUk|L!sxuB<uPJh7lBLE+Grs_gQb8c$#)_G<0c8wQLD42;(ql%-&C zUN*(MMTOVi$8@3mp#g^o>{9L_InfSbZu3;nR@lpUcVUnHagj6lQ4m()8pP7 z4-p&iXUDb|JW-*hh8L`L0!6`z(w}W)Jlnzk-h^fyUXxh<3RhMC-LYcfV|7wR#iw3G_^+?;U_Sk;zD-71Qw7||+_Sx6v4L)A znRRUTgQ-Kv9)aXSi$w1wf=u3!i{k}k3PP^N+xMC*C0rQV_Oz(rK~%rARw&Rm8cx>U zybY^wMC>{00AmIF6=5`}^{+l$6trfoDy`rl?`%C6+FJN}bb%?)cDQEA-SZ!ED@dQt zk>?v!Jh6`VV1;^LeYRrMDs1F}4^)Ws;DB;qi=A5tWA%ntXABb5$hi|MXG=>fRgFc@ z@zD%O6neF6+s^SZF{Y!qaA^<`9{$9L9NicAjO%=LLYNL zpD`4Z94eZtUx6%@<$ss#Twm|kFY;2hY#`B*zWLyUr+$!!m}&rd>PWgFOb|B(JtZ|X z=v3DqkS5J~-5nx}EYG1LRaCfi_*F!4x0p!w4yzZ6c+IojxnP0)I@jx#N^JjV5;EBS za?dx{2Jqg}=N}=UjHQ$jxNJ0e3gFoAmbk+Mgl7>abF`K=vk17`R>P zQJ^$+^;VDP^|cj;yEpCoC*x_QjEE|~+ZYllcP1k6RVCUDlLK^G4yzdKA z+gqBqI+t9<`}{MzQZ09ZHRW7hdhe>*7-U|pDXYz7K?GLx+#~IFh>w|&qQO8b-rH^T zvek?XTSIPsx#wag{8g;^bf*pi^_^8e%&fJzZ+W(#MV((`sxwuTMxcxHoQOt=I{a0f zUDdi<6FC5bG5jDzagnX+Mno7g8-0WntU;@vos31N1wFzkj=)#2hhfi`m$FiBR#|V@ z#+%z?@ZFUsce)oHDo{ucs<-@{klZ>KvX>}<2uxG+_d`O*%Q3Mb@XJ^LMytM@rJ zhJ-X>9*zT)VUWF<`st6G++8~j!sAy0&j&KaI-WPT&bQRcgWrh91nk$P`7^Aov<{^C zI0ajrb~D?6V!KmPeLXab@Z!F!eB}|?=T1u_MnVb!iVu|r&+hxq5h-=tORgs+19|G@ z8c2Qt_HM>kfIHJ-^0tla?TNtIeTCPli0}-*g}M!=8lfDt--MZ?ksm(Xx=lChuoA)}NX!lPgs*D^d&e({aHz%k2$C2)jv25X{4+r5N1J#kx|3w<2U9Y2NbPSylCP=h;9M&!*X; zaXK#J9|3KT6IFUAWG_cqHfPXD=m6vmRDc^Eg#95c#$jIZj3>+YMfp@jgv&FGs=Knm z+s&9F^bJ)Ihp4huZ$yF0{P%VvSGzT7jgQ9OHPKE{G ztxAm!)znOIV~N5l?KqcTyzH`na%ZSdYx4|_Dr4V7BR*nbx!i0kXPR5f+v$G!@_I)i ztWorokJGvGootwFnliDvYA;E;!|a-n#-BzzeNIB|d71-a<<^XM;m+3HTCZ?O4jHX| z+w35O+-kktnd(k=1B$fU<(i2=ZWHLs)9StA8{Fg}CQcVjTfc{%ei z3ypGYfI5HTjCR$mEJU=c6Q7HU*390+FvKi6lx`G?#=p$>&>AYx?#bkP7}1mXp@Oy0 z*Nay~dxE?v=cT0V+FCv*&mu&XD~I1bRzoEWlFT86B)@sNBXj=eQimKixGJN*{8duc zMeaaa@2pYJ`72hbdPdU2v=wpto#?!`KsB}msOeIIIB}-0P(b8u2rwj*GzZQ!3gtSe zdU6qh+g}b=W0spdrl+nluz>S%JZE{Ida#Kc+lnDFC3BD|$K!D=gj1&H=+V7S3KNCO z5S6LcF6hNWgTkC%c{1ox4Sh!$7R$}~Ax$p{Rf>2Yw|BRfyiY@zpRBx?tS9o&bC58c zRL>3PH?_0+NdC0{9OLz11fvK_&Y6~Lf8H}4_KgyDexDEb$Kh{B#{{s`zqFXBqOQtb zLy=l9K!vx&Lh$@%xPgPMJFd;{Uj-b$dvp!Ohmm&A@iw5&L>6Kot1RInS2qdl`u^T> zOWNX1()H>Df?Ma7dSmHb*n2btk?r+x-R0ma; zH(lTA%e~O)qEbrAbRh=L>#w^@_&zTgRt{s5^~q$FXnrZ*48%D>{_N4B{$W8KlFT#_ zfh6xgAWE(GY?D$#ewq@5O`m39!*!}Np;B*f@<@mRHm-i_A5)EHrGpkL0YMceq*KE% z$9Li;yedb0P>}TJzg7f6)cb`onRjOyQn1^!CEKP-pUv4<20v3$@+riV%LhgV0#GzQ zr${-Ll!^e+31&1O$FH*}Y~$C}+L#iA#s=e8QZ*qvHOFB1oScu{7=1aDK+!(K{Z60{ z@e9y+6r!rC+oL?KC2egi>;tL00fxXnBHc@? zv6mjI5%+A z{|21m+?j{Z2yvfEmzbz);j(W=B46$@CVSxj_IhlCCr-4 zkVlP zt$Lj?b%B*tRnM!3S(vcQG4!ugn!o(3tYyS^h*zo{!X~JI%p*%=l zqr5aLSN`iik@BAd6KjHl2`c3qQB(fA#sl6pqxkCLHRg2U!NAVsg{+|uCyRo8i7s&a z*Z~T9ZyJNoit;Vf4kY+bi>ovU2%y-UYxoW6yK3f%99ZHMfT)@P2$YleC6=HKQ02PV zvJk2q(WG#ZcW-1ih117Y%Q6Zv4y;!r*pb5&7$G5nZl9zrw!FUlGYMMw5!D({Imp{Q zgoKInheMYW#=LCPh%Dc5rtki;OYVHY&A^AUIMQPgPX*P`i=)U9F$AS!5!rw4(KfY5 z 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%0DW5 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 w}%>Rn&T^ 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�J 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

    Hox2uv%egS}=ZPEH#br7((^Ko0m8nvm36Xhy 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%0AD!#%!i%1xRDTpX4`IGKxV3nMUKp>Uc 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∋c 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�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

    1Y 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 LNkvXXu0mjfnd*Z3 literal 0 HcmV?d00001 diff --git a/rfcs/text/0018_timeslider.md b/rfcs/text/0018_timeslider.md new file mode 100644 index 0000000000000..aa8e7263260d2 --- /dev/null +++ b/rfcs/text/0018_timeslider.md @@ -0,0 +1,217 @@ +- Start Date: 2020-04-26 +- RFC PR: (leave this empty) +- Kibana Issue: (leave this empty) + +--- +- [1. Summary](#1-summary) +- [2. Detailed design](#2-detailed-design) +- [3. Unresolved questions](#3-unresolved-questions) + +# 1. Summary + +A timeslider is a UI component that allows users to intuitively navigate through time-based data. + +This RFC proposes adding a timeslider control to the Maps application. + +It proposes a two phased roll-out in the Maps application. The [design proposal](#2-detailed-design) focuses on the first phase. + +Since the timeslider UI is relevant for other Kibana apps, the implementation should be portable. We propose to implement the control as a React-component +without implicit dependencies on Kibana-state or Maps-state. + +The RFC details the integration of this control in Maps. It includes specific consideration to how timeslider affects data-refresh in the context of Maps. + +This RFC also outlines a possible integration of this Timeslider-React component with an Embeddable, and the introduction of a new piece of embeddable-state `Timeslice`. + +This RFC does not address how this component should _behave_ in apps other than the Maps-app. + +# 2. Detailed design + +Below outlines: +- the two delivery phases intended for Kibana Maps +- outline of the Timeslider UI component implementation (phase 1) +- outline of the integration in Maps of the Timeslider UI component (phase 1) + +## 2.1 Design phases overview + + + +### 2.1.1 Time-range selection and stepped navigation + +A first phase includes arbitrary time-range selection and stepped navigation. + +![Timeslider version 1](../images/timeslider/v1.png) + +This is the focus of this RFC. + +Check [https://github.com/elastic/kibana/pull/96791](https://github.com/elastic/kibana/pull/96791) for a POC implementation. + +### 2.2.2 Data distribution preview with histogram and playback + +A second phase adds a date histogram showing the preview of the data. + +![Timeslider version 2](../images/timeslider/v2.png) + +Details on this phase 2 are beyond the scope of this RFC. + +## 2.2 The timeslider UI React-component (phase 1) + +This focuses on Phase 1. Phase 2, with date histogram preview and auto-playback is out of scope for now. + +### 2.2.1 Interface of the React-component + +The core timeslider-UI is a React-component. + +The component has no implicit dependencies on any Kibana-state or Maps-store state. + +Its interface is fully defined by its `props`-contract. + +``` +export type Timeslice = { + from: number; // epoch timestamp + to: number; // epoch timestamp +}; + +export interface TimesliderProps { + onTimesliceChanged: (timeslice: Timeslice) => void; + timerange: TimeRange; // TimeRange The start and end time of the entire time-range. TimeRange is defined in `data/common` + timeslice?: Timeslice; // The currently displayed timeslice. Needs to be set after onTimesliceChange to be reflected back in UI. If ommitted, the control selects the first timeslice. +} +``` + +`timeslice` is clamped to the bounds of `timeRange`. + +Any change to `timeslice`, either by dragging the handles of the timeslider, or pressing the back or forward buttons, calls the `onTimesliceChanged` handler. + +Since the initial use is inside Maps, the initial location of this React-component is inside the Maps plugin, `x-pack/plugins/maps/public/timeslider`. + +Nonetheless, this UI-component should be easily "cut-and-pastable" to another location. + +### 2.2.2 Internals + +The timeslider automatically subdivides the timerange with equal breaks that are heuristically determined. + +It assigns about 6-10 breaks within the `timerange`, snaps the "ticks" to a natural "pretty date" using `calcAutoIntervalNear` from `data/common`. + +For example; +- a `timerange` of 8.5 days, it would assign a 8 day-steps, plus some padding on either end, depending on the entire `timerange`. +- a `timerange` of 6.9 years would snap to year-long step, plus some padding on either end, depending on the entire `timerange`. + +The slider itself is a ``. + +### 2.2.2 End-user behavior + +- the user can manipulate the `timeslice`-double ranged slider to any arbitrary range within `timerange`. +- the user can press the forward and back buttons for a stepped navigation. The range of the current time-slice is preserved when there is room for the `timeslice` within the `timerange`. + - when the user has _not modified the width_ of the `timeslice`, using the buttons means stepping through the pre-determined ticks (e.g. by year, by day, ...) + - when the user has _already modified the width_ of the `timeslice`, it means stepping through the `timerange`, with a stride of the width of the `timeslice`. +- the `timeslice` "snaps" to the beginning or end (depending on direction) of the `timerange`. In practice, this means the `timeslice` will collaps or reduce in width. + +## 2.3 Maps integration of the timeslider React component + +This control will be integrated in the Maps-UI. + +Maps is Redux-based, so `timeslice` selection and activation/de-activation all propagates to the Redux-store. + +#### 2.3.1 Position in the UI + +The timeslider control is enabled/disabled by the timeslider on/off toggle-button in the main toolbar. + +![Timeslider version 1](../images/timeslider/toolbar.png) + + +#### 2.3.2 Layer interactions + + +Enabling the Timeslider will automatically retrigger refresh of _all_ time-based layers to the currently selected `timeslice`. + +The Layer-TOC will indicate which layer is currently "time-filtered" by the timeslider. + +On a layer-per-layer basis, users will be able to explicitly opt-out if they should be governed by the timerange or not. This is an existing toggle in Maps already. +This is relevant for having users add contextual layers that should _not_ depend on the time. + + +#### 2.3.3 Omitting timeslider on a dashboard + +Maps will not display the timeslider-activation button on Maps that are embedded in a Dashboard. + +We believe that a Timeslider-embeddable would be a better vehicle to bring timeslider-functionality do Dashboards. See also the [last section](#3-unresolved-questions). + +#### 2.3.3 Data-fetch considerations + +--- +**NOTE** + +The below section is very Maps-specific, although similar challenges would be present in other applications as well. + +Some of these considerations will not generalize to all of Kibana. + +The main ways that Maps distinguishes in data-fetch from other use-cases: + - the majority of the data-fetching for layers in Maps depends on the scale and extent. Ie. different data is requested based on the current zoom-level and current-extent of the Map. So for example, even if two views share the same time, query and filter-state, if their extent and/or scale is different, their requests to ES will be different. + - for some layer-types, Maps will fetch individual documents, rather than the result of an aggregation. + +--- + +Data-fetch for timeslider should be responsive and smooth. A user dragging the slider should have an immediate visual result on the map. + +In addition, we expect the timeslider will be used a lot for "comparisons". For example, imagine a user stepping back&forth between timeslices. + +For this reason, apps using a timeslider (such as Maps) ideally: +- pre-fetch data when possible +- cache data when possible + +For Maps specifically, when introducing timeslider, layers will therefore need to implement time-based data fetch based on _two_ pieces of state +- the entire `timerange` (aka. the global Kibana timerange) +- the selected `timeslice` (aka. the `timeslice` chosen by the user using the UI-component) + +##### 2.3.3.1 Pre-fetching individual documents and masking of data + +ES-document layers (which display individual documents) can prefetch all documents within the entire `timerange`, when the total number of docs is below some threshold. In the context of Maps, this threshold is the default index-search-size of the index. + +Maps can then just mask data on the map based on some filter-expression. The evaluation of this filter-expression is done by mapbox-gl is fast because it occurs on the GPU. There is immediate visual feedback to the user as they manipulate the timeslider, because it does not require a roundtrip to update the data. + +##### 2.3.3.2 Caching of aggregated searches + +Aggregated data can be cached on the client, so toggling between timeslices can avoid a round-trip data-fetch. +The main technique here is for layers to use `.mvt`-data format to request data. Tiled-based data can be cached client-side + +We do _not_ propose _pre-fetching_ of aggregated data in this initial phase of the Maps timeslider effort. There is a couple reasons: +- Based on the intended user-interactions for timeslider, because a user can flexibly select a `timeslice` of arbitrary widths, it would be really hard to determine how to determine which timeslices to aggregate up front. +- Maps already strains the maximum bucket sizes it can retrieve from Elasticsearch. Cluster/grid-layers often push up to 10k or more buckets, and terms-aggregations for choropleth maps also is going up to 10k buckets. Prefetching this for timeslices (e.g. say x10 timeslices) would easily exceed the default bucket limit sizes of Elasticsearch. + + +##### 2.3.3.3 Decouple data-fetch from UI-effort + +Apart from refactoring the data-fetch for layers to now use two pieces of time-based state, the implementation will decouple any data-fetch considerations from the actual timeslider-UI work. + +The idea is that dial in data-fetch optimizations can be dialed into Maps in a parallel work-thread, not necessarily dependent on any changes or additions to the UI. +Any optimizations would not only affect timeslider users, but support all interaction patterns that require smooth data-updates (e.g. panning back&forth to two locations, toggling back&forth between two filters, ...) + +The main effort to support efficient data-fetch in a maps-context is to use `.mvt` as the default data format ([https://github.com/elastic/kibana/issues/79868](https://github.com/elastic/kibana/issues/79868)). This is a stack-wide effort in collaboration with the Elasticsearch team ([https://github.com/elastic/elasticsearch/issues/58696](https://github.com/elastic/elasticsearch/issues/58696), which will add `.mvt` as a core response format to Elasticsearch. + +Growing the use of `mvt`([https://docs.mapbox.com/vector-tiles/reference/](https://docs.mapbox.com/vector-tiles/reference/)) in Maps will help with both pre-fetching and client-side caching: +- `mvt` is a binary format which allows more data to be packed inside, as compared to Json. Multiple tiles are patched together, so this introduces a form of parallelization as well. Due to growing the amount of data inside a single tile, and due to the parallelization, Maps has a pathway to increase the number of features that can be time-filtered. +- Because vector tiles have fixed extents and scales (defined by a `{x}/{y}/{scale}`-tuple), this type of data-fetching allows tiles to be cached on the client. This cache can be the implicit browser disc-cache, or the transient in-mem cache of mapbox-gl. Using mvt thus provides a pathway for fast toggling back&forth between timeslices, without round-trips to fetch data. + + +##### 2.3.3.4 timeslider and async search + +It is unclear on what the practical uses for async-search would be in the context of a timeslider-control in Maps. + +Timeslider is a highly interactive control that require immediate visual feedback. We also do not intend to activate timeslider in Maps on a Dashboard (see above). + +End-users who need to view a dashboard with a long-running background search will need to manipulate the _global Kibana time picker_ to select the time-range, and will not be able to use the timeslider to do so. + +# 3. Unresolved questions + +## Making Timeslider a Kibana Embeddable + +This below is a forward looking section. It is a proposal of how the Timeslider-UI can be exposed as an Embeddable, when that time should come. + +We expect a few steps: +- This would require the extraction of the timeslider React-component out of Maps into a separate plugin. As outlined above, this migration should be fairly straightforward, a "cut and paste". +- It would require the creation of a `TimesliderEmbeddable` which wraps this UI-component. +- It would also require the introduction of a new piece of embeddable-state, `Timeslice`, which can be controlled by the `TimesliderEmbeddable`. +We believe it is important to keep `timeslice` and `timerange` separate, as individual apps and other embeddables will have different mechanism to efficiently fetch data and respond to changes in `timeslice` and/or `timerange`. + +Having timeslider as a core Embeddable likely provides a better pathway to integrate timeslider-functionality in Dashboards or apps other than Maps. + From bdde884d098f42a93630cc6d221258bdc3372e60 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Thu, 13 May 2021 17:12:47 +0200 Subject: [PATCH 05/27] [RAC] Decouple registry from alerts-as-data client (#98935) --- package.json | 3 +- packages/kbn-optimizer/limits.yml | 1 - packages/kbn-rule-data-utils/jest.config.js | 13 + packages/kbn-rule-data-utils/package.json | 13 + packages/kbn-rule-data-utils/src/index.ts | 9 + .../src/technical_field_names.ts | 77 ++++ packages/kbn-rule-data-utils/tsconfig.json | 19 + typings/elasticsearch/search.d.ts | 6 +- x-pack/plugins/apm/kibana.json | 12 +- .../public/application/application.test.tsx | 8 +- .../plugins/apm/public/application/csmApp.tsx | 19 +- .../plugins/apm/public/application/index.tsx | 13 +- .../alerting/register_apm_alerts.ts | 98 +++--- .../ErrorGroupDetails/Distribution/index.tsx | 3 +- .../app/Home/__snapshots__/Home.test.tsx.snap | 14 +- .../service_icons/alert_details.tsx | 30 +- .../charts/helper/get_alert_annotations.tsx | 16 +- .../shared/charts/latency_chart/index.tsx | 5 +- .../transaction_error_rate_chart/index.tsx | 3 +- .../context/apm_plugin/apm_plugin_context.tsx | 5 +- .../apm_plugin/mock_apm_plugin_context.tsx | 9 +- x-pack/plugins/apm/public/plugin.ts | 21 +- .../server/lib/alerts/register_apm_alerts.ts | 6 +- .../alerts/register_error_count_alert_type.ts | 24 +- ...egister_transaction_duration_alert_type.ts | 252 +++++++------- ...transaction_duration_anomaly_alert_type.ts | 31 +- ...ister_transaction_error_rate_alert_type.ts | 24 +- .../apm/server/lib/alerts/test_utils/index.ts | 24 +- .../server/lib/services/get_service_alerts.ts | 18 +- x-pack/plugins/apm/server/plugin.ts | 103 +++++- .../server/routes/register_routes/index.ts | 6 +- x-pack/plugins/apm/server/routes/services.ts | 19 +- x-pack/plugins/apm/server/routes/typings.ts | 4 +- x-pack/plugins/apm/server/types.ts | 9 + .../rules/observability_rule_field_map.ts | 22 -- .../common/utils/formatters/duration.ts | 3 + .../common/utils/formatters/formatters.ts | 2 + x-pack/plugins/observability/kibana.json | 3 +- .../public/application/application.test.tsx | 4 +- .../public/application/index.tsx | 9 +- .../components/app/section/apm/index.test.tsx | 8 +- .../components/app/section/ux/index.test.tsx | 4 +- .../public/context/plugin_context.tsx | 5 +- .../public/hooks/use_time_range.test.ts | 6 +- x-pack/plugins/observability/public/index.ts | 3 +- .../public/pages/alerts/alerts.stories.tsx | 4 +- .../alerts_flyout/alerts_flyout.stories.tsx | 41 +-- .../pages/alerts/alerts_flyout/index.tsx | 20 +- .../public/pages/alerts/alerts_table.tsx | 10 +- .../public/pages/alerts/example_data.ts | 60 ++-- .../public/pages/alerts/index.tsx | 30 +- .../pages/overview/overview.stories.tsx | 4 +- x-pack/plugins/observability/public/plugin.ts | 25 +- ...create_observability_rule_type_registry.ts | 31 ++ .../public/rules/formatter_rule_registry.ts | 30 -- .../rules/observability_rule_registry_mock.ts | 17 - .../observability_rule_type_registry_mock.ts | 16 + .../public/utils/test_helper.tsx | 6 +- .../server/lib/rules/get_top_alerts.ts | 28 +- x-pack/plugins/observability/server/plugin.ts | 21 +- .../server/routes/register_routes.ts | 8 +- .../observability/server/routes/rules.ts | 27 +- .../observability/server/routes/types.ts | 4 +- x-pack/plugins/observability/server/types.ts | 6 - x-pack/plugins/rule_registry/README.md | 141 ++++++-- .../common/assets.ts} | 7 +- .../ecs_component_template.ts | 24 ++ .../technical_component_template.ts | 19 + .../field_maps}/ecs_field_map.ts | 0 .../field_maps/technical_rule_field_map.ts | 56 +++ .../index_templates/base_index_template.ts | 15 + .../default_lifecycle_policy.ts} | 4 +- .../common/field_map/base_rule_field_map.ts | 33 -- .../rule_registry/common/field_map/index.ts | 2 - x-pack/plugins/rule_registry/common/index.ts | 3 +- .../mapping_from_field_map.ts | 6 +- .../common/parse_technical_fields.ts | 25 ++ .../common/technical_rule_data_field_names.ts | 8 + x-pack/plugins/rule_registry/common/types.ts | 21 ++ x-pack/plugins/rule_registry/kibana.json | 3 +- x-pack/plugins/rule_registry/public/index.ts | 17 - x-pack/plugins/rule_registry/public/plugin.ts | 56 --- .../public/rule_registry/index.ts | 47 --- .../public/rule_registry/types.ts | 63 ---- x-pack/plugins/rule_registry/server/index.ts | 16 +- x-pack/plugins/rule_registry/server/plugin.ts | 48 +-- .../server/rule_data_client/index.ts | 132 +++++++ .../server/rule_data_client/types.ts | 44 +++ .../server/rule_data_plugin_service/index.ts | 158 +++++++++ .../index.ts | 179 ---------- .../types.ts | 57 --- .../server/rule_registry/index.ts | 328 ------------------ .../create_lifecycle_rule_type_factory.ts | 235 ------------- .../server/rule_registry/types.ts | 42 --- x-pack/plugins/rule_registry/server/types.ts | 106 ++---- .../create_lifecycle_rule_type_factory.ts | 246 +++++++++++++ .../server/utils/get_rule_executor_data.ts | 39 +++ .../utils/with_rule_data_client_factory.ts | 39 +++ .../test/apm_api_integration/configs/index.ts | 2 +- .../tests/alerts/rule_registry.ts | 229 ++++++++---- .../index_lifecycle_management/home_page.ts | 3 + .../index_lifecycle_management_page.ts | 5 + yarn.lock | 4 + 103 files changed, 1983 insertions(+), 1853 deletions(-) create mode 100644 packages/kbn-rule-data-utils/jest.config.js create mode 100644 packages/kbn-rule-data-utils/package.json create mode 100644 packages/kbn-rule-data-utils/src/index.ts create mode 100644 packages/kbn-rule-data-utils/src/technical_field_names.ts create mode 100644 packages/kbn-rule-data-utils/tsconfig.json delete mode 100644 x-pack/plugins/observability/common/rules/observability_rule_field_map.ts create mode 100644 x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts delete mode 100644 x-pack/plugins/observability/public/rules/formatter_rule_registry.ts delete mode 100644 x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts create mode 100644 x-pack/plugins/observability/public/rules/observability_rule_type_registry_mock.ts rename x-pack/plugins/{apm/server/lib/alerts/create_apm_lifecycle_rule_type.ts => rule_registry/common/assets.ts} (53%) create mode 100644 x-pack/plugins/rule_registry/common/assets/component_templates/ecs_component_template.ts create mode 100644 x-pack/plugins/rule_registry/common/assets/component_templates/technical_component_template.ts rename x-pack/plugins/rule_registry/common/{field_map => assets/field_maps}/ecs_field_map.ts (100%) create mode 100644 x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts create mode 100644 x-pack/plugins/rule_registry/common/assets/index_templates/base_index_template.ts rename x-pack/plugins/rule_registry/{server/rule_registry/defaults/ilm_policy.ts => common/assets/lifecycle_policies/default_lifecycle_policy.ts} (86%) delete mode 100644 x-pack/plugins/rule_registry/common/field_map/base_rule_field_map.ts rename x-pack/plugins/rule_registry/{server/rule_registry/field_map => common}/mapping_from_field_map.ts (79%) create mode 100644 x-pack/plugins/rule_registry/common/parse_technical_fields.ts create mode 100644 x-pack/plugins/rule_registry/common/technical_rule_data_field_names.ts create mode 100644 x-pack/plugins/rule_registry/common/types.ts delete mode 100644 x-pack/plugins/rule_registry/public/index.ts delete mode 100644 x-pack/plugins/rule_registry/public/plugin.ts delete mode 100644 x-pack/plugins/rule_registry/public/rule_registry/index.ts delete mode 100644 x-pack/plugins/rule_registry/public/rule_registry/types.ts create mode 100644 x-pack/plugins/rule_registry/server/rule_data_client/index.ts create mode 100644 x-pack/plugins/rule_registry/server/rule_data_client/types.ts create mode 100644 x-pack/plugins/rule_registry/server/rule_data_plugin_service/index.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/index.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/types.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/index.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/types.ts create mode 100644 x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts create mode 100644 x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts create mode 100644 x-pack/plugins/rule_registry/server/utils/with_rule_data_client_factory.ts diff --git a/package.json b/package.json index a8cfbb5013647..d46617f2a6f2a 100644 --- a/package.json +++ b/package.json @@ -136,9 +136,9 @@ "@kbn/logging": "link:bazel-bin/packages/kbn-logging/npm_module", "@kbn/monaco": "link:packages/kbn-monaco", "@kbn/securitysolution-constants": "link:bazel-bin/packages/kbn-securitysolution-constants/npm_module", - "@kbn/securitysolution-utils": "link:bazel-bin/packages/kbn-securitysolution-utils/npm_module", "@kbn/securitysolution-es-utils": "link:bazel-bin/packages/kbn-securitysolution-es-utils/npm_module", "@kbn/securitysolution-io-ts-utils": "link:bazel-bin/packages/kbn-securitysolution-io-ts-utils/npm_module", + "@kbn/securitysolution-utils": "link:bazel-bin/packages/kbn-securitysolution-utils/npm_module", "@kbn/server-http-tools": "link:packages/kbn-server-http-tools", "@kbn/server-route-repository": "link:packages/kbn-server-route-repository", "@kbn/std": "link:bazel-bin/packages/kbn-std/npm_module", @@ -265,6 +265,7 @@ "json-stringify-safe": "5.0.1", "jsonwebtoken": "^8.5.1", "jsts": "^1.6.2", + "@kbn/rule-data-utils": "link:packages/kbn-rule-data-utils", "kea": "^2.3.0", "leaflet": "1.5.1", "leaflet-draw": "0.4.14", diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 08e90ed829d4a..448b5ad650da5 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -61,7 +61,6 @@ pageLoadAssetSize: remoteClusters: 51327 reporting: 183418 rollup: 97204 - ruleRegistry: 100000 savedObjects: 108518 savedObjectsManagement: 101836 savedObjectsTagging: 59482 diff --git a/packages/kbn-rule-data-utils/jest.config.js b/packages/kbn-rule-data-utils/jest.config.js new file mode 100644 index 0000000000000..26cb39fe8b55a --- /dev/null +++ b/packages/kbn-rule-data-utils/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-rule-data-utils'], +}; diff --git a/packages/kbn-rule-data-utils/package.json b/packages/kbn-rule-data-utils/package.json new file mode 100644 index 0000000000000..6f0b8439ec891 --- /dev/null +++ b/packages/kbn-rule-data-utils/package.json @@ -0,0 +1,13 @@ +{ + "name": "@kbn/rule-data-utils", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0", + "private": true, + "scripts": { + "build": "../../node_modules/.bin/tsc", + "kbn:bootstrap": "yarn build", + "kbn:watch": "yarn build --watch" + } +} diff --git a/packages/kbn-rule-data-utils/src/index.ts b/packages/kbn-rule-data-utils/src/index.ts new file mode 100644 index 0000000000000..93a2538c7aa2c --- /dev/null +++ b/packages/kbn-rule-data-utils/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './technical_field_names'; diff --git a/packages/kbn-rule-data-utils/src/technical_field_names.ts b/packages/kbn-rule-data-utils/src/technical_field_names.ts new file mode 100644 index 0000000000000..31779c9f08e81 --- /dev/null +++ b/packages/kbn-rule-data-utils/src/technical_field_names.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ValuesType } from 'utility-types'; + +const ALERT_NAMESPACE = 'kibana.rac.alert'; + +const TIMESTAMP = '@timestamp' as const; +const EVENT_KIND = 'event.kind' as const; +const EVENT_ACTION = 'event.action' as const; +const RULE_UUID = 'rule.uuid' as const; +const RULE_ID = 'rule.id' as const; +const RULE_NAME = 'rule.name' as const; +const RULE_CATEGORY = 'rule.category' as const; +const TAGS = 'tags' as const; +const PRODUCER = `${ALERT_NAMESPACE}.producer` as const; +const ALERT_ID = `${ALERT_NAMESPACE}.id` as const; +const ALERT_UUID = `${ALERT_NAMESPACE}.uuid` as const; +const ALERT_START = `${ALERT_NAMESPACE}.start` as const; +const ALERT_END = `${ALERT_NAMESPACE}.end` as const; +const ALERT_DURATION = `${ALERT_NAMESPACE}.duration.us` as const; +const ALERT_SEVERITY_LEVEL = `${ALERT_NAMESPACE}.severity.level` as const; +const ALERT_SEVERITY_VALUE = `${ALERT_NAMESPACE}.severity.value` as const; +const ALERT_STATUS = `${ALERT_NAMESPACE}.status` as const; +const ALERT_EVALUATION_THRESHOLD = `${ALERT_NAMESPACE}.evaluation.threshold` as const; +const ALERT_EVALUATION_VALUE = `${ALERT_NAMESPACE}.evaluation.value` as const; + +const fields = { + TIMESTAMP, + EVENT_KIND, + EVENT_ACTION, + RULE_UUID, + RULE_ID, + RULE_NAME, + RULE_CATEGORY, + TAGS, + PRODUCER, + ALERT_ID, + ALERT_UUID, + ALERT_START, + ALERT_END, + ALERT_DURATION, + ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY_VALUE, + ALERT_STATUS, + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +}; + +export { + TIMESTAMP, + EVENT_KIND, + EVENT_ACTION, + RULE_UUID, + RULE_ID, + RULE_NAME, + RULE_CATEGORY, + TAGS, + PRODUCER, + ALERT_ID, + ALERT_UUID, + ALERT_START, + ALERT_END, + ALERT_DURATION, + ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY_VALUE, + ALERT_STATUS, + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +}; + +export type TechnicalRuleDataFieldName = ValuesType; diff --git a/packages/kbn-rule-data-utils/tsconfig.json b/packages/kbn-rule-data-utils/tsconfig.json new file mode 100644 index 0000000000000..4b1262d11f3af --- /dev/null +++ b/packages/kbn-rule-data-utils/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "incremental": false, + "outDir": "./target", + "stripInternal": false, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-rule-data-utils/src", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "./src/**/*.ts" + ] +} diff --git a/typings/elasticsearch/search.d.ts b/typings/elasticsearch/search.d.ts index c9bf3b1d8b7bc..d75f31d388176 100644 --- a/typings/elasticsearch/search.d.ts +++ b/typings/elasticsearch/search.d.ts @@ -49,7 +49,7 @@ type ValueTypeOfField = T extends Record type MaybeArray = T | T[]; -type Fields = MaybeArray; +type Fields = Exclude['body']['fields'], undefined>; type DocValueFields = MaybeArray; export type SearchHit< @@ -58,7 +58,7 @@ export type SearchHit< TDocValueFields extends DocValueFields | undefined = undefined > = Omit & (TSource extends false ? {} : { _source: TSource }) & - (TFields extends estypes.Fields + (TFields extends Fields ? { fields: Partial, unknown[]>>; } @@ -77,7 +77,7 @@ type HitsOf< > = Array< SearchHit< TOptions extends { _source: false } ? undefined : TDocument, - TOptions extends { fields: estypes.Fields } ? TOptions['fields'] : undefined, + TOptions extends { fields: Fields } ? TOptions['fields'] : undefined, TOptions extends { docvalue_fields: DocValueFields } ? TOptions['docvalue_fields'] : undefined > >; diff --git a/x-pack/plugins/apm/kibana.json b/x-pack/plugins/apm/kibana.json index 28e4a7b36e740..76d544c3bc6f5 100644 --- a/x-pack/plugins/apm/kibana.json +++ b/x-pack/plugins/apm/kibana.json @@ -10,7 +10,8 @@ "triggersActionsUi", "embeddable", "infra", - "observability" + "observability", + "ruleRegistry" ], "optionalPlugins": [ "spaces", @@ -26,8 +27,13 @@ ], "server": true, "ui": true, - "configPath": ["xpack", "apm"], - "extraPublicDirs": ["public/style/variables"], + "configPath": [ + "xpack", + "apm" + ], + "extraPublicDirs": [ + "public/style/variables" + ], "requiredBundles": [ "home", "kibanaReact", diff --git a/x-pack/plugins/apm/public/application/application.test.tsx b/x-pack/plugins/apm/public/application/application.test.tsx index e6415f76c60dc..4ec654a6c0bfd 100644 --- a/x-pack/plugins/apm/public/application/application.test.tsx +++ b/x-pack/plugins/apm/public/application/application.test.tsx @@ -39,7 +39,11 @@ describe('renderApp', () => { }); it('renders the app', () => { - const { core, config, apmRuleRegistry } = mockApmPluginContextValue; + const { + core, + config, + observabilityRuleTypeRegistry, + } = mockApmPluginContextValue; const plugins = { licensing: { license$: new Observable() }, triggersActionsUi: { actionTypeRegistry: {}, alertTypeRegistry: {} }, @@ -92,7 +96,7 @@ describe('renderApp', () => { appMountParameters: params as any, pluginsStart: startDeps as any, config, - apmRuleRegistry, + observabilityRuleTypeRegistry, }); }); diff --git a/x-pack/plugins/apm/public/application/csmApp.tsx b/x-pack/plugins/apm/public/application/csmApp.tsx index 17905074cfec1..11a2777f47f6a 100644 --- a/x-pack/plugins/apm/public/application/csmApp.tsx +++ b/x-pack/plugins/apm/public/application/csmApp.tsx @@ -12,6 +12,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { Route, Router } from 'react-router-dom'; import { DefaultTheme, ThemeProvider } from 'styled-components'; +import type { ObservabilityRuleTypeRegistry } from '../../../observability/public'; import { euiStyled } from '../../../../../src/plugins/kibana_react/common'; import { KibanaContextProvider, @@ -26,11 +27,7 @@ import { ApmPluginContext } from '../context/apm_plugin/apm_plugin_context'; import { UrlParamsProvider } from '../context/url_params_context/url_params_context'; import { useBreadcrumbs } from '../hooks/use_breadcrumbs'; import { ConfigSchema } from '../index'; -import { - ApmPluginSetupDeps, - ApmPluginStartDeps, - ApmRuleRegistry, -} from '../plugin'; +import { ApmPluginSetupDeps, ApmPluginStartDeps } from '../plugin'; import { createCallApmApi } from '../services/rest/createCallApmApi'; import { px, units } from '../style/variables'; import { createStaticIndexPattern } from '../services/rest/index_pattern'; @@ -77,14 +74,14 @@ export function CsmAppRoot({ deps, config, corePlugins: { embeddable, maps }, - apmRuleRegistry, + observabilityRuleTypeRegistry, }: { appMountParameters: AppMountParameters; core: CoreStart; deps: ApmPluginSetupDeps; config: ConfigSchema; corePlugins: ApmPluginStartDeps; - apmRuleRegistry: ApmRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; }) { const { history } = appMountParameters; const i18nCore = core.i18n; @@ -94,7 +91,7 @@ export function CsmAppRoot({ config, core, plugins, - apmRuleRegistry, + observabilityRuleTypeRegistry, }; return ( @@ -125,14 +122,14 @@ export const renderApp = ({ appMountParameters, config, corePlugins, - apmRuleRegistry, + observabilityRuleTypeRegistry, }: { core: CoreStart; deps: ApmPluginSetupDeps; appMountParameters: AppMountParameters; config: ConfigSchema; corePlugins: ApmPluginStartDeps; - apmRuleRegistry: ApmRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; }) => { const { element } = appMountParameters; @@ -151,7 +148,7 @@ export const renderApp = ({ deps={deps} config={config} corePlugins={corePlugins} - apmRuleRegistry={apmRuleRegistry} + observabilityRuleTypeRegistry={observabilityRuleTypeRegistry} />, element ); diff --git a/x-pack/plugins/apm/public/application/index.tsx b/x-pack/plugins/apm/public/application/index.tsx index acb55a02599f1..e2a0bdb6b48b1 100644 --- a/x-pack/plugins/apm/public/application/index.tsx +++ b/x-pack/plugins/apm/public/application/index.tsx @@ -13,6 +13,7 @@ import ReactDOM from 'react-dom'; import { Route, Router, Switch } from 'react-router-dom'; import 'react-vis/dist/style.css'; import { DefaultTheme, ThemeProvider } from 'styled-components'; +import type { ObservabilityRuleTypeRegistry } from '../../../observability/public'; import { euiStyled } from '../../../../../src/plugins/kibana_react/common'; import { ConfigSchema } from '../'; import { AppMountParameters, CoreStart } from '../../../../../src/core/public'; @@ -30,11 +31,7 @@ import { import { LicenseProvider } from '../context/license/license_context'; import { UrlParamsProvider } from '../context/url_params_context/url_params_context'; import { useBreadcrumbs } from '../hooks/use_breadcrumbs'; -import { - ApmPluginSetupDeps, - ApmPluginStartDeps, - ApmRuleRegistry, -} from '../plugin'; +import { ApmPluginSetupDeps, ApmPluginStartDeps } from '../plugin'; import { createCallApmApi } from '../services/rest/createCallApmApi'; import { createStaticIndexPattern } from '../services/rest/index_pattern'; import { setHelpExtension } from '../setHelpExtension'; @@ -112,14 +109,14 @@ export const renderApp = ({ appMountParameters, config, pluginsStart, - apmRuleRegistry, + observabilityRuleTypeRegistry, }: { coreStart: CoreStart; pluginsSetup: ApmPluginSetupDeps; appMountParameters: AppMountParameters; config: ConfigSchema; pluginsStart: ApmPluginStartDeps; - apmRuleRegistry: ApmRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; }) => { const { element } = appMountParameters; const apmPluginContextValue = { @@ -127,7 +124,7 @@ export const renderApp = ({ config, core: coreStart, plugins: pluginsSetup, - apmRuleRegistry, + observabilityRuleTypeRegistry, }; // render APM feedback link in global help menu diff --git a/x-pack/plugins/apm/public/components/alerting/register_apm_alerts.ts b/x-pack/plugins/apm/public/components/alerting/register_apm_alerts.ts index 98c8b99411bc3..7e788016baad2 100644 --- a/x-pack/plugins/apm/public/components/alerting/register_apm_alerts.ts +++ b/x-pack/plugins/apm/public/components/alerting/register_apm_alerts.ts @@ -8,9 +8,19 @@ import { i18n } from '@kbn/i18n'; import { lazy } from 'react'; import { stringify } from 'querystring'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, + ALERT_SEVERITY_LEVEL, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import type { ObservabilityRuleTypeRegistry } from '../../../../observability/public'; import { ENVIRONMENT_ALL } from '../../../common/environment_filter_values'; import { AlertType } from '../../../common/alert_types'; -import type { ApmRuleRegistry } from '../../plugin'; + +// copied from elasticsearch_fieldnames.ts to limit page load bundle size +const SERVICE_ENVIRONMENT = 'service.environment'; +const SERVICE_NAME = 'service.name'; +const TRANSACTION_TYPE = 'transaction.type'; const format = ({ pathname, @@ -22,28 +32,32 @@ const format = ({ return `${pathname}?${stringify(query)}`; }; -export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { - apmRuleRegistry.registerType({ +export function registerApmAlerts( + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry +) { + observabilityRuleTypeRegistry.register({ id: AlertType.ErrorCount, description: i18n.translate('xpack.apm.alertTypes.errorCount.description', { defaultMessage: 'Alert when the number of errors in a service exceeds a defined threshold.', }), - format: ({ alert }) => { + format: ({ fields }) => { return { reason: i18n.translate('xpack.apm.alertTypes.errorCount.reason', { defaultMessage: `Error count is greater than {threshold} (current value is {measured}) for {serviceName}`, values: { - threshold: alert['kibana.observability.evaluation.threshold'], - measured: alert['kibana.observability.evaluation.value'], - serviceName: alert['service.name']!, + threshold: fields[ALERT_EVALUATION_THRESHOLD], + measured: fields[ALERT_EVALUATION_VALUE], + serviceName: String(fields[SERVICE_NAME][0]), }, }), link: format({ - pathname: `/app/apm/services/${alert['service.name']!}/errors`, + pathname: `/app/apm/services/${String( + fields[SERVICE_NAME][0] + )}/errors`, query: { - ...(alert['service.environment'] - ? { environment: alert['service.environment'] } + ...(fields[SERVICE_ENVIRONMENT]?.[0] + ? { environment: String(fields[SERVICE_ENVIRONMENT][0]) } : { environment: ENVIRONMENT_ALL.value }), }, }), @@ -71,7 +85,7 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { ), }); - apmRuleRegistry.registerType({ + observabilityRuleTypeRegistry.register({ id: AlertType.TransactionDuration, description: i18n.translate( 'xpack.apm.alertTypes.transactionDuration.description', @@ -80,28 +94,24 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { 'Alert when the latency of a specific transaction type in a service exceeds a defined threshold.', } ), - format: ({ alert, formatters: { asDuration } }) => ({ + format: ({ fields, formatters: { asDuration } }) => ({ reason: i18n.translate( 'xpack.apm.alertTypes.transactionDuration.reason', { defaultMessage: `Latency is above {threshold} (current value is {measured}) for {serviceName}`, values: { - threshold: asDuration( - alert['kibana.observability.evaluation.threshold'] - ), - measured: asDuration( - alert['kibana.observability.evaluation.value'] - ), - serviceName: alert['service.name']!, + threshold: asDuration(fields[ALERT_EVALUATION_THRESHOLD]), + measured: asDuration(fields[ALERT_EVALUATION_VALUE]), + serviceName: String(fields[SERVICE_NAME][0]), }, } ), link: format({ - pathname: `/app/apm/services/${alert['service.name']!}`, + pathname: `/app/apm/services/${fields[SERVICE_NAME][0]!}`, query: { - transactionType: alert['transaction.type']!, - ...(alert['service.environment'] - ? { environment: alert['service.environment'] } + transactionType: fields[TRANSACTION_TYPE][0]!, + ...(fields[SERVICE_ENVIRONMENT]?.[0] + ? { environment: String(fields[SERVICE_ENVIRONMENT][0]) } : { environment: ENVIRONMENT_ALL.value }), }, }), @@ -131,7 +141,7 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { ), }); - apmRuleRegistry.registerType({ + observabilityRuleTypeRegistry.register({ id: AlertType.TransactionErrorRate, description: i18n.translate( 'xpack.apm.alertTypes.transactionErrorRate.description', @@ -140,30 +150,24 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { 'Alert when the rate of transaction errors in a service exceeds a defined threshold.', } ), - format: ({ alert, formatters: { asPercent } }) => ({ + format: ({ fields, formatters: { asPercent } }) => ({ reason: i18n.translate( 'xpack.apm.alertTypes.transactionErrorRate.reason', { defaultMessage: `Transaction error rate is greater than {threshold} (current value is {measured}) for {serviceName}`, values: { - threshold: asPercent( - alert['kibana.observability.evaluation.threshold'], - 100 - ), - measured: asPercent( - alert['kibana.observability.evaluation.value'], - 100 - ), - serviceName: alert['service.name']!, + threshold: asPercent(fields[ALERT_EVALUATION_THRESHOLD], 100), + measured: asPercent(fields[ALERT_EVALUATION_VALUE], 100), + serviceName: String(fields[SERVICE_NAME][0]), }, } ), link: format({ - pathname: `/app/apm/services/${alert['service.name']!}`, + pathname: `/app/apm/services/${String(fields[SERVICE_NAME][0]!)}`, query: { - transactionType: alert['transaction.type']!, - ...(alert['service.environment'] - ? { environment: alert['service.environment'] } + transactionType: String(fields[TRANSACTION_TYPE][0]!), + ...(fields[SERVICE_ENVIRONMENT]?.[0] + ? { environment: String(fields[SERVICE_ENVIRONMENT][0]) } : { environment: ENVIRONMENT_ALL.value }), }, }), @@ -193,7 +197,7 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { ), }); - apmRuleRegistry.registerType({ + observabilityRuleTypeRegistry.register({ id: AlertType.TransactionDurationAnomaly, description: i18n.translate( 'xpack.apm.alertTypes.transactionDurationAnomaly.description', @@ -201,24 +205,24 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { defaultMessage: 'Alert when the latency of a service is abnormal.', } ), - format: ({ alert }) => ({ + format: ({ fields }) => ({ reason: i18n.translate( 'xpack.apm.alertTypes.transactionDurationAnomaly.reason', { defaultMessage: `{severityLevel} anomaly detected for {serviceName} (score was {measured})`, values: { - serviceName: alert['service.name'], - severityLevel: alert['kibana.rac.alert.severity.level'], - measured: alert['kibana.observability.evaluation.value'], + serviceName: String(fields[SERVICE_NAME][0]), + severityLevel: String(fields[ALERT_SEVERITY_LEVEL]), + measured: Number(fields[ALERT_EVALUATION_VALUE]), }, } ), link: format({ - pathname: `/app/apm/services/${alert['service.name']!}`, + pathname: `/app/apm/services/${String(fields[SERVICE_NAME][0])}`, query: { - transactionType: alert['transaction.type']!, - ...(alert['service.environment'] - ? { environment: alert['service.environment'] } + transactionType: String(fields[TRANSACTION_TYPE][0]), + ...(fields[SERVICE_ENVIRONMENT]?.[0] + ? { environment: String(fields[SERVICE_ENVIRONMENT][0]) } : { environment: ENVIRONMENT_ALL.value }), }, }), diff --git a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx index 19a567a3866bd..16ac1a35666d2 100644 --- a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx @@ -19,6 +19,7 @@ import { import { EuiTitle } from '@elastic/eui'; import d3 from 'd3'; import React from 'react'; +import { RULE_ID } from '@kbn/rule-data-utils/target/technical_field_names'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { asRelativeDateTimeRange } from '../../../../../common/utils/formatters'; @@ -115,7 +116,7 @@ export function ErrorDistribution({ distribution, title }: Props) { /> {getAlertAnnotations({ alerts: alerts?.filter( - (alert) => alert['rule.id'] === AlertType.ErrorCount + (alert) => alert[RULE_ID]?.[0] === AlertType.ErrorCount ), theme, })} diff --git a/x-pack/plugins/apm/public/components/app/Home/__snapshots__/Home.test.tsx.snap b/x-pack/plugins/apm/public/components/app/Home/__snapshots__/Home.test.tsx.snap index b1bcf561bed84..f13cce3fd9b40 100644 --- a/x-pack/plugins/apm/public/components/app/Home/__snapshots__/Home.test.tsx.snap +++ b/x-pack/plugins/apm/public/components/app/Home/__snapshots__/Home.test.tsx.snap @@ -4,10 +4,6 @@ exports[`Home component should render services 1`] = ` alert['kibana.rac.alert.id']! + const collapsedAlerts = uniqBy(alerts, (alert) => alert[ALERT_ID]![0]!).map( + (alert) => { + return parseTechnicalFields(alert); + } ); return ( {collapsedAlerts.map((alert) => { - const ruleType = apmRuleRegistry.getTypeByRuleId(alert['rule.id']!); + const formatter = observabilityRuleTypeRegistry.getFormatter( + alert[RULE_ID]! + ); const formatted = { link: undefined, - reason: alert['rule.name'], - ...(ruleType?.format?.({ - alert, + reason: alert[RULE_NAME], + ...(formatter?.({ + fields: alert, formatters: { asDuration, asPercent }, }) ?? {}), }; @@ -55,7 +65,7 @@ export function AlertDetails({ alerts }: AlertDetailProps) { : undefined; return ( - + {parsedLink ? ( @@ -79,7 +89,7 @@ export function AlertDetails({ alerts }: AlertDetailProps) { diff --git a/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx b/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx index 2c086dbb17222..e906707730baa 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx @@ -9,6 +9,13 @@ import { ValuesType } from 'utility-types'; import { RectAnnotation } from '@elastic/charts'; import { EuiTheme } from 'src/plugins/kibana_react/common'; import { rgba } from 'polished'; +import { + ALERT_DURATION, + RULE_ID, + ALERT_START, + ALERT_UUID, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { parseTechnicalFields } from '../../../../../../rule_registry/common'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; type Alert = ValuesType< @@ -30,10 +37,11 @@ export function getAlertAnnotations({ theme: EuiTheme; }) { return alerts?.flatMap((alert) => { - const uuid = alert['kibana.rac.alert.uuid']!; - const start = new Date(alert['kibana.rac.alert.start']!).getTime(); - const end = start + alert['kibana.rac.alert.duration.us']! / 1000; - const color = getAlertColor({ ruleId: alert['rule.id']!, theme }); + const parsed = parseTechnicalFields(alert); + const uuid = parsed[ALERT_UUID]!; + const start = new Date(parsed[ALERT_START]!).getTime(); + const end = start + parsed[ALERT_DURATION]! / 1000; + const color = getAlertColor({ ruleId: parsed[RULE_ID]!, theme }); return [ - alert['rule.id'] === AlertType.TransactionDuration || - alert['rule.id'] === AlertType.TransactionDurationAnomaly + alert[RULE_ID]?.[0] === AlertType.TransactionDuration || + alert[RULE_ID]?.[0] === AlertType.TransactionDurationAnomaly )} /> diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx index 9aefa55aaaa36..7eceaf5ca8e5d 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx @@ -9,6 +9,7 @@ import { EuiPanel, EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; import { useParams } from 'react-router-dom'; +import { RULE_ID } from '../../../../../../rule_registry/common/technical_rule_data_field_names'; import { AlertType } from '../../../../../common/alert_types'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { asPercent } from '../../../../../common/utils/formatters'; @@ -152,7 +153,7 @@ export function TransactionErrorRateChart({ yDomain={{ min: 0, max: 1 }} customTheme={comparisonChartThem} alerts={alerts.filter( - (alert) => alert['rule.id'] === AlertType.TransactionErrorRate + (alert) => alert[RULE_ID]?.[0] === AlertType.TransactionErrorRate )} /> diff --git a/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx b/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx index 175471e7ae817..ec42a11783273 100644 --- a/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx +++ b/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx @@ -7,8 +7,9 @@ import { AppMountParameters, CoreStart } from 'kibana/public'; import { createContext } from 'react'; +import type { ObservabilityRuleTypeRegistry } from '../../../../observability/public'; import { ConfigSchema } from '../..'; -import { ApmPluginSetupDeps, ApmRuleRegistry } from '../../plugin'; +import { ApmPluginSetupDeps } from '../../plugin'; import { MapsStartApi } from '../../../../maps/public'; export interface ApmPluginContextValue { @@ -16,7 +17,7 @@ export interface ApmPluginContextValue { config: ConfigSchema; core: CoreStart; plugins: ApmPluginSetupDeps & { maps?: MapsStartApi }; - apmRuleRegistry: ApmRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; } export const ApmPluginContext = createContext({} as ApmPluginContextValue); diff --git a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx index 07da5ea7f6c1f..a16f81826636b 100644 --- a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx +++ b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx @@ -7,12 +7,12 @@ import React, { ReactNode } from 'react'; import { Observable, of } from 'rxjs'; +import { createObservabilityRuleTypeRegistryMock } from '../../../../observability/public'; import { ApmPluginContext, ApmPluginContextValue } from './apm_plugin_context'; import { ConfigSchema } from '../..'; import { UI_SETTINGS } from '../../../../../../src/plugins/data/common'; import { createCallApmApi } from '../../services/rest/createCallApmApi'; import { MlUrlGenerator } from '../../../../ml/public'; -import { ApmRuleRegistry } from '../../plugin'; const uiSettings: Record = { [UI_SETTINGS.TIMEPICKER_QUICK_RANGES]: [ @@ -77,11 +77,6 @@ const mockCore = { }, }; -const mockApmRuleRegistry = ({ - getTypeByRuleId: () => undefined, - registerType: () => undefined, -} as unknown) as ApmRuleRegistry; - const mockConfig: ConfigSchema = { serviceMapEnabled: true, ui: { @@ -116,7 +111,7 @@ export const mockApmPluginContextValue = { config: mockConfig, core: mockCore, plugins: mockPlugin, - apmRuleRegistry: mockApmRuleRegistry, + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), }; export function MockApmPluginContextWrapper({ diff --git a/x-pack/plugins/apm/public/plugin.ts b/x-pack/plugins/apm/public/plugin.ts index f7bbe647d8e37..b493363d98f7a 100644 --- a/x-pack/plugins/apm/public/plugin.ts +++ b/x-pack/plugins/apm/public/plugin.ts @@ -34,19 +34,15 @@ import type { HasDataParams, ObservabilityPublicSetup, } from '../../observability/public'; -import { FormatterRuleRegistry } from '../../observability/public'; import type { TriggersAndActionsUIPublicPluginSetup, TriggersAndActionsUIPublicPluginStart, } from '../../triggers_actions_ui/public'; -import { apmRuleRegistrySettings } from '../common/rules/apm_rule_registry_settings'; -import type { APMRuleFieldMap } from '../common/rules/apm_rule_field_map'; import { registerApmAlerts } from './components/alerting/register_apm_alerts'; import { featureCatalogueEntry } from './featureCatalogueEntry'; import { toggleAppLinkInNav } from './toggleAppLinkInNav'; export type ApmPluginSetup = ReturnType; -export type ApmRuleRegistry = ApmPluginSetup['ruleRegistry']; export type ApmPluginStart = void; @@ -87,11 +83,6 @@ export class ApmPlugin implements Plugin { pluginSetupDeps.home.featureCatalogue.register(featureCatalogueEntry); } - const apmRuleRegistry = plugins.observability.ruleRegistry.create({ - ...apmRuleRegistrySettings, - fieldMap: {} as APMRuleFieldMap, - ctor: FormatterRuleRegistry, - }); const getApmDataHelper = async () => { const { fetchObservabilityOverviewPageData, @@ -127,6 +118,8 @@ export class ApmPlugin implements Plugin { return { fetchUxOverviewDate, hasRumData }; }; + const { observabilityRuleTypeRegistry } = plugins.observability; + plugins.observability.dashboard.register({ appName: 'ux', hasData: async (params?: HasDataParams) => { @@ -187,12 +180,12 @@ export class ApmPlugin implements Plugin { appMountParameters, config, pluginsStart: pluginsStart as ApmPluginStartDeps, - apmRuleRegistry, + observabilityRuleTypeRegistry, }); }, }); - registerApmAlerts(apmRuleRegistry); + registerApmAlerts(observabilityRuleTypeRegistry); core.application.register({ id: 'ux', @@ -231,14 +224,12 @@ export class ApmPlugin implements Plugin { appMountParameters, config, corePlugins: corePlugins as ApmPluginStartDeps, - apmRuleRegistry, + observabilityRuleTypeRegistry, }); }, }); - return { - ruleRegistry: apmRuleRegistry, - }; + return {}; } public start(core: CoreStart, plugins: ApmPluginStartDeps) { toggleAppLinkInNav(core, this.initializerContext.config.get()); diff --git a/x-pack/plugins/apm/server/lib/alerts/register_apm_alerts.ts b/x-pack/plugins/apm/server/lib/alerts/register_apm_alerts.ts index 9a362efa90ac0..022fad6fa7840 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_apm_alerts.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_apm_alerts.ts @@ -7,17 +7,19 @@ import { Observable } from 'rxjs'; import { Logger } from 'kibana/server'; +import { PluginSetupContract as AlertingPluginSetupContract } from '../../../../alerting/server'; +import { RuleDataClient } from '../../../../rule_registry/server'; import { registerTransactionDurationAlertType } from './register_transaction_duration_alert_type'; import { registerTransactionDurationAnomalyAlertType } from './register_transaction_duration_anomaly_alert_type'; import { registerErrorCountAlertType } from './register_error_count_alert_type'; import { APMConfig } from '../..'; import { MlPluginSetup } from '../../../../ml/server'; import { registerTransactionErrorRateAlertType } from './register_transaction_error_rate_alert_type'; -import { APMRuleRegistry } from '../../plugin'; export interface RegisterRuleDependencies { - registry: APMRuleRegistry; + ruleDataClient: RuleDataClient; ml?: MlPluginSetup; + alerting: AlertingPluginSetupContract; config$: Observable; logger: Logger; } diff --git a/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts index 15ec5d0ef0bd0..885b22ae343d8 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts @@ -7,6 +7,11 @@ import { schema } from '@kbn/config-schema'; import { take } from 'rxjs/operators'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; import { ENVIRONMENT_NOT_DEFINED } from '../../../common/environment_filter_values'; import { asMutableArray } from '../../../common/utils/as_mutable_array'; import { AlertType, ALERT_TYPES_CONFIG } from '../../../common/alert_types'; @@ -21,7 +26,6 @@ import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; import { alertingEsClient } from './alerting_es_client'; import { RegisterRuleDependencies } from './register_apm_alerts'; -import { createAPMLifecycleRuleType } from './create_apm_lifecycle_rule_type'; const paramsSchema = schema.object({ windowSize: schema.number(), @@ -34,11 +38,18 @@ const paramsSchema = schema.object({ const alertTypeConfig = ALERT_TYPES_CONFIG[AlertType.ErrorCount]; export function registerErrorCountAlertType({ - registry, + alerting, + logger, + ruleDataClient, config$, }: RegisterRuleDependencies) { - registry.registerType( - createAPMLifecycleRuleType({ + const createLifecycleRuleType = createLifecycleRuleTypeFactory({ + ruleDataClient, + logger, + }); + + alerting.registerType( + createLifecycleRuleType({ id: AlertType.ErrorCount, name: alertTypeConfig.name, actionGroups: alertTypeConfig.actionGroups, @@ -146,9 +157,8 @@ export function registerErrorCountAlertType({ ? { [SERVICE_ENVIRONMENT]: environment } : {}), [PROCESSOR_EVENT]: ProcessorEvent.error, - 'kibana.observability.evaluation.value': errorCount, - 'kibana.observability.evaluation.threshold': - alertParams.threshold, + [ALERT_EVALUATION_VALUE]: errorCount, + [ALERT_EVALUATION_THRESHOLD]: alertParams.threshold, }, }) .scheduleActions(alertTypeConfig.defaultActionGroupId, { diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts index 4918a6cc892b7..f77cc3ee930b1 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts @@ -8,6 +8,11 @@ import { schema } from '@kbn/config-schema'; import { take } from 'rxjs/operators'; import { QueryContainer } from '@elastic/elasticsearch/api/types'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; import { parseEnvironmentUrlParam } from '../../../common/environment_filter_values'; import { AlertType, ALERT_TYPES_CONFIG } from '../../../common/alert_types'; import { @@ -24,7 +29,6 @@ import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; import { alertingEsClient } from './alerting_es_client'; import { RegisterRuleDependencies } from './register_apm_alerts'; -import { createAPMLifecycleRuleType } from './create_apm_lifecycle_rule_type'; const paramsSchema = schema.object({ serviceName: schema.string(), @@ -43,130 +47,142 @@ const paramsSchema = schema.object({ const alertTypeConfig = ALERT_TYPES_CONFIG[AlertType.TransactionDuration]; export function registerTransactionDurationAlertType({ - registry, + alerting, + ruleDataClient, config$, + logger, }: RegisterRuleDependencies) { - registry.registerType( - createAPMLifecycleRuleType({ - id: AlertType.TransactionDuration, - name: alertTypeConfig.name, - actionGroups: alertTypeConfig.actionGroups, - defaultActionGroupId: alertTypeConfig.defaultActionGroupId, - validate: { - params: paramsSchema, - }, - actionVariables: { - context: [ - apmActionVariables.serviceName, - apmActionVariables.transactionType, - apmActionVariables.environment, - apmActionVariables.threshold, - apmActionVariables.triggerValue, - apmActionVariables.interval, - ], - }, - producer: 'apm', - minimumLicenseRequired: 'basic', - executor: async ({ services, params }) => { - const config = await config$.pipe(take(1)).toPromise(); - const alertParams = params; - const indices = await getApmIndices({ - config, - savedObjectsClient: services.savedObjectsClient, - }); - - const searchParams = { - index: indices['apm_oss.transactionIndices'], - body: { - size: 0, - query: { - bool: { - filter: [ - { - range: { - '@timestamp': { - gte: `now-${alertParams.windowSize}${alertParams.windowUnit}`, - }, + const createLifecycleRuleType = createLifecycleRuleTypeFactory({ + ruleDataClient, + logger, + }); + + const type = createLifecycleRuleType({ + id: AlertType.TransactionDuration, + name: alertTypeConfig.name, + actionGroups: alertTypeConfig.actionGroups, + defaultActionGroupId: alertTypeConfig.defaultActionGroupId, + validate: { + params: paramsSchema, + }, + actionVariables: { + context: [ + apmActionVariables.serviceName, + apmActionVariables.transactionType, + apmActionVariables.environment, + apmActionVariables.threshold, + apmActionVariables.triggerValue, + apmActionVariables.interval, + ], + }, + producer: 'apm', + minimumLicenseRequired: 'basic', + executor: async ({ services, params }) => { + const config = await config$.pipe(take(1)).toPromise(); + const alertParams = params; + const indices = await getApmIndices({ + config, + savedObjectsClient: services.savedObjectsClient, + }); + + const searchParams = { + index: indices['apm_oss.transactionIndices'], + body: { + size: 0, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: `now-${alertParams.windowSize}${alertParams.windowUnit}`, }, }, - { term: { [PROCESSOR_EVENT]: ProcessorEvent.transaction } }, - { term: { [SERVICE_NAME]: alertParams.serviceName } }, - { term: { [TRANSACTION_TYPE]: alertParams.transactionType } }, - ...environmentQuery(alertParams.environment), - ] as QueryContainer[], - }, + }, + { + term: { [PROCESSOR_EVENT]: ProcessorEvent.transaction }, + }, + { term: { [SERVICE_NAME]: alertParams.serviceName } }, + { + term: { + [TRANSACTION_TYPE]: alertParams.transactionType, + }, + }, + ...environmentQuery(alertParams.environment), + ] as QueryContainer[], }, - aggs: { - latency: - alertParams.aggregationType === 'avg' - ? { avg: { field: TRANSACTION_DURATION } } - : { - percentiles: { - field: TRANSACTION_DURATION, - percents: [ - alertParams.aggregationType === '95th' ? 95 : 99, - ], - }, + }, + aggs: { + latency: + alertParams.aggregationType === 'avg' + ? { avg: { field: TRANSACTION_DURATION } } + : { + percentiles: { + field: TRANSACTION_DURATION, + percents: [ + alertParams.aggregationType === '95th' ? 95 : 99, + ], }, - }, + }, }, - }; - - const response = await alertingEsClient({ - scopedClusterClient: services.scopedClusterClient, - params: searchParams, - }); - - if (!response.aggregations) { - return {}; - } - - const { latency } = response.aggregations; - - const transactionDuration = - 'values' in latency - ? Object.values(latency.values)[0] - : latency?.value; - - const threshold = alertParams.threshold * 1000; - - if (transactionDuration && transactionDuration > threshold) { - const durationFormatter = getDurationFormatter(transactionDuration); - const transactionDurationFormatted = durationFormatter( - transactionDuration - ).formatted; - - const environmentParsed = parseEnvironmentUrlParam( - alertParams.environment - ); - - services - .alertWithLifecycle({ - id: `${AlertType.TransactionDuration}_${environmentParsed.text}`, - fields: { - [SERVICE_NAME]: alertParams.serviceName, - ...(environmentParsed.esFieldValue - ? { [SERVICE_ENVIRONMENT]: environmentParsed.esFieldValue } - : {}), - [TRANSACTION_TYPE]: alertParams.transactionType, - [PROCESSOR_EVENT]: ProcessorEvent.transaction, - 'kibana.observability.evaluation.value': transactionDuration, - 'kibana.observability.evaluation.threshold': - alertParams.threshold * 1000, - }, - }) - .scheduleActions(alertTypeConfig.defaultActionGroupId, { - transactionType: alertParams.transactionType, - serviceName: alertParams.serviceName, - environment: environmentParsed.text, - threshold, - triggerValue: transactionDurationFormatted, - interval: `${alertParams.windowSize}${alertParams.windowUnit}`, - }); - } + }, + }; + const response = await alertingEsClient({ + scopedClusterClient: services.scopedClusterClient, + params: searchParams, + }); + + if (!response.aggregations) { return {}; - }, - }) - ); + } + + const { latency } = response.aggregations; + + const transactionDuration = + 'values' in latency ? Object.values(latency.values)[0] : latency?.value; + + const threshold = alertParams.threshold * 1000; + + if (transactionDuration && transactionDuration > threshold) { + const durationFormatter = getDurationFormatter(transactionDuration); + const transactionDurationFormatted = durationFormatter( + transactionDuration + ).formatted; + + const environmentParsed = parseEnvironmentUrlParam( + alertParams.environment + ); + + services + .alertWithLifecycle({ + id: `${AlertType.TransactionDuration}_${environmentParsed.text}`, + fields: { + [SERVICE_NAME]: alertParams.serviceName, + ...(environmentParsed.esFieldValue + ? { + [SERVICE_ENVIRONMENT]: environmentParsed.esFieldValue, + } + : {}), + [TRANSACTION_TYPE]: alertParams.transactionType, + [PROCESSOR_EVENT]: ProcessorEvent.transaction, + [ALERT_EVALUATION_VALUE]: transactionDuration, + [ALERT_EVALUATION_THRESHOLD]: alertParams.threshold * 1000, + }, + }) + .scheduleActions(alertTypeConfig.defaultActionGroupId, { + transactionType: alertParams.transactionType, + serviceName: alertParams.serviceName, + environment: environmentParsed.text, + threshold, + triggerValue: transactionDurationFormatted, + interval: `${alertParams.windowSize}${alertParams.windowUnit}`, + }); + } + + return {}; + }, + }); + + alerting.registerType(type); } diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts index 67ff7cdb8e4e0..399fb9a216ef5 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts @@ -9,6 +9,13 @@ import { schema } from '@kbn/config-schema'; import { compact } from 'lodash'; import { ESSearchResponse } from 'typings/elasticsearch'; import { QueryContainer } from '@elastic/elasticsearch/api/types'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, + ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY_VALUE, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; import { ProcessorEvent } from '../../../common/processor_event'; import { getSeverity } from '../../../common/anomaly_detection'; import { @@ -29,7 +36,6 @@ import { getMLJobs } from '../service_map/get_service_anomalies'; import { apmActionVariables } from './action_variables'; import { RegisterRuleDependencies } from './register_apm_alerts'; import { parseEnvironmentUrlParam } from '../../../common/environment_filter_values'; -import { createAPMLifecycleRuleType } from './create_apm_lifecycle_rule_type'; const paramsSchema = schema.object({ serviceName: schema.maybe(schema.string()), @@ -49,11 +55,18 @@ const alertTypeConfig = ALERT_TYPES_CONFIG[AlertType.TransactionDurationAnomaly]; export function registerTransactionDurationAnomalyAlertType({ - registry, + logger, + ruleDataClient, + alerting, ml, }: RegisterRuleDependencies) { - registry.registerType( - createAPMLifecycleRuleType({ + const createLifecycleRuleType = createLifecycleRuleTypeFactory({ + logger, + ruleDataClient, + }); + + alerting.registerType( + createLifecycleRuleType({ id: AlertType.TransactionDurationAnomaly, name: alertTypeConfig.name, actionGroups: alertTypeConfig.actionGroups, @@ -190,7 +203,7 @@ export function registerTransactionDurationAnomalyAlertType({ const job = mlJobs.find((j) => j.job_id === latest.job_id); if (!job) { - services.logger.warn( + logger.warn( `Could not find matching job for job id ${latest.job_id}` ); return undefined; @@ -231,10 +244,10 @@ export function registerTransactionDurationAnomalyAlertType({ : {}), [TRANSACTION_TYPE]: transactionType, [PROCESSOR_EVENT]: ProcessorEvent.transaction, - 'kibana.rac.alert.severity.level': severityLevel, - 'kibana.rac.alert.severity.value': score, - 'kibana.observability.evaluation.value': score, - 'kibana.observability.evaluation.threshold': threshold, + [ALERT_SEVERITY_LEVEL]: severityLevel, + [ALERT_SEVERITY_VALUE]: score, + [ALERT_EVALUATION_VALUE]: score, + [ALERT_EVALUATION_THRESHOLD]: threshold, }, }) .scheduleActions(alertTypeConfig.defaultActionGroupId, { diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts index bead17e308f06..4d6a0685fd379 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts @@ -7,6 +7,11 @@ import { schema } from '@kbn/config-schema'; import { take } from 'rxjs/operators'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; import { AlertType, ALERT_TYPES_CONFIG } from '../../../common/alert_types'; import { EVENT_OUTCOME, @@ -22,7 +27,6 @@ import { environmentQuery } from '../../../server/utils/queries'; import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; import { alertingEsClient } from './alerting_es_client'; -import { createAPMLifecycleRuleType } from './create_apm_lifecycle_rule_type'; import { RegisterRuleDependencies } from './register_apm_alerts'; const paramsSchema = schema.object({ @@ -37,11 +41,18 @@ const paramsSchema = schema.object({ const alertTypeConfig = ALERT_TYPES_CONFIG[AlertType.TransactionErrorRate]; export function registerTransactionErrorRateAlertType({ - registry, + alerting, + ruleDataClient, + logger, config$, }: RegisterRuleDependencies) { - registry.registerType( - createAPMLifecycleRuleType({ + const createLifecycleRuleType = createLifecycleRuleTypeFactory({ + ruleDataClient, + logger, + }); + + alerting.registerType( + createLifecycleRuleType({ id: AlertType.TransactionErrorRate, name: alertTypeConfig.name, actionGroups: alertTypeConfig.actionGroups, @@ -183,9 +194,8 @@ export function registerTransactionErrorRateAlertType({ ...(environment ? { [SERVICE_ENVIRONMENT]: environment } : {}), [TRANSACTION_TYPE]: transactionType, [PROCESSOR_EVENT]: ProcessorEvent.transaction, - 'kibana.observability.evaluation.value': errorRate, - 'kibana.observability.evaluation.threshold': - alertParams.threshold, + [ALERT_EVALUATION_VALUE]: errorRate, + [ALERT_EVALUATION_THRESHOLD]: alertParams.threshold, }, }) .scheduleActions(alertTypeConfig.defaultActionGroupId, { diff --git a/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts b/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts index 37b3e282d0a59..ce1466bff01a9 100644 --- a/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts +++ b/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts @@ -8,8 +8,9 @@ import { Logger } from 'kibana/server'; import { of } from 'rxjs'; import { elasticsearchServiceMock } from 'src/core/server/mocks'; +import type { RuleDataClient } from '../../../../../rule_registry/server'; +import { PluginSetupContract as AlertingPluginSetupContract } from '../../../../../alerting/server'; import { APMConfig } from '../../..'; -import { APMRuleRegistry } from '../../../plugin'; export const createRuleTypeMocks = () => { let alertExecutor: (...args: any[]) => Promise; @@ -27,19 +28,16 @@ export const createRuleTypeMocks = () => { error: jest.fn(), } as unknown) as Logger; - const registry = { + const alerting = { registerType: ({ executor }) => { alertExecutor = executor; }, - } as APMRuleRegistry; + } as AlertingPluginSetupContract; const scheduleActions = jest.fn(); const services = { scopedClusterClient: elasticsearchServiceMock.createScopedClusterClient(), - scopedRuleRegistryClient: { - bulkIndex: jest.fn(), - }, alertInstanceFactory: jest.fn(() => ({ scheduleActions })), alertWithLifecycle: jest.fn(), logger: loggerMock, @@ -47,9 +45,21 @@ export const createRuleTypeMocks = () => { return { dependencies: { - registry, + alerting, config$: mockedConfig$, logger: loggerMock, + ruleDataClient: ({ + getReader: () => { + return { + search: jest.fn(), + }; + }, + getWriter: () => { + return { + bulk: jest.fn(), + }; + }, + } as unknown) as RuleDataClient, }, services, scheduleActions, diff --git a/x-pack/plugins/apm/server/lib/services/get_service_alerts.ts b/x-pack/plugins/apm/server/lib/services/get_service_alerts.ts index 6356731cc48d1..f58452ce4d916 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_alerts.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_alerts.ts @@ -5,33 +5,30 @@ * 2.0. */ +import { ALERT_UUID } from '@kbn/rule-data-utils/target/technical_field_names'; +import { RuleDataClient } from '../../../../rule_registry/server'; import { SERVICE_NAME, TRANSACTION_TYPE, } from '../../../common/elasticsearch_fieldnames'; -import type { PromiseReturnType } from '../../../../observability/typings/common'; -import type { APMRuleRegistry } from '../../plugin'; import { environmentQuery, rangeQuery } from '../../utils/queries'; export async function getServiceAlerts({ - apmRuleRegistryClient, + ruleDataClient, start, end, serviceName, environment, transactionType, }: { - apmRuleRegistryClient: Exclude< - PromiseReturnType, - undefined - >; + ruleDataClient: RuleDataClient; start: number; end: number; serviceName: string; environment?: string; transactionType: string; }) { - const response = await apmRuleRegistryClient.search({ + const response = await ruleDataClient.getReader().search({ body: { query: { bool: { @@ -68,13 +65,14 @@ export async function getServiceAlerts({ size: 100, fields: ['*'], collapse: { - field: 'kibana.rac.alert.uuid', + field: ALERT_UUID, }, sort: { '@timestamp': 'desc', }, }, + allow_no_indices: true, }); - return response.events; + return response.hits.hits.map((hit) => hit.fields); } diff --git a/x-pack/plugins/apm/server/plugin.ts b/x-pack/plugins/apm/server/plugin.ts index e12d089855834..44334889128c4 100644 --- a/x-pack/plugins/apm/server/plugin.ts +++ b/x-pack/plugins/apm/server/plugin.ts @@ -16,7 +16,10 @@ import { Plugin, PluginInitializerContext, } from 'src/core/server'; -import { mapValues } from 'lodash'; +import { mapValues, once } from 'lodash'; +import { TECHNICAL_COMPONENT_TEMPLATE_NAME } from '../../rule_registry/common/assets'; +import { mappingFromFieldMap } from '../../rule_registry/common/mapping_from_field_map'; +import { RuleDataClient } from '../../rule_registry/server'; import { APMConfig, APMXPackConfig } from '.'; import { mergeConfigs } from './index'; import { UI_SETTINGS } from '../../../../src/plugins/data/common'; @@ -42,10 +45,12 @@ import { } from './types'; import { registerRoutes } from './routes/register_routes'; import { getGlobalApmServerRouteRepository } from './routes/get_global_apm_server_route_repository'; -import { apmRuleRegistrySettings } from '../common/rules/apm_rule_registry_settings'; -import { apmRuleFieldMap } from '../common/rules/apm_rule_field_map'; - -export type APMRuleRegistry = ReturnType['ruleRegistry']; +import { + PROCESSOR_EVENT, + SERVICE_ENVIRONMENT, + SERVICE_NAME, + TRANSACTION_TYPE, +} from '../common/elasticsearch_fieldnames'; export class APMPlugin implements @@ -124,20 +129,81 @@ export class APMPlugin registerFeaturesUsage({ licensingPlugin: plugins.licensing }); - const apmRuleRegistry = plugins.observability.ruleRegistry.create({ - ...apmRuleRegistrySettings, - fieldMap: apmRuleFieldMap, + const getCoreStart = () => + core.getStartServices().then(([coreStart]) => coreStart); + + const ready = once(async () => { + const componentTemplateName = plugins.ruleRegistry.getFullAssetName( + 'apm-mappings' + ); + + if (!plugins.ruleRegistry.isWriteEnabled()) { + return; + } + + await plugins.ruleRegistry.createOrUpdateComponentTemplate({ + name: componentTemplateName, + body: { + template: { + settings: { + number_of_shards: 1, + }, + mappings: mappingFromFieldMap({ + [SERVICE_NAME]: { + type: 'keyword', + }, + [SERVICE_ENVIRONMENT]: { + type: 'keyword', + }, + [TRANSACTION_TYPE]: { + type: 'keyword', + }, + [PROCESSOR_EVENT]: { + type: 'keyword', + }, + }), + }, + }, + }); + + await plugins.ruleRegistry.createOrUpdateIndexTemplate({ + name: plugins.ruleRegistry.getFullAssetName('apm-index-template'), + body: { + index_patterns: [ + plugins.ruleRegistry.getFullAssetName('observability-apm*'), + ], + composed_of: [ + plugins.ruleRegistry.getFullAssetName( + TECHNICAL_COMPONENT_TEMPLATE_NAME + ), + componentTemplateName, + ], + }, + }); + }); + + ready().catch((err) => { + this.logger!.error(err); + }); + + const ruleDataClient = new RuleDataClient({ + alias: plugins.ruleRegistry.getFullAssetName('observability-apm'), + getClusterClient: async () => { + const coreStart = await getCoreStart(); + return coreStart.elasticsearch.client.asInternalUser; + }, + ready, }); registerRoutes({ core: { setup: core, - start: () => core.getStartServices().then(([coreStart]) => coreStart), + start: getCoreStart, }, logger: this.logger, config: currentConfig, repository: getGlobalApmServerRouteRepository(), - apmRuleRegistry, + ruleDataClient, plugins: mapValues(plugins, (value, key) => { return { setup: value, @@ -157,12 +223,16 @@ export class APMPlugin savedObjectsClient: await getInternalSavedObjectsClient(core), config: await mergedConfig$.pipe(take(1)).toPromise(), }); - registerApmAlerts({ - registry: apmRuleRegistry, - ml: plugins.ml, - config$: mergedConfig$, - logger: this.logger!.get('rule'), - }); + + if (plugins.alerting) { + registerApmAlerts({ + ruleDataClient, + alerting: plugins.alerting, + ml: plugins.ml, + config$: mergedConfig$, + logger: this.logger!.get('rule'), + }); + } return { config$: mergedConfig$, @@ -193,7 +263,6 @@ export class APMPlugin }, }); }, - ruleRegistry: apmRuleRegistry, }; } diff --git a/x-pack/plugins/apm/server/routes/register_routes/index.ts b/x-pack/plugins/apm/server/routes/register_routes/index.ts index f792e078c528a..c9df12fd58208 100644 --- a/x-pack/plugins/apm/server/routes/register_routes/index.ts +++ b/x-pack/plugins/apm/server/routes/register_routes/index.ts @@ -39,14 +39,14 @@ export function registerRoutes({ plugins, logger, config, - apmRuleRegistry, + ruleDataClient, }: { core: APMRouteHandlerResources['core']; plugins: APMRouteHandlerResources['plugins']; logger: APMRouteHandlerResources['logger']; repository: ServerRouteRepository; config: APMRouteHandlerResources['config']; - apmRuleRegistry: APMRouteHandlerResources['apmRuleRegistry']; + ruleDataClient: APMRouteHandlerResources['ruleDataClient']; }) { const routes = repository.getRoutes(); @@ -99,7 +99,7 @@ export function registerRoutes({ }, validatedParams ), - apmRuleRegistry, + ruleDataClient, })) as any; if (Array.isArray(data)) { diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index 54e59f2be7ae3..4384d2be78ca0 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -737,30 +737,15 @@ const serviceAlertsRoute = createApmServerRoute({ options: { tags: ['access:apm'], }, - handler: async ({ context, params, apmRuleRegistry }) => { - const alertsClient = context.alerting.getAlertsClient(); - + handler: async ({ context, params, ruleDataClient }) => { const { query: { start, end, environment, transactionType }, path: { serviceName }, } = params; - const apmRuleRegistryClient = await apmRuleRegistry.createScopedRuleRegistryClient( - { - alertsClient, - context, - } - ); - - if (!apmRuleRegistryClient) { - throw Boom.failedDependency( - 'xpack.ruleRegistry.unsafe.write.enabled is set to false' - ); - } - return { alerts: await getServiceAlerts({ - apmRuleRegistryClient, + ruleDataClient, start, end, serviceName, diff --git a/x-pack/plugins/apm/server/routes/typings.ts b/x-pack/plugins/apm/server/routes/typings.ts index 602e1f3e0edb9..13bd631085aac 100644 --- a/x-pack/plugins/apm/server/routes/typings.ts +++ b/x-pack/plugins/apm/server/routes/typings.ts @@ -12,11 +12,11 @@ import { KibanaRequest, CoreStart, } from 'src/core/server'; +import { RuleDataClient } from '../../../rule_registry/server'; import { AlertingApiRequestHandlerContext } from '../../../alerting/server'; import { LicensingApiRequestHandlerContext } from '../../../licensing/server'; import { APMConfig } from '..'; import { APMPluginDependencies } from '../types'; -import { APMRuleRegistry } from '../plugin'; export interface ApmPluginRequestHandlerContext extends RequestHandlerContext { licensing: LicensingApiRequestHandlerContext; @@ -62,5 +62,5 @@ export interface APMRouteHandlerResources { start: () => Promise[key]['start']>; }; }; - apmRuleRegistry: APMRuleRegistry; + ruleDataClient: RuleDataClient; } diff --git a/x-pack/plugins/apm/server/types.ts b/x-pack/plugins/apm/server/types.ts index dbc220f9f6b15..a5ba4f39b32b3 100644 --- a/x-pack/plugins/apm/server/types.ts +++ b/x-pack/plugins/apm/server/types.ts @@ -7,6 +7,10 @@ import { ValuesType } from 'utility-types'; import { Observable } from 'rxjs'; import { CoreSetup, CoreStart, KibanaRequest } from 'kibana/server'; +import { + RuleRegistryPluginSetupContract, + RuleRegistryPluginStartContract, +} from '../../rule_registry/server'; import { PluginSetup as DataPluginSetup, PluginStart as DataPluginStart, @@ -115,6 +119,10 @@ interface DependencyMap { setup: DataPluginSetup; start: DataPluginStart; }; + ruleRegistry: { + setup: RuleRegistryPluginSetupContract; + start: RuleRegistryPluginStartContract; + }; } const requiredDependencies = [ @@ -126,6 +134,7 @@ const requiredDependencies = [ 'embeddable', 'infra', 'observability', + 'ruleRegistry', ] as const; const optionalDependencies = [ diff --git a/x-pack/plugins/observability/common/rules/observability_rule_field_map.ts b/x-pack/plugins/observability/common/rules/observability_rule_field_map.ts deleted file mode 100644 index 370f5d4ef79f2..0000000000000 --- a/x-pack/plugins/observability/common/rules/observability_rule_field_map.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ecsFieldMap, pickWithPatterns } from '../../../rule_registry/common'; - -export const observabilityRuleFieldMap = { - ...pickWithPatterns(ecsFieldMap, 'host.name', 'service.name'), - 'kibana.observability.evaluation.value': { - type: 'scaled_float' as const, - scaling_factor: 1000, - }, - 'kibana.observability.evaluation.threshold': { - type: 'scaled_float' as const, - scaling_factor: 1000, - }, -}; - -export type ObservabilityRuleFieldMap = typeof observabilityRuleFieldMap; diff --git a/x-pack/plugins/observability/common/utils/formatters/duration.ts b/x-pack/plugins/observability/common/utils/formatters/duration.ts index 6bbeb44ef06af..481005332cc30 100644 --- a/x-pack/plugins/observability/common/utils/formatters/duration.ts +++ b/x-pack/plugins/observability/common/utils/formatters/duration.ts @@ -201,6 +201,9 @@ export function asDuration( const formatter = getDurationFormatter(value); return formatter(value, { defaultValue, extended }).formatted; } + +export type AsDuration = typeof asDuration; + /** * Convert a microsecond value to decimal milliseconds. Normally we use * `asDuration`, but this is used in places like tables where we always want diff --git a/x-pack/plugins/observability/common/utils/formatters/formatters.ts b/x-pack/plugins/observability/common/utils/formatters/formatters.ts index 3c307f64fa0a9..9bdccc7e9edfe 100644 --- a/x-pack/plugins/observability/common/utils/formatters/formatters.ts +++ b/x-pack/plugins/observability/common/utils/formatters/formatters.ts @@ -47,6 +47,8 @@ export function asPercent( return numeral(decimal).format('0.0%'); } +export type AsPercent = typeof asPercent; + export function asDecimalOrInteger(value: number) { // exact 0 or above 10 should not have decimal if (value === 0 || value >= 10) { diff --git a/x-pack/plugins/observability/kibana.json b/x-pack/plugins/observability/kibana.json index 0ee978c75d6c0..52d5493ae69a4 100644 --- a/x-pack/plugins/observability/kibana.json +++ b/x-pack/plugins/observability/kibana.json @@ -15,7 +15,8 @@ "requiredPlugins": [ "data", "alerting", - "ruleRegistry" + "ruleRegistry", + "triggersActionsUi" ], "ui": true, "server": true, diff --git a/x-pack/plugins/observability/public/application/application.test.tsx b/x-pack/plugins/observability/public/application/application.test.tsx index c0b51652a7d0e..9182a0e8196c8 100644 --- a/x-pack/plugins/observability/public/application/application.test.tsx +++ b/x-pack/plugins/observability/public/application/application.test.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { Observable } from 'rxjs'; import { AppMountParameters, CoreStart } from 'src/core/public'; import { ObservabilityPublicPluginsStart } from '../plugin'; -import { createObservabilityRuleRegistryMock } from '../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../rules/observability_rule_type_registry_mock'; import { renderApp } from './'; describe('renderApp', () => { @@ -58,7 +58,7 @@ describe('renderApp', () => { core, plugins, appMountParameters: params, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), }); unmount(); }).not.toThrowError(); diff --git a/x-pack/plugins/observability/public/application/index.tsx b/x-pack/plugins/observability/public/application/index.tsx index 8607b57b42666..460aa6c35bdb8 100644 --- a/x-pack/plugins/observability/public/application/index.tsx +++ b/x-pack/plugins/observability/public/application/index.tsx @@ -18,11 +18,12 @@ import { import { PluginContext } from '../context/plugin_context'; import { usePluginContext } from '../hooks/use_plugin_context'; import { useRouteParams } from '../hooks/use_route_params'; -import { ObservabilityPublicPluginsStart, ObservabilityRuleRegistry } from '../plugin'; +import { ObservabilityPublicPluginsStart } from '../plugin'; import { HasDataContextProvider } from '../context/has_data_context'; import { Breadcrumbs, routes } from '../routes'; import { Storage } from '../../../../../src/plugins/kibana_utils/public'; import { ConfigSchema } from '..'; +import { ObservabilityRuleTypeRegistry } from '../rules/create_observability_rule_type_registry'; function getTitleFromBreadCrumbs(breadcrumbs: Breadcrumbs) { return breadcrumbs.map(({ text }) => text).reverse(); @@ -72,12 +73,12 @@ export const renderApp = ({ core, plugins, appMountParameters, - observabilityRuleRegistry, + observabilityRuleTypeRegistry, }: { config: ConfigSchema; core: CoreStart; plugins: ObservabilityPublicPluginsStart; - observabilityRuleRegistry: ObservabilityRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; appMountParameters: AppMountParameters; }) => { const { element, history } = appMountParameters; @@ -94,7 +95,7 @@ export const renderApp = ({ ReactDOM.render( diff --git a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx index d41f131ef521b..e2669d87d6776 100644 --- a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx @@ -14,7 +14,8 @@ import * as hasDataHook from '../../../../hooks/use_has_data'; import * as pluginContext from '../../../../hooks/use_plugin_context'; import { HasDataContextValue } from '../../../../context/has_data_context'; import { AppMountParameters, CoreStart } from 'kibana/public'; -import { ObservabilityPublicPluginsStart, ObservabilityRuleRegistry } from '../../../../plugin'; +import { ObservabilityPublicPluginsStart } from '../../../../plugin'; +import { createObservabilityRuleTypeRegistryMock } from '../../../../rules/observability_rule_type_registry_mock'; jest.mock('react-router-dom', () => ({ useLocation: () => ({ @@ -41,10 +42,7 @@ describe('APMSection', () => { } as unknown) as CoreStart, appMountParameters: {} as AppMountParameters, config: { unsafe: { alertingExperience: { enabled: true } } }, - observabilityRuleRegistry: ({ - registerType: jest.fn(), - getTypeByRuleId: jest.fn(), - } as unknown) as ObservabilityRuleRegistry, + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), plugins: ({ data: { query: { diff --git a/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx index fa4d1a744e3ea..b4227cc122dde 100644 --- a/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx @@ -7,7 +7,6 @@ import { AppMountParameters, CoreStart } from 'kibana/public'; import React from 'react'; -import { createObservabilityRuleRegistryMock } from '../../../../rules/observability_rule_registry_mock'; import { HasDataContextValue } from '../../../../context/has_data_context'; import * as fetcherHook from '../../../../hooks/use_fetcher'; import * as hasDataHook from '../../../../hooks/use_has_data'; @@ -16,6 +15,7 @@ import { ObservabilityPublicPluginsStart } from '../../../../plugin'; import { render } from '../../../../utils/test_helper'; import { UXSection } from './'; import { response } from './mock_data/ux.mock'; +import { createObservabilityRuleTypeRegistryMock } from '../../../../rules/observability_rule_type_registry_mock'; jest.mock('react-router-dom', () => ({ useLocation: () => ({ @@ -55,7 +55,7 @@ describe('UXSection', () => { }, }, } as unknown) as ObservabilityPublicPluginsStart, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), })); }); it('renders with core web vitals', () => { diff --git a/x-pack/plugins/observability/public/context/plugin_context.tsx b/x-pack/plugins/observability/public/context/plugin_context.tsx index eea259b36d5b9..9b0bacc4c1174 100644 --- a/x-pack/plugins/observability/public/context/plugin_context.tsx +++ b/x-pack/plugins/observability/public/context/plugin_context.tsx @@ -7,15 +7,16 @@ import { createContext } from 'react'; import { AppMountParameters, CoreStart } from 'kibana/public'; -import { ObservabilityPublicPluginsStart, ObservabilityRuleRegistry } from '../plugin'; +import { ObservabilityPublicPluginsStart } from '../plugin'; import { ConfigSchema } from '..'; +import { ObservabilityRuleTypeRegistry } from '../rules/create_observability_rule_type_registry'; export interface PluginContextValue { appMountParameters: AppMountParameters; config: ConfigSchema; core: CoreStart; plugins: ObservabilityPublicPluginsStart; - observabilityRuleRegistry: ObservabilityRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; } export const PluginContext = createContext({} as PluginContextValue); diff --git a/x-pack/plugins/observability/public/hooks/use_time_range.test.ts b/x-pack/plugins/observability/public/hooks/use_time_range.test.ts index 43fbc18062b75..8808d6390e365 100644 --- a/x-pack/plugins/observability/public/hooks/use_time_range.test.ts +++ b/x-pack/plugins/observability/public/hooks/use_time_range.test.ts @@ -10,7 +10,7 @@ import * as pluginContext from './use_plugin_context'; import { AppMountParameters, CoreStart } from 'kibana/public'; import { ObservabilityPublicPluginsStart } from '../plugin'; import * as kibanaUISettings from './use_kibana_ui_settings'; -import { createObservabilityRuleRegistryMock } from '../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../rules/observability_rule_type_registry_mock'; jest.mock('react-router-dom', () => ({ useLocation: () => ({ @@ -39,7 +39,7 @@ describe('useTimeRange', () => { }, }, } as unknown) as ObservabilityPublicPluginsStart, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), })); jest.spyOn(kibanaUISettings, 'useKibanaUISettings').mockImplementation(() => ({ from: '2020-10-08T05:00:00.000Z', @@ -81,7 +81,7 @@ describe('useTimeRange', () => { }, }, } as unknown) as ObservabilityPublicPluginsStart, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), })); }); it('returns ranges and absolute times from kibana default settings', () => { diff --git a/x-pack/plugins/observability/public/index.ts b/x-pack/plugins/observability/public/index.ts index a011d1fc2c414..8dd2f6a57eefe 100644 --- a/x-pack/plugins/observability/public/index.ts +++ b/x-pack/plugins/observability/public/index.ts @@ -62,4 +62,5 @@ export { getApmTraceUrl } from './utils/get_apm_trace_url'; export { createExploratoryViewUrl } from './components/shared/exploratory_view/configurations/utils'; export type { SeriesUrl } from './components/shared/exploratory_view/types'; -export { FormatterRuleRegistry } from './rules/formatter_rule_registry'; +export type { ObservabilityRuleTypeRegistry } from './rules/create_observability_rule_type_registry'; +export { createObservabilityRuleTypeRegistryMock } from './rules/observability_rule_type_registry_mock'; diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx index 6940f6aaad692..0d47f3da89d36 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx @@ -13,7 +13,7 @@ import { AlertsPage } from '.'; import { HttpSetup } from '../../../../../../src/core/public'; import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public'; import { PluginContext, PluginContextValue } from '../../context/plugin_context'; -import { createObservabilityRuleRegistryMock } from '../../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../../rules/observability_rule_type_registry_mock'; import { createCallObservabilityApi } from '../../services/call_observability_api'; import type { ObservabilityAPIReturnType } from '../../services/call_observability_api/types'; import { apmAlertResponseExample, dynamicIndexPattern } from './example_data'; @@ -62,7 +62,7 @@ export default { core: { http: { basePath: { prepend: (_: string) => '' } }, }, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), } as unknown) as PluginContextValue } > diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx index 96d3c1fc9c390..90c75a70c0813 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx @@ -62,25 +62,26 @@ Example.args = { reason: 'Error count for opbeans-java was above the threshold', active: true, start: 1618235449493, - - 'rule.id': 'apm.error_rate', - 'service.environment': 'production', - 'service.name': 'opbeans-java', - 'rule.name': 'Error count threshold | opbeans-java (smith test)', - 'kibana.rac.alert.duration.us': 61787000, - 'kibana.observability.evaluation.threshold': 0, - 'kibana.rac.alert.status': 'open', - tags: ['apm', 'service.name:opbeans-java'], - 'kibana.rac.alert.uuid': 'c50fbc70-0d77-462d-ac0a-f2bd0b8512e4', - 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', - 'event.action': 'active', - '@timestamp': '2021-04-14T21:43:42.966Z', - 'kibana.rac.alert.id': 'apm.error_rate_opbeans-java_production', - 'processor.event': 'error', - 'kibana.rac.alert.start': '2021-04-14T21:42:41.179Z', - 'kibana.rac.producer': 'apm', - 'event.kind': 'state', - 'rule.category': 'Error count threshold', - 'kibana.observability.evaluation.value': 1, + fields: { + 'rule.id': 'apm.error_rate', + 'service.environment': ['production'], + 'service.name': ['opbeans-java'], + 'rule.name': 'Error count threshold | opbeans-java (smith test)', + 'kibana.rac.alert.duration.us': 61787000, + 'kibana.rac.alert.evaluation.threshold': 0, + 'kibana.rac.alert.status': 'open', + tags: ['apm', 'service.name:opbeans-java'], + 'kibana.rac.alert.uuid': 'c50fbc70-0d77-462d-ac0a-f2bd0b8512e4', + 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', + 'event.action': 'active', + '@timestamp': '2021-04-14T21:43:42.966Z', + 'kibana.rac.alert.id': 'apm.error_rate_opbeans-java_production', + 'processor.event': ['error'], + 'kibana.rac.alert.start': '2021-04-14T21:42:41.179Z', + 'kibana.rac.producer': 'apm', + 'event.kind': 'state', + 'rule.category': 'Error count threshold', + 'kibana.rac.alert.evaluation.value': 1, + }, }, } as Args; diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx index 09fe464aa8cb5..b4bf96bcc6905 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx @@ -22,6 +22,14 @@ import { import { i18n } from '@kbn/i18n'; import moment from 'moment-timezone'; import React from 'react'; +import { + ALERT_DURATION, + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, + ALERT_SEVERITY_LEVEL, + RULE_CATEGORY, + RULE_NAME, +} from '@kbn/rule-data-utils/target/technical_field_names'; import { TopAlert } from '../'; import { useUiSetting } from '../../../../../../../src/plugins/kibana_react/public'; import { asDuration } from '../../../../common/utils/formatters'; @@ -46,7 +54,7 @@ export function AlertsFlyout({ onClose, alert }: AlertsFlyoutProps) { title: i18n.translate('xpack.observability.alertsFlyout.severityLabel', { defaultMessage: 'Severity', }), - description: , + description: , }, { title: i18n.translate('xpack.observability.alertsFlyout.triggeredLabel', { @@ -60,25 +68,25 @@ export function AlertsFlyout({ onClose, alert }: AlertsFlyoutProps) { title: i18n.translate('xpack.observability.alertsFlyout.durationLabel', { defaultMessage: 'Duration', }), - description: asDuration(alert['kibana.rac.alert.duration.us'], { extended: true }), + description: asDuration(alert.fields[ALERT_DURATION], { extended: true }), }, { title: i18n.translate('xpack.observability.alertsFlyout.expectedValueLabel', { defaultMessage: 'Expected value', }), - description: alert['kibana.observability.evaluation.threshold'] ?? '-', + description: alert.fields[ALERT_EVALUATION_THRESHOLD] ?? '-', }, { title: i18n.translate('xpack.observability.alertsFlyout.actualValueLabel', { defaultMessage: 'Actual value', }), - description: alert['kibana.observability.evaluation.value'] ?? '-', + description: alert.fields[ALERT_EVALUATION_VALUE] ?? '-', }, { title: i18n.translate('xpack.observability.alertsFlyout.ruleTypeLabel', { defaultMessage: 'Rule type', }), - description: alert['rule.category'] ?? '-', + description: alert.fields[RULE_CATEGORY] ?? '-', }, ]; @@ -86,7 +94,7 @@ export function AlertsFlyout({ onClose, alert }: AlertsFlyoutProps) { -

    {alert['rule.name']}

    +

    {alert.fields[RULE_NAME]}

    {alert.reason} diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx index b0ff156fde377..f377186623a03 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx @@ -16,6 +16,10 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; +import { + ALERT_DURATION, + ALERT_SEVERITY_LEVEL, +} from '@kbn/rule-data-utils/target/technical_field_names'; import { asDuration } from '../../../common/utils/formatters'; import { TimestampTooltip } from '../../components/shared/timestamp_tooltip'; import { usePluginContext } from '../../hooks/use_plugin_context'; @@ -94,9 +98,7 @@ export function AlertsTable(props: AlertsTableProps) { }), render: (_, alert) => { const { active } = alert; - return active - ? null - : asDuration(alert['kibana.rac.alert.duration.us'], { extended: true }); + return active ? null : asDuration(alert.fields[ALERT_DURATION], { extended: true }); }, }, { @@ -105,7 +107,7 @@ export function AlertsTable(props: AlertsTableProps) { defaultMessage: 'Severity', }), render: (_, alert) => { - return ; + return ; }, }, { diff --git a/x-pack/plugins/observability/public/pages/alerts/example_data.ts b/x-pack/plugins/observability/public/pages/alerts/example_data.ts index dba6f1e9aaa2f..5318fce82c1d3 100644 --- a/x-pack/plugins/observability/public/pages/alerts/example_data.ts +++ b/x-pack/plugins/observability/public/pages/alerts/example_data.ts @@ -7,42 +7,42 @@ export const apmAlertResponseExample = [ { - 'rule.id': 'apm.error_rate', - 'service.name': 'opbeans-java', - 'rule.name': 'Error count threshold | opbeans-java (smith test)', - 'kibana.rac.alert.duration.us': 180057000, - 'kibana.rac.alert.status': 'open', - 'kibana.rac.alert.severity.level': 'warning', + 'rule.id': ['apm.error_rate'], + 'service.name': ['opbeans-java'], + 'rule.name': ['Error count threshold | opbeans-java (smith test)'], + 'kibana.rac.alert.duration.us': [180057000], + 'kibana.rac.alert.status': ['open'], + 'kibana.rac.alert.severity.level': ['warning'], tags: ['apm', 'service.name:opbeans-java'], - 'kibana.rac.alert.uuid': '0175ec0a-a3b1-4d41-b557-e21c2d024352', - 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', - 'event.action': 'active', - '@timestamp': '2021-04-12T13:53:49.550Z', - 'kibana.rac.alert.id': 'apm.error_rate_opbeans-java_production', - 'kibana.rac.alert.start': '2021-04-12T13:50:49.493Z', - 'kibana.rac.producer': 'apm', - 'event.kind': 'state', - 'rule.category': 'Error count threshold', + 'kibana.rac.alert.uuid': ['0175ec0a-a3b1-4d41-b557-e21c2d024352'], + 'rule.uuid': ['474920d0-93e9-11eb-ac86-0b455460de81'], + 'event.action': ['active'], + '@timestamp': ['2021-04-12T13:53:49.550Z'], + 'kibana.rac.alert.id': ['apm.error_rate_opbeans-java_production'], + 'kibana.rac.alert.start': ['2021-04-12T13:50:49.493Z'], + 'kibana.rac.producer': ['apm'], + 'event.kind': ['state'], + 'rule.category': ['Error count threshold'], 'service.environment': ['production'], 'processor.event': ['error'], }, { - 'rule.id': 'apm.error_rate', - 'service.name': 'opbeans-java', - 'rule.name': 'Error count threshold | opbeans-java (smith test)', - 'kibana.rac.alert.duration.us': 2419005000, - 'kibana.rac.alert.end': '2021-04-12T13:49:49.446Z', - 'kibana.rac.alert.status': 'closed', + 'rule.id': ['apm.error_rate'], + 'service.name': ['opbeans-java'], + 'rule.name': ['Error count threshold | opbeans-java (smith test)'], + 'kibana.rac.alert.duration.us': [2419005000], + 'kibana.rac.alert.end': ['2021-04-12T13:49:49.446Z'], + 'kibana.rac.alert.status': ['closed'], tags: ['apm', 'service.name:opbeans-java'], - 'kibana.rac.alert.uuid': '32b940e1-3809-4c12-8eee-f027cbb385e2', - 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', - 'event.action': 'close', - '@timestamp': '2021-04-12T13:49:49.446Z', - 'kibana.rac.alert.id': 'apm.error_rate_opbeans-java_production', - 'kibana.rac.alert.start': '2021-04-12T13:09:30.441Z', - 'kibana.rac.producer': 'apm', - 'event.kind': 'state', - 'rule.category': 'Error count threshold', + 'kibana.rac.alert.uuid': ['32b940e1-3809-4c12-8eee-f027cbb385e2'], + 'rule.uuid': ['474920d0-93e9-11eb-ac86-0b455460de81'], + 'event.action': ['close'], + '@timestamp': ['2021-04-12T13:49:49.446Z'], + 'kibana.rac.alert.id': ['apm.error_rate_opbeans-java_production'], + 'kibana.rac.alert.start': ['2021-04-12T13:09:30.441Z'], + 'kibana.rac.producer': ['apm'], + 'event.kind': ['state'], + 'rule.category': ['Error count threshold'], 'service.environment': ['production'], 'processor.event': ['error'], }, diff --git a/x-pack/plugins/observability/public/pages/alerts/index.tsx b/x-pack/plugins/observability/public/pages/alerts/index.tsx index a6d5c6926973e..1f468a70d0976 100644 --- a/x-pack/plugins/observability/public/pages/alerts/index.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/index.tsx @@ -17,6 +17,16 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { useHistory } from 'react-router-dom'; import { format, parse } from 'url'; +import { + ALERT_START, + EVENT_ACTION, + RULE_ID, + RULE_NAME, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { + ParsedTechnicalFields, + parseTechnicalFields, +} from '../../../../rule_registry/common/parse_technical_fields'; import { asDuration, asPercent } from '../../../common/utils/formatters'; import { ExperimentalBadge } from '../../components/shared/experimental_badge'; import { useFetcher } from '../../hooks/use_fetcher'; @@ -30,7 +40,8 @@ import { AlertsTable } from './alerts_table'; export type TopAlertResponse = ObservabilityAPIReturnType<'GET /api/observability/rules/alerts/top'>[number]; -export interface TopAlert extends TopAlertResponse { +export interface TopAlert { + fields: ParsedTechnicalFields; start: number; reason: string; link?: string; @@ -42,7 +53,7 @@ interface AlertsPageProps { } export function AlertsPage({ routeParams }: AlertsPageProps) { - const { core, observabilityRuleRegistry } = usePluginContext(); + const { core, observabilityRuleTypeRegistry } = usePluginContext(); const { prepend } = core.http.basePath; const history = useHistory(); const { @@ -74,18 +85,19 @@ export function AlertsPage({ routeParams }: AlertsPageProps) { }, }).then((alerts) => { return alerts.map((alert) => { - const ruleType = observabilityRuleRegistry.getTypeByRuleId(alert['rule.id']); + const parsedFields = parseTechnicalFields(alert); + const formatter = observabilityRuleTypeRegistry.getFormatter(parsedFields[RULE_ID]!); const formatted = { link: undefined, - reason: alert['rule.name'], - ...(ruleType?.format?.({ alert, formatters: { asDuration, asPercent } }) ?? {}), + reason: parsedFields[RULE_NAME]!, + ...(formatter?.({ fields: parsedFields, formatters: { asDuration, asPercent } }) ?? {}), }; const parsedLink = formatted.link ? parse(formatted.link, true) : undefined; return { - ...alert, ...formatted, + fields: parsedFields, link: parsedLink ? format({ ...parsedLink, @@ -96,13 +108,13 @@ export function AlertsPage({ routeParams }: AlertsPageProps) { }, }) : undefined, - active: alert['event.action'] !== 'close', - start: new Date(alert['kibana.rac.alert.start']).getTime(), + active: parsedFields[EVENT_ACTION] !== 'close', + start: new Date(parsedFields[ALERT_START]!).getTime(), }; }); }); }, - [kuery, observabilityRuleRegistry, rangeFrom, rangeTo] + [kuery, observabilityRuleTypeRegistry, rangeFrom, rangeTo] ); return ( diff --git a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx index 559aa8d5884a9..ebd1c73859169 100644 --- a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx +++ b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx @@ -23,7 +23,7 @@ import { emptyResponse as emptyLogsResponse, fetchLogsData } from './mock/logs.m import { emptyResponse as emptyMetricsResponse, fetchMetricsData } from './mock/metrics.mock'; import { newsFeedFetchData } from './mock/news_feed.mock'; import { emptyResponse as emptyUptimeResponse, fetchUptimeData } from './mock/uptime.mock'; -import { createObservabilityRuleRegistryMock } from '../../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../../rules/observability_rule_type_registry_mock'; function unregisterAll() { unregisterDataHandler({ appName: 'apm' }); @@ -54,7 +54,7 @@ const withCore = makeDecorator({ }, }, } as unknown) as ObservabilityPublicPluginsStart, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), }} > diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index 517675fe1d525..6856bc97b4a36 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -7,6 +7,10 @@ import { i18n } from '@kbn/i18n'; import { BehaviorSubject } from 'rxjs'; +import { + TriggersAndActionsUIPublicPluginSetup, + TriggersAndActionsUIPublicPluginStart, +} from '../../triggers_actions_ui/public'; import { AppMountParameters, AppUpdater, @@ -25,26 +29,23 @@ import type { HomePublicPluginStart, } from '../../../../src/plugins/home/public'; import type { LensPublicStart } from '../../lens/public'; -import type { RuleRegistryPublicPluginSetupContract } from '../../rule_registry/public'; -import type { ObservabilityRuleFieldMap } from '../common/rules/observability_rule_field_map'; -import { observabilityRuleRegistrySettings } from '../common/rules/observability_rule_registry_settings'; import { registerDataHandler } from './data_handler'; -import { FormatterRuleRegistry } from './rules/formatter_rule_registry'; import { createCallObservabilityApi } from './services/call_observability_api'; import { toggleOverviewLinkInNav } from './toggle_overview_link_in_nav'; import { ConfigSchema } from '.'; +import { createObservabilityRuleTypeRegistry } from './rules/create_observability_rule_type_registry'; export type ObservabilityPublicSetup = ReturnType; -export type ObservabilityRuleRegistry = ObservabilityPublicSetup['ruleRegistry']; export interface ObservabilityPublicPluginsSetup { data: DataPublicPluginSetup; - ruleRegistry: RuleRegistryPublicPluginSetupContract; + triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; home?: HomePublicPluginSetup; } export interface ObservabilityPublicPluginsStart { home?: HomePublicPluginStart; + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; data: DataPublicPluginStart; lens: LensPublicStart; } @@ -75,11 +76,9 @@ export class Plugin createCallObservabilityApi(coreSetup.http); - const observabilityRuleRegistry = pluginsSetup.ruleRegistry.registry.create({ - ...observabilityRuleRegistrySettings, - fieldMap: {} as ObservabilityRuleFieldMap, - ctor: FormatterRuleRegistry, - }); + const observabilityRuleTypeRegistry = createObservabilityRuleTypeRegistry( + pluginsSetup.triggersActionsUi.alertTypeRegistry + ); const mount = async (params: AppMountParameters) => { // Load application bundle @@ -92,7 +91,7 @@ export class Plugin core: coreStart, plugins: pluginsStart, appMountParameters: params, - observabilityRuleRegistry, + observabilityRuleTypeRegistry, }); }; @@ -165,7 +164,7 @@ export class Plugin return { dashboard: { register: registerDataHandler }, - ruleRegistry: observabilityRuleRegistry, + observabilityRuleTypeRegistry, isAlertingExperienceEnabled: () => config.unsafe.alertingExperience.enabled, }; } diff --git a/x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts b/x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts new file mode 100644 index 0000000000000..cba9df83c6fe3 --- /dev/null +++ b/x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AlertTypeModel, AlertTypeRegistryContract } from '../../../triggers_actions_ui/public'; +import { ParsedTechnicalFields } from '../../../rule_registry/common/parse_technical_fields'; +import { AsDuration, AsPercent } from '../../common/utils/formatters'; + +type Formatter = (options: { + fields: ParsedTechnicalFields & Record; + formatters: { asDuration: AsDuration; asPercent: AsPercent }; +}) => { reason: string; link: string }; + +export function createObservabilityRuleTypeRegistry(alertTypeRegistry: AlertTypeRegistryContract) { + const formatters: Array<{ typeId: string; fn: Formatter }> = []; + return { + register: (type: AlertTypeModel & { format: Formatter }) => { + const { format, ...rest } = type; + formatters.push({ typeId: type.id, fn: format }); + alertTypeRegistry.register(rest); + }, + getFormatter: (typeId: string) => { + return formatters.find((formatter) => formatter.typeId === typeId)?.fn; + }, + }; +} + +export type ObservabilityRuleTypeRegistry = ReturnType; diff --git a/x-pack/plugins/observability/public/rules/formatter_rule_registry.ts b/x-pack/plugins/observability/public/rules/formatter_rule_registry.ts deleted file mode 100644 index 0d0d22cf750fb..0000000000000 --- a/x-pack/plugins/observability/public/rules/formatter_rule_registry.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { RuleType } from '../../../rule_registry/public'; -import type { BaseRuleFieldMap, OutputOfFieldMap } from '../../../rule_registry/common'; -import { RuleRegistry } from '../../../rule_registry/public'; -import type { asDuration, asPercent } from '../../common/utils/formatters'; - -type AlertTypeOf = OutputOfFieldMap; - -type FormattableRuleType = RuleType & { - format?: (options: { - alert: AlertTypeOf; - formatters: { - asDuration: typeof asDuration; - asPercent: typeof asPercent; - }; - }) => { - reason?: string; - link?: string; - }; -}; - -export class FormatterRuleRegistry extends RuleRegistry< - TFieldMap, - FormattableRuleType -> {} diff --git a/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts b/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts deleted file mode 100644 index 389b581b5fb60..0000000000000 --- a/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ObservabilityRuleRegistry } from '../plugin'; - -const createRuleRegistryMock = () => ({ - registerType: () => {}, - getTypeByRuleId: () => ({ format: () => ({ link: '/test/example' }) }), - create: () => createRuleRegistryMock(), -}); - -export const createObservabilityRuleRegistryMock = () => - createRuleRegistryMock() as ObservabilityRuleRegistry & ReturnType; diff --git a/x-pack/plugins/observability/public/rules/observability_rule_type_registry_mock.ts b/x-pack/plugins/observability/public/rules/observability_rule_type_registry_mock.ts new file mode 100644 index 0000000000000..b2cf48f8e1c32 --- /dev/null +++ b/x-pack/plugins/observability/public/rules/observability_rule_type_registry_mock.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ObservabilityRuleTypeRegistry } from './create_observability_rule_type_registry'; + +const createRuleTypeRegistryMock = () => ({ + registerFormatter: () => {}, +}); + +export const createObservabilityRuleTypeRegistryMock = () => + createRuleTypeRegistryMock() as ObservabilityRuleTypeRegistry & + ReturnType; diff --git a/x-pack/plugins/observability/public/utils/test_helper.tsx b/x-pack/plugins/observability/public/utils/test_helper.tsx index 63e34b018aed0..ef7c62a143f25 100644 --- a/x-pack/plugins/observability/public/utils/test_helper.tsx +++ b/x-pack/plugins/observability/public/utils/test_helper.tsx @@ -15,7 +15,7 @@ import translations from '../../../translations/translations/ja-JP.json'; import { PluginContext } from '../context/plugin_context'; import { ObservabilityPublicPluginsStart } from '../plugin'; import { EuiThemeProvider } from '../../../../../src/plugins/kibana_react/common'; -import { createObservabilityRuleRegistryMock } from '../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../rules/observability_rule_type_registry_mock'; const appMountParameters = ({ setHeaderActionMenu: () => {} } as unknown) as AppMountParameters; @@ -37,14 +37,14 @@ const plugins = ({ data: { query: { timefilter: { timefilter: { setTime: jest.fn() } } } }, } as unknown) as ObservabilityPublicPluginsStart; -const observabilityRuleRegistry = createObservabilityRuleRegistryMock(); +const observabilityRuleTypeRegistry = createObservabilityRuleTypeRegistryMock(); export const render = (component: React.ReactNode) => { return testLibRender( {component} diff --git a/x-pack/plugins/observability/server/lib/rules/get_top_alerts.ts b/x-pack/plugins/observability/server/lib/rules/get_top_alerts.ts index 0045c0f0c6757..ddfc112ab1452 100644 --- a/x-pack/plugins/observability/server/lib/rules/get_top_alerts.ts +++ b/x-pack/plugins/observability/server/lib/rules/get_top_alerts.ts @@ -4,24 +4,24 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { Required } from 'utility-types'; -import { ObservabilityRuleRegistryClient } from '../../types'; +import { ALERT_UUID, TIMESTAMP } from '@kbn/rule-data-utils/target/technical_field_names'; +import { RuleDataClient } from '../../../../rule_registry/server'; import { kqlQuery, rangeQuery } from '../../utils/queries'; export async function getTopAlerts({ - ruleRegistryClient, + ruleDataClient, start, end, kuery, size, }: { - ruleRegistryClient: ObservabilityRuleRegistryClient; + ruleDataClient: RuleDataClient; start: number; end: number; kuery?: string; size: number; }) { - const response = await ruleRegistryClient.search({ + const response = await ruleDataClient.getReader().search({ body: { query: { bool: { @@ -30,26 +30,18 @@ export async function getTopAlerts({ }, fields: ['*'], collapse: { - field: 'kibana.rac.alert.uuid', + field: ALERT_UUID, }, size, sort: { - '@timestamp': 'desc', + [TIMESTAMP]: 'desc', }, _source: false, }, + allow_no_indices: true, }); - return response.events.map((event) => { - return event as Required< - typeof event, - | 'rule.id' - | 'rule.name' - | 'kibana.rac.alert.start' - | 'event.action' - | 'rule.category' - | 'rule.name' - | 'kibana.rac.alert.duration.us' - >; + return response.hits.hits.map((hit) => { + return hit.fields; }); } diff --git a/x-pack/plugins/observability/server/plugin.ts b/x-pack/plugins/observability/server/plugin.ts index b5208260297d0..046a9a62d5fa7 100644 --- a/x-pack/plugins/observability/server/plugin.ts +++ b/x-pack/plugins/observability/server/plugin.ts @@ -6,6 +6,7 @@ */ import { PluginInitializerContext, Plugin, CoreSetup } from 'src/core/server'; +import { RuleDataClient } from '../../rule_registry/server'; import { ObservabilityConfig } from '.'; import { bootstrapAnnotations, @@ -16,11 +17,8 @@ import type { RuleRegistryPluginSetupContract } from '../../rule_registry/server import { uiSettings } from './ui_settings'; import { registerRoutes } from './routes/register_routes'; import { getGlobalObservabilityServerRouteRepository } from './routes/get_global_observability_server_route_repository'; -import { observabilityRuleRegistrySettings } from '../common/rules/observability_rule_registry_settings'; -import { observabilityRuleFieldMap } from '../common/rules/observability_rule_field_map'; export type ObservabilityPluginSetup = ReturnType; -export type ObservabilityRuleRegistry = ObservabilityPluginSetup['ruleRegistry']; export class ObservabilityPlugin implements Plugin { constructor(private readonly initContext: PluginInitializerContext) { @@ -51,19 +49,25 @@ export class ObservabilityPlugin implements Plugin { }); } - const observabilityRuleRegistry = plugins.ruleRegistry.create({ - ...observabilityRuleRegistrySettings, - fieldMap: observabilityRuleFieldMap, + const start = () => core.getStartServices().then(([coreStart]) => coreStart); + + const ruleDataClient = new RuleDataClient({ + getClusterClient: async () => { + const coreStart = await start(); + return coreStart.elasticsearch.client.asInternalUser; + }, + ready: () => Promise.resolve(), + alias: plugins.ruleRegistry.getFullAssetName(), }); registerRoutes({ core: { setup: core, - start: () => core.getStartServices().then(([coreStart]) => coreStart), + start, }, - ruleRegistry: observabilityRuleRegistry, logger: this.initContext.logger.get(), repository: getGlobalObservabilityServerRouteRepository(), + ruleDataClient, }); return { @@ -71,7 +75,6 @@ export class ObservabilityPlugin implements Plugin { const api = await annotationsApiPromise; return api?.getScopedAnnotationsClient(...args); }, - ruleRegistry: observabilityRuleRegistry, }; } diff --git a/x-pack/plugins/observability/server/routes/register_routes.ts b/x-pack/plugins/observability/server/routes/register_routes.ts index 85ee456b812b8..75b6703cc64de 100644 --- a/x-pack/plugins/observability/server/routes/register_routes.ts +++ b/x-pack/plugins/observability/server/routes/register_routes.ts @@ -13,23 +13,23 @@ import { import { CoreSetup, CoreStart, Logger, RouteRegistrar } from 'kibana/server'; import Boom from '@hapi/boom'; import { RequestAbortedError } from '@elastic/elasticsearch/lib/errors'; -import { ObservabilityRuleRegistry } from '../plugin'; +import { RuleDataClient } from '../../../rule_registry/server'; import { ObservabilityRequestHandlerContext } from '../types'; import { AbstractObservabilityServerRouteRepository } from './types'; export function registerRoutes({ - ruleRegistry, repository, core, logger, + ruleDataClient, }: { core: { setup: CoreSetup; start: () => Promise; }; - ruleRegistry: ObservabilityRuleRegistry; repository: AbstractObservabilityServerRouteRepository; logger: Logger; + ruleDataClient: RuleDataClient; }) { const routes = repository.getRoutes(); @@ -59,10 +59,10 @@ export function registerRoutes({ const data = (await handler({ context, request, - ruleRegistry, core, logger, params: decodedParams, + ruleDataClient, })) as any; return response.ok({ body: data }); diff --git a/x-pack/plugins/observability/server/routes/rules.ts b/x-pack/plugins/observability/server/routes/rules.ts index cd3f4976e0af3..1f500adff5dcf 100644 --- a/x-pack/plugins/observability/server/routes/rules.ts +++ b/x-pack/plugins/observability/server/routes/rules.ts @@ -6,7 +6,6 @@ */ import * as t from 'io-ts'; import { isoToEpochRt, toNumberRt } from '@kbn/io-ts-utils'; -import Boom from '@hapi/boom'; import { createObservabilityServerRoute } from './create_observability_server_route'; import { createObservabilityServerRouteRepository } from './create_observability_server_route_repository'; import { getTopAlerts } from '../lib/rules/get_top_alerts'; @@ -28,22 +27,13 @@ const alertsListRoute = createObservabilityServerRoute({ }), ]), }), - handler: async ({ ruleRegistry, context, params }) => { - const ruleRegistryClient = await ruleRegistry.createScopedRuleRegistryClient({ - context, - alertsClient: context.alerting.getAlertsClient(), - }); - - if (!ruleRegistryClient) { - throw Boom.failedDependency('xpack.ruleRegistry.unsafe.write.enabled is set to false'); - } - + handler: async ({ ruleDataClient, context, params }) => { const { query: { start, end, kuery, size = 100 }, } = params; return getTopAlerts({ - ruleRegistryClient, + ruleDataClient, start, end, kuery, @@ -57,17 +47,10 @@ const alertsDynamicIndexPatternRoute = createObservabilityServerRoute({ options: { tags: [], }, - handler: async ({ ruleRegistry, context }) => { - const ruleRegistryClient = await ruleRegistry.createScopedRuleRegistryClient({ - context, - alertsClient: context.alerting.getAlertsClient(), - }); - - if (!ruleRegistryClient) { - throw Boom.failedDependency(); - } + handler: async ({ ruleDataClient }) => { + const reader = ruleDataClient.getReader({ namespace: 'observability' }); - return ruleRegistryClient.getDynamicIndexPattern(); + return reader.getDynamicIndexPattern(); }, }); diff --git a/x-pack/plugins/observability/server/routes/types.ts b/x-pack/plugins/observability/server/routes/types.ts index 0588bf8df2292..1fa7229c6cf62 100644 --- a/x-pack/plugins/observability/server/routes/types.ts +++ b/x-pack/plugins/observability/server/routes/types.ts @@ -12,7 +12,7 @@ import type { ServerRouteRepository, } from '@kbn/server-route-repository'; import { CoreSetup, CoreStart, KibanaRequest, Logger } from 'kibana/server'; -import { ObservabilityRuleRegistry } from '../plugin'; +import { RuleDataClient } from '../../../rule_registry/server'; import { ObservabilityServerRouteRepository } from './get_global_observability_server_route_repository'; import { ObservabilityRequestHandlerContext } from '../types'; @@ -24,7 +24,7 @@ export interface ObservabilityRouteHandlerResources { start: () => Promise; setup: CoreSetup; }; - ruleRegistry: ObservabilityRuleRegistry; + ruleDataClient: RuleDataClient; request: KibanaRequest; context: ObservabilityRequestHandlerContext; logger: Logger; diff --git a/x-pack/plugins/observability/server/types.ts b/x-pack/plugins/observability/server/types.ts index 81b32b3f8db7b..da13e60804a60 100644 --- a/x-pack/plugins/observability/server/types.ts +++ b/x-pack/plugins/observability/server/types.ts @@ -7,9 +7,7 @@ import type { IRouter, RequestHandlerContext } from 'src/core/server'; import type { AlertingApiRequestHandlerContext } from '../../alerting/server'; -import type { ScopedRuleRegistryClient, FieldMapOf } from '../../rule_registry/server'; import type { LicensingApiRequestHandlerContext } from '../../licensing/server'; -import type { ObservabilityRuleRegistry } from './plugin'; export type { ObservabilityRouteCreateOptions, @@ -31,7 +29,3 @@ export interface ObservabilityRequestHandlerContext extends RequestHandlerContex * @internal */ export type ObservabilityPluginRouter = IRouter; - -export type ObservabilityRuleRegistryClient = ScopedRuleRegistryClient< - FieldMapOf ->; diff --git a/x-pack/plugins/rule_registry/README.md b/x-pack/plugins/rule_registry/README.md index 2c8f534a63d6b..cfbde612b45a6 100644 --- a/x-pack/plugins/rule_registry/README.md +++ b/x-pack/plugins/rule_registry/README.md @@ -2,62 +2,129 @@ The rule registry plugin aims to make it easy for rule type producers to have their rules produce the data that they need to build rich experiences on top of a unified experience, without the risk of mapping conflicts. -A rule registry creates a template, an ILM policy, and an alias. The template mappings can be configured. It also injects a client scoped to these indices. +The plugin installs default component templates and a default lifecycle policy that rule type producers can use to create index templates. -It also supports inheritance, which means that producers can create a registry specific to their solution or rule type, and specify additional mappings to be used. +It also exposes a rule data client that will create or update the index stream that rules will write data to. It will not do so on plugin setup or start, but only when data is written. -The rule registry plugin creates a root rule registry, with the mappings defined needed to create a unified experience. Rule type producers can use the plugin to access the root rule registry, and create their own registry that branches off of the root rule registry. The rule registry client sees data from its own registry, and all registries that branches off of it. It does not see data from its parents. +## Configuration -## Enabling writing - -Set +By default, these indices will be prefixed with `.alerts`. To change this, for instance to support legacy multitenancy, set the following configuration option: ```yaml -xpack.ruleRegistry.unsafe.write.enabled: true +xpack.ruleRegistry.index: '.kibana-alerts' ``` -in your Kibana configuration to allow the Rule Registry to write events to the alert indices. +To disable writing entirely: + +```yaml +xpack.ruleRegistry.write.enabled: false +``` -## Creating a rule registry +## Setting up the index template -To create a rule registry, producers should add the `ruleRegistry` plugin to their dependencies. They can then use the `ruleRegistry.create` method to create a child registry, with the additional mappings that should be used by specifying `fieldMap`: +On plugin setup, rule type producers can create the index template as follows: ```ts -const observabilityRegistry = plugins.ruleRegistry.create({ - name: 'observability', - fieldMap: { - ...pickWithPatterns(ecsFieldMap, 'host.name', 'service.name'), - }, -}); -``` +// get the FQN of the component template. All assets are prefixed with the configured `index` value, which is `.alerts` by default. -`fieldMap` is a key-value map of field names and mapping options: +const componentTemplateName = plugins.ruleRegistry.getFullAssetName( + 'apm-mappings' +); -```ts -{ - '@timestamp': { - type: 'date', - array: false, - required: true, - } +// if write is disabled, don't install these templates +if (!plugins.ruleRegistry.isWriteEnabled()) { + return; } -``` -ECS mappings are generated via a script in the rule registry plugin directory. These mappings are available in x-pack/plugins/rule_registry/server/generated/ecs_field_map.ts. - -To pick many fields, you can use `pickWithPatterns`, which supports wildcards with full type support. +// create or update the component template that should be used +await plugins.ruleRegistry.createOrUpdateComponentTemplate({ + name: componentTemplateName, + body: { + template: { + settings: { + number_of_shards: 1, + }, + // mappingFromFieldMap is a utility function that will generate an + // ES mapping from a field map object. You can also define a literal + // mapping. + mappings: mappingFromFieldMap({ + [SERVICE_NAME]: { + type: 'keyword', + }, + [SERVICE_ENVIRONMENT]: { + type: 'keyword', + }, + [TRANSACTION_TYPE]: { + type: 'keyword', + }, + [PROCESSOR_EVENT]: { + type: 'keyword', + }, + }), + }, + }, +}); -If a registry is created, it will initialise as soon as the core services needed become available. It will create a (versioned) template, alias, and ILM policy, but only if these do not exist yet. +// Install the index template, that is composed of the component template +// defined above, and others. It is important that the technical component +// template is included. This will ensure functional compatibility across +// rule types, for a future scenario where a user will want to "point" the +// data from a rule to a different index. +await plugins.ruleRegistry.createOrUpdateIndexTemplate({ + name: plugins.ruleRegistry.getFullAssetName('apm-index-template'), + body: { + index_patterns: [ + plugins.ruleRegistry.getFullAssetName('observability-apm*'), + ], + composed_of: [ + // Technical component template, required + plugins.ruleRegistry.getFullAssetName( + TECHNICAL_COMPONENT_TEMPLATE_NAME + ), + componentTemplateName, + ], + }, +}); -## Rule registry client +// Finally, create the rule data client that can be injected into rule type +// executors and API endpoints +const ruleDataClient = new RuleDataClient({ + alias: plugins.ruleRegistry.getFullAssetName('observability-apm'), + getClusterClient: async () => { + const coreStart = await getCoreStart(); + return coreStart.elasticsearch.client.asInternalUser; + }, + ready, +}); -The rule registry client can either be injected in the executor, or created in the scope of a request. It exposes a `search` method and a `bulkIndex` method. When `search` is called, it first gets all the rules the current user has access to, and adds these ids to the search request that it executes. This means that the user can only see data from rules they have access to. +// to start writing data, call `getWriter().bulk()`. It supports a `namespace` +// property as well, that for instance can be used to write data to a space-specific +// index. +await ruleDataClient.getWriter().bulk({ + body: eventsToIndex.flatMap((event) => [{ index: {} }, event]), +}); -Both `search` and `bulkIndex` are fully typed, in the sense that they reflect the mappings defined for the registry. +// to read data, simply call ruleDataClient.getReader().search: +const response = await ruleDataClient.getReader().search({ + body: { + query: { + }, + size: 100, + fields: ['*'], + collapse: { + field: ALERT_UUID, + }, + sort: { + '@timestamp': 'desc', + }, + }, + allow_no_indices: true, +}); +``` ## Schema -The following fields are available in the root rule registry: +The following fields are defined in the technical field component template and should always be used: - `@timestamp`: the ISO timestamp of the alert event. For the lifecycle rule type helper, it is always the value of `startedAt` that is injected by the Kibana alerting framework. - `event.kind`: signal (for the changeable alert document), state (for the state changes of the alert, e.g. when it opens, recovers, or changes in severity), or metric (individual evaluations that might be related to an alert). @@ -67,7 +134,7 @@ The following fields are available in the root rule registry: - `rule.uuid`: the saved objects id of the rule. - `rule.name`: the name of the rule (as specified by the user). - `rule.category`: the name of the rule type (as defined by the rule type producer) -- `kibana.rac.producer`: the producer of the rule type. Usually a Kibana plugin. e.g., `APM`. +- `kibana.rac.alert.producer`: the producer of the rule type. Usually a Kibana plugin. e.g., `APM`. - `kibana.rac.alert.id`: the id of the alert, that is unique within the context of the rule execution it was created in. E.g., for a rule that monitors latency for all services in all environments, this might be `opbeans-java:production`. - `kibana.rac.alert.uuid`: the unique identifier for the alert during its lifespan. If an alert recovers (or closes), this identifier is re-generated when it is opened again. - `kibana.rac.alert.status`: the status of the alert. Can be `open` or `closed`. @@ -76,5 +143,5 @@ The following fields are available in the root rule registry: - `kibana.rac.alert.duration.us`: the duration of the alert, in microseconds. This is always the difference between either the current time, or the time when the alert recovered. - `kibana.rac.alert.severity.level`: the severity of the alert, as a keyword (e.g. critical). - `kibana.rac.alert.severity.value`: the severity of the alert, as a numerical value, which allows sorting. - -This list is not final - just a start. Field names might change or moved to a scoped registry. If we implement log and sequence based rule types the list of fields will grow. If a rule type needs additional fields, the recommendation would be to have the field in its own registry first (or in its producer’s registry), and if usage is more broadly adopted, it can be moved to the root registry. +- `kibana.rac.alert.evaluation.value`: The measured (numerical value). +- `kibana.rac.alert.threshold.value`: The threshold that was defined (or, in case of multiple thresholds, the one that was exceeded). diff --git a/x-pack/plugins/apm/server/lib/alerts/create_apm_lifecycle_rule_type.ts b/x-pack/plugins/rule_registry/common/assets.ts similarity index 53% rename from x-pack/plugins/apm/server/lib/alerts/create_apm_lifecycle_rule_type.ts rename to x-pack/plugins/rule_registry/common/assets.ts index 8d250a5765cce..1a5b14c605ea5 100644 --- a/x-pack/plugins/apm/server/lib/alerts/create_apm_lifecycle_rule_type.ts +++ b/x-pack/plugins/rule_registry/common/assets.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; -import { APMRuleRegistry } from '../../plugin'; - -export const createAPMLifecycleRuleType = createLifecycleRuleTypeFactory(); +export const TECHNICAL_COMPONENT_TEMPLATE_NAME = `technical-mappings`; +export const ECS_COMPONENT_TEMPLATE_NAME = `ecs-mappings`; +export const DEFAULT_ILM_POLICY_ID = 'ilm-policy'; diff --git a/x-pack/plugins/rule_registry/common/assets/component_templates/ecs_component_template.ts b/x-pack/plugins/rule_registry/common/assets/component_templates/ecs_component_template.ts new file mode 100644 index 0000000000000..7acbe0bc1227b --- /dev/null +++ b/x-pack/plugins/rule_registry/common/assets/component_templates/ecs_component_template.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { merge } from 'lodash'; +import { mappingFromFieldMap } from '../../mapping_from_field_map'; +import { ClusterPutComponentTemplateBody } from '../../types'; +import { ecsFieldMap } from '../field_maps/ecs_field_map'; +import { technicalRuleFieldMap } from '../field_maps/technical_rule_field_map'; + +export const ecsComponentTemplate: ClusterPutComponentTemplateBody = { + template: { + settings: { + number_of_shards: 1, + }, + mappings: merge( + {}, + mappingFromFieldMap(ecsFieldMap), + mappingFromFieldMap(technicalRuleFieldMap) + ), + }, +}; diff --git a/x-pack/plugins/rule_registry/common/assets/component_templates/technical_component_template.ts b/x-pack/plugins/rule_registry/common/assets/component_templates/technical_component_template.ts new file mode 100644 index 0000000000000..cc096faba387e --- /dev/null +++ b/x-pack/plugins/rule_registry/common/assets/component_templates/technical_component_template.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mappingFromFieldMap } from '../../mapping_from_field_map'; +import { ClusterPutComponentTemplateBody } from '../../types'; +import { technicalRuleFieldMap } from '../field_maps/technical_rule_field_map'; + +export const technicalComponentTemplate: ClusterPutComponentTemplateBody = { + template: { + settings: { + number_of_shards: 1, + }, + mappings: mappingFromFieldMap(technicalRuleFieldMap), + }, +}; diff --git a/x-pack/plugins/rule_registry/common/field_map/ecs_field_map.ts b/x-pack/plugins/rule_registry/common/assets/field_maps/ecs_field_map.ts similarity index 100% rename from x-pack/plugins/rule_registry/common/field_map/ecs_field_map.ts rename to x-pack/plugins/rule_registry/common/assets/field_maps/ecs_field_map.ts diff --git a/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts b/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts new file mode 100644 index 0000000000000..a946e9523548c --- /dev/null +++ b/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { pickWithPatterns } from '../../../common/pick_with_patterns'; +import { + ALERT_DURATION, + ALERT_END, + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, + ALERT_ID, + ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY_VALUE, + ALERT_START, + ALERT_STATUS, + ALERT_UUID, + EVENT_ACTION, + EVENT_KIND, + PRODUCER, + RULE_CATEGORY, + RULE_ID, + RULE_NAME, + RULE_UUID, + TAGS, + TIMESTAMP, +} from '../../../common/technical_rule_data_field_names'; +import { ecsFieldMap } from './ecs_field_map'; + +export const technicalRuleFieldMap = { + ...pickWithPatterns( + ecsFieldMap, + TIMESTAMP, + EVENT_KIND, + EVENT_ACTION, + RULE_UUID, + RULE_ID, + RULE_NAME, + RULE_CATEGORY, + TAGS + ), + [PRODUCER]: { type: 'keyword' }, + [ALERT_UUID]: { type: 'keyword' }, + [ALERT_ID]: { type: 'keyword' }, + [ALERT_START]: { type: 'date' }, + [ALERT_END]: { type: 'date' }, + [ALERT_DURATION]: { type: 'long' }, + [ALERT_SEVERITY_LEVEL]: { type: 'keyword' }, + [ALERT_SEVERITY_VALUE]: { type: 'long' }, + [ALERT_STATUS]: { type: 'keyword' }, + [ALERT_EVALUATION_THRESHOLD]: { type: 'scaled_float', scaling_factor: 100 }, + [ALERT_EVALUATION_VALUE]: { type: 'scaled_float', scaling_factor: 100 }, +} as const; + +export type TechnicalRuleFieldMaps = typeof technicalRuleFieldMap; diff --git a/x-pack/plugins/rule_registry/common/assets/index_templates/base_index_template.ts b/x-pack/plugins/rule_registry/common/assets/index_templates/base_index_template.ts new file mode 100644 index 0000000000000..ee2e45640c149 --- /dev/null +++ b/x-pack/plugins/rule_registry/common/assets/index_templates/base_index_template.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const baseIndexTemplate = { + template: { + settings: { + number_of_shards: 1, + number_of_replicas: 0, + }, + }, +}; diff --git a/x-pack/plugins/rule_registry/server/rule_registry/defaults/ilm_policy.ts b/x-pack/plugins/rule_registry/common/assets/lifecycle_policies/default_lifecycle_policy.ts similarity index 86% rename from x-pack/plugins/rule_registry/server/rule_registry/defaults/ilm_policy.ts rename to x-pack/plugins/rule_registry/common/assets/lifecycle_policies/default_lifecycle_policy.ts index c80f7e772f308..f207087f7aa19 100644 --- a/x-pack/plugins/rule_registry/server/rule_registry/defaults/ilm_policy.ts +++ b/x-pack/plugins/rule_registry/common/assets/lifecycle_policies/default_lifecycle_policy.ts @@ -5,9 +5,7 @@ * 2.0. */ -import { ILMPolicy } from '../types'; - -export const defaultIlmPolicy: ILMPolicy = { +export const defaultLifecyclePolicy = { policy: { phases: { hot: { diff --git a/x-pack/plugins/rule_registry/common/field_map/base_rule_field_map.ts b/x-pack/plugins/rule_registry/common/field_map/base_rule_field_map.ts deleted file mode 100644 index 22a74212d2ce0..0000000000000 --- a/x-pack/plugins/rule_registry/common/field_map/base_rule_field_map.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { ecsFieldMap } from './ecs_field_map'; -import { pickWithPatterns } from '../pick_with_patterns'; - -export const baseRuleFieldMap = { - ...pickWithPatterns( - ecsFieldMap, - '@timestamp', - 'event.kind', - 'event.action', - 'rule.uuid', - 'rule.id', - 'rule.name', - 'rule.category', - 'tags' - ), - 'kibana.rac.producer': { type: 'keyword' }, - 'kibana.rac.alert.uuid': { type: 'keyword' }, - 'kibana.rac.alert.id': { type: 'keyword' }, - 'kibana.rac.alert.start': { type: 'date' }, - 'kibana.rac.alert.end': { type: 'date' }, - 'kibana.rac.alert.duration.us': { type: 'long' }, - 'kibana.rac.alert.severity.level': { type: 'keyword' }, - 'kibana.rac.alert.severity.value': { type: 'long' }, - 'kibana.rac.alert.status': { type: 'keyword' }, -} as const; - -export type BaseRuleFieldMap = typeof baseRuleFieldMap; diff --git a/x-pack/plugins/rule_registry/common/field_map/index.ts b/x-pack/plugins/rule_registry/common/field_map/index.ts index 8db5c2738439b..fac8575b8af48 100644 --- a/x-pack/plugins/rule_registry/common/field_map/index.ts +++ b/x-pack/plugins/rule_registry/common/field_map/index.ts @@ -5,8 +5,6 @@ * 2.0. */ -export * from './base_rule_field_map'; -export * from './ecs_field_map'; export * from './merge_field_maps'; export * from './runtime_type_from_fieldmap'; export * from './types'; diff --git a/x-pack/plugins/rule_registry/common/index.ts b/x-pack/plugins/rule_registry/common/index.ts index b614feebc974a..5d36cd8cad7be 100644 --- a/x-pack/plugins/rule_registry/common/index.ts +++ b/x-pack/plugins/rule_registry/common/index.ts @@ -4,5 +4,4 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -export * from './field_map'; -export * from './pick_with_patterns'; +export { parseTechnicalFields } from './parse_technical_fields'; diff --git a/x-pack/plugins/rule_registry/server/rule_registry/field_map/mapping_from_field_map.ts b/x-pack/plugins/rule_registry/common/mapping_from_field_map.ts similarity index 79% rename from x-pack/plugins/rule_registry/server/rule_registry/field_map/mapping_from_field_map.ts rename to x-pack/plugins/rule_registry/common/mapping_from_field_map.ts index f1d7126906431..17eb5ae8967af 100644 --- a/x-pack/plugins/rule_registry/server/rule_registry/field_map/mapping_from_field_map.ts +++ b/x-pack/plugins/rule_registry/common/mapping_from_field_map.ts @@ -5,11 +5,11 @@ * 2.0. */ +import { TypeMapping } from '@elastic/elasticsearch/api/types'; import { set } from '@elastic/safer-lodash-set'; -import { FieldMap } from '../../../common'; -import { Mappings } from '../types'; +import { FieldMap } from './field_map/types'; -export function mappingFromFieldMap(fieldMap: FieldMap): Mappings { +export function mappingFromFieldMap(fieldMap: FieldMap): TypeMapping { const mappings = { dynamic: 'strict' as const, properties: {}, diff --git a/x-pack/plugins/rule_registry/common/parse_technical_fields.ts b/x-pack/plugins/rule_registry/common/parse_technical_fields.ts new file mode 100644 index 0000000000000..9d92c657468a3 --- /dev/null +++ b/x-pack/plugins/rule_registry/common/parse_technical_fields.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isLeft } from 'fp-ts/lib/Either'; +import { PathReporter } from 'io-ts/lib/PathReporter'; +import { technicalRuleFieldMap } from './assets/field_maps/technical_rule_field_map'; +import { runtimeTypeFromFieldMap } from './field_map'; + +const technicalFieldRuntimeType = runtimeTypeFromFieldMap(technicalRuleFieldMap); + +export const parseTechnicalFields = (input: unknown) => { + const validate = technicalFieldRuntimeType.decode(input); + + if (isLeft(validate)) { + throw new Error(PathReporter.report(validate).join('\n')); + } + + return technicalFieldRuntimeType.encode(validate.right); +}; + +export type ParsedTechnicalFields = ReturnType; diff --git a/x-pack/plugins/rule_registry/common/technical_rule_data_field_names.ts b/x-pack/plugins/rule_registry/common/technical_rule_data_field_names.ts new file mode 100644 index 0000000000000..5c954a31e79ac --- /dev/null +++ b/x-pack/plugins/rule_registry/common/technical_rule_data_field_names.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from '@kbn/rule-data-utils/target/technical_field_names'; diff --git a/x-pack/plugins/rule_registry/common/types.ts b/x-pack/plugins/rule_registry/common/types.ts new file mode 100644 index 0000000000000..299d2c300ab49 --- /dev/null +++ b/x-pack/plugins/rule_registry/common/types.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { estypes } from '@elastic/elasticsearch'; + +export type PutIndexTemplateRequest = estypes.PutIndexTemplateRequest & { + body?: { composed_of?: string[] }; +}; + +export interface ClusterPutComponentTemplateBody { + template: { + settings: { + number_of_shards: number; + }; + mappings: estypes.TypeMapping; + }; +} diff --git a/x-pack/plugins/rule_registry/kibana.json b/x-pack/plugins/rule_registry/kibana.json index ec2b366f739e6..7e3f8bf6afb72 100644 --- a/x-pack/plugins/rule_registry/kibana.json +++ b/x-pack/plugins/rule_registry/kibana.json @@ -10,6 +10,5 @@ "alerting", "triggersActionsUi" ], - "server": true, - "ui": true + "server": true } diff --git a/x-pack/plugins/rule_registry/public/index.ts b/x-pack/plugins/rule_registry/public/index.ts deleted file mode 100644 index 59697261ff20b..0000000000000 --- a/x-pack/plugins/rule_registry/public/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { PluginInitializerContext } from 'kibana/public'; -import { Plugin } from './plugin'; - -export type { RuleRegistryPublicPluginSetupContract } from './plugin'; -export { RuleRegistry } from './rule_registry'; -export type { IRuleRegistry, RuleType } from './rule_registry/types'; - -export const plugin = (context: PluginInitializerContext) => { - return new Plugin(context); -}; diff --git a/x-pack/plugins/rule_registry/public/plugin.ts b/x-pack/plugins/rule_registry/public/plugin.ts deleted file mode 100644 index 7f0bceefb6797..0000000000000 --- a/x-pack/plugins/rule_registry/public/plugin.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { - CoreSetup, - CoreStart, - Plugin as PluginClass, - PluginInitializerContext, -} from '../../../../src/core/public'; -import type { - PluginSetupContract as AlertingPluginPublicSetupContract, - PluginStartContract as AlertingPluginPublicStartContract, -} from '../../alerting/public'; -import type { - TriggersAndActionsUIPublicPluginSetup, - TriggersAndActionsUIPublicPluginStart, -} from '../../triggers_actions_ui/public'; -import type { BaseRuleFieldMap } from '../common'; -import { RuleRegistry } from './rule_registry'; - -interface RuleRegistrySetupPlugins { - alerting: AlertingPluginPublicSetupContract; - triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; -} - -interface RuleRegistryStartPlugins { - alerting: AlertingPluginPublicStartContract; - triggersActionsUi: TriggersAndActionsUIPublicPluginStart; -} - -export type RuleRegistryPublicPluginSetupContract = ReturnType; - -export class Plugin - implements PluginClass { - constructor(context: PluginInitializerContext) {} - - public setup(core: CoreSetup, plugins: RuleRegistrySetupPlugins) { - const rootRegistry = new RuleRegistry({ - fieldMap: {} as BaseRuleFieldMap, - alertTypeRegistry: plugins.triggersActionsUi.alertTypeRegistry, - }); - return { - registry: rootRegistry, - }; - } - - start(core: CoreStart, plugins: RuleRegistryStartPlugins) { - return { - registerType: plugins.triggersActionsUi.alertTypeRegistry, - }; - } -} diff --git a/x-pack/plugins/rule_registry/public/rule_registry/index.ts b/x-pack/plugins/rule_registry/public/rule_registry/index.ts deleted file mode 100644 index ea47fe2e26aad..0000000000000 --- a/x-pack/plugins/rule_registry/public/rule_registry/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { BaseRuleFieldMap } from '../../common'; -import type { RuleType, CreateRuleRegistry, RuleRegistryConstructorOptions } from './types'; - -export class RuleRegistry { - protected types: TRuleType[] = []; - - constructor(private readonly options: RuleRegistryConstructorOptions) {} - - getTypes(): TRuleType[] { - return this.types; - } - - getTypeByRuleId(id: string): TRuleType | undefined { - return this.types.find((type) => type.id === id); - } - - registerType(type: TRuleType) { - this.types.push(type); - if (this.options.parent) { - this.options.parent.registerType(type); - } else { - this.options.alertTypeRegistry.register(type); - } - } - - create: CreateRuleRegistry = ({ fieldMap, ctor }) => { - const createOptions = { - fieldMap: { - ...this.options.fieldMap, - ...fieldMap, - }, - alertTypeRegistry: this.options.alertTypeRegistry, - parent: this, - }; - - const registry = ctor ? new ctor(createOptions) : new RuleRegistry(createOptions); - - return registry as any; - }; -} diff --git a/x-pack/plugins/rule_registry/public/rule_registry/types.ts b/x-pack/plugins/rule_registry/public/rule_registry/types.ts deleted file mode 100644 index 7c186385ebd35..0000000000000 --- a/x-pack/plugins/rule_registry/public/rule_registry/types.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { AlertTypeRegistryContract } from '../../../triggers_actions_ui/public'; -import type { BaseRuleFieldMap, FieldMap } from '../../common'; - -export interface RuleRegistryConstructorOptions { - fieldMap: TFieldMap; - alertTypeRegistry: AlertTypeRegistryContract; - parent?: IRuleRegistry; -} - -export type RuleType = Parameters[0]; - -export type RegisterRuleType< - TFieldMap extends BaseRuleFieldMap, - TAdditionalRegisterOptions = {} -> = (type: RuleType & TAdditionalRegisterOptions) => void; - -export type RuleRegistryExtensions = Record< - T, - (...args: any[]) => any ->; - -export type CreateRuleRegistry< - TFieldMap extends BaseRuleFieldMap, - TRuleType extends RuleType, - TInstanceType = undefined -> = < - TNextFieldMap extends FieldMap, - TRuleRegistryInstance extends IRuleRegistry< - TFieldMap & TNextFieldMap, - any - > = TInstanceType extends IRuleRegistry - ? TInstanceType - : IRuleRegistry ->(options: { - fieldMap: TNextFieldMap; - ctor?: new ( - options: RuleRegistryConstructorOptions - ) => TRuleRegistryInstance; -}) => TRuleRegistryInstance; - -export interface IRuleRegistry< - TFieldMap extends BaseRuleFieldMap, - TRuleType extends RuleType, - TInstanceType = undefined -> { - create: CreateRuleRegistry; - registerType(type: TRuleType): void; - getTypeByRuleId(ruleId: string): TRuleType; - getTypes(): TRuleType[]; -} - -export type FieldMapOfRuleRegistry = TRuleRegistry extends IRuleRegistry< - infer TFieldMap, - any -> - ? TFieldMap - : never; diff --git a/x-pack/plugins/rule_registry/server/index.ts b/x-pack/plugins/rule_registry/server/index.ts index 9fd1408fcdb21..b51ba3e10f91a 100644 --- a/x-pack/plugins/rule_registry/server/index.ts +++ b/x-pack/plugins/rule_registry/server/index.ts @@ -9,21 +9,23 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { PluginInitializerContext } from 'src/core/server'; import { RuleRegistryPlugin } from './plugin'; -export { RuleRegistryPluginSetupContract } from './plugin'; -export { createLifecycleRuleTypeFactory } from './rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory'; -export { FieldMapOf } from './types'; -export { ScopedRuleRegistryClient } from './rule_registry/create_scoped_rule_registry_client/types'; +export type { RuleRegistryPluginSetupContract, RuleRegistryPluginStartContract } from './plugin'; +export { RuleDataClient } from './rule_data_client'; +export { IRuleDataClient } from './rule_data_client/types'; +export { getRuleExecutorData, RuleExecutorData } from './utils/get_rule_executor_data'; +export { createLifecycleRuleTypeFactory } from './utils/create_lifecycle_rule_type_factory'; export const config = { schema: schema.object({ enabled: schema.boolean({ defaultValue: true }), - unsafe: schema.object({ - write: schema.object({ enabled: schema.boolean({ defaultValue: false }) }), + write: schema.object({ + enabled: schema.boolean({ defaultValue: true }), }), + index: schema.string({ defaultValue: '.alerts' }), }), }; -export type RuleRegistryConfig = TypeOf; +export type RuleRegistryPluginConfig = TypeOf; export const plugin = (initContext: PluginInitializerContext) => new RuleRegistryPlugin(initContext); diff --git a/x-pack/plugins/rule_registry/server/plugin.ts b/x-pack/plugins/rule_registry/server/plugin.ts index 09df47c40a394..3c645f98f5c71 100644 --- a/x-pack/plugins/rule_registry/server/plugin.ts +++ b/x-pack/plugins/rule_registry/server/plugin.ts @@ -6,44 +6,44 @@ */ import { PluginInitializerContext, Plugin, CoreSetup } from 'src/core/server'; -import { PluginSetupContract as AlertingPluginSetupContract } from '../../alerting/server'; -import { RuleRegistry } from './rule_registry'; -import { defaultIlmPolicy } from './rule_registry/defaults/ilm_policy'; -import { BaseRuleFieldMap, baseRuleFieldMap } from '../common'; -import { RuleRegistryConfig } from '.'; +import { RuleDataPluginService } from './rule_data_plugin_service'; +import { RuleRegistryPluginConfig } from '.'; -export type RuleRegistryPluginSetupContract = RuleRegistry; +export type RuleRegistryPluginSetupContract = RuleDataPluginService; +export type RuleRegistryPluginStartContract = void; export class RuleRegistryPlugin implements Plugin { constructor(private readonly initContext: PluginInitializerContext) { this.initContext = initContext; } - public setup( - core: CoreSetup, - plugins: { alerting: AlertingPluginSetupContract } - ): RuleRegistryPluginSetupContract { - const globalConfig = this.initContext.config.legacy.get(); - const config = this.initContext.config.get(); + public setup(core: CoreSetup): RuleRegistryPluginSetupContract { + const config = this.initContext.config.get(); const logger = this.initContext.logger.get(); - const rootRegistry = new RuleRegistry({ - coreSetup: core, - ilmPolicy: defaultIlmPolicy, - fieldMap: baseRuleFieldMap, - kibanaIndex: globalConfig.kibana.index, - name: 'alerts', - kibanaVersion: this.initContext.env.packageInfo.version, - logger: logger.get('root'), - alertingPluginSetupContract: plugins.alerting, - writeEnabled: config.unsafe.write.enabled, + const service = new RuleDataPluginService({ + logger, + isWriteEnabled: config.write.enabled, + index: config.index, + getClusterClient: async () => { + const [coreStart] = await core.getStartServices(); + + return coreStart.elasticsearch.client.asInternalUser; + }, + }); + + service.init().catch((originalError) => { + const error = new Error('Failed installing assets'); + // @ts-ignore + error.stack = originalError.stack; + logger.error(error); }); - return rootRegistry; + return service; } - public start() {} + public start(): RuleRegistryPluginStartContract {} public stop() {} } diff --git a/x-pack/plugins/rule_registry/server/rule_data_client/index.ts b/x-pack/plugins/rule_registry/server/rule_data_client/index.ts new file mode 100644 index 0000000000000..135c870f20727 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/rule_data_client/index.ts @@ -0,0 +1,132 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { TypeMapping } from '@elastic/elasticsearch/api/types'; +import { ResponseError } from '@elastic/elasticsearch/lib/errors'; +import { IndexPatternsFetcher } from '../../../../../src/plugins/data/server'; +import { + IRuleDataClient, + RuleDataClientConstructorOptions, + RuleDataReader, + RuleDataWriter, +} from './types'; + +function getNamespacedAlias(options: { alias: string; namespace?: string }) { + return [options.alias, options.namespace].filter(Boolean).join('-'); +} + +export class RuleDataClient implements IRuleDataClient { + constructor(private readonly options: RuleDataClientConstructorOptions) {} + + private async getClusterClient() { + await this.options.ready(); + return await this.options.getClusterClient(); + } + + getReader(options: { namespace?: string } = {}): RuleDataReader { + const index = `${[this.options.alias, options.namespace].filter(Boolean).join('-')}*`; + + return { + search: async (request) => { + const clusterClient = await this.getClusterClient(); + + const { body } = (await clusterClient.search({ + ...request, + index, + })) as { body: any }; + + return body; + }, + getDynamicIndexPattern: async () => { + const clusterClient = await this.getClusterClient(); + const indexPatternsFetcher = new IndexPatternsFetcher(clusterClient); + + const fields = await indexPatternsFetcher.getFieldsForWildcard({ + pattern: index, + }); + + return { + fields, + timeFieldName: '@timestamp', + title: index, + }; + }, + }; + } + + getWriter(options: { namespace?: string } = {}): RuleDataWriter { + const { namespace } = options; + const alias = getNamespacedAlias({ alias: this.options.alias, namespace }); + return { + bulk: async (request) => { + const clusterClient = await this.getClusterClient(); + + const requestWithDefaultParameters = { + ...request, + require_alias: true, + index: alias, + }; + + return clusterClient.bulk(requestWithDefaultParameters).then((response) => { + if (response.body.errors) { + if ( + response.body.items.length === 1 && + response.body.items[0]?.index?.error?.type === 'index_not_found_exception' + ) { + return this.createOrUpdateWriteTarget({ namespace }).then(() => { + return clusterClient.bulk(requestWithDefaultParameters); + }); + } + const error = new ResponseError(response); + throw error; + } + return response; + }); + }, + }; + } + + async createOrUpdateWriteTarget({ namespace }: { namespace?: string }) { + const alias = getNamespacedAlias({ alias: this.options.alias, namespace }); + + const clusterClient = await this.getClusterClient(); + + const { body: aliasExists } = await clusterClient.indices.existsAlias({ + name: alias, + }); + + const concreteIndexName = `${alias}-000001`; + + if (!aliasExists) { + try { + await clusterClient.indices.create({ + index: concreteIndexName, + body: { + aliases: { + [alias]: { + is_write_index: true, + }, + }, + }, + }); + } catch (err) { + // something might have created the index already, that sounds OK + if (err?.meta?.body?.type !== 'resource_already_exists_exception') { + throw err; + } + } + } + + const { body: simulateResponse } = await clusterClient.transport.request({ + method: 'POST', + path: `/_index_template/_simulate_index/${concreteIndexName}`, + }); + + const mappings: TypeMapping = simulateResponse.template.mappings; + + await clusterClient.indices.putMapping({ index: `${alias}*`, body: mappings }); + } +} diff --git a/x-pack/plugins/rule_registry/server/rule_data_client/types.ts b/x-pack/plugins/rule_registry/server/rule_data_client/types.ts new file mode 100644 index 0000000000000..348fca6a58188 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/rule_data_client/types.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ApiResponse } from '@elastic/elasticsearch'; +import { BulkRequest, BulkResponse } from '@elastic/elasticsearch/api/types'; +import { ElasticsearchClient } from 'kibana/server'; +import { FieldDescriptor } from 'src/plugins/data/server'; +import { ESSearchRequest, ESSearchResponse } from 'typings/elasticsearch'; +import { TechnicalRuleDataFieldName } from '../../common/technical_rule_data_field_names'; + +export interface RuleDataReader { + search( + request: TSearchRequest + ): Promise< + ESSearchResponse>, TSearchRequest> + >; + getDynamicIndexPattern( + target?: string + ): Promise<{ + title: string; + timeFieldName: string; + fields: FieldDescriptor[]; + }>; +} + +export interface RuleDataWriter { + bulk(request: BulkRequest): Promise>; +} + +export interface IRuleDataClient { + getReader(options?: { namespace?: string }): RuleDataReader; + getWriter(options?: { namespace?: string }): RuleDataWriter; + createOrUpdateWriteTarget(options: { namespace?: string }): Promise; +} + +export interface RuleDataClientConstructorOptions { + getClusterClient: () => Promise; + ready: () => Promise; + alias: string; +} diff --git a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index.ts b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index.ts new file mode 100644 index 0000000000000..159e9b8152597 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index.ts @@ -0,0 +1,158 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { ClusterPutComponentTemplate } from '@elastic/elasticsearch/api/requestParams'; +import { estypes } from '@elastic/elasticsearch'; +import { ElasticsearchClient, Logger } from 'kibana/server'; +import { technicalComponentTemplate } from '../../common/assets/component_templates/technical_component_template'; +import { + DEFAULT_ILM_POLICY_ID, + ECS_COMPONENT_TEMPLATE_NAME, + TECHNICAL_COMPONENT_TEMPLATE_NAME, +} from '../../common/assets'; +import { ecsComponentTemplate } from '../../common/assets/component_templates/ecs_component_template'; +import { defaultLifecyclePolicy } from '../../common/assets/lifecycle_policies/default_lifecycle_policy'; +import { ClusterPutComponentTemplateBody, PutIndexTemplateRequest } from '../../common/types'; + +const BOOTSTRAP_TIMEOUT = 60000; + +interface RuleDataPluginServiceConstructorOptions { + getClusterClient: () => Promise; + logger: Logger; + isWriteEnabled: boolean; + index: string; +} + +function createSignal() { + let resolver: () => void; + + let ready: boolean = false; + + const promise = new Promise((resolve) => { + resolver = resolve; + }); + + function wait(): Promise { + return promise.then(() => { + ready = true; + }); + } + + function complete() { + resolver(); + } + + return { wait, complete, isReady: () => ready }; +} + +export class RuleDataPluginService { + signal = createSignal(); + + constructor(private readonly options: RuleDataPluginServiceConstructorOptions) {} + + private assertWriteEnabled() { + if (!this.isWriteEnabled) { + throw new Error('Write operations are disabled'); + } + } + + private async getClusterClient() { + return await this.options.getClusterClient(); + } + + async init() { + if (!this.isWriteEnabled) { + this.options.logger.info('Write is disabled, not installing assets'); + this.signal.complete(); + return; + } + + this.options.logger.info(`Installing assets in namespace ${this.getFullAssetName()}`); + + await this._createOrUpdateLifecyclePolicy({ + policy: this.getFullAssetName(DEFAULT_ILM_POLICY_ID), + body: defaultLifecyclePolicy, + }); + + await this._createOrUpdateComponentTemplate({ + name: this.getFullAssetName(TECHNICAL_COMPONENT_TEMPLATE_NAME), + body: technicalComponentTemplate, + }); + + await this._createOrUpdateComponentTemplate({ + name: this.getFullAssetName(ECS_COMPONENT_TEMPLATE_NAME), + body: ecsComponentTemplate, + }); + + this.options.logger.info(`Installed all assets`); + + this.signal.complete(); + } + + private async _createOrUpdateComponentTemplate( + template: ClusterPutComponentTemplate + ) { + this.assertWriteEnabled(); + + const clusterClient = await this.getClusterClient(); + this.options.logger.debug(`Installing component template ${template.name}`); + return clusterClient.cluster.putComponentTemplate(template); + } + + private async _createOrUpdateIndexTemplate(template: PutIndexTemplateRequest) { + this.assertWriteEnabled(); + + const clusterClient = await this.getClusterClient(); + this.options.logger.debug(`Installing index template ${template.name}`); + return clusterClient.indices.putIndexTemplate(template); + } + + private async _createOrUpdateLifecyclePolicy(policy: estypes.PutLifecycleRequest) { + this.assertWriteEnabled(); + const clusterClient = await this.getClusterClient(); + + this.options.logger.debug(`Installing lifecycle policy ${policy.policy}`); + return clusterClient.ilm.putLifecycle(policy); + } + + async createOrUpdateComponentTemplate( + template: ClusterPutComponentTemplate + ) { + await this.wait(); + return this._createOrUpdateComponentTemplate(template); + } + + async createOrUpdateIndexTemplate(template: PutIndexTemplateRequest) { + await this.wait(); + return this._createOrUpdateIndexTemplate(template); + } + + async createOrUpdateLifecyclePolicy(policy: estypes.PutLifecycleRequest) { + await this.wait(); + return this._createOrUpdateLifecyclePolicy(policy); + } + + isReady() { + return this.signal.isReady(); + } + + wait() { + return Promise.race([ + this.signal.wait(), + new Promise((resolve, reject) => { + setTimeout(reject, BOOTSTRAP_TIMEOUT); + }), + ]); + } + + isWriteEnabled(): boolean { + return this.options.isWriteEnabled; + } + + getFullAssetName(assetName?: string) { + return [this.options.index, assetName].filter(Boolean).join('-'); + } +} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/index.ts b/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/index.ts deleted file mode 100644 index 0d7735380b640..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/index.ts +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { Either, isLeft, isRight } from 'fp-ts/lib/Either'; -import { Errors } from 'io-ts'; -import { PathReporter } from 'io-ts/lib/PathReporter'; -import { Logger } from 'kibana/server'; -import { IScopedClusterClient as ScopedClusterClient } from 'src/core/server'; -import { castArray, compact } from 'lodash'; -import { ESSearchRequest } from 'typings/elasticsearch'; -import { IndexPatternsFetcher } from '../../../../../../src/plugins/data/server'; -import { ClusterClientAdapter } from '../../../../event_log/server'; -import { TypeOfFieldMap } from '../../../common'; -import { ScopedRuleRegistryClient, EventsOf } from './types'; -import { BaseRuleFieldMap } from '../../../common'; -import { RuleRegistry } from '..'; - -const createPathReporterError = (either: Either) => { - const error = new Error(`Failed to validate alert event`); - error.stack += '\n' + PathReporter.report(either).join('\n'); - return error; -}; - -export function createScopedRuleRegistryClient({ - ruleUuids, - scopedClusterClient, - clusterClientAdapter, - indexAliasName, - indexTarget, - logger, - registry, - ruleData, -}: { - ruleUuids: string[]; - scopedClusterClient: ScopedClusterClient; - clusterClientAdapter: ClusterClientAdapter<{ - body: TypeOfFieldMap; - index: string; - }>; - indexAliasName: string; - indexTarget: string; - logger: Logger; - registry: RuleRegistry; - ruleData?: { - rule: { - id: string; - uuid: string; - category: string; - name: string; - }; - producer: string; - tags: string[]; - }; -}): ScopedRuleRegistryClient { - const fieldmapType = registry.getFieldMapType(); - - const defaults = ruleData - ? { - 'rule.uuid': ruleData.rule.uuid, - 'rule.id': ruleData.rule.id, - 'rule.name': ruleData.rule.name, - 'rule.category': ruleData.rule.category, - 'kibana.rac.producer': ruleData.producer, - tags: ruleData.tags, - } - : {}; - - const client: ScopedRuleRegistryClient = { - search: async (searchRequest) => { - const fields = [ - 'rule.id', - ...(searchRequest.body?.fields ? castArray(searchRequest.body.fields) : []), - ]; - - const response = await scopedClusterClient.asInternalUser.search({ - ...searchRequest, - index: indexTarget, - body: { - ...searchRequest.body, - query: { - bool: { - filter: [ - { terms: { 'rule.uuid': ruleUuids } }, - ...compact([searchRequest.body?.query]), - ], - }, - }, - fields, - }, - }); - - return { - body: response.body as any, - events: compact( - response.body.hits.hits.map((hit) => { - const ruleTypeId: string = hit.fields!['rule.id'][0]; - - const registryOfType = registry.getRegistryByRuleTypeId(ruleTypeId); - - if (ruleTypeId && !registryOfType) { - logger.warn( - `Could not find type ${ruleTypeId} in registry, decoding with default type` - ); - } - - const type = registryOfType?.getFieldMapType() ?? fieldmapType; - - const validation = type.decode(hit.fields); - if (isLeft(validation)) { - const error = createPathReporterError(validation); - logger.error(error); - return undefined; - } - return type.encode(validation.right); - }) - ) as EventsOf, - }; - }, - getDynamicIndexPattern: async () => { - const indexPatternsFetcher = new IndexPatternsFetcher(scopedClusterClient.asInternalUser); - - const fields = await indexPatternsFetcher.getFieldsForWildcard({ - pattern: indexTarget, - }); - - return { - fields, - timeFieldName: '@timestamp', - title: indexTarget, - }; - }, - index: (doc) => { - const validation = fieldmapType.decode({ - ...doc, - ...defaults, - }); - - if (isLeft(validation)) { - throw createPathReporterError(validation); - } - - clusterClientAdapter.indexDocument({ - body: validation.right, - index: indexAliasName, - }); - }, - bulkIndex: (docs) => { - const validations = docs.map((doc) => { - return fieldmapType.decode({ - ...doc, - ...defaults, - }); - }); - - const errors = compact( - validations.map((validation) => - isLeft(validation) ? createPathReporterError(validation) : null - ) - ); - - errors.forEach((error) => { - logger.error(error); - }); - - const operations = compact( - validations.map((validation) => (isRight(validation) ? validation.right : null)) - ).map((doc) => ({ body: doc, index: indexAliasName })); - - return clusterClientAdapter.indexDocuments(operations); - }, - }; - - // @ts-expect-error: We can't use ScopedRuleRegistryClient - // when creating the client, due to #41693 which will be fixed in 4.2 - return client; -} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/types.ts b/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/types.ts deleted file mode 100644 index f7b2394fe3a32..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/types.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FieldDescriptor } from 'src/plugins/data/server'; -import { ESSearchRequest, ESSearchResponse } from 'typings/elasticsearch'; -import { - PatternsUnionOf, - PickWithPatterns, - OutputOfFieldMap, - BaseRuleFieldMap, -} from '../../../common'; - -export type PrepopulatedRuleEventFields = keyof Pick< - BaseRuleFieldMap, - 'rule.uuid' | 'rule.id' | 'rule.name' | 'rule.category' | 'kibana.rac.producer' ->; - -type FieldsOf = - | Array<{ field: PatternsUnionOf } | PatternsUnionOf> - | PatternsUnionOf; - -type Fields = Array<{ field: TPattern } | TPattern> | TPattern; - -type FieldsESSearchRequest = ESSearchRequest & { - body?: { fields: FieldsOf }; -}; - -export type EventsOf< - TFieldsESSearchRequest extends ESSearchRequest, - TFieldMap extends BaseRuleFieldMap -> = TFieldsESSearchRequest extends { body: { fields: infer TFields } } - ? TFields extends Fields - ? Array>> - : never - : never; - -export interface ScopedRuleRegistryClient { - search>( - request: TSearchRequest - ): Promise<{ - body: ESSearchResponse; - events: EventsOf; - }>; - getDynamicIndexPattern(): Promise<{ - title: string; - timeFieldName: string; - fields: FieldDescriptor[]; - }>; - index(doc: Omit, PrepopulatedRuleEventFields>): void; - bulkIndex( - doc: Array, PrepopulatedRuleEventFields>> - ): Promise; -} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/index.ts b/x-pack/plugins/rule_registry/server/rule_registry/index.ts deleted file mode 100644 index bbc381f60a809..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/index.ts +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { CoreSetup, Logger, RequestHandlerContext } from 'kibana/server'; -import { inspect } from 'util'; -import { AlertsClient } from '../../../alerting/server'; -import { SpacesServiceStart } from '../../../spaces/server'; -import { - ActionVariable, - AlertInstanceState, - AlertTypeParams, - AlertTypeState, -} from '../../../alerting/common'; -import { createReadySignal, ClusterClientAdapter } from '../../../event_log/server'; -import { ILMPolicy } from './types'; -import { RuleParams, RuleType } from '../types'; -import { - mergeFieldMaps, - TypeOfFieldMap, - FieldMap, - FieldMapType, - BaseRuleFieldMap, - runtimeTypeFromFieldMap, -} from '../../common'; -import { mappingFromFieldMap } from './field_map/mapping_from_field_map'; -import { PluginSetupContract as AlertingPluginSetupContract } from '../../../alerting/server'; -import { createScopedRuleRegistryClient } from './create_scoped_rule_registry_client'; -import { ScopedRuleRegistryClient } from './create_scoped_rule_registry_client/types'; - -interface RuleRegistryOptions { - kibanaIndex: string; - kibanaVersion: string; - name: string; - logger: Logger; - coreSetup: CoreSetup; - spacesStart?: SpacesServiceStart; - fieldMap: TFieldMap; - ilmPolicy: ILMPolicy; - alertingPluginSetupContract: AlertingPluginSetupContract; - writeEnabled: boolean; -} - -export class RuleRegistry { - private readonly esAdapter: ClusterClientAdapter<{ - body: TypeOfFieldMap; - index: string; - }>; - private readonly children: Array> = []; - private readonly types: Array> = []; - - private readonly fieldmapType: FieldMapType; - - constructor(private readonly options: RuleRegistryOptions) { - const { logger, coreSetup } = options; - - this.fieldmapType = runtimeTypeFromFieldMap(options.fieldMap); - - const { wait, signal } = createReadySignal(); - - this.esAdapter = new ClusterClientAdapter<{ - body: TypeOfFieldMap; - index: string; - }>({ - wait, - elasticsearchClientPromise: coreSetup - .getStartServices() - .then(([{ elasticsearch }]) => elasticsearch.client.asInternalUser), - logger: logger.get('esAdapter'), - }); - - if (this.options.writeEnabled) { - this.initialize() - .then(() => { - this.options.logger.debug('Bootstrapped alerts index'); - signal(true); - }) - .catch((err) => { - logger.error(inspect(err, { depth: null })); - signal(false); - }); - } else { - logger.debug('Write disabled, indices are not being bootstrapped'); - } - } - - private getEsNames() { - const base = [this.options.kibanaIndex, this.options.name]; - const indexTarget = `${base.join('-')}*`; - const indexAliasName = [...base, this.options.kibanaVersion.toLowerCase()].join('-'); - const policyName = [...base, 'policy'].join('-'); - - return { - indexAliasName, - indexTarget, - policyName, - }; - } - - private async initialize() { - const { indexAliasName, policyName } = this.getEsNames(); - - const ilmPolicyExists = await this.esAdapter.doesIlmPolicyExist(policyName); - - if (!ilmPolicyExists) { - await this.esAdapter.createIlmPolicy( - policyName, - (this.options.ilmPolicy as unknown) as Record - ); - } - - const templateExists = await this.esAdapter.doesIndexTemplateExist(indexAliasName); - - const mappings = mappingFromFieldMap(this.options.fieldMap); - - const esClient = (await this.options.coreSetup.getStartServices())[0].elasticsearch.client - .asInternalUser; - - if (!templateExists) { - await this.esAdapter.createIndexTemplate(indexAliasName, { - index_patterns: [`${indexAliasName}-*`], - settings: { - number_of_shards: 1, - auto_expand_replicas: '0-1', - 'index.lifecycle.name': policyName, - 'index.lifecycle.rollover_alias': indexAliasName, - 'sort.field': '@timestamp', - 'sort.order': 'desc', - }, - mappings, - }); - } else { - await esClient.indices.putTemplate({ - name: indexAliasName, - body: { - index_patterns: [`${indexAliasName}-*`], - mappings, - }, - create: false, - }); - } - - const aliasExists = await this.esAdapter.doesAliasExist(indexAliasName); - - if (!aliasExists) { - await this.esAdapter.createIndex(`${indexAliasName}-000001`, { - aliases: { - [indexAliasName]: { - is_write_index: true, - }, - }, - }); - } else { - const { body: aliases } = (await esClient.indices.getAlias({ - index: indexAliasName, - })) as { body: Record }> }; - - const writeIndex = Object.entries(aliases).find( - ([indexName, alias]) => alias.aliases[indexAliasName]?.is_write_index === true - )![0]; - - const { body: fieldsInWriteIndex } = await esClient.fieldCaps({ - index: writeIndex, - fields: '*', - }); - - const fieldsNotOrDifferentInIndex = Object.entries(this.options.fieldMap).filter( - ([fieldName, descriptor]) => { - return ( - !fieldsInWriteIndex.fields[fieldName] || - !fieldsInWriteIndex.fields[fieldName][descriptor.type] - ); - } - ); - - if (fieldsNotOrDifferentInIndex.length > 0) { - this.options.logger.debug( - `Some fields were not found in write index mapping: ${Object.keys( - Object.fromEntries(fieldsNotOrDifferentInIndex) - ).join(',')}` - ); - this.options.logger.info(`Updating index mapping due to new fields`); - - await esClient.indices.putMapping({ - index: indexAliasName, - body: mappings, - }); - } - } - } - - getFieldMapType() { - return this.fieldmapType; - } - - getRuleTypeById(ruleTypeId: string) { - return this.types.find((type) => type.id === ruleTypeId); - } - - getRegistryByRuleTypeId(ruleTypeId: string): RuleRegistry | undefined { - if (this.getRuleTypeById(ruleTypeId)) { - return this; - } - - return this.children.find((child) => child.getRegistryByRuleTypeId(ruleTypeId)); - } - - async createScopedRuleRegistryClient({ - context, - alertsClient, - }: { - context: RequestHandlerContext; - alertsClient: AlertsClient; - }): Promise | undefined> { - if (!this.options.writeEnabled) { - return undefined; - } - const { indexAliasName, indexTarget } = this.getEsNames(); - - const frameworkAlerts = ( - await alertsClient.find({ - options: { - perPage: 1000, - }, - }) - ).data; - - return createScopedRuleRegistryClient({ - ruleUuids: frameworkAlerts.map((frameworkAlert) => frameworkAlert.id), - scopedClusterClient: context.core.elasticsearch.client, - clusterClientAdapter: this.esAdapter, - registry: this, - indexAliasName, - indexTarget, - logger: this.options.logger, - }); - } - - registerType( - type: RuleType - ) { - const logger = this.options.logger.get(type.id); - - const { indexAliasName, indexTarget } = this.getEsNames(); - - this.types.push(type); - - this.options.alertingPluginSetupContract.registerType< - AlertTypeParams, - AlertTypeState, - AlertInstanceState, - { [key in TActionVariable['name']]: any }, - string - >({ - ...type, - executor: async (executorOptions) => { - const { services, alertId, name, tags } = executorOptions; - - const rule = { - id: type.id, - uuid: alertId, - category: type.name, - name, - }; - - const producer = type.producer; - - return type.executor({ - ...executorOptions, - rule, - producer, - services: { - ...services, - logger, - ...(this.options.writeEnabled - ? { - scopedRuleRegistryClient: createScopedRuleRegistryClient({ - scopedClusterClient: services.scopedClusterClient, - ruleUuids: [rule.uuid], - clusterClientAdapter: this.esAdapter, - registry: this, - indexAliasName, - indexTarget, - ruleData: { - producer, - rule, - tags, - }, - logger: this.options.logger, - }), - } - : {}), - }, - }); - }, - }); - } - - create({ - name, - fieldMap, - ilmPolicy, - }: { - name: string; - fieldMap: TNextFieldMap; - ilmPolicy?: ILMPolicy; - }): RuleRegistry { - const mergedFieldMap = fieldMap - ? mergeFieldMaps(this.options.fieldMap, fieldMap) - : this.options.fieldMap; - - const child = new RuleRegistry({ - ...this.options, - logger: this.options.logger.get(name), - name: [this.options.name, name].filter(Boolean).join('-'), - fieldMap: mergedFieldMap, - ...(ilmPolicy ? { ilmPolicy } : {}), - }); - - this.children.push(child); - - // @ts-expect-error could be instantiated with a different subtype of constraint - return child; - } -} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory.ts b/x-pack/plugins/rule_registry/server/rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory.ts deleted file mode 100644 index 65eaf0964cfca..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory.ts +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import * as t from 'io-ts'; -import { isLeft } from 'fp-ts/lib/Either'; -import v4 from 'uuid/v4'; -import { Mutable } from 'utility-types'; -import { AlertInstance } from '../../../../alerting/server'; -import { ActionVariable, AlertInstanceState } from '../../../../alerting/common'; -import { RuleParams, RuleType } from '../../types'; -import { BaseRuleFieldMap, OutputOfFieldMap } from '../../../common'; -import { PrepopulatedRuleEventFields } from '../create_scoped_rule_registry_client/types'; -import { RuleRegistry } from '..'; - -type UserDefinedAlertFields = Omit< - OutputOfFieldMap, - PrepopulatedRuleEventFields | 'kibana.rac.alert.id' | 'kibana.rac.alert.uuid' | '@timestamp' ->; - -type LifecycleAlertService< - TFieldMap extends BaseRuleFieldMap, - TActionVariable extends ActionVariable -> = (alert: { - id: string; - fields: UserDefinedAlertFields; -}) => AlertInstance; - -type CreateLifecycleRuleType = < - TRuleParams extends RuleParams, - TActionVariable extends ActionVariable ->( - type: RuleType< - TFieldMap, - TRuleParams, - TActionVariable, - { alertWithLifecycle: LifecycleAlertService } - > -) => RuleType; - -const trackedAlertStateRt = t.type({ - alertId: t.string, - alertUuid: t.string, - started: t.string, -}); - -const wrappedStateRt = t.type({ - wrapped: t.record(t.string, t.unknown), - trackedAlerts: t.record(t.string, trackedAlertStateRt), -}); - -export function createLifecycleRuleTypeFactory< - TRuleRegistry extends RuleRegistry ->(): TRuleRegistry extends RuleRegistry - ? CreateLifecycleRuleType - : never; - -export function createLifecycleRuleTypeFactory(): CreateLifecycleRuleType { - return (type) => { - return { - ...type, - executor: async (options) => { - const { - services: { scopedRuleRegistryClient, alertInstanceFactory, logger }, - state: previousState, - rule, - } = options; - - const decodedState = wrappedStateRt.decode(previousState); - - const state = isLeft(decodedState) - ? { - wrapped: previousState, - trackedAlerts: {}, - } - : decodedState.right; - - const currentAlerts: Record< - string, - UserDefinedAlertFields & { 'kibana.rac.alert.id': string } - > = {}; - - const timestamp = options.startedAt.toISOString(); - - const nextWrappedState = await type.executor({ - ...options, - state: state.wrapped, - services: { - ...options.services, - alertWithLifecycle: ({ id, fields }) => { - currentAlerts[id] = { - ...fields, - 'kibana.rac.alert.id': id, - }; - return alertInstanceFactory(id); - }, - }, - }); - - const currentAlertIds = Object.keys(currentAlerts); - const trackedAlertIds = Object.keys(state.trackedAlerts); - const newAlertIds = currentAlertIds.filter((alertId) => !trackedAlertIds.includes(alertId)); - - const allAlertIds = [...new Set(currentAlertIds.concat(trackedAlertIds))]; - - const trackedAlertStatesOfRecovered = Object.values(state.trackedAlerts).filter( - (trackedAlertState) => !currentAlerts[trackedAlertState.alertId] - ); - - logger.debug( - `Tracking ${allAlertIds.length} alerts (${newAlertIds.length} new, ${trackedAlertStatesOfRecovered.length} recovered)` - ); - - const alertsDataMap: Record> = { - ...currentAlerts, - }; - - if (scopedRuleRegistryClient && trackedAlertStatesOfRecovered.length) { - const { events } = await scopedRuleRegistryClient.search({ - body: { - query: { - bool: { - filter: [ - { - term: { - 'rule.uuid': rule.uuid, - }, - }, - { - terms: { - 'kibana.rac.alert.uuid': trackedAlertStatesOfRecovered.map( - (trackedAlertState) => trackedAlertState.alertUuid - ), - }, - }, - ], - }, - }, - size: trackedAlertStatesOfRecovered.length, - collapse: { - field: 'kibana.rac.alert.uuid', - }, - _source: false, - fields: ['*'], - sort: { - '@timestamp': 'desc' as const, - }, - }, - }); - - events.forEach((event) => { - const alertId = event['kibana.rac.alert.id']!; - alertsDataMap[alertId] = event; - }); - } - - const eventsToIndex: Array> = allAlertIds.map( - (alertId) => { - const alertData = alertsDataMap[alertId]; - - if (!alertData) { - logger.warn(`Could not find alert data for ${alertId}`); - } - - const event: Mutable> = { - ...alertData, - '@timestamp': timestamp, - 'event.kind': 'state', - 'kibana.rac.alert.id': alertId, - }; - - const isNew = !state.trackedAlerts[alertId]; - const isRecovered = !currentAlerts[alertId]; - const isActiveButNotNew = !isNew && !isRecovered; - const isActive = !isRecovered; - - const { alertUuid, started } = state.trackedAlerts[alertId] ?? { - alertUuid: v4(), - started: timestamp, - }; - - event['kibana.rac.alert.start'] = started; - event['kibana.rac.alert.uuid'] = alertUuid; - - if (isNew) { - event['event.action'] = 'open'; - } - - if (isRecovered) { - event['kibana.rac.alert.end'] = timestamp; - event['event.action'] = 'close'; - event['kibana.rac.alert.status'] = 'closed'; - } - - if (isActiveButNotNew) { - event['event.action'] = 'active'; - } - - if (isActive) { - event['kibana.rac.alert.status'] = 'open'; - } - - event['kibana.rac.alert.duration.us'] = - (options.startedAt.getTime() - new Date(event['kibana.rac.alert.start']!).getTime()) * - 1000; - - return event; - } - ); - - if (eventsToIndex.length && scopedRuleRegistryClient) { - await scopedRuleRegistryClient.bulkIndex(eventsToIndex); - } - - const nextTrackedAlerts = Object.fromEntries( - eventsToIndex - .filter((event) => event['kibana.rac.alert.status'] !== 'closed') - .map((event) => { - const alertId = event['kibana.rac.alert.id']!; - const alertUuid = event['kibana.rac.alert.uuid']!; - const started = new Date(event['kibana.rac.alert.start']!).toISOString(); - return [alertId, { alertId, alertUuid, started }]; - }) - ); - - return { - wrapped: nextWrappedState, - trackedAlerts: nextTrackedAlerts, - }; - }, - }; - }; -} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/types.ts b/x-pack/plugins/rule_registry/server/rule_registry/types.ts deleted file mode 100644 index ec7293d1c1d4c..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/types.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export interface Mappings { - dynamic: 'strict' | boolean; - properties: Record; -} - -enum ILMPolicyPhase { - hot = 'hot', - delete = 'delete', -} - -enum ILMPolicyAction { - rollover = 'rollover', - delete = 'delete', -} - -interface ILMActionOptions { - [ILMPolicyAction.rollover]: { - max_size: string; - max_age: string; - }; - [ILMPolicyAction.delete]: {}; -} - -export interface ILMPolicy { - policy: { - phases: Record< - ILMPolicyPhase, - { - actions: { - [key in keyof ILMActionOptions]?: ILMActionOptions[key]; - }; - } - >; - }; -} diff --git a/x-pack/plugins/rule_registry/server/types.ts b/x-pack/plugins/rule_registry/server/types.ts index dd54046365d98..959c05fd1334e 100644 --- a/x-pack/plugins/rule_registry/server/types.ts +++ b/x-pack/plugins/rule_registry/server/types.ts @@ -4,97 +4,37 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { Type, TypeOf } from '@kbn/config-schema'; -import { Logger } from 'kibana/server'; + import { - ActionVariable, AlertInstanceContext, AlertInstanceState, AlertTypeParams, AlertTypeState, } from '../../alerting/common'; -import { ActionGroup, AlertExecutorOptions } from '../../alerting/server'; -import { RuleRegistry } from './rule_registry'; -import { ScopedRuleRegistryClient } from './rule_registry/create_scoped_rule_registry_client/types'; -import { BaseRuleFieldMap } from '../common'; - -export type RuleParams = Type; +import { AlertType } from '../../alerting/server'; -type TypeOfRuleParams = TypeOf; +type SimpleAlertType< + TParams extends AlertTypeParams = {}, + TAlertInstanceContext extends AlertInstanceContext = {} +> = AlertType; -type RuleExecutorServices< - TFieldMap extends BaseRuleFieldMap, - TActionVariable extends ActionVariable -> = AlertExecutorOptions< - AlertTypeParams, - AlertTypeState, - AlertInstanceState, - { [key in TActionVariable['name']]: any }, - string ->['services'] & { - logger: Logger; - scopedRuleRegistryClient?: ScopedRuleRegistryClient; -}; - -type PassthroughAlertExecutorOptions = Pick< - AlertExecutorOptions< - AlertTypeParams, - AlertTypeState, - AlertInstanceState, - AlertInstanceContext, - string - >, - 'previousStartedAt' | 'startedAt' | 'state' ->; - -type RuleExecutorFunction< - TFieldMap extends BaseRuleFieldMap, - TRuleParams extends RuleParams, - TActionVariable extends ActionVariable, - TAdditionalRuleExecutorServices extends Record +export type AlertTypeExecutor< + TParams extends AlertTypeParams = {}, + TAlertInstanceContext extends AlertInstanceContext = {}, + TServices extends Record = {} > = ( - options: PassthroughAlertExecutorOptions & { - services: RuleExecutorServices & TAdditionalRuleExecutorServices; - params: TypeOfRuleParams; - rule: { - id: string; - uuid: string; - name: string; - category: string; - }; - producer: string; + options: Parameters['executor']>[0] & { + services: TServices; } -) => Promise>; - -interface RuleTypeBase { - id: string; - name: string; - actionGroups: Array>; - defaultActionGroupId: string; - producer: string; - minimumLicenseRequired: 'basic' | 'gold' | 'trial'; -} - -export type RuleType< - TFieldMap extends BaseRuleFieldMap, - TRuleParams extends RuleParams, - TActionVariable extends ActionVariable, - TAdditionalRuleExecutorServices extends Record = {} -> = RuleTypeBase & { - validate: { - params: TRuleParams; - }; - actionVariables: { - context: TActionVariable[]; - }; - executor: RuleExecutorFunction< - TFieldMap, - TRuleParams, - TActionVariable, - TAdditionalRuleExecutorServices - >; +) => Promise; + +export type AlertTypeWithExecutor< + TParams extends AlertTypeParams = {}, + TAlertInstanceContext extends AlertInstanceContext = {}, + TServices extends Record = {} +> = Omit< + AlertType, + 'executor' +> & { + executor: AlertTypeExecutor; }; - -export type FieldMapOf< - TRuleRegistry extends RuleRegistry -> = TRuleRegistry extends RuleRegistry ? TFieldMap : never; diff --git a/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts new file mode 100644 index 0000000000000..b523dd6770b9f --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts @@ -0,0 +1,246 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { Logger } from '@kbn/logging'; +import { isLeft } from 'fp-ts/lib/Either'; +import * as t from 'io-ts'; +import { Mutable } from 'utility-types'; +import v4 from 'uuid/v4'; +import { AlertInstance } from '../../../alerting/server'; +import { RuleDataClient } from '..'; +import { + AlertInstanceContext, + AlertInstanceState, + AlertTypeParams, +} from '../../../alerting/common'; +import { + ALERT_DURATION, + ALERT_END, + ALERT_ID, + ALERT_START, + ALERT_STATUS, + ALERT_UUID, + EVENT_ACTION, + EVENT_KIND, + RULE_UUID, + TIMESTAMP, +} from '../../common/technical_rule_data_field_names'; +import { AlertTypeWithExecutor } from '../types'; +import { ParsedTechnicalFields, parseTechnicalFields } from '../../common/parse_technical_fields'; +import { getRuleExecutorData } from './get_rule_executor_data'; + +type LifecycleAlertService> = (alert: { + id: string; + fields: Record; +}) => AlertInstance; + +const trackedAlertStateRt = t.type({ + alertId: t.string, + alertUuid: t.string, + started: t.string, +}); + +const wrappedStateRt = t.type({ + wrapped: t.record(t.string, t.unknown), + trackedAlerts: t.record(t.string, trackedAlertStateRt), +}); + +type CreateLifecycleRuleTypeFactory = (options: { + ruleDataClient: RuleDataClient; + logger: Logger; +}) => < + TParams extends AlertTypeParams, + TAlertInstanceContext extends AlertInstanceContext, + TServices extends { alertWithLifecycle: LifecycleAlertService } +>( + type: AlertTypeWithExecutor +) => AlertTypeWithExecutor; + +export const createLifecycleRuleTypeFactory: CreateLifecycleRuleTypeFactory = ({ + logger, + ruleDataClient, +}) => (type) => { + return { + ...type, + executor: async (options) => { + const { + services: { alertInstanceFactory }, + state: previousState, + } = options; + + const ruleExecutorData = getRuleExecutorData(type, options); + + const decodedState = wrappedStateRt.decode(previousState); + + const state = isLeft(decodedState) + ? { + wrapped: previousState, + trackedAlerts: {}, + } + : decodedState.right; + + const currentAlerts: Record = {}; + + const timestamp = options.startedAt.toISOString(); + + const nextWrappedState = await type.executor({ + ...options, + state: state.wrapped, + services: { + ...options.services, + alertWithLifecycle: ({ id, fields }) => { + currentAlerts[id] = { + ...fields, + [ALERT_ID]: id, + }; + return alertInstanceFactory(id); + }, + }, + }); + + const currentAlertIds = Object.keys(currentAlerts); + const trackedAlertIds = Object.keys(state.trackedAlerts); + const newAlertIds = currentAlertIds.filter((alertId) => !trackedAlertIds.includes(alertId)); + + const allAlertIds = [...new Set(currentAlertIds.concat(trackedAlertIds))]; + + const trackedAlertStatesOfRecovered = Object.values(state.trackedAlerts).filter( + (trackedAlertState) => !currentAlerts[trackedAlertState.alertId] + ); + + logger.debug( + `Tracking ${allAlertIds.length} alerts (${newAlertIds.length} new, ${trackedAlertStatesOfRecovered.length} recovered)` + ); + + const alertsDataMap: Record< + string, + { + [ALERT_ID]: string; + } + > = { + ...currentAlerts, + }; + + if (trackedAlertStatesOfRecovered.length) { + const { hits } = await ruleDataClient.getReader().search({ + body: { + query: { + bool: { + filter: [ + { + term: { + [RULE_UUID]: ruleExecutorData[RULE_UUID], + }, + }, + { + terms: { + [ALERT_UUID]: trackedAlertStatesOfRecovered.map( + (trackedAlertState) => trackedAlertState.alertUuid + ), + }, + }, + ], + }, + }, + size: trackedAlertStatesOfRecovered.length, + collapse: { + field: ALERT_UUID, + }, + _source: false, + fields: [{ field: '*', include_unmapped: true }], + sort: { + [TIMESTAMP]: 'desc' as const, + }, + }, + allow_no_indices: true, + }); + + hits.hits.forEach((hit) => { + const fields = parseTechnicalFields(hit.fields); + const alertId = fields[ALERT_ID]!; + alertsDataMap[alertId] = { + ...fields, + [ALERT_ID]: alertId, + }; + }); + } + + const eventsToIndex = allAlertIds.map((alertId) => { + const alertData = alertsDataMap[alertId]; + + if (!alertData) { + logger.warn(`Could not find alert data for ${alertId}`); + } + + const event: Mutable = { + ...alertData, + ...ruleExecutorData, + [TIMESTAMP]: timestamp, + [EVENT_KIND]: 'state', + [ALERT_ID]: alertId, + }; + + const isNew = !state.trackedAlerts[alertId]; + const isRecovered = !currentAlerts[alertId]; + const isActiveButNotNew = !isNew && !isRecovered; + const isActive = !isRecovered; + + const { alertUuid, started } = state.trackedAlerts[alertId] ?? { + alertUuid: v4(), + started: timestamp, + }; + + event[ALERT_START] = started; + event[ALERT_UUID] = alertUuid; + + if (isNew) { + event[EVENT_ACTION] = 'open'; + } + + if (isRecovered) { + event[ALERT_END] = timestamp; + event[EVENT_ACTION] = 'close'; + event[ALERT_STATUS] = 'closed'; + } + + if (isActiveButNotNew) { + event[EVENT_ACTION] = 'active'; + } + + if (isActive) { + event[ALERT_STATUS] = 'open'; + } + + event[ALERT_DURATION] = + (options.startedAt.getTime() - new Date(event[ALERT_START]!).getTime()) * 1000; + + return event; + }); + + if (eventsToIndex.length) { + await ruleDataClient.getWriter().bulk({ + body: eventsToIndex.flatMap((event) => [{ index: {} }, event]), + }); + } + + const nextTrackedAlerts = Object.fromEntries( + eventsToIndex + .filter((event) => event[ALERT_STATUS] !== 'closed') + .map((event) => { + const alertId = event[ALERT_ID]!; + const alertUuid = event[ALERT_UUID]!; + const started = new Date(event[ALERT_START]!).toISOString(); + return [alertId, { alertId, alertUuid, started }]; + }) + ); + + return { + wrapped: nextWrappedState, + trackedAlerts: nextTrackedAlerts, + }; + }, + }; +}; diff --git a/x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts b/x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts new file mode 100644 index 0000000000000..1ea640add7b48 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + PRODUCER, + RULE_CATEGORY, + RULE_ID, + RULE_NAME, + RULE_UUID, + TAGS, +} from '../../common/technical_rule_data_field_names'; +import { AlertTypeExecutor, AlertTypeWithExecutor } from '../types'; + +export interface RuleExecutorData { + [RULE_CATEGORY]: string; + [RULE_ID]: string; + [RULE_UUID]: string; + [RULE_NAME]: string; + [PRODUCER]: string; + [TAGS]: string[]; +} + +export function getRuleExecutorData( + type: AlertTypeWithExecutor, + options: Parameters[0] +) { + return { + [RULE_ID]: type.id, + [RULE_UUID]: options.alertId, + [RULE_CATEGORY]: type.name, + [RULE_NAME]: options.name, + [TAGS]: options.tags, + [PRODUCER]: type.producer, + }; +} diff --git a/x-pack/plugins/rule_registry/server/utils/with_rule_data_client_factory.ts b/x-pack/plugins/rule_registry/server/utils/with_rule_data_client_factory.ts new file mode 100644 index 0000000000000..02ff6b10f74cf --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/with_rule_data_client_factory.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AlertInstanceContext, AlertTypeParams } from '../../../alerting/common'; +import { RuleDataClient } from '../rule_data_client'; +import { AlertTypeWithExecutor } from '../types'; + +export const withRuleDataClientFactory = (ruleDataClient: RuleDataClient) => < + TParams extends AlertTypeParams, + TAlertInstanceContext extends AlertInstanceContext, + TServices extends Record = {} +>( + type: AlertTypeWithExecutor< + TParams, + TAlertInstanceContext, + TServices & { ruleDataClient: RuleDataClient } + > +): AlertTypeWithExecutor< + TParams, + TAlertInstanceContext, + TServices & { ruleDataClient: RuleDataClient } +> => { + return { + ...type, + executor: (options) => { + return type.executor({ + ...options, + services: { + ...options.services, + ruleDataClient, + }, + }); + }, + }; +}; diff --git a/x-pack/test/apm_api_integration/configs/index.ts b/x-pack/test/apm_api_integration/configs/index.ts index 97d18c2419840..3393580153215 100644 --- a/x-pack/test/apm_api_integration/configs/index.ts +++ b/x-pack/test/apm_api_integration/configs/index.ts @@ -18,7 +18,7 @@ const apmFtrConfigs = { rules: { license: 'trial' as const, kibanaConfig: { - 'xpack.ruleRegistry.unsafe.write.enabled': 'true', + 'xpack.ruleRegistry.index': '.kibana-alerts', }, }, }; diff --git a/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts b/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts index 8d0b87782ff7c..e0a3e4d3a3f8b 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { get, merge, omit } from 'lodash'; +import { merge, omit } from 'lodash'; import { format } from 'url'; import { FtrProviderContext } from '../../common/ftr_provider_context'; import { registry } from '../../common/registry'; @@ -30,7 +30,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertestAsApmWriteUser'); const es = getService('es'); - const MAX_POLLS = 5; + const MAX_POLLS = 10; const BULK_INDEX_DELAY = 1000; const INDEXING_DELAY = 5000; @@ -108,11 +108,11 @@ export default function ApiTest({ getService }: FtrProviderContext) { } registry.when('Rule registry with write enabled', { config: 'rules', archives: [] }, () => { - it('bootstraps the apm alert indices', async () => { + it('does not bootstrap indices on plugin startup', async () => { const { body } = await es.indices.get({ index: ALERTS_INDEX_TARGET, expand_wildcards: 'open', - allow_no_indices: false, + allow_no_indices: true, }); const indices = Object.entries(body).map(([indexName, index]) => { @@ -122,23 +122,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }; }); - const indexNames = indices.map((index) => index.indexName); - - const apmIndex = indices[0]; - - // make sure it only creates one index - expect(indices.length).to.be(1); - - const apmIndexName = apmIndex.indexName; - - expect(apmIndexName.split('-').includes('observability')).to.be(true); - expect(apmIndexName.split('-').includes('apm')).to.be(true); - - expect(indexNames[0].startsWith('.kibana-alerts-observability-apm')).to.be(true); - - expect(get(apmIndex, 'index.mappings.properties.service.properties.environment.type')).to.be( - 'keyword' - ); + expect(indices.length).to.be(0); }); describe('when creating a rule', () => { @@ -335,12 +319,14 @@ export default function ApiTest({ getService }: FtrProviderContext) { sort: { '@timestamp': 'desc', }, + _source: false, + fields: [{ field: '*', include_unmapped: true }], }, }); expect(afterViolatingDataResponse.body.hits.hits.length).to.be(1); - const alertEvent = afterViolatingDataResponse.body.hits.hits[0]._source as Record< + const alertEvent = afterViolatingDataResponse.body.hits.hits[0].fields as Record< string, any >; @@ -354,23 +340,56 @@ export default function ApiTest({ getService }: FtrProviderContext) { const toCompare = omit(alertEvent, exclude); - expect(toCompare).to.eql({ - 'event.action': 'open', - 'event.kind': 'state', - 'kibana.rac.alert.duration.us': 0, - 'kibana.rac.alert.id': 'apm.transaction_error_rate_opbeans-go_request', - 'kibana.rac.alert.status': 'open', - 'kibana.rac.producer': 'apm', - 'kibana.observability.evaluation.threshold': 30, - 'kibana.observability.evaluation.value': 50, - 'processor.event': 'transaction', - 'rule.category': 'Transaction error rate threshold', - 'rule.id': 'apm.transaction_error_rate', - 'rule.name': 'Transaction error rate threshold | opbeans-go', - 'service.name': 'opbeans-go', - tags: ['apm', 'service.name:opbeans-go'], - 'transaction.type': 'request', - }); + expectSnapshot(toCompare).toMatchInline(` + Object { + "event.action": Array [ + "open", + ], + "event.kind": Array [ + "state", + ], + "kibana.rac.alert.duration.us": Array [ + 0, + ], + "kibana.rac.alert.evaluation.threshold": Array [ + 30, + ], + "kibana.rac.alert.evaluation.value": Array [ + 50, + ], + "kibana.rac.alert.id": Array [ + "apm.transaction_error_rate_opbeans-go_request", + ], + "kibana.rac.alert.producer": Array [ + "apm", + ], + "kibana.rac.alert.status": Array [ + "open", + ], + "processor.event": Array [ + "transaction", + ], + "rule.category": Array [ + "Transaction error rate threshold", + ], + "rule.id": Array [ + "apm.transaction_error_rate", + ], + "rule.name": Array [ + "Transaction error rate threshold | opbeans-go", + ], + "service.name": Array [ + "opbeans-go", + ], + "tags": Array [ + "apm", + "service.name:opbeans-go", + ], + "transaction.type": Array [ + "request", + ], + } + `); const now = new Date().getTime(); @@ -390,7 +409,56 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(topAlerts.length).to.be.greaterThan(0); - expect(omit(topAlerts[0], exclude)).to.eql(toCompare); + expectSnapshot(omit(topAlerts[0], exclude)).toMatchInline(` + Object { + "event.action": Array [ + "open", + ], + "event.kind": Array [ + "state", + ], + "kibana.rac.alert.duration.us": Array [ + 0, + ], + "kibana.rac.alert.evaluation.threshold": Array [ + 30, + ], + "kibana.rac.alert.evaluation.value": Array [ + 50, + ], + "kibana.rac.alert.id": Array [ + "apm.transaction_error_rate_opbeans-go_request", + ], + "kibana.rac.alert.producer": Array [ + "apm", + ], + "kibana.rac.alert.status": Array [ + "open", + ], + "processor.event": Array [ + "transaction", + ], + "rule.category": Array [ + "Transaction error rate threshold", + ], + "rule.id": Array [ + "apm.transaction_error_rate", + ], + "rule.name": Array [ + "Transaction error rate threshold | opbeans-go", + ], + "service.name": Array [ + "opbeans-go", + ], + "tags": Array [ + "apm", + "service.name:opbeans-go", + ], + "transaction.type": Array [ + "request", + ], + } + `); await es.bulk({ index: APM_TRANSACTION_INDEX_NAME, @@ -423,43 +491,76 @@ export default function ApiTest({ getService }: FtrProviderContext) { sort: { '@timestamp': 'desc', }, + _source: false, + fields: [{ field: '*', include_unmapped: true }], }, }); expect(afterRecoveryResponse.body.hits.hits.length).to.be(1); - const recoveredAlertEvent = afterRecoveryResponse.body.hits.hits[0]._source as Record< + const recoveredAlertEvent = afterRecoveryResponse.body.hits.hits[0].fields as Record< string, any >; - expect(recoveredAlertEvent['kibana.rac.alert.status']).to.eql('closed'); - expect(recoveredAlertEvent['kibana.rac.alert.duration.us']).to.be.greaterThan(0); - expect(new Date(recoveredAlertEvent['kibana.rac.alert.end']).getTime()).to.be.greaterThan( - 0 - ); - + expect(recoveredAlertEvent['kibana.rac.alert.status']?.[0]).to.eql('closed'); + expect(recoveredAlertEvent['kibana.rac.alert.duration.us']?.[0]).to.be.greaterThan(0); expect( + new Date(recoveredAlertEvent['kibana.rac.alert.end']?.[0]).getTime() + ).to.be.greaterThan(0); + + expectSnapshot( omit( recoveredAlertEvent, exclude.concat(['kibana.rac.alert.duration.us', 'kibana.rac.alert.end']) ) - ).to.eql({ - 'event.action': 'close', - 'event.kind': 'state', - 'kibana.rac.alert.id': 'apm.transaction_error_rate_opbeans-go_request', - 'kibana.rac.alert.status': 'closed', - 'kibana.rac.producer': 'apm', - 'kibana.observability.evaluation.threshold': 30, - 'kibana.observability.evaluation.value': 50, - 'processor.event': 'transaction', - 'rule.category': 'Transaction error rate threshold', - 'rule.id': 'apm.transaction_error_rate', - 'rule.name': 'Transaction error rate threshold | opbeans-go', - 'service.name': 'opbeans-go', - tags: ['apm', 'service.name:opbeans-go'], - 'transaction.type': 'request', - }); + ).toMatchInline(` + Object { + "event.action": Array [ + "close", + ], + "event.kind": Array [ + "state", + ], + "kibana.rac.alert.evaluation.threshold": Array [ + 30, + ], + "kibana.rac.alert.evaluation.value": Array [ + 50, + ], + "kibana.rac.alert.id": Array [ + "apm.transaction_error_rate_opbeans-go_request", + ], + "kibana.rac.alert.producer": Array [ + "apm", + ], + "kibana.rac.alert.status": Array [ + "closed", + ], + "processor.event": Array [ + "transaction", + ], + "rule.category": Array [ + "Transaction error rate threshold", + ], + "rule.id": Array [ + "apm.transaction_error_rate", + ], + "rule.name": Array [ + "Transaction error rate threshold | opbeans-go", + ], + "service.name": Array [ + "opbeans-go", + ], + "tags": Array [ + "apm", + "service.name:opbeans-go", + ], + "transaction.type": Array [ + "request", + ], + } + `); const { body: topAlertsAfterRecovery, @@ -480,7 +581,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(topAlertsAfterRecovery.length).to.be(1); - expect(topAlertsAfterRecovery[0]['kibana.rac.alert.status']).to.be('closed'); + expect(topAlertsAfterRecovery[0]['kibana.rac.alert.status']?.[0]).to.be('closed'); }); }); }); diff --git a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts index 44cd2cda7e1af..50194552aec0a 100644 --- a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts +++ b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts @@ -41,7 +41,10 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { return (await testSubjects.getVisibleText('sectionHeading')) === 'Index Lifecycle Policies'; }); + await pageObjects.indexLifecycleManagement.increasePolicyListPageSize(); + const allPolicies = await pageObjects.indexLifecycleManagement.getPolicyList(); + const filteredPolicies = allPolicies.filter(function (policy) { return policy.name === policyName; }); diff --git a/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts b/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts index 525e0d91e2f4d..2dd70f8a95717 100644 --- a/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts +++ b/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts @@ -69,6 +69,11 @@ export function IndexLifecycleManagementPageProvider({ getService }: FtrProvider await this.saveNewPolicy(); }, + async increasePolicyListPageSize() { + await testSubjects.click('tablePaginationPopoverButton'); + await testSubjects.click(`tablePagination-100-rows`); + }, + async getPolicyList() { const policies = await testSubjects.findAll('policyTableRow'); return mapAsync(policies, async (policy) => { diff --git a/yarn.lock b/yarn.lock index e5a0d40728f89..69d5c9553a3b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2698,6 +2698,10 @@ version "0.0.0" uid "" +"@kbn/rule-data-utils@link:packages/kbn-rule-data-utils": + version "0.0.0" + uid "" + "@kbn/securitysolution-constants@link:bazel-bin/packages/kbn-securitysolution-constants/npm_module": version "0.0.0" uid "" From c4529fa52477e682af6bc3704dec7ca0e8f173f8 Mon Sep 17 00:00:00 2001 From: James Rowe Date: Thu, 13 May 2021 10:35:03 -0500 Subject: [PATCH 06/27] Clearing the global search bar will reset suggestions (#88637) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../global_search_bar/public/components/search_bar.test.tsx | 4 +--- .../global_search_bar/public/components/search_bar.tsx | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx b/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx index 94855ab0aa4ab..c8bd54540e6a6 100644 --- a/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx @@ -66,9 +66,7 @@ describe('SearchBar', () => { }; const simulateTypeChar = async (text: string) => { - await waitFor(() => - getSearchProps(component).onKeyUpCapture({ currentTarget: { value: text } }) - ); + await waitFor(() => getSearchProps(component).onInput({ currentTarget: { value: text } })); }; const getDisplayedOptionsTitle = () => { diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx index dfe73512279ed..5234b4e7b0ad5 100644 --- a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx @@ -398,8 +398,7 @@ export function SearchBar({ } searchProps={{ - onKeyUpCapture: (e: React.KeyboardEvent) => - setSearchValue(e.currentTarget.value), + onInput: (e: React.UIEvent) => setSearchValue(e.currentTarget.value), 'data-test-subj': 'nav-search-input', inputRef: setSearchRef, compressed: true, From 548765770522f1a60bd378269957eb4bebd0fd49 Mon Sep 17 00:00:00 2001 From: Larry Gregory Date: Thu, 13 May 2021 12:25:29 -0400 Subject: [PATCH 07/27] Gracefully handle malformed index patterns on role management pages (#99918) --- .../public/management/roles/edit_role/edit_role_page.test.tsx | 3 ++- .../public/management/roles/edit_role/edit_role_page.tsx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.test.tsx b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.test.tsx index 5df73f7f8ec4e..b8963ea5a76e3 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.test.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.test.tsx @@ -143,7 +143,8 @@ function getProps({ rolesAPIClient.getRole.mockResolvedValue(role); const indexPatterns = dataPluginMock.createStartContract().indexPatterns; - indexPatterns.getTitles = jest.fn().mockResolvedValue(['foo*', 'bar*']); + // `undefined` titles can technically happen via import/export or other manual manipulation + indexPatterns.getTitles = jest.fn().mockResolvedValue(['foo*', 'bar*', undefined]); const indicesAPIClient = indicesAPIClientMock.create(); diff --git a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx index f810cd2079d16..0f49aaf48c394 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx @@ -125,7 +125,7 @@ function useIndexPatternsTitles( fatalErrors.add(err); throw err; }) - .then(setIndexPatternsTitles); + .then((titles) => setIndexPatternsTitles(titles.filter(Boolean))); }, [fatalErrors, indexPatterns, notifications]); return indexPatternsTitles; From da048be1f485f128a4f03b7b09dcfe5cbaa1497f Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Thu, 13 May 2021 10:59:00 -0700 Subject: [PATCH 08/27] Skip flaky functional test suite https://github.com/elastic/kibana/issues/100060 Signed-off-by: Tyler Smalley --- test/plugin_functional/test_suites/doc_views/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/plugin_functional/test_suites/doc_views/index.ts b/test/plugin_functional/test_suites/doc_views/index.ts index 2fed8e10ffc8e..e02b9ac4646f6 100644 --- a/test/plugin_functional/test_suites/doc_views/index.ts +++ b/test/plugin_functional/test_suites/doc_views/index.ts @@ -11,7 +11,8 @@ import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService, loadTestFile }: PluginFunctionalProviderContext) { const esArchiver = getService('esArchiver'); - describe('doc views', function () { + // SKIPPED: https://github.com/elastic/kibana/issues/100060 + describe.skip('doc views', function () { before(async () => { await esArchiver.loadIfNeeded('../functional/fixtures/es_archiver/discover'); }); From f94bbc934372d5302eb04f716960daa446257590 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Thu, 13 May 2021 14:08:33 -0400 Subject: [PATCH 09/27] [Fleet] Do not use async method in plugin setup|start (#100033) --- x-pack/plugins/fleet/common/types/index.ts | 9 --------- .../fleet/mock/plugin_configuration.ts | 9 --------- x-pack/plugins/fleet/server/mocks/index.ts | 4 ++++ x-pack/plugins/fleet/server/plugin.ts | 14 ++++++++------ .../plugins/fleet/server/services/app_context.ts | 5 ++--- 5 files changed, 14 insertions(+), 27 deletions(-) diff --git a/x-pack/plugins/fleet/common/types/index.ts b/x-pack/plugins/fleet/common/types/index.ts index 03584a48ff17c..7117973baa139 100644 --- a/x-pack/plugins/fleet/common/types/index.ts +++ b/x-pack/plugins/fleet/common/types/index.ts @@ -15,13 +15,6 @@ export interface FleetConfigType { registryProxyUrl?: string; agents: { enabled: boolean; - tlsCheckDisabled: boolean; - pollingRequestTimeout: number; - maxConcurrentConnections: number; - kibana: { - host?: string[] | string; - ca_sha256?: string; - }; elasticsearch: { host?: string; ca_sha256?: string; @@ -29,8 +22,6 @@ export interface FleetConfigType { fleet_server?: { hosts?: string[]; }; - agentPolicyRolloutRateLimitIntervalMs: number; - agentPolicyRolloutRateLimitRequestPerInterval: number; }; agentPolicies?: PreconfiguredAgentPolicy[]; packages?: PreconfiguredPackage[]; diff --git a/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts index 5d53425607361..7f0b71de779dc 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts @@ -14,19 +14,10 @@ export const createConfigurationMock = (): FleetConfigType => { registryProxyUrl: '', agents: { enabled: true, - tlsCheckDisabled: true, - pollingRequestTimeout: 1000, - maxConcurrentConnections: 100, - kibana: { - host: '', - ca_sha256: '', - }, elasticsearch: { host: '', ca_sha256: '', }, - agentPolicyRolloutRateLimitIntervalMs: 100, - agentPolicyRolloutRateLimitRequestPerInterval: 1000, }, }; }; diff --git a/x-pack/plugins/fleet/server/mocks/index.ts b/x-pack/plugins/fleet/server/mocks/index.ts index 4bc2bea1e58b6..a94f274b202ad 100644 --- a/x-pack/plugins/fleet/server/mocks/index.ts +++ b/x-pack/plugins/fleet/server/mocks/index.ts @@ -30,6 +30,10 @@ export const createAppContextStartContractMock = (): FleetAppContext => { security: securityMock.createStart(), logger: loggingSystemMock.create().get(), isProductionMode: true, + configInitialValue: { + agents: { enabled: true, elasticsearch: {} }, + enabled: true, + }, kibanaVersion: '8.0.0', kibanaBranch: 'master', }; diff --git a/x-pack/plugins/fleet/server/plugin.ts b/x-pack/plugins/fleet/server/plugin.ts index 61c3a83242c57..0fdc6ef651ed1 100644 --- a/x-pack/plugins/fleet/server/plugin.ts +++ b/x-pack/plugins/fleet/server/plugin.ts @@ -6,7 +6,6 @@ */ import type { Observable } from 'rxjs'; -import { first } from 'rxjs/operators'; import type { CoreSetup, CoreStart, @@ -110,6 +109,7 @@ export interface FleetAppContext { encryptedSavedObjectsSetup?: EncryptedSavedObjectsPluginSetup; security?: SecurityPluginStart; config$?: Observable; + configInitialValue: FleetConfigType; savedObjects: SavedObjectsServiceStart; isProductionMode: PluginInitializerContext['env']['mode']['prod']; kibanaVersion: PluginInitializerContext['env']['packageInfo']['version']; @@ -189,6 +189,7 @@ export class FleetPlugin implements AsyncPlugin { private licensing$!: Observable; private config$: Observable; + private configInitialValue: FleetConfigType; private cloud: CloudSetup | undefined; private logger: Logger | undefined; @@ -204,15 +205,15 @@ export class FleetPlugin this.kibanaVersion = this.initializerContext.env.packageInfo.version; this.kibanaBranch = this.initializerContext.env.packageInfo.branch; this.logger = this.initializerContext.logger.get(); + this.configInitialValue = this.initializerContext.config.get(); } - public async setup(core: CoreSetup, deps: FleetSetupDeps) { + public setup(core: CoreSetup, deps: FleetSetupDeps) { this.httpSetup = core.http; this.licensing$ = deps.licensing.license$; this.encryptedSavedObjectsSetup = deps.encryptedSavedObjects; this.cloud = deps.cloud; - - const config = await this.config$.pipe(first()).toPromise(); + const config = this.configInitialValue; registerSavedObjects(core.savedObjects, deps.encryptedSavedObjects); registerEncryptedSavedObjects(deps.encryptedSavedObjects); @@ -279,13 +280,14 @@ export class FleetPlugin } } - public async start(core: CoreStart, plugins: FleetStartDeps): Promise { - await appContextService.start({ + public start(core: CoreStart, plugins: FleetStartDeps): FleetStartContract { + appContextService.start({ elasticsearch: core.elasticsearch, data: plugins.data, encryptedSavedObjectsStart: plugins.encryptedSavedObjects, encryptedSavedObjectsSetup: this.encryptedSavedObjectsSetup, security: plugins.security, + configInitialValue: this.configInitialValue, config$: this.config$, savedObjects: core.savedObjects, isProductionMode: this.isProductionMode, diff --git a/x-pack/plugins/fleet/server/services/app_context.ts b/x-pack/plugins/fleet/server/services/app_context.ts index 954308a980861..82ec0aad52651 100644 --- a/x-pack/plugins/fleet/server/services/app_context.ts +++ b/x-pack/plugins/fleet/server/services/app_context.ts @@ -7,7 +7,6 @@ import type { Observable } from 'rxjs'; import { BehaviorSubject } from 'rxjs'; -import { first } from 'rxjs/operators'; import { kibanaPackageJson } from '@kbn/utils'; import type { KibanaRequest } from 'src/core/server'; import type { @@ -44,7 +43,7 @@ class AppContextService { private httpSetup?: HttpServiceSetup; private externalCallbacks: ExternalCallbacksStorage = new Map(); - public async start(appContext: FleetAppContext) { + public start(appContext: FleetAppContext) { this.data = appContext.data; this.esClient = appContext.elasticsearch.client.asInternalUser; this.encryptedSavedObjects = appContext.encryptedSavedObjectsStart?.getClient(); @@ -60,7 +59,7 @@ class AppContextService { if (appContext.config$) { this.config$ = appContext.config$; - const initialValue = await this.config$.pipe(first()).toPromise(); + const initialValue = appContext.configInitialValue; this.configSubject$ = new BehaviorSubject(initialValue); this.config$.subscribe(this.configSubject$); } From bb7057c343b1bef892f80db9ef554703d1ebee3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20C=C3=B4t=C3=A9?= Date: Thu, 13 May 2021 14:16:36 -0400 Subject: [PATCH 10/27] Rename alert status OK to Recovered and fix some UX issues around disabling a rule while being in an error state (#98135) * Fix UX when alert is disabled and in an error state * Reset executionStatus to pending after enabling an alert * Renames alert instance status OK to Recovered * Fix end to end test * Update doc screenshot * Fix confusing test name * Remove flakiness in integration test Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../images/rule-details-alerts-inactive.png | Bin 131717 -> 142687 bytes .../server/alerts_client/alerts_client.ts | 5 ++ .../server/alerts_client/tests/enable.test.ts | 10 +++ .../components/alert_details.test.tsx | 70 ++++++++++++++++++ .../components/alert_details.tsx | 10 ++- .../components/alert_instances.test.tsx | 2 +- .../components/alert_instances.tsx | 2 +- .../apps/triggers_actions_ui/details.ts | 2 +- 8 files changed, 96 insertions(+), 5 deletions(-) diff --git a/docs/user/alerting/images/rule-details-alerts-inactive.png b/docs/user/alerting/images/rule-details-alerts-inactive.png index f84910ae0dcdc4b202ef8b4d298cb5c0e591caf4..fc82cf465ebb2da81b918b00c3a3a2d2010a4102 100644 GIT binary patch literal 142687 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 ?+9GZpr4_@;GP&WN?!@m;+{ENQ^o;{|F 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 literal 131717 zcmeFZWmH?;);0{3LV;4+QVNA4#XUI1OL2Gi;_e!}NO5;}_uyKfI0O$6q_ntO@W7Xz za~>J*dB(W!@%=s-V`s1Iy<{($YhLr3b0e&M937K?9D7~Op%Zz!;(_a6;*cM`ac5gz4E9;KS}S%#mXbm zeE=b0P7AAkel1DMTA2GqpfkoaqnOh^ov zO(i5GP*ewC2AgmJq^KR}3yQi2INT49I6!d%9Z6b@M~`fKJAXN_TDVKK7zv3daA|y- zp^(BG-L&mF)631SR}=4l11K^DM+mBva#{#pjJ!p9Nz0$jh>H}CYh}K5&OY@q(IPR6 z5~U7xbCdS&RE!^a#6q8iiranl8BVUv*IOCn+-W7VqDMNjErVYr6~E6t(yU1KtyP~1 ze`)0iZ9aMAPk&@;bSLiLbN(gb{x^- z$lkCB^A90ol0D&niPHZGB?xmJ<%cADrss4pn`5!$cas8c`JoNz>u8l!W_jibq{!v9 zI)z`v#uxgZBP(#5)aH<`vlYu!X=rTLxsgAnqal^~_L{L1Ayw%kG3WeZFugJ68XJ0o zCHV<=GC+_8ZL0_EBNF~kWbaQ%&(PM%F#7{cSkO-bo^9kOfzczrV=AIb_n_52RrS|1 z#QBKy;;V7)t4x&b9x4ayWmNa?#*-LcJq#?*R=*lO3p{y=moI!9i(!JXD8l>_>+EY_ zo+K@rbjWnBtRxCu-j7N8QdIh2`rH*oPM0^l$XQ>jKM_xglw$3Lu71ujLM`rbS$NhI zSklXwiY?LOcw+Mrcj7D7&(9vjx-T@ohyFyne(#Olh2`E`^Ya5LnMqJUD*20NSnFg; zl9=%UL$O7YtjZy(9~vdur$d&-dE<~baM42Zj8X~EBXOvolvR zbf_3cRC$pOu?`^)5tA|m)K;&U!dClf^Zi?5Te4eH7Gyhw4?es|07=bL8YsV~ivR_x z%9m5=Q3`zMq(~SxGXb2*)~9x4>dFg#?vgzs_sic=JfM9qO)n;;C9$Yrna5w)QJ`F= zK8s|9sV1x^QB|B>B3R%%n``;e%7GJ=aFm0dlaRyCvSXgoO53WQbKByrMY1Icq$7_f zS8TR^`j^EiDA`KQDr>T>hOcJ)t8^4AJsfE~run(UbKgWM}#M)u^(Zs~&jTI&5l9|h@MNg{H zd&5lAj>YRp$8L=Aez2%b{o+RDuuL&?!uXg`GCP0;T@G8WPd2HzT@ET2I$k;cYg|2j zE=_=wCaqzNeT+M!IUPqkRa3TE(?-eobSU0pxc-fnU87CIy`iaXl11ZE`BXVr8=P*f zXQ*ck?+>y1ZJ%JSV(L8j)_k;nylKS(xfyp+ZE2-8^ibg7$0gqZU$J3{hg_U& zS-R6&z^@*+A@@?p9Ve5I;=I)^HZI-*b6>1RW}{S~#lFr??jw#%`xgsZgFMTgMa~W9 zI{19}T{1q_r2J^;D&AAXxs?lu;9EzJ;2&Ah1NGLgf7%P$wDy=fCZ3#T+O7)OeUkG`@to(M7pE#RD&}Zg?hMmz|(u_kqfYxrdxU^(ye#&!-#{8F=IJh$NhJ1j>%u!Z{ zk;%>O;QPXrV}RrSZ<0Z1Kf`YwTn=1i+;Ut&N;IluYBy>*Iqi5CrbRNX%;m&D1u4nJ z6gCb9kNIRRfwH4Av9c>O9k4#j-N^f|JUq_w;JM7v3?M&tMslhf%OMsZT;m6k^mehm z0_leHwa!fqDstd>pl@DHt?EL?dWKT^RLX8fD_w)Z27n$H`y0 zEAtAc*Uo!R7_FAAG?cvYHp9W51LtqY_G6c1A_}uSS3Pyk&`e*|`#4Do>Z}JQv{ zEs8qhGu7xa@HKrHyumn+0Zi(XX*u}ht@LtY0kJ+~`f3Mh^&8B#Ex4S9|Im|JkZ}V9 zCl>>3^~|~|9kjq_lbh)3vFau@*QP}?BhyKKmD0L%x)!P}9kqAulgC!!9N{KnR~mPf zt1y8r;OW(&wJyX)=e$Z&(Yvv~tgv!pRQqA6Lg?e8;=@-fy@9q%7|Fi7U5{<7O-u8X z-|qnB!|A~3Be@xFP8%~j=GFVbi5rMevy(MyjWRLG*we;LT{$=14ndX0HMBL;HsTq zLxbV2nmejHKAisdEsBR)dOnjUKW_W5B5Y|2EXn%?k3P4OT zai=@uFU@_&`O~EwCcjmEg$jV3KjB-h=Um~0d>Qc>yz)Ug7Pgm`)k3=-PLFgmDoG`- z3N=C^yeb~zu1!A=6eB>UKXtcSkLFveV!$+6-Off^!Iu%Q@Bs#xtu9?rD{hzd$D1k| z9W|LPBW+6_o`2RF2&RU-It&Q_oMv3+^TQVp4>@3)1kZ`wwtiLn7d!kbc(bl> z&x7;9mHQ)&?qR>XX_f21+x$vMVRIX}=vdWH@^L(+LI1KNzKf8A_BQlVsHwZj6MlY- z+-*QAOL*W(0W9!pzs!1Qhx@g_r+D88Tpaiu-L2#NAcYB$T=(D3UhQ5lK4P=3ldU$TREg#G<$uI?QKM$e9A%${Tv?!(#bfI zcT$;ZAD?P@4RGoUDavF#Hy0%48|!Ths|>OvBvyhAc;fypvGZATrT^r^S(Jk)HhHItmg}s3j8W zzw*c<&VN3!h~rP0f1aPjhajONe!WH<9=Rz0l^cT~_sM^ypCIZ%LK0RHk&;53Rg9fX zP3@d5>|LIPk%u5IU^qx>IU^yxrTTLqODR*HAnJ!$s%pAu%E|H?+uJf5nb?0ZW%jUj z_)`xOzXvZOX>00YMCM^@W9Q84Awd3*9K4A1pUVJpvVUZ8u@)fLlv5-Vv3D{h<6>rE zW+4~EBqJl^cQP^KRTdThS8>EI0dfl$7YAMdz}?-Q*`1x)-pL%m%EQA0U||EWu`wZX zFgbhLxfppc**R1Evy%U+N7U5W*vZnt#nRr6>`%Q$U+i671jxz%H1yw}e?F(FhvomY zWas>^ZXr4d_;Uxq%FF`z@4691`TtzyRkZXlwb2r_v_*^=q76ZAZWjK32)JeqN7SX1Q;Q!3mzY72FoBt}v5BSsd|1}i<9Or*r zMGUkcCO_c6CruD@(&zloT6%9Os-TKE|6_F^raSVbT)f}T2S0vR|x4|p2KEY?O#M%H=tV!F=#6`s;7WHF^zsAB#4J=NFrhREMPAB%a_ zOeeme@5INu0LmwuB-og_nYnA?UkgECY`eqv)EPhA?Iv!z{l;ISp*$n=NBVnTFUd~) zP$N-PHG}?U0Yt^gNXQg+sHiVLAtC>*uV-|hdT1%J8UA*GPyYU|uKxb>JPUe5X80yP z1n=*6`%}+1;NN`uKfU~n`H}@wst@yTb@v~`LT1=6@OS3`k?+IPX9U58Mo<6Vr2VP* zCCe|8zdHe+kOE>+P$NH2*P{Hr8T(W5GXh7PzrBq7KS?5^h<~uu4EX!gh8o#|{`Z#z zSs@Z~K`ck*-|sWxftH{A{Uz~I+23DDl2HBc_ZcAuM}L1jU;al7{!$?RBL;sZ5dRT_ zzuaK{qYeIQkNl4|_)9(eA8qiL@aR9F=&zu{{|`{KE!tx-p5Ax{weRN3*}~I!lUPyR zHk}p&>#x>pH|Y(Misv@aFVm|?)^!kGiY-ayw2r>N+0L1`J=+|Wp0Cu(@}z$GF#*LI zQk|gHuq`=9pHyTrY(242_VH4S(&1M>Mw$Sy+WAKsn`yjs68*<>*}}-4y*cZRtF=c5 zdADLecOIHAe+?49DgVrTMj)`#S@N9ZzUX{DXYVq|#S8S6opdxzc#9vLdcH^jyc{*T zoeldSB7(=DapfIwzw#|lxyXqM=&t|jqcI9G$u6T%^!v^C-NIkJ*mlkXCiro;Yy3mB zFBUgQpiTGmmeYlffG@YtvG`9nX3k*TeVGmXb5#{LE3j|uVAQ`9;8<-0f)zWJvY^Tz zQL`S&761wWVIG&3p4WMo*`}AzktuWnA&GA$%k{B|xMdthl!T&V5o1WDIT3g+Lq=-| zay%-ZXqK?Jo1!9nk_z)HhHI4_s^inqpmx7&(mOir|(bkQAxu5mB_HL zR6hO8$XgrPx9^}Lq#n+Ovw2p^&{zV&D@I`5PI0}(de@2uY-EbiUzzD-hKam_6X%?U z{m#^`%YM3lWg|@?Orvn|(Z<8?U(u=LmO$~WB5085paj&&*XgyCo2c^H{8V?B#|buC z4QVfRmqZoD@E^loXWMYDgD zeRd#lUoxiGAfs-(2;jRUNsvv^r7fx+qHmt>QhqpooaleYLyhv7!-l*$!c>lfUcL+br@;Tc&fvfJ;;-`%qiFI* zl>oK#Kx?3mie1@VQ|UE|lph< zeWV<>vb2sT!3%ejb={le#~Q(!M9tT|AWKS#WEX1wWc~8=J6ee?7o+AF*a%+6rBq4G z7EQ~QvuUd+HLR0szC`BqcjxuE6OZQ}sg&R8(`i^pd^{I+Seb=TkXFOiNOmVsbd%3kpGOi+jab?Nv^1yS;S;$h(Ko9gy*VmKT z+UuYt>X_o?ix`#T^L$c&9^t3SlGmtL4&uIC2fM&kSO6Bjx{q-4+vL1@jE3RWqNfpN{GG8St8FFtBHSC+A8n?t&8bH1fhC zjom!n%hg)K{pU*^a2B6|+tHG3m0Si_7070aqd)n3g!|DlmGd@}gSvW+x|q|}*ayGV z&2!z+1SgyAT=U`nekqmBg*xMjx#W)GmN(4reGEr=kZ_*`y(BZ-2%HMq=z`zr%7{)E z$%)uCMIV6-oczt86Scz+(_ zxZ-o$X%}Y;bsGxC*Ed`>*Wd5B1iBgg_G9gIKNi$#vT03vKEE&Ec2MeSzX(ZLTgK8J z08Hl{1Mi}VC$`dLZ-n5Hhp$|^H7fK6^=&)5ZbxL4E7Y;UY*|w7r$4svT_#XR`*Ty}s4i+iU zU%Y4WI~``cIp1tJI``hAI2x*gE6GsLOM{BP|xfg^Kx*l&0@V&0Lo3( zwg%|x&o;T4>q)&JlGA;j;s14e&xXN z^&RqH00NJR4c2b+3GlXTygjv>=>Ll_1Dy4Hh?%X_TK!cS(^oKvid2VaIng4cA6=#Q zgxKYyv%gjJJNh&Rp55zh@?Z5~G{|iZit~)BcetDNvQ1zpFZQqh_8XPNmDjl#CDF2Y zC^_flkW?O44Jt>Z^RoC;sP5&N5EWi50p#2Ryv@q#@xY{y@F?aO7y*}af<-VXa2Z_Gv!8#51Pf`^yki}~Ml30xv1HrC)0&l&^ zFr(}KY<)3!PAHjC%dD#edeqU`=4$2Dh3}@$67Y!)!3bud%}!3rH7|c48h-*2SQ2u` zx$vqEZLrv#Hl5C&!=CUiQ>HS#Ux=IN@FTDDpZa#}8{540F7{`~!*3VwjSsDl4?x_Y ztb1s124wcv4y*BI1R!Lnev_fs)~c#~cVNHDIhpI2b^6rhDx1yYBxPdDzVoJh+38$v zzT@FD(b*>CY_|uT>Eu2UQjNh>0ok3B*r?{SS8(zhQYn!iR$w_hxJOIVnw7%fxogJ+27QwCy>uYmk`2oJ|U2 zH{B?mI&%n>&vs_i;|JvD2!rL3*%8|zhr_~Ek;a%o_3sBUm7WikVpTegi4uH*j6Wjq zu^Ph~I-FCg*}VI&CcLM}#Y~oFF($l~X|$WVrZCSJ?^2jlvWsX8t*T1X?6p(UrO(4+1cD9|};DM(Z&MO{@{V^4X_42X{+{soio{=+#wWBAV35#KZng1P6UEKZ>jAg8#HWS4$=!@@yA0kaMZ zqvyn}PMe8VY79CvVer$Kn>0dBuS#6<>0aW^kz_ZwnUi?5steLOe1Kb{XXk>JJF|T0 z`jYE@6}U8)4kZ>~u4)zxjJ}FJ7+ddbH)`Bb5lWvNH$S8pY}5^AUj$*@Lxa*G z;bfh_tJs04*U7}#jS9*s)^p`0*}hy-kQ-g_(V5|$n~?(CJE!aHbnr=*?L&nBR3hC> z;kGkaXRaUhf$)}ypSEqgQ2hymUQ@pF zbKsZhAXX*xVUqo&@pFC7es<4ans>3oUfB37)4&#$?ZE=xuG>9!l?s<&LPDguZ4gj4 zjbA@pPj9x9w%oERsN@iDrO#KqNVMnMcBD?W<-dD8$Y7W)BBI)@Loe`m@vN!Rb@a2T z2`Q%>i$%nb{NtMFX538aSYKliP`P1m8~0f3ovl@2YPdC$ce?K-4Kw{XGj&4|^;)wK zD-hei8X9`)_<^#@ietZV>xHE>dSq|o&U8L~pSgXqpaHK37<8IQ7HVf7p|m?*h&R4d2MMND2jN zqDEc>JSc`r2pHr`oS&{bjmn)ZF~Ir1mpI(reWhM+!fuq;akl)Cezw`U`4J99e;PS` zZ$P+vzkvH7N0I%wHwq|}Kh%C@E3`zZM(W*SED8;Q?rf&q4z0May|YU&snP*ign_yQ ztLs&iaZLOINUi)Hw~ufLeAq8^c5nMt^4xIR`QtIg4SWPtvkxw17k*PVDOW(2XSS-p zJ&@vIGVv(@4OAOgKVsNMFj;2G|Fv6EG;% zSJDtH!cHfsH_}cPy7Va0u`vl;y*G?JZ;~LJomWDUI|L6=97wQnjjtk24>R+QMI)*w z2gTp#XxiLP86(WL;5dTy^h~W+S|G#dIr1pPdZMzs_4b^g^xkF^{x{`+u0>Yopw#Ye zHoSC*PNmRvp&pFi$eZw?An_Ri{N{?T_4>2@AS%MRguiJy&hRR7icrtMwDQ{$EDwni zBxsmlI$Ga4Ra;Y0=^5%;9Td_dOGtSz8@GyR4k%XBruaP-Q#6kVqMMKQosq)QWR^=#P%@grxcDySr;KEORNG-e9#O zUO>W)$Kj{H%@Rl}IhD&n`&F+H=*OhO3{7ZN^g0fKW$BMcu~rg^3fx`%bdBhriYrkT^;OI9*ZH1f0;1#bF{r;E-D0tV~x_qG>1Hemrw3m1aj z6RI@yh9k&ZLv}~!U(v*`;)H zH^nD?3bW1^m0 z#+u%(r^ToYoDu$egaPZ_T8%8-lEn_7NAE0^3Jc zx4y4jwqYWuC_4Ki-6ESlBjNipy^(uA@1%2?FUSQNU3zpfTnCM-M-jz7x^euDa}ui$ zr{-zxX3ZGx_Z0i?@0~t|Z-alyrf}P?X1BE_vimhD?D(84(41E_pKe4IZB%<{Q0+4n z4fsz*Cix8&kWMtLrmQl|7}ybBlPF~0N>Bst#+P+;HXv&+hP(Rwv=3*))9(s4@U)6- z`^e)doO|bea^y7u3G(Qv^EMG!Uv@A+R2k|X^@GsE3dtiI$F=WK`n7Us3M+uYpkRO$`YTT6_LT8ls3`y2~q3mF#L-RchjRzEj*oZveiHx_YzFF!T9?R(Y9b`Xq*s`_RR<$7teit-~MD#C&F5+;jeMnnpx$K^bU; zfrL|bp(HV}B6MRWj%iy5rvHr9;L+Oe2qv@!IHpK1z z8e@M66h2>+Qk+sD_dWFf2!Q;;wz8jN$L$hPz;UBLvfU2h;k~MyA*NI2?=%uv2EIJKN@O z)DXBxpS95aN9o(nd#gaQ$Rj@BmJ5T;#u}JZv-Pp7>8$r0e8Y{E3As#wB%Y}gJK48* z%}v*Skh*F*zVL(aC#<@>-R0Z|XFNP*c-u$H($;KCbmMmYY@4T8Xl*6OQ`)W_w$)=^ zjJ6L_UKp+E*g7ya(4aWSF8~YO^=HF6(BP5Lw~nIuczgWlJOYTRLMV!sH1j$C2m4`c zNb@D5Gx#JkY~~{*hy4hg`R`Elqu+k#wL4~8sRnRt{rlBCprgm;Q7GjqURH7^@ zED&Z~)7VUtMcp%e%R3J2dQ+CX^u_8X%esvPpOYYt9l=!|la{xZm*U;2wUbdkB})zU zE}yKW_A6!^#!-!VJGi+II*ZUfwvwlvDq07ZlYDPq=rN1v&LrZSzGpkVuQY4*s>_G|H09!Z{^1hKKvJQ1&ws?7ohgd}BmHiF&^ zy;~lT7V+%t*0p*XxqNq1LTaTh%iB_}vbev3TrljDp}Ee)muq7G+qbjE@zw71E#Xyu zgD-C@axOx4en=giiXdAHf8(^C*Q((BIhF63P@80eU^GnHZ0`@=S9>;C<9aJ_I!>!j z^~6TAnMzCL`3GX&`j&uGsU%_so=#>yxus@qXUw?K@BAEiY&8&_Vey&WPfN%8dr18j z|3jXdqj(g_HmbEtXIFQwl`x^(Vuxph>$eEzHpz6(sQarmQa<s4n*A3KFj`>YK4)ZIf?OCr{MB6lm7vtIG&Ix*c75KE-;=@_;{l z3+uk+cHV-m(iwEw3>n7yJnp?9WJwn^EQ& zv1?`jp0XJh9C2|ZY1cF46RO6BlMg`mGb;MIJo>eGFgk+_2c$r-q*-raXPAWPqseLQ zs28X%uAQ~nsG%RegTB5qWvpDH--r6$-{CO)GlBuwVMlnZlzS=Baft}++IExqUfUGU zC4fFlPo9KYx)4=Gv+YC##LuXrhM8DcbK2Hzkx+#AQK(g@x&fr;K@ZBMN)_4L1e{i? zDIbbIM?B<9+E{E>$Y*s5SFCo*PFCvm=BBOnuaPtD=nlhwJx=C{C|AgTMGeSuNJ_qk zobL8KO4Y2czRW=5D^|#&)p`=&?NyUfq4>jDe#LjJlr)oG>cP2X8&a(UsH$n7!kv7E zKjCl;Y?7BCVwqOlV5sRj@@yykdAojRr2c~(9PXdiw*{bWUh!>a)amMN;8JyvtT3>| zV+8J;i|E*iu?3dDXuZ0-NWiJIk~uQXE6&I;FTG30#nKGnl`q|V@Q(xXVdF;;!;Oc` zvw=`WwW+S_wUX&tBcH3{c@SEHbV}7u>ozo_)(U{D9p!c{#IWKAUs5yjt2xaKQxQan z_tdJ4P0YUqc5G++6ThBze=D^~&Zk=lh2B|>f*b*&4^JzOh=#wJ_E>=PaGhpkW-|Af zFK-&#V%5_ZJ;|!+Lzw~T+zBcHw6rhZ&>LP%wYcWv`M9(^!9Bth$HO!*Ykb+j#XI`A z!($N^savZCVp@XYsE6&WfPlbcMh-RmUhGF70z0S$go?_r@O#PKxa)q)EQmPcP8%E;nk`c*B8AjBT(B-y~U)8`^2&JzXon&S})@;(VN0@3MD!yucr9=5f|w zaYB#0NawgP#sPM@D~n3Qcfb_aS^Go}pT2oPx=L-dPlmXuGL zG>Z9>Vh&urs%3Wp@kPb;DROuSK@N1{;etpM#wOKBS)FQjdn=(p1`FrDA?2Ob&Aq#bud3E<7|$>@vXS zD+|?oH6m!PXi5vz`%*(_sQnnh{k-sS@M77Exf{4xU$lvdOYVf@-b3qiD+T#MHpz3XCWnL@A4Mg2}dfRsZ1X9pI6C02EYoX3xq2{AhDW-B`Q zn&-?izh&PlQ5~Wu*PGBhgLF2FcYWF5PBvQI{Jc_k^p3;Tv2^`9rz8&B`H==)sJ+ki zgMaLtETE%$aH+o%D9IsEyB+44m$K}BEO1$tsezrk z0nl7XgJ57&%CZN%k$Wr7%i*Cu6XX~DK1`u31oM-qmn;HJ7*3NV07X@l#IAsQyXL0f zEE~*msscG}_fUcJo^Sw)_)3nCd=~*ne=Aznwarh7t?$sG2FAK~0wE-$0-)QZCYke? zEIxPXoA5dQhyvTPA~iRX-GxQxNW9Uv!HmP(izkekVbq3&RfPMq=f1wT=bUGuui|MG zj=rsRHW|+T%vJAjjLB6GLO4K@lB?`p?5Wv{<>GsTYt9(4(lN?;H|#n~lR)~Ot@e}E z*`~Mrv^o<+%+K)_P7erv$d)3gvIRgr`%pur?yQOaAT)XUsYM>Bolh?R(G7 zdQm_0Hh^SKXHv!dMUWzAf4XMG_YJhjdq_2;-+2H&%o6o)LjCOi3dQY{WKBQm-lSnr zH#`H<$4+;>lPCK-G)zn^R5cI_R=Tg3MFNn3h2lR;-2JSwCXEL4jLPihdHYVCMs4TXx z;LA+Y)20p{e5@){33(0fX|5n%P|>mnt{}*7!X=H*u<)F)&}+TgNqGW< z0}5?Q-?tn)sEu#ZCo-o0n8mP&%=hUP0xZWn#1T%Ub3*bfwPx-*GY>N|A@797~ z2TJuO7<32pA$e;;miw$gR5fL7lk#huE49-pXG^>fSCf}U+7A6BoYtyX(E0Jz3EwEh zlDxAp6o+=>F%doz-wH#kwi$l@`Yai+1k2Hcqm6kd(2?+#U*$dw=fX#sM&^ z?ocG7_gl4x_e;4J6HCq=!f}^1j)~u;EUmB7nW!Mav=##>L-Z z)p{Fs%vlFoU~9!5NhnR{!_sK>;p>d4{#^CmDY75|kk2F{m;>67t$_`QBodmks^Rqe z{yB`x@C)fdk#Efiu$U@K0K}Biv>iToq7jIIFPRqB`4$87w$MUt7_T}OH}=sEU}0|# z_kmnt*FP?~Wu`U&h~WE}JKNc?F0Pzj@l%A+5FOKL)EFY>n-#HaXRyN;A?BaH^clGBoIm=I+aCM$EXo}h zn997RBm_Oj%nGhp-O3~j4^u=g*!FTuL5DU+{E~Fc@O}7U=-DIz0Q-`5tQlxG+N^68 zv)|$`%|q5Uv>p&lVUc>(iBHrDA0>=n7=z$6)6ow_mg3*zg3DCM)YtRzkLUqa6x}^Xc5_6tsr)Lg?r=AZ#!l8X&UR$ z5dl8Ecf2M`XcgqqLaAFT^ssR;B9^7=L8I1c@SE)@5PM#xeATb+o_Vry+$Z?F`$7kr zE138^Sn>)M{v|$-i}`c0E*#7`8v5O9M7ookQrHBpoVL?PmM=*^O&YgKjBeBL9YU=V zhv<&^HPx8g$fAI_)?VM+R;DL(O9VpPYwXoN)^BtA7viP3fb5+bU2M{7DZ)c=?L8dJ z-}9U{&vLI9(Ad*cX)$*WElE5gHWQH5)WSBA6vB_gw||JyeF#d)7%`=;bzy#vkZZXf z+G&TWw9CaNpHN2q_oQqy{@vaykx=L=3N^gw2p`ev*7s>n`&rHUrpAFsq8yDa`DE{Ol0`SQE%F{-CUw3Mf`E@9bfwK{VK<< zdq%)%KQAiyumh)DantrJ(}!CN+*xtHs2X`?WuYlD<2I#w?npXH%3?9ICBF-4jsfDD z^CAMeY<5wG;{@6pi)m8l=KJ5KzIGlOiZ}Q8YZwgL)d$lH0!mO7i zwuELiaj-k#?L>2rTwK^RG?ksVJ3}Lz+g<}GdLsUK=N)^ovj}ZP#daFY5}=sccX2zB zLv2i$DK~gvnVYqo**xO9^1NK_auxY$K+R8dW5zLC96$~)@~MuId?KDc!K_vsSVAv9 zLk$UUdMC5@tX#0c>c=nC!{ht)3O%V~q0cvB%CDY+QlFEDGSf!RuHI54;B~UB8 zXZR68bC31)?&ngtV#UBBMVU~=<%4j|!&NDChZCG}o}iY_YLVkGdI7Ln3Y;Pyo89w1 z?!J-_TnQ}45hFr7gx^P;4VUEb49;5{bU5hecPk{|vi#!t?ZEzjyueW?9nkPWx6t9p zU#T$m0h7HgryXTnt(AQQva;tzU)~bax!;3fd41qv{t6MY)yqD$S#ZNM2i9@XoKtV%~aOU@rcmz0F7BAyMd(G$pOVZ3Mm8D-LMEN#fpEJh4|x&OCc^4WmM^ zdy^k>41D=0xi6!z+AM1a)~w{f35ou3>R0bp+Vcuo4XV+j8lf*nm;ee5>bssLm)7)z z{aBpY906q*B@8bG+<{uHWm|X?#Vg&Kj0N~M4O@+{v_GPtEkO5`M3$9F+w%yy18Z zgbTaE(DcQsDo}z*(g1zri-5_XPMOPg>C0h$RWo5m{*%0rrm^YRSYq;WwT8Bm zCnK4y=W@tjSLTmyeLSKF)v`p0g?xKKMj1BaP@^)T$NSNA`-RCMOXet?84D`Pb_$7! zOrAooM*0ay^0aT%hKa1kXqJlIc0+y9BGUa!Ns4Cc61zfCO?caAs}8C=V`-{ zzdGl6wsYE*9gbg5=?3SIJ~uu`jqlUP-Wgn$CZr=?jedeI;(gNEj?#T1!p3V4@Zy)^ z-n4A0MU}ZeV3_H)SP!lGI(g^2FRxe#1*Gg2Vgw&l z^>@zWol6~%pZN7ic01@J44Vdf4qW4b$b?HAfnNvlnZ`WmQYK#(>o=znG<$ZHn+ zUh#?&2u&BX&3{Ap{uThujso|kA;d>`y=r6WXsJ_YB~=dKO&un3~KndaqF{XkVBIzdU28>B^#9L`M#Q2eV(fNA+JT~||Yk8wRux++Vo zg?cgX%@2nMb$c#q#I`?*jG;}3^A$p$HeW1JQjNWq>)8npd@5T~6f}2PiN)?Go5j^< z`N}QH5<_DI6vBu5`^3nesw^CDM5@dCR44+mQ|aR6nFXwWzFTtpXJlHfc@>wXTdfTK zk`O6x)!|7sU0khldUeBK;jqdkg5R09v74E%4zH=o>Rh?G^qN4}?4j^v=+T90%_I)b z(umk)RNOKGm%(oT*gXvV3)@&;#De#He|)~#YSxfSNvB|PZ~%(gZP!J3$K!X2iFAh~ z{(Iztji4MvTs8wX(V$Qe4CTv8{*b3i2~DwV8nx}x>ao`QQAC)E!v&Vp)y{HRfeY}= z@hU%6w#1}IQs#+z`7hflki&z`RD9s@JCUw??QE}Gt?idZ(n*P@#uB{eym`W*fx+Qk z$(GjbMk3wP^Wd~?|Lp}tq#T7GtUg~Xdc6gg@i|%`y$I&`Zv~X_Y z;AJ+Tz`hyHcYIoz&Ssf;ga1?mnEZ5{@*gq1k_o2&{*vCOy_X*|dd29sUKr1^S0$gB zD&)|b#PO$Xwpl&phtB!%c411FzEwXW7RCu}$6NijHHWi; z9))eraOfD&Zq+)Ty#{yBxeDV!mDW2=&4^az7E53s&W>1-ibErvJ~6^FCL8xv^ZCBE z43g*4H!Bt3B}=|fahg4}oFNf!5Z)IbHs`JPgWZk=x7qS^4Cap9_Hq6tS}2crmAaW4gGSRlHvtC z;4+>oh&Lv>wfI+D^jI2u+PqO?m8E+H3-&aK<*;R1e9@5#5gRTkzs@p?L>tJ?l-u(cBtQ9Y* z-e0A2_tHqe#q$@Mv=R(2n0=25}n7>*fowiyE{vy#W;`)LP@Ov0@*&i zbR}HFLn6xe>DTBW5))W?(N;hPkJO-yO$jy;mo$VX=S+2d%IC{F7GCd-Z>p85($yxi3~SF=PBP51ib)eSH1`V!@jnh1e3(6m)14oz;6FZ$@*l@5q9V{ zn-w8U5sL+dVBtTvj9blvuuFFDEUfW_GEA>0@H zACzYj-^kgVWJ<|?gZ;Z8_4rXZGzCYfBH)g+bkQ4ufik~`B&V2%(uDcc$!+c7ti#tp zu9G>v@4<+;{J6|A|EVm>7Uh*v-ieH>y$IjKg-D_SoT@#n~$ZjLXzuZ;~~-zJ}>BM1*)Kh($P8T@5j` ztd8iBX5B}&O4~y7HzX|SoTH%MOYIQM*4av>am@YesO9sv&ikBicEIAn)H+KCt~sHa#yf)f9$+mkH6Qhb8@9&EkVan%Oju0 zeUBhJ=!YAk_g4PvzW|yLp&B#JP7U{8q??$uK?|O#tueR=omXb3AXy^8*Ww=I!CM+A z#fT!ll;VttCZ4}rX>-k}u`=ctXh6vLhU#$ zp~cFplm;`!a{HAsBcjr1kzIdcEj4>dAO;ZWRpOH-fs74EZa9?=SCzt~vfW`DY&zE{ zq30ZAH>a%KXvK_>=y(}sj7L)U0CdT%Ua5oNDDc1a(Cn_W z18r@azGgls1yA;h{eJvhb9eC%YPP01KaLrP5MigEW@1d6y!-c8gih8lGo#kY@gl@} zc8(JsC4(nUA9H>urldY)`YJ}t=gAH8>N-wb$YAP%bLPD}(6zH!?+412o&yBd-ma|!!b*xJc~8#Ri! z?OHmWjPJ@mk3u1PN^$$At*-x%z3&Q(D%-X`B0*7tq9Q0sL?k0ovVf9<R0itKJRkXGDzu*lnN8P|)9bNn)!l+Pe|f#uhqzi1&g zyYD>xEu5_LC=PJoiSGRP%13VC7{y~vIqo#y?01pNOG=-COGIfwib%mJdtmPP9YDZa zGgY$NpV>3{AzpPQs;rO07j)3w9CsF1My-oY6AY6LDS3-IJPtPEbjlPtyRW)Dv^)w; zvj5&JZtdozHu})K?`~dmr#ji!VC&XgNL{&?RyjQ{Ug#NSg(gYBI$Y!P!;#|wXM0_N z^?}Tmz6YQ(Uo$UC|4i&tBycP`<`hObCSPtJx6I%zI`d=eM+gTW+c@P~$;#5pIKf2t&Zq)eIJ>z&* zbz)K*By*Y0h)tJnP=rZ9wOXVqtj2gWTnlA$KipJ6WWG?TI+pA79TYm9i_=!O?7eQBzVS^R$K)0L(NpHJauw2}BPjofPBK4l+Qj66=++>X-@ z<=k9m-=x$7`G8;hWRp)*EUUqnvJ$M2ZC4n-{))~rbZ{q{q}*qsK_;FZYJPS-b-0Xm zL_zgjLnaYidiVEi<3n5AzA?KftJZsfv|BLdRDM_FjVj|3H<^Bc_We3us`UtXo^5PG zlYt2=&tK(}YC^w;qXl)RCz@f$fbY)nh}L7IRhosd3yxbogrrpYuZ!Mcrwz zFD=QpU}(X54s$s~8~K2uelKmE^*Gb~qPbvnu<+!Nd~HZQ_Wh{>ZYUJEIz3>WG%<*- zRI}D-MM!W?R~Xt4;+e2`rvc3Wq<-I*6;Z8qD}{8pINimaSc}sfp8}&Vsf>J#BNasu zDx7$&XW~mJAPia}i-TkG9&2g9ZPg6sBu+FZb%fURFy=ZgHvt*+i~m zfpzgM>x0f@eT2+VZrubl?2s263qa$4pjQQPDKRMGF@Un>rLl{S?8W;yqHPa>y%2epj6O*B+5yM#p**P+e`Ouv3RB+x*u^dzj2 zeDg`#5^LKM@mM@Xi^ZZEv5(e$!?4-~BE~shcL|7&R0F+*ggIX=`-lbiwhJ2PtQ;fZ zO*wNc@XmG`5`~SuG4}?eit7=Y_=Wm4(YpggRSw{_Q7d+w>iOtlqpm_VQf^BS(vq{8 z=->7mSQem($6jOvFDd6?xO|8AwXwUM8PW8Enk)Tdpoz50oapSmwY}TLpfsnA-m%E% zT}^~HYd~it-npJYrcS=l9n+r66}uID2dK|zhe~GZa`iEXSi2EtkM4L@PVDx!&jI^b z5tf>;BF#Mie&69mDcw!QqDBUnL%o4_9%jgzDX|IhwoocmYNbuu)Xq|5f0`TitQ7Yx(2Jx%5I04F2?J=`)a7uWWutDq__iv zT)K^?X1Sj{E>#?>9q6|)FqBk3caP{cY{vPyjhkEY?lOXp^&ivU8GLTp0qz`{DxKms-;H#1_HjBR2y2MbsX6q5rnNK#}{Zl6;4brq} z*zevpaRq2a?p&Zh6=qaUTE5ZVkuH|5&Y5O39cNjNmsEN03jbHUP^kzC4oay(l`-7V zl1szvtkVM1$TsCfRz{`NPq!@dDIu_2Dmq8NNzJ^>(5g`_MR=KsJ280w}>&N&C25MjskXRI7NYEipHg z%~AnLKw~PACz)EFQbJ2mgtolHt9~280QG&y8}B}-3%Kb-z=eK5(A&D77@bpyvLBKY`0Hn-r{>1BCTGesVHDd z{Ym$w+?)lsfGe2a)@4SLq~6rlRC z@TR+q0w3`ocE=ZOuwEIJ>!p!6ubvBtmtjMTO$jInLdtMs7$M-y3IJ+)Sar^Y!o_gg zKyMazQA#0b#hy&H5*Xrt;h|tC@`E&sAx%X`uvBnQxsT9Z`XO?pFLX|D;#+Y`ORC81s zH8n+p#?1JnsKtx9c`*jPw(lH2osPM$aVD4V@vj}N;UMixy3$lY4~FKzTiB-X`r6Do zyyO*C^GPOz0G(u~0q7PJA;NH=>VxYe9I`fqNy(>vRwdFKJ8t2Io{PL#w9a08ol&wD z=+|WRq}@S#NMq++cg@C=`#8v5w@9!G)j;ZinyPb2uL#ks9{h(wb>^2$z;x0cdh0e@ z!Z}_ys9zNhWOiLZY6xoW6n<+z%uApv)qF&l)^Ejpv@z$?teg8zwLD8jRm$ozfIrKl zvfBi0Gp*v}>@iCO4SG$};6qj-!`7DfkQI44_jM)uR-7kMpmCg}M-#F~Ss@m|mH%&X=)lmL_Tam?5ffG9i8UsW|1 zvcCj~lEIRrrw0!j30_4P3G0KL)=1H)nGZdkZZVN(?1!UT=qOv01(cQApE6ckimEX~ zA`Z(vW2VI1alX_Z^(hXW1&@q#=!jv3kG$HH`<(CG5urA- z)D3Uk)|bAiX2~=riM_tv*^ZJ{f41^-zJ+U0_z*DeV=W?CqBG}V0H3-!;m;C%+8+af7P6$|X4bL5{31y@qP@d7&h z8tVS(OziY_Cu6!SirmnVm~1NvcE^&m!g2Bg6g|^l9%21*ssq#hbAC>CrM+Gw-rE4{ z;BTLCb~?TLOJ(wgh3k(<5iU5q3Wp2tFZ-p!0M9ige*1M@oCpOl1Fx@9TTF&4H_6@A^eeFH16Rg(y-4oXIe-fLRZ}zdLCyzOF zQf$sb8Ls%u#C-Qw?0Xb&0Q&RgkbV`*S(Zk5*)loI;!@>Jk)Tu86G1nZ5lZVM{2(c` z)$P&`gUUr`k>NBwW&Q$0-OEwLY#$gdsip-3)F!Y{_?C~Db6r6!K&_ekk3X672#;)~ z>6AJyh!%iKrY6^nu0T(4t4@H(ui>#{%`iUOLpxKN_L&!3gYm6Peh;>>?-P9oYXC!N zUE*b%lHFG--L;js7Z>%l@i--gN^=j zGuH4HhmIAF_!|hy(clFLnNm3#!TxPP$NK6Z)vb^DbgSvZ<-BwDK~8teyY%VN5JyCw zB4uka>04^lYw8up<__Xr0HA5vH1f`q=gMM!JO*d!3{}s>KWk@DilXpg2)}ST7k#J1 zcJnS82pCo2;x8GQ)`~gFC`&D|PlSr9jDxSYrqM=u+(GY6l5*~7DcKug(_E&_teR{NI<^Z-0_7F-dQ7`cKKg2y;5IFdXDPvH6vaTJ|x5TWzUG98x z;*+io+1$A3xPDTd-<5p2Q8kW$cgM3OEVIF@%oUkh*10xP4#&LzNl4Ivlil&wfw<4) z?Xrf9hKdYzdEURhQ`pErvnd;&W|+G zk9QBgZMsxOrF$ov_RFc32ozkPhjJ4Ok^K?G#r!<)rG7hTMXknr55JlTA3@ye4Z8)> zvraW^NAI#10y4CB*T|`ep5cm_Q@T=M60yUt_Tyh> zzI=X?pvscZDFaK}$pDBTq}b76pd-&hV(IauZYsg%xU1o2u4Sv|mL#j)gzST}4< z*K{8dPc%Gd;i>?_Wgre*8@cfd(f00RyMfv>a13PArYf$V2wUq_v*}g3&%OjFYDW7? z4iGiW48M8CLZ_G{D5;btxO5k8I5TCYXB$NfdWB*xrzIl&YZCVl`gBF)i!3JThn}Z2 zoYtJV_W@`M$YOGaez1J}r$89muNJ^Z#u$1H_ML1EaCcX0pfgKf4mR(J7<6oQ#TG4M zzRu9Z?*#d8T(oSK?e?=2sFZ0RFlkxZF4@-L{i@OOlfVlKylGO`Zdp!UFLIsL0dS({6da-(8@Z0SE8+ES@Xldx;J}MOF;K z@mfncsCu+3rWHe&JvzERV!b%&H5^z$moDEgj8MZT`e55Ik=L6x1h=KJ_BmyRGii*G z-99#*VOCbwIDUFW9&(+b0a05-*KjnIvZI7`+3Zye?tQScExj#HW&SMm0f1?>XIvtZ zR`xk}rz@pbl&EqMF%gI|Ke)VtT)ipsjtFwO2fBqht#(*ZVlw)iY@RYd=gl@+sJYE5 z|N6l%XDYa}^bcwx8Hx)a44PXT7-rKKT*yXC!J{JDS_uUA5(T&nSa}sR5)VqO*vDl1euz!O4r`MlqXIRv zD2$X4wD53k%gvp!iyAq=j%09ydcSfIV34^X`*L#8+M>k4B2oy-d6xz?z@f%mSGV(AtC{dM<_46R&y-7E!BEa<#KyIe z=rHg?yUBTU8X@-T?Bv;jv`qtkMZ?bP@5z^eZm_qUZSv~4*vBzb@)S8)O1Z&L{i4GX zy(P&xNXNwv=*-E&e&HML3qI`H)!N?2n=a;I_}YLzWhRj^s~JyeH^leC`Iv1+9DB{% zl+0OnT}JUj_CC@l4#2;Hw$J98mbuDVA_D!0sRUnreS&?A+zbXanMmMfF4~V;zAo*q zfcuE0v^h<_vEPYmNov)AUx@=j=yZGCVzhj*rc-S%ut!Qea1w+gcxx)@Mni5a?44tD z%8r}&DB0hTG|U6qX>05v<&xpK#=WeNXElth6P!mGmNielpV=}>H|_5z?rOkw#>>3F zR;#F%zVcL-@_9!;b9hcMQ+0(>(I>j08%T2Jy5WL)d6m9VO}asb7AQlJML%b>!1&#@ zxA863UZ;xCUMvzMijQKR9QsmM4Fr1yf5B)lV%53eNXj4($7rI20?OZU>M@Q50Be#I{870E25Vcr=oBb zvt#WB$hc`Dd(?(i54ObiQs0#X7Yyfh&p>|oKr6aNN*S&c8?B!iE1bGJJ!853j`Hkh zSRG|F_VmE#n5bsE4Jk>*JlPGvX{STCC9YkE7(Si$1A^y98^d~A5X6IxNBb_X!jkue z*?8;3h83yTenyt1i~2w}ug$qDb<6jq3vqubYoDb1_Viak&bRdT?-2Q%_025aw4*yLJxk0zDc$bXo51*X3uu z>io`@2TX`WpJYOE%G1CG-L;Lq289m+WLCTPl!* zQ*%wM0F*1Ynw)mqeTImCcZYIy2$g?!#8MKiUhS(=k}9xRz1En;hWttdyOkSHd36V{ z&p+x<4wb&fbbU&1pw2c6v(nTP#eVKv!8mXk-zc=|8_aIcd1o21aQ0PS%o74?2(Nn- z0IygRh`v*Qc$8w2Wu#Eoo}8YbBP-&O)U+cLVV)ijnwGZk@byt6k^2>Rq12w$*`a(* z#v7pH+dRv@>hz1p1cB{iwhG+P4W!p+RQJx8AR0v37&28SZ%F0~4%C#1f^#UHiO9UV zJ=8KL$8LW0?3tejHZ~P1>{dAK0Iw?5zMmNyTi>P)Wf}5SX_v0+0OD*%C4)kBSqd>e z?^&H|OHUEU)RD3P5%s|6#R;$|Dc=?I)+ZznBYD35gDIv>_VWv^ZarIc!uZ^K+jg|- z9Qh)Y&jmv=--9fZNT)a$fH=`8#%dM*I31_!j%WWgw0cna*?S+r>W43-u(YP#u}V7y z{>-&R6enT@TKwDCm*PeImNywa4q2iw0Y#LHqXRnSAkc#pZcwgFVTi~- z2UZuvvIUXSIjF~D;4e^95CTQh%nH8?!Dewg=k60-%V|MN!1hQxf#L?I`-|@qN!71{ zDn!+rWwfZz$=CLflOLO7l?OEPM^({R6ikC0ELXj9;@*cRR$2=3Sg7}(z+XgdC{4&n zKAVEt=1e-Tf2j8TQ27k`lG!Y6t?OB(6Hxo=zLP;cgPG-IPsdFzhLlunN(#c=ZHb^q zMWI}5U;U+G2r-M$z;{cOS|PkZp5!|S$mAdJz5D~~(&oIvLSz71hqV>8pfSjc3vEm< zdxoz#6G?lLhdlSM+H)P(V0oCJf8!+LHSepv0L)b^|5`%xON%9XFF2Z)`A30wPW!kD z3~7YF)-i}5BX>@ zm#mqhQ)5-Jik6$?s8g^SE55Z!7hQ4sV%Wu5=G3RWW>y>i_A3-g7GN!W+$uPsAUvs zzAk*;SZoR5n^ET#v@xh^I!yxvRI0nW<*o($X;5t05ZZHp^x0Q$C4g-VKL}g=Sktu9 zXYk$9&)ncWMiS6c*!1Ms8}?K^uEF#10J}S?aRq=39Tkdt_djZ0w`@%TfKwyZCXwll z=A%yjc`vlsL$U`-_6KMmfhHfUH*;U6mvYK1c)4e!JE zJXE%7k;MI6*idZEII_k(_w*uKKE@38YN<=3Z@J7|iOeTL-#jx|L;o^s7ZPkMuMh`UZwsz5;BF)xmXH48Fu#$yuPv&K=% zOrEQ_>tnuHuFLSEdyD=BC9U@6M;>(t_VAVm`g`kDET)V8)lXzzpgwCX;eceP)S+r! z{&jkpNkd?cDiOrp|WUR6r6x?RC#@7Q#^dv zffTs1M9K%fIoqH|Oe4xlo-fas#AO!xP+a}`I1JmTV;U=TYw0Dtt0yq!lqp_NAKfF3*>0A{JekXEWs3iXS2!U(mYaL0O!cj;( zT-#ECJlWpGa&a(xRue+!vIiTuWlQ<-bNl{yMKsV%LHeO;aM0`bXC|0&M)vNsA>sEY z7nZaPV=kb)zfbzC{cwxsHdg|>x#yE@Q1{D-c7n0O6!U!#R0I7|m)09THth`Go+ObO zK(u}{L&V=LF-$N{t(LD4$v^8V4>~ut9MR@=Vt}jZJ&+_uMkaoN9uiaeYS0tOQ8EZs z6N49yTI-#fY-}q@Cpl5hbh?`tGec>_{8=S>ZBN29PGBY6yd$?%J zmeZarWFB~)hwwq}lk688SehM|-Sc!+TB;=H6t!?YCiOy~*@dvs;j$3fFo4nv)&&U-`wm+#aN#t^?*AN|YCdCS=u9VZ4dL1CsrB{Ae`b~FGfZ$T%Pi!%en3DA2*?qqB2U)fgj$(SsDz4C1 zgS+!tc7nx{znaqc*#R5JuWKhRfX?GPD3_1@=|X}95|hv|(tmC0*# zZ(sFa$_&M4D|#*=C1p0rb)4Rh791BqyZ8(%doMUqM|h)CQ5fjHFnW3pHRyHhNzM^x zBjR2+hIjLTNi!?j1hdliA_%ropiiD-kE&%}9*r{nJK9&u%=_aSPiG`uylS=`I+M7A zimY9kZ(}q$EQf33R)6|srk&t@2bI5g_9vx)pn5hMg{0-F*I62$^V&j28z7A>25TQ? z8*1evwhS7)B)E4Gji;)O{&mT*O@+@hC$-d9$>M#Zh{f_+A_elNYwVNyJHIo_3mhZs z@!OJlAeM2E6x|l>Vj7MrYLQOQJY8l-J^PP@nZjGbD+gX9~Ti z01zZncTgv@mJ^JwJ0G10vV5{E80s~$E$tEr^!C*Dk>s?B6Q28-OUyz(tNPKiZ@R8% z5aX~stHBlYI~C%fqH%zRh}q71L!N(Vll8C_mt^vds2xpSiUZT@ zU!c!zu$%W+FHw~YKbfa4t1t;T;<8%gY&yDjlXEBym`SNG_npaHXOLS&YxlMBT90>j z!!Bx-PwezQ=uGAfDJx1s4HiYP>Q_&UZo#|4iUMAmj28CiK#rBd<2}lv*o+s29HXI@ z+J*faGsh`BmSaOVJ8E4j?ww!0OZ8cZ*b-$UFz_+Ltd%||G0LA0opPF%%(T4yqmIpp zfKdG%qwxsLgF~nORnqPb18WNsbERap&;4Naf#8U$g@h4S_a!p?wt(*J9TfGLEQ_e+ zyGL_ghe9i#uGTmn?O7JQz|-2BPK(h@=!$9)xsm4Jr4B{Aq@O*mH}a=MsTUoulIrxW zbu#XD`@7K)P?io%wnN7=>yoQp)2Hy)Neb;F$Kzb2>sSaT5r-b5nWK*HD>Cu|2)u84 z)Q@BwS=8YxTp?#$bH9~#im0??u&t*)GEQ?qeCiAcO*P)HU%By<5;u^CQrSYW7d>TMan$;a65bd)RmXE4H({jNUai<0<}pzu11Yn zA}^1+nwX^IjBT?_kpCKX{Ryg0yeWs~r0PBn!`;alx} zTFZL;>fPS@%($DI-!eTYk%g$yv$!n6+-**w#X6-OiI3lV4@L%o|#Q{EgKQ$9S%!f_)`aUD4$3{r#rY-KDHYc1uEI@ktipkq~f_x zD&?v}pw!k!jKkFA+jJ1p<4naD=)JHShek_JOccCO2b&1_LJimt{?r_k&wxhTIZzeY z35;V5QYkYqHr-m$K;@<7VRuD0cg5#s(c$Lxv4IfVCGHg^^1gKXTzRq0*Y32tjldP? z82#Db3FVRghKTk6dHi9dNDqNJJ{*JTaru0?N5QoRLGc{~$Fr(Tt0#dsX8g>J_3{2D zZ4S2LC)&@4N0?%Y=Lu(SHuTMybiK@a>K5vcgI|NP^)m&xd8e8QKotN#N>)dIPsoj> z_EC0@T$)^oj-(tA3`uy4xjxV9KYTb)v(8631)SANzEx~xqHaJzS5B7jCeu7xo06x? zror51x|*(O6Jf5Qg?SqNKylqeTa9XY^nz_iJ5B%Pa-}p1+0r`5?|4@m&gDBe_u)qn>K)n7Koy&?3@>0?1g;ny{95}K1<6!(%x&#}P) z(QV6zTgf*QM}EdQ4E1kJX>#(=(xyA^)p=1x`24itx^OtD^Br5 z_x68OI;*@=2tgdA*&~kHj|Fcssdk{mwn(h>rcfa0)LL&J2+`wcTpr@E9Ea&JSq|sz ze|Yw^`C-z{u7UYJ$LgY=3OAXB8EF)fNnZoWdr_Rt`k3uQAk!u8H|gQKvfRt(7fLO1 z?25id0oV`rUo`G-Lp?dUPmlLMGk;c(A2NkH?0@J04XeYR$uhGp!w4G0D=-xwn-b>L(%^r(Or01Ykq;QWf9 z%O-oecP(?Z4PD9b&u@(K4$F@zxm4fjo`~-G`=z0v{5ubb*c~MGcD-O){A4F$3QoPoU4{eDltt8&f z3*-bwE%##&8!y^lG@@BV-%aMVW<}NW-WSeao(k+wTEz-1)Xua1>4IE(>IR(UU2HS) zZ&31DvZuh9Mf(a|-?+THJ;(8kck#2?KHw5Zisvzo$wIb% z^+WkSiQxrJa30U~tF3{S1mS(UZiVh)g5kINi}8Q%J-+s6TY&7^hmDJW9Ay7#VD5*N zqSXbR&%=_zms>>hqgBebYg4%|6Y=`fj^&v(N|p(6*OX?{Is5L|UjoF~rVJ`jZ&xrNb^i@>OZ_Hdq_UOk3;0n>or<0t=B&c+(b&7e zO3lKk`^wPiz5Ubc+LB82flZq(V%MBF99OD}ubV0h>rC(}^xHOVaY=R`iX6_grHP%g zW=ls@1e#CX(C05Ju^et2YJ^y$o=Y@dpr_KbMv`m|=)4yqk_>|BRi!)`nQ}@Gs*amY zVb)-lPf5^|YxIl=n!tJk#*IV8Z8N+||3X4_%sV;I>dPVRmqabB_m6cD&?t~K@Y5+y z!sdHwo!0L278^%3WzI=V85V8yBtDYQQ%a#$)haV&@n7?(Rc&3792FCEtaW6v+lPt~ zqY@qi+wP;Cy|TrC0-7VLA@MwjCQ$Yd>~?lLx2)T^yfG)hV-^|8r2!&05ma4z{ieE|l=^^wd8wGIPs>}kg9 z$sO2fiLF3dB&z6+HjqpJkLN9k@19pk_ZoDYCQTk<+?|j@&%ty!=T<~Z-qbJUtEIp z{Q)R(vQF8SajyL`q2f|XGp+S%HPaZW{XtF(!mHLZxS@mP_h|k91rNV*g24P}BhaDd zSHK0A(QbcTgGs+UN59dt6#@D7vnm%v-dR(#e}<6%wBu;a&a-zNbV|{)U%oZ1wjW8J zLd+M*S?B%9GV8h=nW(R$Z8(2+tglWLDa!$*+S@61*|`eM^A z_m@v+_WbFfPnXtzz3)qL&48AfBR>w^nM|%IIlD6kj}xwOsF~9K<>CFwAAX4pAVD>o zu`Rjv>sOzwb*f7hb&#@O>Y@w2{vdkpU^B+0Jv?C(;Zp5bs0C*R@U2V5=l}bh|KRob zNEvK`p1KwNN9WJv$yIXK%&w49>+vn)o6+}WS&?HU(V+0aMMT8?4h#FYYm=S=zxiia zkDi+{QY z2EcNOerO`mnZ{TZ>y}rp?wy(S4R~Y*vb@3k)m?rE6GInA{)i0zpO#S{YzFapsG5BAZ(0{Y3|Mf6PpCo0v{*M>HpCnrU z&8+@Y<@j$8?f>^Q_fkOfsP*__$Gq4%ymej3xtQ~{tk(b8694v%{`qTG_>)+o+ltA; zis95E)a+}%zQsd%P9b)XZmCPOz~7))ze1|=HD>m1xdf(EHB+Jndw}czc4V~%rL zn;9e%kcPSz--z$!Q2dQ&>GzS1)byeho32x&k@w^s_EUeno$e8)g_a7oJ9NIyK8$uN zeN=9r%`OUf9fb;50LQXdTN{=nC%7es4a@}IVz0tuM7;!M)7C#fY1c1xthq|_Xbf?- zwu1*It5Tx4xc^R=d`j;35V&a|H>1E%+~bQgL1M*)Qk294Op3`PI~H9x{Eim;($w(l z#~7ar5nZAst--BC9m-C*tZoSw)Rc+ErV5nRP2F=BZwaA%F;ZYO2UV@p+*SrWfNdC?O$eg#f zhNcOXa4+Dd;*6J^(wn9iy-wa)?qu*e^_smJ7e7=eSLwd=0$4AHmwCMH3*s}rkx5`` z{ zeK^!pWs5EaJ`@O6EEoV$YCCs9*5n;+DZ#6_LJj6%8}cE?{VCq_K@cZ9-EjMpZ?dw{ z_dhR|2Kq5;mcPHju1}lOs}u30oJ<>y!KdJ~dtXxm7z7=yAql2kBNS$CC)H7aJ^uN* zK^d`WrTwU`fa_|cezl#-P_7~iW@jmiG2K(b{uPPc=0XrnRcAcgTngQ0>9d#IVlS8PCh@o>CmEHxR$iqL{OXB8 z+0sA|<*^BRyhJ-8Co`HqGaM3T?E&!SlhTc4j*X!f5tLt7kH8ox)8h=PWOzh)mo6bt zy}7Vb=354zC3yFZtZd?Wd$?D7wIu5|7~~VWe_n&Gj2oGIP{`I1tY%>%k+$$@%hL6eGWWZ<xnp9vD_rs3<2Xkkve_#Up z?_2nr!ufU`(u2*@5?x;7aUHPUk;ug+xy{kQbX}rn>UqLs#R3j6d1iwXt;}y4RB^ zy5>iGWl7{V_a)(1e%$8$vKlP7AJsaqx4t^@pzrl8TZWjzHQq_*fA{yRJxj4|1fv;H z?;;&7cwtX-ZhEEm$7@n}EbM#N1{d(`VaV?+eQlMWZ8ip-=FVt=?2^htyqgKY+%wV5 z{8EQe^Xls71;EMCLzSgHP_%LrwzaA8UI_F=&qSEfn5B>Hhf$n{f2&}=G8yAAS39#d zY~I6sdRHceFATJ+BLRi`>lV9#U{wqdDY_;&Nr_eM?RG-}3FUq+l$~z-M{A6tk@tcK zywR&xK5YtWU3$Fp;de}!e}BldzP@U-ZTO);N^*~b_q7SDT!OdUY(?XDbQ;fzTA4Hb zaB*h3EZN+?^BbVMQIY%ySzAOjn5CR3DtHy)ZhfgD(>Cm<4L35IDeJ-ok6OpI(sIw5 z?33+wmEn=$LRIyJ)KWY4fIOWDRzvU&_7MTN{p28uuvl{cwXOlpMU5=V)xl;<- z;qk9}lPBv8F9v{j7H9YA(LwA~MWM&|BzGTaBw&C@DjdB=(9sh8gV##C{|@O$<`g~& z1-p??S?h+9q>{VHft_iemo>quryHU$^%cpe^GaV+scR<}1+RO(m*CE59&a?QxF>4o znbozELk8 z7iAV3lqsm@$;@*li^Lv9qCA&^6i_crh><94YdUzdE-Dd^Cd z?BL&9so&s()VUVj2)iSs5A`m5>rjz|bzCwxvye0xFzFC%OvV1nk)qJFRN-@zyh{ccln>ej!i3B4^a zW?X+@WveFA!Sb?qb-_{1ieuf%BS2xpdpvvB*xO}EWat<)6v72DZ*hKh9_F3G!V zq|egf23u5w1vaNvP z>$mei`zl~i+jwsd`)O2veaCe7zSogsN%z?Nx55VPxpF*mi6iu!&yuwD!xkTy)e}pY zU50^|0)PFSuL?{sOmY97*Rqx;mr*o>{JNmD#}|Rn6wSx$v#@NPrD8w|eRb zE-{1|%$|+r>W>}L;htQ{xB_?pu^^{|-aPr;c-%io7idFq9svUv4ZrfPAf-le+!azQ zLC?WEaJ0jq;6*8V>8o+2{qfE)7j`hrh!*qW^uh36=TJ>Fouqq>C+0&e)`)jlv-Ihs zwb>amRy!N>ep^Iki_nc|;-x&v+DCMx26zwZv3@;Au8lSID)e)ug~;hEy%r1WqsYbH zFHkxnA!iFVwq$;1mDjT;X?v@qbLIQUVM(iT@4*UDo-1ge?#?7(5k^s{_M#nH(Gz|B zeiH8pJ7PN*6v)ki)TV}u>&1leoMP|J7)&VVX}z0+ z8eXr|{2z=+{rBTUtNzQgkbv(|&>DGHOd7+E9HVlS(z<$tf;dt*y<=k^8jh4B#8NM0 z>(D4h)w|hG7U48_KlY0EF||j+D0jw4od6ohvT5#$7x#$@#92};a>*XxW@R^T zBC23^eIe&BSO>S4b5swu7usD63W?dq#wjTk@goT;XT-&T#@d^ObjS8 zG9-oKun2RG$lPwt_nNPF(;N>gROo|h1A}%qTe$vCjCdq!?6}ZIRB$N4w)@Pp(bLUz zc~5q^+xv9LC?D9O%N;wza2nLW%A?yO;(xS;;I6;qzj|l8gw>$-D{EhhkO4?3BSDv4 zexH&fi4XRCsMM6K&f^ojGln4sFl+D;L2;L!YWVrtUX24Sz@W7~)+nTv#3#D6^T}oFghe@SC)Mb;A}P=I zDPHKtMQhWK7n^8eLGls>LpXOG)k*SAA;*ginIlA#hYT10#=if@g@h-eB)1FNJ`SQf zzdnO@(a9Ij$H#LRF_eiy%`Mv&ve|naR97H$T(}=cH?8&ck2Zb ze0^V+8bi%ppALWDUHBF(28?2*@+vmUa!nWCXPSv-U6c|HiUTuxff6ku7UeTxrAg$z zt5I;`zmn>8TpIc}QWwy9LW*Q)i0D>qy_zMWnrdPN^NAm|T%NoccG92-)}O~xwHw58 z9HQ(zgaA5?Uzt5=fA9uss}{Y=sMmNp%gUkuQzf$H#+qpP50$~JcMQ)yEY5BwiPH*R zKCi4nvS7nr@NBnj=(8l!n4@2Z;`QQBI@QVz?z|>^Pbgfy|9 zi|3CXUTbxRbbQp`2`;8 z=;fHX_@-c3ul+m1rNy)=;r@cE0A4cvORL>*zHSyTVaaSu-aL$h`TIseMj~>nj^~W9 zuV5s=UD>3s!;IBlLg;INBEJA4rESx=BA`AJcAi%?8xx;XQ@VaIben$b_?!p%?klR= zpldqre(TTS&0jzL1X`yvafz70yGf5NlQ&-&j>9nbJ3fd5GSbYGpxf?eKK-&>)|bjr zO>@jeVtOk?kQG8-I^9yS`JGo-OW!oZOu=2L#qH@ zYtmzr^0jUf+^m@9?FAn>m>`r;;=+Y5BrIk|Re^TQTCkUeVU{VoZlla#%Qf87&6UnS z!R*Qg991yL$M=+?tGu%2MZsLHd1ysCTioIHLQ3O7gsvv=IH9sK%>@1qa*ge~iE=Nd z7;{Jm2-M6v0PinpW^H$_Qt?VBR3v4(#!I^K_)I#92P1j>oXc%Un@P1g!$ly+3qch? zcpFS@kz{Us-hD^mB>iUe5UFPP-3z5YSk&^a<>-3Ffz7Ml_1vA+Y^H|po_{qC{_{`g z%@;?l-=caM#-r+jh+m6;%I`=)zb%C4XKIQJsccUSYz`>8~WlEMMKJc6N3# zS&j5l-Nx*cXwYpUw(bH!>bUK1Y0(ztA~FT82h@uNw-?o zPyEP5^P&Xh4Z_WlJP0{vZDl6!cvZz#HpyHLucm;T^z*Cj*MK~gc$HGPM^CYJ_7kv> z8mffI%cir#W^SzRpEIvL`f!r?ecohjR@BO62Rh|~X>r$2e>(Lv7%5BWiv0~IX%UWSs(D$>-qGdUnlOJ zXa2y3Ue#q_gor%Hl=76Z+K!L;=46AEkh2Zhi=AoRE;qY>UzPqo`d8y-88mk|Ihp8x zk|d_Qcj&okAAAQLMT`D^hqEh{DchnoTI}rc1IDuxHBed6QE=yxs6AW-JolZIPBr_3 z4S`@lKc^^tXfRd&1u7lM*a4IUKMD04+(+HnmAk~o&!QHYqUGDJQrvgm(4O6=>rE9x zC!AB73TY1#S63vp8Hp&X+2P8{uW26j#^!zF8>}QOf9ICYbM36)C!xf*!>IUG*bVFN z>o%+c&)4PncmU!^UA=Sn$0mdEjeFOq{!U!{|8a4_eCD&(v({7hbKfYkm)}#K6a?&K<|!Vg6wl0I0|I-t>i=O%^?x)B zX`xpXcX>p-b}9~__A!R_F5hs&6q6pX0Rr0JkxlSAE%f}GtX|bJ0kX~nkr^jKlAZT# zGez}({ILJ&bV}d<{eUp(<3P>73720Mhu<3liyu~97ef61I=k?HFW8TH0wNxtU&n!b ze@$-w8rlErq5nMP|A#B~%9?rS_=Lb^_a{@m&taM&!r91Su7L@FPao=1ih9_+BVM`v z?ygYT*JwJEJB;$yXUX@vuYC<8RWj>{vNV#S_FjyAbVv6h93!6~3{@q;G6-B5PWnOm zDh32B!FJNO{?|s-J!vdLVwjk_exJ!FQ*0S}haam%E3tBn3O^a+_#wQ+VlE|NcdDq; z!ssN+7~j(M`rw}UhE!0xvb1Vw@re? z?-5Dini&-CeSP;+DXk+;AG-K0l0^3``cNz@im~6dM4tYO!W-Sk7bDVlP-ifaJI#nT zUrxKfkNEw0xQPUC%S;gTa?v!&zqzh_zv#z4@ZPh~v3~H8Q90%D&u_>dD%4fyz%96d z46+_@$kh8Sh5c?h{HD3yu2qO@ z3@t}6$L~HF6_<$L0mtW@nC*w+MAtMP2gy$G!sFiD61K>j&yk7(y2uxW3WmI$b#^H_ zs~FK%AE;askx`0jX5XbZk-F@UufSUYO5(lknfZQ=d>>^Eg9|3mR8bytI@z-nc0J0- zs5wU}uw#p(SIrA@)Kff26o8o7H2}?iRcKA3p!yE^_A|B^{M=EZzYt2Ue?}lZ5jaT4 zavrCoyOr;CW3P)oPeb}k(sLr$D>qLAIt^+bSay@d0S8#Dul@yt4c0e}x(-_j zdf`92!2+qYh+F?Sd|cBXTK`c8bc%kRE7LBYxNdylZgr*F6JHc2oOnxnUtQ4j0QE|; z(DQ~He64SFHE*LjGI2i zaX@k|_F||Buo%FXLJMK{Lsm=8Z2Cb{aC@}84!PL7k5IVA4y$usO}Zvk7oye(s5$8Itt{u6-qXVYO%PI5>QvfIMd{< zd5tnyCo(98M7BgVT%20 zXC|D!*Gm7u${kP~y!FbO12jUZ=B6q9Ah;1`JH0DImjo`auHJJxLlaKatdO4^_tA7E z350_x;5rsH)2dOXge%BHPTKGrz9uQBR?25Qa(=x<{ch~{-3Vet^kZz%9^H~SkdUn( zuM;!M-&-5Xj|DXYC7^H5=(?;NfSHKwh{}qYbf-%H_Gc|~L;Kd|;pqthFM4Lz1v6@2 zsGlE~z;&jT(!cb9GzQG_0`>4GK@A!|x>&w6MRzt~^+Uc+!>;aTI84<_C2<(NP~}n2 zd9!D8F}u9a!C}<|;_1B+-Sl4OH6%Qq3pN#O>586(gJr$A&RK!`o_1Udz2D(AHX={Bf}K{ zMJHXGatze|%=+<$ua$Mm@$UN&)AftVdwPff%@2KYQnL1w)iL*j3DBDei!~QY39}N< z8F&x5{A4wxsppot>^3yFojYCXcy(5RN*^n`LRAzx$z(s}E|A_VQBkf{jDGsu^L8O- zKV!C0Ja$v~(7&KPl7>r7Qv2uZ^-!MQvn7S<#o50nOAc;;rX8q+UwctpQQqQnShR|f zXCZu;uX^}=-1Ck~9WY20M~>v+$Ik&oJXj{YMO_BizgE3w2FqpF(a9A6NnrL3I2p;X z{$1sLbDdZsA%2v;@n~Z=BUI;M*j*uqlzu53*{io`k~SuAzL4@(N)cSWMH|Obx-Qff z+Dy9aIzU(*rk?TWV_S{=v%A7LvLLTy3=oU%FP-vS1m!H5Aex-yzP^)?@!)ykbo*+J0Z=#FojH&+VKyZZ6YgIV&+7b@fyRsImN3wljk@Ol*m-|>J5R3s zd^Y^XH7_2lT!6P=|J}pt01Afi-<*oRpf^dpfFs)xO_x}Q*Zgw!s!Ui?%;=_wsMWVbdtsKfTr=l=SN4xD$c>?h#r?w!-ENI7x}DnN9lvDi}*9x>HeD=0l8Vi zI^W2P6nZBQ>3%s|DW@|^p6`?j_ZhTxD0U}AhoDm&Z_(cCi1O|>R!tG(8=eX-Fn7B_ zakk&@u2<*Kd}o3MH+Ma+Ql6Z37co7;`AKN7+_ ziYH->lT)|~E|0xh=b=k450Xb-t8X*FXKCmqa$r|l`hQsQTHU!V?0b{}Kr&Bh{rNW% z1(bK*Z`;n}QwmEFOyE>@?aVs{H{xr2d9%ypoP&GYX6*(=sZrH;{D=8FTNiWC3sOQt zn#!%EtD07wTQdl+vF4%1bTE*NY_#j2Zt_;@(?1pmUFV}`#QQCXfzdN+l zQ#ppdI_ga8EnWF$zL9xFA(X{}BsTks_;2_`PcCb`h#IP8C5V7R*t1NEvo}RpuHg9- z24DR@`?AIn3FWvEuMwPLa5MkVZOWEs>=84L*Phid>%z`~V1Iu0TpK(MoFf3%rYp05&)SJ13EHanE<8vWQG5bfW;u8ji-@|15= z;tIPge&BbUnAQHt3(8z^?7BBkj;81gH-qs>V}Q)aiDV(gv|{T6yg5HEnoHjP@x7SV zxfSjd=y1lpC)j)%Pv76XmHi@F+kYhsdLDbQ#;1RgBI2hV_~j07*y_M*l_W7eGuxCp zxs7j_07CoLPKkm4Y7c+ZA0b~neC5BXokJQ8G+9~4N?xq(Ep{;_ns@=}Y9Kf+CwW?- z9WYgA5^#1XgvvCm+foo=efHye;q#BLzY@H>)(E;1J!v&2oq&37@z<^-(~~c_zr!i- zEkGINl>J(#qD|Z)ofZiu$mH_JTh3Vc-pnDukTyQGMZ!u+tXLQsr(IS7%6&zxG0(oS ztU#q)w|r_YZzNNvOy5?!L4*--C&k_vbziCo8DZDmqWq2BK&a5#+y!1LG<@T3nppi| zhW@K|44?vu&?r!*XV>Mx-*x>F#LBnWwpL{bCn6$x1ZdNzO>%N;Ru2&PONZ3Khl=_eI{Ofy!^l3*|?nX?#OJGxSmeb0U91(QjM@x*sg=ybiS zoS@^0YRg4HvB3So>s4%WQGayVUeV|==&#xmZ2$@(V6T0+iFxp)@4O(yjX2emwP>|o zHDIs+Rnb(OHLp+Q2kUHy3u#UWWwZ_EV~ot1#hTyu09D4 zKgc82lgeYN3{edK@S9M9kU^_Vzr**JV~ajJ0ATR-P*HgmX?pu>#lg_TF@jj~XhP@=tLTsD5IWlAG`R-b9kLpO@^uvW3dgJI`TdJd1)GL z7L%4H56y%CaFc?Tp5(YtnTeHy!{a0BIMMzEm-#Q=6CXF_CJ@`YeAU{YzsQvScsc-; zwuUs*waneWdbC+HR5Z4@>!+sp@uymsYFrr?N_&g`Pw`3E z%+6weoa4-|kFf6@Cg1J#ZhuE?z$Rv*XZFnnu2<)X`FuK<3)_=8e`C>0W{Sp~|LRbj z3#f-QpH{o3e@}b(t%U0Wp{P;gW6yWtR>&L2;qAh=ZSZ*&eTdrY$;?`U(@Zg{gEUsu z)0kB&FJ+s)#NRPF9_pjvOPX135jQditn6>>U8ruyl=_APH~3rahN#VR~7a=idgk6 z_j(6k`lwYHOh1I}jJE$^fJj}X8xbkhuYay#U`~%wW!Ei@{S8iBE;E``if`vW@rXtA zXC>1?t7prBMu=onX7x}Z7M9)_v$A`Hu}UgRYgF-#2_itM)?tPVb3_*d2u8Z&N9kT6 z^a|Z!{2K?q7QDYV?T3bB2|An(AuYt)(q6ht^q^A@+HOrPj_(rZWO1e?^~Q_pzL(^1 zziL(DoD8iUS`i_A@GDQC#mQx&21P#6Vh%r)v*V2)9WiNnq5@tDlK;V|@i;{?lbA)- z&d3Un)wsm^?b=Uv-LmeR>X}j-DOtJ(FShU@}%G0G58F3J9ek~92`Mw@kw4y(`i;s0u0=Qtj+uG1`ZFLWQ z(sx?{bTcoB z%%O*O^6qBb4~11yMjo5!gk^USIgG>dCxbw$_Ls!BB*YdM!1 zw*&Y;w*&^h1=2GHb;c4GX1Ru+yc9h2+sxKUh+=y2lU@$%p{lY!4VP-ReMj9oJFj&e z({1vvQOTcnqALfsoUVd>URN(snZVWU8jjRvKFpZt5@nSLJz zA;_%AGYm*t^0bi+F24qzj5XL{O)PER-d4!<8BzBAGbCz6gQQDYq}qWEK{vi)GZwtU zuATTIw_WM{&fLY|dn6c6M)IrSb<#|ei?3mr@C+=7}aben!(YqMYQAqF8?EN<7 z>i+WIjyoj*rn1f`H( znBM%omBprW0aRVe`?Tis(bDvxVuP!C7xi#-)J*0$zTKMt$nl&6`=fm1mVd|Q$n8D! z@9IHi*3K5={h)h^Y-4*mENPOSA=*V;2JewWE{V{y!(_;qNtr_2C+Oz@e%rDpNoSk) zn+LZ(#E$wuFm8Hl3*(F7bMN+oAZx>I&nQsj7X6LTw^wj+&t>2+fxO`&cNUlc!fUxN z^X2kkXc7`NbwN1BP48<7kFqa$QE}GCHz9RQQlG`2XXb9hP`l@BfF@f4 zx9unfGvAbHskE%v9&s$ecR;>$H)!_unaq~x8eMsVBO&35YF&wQ;aqjC0l@XnX)i}F zL`!6@oGoG6JTnI@-bcN#d)s-eO>s-b^O8EqAFr(Mn~vbdWO-~RrH@|F^Ia>uq5&PJ<)d;Qko#PXn*FOb8z2DbJTxmOi@=P8Dbk1@@8Nm-T|8{&Gqv!rKBG8TE}osA zI-o1u{>av7ZOJ6+H(aZt1UYlzYiztue?>q#?Hp&fpm)*-qe>yE7)Hjrcy{#{+Fu8u zJ9n_^KnqJG`o7=K|Jvchj822SwcYi~ZwpLvCQOCa|bW&EUWCE~V0KUKTUf2LFR z{6RS(#pz>g*&_q(Vul*)k3}wgBb6*+t9OOU7ThL{9@=R_MVo|YK`up3#9z>mAJ(NwGMeQAwaydvkOX(#g*y4RHJ2D>0*g|?1s z1NEU0PrL~J>czWwe6X!^iigYo?7@EAH}Vk~n4@(@TOH{7#&X)&g6&&HATAldkM_rr zm73k)CRpyPY{bKWu-`hVb_<(wQCVo-{0GQo4K+gaGPh3Mf&a~^^CyQHlhLU*gCz$lZ%>j zy83gRDZnfu7JjowAx5-4^*`$+8{BSm8)D-|8^w#C;64EKXcvr@d7f?8SgxB+tlrm z0O!$rDPlZaT&@kGY0Ol;$%<$45fS7FJ%AfgYd=L#BXY=}p5R|wEzAu?(4h}}jRft{ zlLz4(uf#ASZTrABNU#`!doL{Li4y>$K>4ZjV#STsv9=pC`6xfBr{#y6Ts_I0L)xP| z`V;x(iA0?0ISGahe(JMyLX%n(57|rU`s@X&hl(KL6SarFRp|T>m3;R`t^$o{JTJWF z*?xl=*`TLX6qWGoAmhXnR|($mX3Wh5GVZ!$*i@ZjJYMD+-EC<OqCi?7;#0A~1q-?3~BEuPYEgKM&+EwL8Js@~-x8Zjh;OVl|<{f%5 zRiFl2Z6^0ANwgKe)pA5*d&Zk}^cfc>urjz^^I79(;n2%pb>9e9QtaJfAs>?b(ZQ5I zm6Ks(+czluE8Via)gW}RS=xuH-3gqI-K1suA32^`GGWWovOpza2>y-3Gzw15f`pSc z6C9x@D*CLQ=S&4qyGRO&@zeQ(w};b!B3ekt$3I1Ae1XG!<;LP_i$I|<5^c^EONu?5 z-CvD85RvL?F=U~pozn-KRIDl>Y=&n;ft34hoY1B{e9(PkmbrJ*3rFb;eGmh(`o0?z zwE&yK+lszXp`>n;f8W>oAvmPBa+rjtsv$4h8N@G+y;0(sZN7F;zCP4%yG_E#=Icgt``$==|3t3CgcB)`-ZXBD@oWA24q2d$ zVDS3VQLk5_obNAgL5mM%DpkLgLdU673+U<`gy8X<1|HkTmdCyUec&9Uo`i&NxT+jJ zckw-HF=->_5%JmhH2m>A`;#h~My)(EGnVZ&0YxN*unrJBa;SCI5$7d5K53(LSRFXG zgg~yuZgheD+^&3$kz2~`h)BLdkesGcb4UH%Pnq7P{l@CC(%2V8+Ww!bvp#-N(=PTt z$MVZpB(>;#k9G6{r+G5_`kAWrrd1Di=|%ZnFI76jYXdFGw|9S+Gb>;Aa&V8@nYJ*D z9Pg)%C^3N=)DeAevFkM{j6XFcwrs8}f`x$Gdlo}L?#DP$i7saZ+eheC8r}4~xe|rW znZ(A*eTEmYk=?j)_jIOiP9C+)ohm~Z>vy=R_R<(SNYa@;vBj)Z>h!Mab!3?}vNGGR z@q``OLCNESXAIbK3^i!^;oqNo@{fg&-MjwsrPQIs zl_r{dG})AkZ$Sc?`8A*8$SyDkJRm(^Ir)~08GAqM+E22pBQV4!5gbk;6zYLz=O?9c zR6jA#M0l6e5S?oKR$z1ChEs1Q!Vqxoy}ZJ69>>chJ_bKt=;0JKg38;UEGr3H1y{Q) zb~1U>Lciqoz-AlfxLZ!a91}uFD`gv<6(IhT(0XF!!<2An6w>nS%4ngH>xoS~d?ULG z9lMVPv1}QQL01U(==w5qXF+0C26FgTd(WrAW5t5oJTB|FnPZD}1*$OZfDL0%D-g20 zU#v$ryZf`fCcU?q@A>|232PjSC)b#dN{;P)BNi+9&U&LWpPD?+^0Kl`xA_!-QNXVm zsnQtLyhe@PdlH(%x3+m>x#>UZqrT-~Nn5Ksv66Y`N}1gL4SHOTH0Lpw?<#CopVS z3}Dbk)`#~?&GIxsM0bc1dPm!nS>63?27nx$=CO00ysJ>w-(3CmE`FKLjZVT(dbDin z-tP$kk3ld(wKmXF|E*i09xTU4TLq5TVv z7krXw3pCgcXDjUAC8LhVwh=Z9!jV+{g^sNc?%gZ?p4#}Vy;-QMNxNG96^KUO#f7!qe7vXnir0^$1myPyV~9@)oTXzHiYbq z{DUpXtE{@`}nmrQ#?4b^ea;Z@niV?^9a)sg~ludJ9|DIP9Jkzh$$_l2zqTWPg)X zys#*Wo4ynsFXZUp=vqULN`GSqkmu4$!zZd}rIHQTOpJb+AtmKQyNb1+Hx_YqC;L>9 z>#|B@{Yl?bdDAxCPgTyOlv%8JI`q;U7tq?Hbla~k?%9tt#IJhQiA;Q^w&E#NTJadF zeh0swx<(R4*N6IuBg>+C$|_*%o7wnY1JyS_?e>LbuAZD6@!{uUrcAtvgi23t^A|4 z0Q@jcu+%Dne8p#`T<6=6IxVQD_KC&?S4E4{8Mb~jVF{nq?q}5SUiEt&n=H(@or(I;oK5jMEg11tPciVlu?St6u--*YEmz(HO zBGYZWhW<#D?(xm|m!Wnb2vqcOgV>@yP!qb7)yJA$UyB|eJPp<;hz2InH!x<|S8@x7 zhUG&DD{@7#(5l-<7j@MNMaJEAJm+v!3mLFJT$z&xOjphJ^u2GGOczUL7pJ#>XYd0v zUpFe$7xE{=Go|gGVcqqe;vOwc+Ja4uhtszdm5ZSGEr)#fW*altd5=PT0+>p(d%7i# zCD|8untDD{^5C!2B8GBv{c5{4XPssWwwa_tlt(G@kGGtUjn7J7Y=|u+Pj(ECfy_~H z_jTsFkVw<)DO2XNU<69i_ozC7U3=V)R%<{(caokF#$uX>pPd!;o7SIM3%NK|>s#cr zHcI7{D&*Nfd3;okI8P!k@|uNbPgL!bXCNN$cW3|nAM8!)$v|giWoHS0rb~Hghv0`kd z*(&0lBu`ilu997F6~piH#?|HGL?QJDaI^BBl3=BvQff^+Xy+4 zYDY_!NK&4(N06d}Exre%Kh17J{hdtek0u9d`cjBti?^xakcCH)WIRJg3;D^7;3^N+ z$54vC{A6g%?*^MOU|K~+&m|kyKZUYuNVTpu++}0(E+0+ukiDUXewegKF7l2KAO;ys zwcuO+dwa$HcbW(Xv1N(dBNH5qGV72n!!^m%{%T*scczpzji|^5`|k4Cj5K|mDoLVA z?UeMtdNX;-0l{ZiR0k$9bybkks^qpau-!r0cm`AcUD)oP%gVDI7FMj>L55I;?Og2_ zIi&`RJdS*}X!?t-DRaxt9{~>gcC%|W=m8Yy0uT0-R|ho%fjQM^PwN+xJ{d3Ip4hVH z%9aJj1yAEWsKk&?8r5Z9vCrJ8N)-=ADzi2i!MA0Ho*HizYL7%kYu{Fo10oixqvZy+ za0XKg$|zLUZ({U)SYw09L7I@Se451c^MGH@iDJWfmeV~=t2qRgdtX0#psinJSQG5& ztPkFjJqtXjZS=OPDcXCw0^ca15^Feb?;a#0b{&_aQ%*?5^b?z23kSh?0uZ(NGSd^Cc+tkvAC{yhEjM2#)n z&?b$bCtaw&&^Yo#dELnLqvlb={Z1Q)0tq3Lb7Fi783J-)m7ED@mWLJ~AC~P(J?CV1yxKno6&~;Qt3T_m16YVGCWGWLqOrJyK*dfUd^d$?Ip)f43tNvXvE(` zZ`JRHpf>i^b31xsvODlqhl_RPx)ZpVk`47cbws-@u+1kGJ76QI$+a_V*~6_u`!orq z=Nn(V=gV94@7qV$k|B#MHNAIU;dyA41jg3IA>&~po$g~sD30#q-HfV!AWP4SQFY~& zbIAxh!Bi`$zNFx(k3v4j%5_9wo}>v9kRE=}gcpd76y}~Y2$Aq+dN$@1A#FVt)d;p_G<@%O};3X2NCzIyX*`JV2w zaw?-qi|e#y-Zxro*)D3Hy%5(lep{w!iCw$bXJ&`}#d#iwY#yJ4O!?odc~U;)NO+Fi z8Ms1joM39a9Z10SN#13tZ}aBR%j#_>%EWa=9h5*g4Y#tIOdd?;J|?IX~O_UIn0E-9C0A{JlqQH75<*IvmLW>fJ3A zPTrNFCIy7>PKD-56Tyf>&n{j>lS=hBn|6BuKhfAi-#G&G^o30k6o<8&(PTW6&A!Qo zy1c{6V~O7sJHJBsVA_PfZr|PSVde5r9d`ji+C_jesOmqw`MN}}>eE7#I6D|3s_iXo zD{DTY^7eP4tCHMKQq+F>O1!ih>=WNM$943f)N-5>{^UG(wwu{D`P7=`+#Sx%ccLoR&dzYlJ8lD$Uck*bvT!{$aSIL9O5krz*K`(81#y$9fOD=ed zZUlPO6S&@cT{7fGF<9kr;R5~ujCT(tR*c(XR zkEEJe;b7C2bjb*r&8&9HXa_2i-ua3#}bfaZD{FYgv??fMbDV2pP++6VLI9x`(_K&XH8<3LHGLH^`qR)SV!;9r*B0?94BDl|A)MHq`M{ ziPqYw4$LnXAh#kPZg&%cY4~X@21l`@w1zxWYP1F< z##^PT)lOZCU8(E|5u?tN-o?~wuGq3gF%<@%R&613^jgBGBsS8ekuq+^jLsVXsuMKr zdlBT3LHuTr<#_fYhO%z<^wFmQY9;fZ=e(IfM0&-9Bc>x7?^X@TQeGF*zCl1OlTU`7 z$Xn8{+AJpE1i1yJQ;n_a>$b%ZV^%D*z;O;$G||)uY09ja=)6LJh`ULXRap$z&aM_o z@KAlGh=HpBV2$L3*rvOvqnEJoyFeDHW{#bNom?21RkHJR%W#6py!}_%3lY@M;}q~3LV&=+ zJX#W^bC-($eX=3+>|>EQFsHeIi#8I`Uwt8c-3j%~pV>Ais&v`38rp7-;jf{udHJzFCg?x|1T*dj|hT1t^VLIF{qmc{zjLt(* z$m!)r0x~yMtM`E;D0f^JXrE_z+Dj%Ys&k4hJBx2h+C9hE?9&owS_3_?EWOSj>_RCr z#BDlUW={Ya|1pc(Lm@eDMEsh{CKNG#0x8tlti?sH1_J4`x5iS}JJFj=Xu&P_h zFX3FLU~+AhpL4W7S5AL|+*&GY&hHaHo(edV!{K*VaeYqZ^E-4vqxvNmN5iuBysi)! z-H(SuIrPLfKW$A^8PI+(={QxNWBL|m!l@>)pJRQ6elv;Fh$C{V*b>A2X~)caJGXvs zT9ZcQ!MwQWMrvPqN)V&l$GMw3Co3o!f;@!<-wl!_cAbyCVKS;)T1bU0d|9-JcDD%% z{XOL*m82ohX}rhNd!F@Vap6LtOCw(eU6Gj3w5&h)xPNEtYInb6X#(c1!~+^y0>_Z9 zsnh8gp?1CFg;LWzc30oTN(a+I-||-)XJw5u?!(809)||gyXAy;&08K%n{{-6Yr$8* z-{!%$lAa+;5txp}`gpDPb0%hN*(lXtxpmihY543q|6tW-BYEyxFkEY&<$WY`vax^S zF_23$)#-m6GK+AS!E{!y(T&d!N?emT_o{80Y%Vv1+^Gb5TH(VVXwhcB4K4sFyKk>; zJHc(GpW4Y9JMn4o3=lE7S_y3Cw#>RNkB^k0VRcglT^sSa7bPZ$&u={S6+XWvSLiBM z`eeW2BN{p>8yCRR%z_BOKI*@-1z(~r-<$=H093w$-~XFqG`YV$XbNw z+!J2spITGpq`5wBzUnT^H)>+hVt@4sYC^6vOnzA#vsGEjFm#KN zn?-)^b1VkfxUb3zh|I%6*qekpQ2eecRT^q(%lXyF&8)L7%=Lng3~KX|)bNf9&3)%} zAR}X2K-C()kqIq}_f;9CTmiqSm>{%d7mc3;C7;L)hqjQpJol*%yDN{Zo?Eoar;C-C zr#(iNg|XTUaw@8aBLvSmJyVxSYmf`32OsD)c7E=V6;)qvm;1h3!Z~UUS3#`JrBzSg z<`KD$m3w_bR(noMfRaH1bwSd6&-AHj;yJm@A$gmrYspa!XD*s|LPA&fU#- zsWL?h=UCx<6hEW_&K`F-TTn3Y_{LiZRdW}OKG$3t70p|x8L?;c>i$}1AJ|O;@wrCfE${^cP8ZY3a9#mS z6~S)=^`{iZY&7kG1T*E$>eyB?FYM(|qxsU$aPI1OTg%)~T8E`5M>|EyByMOGO`YFK z9q+H2`C5~UHDqIPLSuc2KP`LAf-3bOva$a$7^&4CAF#IMISi`SPVbn$MdRP>yIpEN zb#7F@$3n?>WG^&;d>6;ELS($ZR{LbXPpUJeQyl<@lxxeWJju#$_l^1<6go?8f za-UOJ6j0MRZUHv=Mx)cuL06@Nt`w^*-LdceGPQOH^ffa1RB9{_Z`N*O2rY}pU&IQ% zwq45QZZS0NSc_Z}=v7(MO|{j4UNkF!az7h#4l~d^J6tSBUiggOt+~qpCeL0q{6W3< zyRNdwX&o|Tygkad1Exlv`Mgyg4!Umd#Rh%_G@1Yolc@U4{gE*xw}egE^yPdv8W>2Y z^Ry$XYlup>@?d>qom!6dKfdf+?iX-YemCU4D|Aj{rC!?*S7xs0Ne!RherzMI3X+tD zE3<*=5@WVulifM3l$%m5cl9_Rk${XIJgILdK@1>7^)0vJ)mFlc%|}&D9NT@jnXlnY z#zI!cQ2REkdVAW;~fgp09%S$4Ym0!t5w;>QOa zZ$eejsW$YJ5FX1`TgUN$Gpp|(=7)->l#aZY42rs2$K)CoPJODqxl8dEH~9y&4)&f+ zbi{*>$(Wz-7wa|jP}OX*+Q5b4aezj#s<@|@S{2N^_XzDitEkFy2mF=19gP64;L9(= z70Z2QS0dcJ>HK+&M8qfceTm(u1bdP=8&9o|bT_Y2Fx_*x3T{5RG(lTb?ciF}+aY8> zV?&L&k>iSeGE#JU%A~5Drnb~@rN;+|MaPz_e|Yx9;N=j8O7-FhAW=biIavFbbGvXf z`ik4mdx^N7gq-0m3-H8=$vlJdS)6Ji8{JPk`2{Xo7r1m$`fSze3(H$qYdn{IQ6nEM zr4N6GgTM98$!;ng={wXAQ0lU;#tt+ z`chSM`W|ebUyl~l7`({FE5EfdXCPa3UWH{y=v-ldsj_E?O;^|03H7d=xcd-FI}-If zReQ6-TAB;Z77dBt2|9Mg>DFhzVZJ30M;6WR%(5>STc84O-rusAbN5>BlFL`!q}n>2 zTmY_MSJY!8p`dq)`I_0!EW2#JD$V?1(u*eX>zA&k^x?Ho0aj@eo~E zm%jV?BCm&Cyg4Z6NY2)qW&KT|-#sh_wbl=^r42)+R;ypU#pdJj4sANamXtOPn#`8) z>KdYN4ir75LchDw#BY6CQK)#3XQ*5G7RIf=Di@z!PPoCjtxRDq@!oTCEd%OCV^Fy~7K*q+eI~uiD(BrhR zNv!c!vpowRrLhaX@4w}S{`_zawp**m0lzL{Ww?8XY3UtYRB6q&+!ODc_UF|#)lJLx zgD#IuVH2)Izmuo-@gf9+HZtX@rgDp@HB4S&@_o3P9i~Qcq%}Z%hWY5g-2tT8ZYY7r zw6e2LP<`RBiS8?g6PxfF8Oo}A&a%qwY@0DRy{Gfh-juD#X zcI9q7QeFszb*Fd>qD?{@4(C zSE$QYDx?Rb>21t|dBuX;1)BlOowpT#pm15Jcogk?XQ3Ail;`c%b@yYdG}6xPXBz4= z%(rIWjzWk%(!4H~(=9=BQ>6Z2=&8$$`t$kp)^UX|7dX|!#Zrq>!zANQ}J zpp(jzRK(pAyK~T5;gT=O#&LIw8GNverPwBvpS-Tx%d{`k%@d{K34^)=!Nr-~H{lt& z&R+;7dJo^x&NPYyEd+dzV~Stw%si#%L;z_ZT>ugn6Gl7^K)(K_qEWALg}AJn%oPT1 zUy*phSbm=auT(*C5{(@$dB@IxomXg=snW#eAp46c7mjpvXN9Q@$jZ(({uB& zo}!5}?$5ZaJb?@RB0e^vssaQ1HgysnmT+ZSZgOL%fY+psvpLO;l4^cd)g%!b56diz zqmI(dv!6=HP=B8T+HzM}KDD5o;@gJ~=G%vIt)O#(v1Q}m^|B_(9GXh2zo+kKN8zJh z_Gen@XL|QEkFL=aj`Y)78_wCQcZhOv9$f{bKb3R*gzJD@&XGAWO}!8C0~>tRd8;h2=o{XX%kz2LAr%jLyxG*}} zo@2QJ9{VPVbX$a^vE*@6d}hL0!1FVB#)~AsC57kFG@>3U{$BAL6OFp~q)nY#qt~@h z-dRbVpB+mINrMI!t?P}&>jY%qsv;IMWVaQ^Efj5SrdsR!zuO0iss0ofHet!MTyw7V z-Y3H_FuN{)cX2rPyRI18UPWz1Wv@BHDo3#yG?B{18ZDW2rq~$&(S*rTJmpW7k-z5y z_crlU>|z1N)q8h_nIcC!A}ZxPoV!JS59WHrI#Z#t+;kd3i0Gzd)=IdT-e)v#S3YWx z(I_H^4UtCenl-fOH$N~EX%6@{4ug?$uh_COyO z^tzZ{U}5U+U3jl#4jdw%m&eDoU8l&;lPHgT%y#<`3`e%`&7*)nn3j^YCWcK$YkWr zSBoS+9;v9RJS>GfWiXeou6^XkmW6jJR8lieEBsE^fbhRRucPL?S zSXHz6mJsB3+BU3Zh0$%vK*&p+S|?#dW*S=V0TmRttStFkSh>W5=Ei^D^FLeea;=a6 z1t~DzMjPjj5=yZl6IHHBjR57h7swphJ)y&;rdkObf~%4jr{UHp7Crl72K`_LSmAy1 zG&$r&ewi6BI5Y#$$~0M}ou@ahW&F_r*=t^+hId(cH*mfS99%n!suaIQ9SWus7ap4@ zeY#TZx2&m#xJN)1uq3M1>}#Xc=)q}!qB?hdfm)&Uf$9V1ODpm6TCD~&GE%a(qh;~U zzQ^M+gZas1B9O$0YL~$@0hHaR2b#+qE;_TWKt>No7E5$q^1y(Ra$BcAEKrMXrAi89DcIVQCxw`LkQm6p0( z3rb&V!BtgQP0H*lTg0$(EtV`^Tw({0-(Pt;qW+aX(c}5eG}l=wUj0Ug<_$i2hE059 zzt{}dzKJfIYREp>M8&*r<9C3iSE426>Nb5Xqk4E>L24xY8Yd&F?DH2h@I~7L-?{R1 zKr)_TWkv+52hRBk(qPE}hsRkvAKZcnMM!&Tg`>Fk6-OGPF)vFEl|lh0}%}nV3hQz2lR~b)AjrE z=o@QH%@8t9BN2Nt&I1#DF9vG|R?a3Rc)y5C2JM`0m$Q$b!;|#zK=pxH=UPC=3B|iC80;yA)sff#0 z+z7kQ2U@+>{h9uikbUNfD&OSB*I-p*fmpGk2Qhy)knRPFWnKJ^NwZO7rbFjv7|Z_5 z=1L@P_<gbYrG*3?@`nsGq=Ta1#i1ntxE>C+1RwkAy3)KH%h!EEsuKnQ9M6{@ku* z*kDB=e|;5JU2rukGRKApnpW>6BNlfCNp?Q=W&HO_)XCoZwXqUSgQ75Dp?*W1f)+<>&JKN_70Bk=5Q+ zP-W!H#^a4R2IjzogsmII_qr3hv`!z+-zOx?=X;TNAo$!(HtiZY@;nF0;5a1I^SkSYPyArOwIwN^1juwq~^>6&35JN zd$HHotu?Ln&pLECd7~#I)NP6k^H8}cIB6=cg*-RqAs{3he@G;+jZF=wh8Nm|iV^BC z_u@qyZHV4OL8qRQ<|0j5EQmE!9~YC8HtpDT*$geRPHYNv?2AOLSojjWHn!s*{!%l( zE))Fy9L5xUylvrYu19pqIShPUbZ21awa4T-&{NKSKloz*13d#FP4GG2f?Ly>8r-AL z%+|V7I^?^g>T?znX8c>^uxxq;*nnGhOzh?osN=oW1m^wwj=XpC75`nHA$w%Z;Bu*` z#n_fVZsbp|s#IJoxyOjNFZ+}9_F##8BX79*Evna6cQ^b7L{UBFlXsi~sPc#PQRlF> zjk%S)oHNmU4lkq2e8a1FcA{2&2{An9qM{#<~n)m zJk@;>sbWeRLSg{Ay-pikDU;1J)HQP_DXMjiz17(V-BM>aQAjF}#LCrF`d0kEbN5`o zl93LVqR%yd!NB5X;VMJ*R7C$XSe5E;d}jz2Ws;(odD-{j`my^dJEWAa|G-ut1&*_b z0?9zc1*ia~gZ_7l^H%5U)C4@M8`<5m9pD1yZF)NRQBejr{Eq%Z+*gZtz{hbZBoXt2 zTjPmu$He8n^UsBQREVt_uRKeBolsPek%UX+$Ph)zM7>O-CW(EG5e__}i%n(8y=wqx z|E2M};HCT%e_oQ0!w4SHGrX2&J=dwgzV;PF1(6DEZv(-divR0o>++>J`CsnXdp}sf zgsfVq^CdUJ-;W!vAsCi#_54GS?y~vUzoGOb!4d_CL|p2!|4LVM?+0)Z*ey5}|Emz& zzg)*JAbz%od_jHLk^0+vV37kFfE}8^-hW$~tQDx`#b(`HxWp~|eKoFq0-hvr`wu&b zfBRbnfEPb?qqvlg=3npoUslixICrl2T{YdmgwEpc-)e^#XxG8p9$j{v|Mnl)zt77L z(Ld6o|F(#i7)@Xn2$dvh+W+@M{O1P{IROj7n!_6R`?tTw6+x37E2_PqM% zXk4;ef7{i6j>aW6^fz1k=V<)Zo&5EJ`Y+@9$7}r6$^Fes{(1HN<25d`p}*SNKVIW9 z8~UrQ{S#3A*FE%C8~UrQJ^m-4`Zq(ce*&t1JF5RDp!z4E`d==df70-O*O&d1hX1?1 z?4LCJZwcFF_t5{xDpU~VAN`USah@!yabn(k@-vMn`6%iM`m82A8#&6L~rQTyCk}yZc}9eVK>T$8}3~x56u@X#Qvum*IW7uw>91q zmvd~uaJOx_8^?4st++Nc);Xe^7^6ta-bt!!NNcW&_aBwSJXx&sGI+aZu=`VRPG7U` zOstr6rZdRN&HNIx%4A)EC7Xniu-?~pY}Br_>L+t=s1~beH}VV*-~vN#_Wy^y_Y7-l zYuiN?MMXrH0wN%wR4D>drK?D9Ql$6ZBQsb_v>2w+Uxu~KlVSpFgP>km}5N8{oIAqyK-pO&f85FFK~y~ef*MM`HQHg+=Gko2~spY8>? zke1K(Dz+*4G~UezKTMWljjY9Pjv{f5?aS!EGH^RP`~w&zQXwMOB^G4Pyt+f0Jqlk@ z@K%#;exL!Io*^~`x}Obu9nLA}u@3#lX|q#Xo5J`KOz4x!Ml-I9DZ5s`UBF;UWK~{8sK- zwNFqY>fVBTM&HrX%Tz7H-abzvz-_oIX)Sx^)tUdk4N4!3)xW_0LKfKw51iqoJFS8q zO;XA$w#wI4Dklx{IrqwUCGp!Nk1u|etoyF!Wzg8XSvZ}3w~VY3nZPO(7N=ZA6a_L& z{wjIu4o%a4P-oX(23MR&;RybyhIn}$zR_;0wg;xJS#My3?Sz1%i>zlx(x6MxGSQO$ z2j^!`d2eR_umwiuw}P~^`O?Xb!W(w{wtdM$QI%GZNPk~^*C8?K{D`x}RA}?0d)rLe zLJze~s#yXc-l&_ip0-M=1&{2Ho6;%XedQizwbD}#J^l5Oo8T(5pePy}4vL(Fql;HN zPq__+&!xH&D`wlZtJkJ$tR9_6nzd`J#CS>8?ESU=!Mc>s^5|;^m)?S*-WS3xYJ1M91lO9v_+>XakDdnSH%sTU!aMK zTPfq5m4y1tklb3Tq~h6^)jny~uXQ?+D-~etRg7=e-~RM&^_YN@+CSXl!T#hQ%!v^z zn&t+o?}UaeNnr+8+PT6TEZHDDb2Fx(w%WQ+pIT@}rEaL)1Xy0FLp6{M!Zcu4@ zmEm6le4KcMTP4-F&T(NHb5@Y_Q5>Zs=s;LR)-%4X6r1rH&%g}dtpxz^C z$4Pl&UEipTnD-HVY-4c^qjaSbfF)42| zCQDPDc{)QF%zR{j*i;&R8pX;Gus0AbnsNPrnh#giZ#7nGq)|H6x6thCGVpTv`$t-! z0CF-s_Ssohj8mj!No&}zpQP(3TxcNw5%l{ZFB3BcYC7uHiMBzZWHdE)V*{{-LfV|i z%rI2p^n1S(ljc3zeUJr; z*$631FyYl`ow8M*DZHUk-D%}XjgZ<1aP~GaDGN05o~J}GPIdSbcDoWxxFbyh2`Zke z<7R;garcb5maFB$Z%64d1TtQ{cDs5@Ctugtb)nO&U7wW7-zork$eCcIt?S(U>)>h1 zS67{v=|hTl^jqbHp9S_)2@{@M)&-sfu)BEJ;TITfnuSd%8qjeM;=VKXGc3B~!1rs! zP7aAQ3bhp8=f<@9vkVv(_shQFJA@Sw;Dk@Q%dllOMKN5v_n4n zxg`!4xgUwcuE&#wC}stU~qsZ^S66J-4;AcqtyTmoMo=BIfj?K?gWp_zmOT5#5cWI<4;!1#1K0n9mMs7-X_ouV| zQ_p0YGYn8;5M*wS_|6=;Svf4PR(MW7BJxG$R0&XCcz#S9tW0fxcasF@>b2KgRs?2URLHi#lj@3~}U zYka$Gwk6;+s&Opr7EhOZcO$^xN3j{ckw(09NGB>uzvE^5>_pOgWKO1um#gnspJVc9%X(IArT7e|UbCchHJ znF|#P+-}=Gj{y_mS&`GtJ^8%GEZSoSh$y$G0_TW_ueXPcFF)Nd&R0=cC?@@Vrp*wY zN-P!np#ciA;WV?{+haRLGAWc|;8CJpMqFS`owSaDd6Y{6bIZ*@X?#DFn~UKB<0OosbWnOoq- zgd+#F%$L-Ken4mL^bZ(`;A95A&t^m(Yb`o02R;>a3u(t%7sGBQM;cE1?6i;G-&DZr z3+4pEC0|{mCYChK&MEm2cW?f<{KcSKl#^@(-BGSq!3jf=)|oTc(@(tsG}s-bKJ2^# z)fs((r_KF+?;U%*>EhvGRjprIJUpO5Ne6%KDXxX^BUNCK+tu6i)4rUhXA+-v>_r;k z>iI?B+i9R(cKj{)Qw#rmOEstOEZJbGlLIm^jvb}~1fsA1E)cy#dD(HgQH2AoF(M%~ zQ=FOZTi}?S)zB6@JoZD)GVl4vn~ALFMvIL&`z7(O#TwOc^sWJ~h@uI-Q@h*~M!DXV z4y7=Z1UhTv!(_@9t4uE+Tz|W!*|v~IWSXfjMG=F^c%U--75e*O10ipx+cW)=#eu8X zK2c0`62DYDy#(Q5ktL3z1-9(8=H>%R|5wA@ku)czMM=V@bGMd>i$rU1H;gdG5={yV zy-8O4A0Sp8fnswl2Om?rvc0QV7x>xTRa)&>JLnXCt2Z7c{{^a?dwg6?<`d=y%rjo_ z6V6ECpR+IRp5+7QyxpZCHIL}|9-Z+_N`%*u%5c7!f0vszeG(9Ah0%$%QL|*peT+1K z6x_gL;_*AMvrI5!qlWH^1u4NRAnyt=ZNOgFRqxVatQnZ`k(QQY_&N{`P!6?fW(AW0 z?uL=sO5yA_bkZM>%7VF{y}l0CF6_i-<3?Rg-ddSwl2lP#9IQtt@=b8@rAP zkf*IxuvsBBsV}LDYz{L_N5O<`O{I{YIs9e#isvi4nL=S3Oj>-vKb4~-i~BJb z>HWsZ&dQXgXa|&oXNPcLcAVedfHJ{QjUM5J8=wC2J`M6-Ja9Jknk$vFPo`j0E>#(>*tjQ68Fzly zxI6&6^Lash_-0pz6g;+RpVhatGcED7Yq&#pDf>Ho1-!Rx^tgLY`gI??G2R25iuD;v zG?IltCS&&~{rT?Suu|OrFK48zGieKtrm?(VQK{zr=m?hg=+^S;@i@H4DV^@Z> z8@CC!qtOp+TAi%v5t>b9QMxH6xykx=7d!bbm^YQXqW?Z_#rK@-(Zwr#DwR8KH<=JM z_BJnt_$BK1dgFP-@tq=-g0}Ty@LEdEv#yA8wPRU?aq% zb<{wAw1B#u4d1}@rnB3mx&(VH9)9WBT<9FAJqbq^b<;t$JUHpt0pIMwJ5`alg|td|oRr*!a@UGKk6z+%XswMes^`P#J$8>3qY!NoU8aT~8~ z7G9w}4sJ4en$8P$l+3Ng=1GzH<*B!~v3BEokLy%0fO0+=V-?ktvID2y{S=xy=AAy? z_EWio=^yrX8sci7H|cWT&>3btYgy;ca7yj>L@|$k3A`ax3#j~{U*4q$o*a#7y)|aK zuV3Sml7mmLAMPR-L*MW|X5I9Q;%3rsU5t=Aj$LuC*8{>IwbEJ;GTW_lj}7F0*77IH zojy|)((GFJ3hHH4`pL-#VZOE@MYr?4QT|6khW6j3h(_Kca9#jyO~SI^Nw1(X^ODBdR67B%zdLu-$HQAb7;A6j%t+|s|1r#-xf+|%d2~2 z*}AxoNss3YO>hDwhI^#YBHM+k5BCh`0g4ug*U26 z9qYh#g9ZRs-HLpA-JdhhQ;A6Og&Oij5T6KC0C|MH=V87JYvRsWN!r{MX| zpKa2$b}!$Cw(!NhJ!VslSw|e$cO94A4ESYC5iV?6Z9k&6c^r1ls!LeO3ix?BKfi3# zaNt!)BzvHbB2PG&T5=~8YLzmNfQImAxU~%pJ-Gd^s+lA8k4wQTK%+Yn`Ypi7oXY-a z!Rj}c=g~4b*mD{_Y#}%HHdoWQjpdq)qx71-ZgGsjUTn zZge7=TmMKvKjAiTQ|B>KU$w{AMH$luesXC)&x0Ym>|u-6uD)yveBXQXh3Dc8I70eX z?yp6~K6^g?#4FmGnDLw}2KT#>n$~UqkCi>%S)-|ca3<1c1=o(Z9*?e2dA_ReepE-weM31TH3G*#DG{w>!om>1 zJ52>Nh&1dH9C0lB z!=YtMk}xIq&_2-h{Hc_Qfn9rs2D%U8Ot_)Rv~-M3K6t^{{Vl5THr0E~d_e1G!|}ZM zFQFnKmiaddAX;VM{ER~N%Ynh1p4EzDc)iQuo$;yQ+8~GpUN+MmdN@`^+dbffXCo)oWXzh6}alD0}fs z$%4CItfVgEWt2|P-;We|QX+S#~CYc znK>vNHhk7()ION#1sAYjO29Jt7u6PdSeC)=b1zw7H_F$^%>T9W$V4ZEPFoeOQ)Cld4M`l8 zQtE~KKBY`M;_RCe`7`O~g-j`u5W}9EA1GADwbRonTqmc7jy}uP>13O=A9#+vJACA# zI0J+jkJEh?yv6!dgyZ7gn>@Xx-Fv;6i`=CLFe(;M5T6Pp5~ zJ2l5fQsC{u>p!x`+Z_D{kTXfYf^d4=g1(hjileKj(-#HEvma|uTTXx}i2aZC$8|nY z!sBzrp-}3mHWJ7@%ocQU-Z0A8$!hFR?dK)BpPQ9$Nlki-5b6VtE;JMvvOve@6d*`i z>3q|<=pW?Lpik>e$yi4KH)=s@A_4xV{4u(TyNi3`hK%2Rd%-gGb zx;>;R6I-WP!1TP~^UX=71%zb3uFvoD^FMI)SHtW-CGtLFv{1K24&D_kTj=cm_$)0K zaOg6BeW)1bi;~WJ0L3=aR(WC@%UvL_qf#+d-*mqN5vboc#X7oyEiqLaXHl_CjC$(U zlSv%5dF3Y7ug4_N$sIFdrPZ(#&ID|75ZvZF%O+nCOiOzTF}dR|WiZL%wEomX_c|Rp z`iC#pJNxE2n`RlDC%+)trA{GA{p;(;*kQPT!9301N>B!U4 zNq&C`jk-s3J3oPNWOAi|^`4vMd|^g-;juyep9_mRY4ZLUjmdVU!~ z?j|iWzIWoeT0RTKPErc_A*Q_7{8ak^fb5$03;HqZMyebR`eev3z3Er(-iIa=uZTJT zI^k6Ly}JdV$(`sW)a+Bt$@Y-QF0`7v&MYfrYCn^X4dwA+mo{*3UATSWWIjP~P1LSG ze*i4yM*0KcyPZa+oVUD@ABV*z0`{D}bp`K2W_l0X657hhJTBfhTu(A||Mm7p(M)9S zqJEtdF1~1px(3^QgGI5E2Y$#1F!ohclr=7s;PYw@oHPrYQ&i!L)DIUumIkWo#I$<+ zOL*^FW!xL=Mv8&-_zEG!zHi2)zXE%UaV9(;p_M(Ckq0sK3BSr)Z&p^*$oM(ZdyFKpvx9dAVZ26pV^?^M24H!mthFWCeL zNMEMpSXA|CMxS_`t>C!SKq@Q&YAbS2l?IQZn;LVKUpA3AxDrnC2o}R?%Xq({zeKmJ z>^^q5(5T<3Qqg2C*+EeO3@W-)Mck$rhTH*^Mjr=y0b3rGY(3)R4f1!-+vG6=xo2t= z9_2OdWroi6@GQtTx-YGM(xnV@&#tA$?)7EiK)5A-upQgY-y>#5LpeRD$4pJ-W;k1 zu@yl2`8mCuuR!@hmkPASR>DFScDHUyV)siQQ{YWK z`%mEUbzUfWXhYV6fsuijVBnDx%ULEqYM6|mz@E=?tAv0_i$+1WlNsB07?0LmWzSU1 z66mzN5Ouw2_@u-pW>}~@Aw_)qrPEBSh{)3UF!$F9#sMoET0?rWmk36VV5bTKc;q$RuVx;Zp0XnZU1%$YMMCvKrFME}FJ zadrBlDaFXmkPYcekw1JPkN?v8T6#(M`dJx}l@w*1EwBDpPX4{Y$B&;CzI>_i)bHj8 z^T))F;}uz;P`dHN8$ZR{ZdsLbzVhx{2#Q}!%ngI+g?MI(?c*AfR8thVEA0@e!t-4L z=ccOye1C}-_zZnqb3;?JH2%t62D+}RP0QV!oIRB+xGs!|AN#c$TddH@N`wiE4dV9N zR%fR?wa9^t_g0@bFo02qHXuOkhXIi3vp!cgLB#3?s*2%ep=f`epmbU;siVWtCa-Pa zjd0kOyXI#7A7{kx0^n8ky>jPiIA6e*qRMqFbcQY+WwA8=8MdES0$@!x)Iom!J@1X2 zg!wofwuTjVT9{N;%3^mOIeu%fkkEn}6*`l!cGOFXTchTjL7$ z@|JWRWMJm8-B@kSn>TMBhI*ei`h#(g^a(IY*WpmUwRw`!_2r_%&Y5e+3Hg}jeMndN zFQ!vfmou_o^61BLx+fLye@zy+&oA)k-iyGmt>ATcs-&MjePj51UeRu<{nGYh=G`S~XAWvUGMdbU&L#>R+Lj z`tU9ix*Ew85+Sdvn+UwnpMGg?5AwMs7eOB*;ft3C*1SNSnfe%;g7}9O6ie{~sR`6+ z6((!l$t=MCOWn{FgGkFZN*DD|^u$g&A#ZZ&K6@g~-!b6~n&ny(Y?)=(4VO`tU1oN? z!BqxHt|-=3t@>x5zcz+e9Rp9%N{bHF0k?>E_Z)E4-|Sk+PtgN9((DoR3g$^81RWsa zvzmW&lz!i!)@>rT_V*4*t^3pOgdp|c2F9%qs6lhwmox(4mQl|by7uw$7eYYy&V9gg z^~k{O*O#}m{-uhx=wj)gPcA=|lj~WV_FeT40t(Nxq0*R5Y7_J|eXoVRjoICnH^CqL zaQvx5s{FbZM6%SYuU$p|zTN(U1KS=d2zsDIOYGtrcE;M~gz51^|(nbMv zQ_3m_r#z5 zj>a(da&QK>3Kjp`v+h#n%i#B!j1fv&+Z%UwlMhS3R9eNAuNMos#~z~ijIV(j03|pd z_AkGj0Naag-PotHvP~V7)ZWVBGO~*9TCrbK-$iM%`ekdrE8&Wjsk9=ES^f3v27UVU zG;5B{m-Z@!@KrN*Sc?0Y)Y&X|XxBs2e|fMUU9ug?WRhc?|N4IX%)n>qi!vwg-@jKF zQ~=?oGN1}~IPOZz-tBUtph?yPo}+omQ5U0MMqOmO-=nkmF{jx@%@OaY!E> zF10tEjGG5@ylA5)PbE`j&=WMmoZZV`8hU;9W;*R~ff4I2<;e()_Aai9xtzEy(#}U;^ zxy-x?%iz`X#Gx#ZwrH4-C)s#9<(~&-w#?ZQL-+Nc>a^UVKHKluGb@Mab1#H~xw7?_ zC;QRv~$(6>g^PXDzZ7n{&cjv>Rw-iM?oK6UkpxYuo z!&-?XQQbO*Hz6xnBvd{qxNmx%=SqP7TB%1K!O$jsQS2E=6n&m*buc##T~Mqrmzli} z|3P{~tb^2F98(D|jo6JBbOr5Su zJ?KDa3kAEzxIf~`-%43#wVzq@8Qnk3EapJYIEm+QwSx50Kvt-w#Fmp1`a7zBJxlgV zJkq)77xJs5l*e-Ql>oChT*jN9{Yy=rrU+Rz$MTpUAig*MTyK%u#8+>Nn}^731&3BI zhQQ(eZ1cB;9H-{?`4DeOsFz;Yd2eO=C9<<)GLoGx-7%Vo}5o-KfJi+ZbIEcf92;JdA~MhJ9564)L=DX6#~0Czcl8%yKh)2hFD#@22IXc zwlK#e7G6x~L=4%tE`BeBjx)iF7O;HoomCr%C-AQEY&{3xm@1#0!p*@%vyDlx9sT(> zBh*YM9jYw5hpAnJ!r$HF1bMVnB?2%{EY4-r2#OuybN#vnydXXCY0)&i$?M&gNrE7@ zX1}_CyjS8A=M<**&-N{n{(LxnC|`T34AN`>bi3x)^hom-ZIuPw zUdGLI=AGL^Un&mhrF~9~#}*Uge0SI4%wAHh>EK8+6dvZ-=4VJ;sdw9F->S+ATK1ZuIw$G<#@u4sMk-k=&WjNb;5WdC?PcbG1NJxYy6 z*ly`+X#6-V(PQN}#(CPe=lJL%R|p8Nw4F->Q4sfyY7Nur1cs+A$A3K5*g_!x>8Ti> z55N6hAnO5Lf^^8$E)=YZrT6@+(qcdFA6HG}-suyN3^%M^D-mC&;LDPpzp9UZC3?9h z{<-UdGHsR;vFP_$L)F&K#bx2X`1=Ii(Gr4Ab?m4eKLW;zac=r6JpZwQ+fh3$U#sAm?AfwSan4Y>cq6*kbv`PD%t(4X|?s;P0<3=6(a|j z^=1iTQmSd9EGB*x-B;^Q9iK$J7RxDwFxkjyqZL)a=E)cu#$`Ff?RUl&Qb#+rHPzXN zwKNNLH#7>gDqb5xrv-1&2h?tlDa442C%CzLdi`vDyzkt1ZF9`zWIXUm)f+_;&CA&M zW#OKW!p3Y#d{(Z>>04P>X?I`k@BR#28S6o$HDNvKzZ%9MA!T=S6yvs$CV)C323?D` zVhG?$5r#y8pk$>)mwW2XiBm2eC9ZuVItudgKP^T%q|pIQveh?60JLTmFd!2eA6TR@ zf4PCMmK-gpbQ51+{bA&F9jc;#CnZ#Lz9&Ivd9=U^BP}gGKj2(3QoK!ti7nt)v1^cb z`^Zu6LpXt&=LP zPLApxS0=)161en4^ZhR_7e6|l>N-IBd;QQ#a`(v&aVka2ryPCvBcIyiM=bE?sl{&2_b7ZcaOeOrz;k^fWfPu_Qzo4`=$Dwe z82&a!w9}6F(qN9|uh)8Og}A`IQ{E>VIN4t$>?6W%A2*XAr)HYQC8fO9Bi)y$_=oa&W>g|7#RDao=1t~Y<2+&r zd_b4EDkF|p(=Pag^F(CK1qYl##?B`0BOtz!)V zS+1X`UDbk|Frs!G+kS*mi@<>OOL~>tSudMLwg$G$|G;qS9}+LXcG8OvmYdG2wfNM~ z&b3`!W*c8H)RFvA9p^Y%J>k4NP_^Fq>WMs@2dUw9z(_cHUW@VBN`ZZ;JVlOz<}AJBi!k6neklB zo(C3J`$2sm^P9@&*w`}eSWX+yu6V5D#$UJ!%kBM8QPXPkZwZ6=0-G5_i;{IsU_nUx z(xs5hZqEWyT;Sr&>P{M;#ltIUl1!F3!RO`CcR4vhk*4w zRI2e=5z+HfzodfK)ot23m1KPpcA9MU&m&WaU@`gb56zG5%AGg4%ulb7VbZG#i=vRmckgQA{b3jB*bw^Ue3sO<}R(_p0|MLKZ_ z->-xYsg~_a>?GG?ayTK48$Rs%)#b(e$84G;b}3F}cNxfvma?rz*wm7oF;c>D`R;>b zNt!i7W!m%4^1$#mQJHdp(ea^!QM78U#<$Hu zY}BZNeTr@tV2&uoSeH2RmpDsUZ%2L=av2LO_ewhA`^ddG0IL#rmhRE-5(I^BcB^Dg5`kxrR=u2S8MpH=HT2-4f8?uLckWi>%BQA$RzSD z{C3<8g3Cd3Vu(VM?KxR}^<0Ij(Y3x5L_~EAIGYoxj8^OYXsW429m5RtWP%uI&bY7w zTlECHo#eCU(j!5+iDacYxb)!HU0ik>6wfCmJdIXlvi@H_r=LCW> z816K-hgUDP|VG2m$c>PDUbJ%gsWui zexPGiMlMry2JGmd<;yzKKR8(iEDK*L(uTEV->90f(oZ(3^B{T|l+O9Q2(C*(V8MuX=~$FF*52La=+i5wt}pGt3%a8T_*ikvwXLggESU zs^Wyq*ctx3E$ZR8k_`GHor6S04b`2JyoCy~yflb|j3w7*gW7 z8l%BtA??=qV!pdeRH`2Kic)(U(Zr|dQK}#w&f?Zp1Z`l3QR~f z3e1TOthz*$api_IiOB*k#k5adCi4xpZephj#TdAKJG6yeM?v@DFy>^-d3XORc47N7 zrr;NOiLTqq{gD`P$AqgZ3tC>ue0HfN!L!>-;y%*yG&g*_SLJPa&{)Lob)zQFo_b<}}tW268%suIX2N*g!6kVP+N7U&K zFgA{-MU(R;i();JM4fW6MIa}Vb!xZ`JC>ve56BX5Kz*0o@mG21bSS}^hhvfp?@oh` zxHXYc&?j32(+_`Ma^Hj*uYLb>x(<=EceGgxk}^$;2)$n;;O zvCjyn7yLSvk-t!^xUCLX)+&*`k5q*p=Clus#ejIQ7mrMmgioC6Cabk0(}k@3nt6&v zkeh$sI?fw)L?E;g|NVqxQeQ^( zuMtUlgiF&FAGkKqEhu3G=Q4#G-IMp0m1++n{AaeLL(GtsRz;SVyO_re{o|ToLT(4D z`HGtD-|tVo96W5`XJO0?>!(K?Ejg1DHP)fddA3j1ICTHST)43MH00aRuML4)yT1mZ zQ=TLfO&^JRz1mHTMC%f2S>Mem1MX4WTS!OaE^f?V4e~-rceYw#@qx%$rVjnG4gwBA zdh0b|s~@gn*C>4>U1EwZ`2J^$L65E_gL4MwGUy$l0~OM=OXF>UB)%nx;qS5Ufw6L+ zqe0-=`%SMI{;24v6-`lJ@RlRXIK)coYxQr7eGQNHP*KPrgTl)2KZ9lkqW24732C>kw#oGXYv zvBhiFuCiE5vG+eOf0Q1JR-l7KS7c%Fi+R@hjn;fa_-V55i*#x-1t)Zcre|{CwhI;#STCJwS4Ej|KMJ5^o}t<$ zViR}dp8UF_HWpwL;~Fl?6|a5ImG%CK5iWgFqhK)S1`W+Jmt>wCj@MfB%J?*N>`MJn z?-=?;2s6QQ-`9DO^{y`(QN8?Q)Je<|$bT0SW@I%5mo@RUA&n>8Y5m%l59VSh2O+I) z&Q$u-i)Z<7qXoybD%$58IEi{63bXWkysK^pv++LtiuOg~NugG5a--C#7Pe+S8SB1u z2Ry&`%tMFkwt1*p5@IxwQ@`sUTje&}`eC_Ct?1VNZSPb4Vp4!azl|m|1&TJ{k`4~9 z?eF+VcUM>kHei%69(MJyNzG(hZPHaKDS$kzv4RAH>dCDYepZ%-Vek~dx2k!QIFGxO=*xHWK zz@bFX)_G`y%?~^XmV&cPHu7Z=D&*T#zt%(lLrQfN^Y^ypV zTsuGY7M$YbF-Hg2qSd4bj3^=f`{eiPGA^#X^g+?F=>lC_`qkZY|i{$H@U(>A{I7Lf!& zoby2M&@VSK@-J%PgH8C~Av#bO5sYk$&fO?0rp91%k=?C?mCmwO{n44=qgemrTR)fx~L%qqA9wiR7Dy zr0vs%awx1v%hUHW8iR+YkwL44o=yge7`e%BcDZO{zmp&qzQ8sy=bWsEWW6y1S;3tp zby{0SeyFoq@Z)2-)3T#);3PoiDAshvmj@Kf0^ zylicsUI_UID_Eu*82P4BXd<~8j%nFocn_U6i`mzEutstAZQNJ zXf1$SpE}!X%u#HIN*>@>K-{51g*l6cILMd%T{R>zVxmXIV74Lhgrz)_Y)wqnd?lo* zrtuUp(5Nsc-pb@$2B5>EA??~qb&!T6BO}uTxb7v{S}lhxgX_mWt`k<2PG?vlsBxDw zFzHyZmy*%el|O$gzzg6YNa~n_FnF!<+~~fj6v^A=BE-V4avF&Q8QIev0SfRem2UbXNgaT zxk6wU9ccrBGRK0y%4$W(w}nPy=!3lKxDs-YvuW)-oQTXVx2wN!#60B9kfJ_~*N_54 zaTJtgh!tLUwH^On#Kl=TR|37{CJQvbg?P(EjaOa>v^3s!j*j)XZv)afvL91|TrO|_ zQJh5v6KnXs6M&KE7kQo|BpC%g68-7}bbB$(3rD>xN9Hlkt7Nw%B+ARCba1N)w#{)x zH6;N9Dmb|Zf2@T&k*HH-ELJ|oWV{Iyaa+>8)0(&1R!&j*0FOU~sY|CCavmMOW~b-< zFF@>y+IvlfEq~+cvsq)g{n1^T*5jlUiw0&i0R?(REwH3mkW?ylxL4)A2I!cgWLZ}N z0zRQrOi;@YfZ&L{TpbAJeQ?b;-e72WHv!TyUZDhp$Mf3fe4L*J78vBkL#n*`0}nT- zyt9=YO^bc&q8z%lSXX2}EZGMYOy4wvGD~l;M#$EtHvEz5U z5k*1#wBA8a{4*9=t_e6t+Co$69OJ%U6L&=Jld^)P_}_T?^}K%XEp$9p-wQj@rK9)z zZZ;pb-c~#$^9FXz|8bN&qPh7lJUmJ|BqF)^o4V#Li#+y&>#RDtKN4&M1ivX~W@cu; z_{A74;TukI?bdvE(zKRRcXaTM=GqT#P=>+J_BV{UO6ncA%ym=3-^AflED}tN6|7Y= z7LDJ}U5Uy~^Q&35fd9&PbeC%SyRW#K#D2Yiy;laeXWm-~oD)<>HT@xE-rDxbkx@AJ znXe=T+Ov+PHs5TNrtDQ92!ADzcs1fY_`3-DT!UNKZP4D{UtSqc@jE>XE>m*-tOdk_ z##Xe5z3obd$4M6tyg1H&#JMsqZt7!yuWh27w1g;2&6RzC63wrPk~!T{=H%_m5R(Q- zkWX$${WX0S_5^mgHURpacNm?ncOLJG;cAXpDF!ztYn+CjG`g?-T+@PZA3GLOQnDNB zI@kZwhc@t&Q&Y3lOan!<4>paa(Mk{4`O%77bZFE=* z7?8~K>$ZPvc9G%4qmXefo)*6VlUVQnD$6-0Y;dq^S!s6TY>b)8tpPQa?f@Q=DY9Of z6BAG7R^l>sKiIZgBFqh~mCyL_{QUMndY`Mo4Dz&z^Z004pKS}ydZ zF7SDDdkw6IKo2I)2Z?$vJ5$-+TENyVj0+bGu~xVpI(|#ooYU+dUl=p;t!d`__3a^Y zB;_ zpYrC_>dwN?G1g}}*aW}zc>nD+T@xmKk#6ecUQoSQ1gkb-dVkn8!mdi>J*LK0BhHu7 z`_#jX+|{O=tbSA-H5cW0P6t;8o}6tm31pc7b(sGK=@2^5Ck?I2(t|N^o)q{qB z&YyWXU}%M~$E(Bd@c&%GU}3aIx{dDaN&F7>sXRhUr{L7&!uqfF!Dbm>vF!#)+@ZYK zfPL4WYv@uo+bd8ncU5%SYIZGtx;+l>50EYO`!@fW6tjp<9Xs9)DKU-}HVNoT<5c@_ zF^qfR*T8lSbO0ndQ)&sU4;0%mot7>v%$ltGM-lK|vJAZC(E-^Sf&bRotcdtPj?<2a zF#JLlU<_D43r%w|hxqXu`mdgFPx1mw42VZ&NV0GgZLbI=yN2%Zv2PmJ$s9k($aH8@ z!-NQ%X7{ul92hK3tSH#j6qpaof}m#(5s%H-;^Spn+I5%L0$?&rIUNF3T)hp83w9Ty z>sATrXq=0_w2#RMoKJy_cFwRcG#dSPNotefFn_m1d|nyl(WngYU1%`>ki%%D3_rVG z;hR-dja+~L`cA5ZO?p*B317C^9h=LRxDr*6$+y;oqb~rn2Y&6j>-+O#HGB@c;=+d6 z{$TGum@-(BizojCcnV(`?*v}EM;BSJ~*kKN9k9u{tP(Rx716!e2Kz! zp!T!{>jMXL{9S3e6~|VEbIg+osu_W`T7V@zQ@w*){ZRE~D;vOCgM^B;Qyz*(yos&2x*{@RsN6+ zAwFO_^y%@@v}pqORm-xGAfIFoSye&Kz#}7n4@%)HS!j-72$kqid(_|4w~AJQOm&`$vHg3=F1NvP^ZjH_ewZ zvzUw55+eGjGH#@7lUiAr+~&6G-ebt@^X>nJP6%s0@`bNwkHnyoPkfpSzoK?~{|rNj zj6Yxf>04Bmy6d)Wb^#xS-IqsV*k6>K+FFXq{rz1@+mLl+9j@Gnf!&KE*+8IOEvMb9bRVx3XYVsJ#4y|h(g1%fK@fP>DWl^PGPnsah@lMayMvKY+W8x*G+Z>} zCnU6muHC)_(pyVHO7Q{ALpHrGMPm<-o<5Bgj7wOn8?jEcYKeHCmQ_3Uqj!6$%IP^X z8tbtrP*dh*_x54Yw%@QE=dvwj#;b&FZFnCgSF|e2YeCVV>e7=^U0Oy*=6 zx~Wh?0})~5%Y(E@G~9y@vtnrww5k+5sT?_6z<<^``*eO^fpch~>qNbPhu0)We9uj%E4VSULd zWqY*0PP5rS^T&P`(`>@(*4IbSz~@D%J3J9|OW1Jl|3piG)}y+WeQUxKUSLk)FD?rR zF2IawwWgyeF04DTe-NYZBrnAY5%2~ynQYDUW@2U=Rn6y}hgd0Q<{=ThjhMohh#x~;g?ssBl$+g-OuYxvbE45IWv(}FXeyS&sYg$2MRVo>>%yA}j1b8+(wHxA zNpm_$jW}_|=<SD^rTgR9e52{{ zjhpt=b!4>41%eitVrsmvD-UdhoYKq=XFPnY+xEAyScelJq3}mu zrA@pnEZs`Uqs?XPaUbHl@TW>tp6o0b(&Cl2`F*Tm=x5dIBGWtyA1$mi{wN7AWe2}J z_LuU^uV&ia=p0~jUHlo~dk=8Nvg^ApQgmiWDTLHQ(UK`E?}S9oq`6|c*hJjEUe#N8 z6N(TlkBy~s$nf5ptIrRSbxXZ;OXP<5pB$e59eMw}OzT|eT=hO0)a)u|ky%2P6jrim zuwTARefPeCaEV_=56qG|8&smA*4KFr4xj4S@+yRy-4^v5*Lpk&3DyfGyZP3-%lvZm zTwJ;1gyW)|9Jecx>|+sIH8vXV?liGe9@!2T%*%%4mQnLqI{!aeH2wiFo&Hrr`BBlW zB`N*udp|#CdDd6Qu&H&aYxdpaSk6xs_2yF`jH-uzX?KxgB^IC~otl9$LxN8S2&d7gf2~=UwZOV`doGv%7Y7E2 zQSku1AMP$GO7qJh&<)tiErwVI-4gB;cnfqAwVBFik zA;A8_9qf3BWe<++%-a9ML-_CCoi75{p6N0~^`Dv7KVAo54=Mxp;Me-}RKj2W$!)-E zx~ion_Ul$~=2-UNL+IPeUu9ItTz`jU4|Xa3&jx>gUYi96mOZ%Q<0ACSlk2QDxc2*^ zOIQ_xznQN8{lB1aCNNRVjnw;21B_1}VeOLu$DdjN|2}w7CYEl?#*%irnQ?lq{CQ2+ zqsp;#+xIJ-6aV~%oci(qlP^qEV$0HS!QB22QW8?vJ8G#CtSsv3Bt{-L03U-72shp! zNfxaHoNjE;^_t6^0K2$+Ahi4MCvf^c|Lfj9yOn8{{jOt%gv?*!C4{-T_=CM36Nf}G zAuUsLZ8#JctOuT|qKyB35PyG^KhAc&_rf(va;E6$!F6XjdAhd%cuqn~#>C6=Xg2l& z{nFJ(>=!Mg?I%9n^!57qBGk&WR&gomkBC?a#SGt3Z@C3G;v@RSKvh8+2gHdT(F&r@ z3_>z)ivza@10Owl6yrwnFB96W1hsiJL#k7t8!n$EVG3YlLxLL+^! zD8zO19~9Yi8ny1+p)BL8=AuOfkHlF0k7UZr;HePNN-<+uQj3e$ z6Ahk`-r*HIW@ctF+!+^$=DIA4t_Hutf8{px?SX|w?8N$qRb-${whFL^u1MO&+oTYP zi>R1bU_D^e%vWI^h&8Hs5t2XaIHZa^8?LdhK`ZH_0@`JkdoJCaqq&Z0`mBxZ-`tyB z=5#A8mhRQG1*l7M)%DPbK~w;gjN>B0r=4ycDB1$~%2IXiP&$-|Rc|_b;PF8%DCXR! zTN&j<99Gqv{z@Lo7HrGudcatdc6yTjRUYdM+2V&TrPM>f1y`BQDx}iJkfR zH4h5YlyQ2>b+XTY@V$Gq!m?XvqQ;>Caz?*M>q1?{<{TF9tnu+l)>&t4Hz7&bDa&Cv zTaLf(`=-(vScZu69ROP900qNxhbk1%AH}!tCpbOBhO(dPaEW@Ha!NfG?tu#lVjNRdjL{J=6ol2 zlPuw2Z3%Rt;s7jn!aag|G@;;7YQEOU=i&IyAOiHQh`~a(Cw&(4We6X}&k~hpKxq3tT4+x0O_l+IqtzFvk z6P%{1JKh&AhGh)(DxiV|g8FX%yk@n?v2F}*s#`98;9ZA=$edSA5s0OetXCN0N7igR zEMVSC*nT#xTdSdNQeEBBEKuwIMj?+alTR*8R9Yq2Xns{b*ql46u{u>#1X9o1-&$H3 zJst`;eN+gu12~4mMk4RFud3}YEkHzNyW-esA_W*B6yMXXUHp%QEa>8O zp0#Q{KFj5B5#QH;kar*`prrK^c_)DVHjALCz;s+Ewya-^1o-6KV%z%lApTPk$CC#a z!E$98A{tiHmhAwm`J!)q<|0NVEmiT}@I;e;=vwyQGIwqTbKf|V^9`2;RMdRo4W1c= zizJV`vMq^^ZyUDI4coOSymI5{1)WBv@@zS-%!eDEap}17MbQrs7h9Vvw*NE7yvdOn z7ltn-Iqon5Pz^&BmRlmicOvEFyS{&+?|L_A6^dV`x8*@4G^^(+ZpF-ch7pyZ=+>|; zwcX&le!7}tXow>wFd2kW(&*Tq3CSi|@DMTxhxsRt`>j4r68?M#a$J zp%FNi*Wzvqjp=x&0Mzla;7!`y=K#Yb@}vJ!L=m9!bQ@u*JPcj&(a4?wP3hzP%7X=p zPFv$tvMv(_&!m(Gfb}r7)@LQ(thzTHn$ZFD`EMB1uJLdmUdu}!E)HOL%e6$e{VDnkSfJ`XLA*Wm&;Q{oQDhx$g=0fBu5%w{Z4XRuO12j zuzlBtQume6@7r_sPnJhm^{Nl;4(3w?zgje?QtQ0;D%2`^c)PS=of@E<0=)TAE2|q> zZS(Fr@?8m$Q4MyZ0(rxj$caSI5SrvfZj z^R4UT4?1jFA6atHYK#jZ%F?@&_kvZ?Q+X$4ZAC;gzY-RJhVNDQ>uo+; zWau57#;wbBXF0{L;O+693_kaKR&NScvIrZvSoNw4k{$t_2XZjI1D?}0{Yr6Mg6+m~ zjp#l2u3x%u89JU5W>1k|NOGgTSv*1)z+PtDQ@}uX(O)QvXBSMyx`24kTxMNUa4!mH zr>`RD(6nHf5on*_Ql91X4tG@U4 z3f>~BxHLXSr8TdOQLm%LSW$TJ4)ml16dB}EaN%fwxUp2~_+enPBQNXR^O|h!1LZD7 zczt!Q=~HA`Q!{-SIqM@tF*0dyRd{zVqG@ch)`@IkF9zdZUd5vE^ki=OfzZ?27)`N`+^KXXxns{SG(H7`M7Y$ZN^hsfQ(D*o{Vhc}vq z{Nq*9NyG(`1IB1YGM%!~`+oqI9Vo6m(3$U#fFmY&vYtjGG8PeA7YYh5Eh6s$jx6+V zD56VpGABBXp2!=%9}Q~k`52L($FIo*9UVOPApnfmx7e)_8&ZMx+PP|!Od457hWKJ& z8&OqRRn1X0F{RC|ZwIZ67M(+pN5&~w7VyB0egy!>*la-5+E>>`<7=mTAF_HcPVah@ zJGFGs=u`6hy!6}bTsRY%quXEV{7C?TxhYgu2)Wm==iKbP05ir_iIm)ZN7Ls##sYxh zDUW7YR4$A=Ns&e+V(F-C+Cxi2{t^L49~(t>$p$m;X4*`STyT6M2ZMgB_Q=flI7o3d z<~K`o@sKJv|AVbGd{$Iwe~lloTEgi>$5G{I`1R=E0+o&BgVr`&W0UG-htgI6UJZw8 z-Z{hQ?(KbaQ*UET{6~!|xuJGmMR=fh74kzuh&rI`4q!a;DkHYM&}+3FFU|Vvny(iC z_))%E%F_Ecd+%;g6r62rsx8t9lgt2|Bwkc7%S^TUYIPxoaP{QwKuDePYW<4uF4z%k zr|+OzeUQaIbUspuB{Y3NOmxmyJU>YrSae$k#m=@cWUHCjVtj-5SZBiW5B_wE5di9X z(pb1q?DuT@XD3Jui0m3vzk*Q2pv4EQpw8*cW3@uN3x(Z~`NQO7EcGkuNK?0NxMztJ zZkKm5Jy0qu+}s?wy|+J35!!im>(I#jlbcVP6-4UGTIheU3>08ETL>R@9seDpXXo@F zlZ2b!aCb=UT}#>NttXWLoYh_!Z9Q>v(+MG=xSV~jtZ8!xTHfAZiclHkrV!Q4d>S1v z{obL0OO1c&c#+YM_tU89sl@L(sAU@I18EADgj7?rHj9ggm zu0~TmsMt?18PsqfWItNZb00n(e4(4)0qEoKi*#U;cg3<=YC86*-ZVPcZfSBcfsA)? z92&BeNC^adnjL4c3NUtHE4?P_GNLm+AeX0{;Nm3Dbd_i5HLrmx-u1Mq$ZMh%;AEgv zRN1}VzHL)BZhLF}+07n%{y1*{ACXO!t~UW3l6;bZS0ZQdFwfDKw%UE1cH&<=yTGpF z$LgQq!`yepIxjvuA169QCzU`pSXC}gv@-u|!-a)QuJdl0=w{Go9)lNlWW)M0#E114 zf9$SEcL<&I`I!$o*R72$d+6myU0$+!c7u9kkTuI3dS9*fo^QKoprl7hV%2Uf68<3~ zgyatfl_^@Kj~EF}N;e25Na&D0Ia<-TIr$T5W~B>|2*!LjfPgRgSDP}kj~w{~(a^#_ zc+k$1C4$Y?f>F~dK24)4bA|8qD!X3y>(+lokZjQVZ@=OYj3>sOb?JQ9uoQB|ID z+=ne;xZ86Ydqob@S@h%xMz_!;_U%9E@VA&*Xxs{<61*w z;bol`E%KqjC6O{#qhrL$yz*dnu=|)A;zO9zb$NFAYHO-J$$Zp8R~+|S5E_3w<{Eg@ zm{m8PF6Srv`f&1{&+tyR*}HyKxtmtWl6J4r`hIhxg#h|4uh(q$7LAreLiLkW3IM*u zot=_t+jyX+sjTHA*2pHzP*E?VGeX(NVYJOVZFxl*J&3G48{RndbGJOI2G2O@sJ?K!o=fqZ zUg0C}rCo)Uo7JlCqji!ThTg|H!5zZuX^%di3SBlH!)|NNl28E)y;Mrh0ng zW38kY_X-HU9&^u|4Pl$9wYD$uapWU?ZgcUrtuN*>HIQ>33_xz=1|}MBw%!qbIs+NZ zT|;lLn}s~B@4n<3r=0ORgvDpuX9zRX%!TEou9P(&>r-v_Xl4h>KovvLRH82L4R++A z&0;s6#E~{cFSJj$-OF`Am#*_lII_)J+c;P)mce~@yDFcDOunY8PeQ4d$+VuO#V^Iu z$0Ex9q>l;PuO^02&jRP9aNj9?|GVsiBExi*NZ;izI_87RVr{Cy*9d7vhCkIJ1xHQ4 zP8R%`QoXN;R1;Ce#buW=x@MKOb#tKHjw#D3gXU3a*l-Q?SE{3<-}dU|fKr_DjIldA zJ6v>FPXEki;~$L;T@%7Zq7YG_V-H$);xQ~_?$#+5Gnljdbf?%({LaZRjMul=Y002os5fZBj~m&jPlx# zV+ya&(mrmSx?0?b~VaxX2-we^~oQ#xWfMV?8Ti)_w~a>Yg4rX{2f%Z z$C^IqC~kWLepdv|IHW(-JZ(&_vw}RMpW$I#xZBGoCHN(8_ripm&|79!d(!i$Su>4BFMG3aQ&bzw#M=6CX9`P!=b#*a zAV9Rep_63x9BG6?2D;-pT-xy0@9^_4)|olpmuGLWW}-~{ntb{7v9k$FVAdIna=lShNXahnbG>~A6QXrfuiHm5|1Wj@~m7N?wb9QVPZuta|sWWGV+=A0huw1v- z8vo+DZPLkVEL5}gt$BWJ>J#`ZJ zk74NF@!FRCG0V>;-DxIQN~ehl1rOAy*9T_+IjA=$@c*-1$09jb3PTp#SVHq`35 z$4puMAX(7KJb^{{@+L^_l@c7wp+?2VHt%|AMw~rLwd<m+i+~e6clkyP;;}}7^Nd+Hi1ia5TuyOBL;{cuE?owGu z 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 diff --git a/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts b/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts index 7bc965f0aa5c8..27e3aa1df61f5 100644 --- a/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts +++ b/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts @@ -981,6 +981,11 @@ export class AlertsClient { ...this.apiKeyAsAlertAttributes(createdAPIKey, username), updatedBy: username, updatedAt: new Date().toISOString(), + executionStatus: { + status: 'pending', + lastExecutionDate: new Date().toISOString(), + error: null, + }, }); try { await this.unsecuredSavedObjectsClient.update('alert', id, updateAttributes, { version }); diff --git a/x-pack/plugins/alerting/server/alerts_client/tests/enable.test.ts b/x-pack/plugins/alerting/server/alerts_client/tests/enable.test.ts index 7b0d6d7b1f10b..8c0a09c74457e 100644 --- a/x-pack/plugins/alerting/server/alerts_client/tests/enable.test.ts +++ b/x-pack/plugins/alerting/server/alerts_client/tests/enable.test.ts @@ -248,6 +248,11 @@ describe('enable()', () => { }, }, ], + executionStatus: { + status: 'pending', + lastExecutionDate: '2019-02-12T21:01:22.479Z', + error: null, + }, }, { version: '123', @@ -352,6 +357,11 @@ describe('enable()', () => { }, }, ], + executionStatus: { + status: 'pending', + lastExecutionDate: '2019-02-12T21:01:22.479Z', + error: null, + }, }, { version: '123', diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.test.tsx index a41708f052dc8..1bbffc850ee18 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.test.tsx @@ -8,6 +8,8 @@ import * as React from 'react'; import uuid from 'uuid'; import { shallow } from 'enzyme'; +import { mountWithIntl, nextTick } from '@kbn/test/jest'; +import { act } from '@testing-library/react'; import { AlertDetails } from './alert_details'; import { Alert, ActionType, AlertTypeModel, AlertType } from '../../../../types'; import { EuiTitle, EuiBadge, EuiFlexItem, EuiSwitch, EuiButtonEmpty, EuiText } from '@elastic/eui'; @@ -463,6 +465,74 @@ describe('disable button', () => { handler!({} as React.FormEvent); expect(enableAlert).toHaveBeenCalledTimes(1); }); + + it('should reset error banner dismissal after re-enabling the alert', async () => { + const alert = mockAlert({ + enabled: true, + executionStatus: { + status: 'error', + lastExecutionDate: new Date('2020-08-20T19:23:38Z'), + error: { + reason: AlertExecutionStatusErrorReasons.Execute, + message: 'Fail', + }, + }, + }); + + const alertType: AlertType = { + id: '.noop', + name: 'No Op', + actionGroups: [{ id: 'default', name: 'Default' }], + recoveryActionGroup, + actionVariables: { context: [], state: [], params: [] }, + defaultActionGroupId: 'default', + producer: ALERTS_FEATURE_ID, + authorizedConsumers, + minimumLicenseRequired: 'basic', + enabledInLicense: true, + }; + + const disableAlert = jest.fn(); + const enableAlert = jest.fn(); + const wrapper = mountWithIntl( + + ); + + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + // Dismiss the error banner + await act(async () => { + wrapper.find('[data-test-subj="dismiss-execution-error"]').first().simulate('click'); + await nextTick(); + }); + + // Disable the alert + await act(async () => { + wrapper.find('[data-test-subj="disableSwitch"] .euiSwitch__button').first().simulate('click'); + await nextTick(); + }); + expect(disableAlert).toHaveBeenCalled(); + + // Enable the alert + await act(async () => { + wrapper.find('[data-test-subj="disableSwitch"] .euiSwitch__button').first().simulate('click'); + await nextTick(); + }); + expect(enableAlert).toHaveBeenCalled(); + + // Ensure error banner is back + expect(wrapper.find('[data-test-subj="dismiss-execution-error"]').length).toBeGreaterThan(0); + }); }); describe('mute button', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.tsx index 0796f09b13460..d85e792f4a9bb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.tsx @@ -236,6 +236,8 @@ export const AlertDetails: React.FunctionComponent = ({ if (isEnabled) { setIsEnabled(false); await disableAlert(alert); + // Reset dismiss if previously clicked + setDissmissAlertErrors(false); } else { setIsEnabled(true); await enableAlert(alert); @@ -277,7 +279,7 @@ export const AlertDetails: React.FunctionComponent = ({ - {!dissmissAlertErrors && alert.executionStatus.status === 'error' ? ( + {alert.enabled && !dissmissAlertErrors && alert.executionStatus.status === 'error' ? ( = ({ - setDissmissAlertErrors(true)}> + setDissmissAlertErrors(true)} + > { }; expect(alertInstanceToListItem(fakeNow.getTime(), alertType, 'id', instance)).toEqual({ instance: 'id', - status: { label: 'OK', healthColor: 'subdued' }, + status: { label: 'Recovered', healthColor: 'subdued' }, start: undefined, duration: 0, sortPriority: 1, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_instances.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_instances.tsx index d2919194125f8..5ba4c466f6fad 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_instances.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_instances.tsx @@ -226,7 +226,7 @@ const ACTIVE_LABEL = i18n.translate( const INACTIVE_LABEL = i18n.translate( 'xpack.triggersActionsUI.sections.alertDetails.alertInstancesList.status.inactive', - { defaultMessage: 'OK' } + { defaultMessage: 'Recovered' } ); function getActionGroupName(alertType: AlertType, actionGroupId?: string): string | undefined { diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts index b38b605bc1b67..34e08ad257f84 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts @@ -655,7 +655,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { ).to.eql([ { instance: 'eu/east', - status: 'OK', + status: 'Recovered', start: '', duration: '', }, From 43009779b9a7ba484a78350848f20f740d192b23 Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Thu, 13 May 2021 12:11:16 -0700 Subject: [PATCH 11/27] Remove outdated comment about schema validation not working (it does work now). (#100055) --- src/plugins/console/server/config.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/console/server/config.ts b/src/plugins/console/server/config.ts index 90839a18e1210..4e42e3c21d2ad 100644 --- a/src/plugins/console/server/config.ts +++ b/src/plugins/console/server/config.ts @@ -15,8 +15,6 @@ export const config = schema.object( enabled: schema.boolean({ defaultValue: true }), proxyFilter: schema.arrayOf(schema.string(), { defaultValue: ['.*'] }), ssl: schema.object({ verify: schema.boolean({ defaultValue: false }) }, {}), - - // This does not actually work, track this issue: https://github.com/elastic/kibana/issues/55576 proxyConfig: schema.arrayOf( schema.object({ match: schema.object({ From 609fed35f24cdb7aef813352630b20150880268e Mon Sep 17 00:00:00 2001 From: Constance Date: Thu, 13 May 2021 12:11:30 -0700 Subject: [PATCH 12/27] [Enterprise Search] Fix SchemaFieldTypeSelect axe issues (#100035) * Update SchemaFieldTypeSelect to allow passing any aria props - We'll specifically be using aria-labelledby in this PR, but theoretically any aria prop should be fine. * Update AS & WS schema tables to use the type table column heading as an aria-labelledby ID --- .../components/schema/components/schema_table.tsx | 5 ++++- .../shared/schema/field_type_select/index.test.tsx | 6 ++++++ .../applications/shared/schema/field_type_select/index.tsx | 2 ++ .../components/schema/schema_fields_table.tsx | 3 ++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx index d9187bb65adf0..8fff01b268b12 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx @@ -35,7 +35,9 @@ export const SchemaTable: React.FC = () => { {FIELD_NAME} - {FIELD_TYPE} + + {FIELD_TYPE} + @@ -74,6 +76,7 @@ export const SchemaTable: React.FC = () => { fieldName={fieldName} fieldType={fieldType} updateExistingFieldType={updateSchemaFieldType} + aria-labelledby="schemaFieldType" /> diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.test.tsx index df28719839011..6d51a06273712 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.test.tsx @@ -39,4 +39,10 @@ describe('SchemaFieldTypeSelect', () => { expect(wrapper.find(EuiSelect).prop('disabled')).toEqual(true); }); + + it('passes arbitrary props', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiSelect).prop('aria-label')).toEqual('Test label'); + }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.tsx index 8dfd87f4015d6..fb6c0f2047b12 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.tsx @@ -23,10 +23,12 @@ export const SchemaFieldTypeSelect: React.FC = ({ fieldType, updateExistingFieldType, disabled, + ...rest }) => { const fieldTypeOptions = Object.values(SchemaType).map((type) => ({ value: type, text: type })); return ( { {SCHEMA_ERRORS_TABLE_FIELD_NAME_HEADER} - + {SCHEMA_ERRORS_TABLE_DATA_TYPE_HEADER} @@ -58,6 +58,7 @@ export const SchemaFieldsTable: React.FC = () => { fieldName={fieldName} fieldType={filteredSchemaFields[fieldName]} updateExistingFieldType={updateExistingFieldType} + aria-labelledby="schemaDataType" /> From 442d7fa68036c74450b1fb0f044b2256fdbbb474 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 13 May 2021 20:39:15 +0100 Subject: [PATCH 13/27] chore(NA): moving @kbn/docs-utils into bazel (#100051) --- .../monorepo-packages.asciidoc | 1 + package.json | 2 +- packages/BUILD.bazel | 1 + packages/kbn-docs-utils/BUILD.bazel | 88 +++++++++++++++++++ packages/kbn-docs-utils/package.json | 4 - packages/kbn-docs-utils/tsconfig.json | 3 +- yarn.lock | 2 +- 7 files changed, 94 insertions(+), 7 deletions(-) create mode 100644 packages/kbn-docs-utils/BUILD.bazel diff --git a/docs/developer/getting-started/monorepo-packages.asciidoc b/docs/developer/getting-started/monorepo-packages.asciidoc index 1e7a95b83dd67..7265cd415949c 100644 --- a/docs/developer/getting-started/monorepo-packages.asciidoc +++ b/docs/developer/getting-started/monorepo-packages.asciidoc @@ -74,6 +74,7 @@ yarn kbn watch-bazel - @kbn/config-schema - @kbn/crypto - @kbn/dev-utils +- @kbn/docs-utils - @kbn/es - @kbn/eslint-import-resolver-kibana - @kbn/eslint-plugin-eslint diff --git a/package.json b/package.json index d46617f2a6f2a..c04face1233ae 100644 --- a/package.json +++ b/package.json @@ -448,7 +448,7 @@ "@kbn/babel-preset": "link:bazel-bin/packages/kbn-babel-preset/npm_module", "@kbn/cli-dev-mode": "link:packages/kbn-cli-dev-mode", "@kbn/dev-utils": "link:bazel-bin/packages/kbn-dev-utils/npm_module", - "@kbn/docs-utils": "link:packages/kbn-docs-utils", + "@kbn/docs-utils": "link:bazel-bin/packages/kbn-docs-utils/npm_module", "@kbn/es": "link:bazel-bin/packages/kbn-es/npm_module", "@kbn/es-archiver": "link:packages/kbn-es-archiver", "@kbn/eslint-import-resolver-kibana": "link:bazel-bin/packages/kbn-eslint-import-resolver-kibana/npm_module", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 2ae04e02cffd2..c3d08ad49daea 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -16,6 +16,7 @@ filegroup( "//packages/kbn-config-schema:build", "//packages/kbn-crypto:build", "//packages/kbn-dev-utils:build", + "//packages/kbn-docs-utils:build", "//packages/kbn-es:build", "//packages/kbn-eslint-import-resolver-kibana:build", "//packages/kbn-eslint-plugin-eslint:build", diff --git a/packages/kbn-docs-utils/BUILD.bazel b/packages/kbn-docs-utils/BUILD.bazel new file mode 100644 index 0000000000000..e72d83851f5d2 --- /dev/null +++ b/packages/kbn-docs-utils/BUILD.bazel @@ -0,0 +1,88 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-docs-utils" +PKG_REQUIRE_NAME = "@kbn/docs-utils" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/__fixtures__/**", + "**/snapshots/**", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +SRC_DEPS = [ + "//packages/kbn-config", + "//packages/kbn-dev-utils", + "//packages/kbn-utils", + "@npm//dedent", + "@npm//ts-morph", +] + +TYPES_DEPS = [ + "@npm//@types/dedent", + "@npm//@types/jest", + "@npm//@types/node", +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-docs-utils/package.json b/packages/kbn-docs-utils/package.json index 27d38d2d8ed4f..b2a52b2d1f78e 100644 --- a/packages/kbn-docs-utils/package.json +++ b/packages/kbn-docs-utils/package.json @@ -7,9 +7,5 @@ "types": "target/index.d.ts", "kibana": { "devOnly": true - }, - "scripts": { - "kbn:bootstrap": "../../node_modules/.bin/tsc", - "kbn:watch": "../../node_modules/.bin/tsc --watch" } } \ No newline at end of file diff --git a/packages/kbn-docs-utils/tsconfig.json b/packages/kbn-docs-utils/tsconfig.json index 6f4a6fa2af8a5..9868c8b3d2bb4 100644 --- a/packages/kbn-docs-utils/tsconfig.json +++ b/packages/kbn-docs-utils/tsconfig.json @@ -1,11 +1,12 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": false, + "incremental": true, "outDir": "./target", "target": "ES2019", "declaration": true, "declarationMap": true, + "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-docs-utils/src", "types": [ diff --git a/yarn.lock b/yarn.lock index 69d5c9553a3b6..b8b4e54d25dcc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2634,7 +2634,7 @@ version "0.0.0" uid "" -"@kbn/docs-utils@link:packages/kbn-docs-utils": +"@kbn/docs-utils@link:bazel-bin/packages/kbn-docs-utils/npm_module": version "0.0.0" uid "" From 0c2af2f929de7cf047a141978d86ab195283e057 Mon Sep 17 00:00:00 2001 From: Justin Kambic Date: Thu, 13 May 2021 16:03:57 -0400 Subject: [PATCH 14/27] [Uptime] Increase debounce and add immediate submit to `useQueryBar` (#99675) * Increase debounce and add immediate submit to `useQueryBar`. * Reduce debounce to 800ms. --- .../overview/query_bar/query_bar.tsx | 5 +- .../overview/query_bar/use_query_bar.ts | 68 ++++++++++++++----- 2 files changed, 54 insertions(+), 19 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/overview/query_bar/query_bar.tsx b/x-pack/plugins/uptime/public/components/overview/query_bar/query_bar.tsx index 0543e5868bb9e..9436f420f7740 100644 --- a/x-pack/plugins/uptime/public/components/overview/query_bar/query_bar.tsx +++ b/x-pack/plugins/uptime/public/components/overview/query_bar/query_bar.tsx @@ -34,11 +34,11 @@ export const isValidKuery = (query: string) => { export const QueryBar = () => { const { search: urlValue } = useGetUrlParams(); - const { query, setQuery } = useQueryBar(); + const { query, setQuery, submitImmediately } = useQueryBar(); const { index_pattern: indexPattern } = useIndexPattern(); - const [inputVal, setInputVal] = useState(query.query); + const [inputVal, setInputVal] = useState(query.query as string); const isInValid = () => { if (query.language === SyntaxType.text) { @@ -66,6 +66,7 @@ export const QueryBar = () => { }} onSubmit={(queryN) => { if (queryN) setQuery({ query: queryN.query as string, language: queryN.language }); + submitImmediately(); }} query={{ ...query, query: inputVal }} aria-label={i18n.translate('xpack.uptime.filterBar.ariaLabel', { diff --git a/x-pack/plugins/uptime/public/components/overview/query_bar/use_query_bar.ts b/x-pack/plugins/uptime/public/components/overview/query_bar/use_query_bar.ts index 0d8a2ee17994a..164231bfdd89b 100644 --- a/x-pack/plugins/uptime/public/components/overview/query_bar/use_query_bar.ts +++ b/x-pack/plugins/uptime/public/components/overview/query_bar/use_query_bar.ts @@ -5,9 +5,10 @@ * 2.0. */ -import { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useState } from 'react'; import { useDebounce } from 'react-use'; import { useDispatch } from 'react-redux'; +import { Query } from 'src/plugins/data/common'; import { useGetUrlParams, useUpdateKueryString, useUrlParams } from '../../../hooks'; import { setEsKueryString } from '../../../state/actions'; import { useIndexPattern } from './use_index_pattern'; @@ -20,7 +21,26 @@ export enum SyntaxType { } const SYNTAX_STORAGE = 'uptime:queryBarSyntax'; -export const useQueryBar = () => { +const DEFAULT_QUERY_UPDATE_DEBOUNCE_INTERVAL = 800; + +interface UseQueryBarUtils { + // The Query object used by the search bar + query: Query; + // Update the Query object + setQuery: React.Dispatch>; + /** + * By default the search bar uses a debounce to delay submitting input; + * this function will cancel the debounce and submit immediately. + */ + submitImmediately: () => void; +} + +/** + * Provides state management and automatic dispatching of a Query object. + * + * @returns {UseQueryBarUtils} + */ +export const useQueryBar = (): UseQueryBarUtils => { const dispatch = useDispatch(); const { absoluteDateRangeStart, absoluteDateRangeEnd, ...params } = useGetUrlParams(); @@ -30,7 +50,7 @@ export const useQueryBar = () => { services: { storage }, } = useKibana(); - const [query, setQuery] = useState( + const [query, setQuery] = useState( queryParam ? { query: queryParam, @@ -59,23 +79,37 @@ export const useQueryBar = () => { [dispatch] ); - useEffect(() => { - setEsKueryFilters(esFilters ?? ''); - }, [esFilters, setEsKueryFilters]); + const setEs = useCallback(() => setEsKueryFilters(esFilters ?? ''), [ + esFilters, + setEsKueryFilters, + ]); + const [, cancelEsKueryUpdate] = useDebounce(setEs, DEFAULT_QUERY_UPDATE_DEBOUNCE_INTERVAL, [ + esFilters, + setEsKueryFilters, + ]); - useDebounce( - () => { - if (query.language === SyntaxType.text && queryParam !== query.query) { - updateUrlParams({ query: query.query as string }); - } - if (query.language === SyntaxType.kuery) { - updateUrlParams({ query: '' }); - } - }, - 350, + const handleQueryUpdate = useCallback(() => { + if (query.language === SyntaxType.text && queryParam !== query.query) { + updateUrlParams({ query: query.query as string }); + } + if (query.language === SyntaxType.kuery) { + updateUrlParams({ query: '' }); + } + }, [query.language, query.query, queryParam, updateUrlParams]); + + const [, cancelQueryUpdate] = useDebounce( + handleQueryUpdate, + DEFAULT_QUERY_UPDATE_DEBOUNCE_INTERVAL, [query] ); + const submitImmediately = useCallback(() => { + cancelQueryUpdate(); + cancelEsKueryUpdate(); + handleQueryUpdate(); + setEs(); + }, [cancelEsKueryUpdate, cancelQueryUpdate, handleQueryUpdate, setEs]); + useDebounce( () => { if (query.language === SyntaxType.kuery && !error && esFilters) { @@ -92,5 +126,5 @@ export const useQueryBar = () => { [esFilters, error] ); - return { query, setQuery }; + return { query, setQuery, submitImmediately }; }; From f492feee6ef8747fcfaa3541c843e2204bfe4874 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 13 May 2021 14:05:02 -0600 Subject: [PATCH 15/27] [Security Solutions][Lists] Trims down list plugin size by breaking out the exception builder into chunks by using react lazy loading (#99989) ## Summary Trims down the list plugin size by breaking out the exception builder into a dedicated chunk by using React Suspense and React lazy loading. Before this PR the page load bundle size was `260503`, after the page load bundle size will be `194132`: You can calculate this through: ```ts node ./scripts/build_kibana_platform_plugins --dist --focus lists cat ./x-pack/plugins/lists/target/public/metrics.json ``` Before ```json [ { "group": "@kbn/optimizer bundle module count", "id": "lists", "value": 227 }, { "group": "page load bundle size", "id": "lists", "value": 260503, <--- Very large load bundle size "limit": 280504, "limitConfigPath": "packages/kbn-optimizer/limits.yml" }, { "group": "async chunks size", "id": "lists", "value": 0 }, { "group": "async chunk count", "id": "lists", "value": 0 }, { "group": "miscellaneous assets size", "id": "lists", "value": 0 } ] ``` After: ```json [ { "group": "@kbn/optimizer bundle module count", "id": "lists", "value": 227 }, { "group": "page load bundle size", "id": "lists", "value": 194132, <--- Not as large bundle size "limit": 280504, "limitConfigPath": "packages/kbn-optimizer/limits.yml" }, { "group": "async chunks size", "id": "lists", "value": 70000 }, { "group": "async chunk count", "id": "lists", "value": 1 }, { "group": "miscellaneous assets size", "id": "lists", "value": 0 } ] ``` ### Checklist Delete any items that are not applicable to this PR. - [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 --- .../builder/exception_items_renderer.tsx | 3 ++ .../exceptions/components/builder/index.tsx | 32 ++++++++++++-- .../lists/public/exceptions/transforms.ts | 2 +- .../add_exception_modal/index.test.tsx | 7 +-- .../exceptions/add_exception_modal/index.tsx | 43 +++++++++---------- .../edit_exception_modal/index.test.tsx | 11 ++--- .../exceptions/edit_exception_modal/index.tsx | 41 +++++++++--------- .../view/components/form/index.test.tsx | 6 ++- .../view/components/form/index.tsx | 39 ++++++++--------- 9 files changed, 108 insertions(+), 76 deletions(-) diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx index a698feb93722c..646803f2e6794 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx @@ -444,3 +444,6 @@ export const ExceptionBuilderComponent = ({ }; ExceptionBuilderComponent.displayName = 'ExceptionBuilder'; + +// eslint-disable-next-line import/no-default-export +export default ExceptionBuilderComponent; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/index.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/index.tsx index 833034aa0a542..551889e4a821d 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/index.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/index.tsx @@ -5,6 +5,32 @@ * 2.0. */ -export { BuilderEntryItem } from './entry_renderer'; -export { BuilderExceptionListItemComponent } from './exception_item_renderer'; -export { ExceptionBuilderComponent, OnChangeProps } from './exception_items_renderer'; +import { EuiLoadingSpinner } from '@elastic/eui'; +import React, { Suspense, lazy } from 'react'; + +// Note: Only use import type/export type here to avoid pulling anything non-lazy into the main plugin and increasing the plugin size +import type { ExceptionBuilderProps } from './exception_items_renderer'; +export type { OnChangeProps } from './exception_items_renderer'; + +interface ExtraProps { + dataTestSubj: string; + idAria: string; +} + +/** + * This lazy load allows the exception builder to pull everything out into a plugin chunk. + * You want to be careful of not directly importing/exporting things from exception_items_renderer + * unless you use a import type, and/or a export type to ensure full type erasure + */ +const ExceptionBuilderComponentLazy = lazy(() => import('./exception_items_renderer')); +export const getExceptionBuilderComponentLazy = ( + props: ExceptionBuilderProps & ExtraProps +): JSX.Element => ( + }> + + +); diff --git a/x-pack/plugins/lists/public/exceptions/transforms.ts b/x-pack/plugins/lists/public/exceptions/transforms.ts index 468dfc00ca852..50ce1b6e33a4b 100644 --- a/x-pack/plugins/lists/public/exceptions/transforms.ts +++ b/x-pack/plugins/lists/public/exceptions/transforms.ts @@ -8,7 +8,7 @@ import { flow } from 'fp-ts/lib/function'; import { addIdToItem, removeIdFromItem } from '@kbn/securitysolution-utils'; -import { +import type { CreateExceptionListItemSchema, EntriesArray, Entry, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx index bf15994f60cbc..d659f557ee751 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx @@ -58,13 +58,14 @@ describe('When the add exception modal is opened', () => { ReturnType >; let ExceptionBuilderComponent: jest.SpyInstance< - ReturnType + ReturnType >; beforeEach(() => { + const emptyComp = ; defaultEndpointItems = jest.spyOn(helpers, 'defaultEndpointExceptionItems'); ExceptionBuilderComponent = jest - .spyOn(ExceptionBuilder, 'ExceptionBuilderComponent') - .mockReturnValue(<>); + .spyOn(ExceptionBuilder, 'getExceptionBuilderComponentLazy') + .mockReturnValue(emptyComp); (useAsync as jest.Mock).mockImplementation(() => ({ start: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx index 96335f8d85d90..120c4ad8efc1b 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx @@ -469,28 +469,27 @@ export const AddExceptionModal = memo(function AddExceptionModal({ )} - + {ExceptionBuilder.getExceptionBuilderComponentLazy({ + allowLargeValueLists: + !isEqlRule(maybeRule?.type) && !isThresholdRule(maybeRule?.type), + httpService: http, + autocompleteService: data.autocomplete, + exceptionListItems: initialExceptionItems, + listType: exceptionListType, + osTypes: osTypesSelection, + listId: ruleExceptionList.list_id, + listNamespaceType: ruleExceptionList.namespace_type, + listTypeSpecificIndexPatternFilter: filterIndexPatterns, + ruleName, + indexPatterns, + isOrDisabled: isExceptionBuilderFormDisabled, + isAndDisabled: isExceptionBuilderFormDisabled, + isNestedDisabled: isExceptionBuilderFormDisabled, + dataTestSubj: 'alert-exception-builder', + idAria: 'alert-exception-builder', + onChange: handleBuilderOnChange, + isDisabled: isExceptionBuilderFormDisabled, + })} diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx index 7ee0e6888a42e..64ef1dead7e75 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx @@ -49,11 +49,11 @@ jest.mock('../../../../detections/containers/detection_engine/alerts/use_signal_ jest.mock('../../../../detections/containers/detection_engine/rules/use_rule_async'); jest.mock('../../../../shared_imports', () => { const originalModule = jest.requireActual('../../../../shared_imports'); - + const emptyComp = ; return { ...originalModule, ExceptionBuilder: { - ExceptionBuilderComponent: () => ({} as JSX.Element), + getExceptionBuilderComponentLazy: () => emptyComp, }, }; }); @@ -62,13 +62,14 @@ describe('When the edit exception modal is opened', () => { const ruleName = 'test rule'; let ExceptionBuilderComponent: jest.SpyInstance< - ReturnType + ReturnType >; beforeEach(() => { + const emptyComp = ; ExceptionBuilderComponent = jest - .spyOn(ExceptionBuilder, 'ExceptionBuilderComponent') - .mockReturnValue(<>); + .spyOn(ExceptionBuilder, 'getExceptionBuilderComponentLazy') + .mockReturnValue(emptyComp); (useSignalIndex as jest.Mock).mockReturnValue({ loading: false, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx index 8bf5ea9f8a80f..5fb52994fb0f5 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx @@ -342,27 +342,26 @@ export const EditExceptionModal = memo(function EditExceptionModal({ )} - + {ExceptionBuilder.getExceptionBuilderComponentLazy({ + allowLargeValueLists: + !isEqlRule(maybeRule?.type) && !isThresholdRule(maybeRule?.type), + httpService: http, + autocompleteService: data.autocomplete, + exceptionListItems: [exceptionItem], + listType: exceptionListType, + listId: exceptionItem.list_id, + listNamespaceType: exceptionItem.namespace_type, + listTypeSpecificIndexPatternFilter: filterIndexPatterns, + ruleName, + isOrDisabled: true, + isAndDisabled: false, + osTypes: exceptionItem.os_types, + isNestedDisabled: false, + dataTestSubj: 'edit-exception-modal-builder', + idAria: 'edit-exception-modal-builder', + onChange: handleBuilderOnChange, + indexPatterns, + })} diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx index 940882d079a12..0867d0542e4c1 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx @@ -17,6 +17,7 @@ import { createGlobalNoMiddlewareStore, ecsEventMock } from '../../../test_utils import { getMockTheme } from '../../../../../../common/lib/kibana/kibana_react.mock'; import { NAME_ERROR, NAME_PLACEHOLDER } from './translations'; import { useCurrentUser, useKibana } from '../../../../../../common/lib/kibana'; +import { ExceptionBuilder } from '../../../../../../shared_imports'; jest.mock('../../../../../../common/lib/kibana'); jest.mock('../../../../../../common/containers/source'); @@ -53,6 +54,9 @@ describe('Event filter form', () => { }; beforeEach(() => { + const emptyComp = ; + jest.spyOn(ExceptionBuilder, 'getExceptionBuilderComponentLazy').mockReturnValue(emptyComp); + (useFetchIndex as jest.Mock).mockImplementation(() => [ false, { @@ -77,7 +81,7 @@ describe('Event filter form', () => { it('should renders correctly with data', () => { component = renderComponentWithdata(); - expect(component.getByText(ecsEventMock().process!.executable![0])).not.toBeNull(); + expect(component.getByTestId('alert-exception-builder')).not.toBeNull(); expect(component.getByText(NAME_ERROR)).not.toBeNull(); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.tsx index 744fb9930321d..d74baab0d2bbc 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.tsx @@ -115,26 +115,25 @@ export const EventFiltersForm: React.FC = memo( ); const exceptionBuilderComponentMemo = useMemo( - () => ( - - ), + () => + ExceptionBuilder.getExceptionBuilderComponentLazy({ + allowLargeValueLists: true, + httpService: http, + autocompleteService: data.autocomplete, + exceptionListItems: [exception as ExceptionListItemSchema], + listType: EVENT_FILTER_LIST_TYPE, + listId: ENDPOINT_EVENT_FILTERS_LIST_ID, + listNamespaceType: 'agnostic', + ruleName: RULE_NAME, + indexPatterns, + isOrDisabled: true, // TODO: pending to be validated + isAndDisabled: false, + isNestedDisabled: false, + dataTestSubj: 'alert-exception-builder', + idAria: 'alert-exception-builder', + onChange: handleOnBuilderChange, + listTypeSpecificIndexPatternFilter: filterIndexPatterns, + }), [data, handleOnBuilderChange, http, indexPatterns, exception] ); From 0bc97c4a58c8589a2297070166096d71fa5f0229 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Thu, 13 May 2021 16:15:59 -0400 Subject: [PATCH 16/27] [Uptime] [Synthetics Integration] ensure that proxy url is not overwritten (#99944) --- .../synthetics_policy_create_extension.tsx | 7 ++- ...s_policy_create_extension_wrapper.test.tsx | 58 +++++++++++++++++-- .../synthetics_policy_edit_extension.tsx | 7 ++- ...ics_policy_edit_extension_wrapper.test.tsx | 54 ++++++++++++++++- 4 files changed, 116 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_create_extension.tsx b/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_create_extension.tsx index 51585e227b56e..1306308f8ba4e 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_create_extension.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_create_extension.tsx @@ -9,7 +9,7 @@ import React, { memo, useContext, useEffect } from 'react'; import useDebounce from 'react-use/lib/useDebounce'; import { PackagePolicyCreateExtensionComponentProps } from '../../../../fleet/public'; import { useTrackPageview } from '../../../../observability/public'; -import { Config, ConfigKeys } from './types'; +import { Config, ConfigKeys, DataStream } from './types'; import { SimpleFieldsContext, HTTPAdvancedFieldsContext, @@ -63,6 +63,11 @@ export const SyntheticsPolicyCreateExtension = memo', () => { }); }); - it('handles updating each field', async () => { + it('handles updating fields', async () => { const { getByLabelText } = render(); const url = getByLabelText('URL') as HTMLInputElement; const proxyUrl = getByLabelText('Proxy URL') as HTMLInputElement; @@ -336,6 +336,54 @@ describe('', () => { expect(apmServiceName.value).toEqual('APM Service'); expect(maxRedirects.value).toEqual('2'); expect(timeout.value).toEqual('3'); + + await waitFor(() => { + expect(onChange).toBeCalledWith({ + isValid: true, + updatedPolicy: { + ...defaultNewPolicy, + inputs: [ + { + ...defaultNewPolicy.inputs[0], + streams: [ + { + ...defaultNewPolicy.inputs[0].streams[0], + vars: { + ...defaultNewPolicy.inputs[0].streams[0].vars, + urls: { + value: 'http://elastic.co', + type: 'text', + }, + proxy_url: { + value: 'http://proxy.co', + type: 'text', + }, + schedule: { + value: '"@every 1m"', + type: 'text', + }, + 'service.name': { + value: 'APM Service', + type: 'text', + }, + max_redirects: { + value: '2', + type: 'integer', + }, + timeout: { + value: '3s', + type: 'text', + }, + }, + }, + ], + }, + defaultNewPolicy.inputs[1], + defaultNewPolicy.inputs[2], + ], + }, + }); + }); }); it('handles calling onChange', async () => { diff --git a/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_edit_extension.tsx b/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_edit_extension.tsx index 386d99add87b6..e29a5c6a363ed 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_edit_extension.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_edit_extension.tsx @@ -15,7 +15,7 @@ import { TCPAdvancedFieldsContext, TLSFieldsContext, } from './contexts'; -import { Config, ConfigKeys } from './types'; +import { Config, ConfigKeys, DataStream } from './types'; import { CustomFields } from './custom_fields'; import { useUpdatePolicy } from './use_update_policy'; import { validate } from './validation'; @@ -48,6 +48,11 @@ export const SyntheticsPolicyEditExtension = memo', () => { expect(queryByLabelText('Monitor type')).not.toBeInTheDocument(); }); - it('handles updating each field', async () => { + it('handles updating fields', async () => { const { getByLabelText } = render(); const url = getByLabelText('URL') as HTMLInputElement; const proxyUrl = getByLabelText('Proxy URL') as HTMLInputElement; @@ -364,6 +364,54 @@ describe('', () => { expect(apmServiceName.value).toEqual('APM Service'); expect(maxRedirects.value).toEqual('2'); expect(timeout.value).toEqual('3'); + + await waitFor(() => { + expect(onChange).toBeCalledWith({ + isValid: true, + updatedPolicy: { + ...defaultNewPolicy, + inputs: [ + { + ...defaultNewPolicy.inputs[0], + streams: [ + { + ...defaultNewPolicy.inputs[0].streams[0], + vars: { + ...defaultNewPolicy.inputs[0].streams[0].vars, + urls: { + value: 'http://elastic.co', + type: 'text', + }, + proxy_url: { + value: 'http://proxy.co', + type: 'text', + }, + schedule: { + value: '"@every 1m"', + type: 'text', + }, + 'service.name': { + value: 'APM Service', + type: 'text', + }, + max_redirects: { + value: '2', + type: 'integer', + }, + timeout: { + value: '3s', + type: 'text', + }, + }, + }, + ], + }, + defaultNewPolicy.inputs[1], + defaultNewPolicy.inputs[2], + ], + }, + }); + }); }); it('handles calling onChange', async () => { From 61bc47f8e920139f4ac206ee33ccf7c009529669 Mon Sep 17 00:00:00 2001 From: Poff Poffenberger Date: Thu, 13 May 2021 15:24:26 -0500 Subject: [PATCH 17/27] Re-enable formerly flaky shareable test (#98826) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../plugins/canvas/shareable_runtime/components/app.test.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx b/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx index b68642d184542..acf71cad3f3ba 100644 --- a/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx +++ b/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx @@ -59,8 +59,7 @@ const getWrapper: (name?: WorkpadNames) => ReactWrapper = (name = 'hello') => { return mount(); }; -// FLAKY: https://github.com/elastic/kibana/issues/95899 -describe.skip('', () => { +describe('', () => { test('App renders properly', () => { expect(getWrapper().html()).toMatchSnapshot(); }); From ead8a4668afa1653c86190880f1c7ea00b88f34e Mon Sep 17 00:00:00 2001 From: Poff Poffenberger Date: Thu, 13 May 2021 15:24:40 -0500 Subject: [PATCH 18/27] [Canvas] Remove unused legacy autocomplete component (#99215) * Remove unused autocomplete component * Remove reference to autocomplete CSS Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../components/autocomplete/autocomplete.js | 264 ------------------ .../components/autocomplete/autocomplete.scss | 52 ---- .../public/components/autocomplete/index.js | 8 - x-pack/plugins/canvas/public/style/index.scss | 1 - 4 files changed, 325 deletions(-) delete mode 100644 x-pack/plugins/canvas/public/components/autocomplete/autocomplete.js delete mode 100644 x-pack/plugins/canvas/public/components/autocomplete/autocomplete.scss delete mode 100644 x-pack/plugins/canvas/public/components/autocomplete/index.js diff --git a/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.js b/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.js deleted file mode 100644 index 302e45ade8d43..0000000000000 --- a/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.js +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/*disabling eslint because of these jsx-a11y errors(https://www.npmjs.com/package/eslint-plugin-jsx-a11y): -181:7 error Elements with the 'combobox' interactive role must be focusable jsx-a11y/interactive-supports-focus - 187:9 error Elements with the ARIA role "combobox" must have the following attributes defined: aria-controls,aria-expanded jsx-a11y/role-has-required-aria-props - 209:23 error Elements with the 'option' interactive role must be focusable jsx-a11y/interactive-supports-focus - 218:25 error Elements with the ARIA role "option" must have the following attributes defined: aria-selected jsx-a11y/role-has-required-aria-props -*/ -/* eslint-disable jsx-a11y/interactive-supports-focus */ -/* eslint-disable jsx-a11y/role-has-required-aria-props */ - -import React from 'react'; -import PropTypes from 'prop-types'; -import { EuiFlexGroup, EuiFlexItem, EuiPanel, keys } from '@elastic/eui'; - -/** - * An autocomplete component. Currently this is only used for the expression editor but in theory - * it could be extended to any autocomplete-related component. It expects these props: - * - * header: The header node - * items: The list of items for autocompletion - * onSelect: The function to invoke when an item is selected (passing in the item) - * children: Any child nodes, which should include the text input itself - * reference: A function that is passed the selected item which generates a reference node - */ -export class Autocomplete extends React.Component { - static propTypes = { - header: PropTypes.node, - items: PropTypes.array, - onSelect: PropTypes.func, - children: PropTypes.node, - reference: PropTypes.func, - }; - - constructor() { - super(); - this.state = { - isOpen: false, - isFocused: false, - isMousedOver: false, - selectedIndex: -1, - }; - - // These are used for automatically scrolling items into view when selected - this.containerRef = null; - this.itemRefs = []; - } - - componentDidUpdate(prevProps, prevState) { - if ( - this.props.items && - prevProps.items !== this.props.items && - this.props.items.length === 1 && - this.state.selectedIndex !== 0 - ) { - this.selectFirst(); - } - - if (prevState.selectedIndex !== this.state.selectedIndex) { - this.scrollIntoView(); - } - } - - selectFirst() { - this.setState({ selectedIndex: 0 }); - } - - isVisible() { - const { isOpen, isFocused, isMousedOver } = this.state; - const { items, reference } = this.props; - - // We have to check isMousedOver because the blur event fires before the click event, which - // means if we didn't keep track of isMousedOver, we wouldn't even get the click event - const visible = isOpen && (isFocused || isMousedOver); - const hasItems = items && items.length; - const hasReference = reference(this.getSelectedItem()); - - return visible && (hasItems || hasReference); - } - - getSelectedItem() { - return this.props.items && this.props.items[this.state.selectedIndex]; - } - - selectPrevious() { - const { items } = this.props; - const { selectedIndex } = this.state; - if (selectedIndex > 0) { - this.setState({ selectedIndex: selectedIndex - 1 }); - } else { - this.setState({ selectedIndex: items.length - 1 }); - } - } - - selectNext() { - const { items } = this.props; - const { selectedIndex } = this.state; - if (selectedIndex >= 0 && selectedIndex < items.length - 1) { - this.setState({ selectedIndex: selectedIndex + 1 }); - } else { - this.setState({ selectedIndex: 0 }); - } - } - - scrollIntoView() { - const { - containerRef, - itemRefs, - state: { selectedIndex }, - } = this; - const itemRef = itemRefs[selectedIndex]; - if (!containerRef || !itemRef) { - return; - } - containerRef.scrollTop = Math.max( - Math.min(containerRef.scrollTop, itemRef.offsetTop), - itemRef.offsetTop + itemRef.offsetHeight - containerRef.offsetHeight - ); - } - - onSubmit = () => { - const { selectedIndex } = this.state; - const { items, onSelect } = this.props; - onSelect(items[selectedIndex]); - this.setState({ selectedIndex: -1 }); - }; - - /** - * Handle key down events for the menu, including selecting the previous and next items, making - * the item selection, closing the menu, etc. - */ - onKeyDown = (e) => { - const { BACKSPACE, ESCAPE, TAB, ENTER, ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT } = keys; - const { key } = e; - const { items } = this.props; - const { isOpen, selectedIndex } = this.state; - - if ([ESCAPE, ARROW_LEFT, ARROW_RIGHT].includes(key)) { - this.setState({ isOpen: false }); - } - - if ([TAB, ENTER].includes(key) && isOpen && selectedIndex >= 0) { - e.preventDefault(); - this.onSubmit(); - } else if (key === ARROW_UP && items.length > 0 && isOpen) { - e.preventDefault(); - this.selectPrevious(); - } else if (key === ARROW_DOWN && items.length > 0 && isOpen) { - e.preventDefault(); - this.selectNext(); - } else if (key === BACKSPACE) { - this.setState({ isOpen: true }); - } else if (!['Shift', 'Control', 'Alt', 'Meta'].includes(key)) { - this.setState({ selectedIndex: -1 }); - } - }; - - /** - * On key press (character keys), show the menu. We don't want to willy nilly show the menu - * whenever ANY key down event happens (like arrow keys) cuz that would be just downright - * annoying. - */ - onKeyPress = () => { - this.setState({ isOpen: true }); - }; - - onFocus = () => { - this.setState({ - isFocused: true, - }); - }; - - onBlur = () => { - this.setState({ - isFocused: false, - }); - }; - - onMouseDown = () => { - this.setState({ - isOpen: false, - }); - }; - - onMouseEnter = () => { - this.setState({ - isMousedOver: true, - }); - }; - - onMouseLeave = () => { - this.setState({ isMousedOver: false }); - }; - - render() { - const { header, items, reference } = this.props; - return ( -
    - {this.isVisible() ? ( - - - {items && items.length ? ( - -
    (this.containerRef = ref)} - role="listbox" - > - {header} - {items.map((item, i) => ( -
    (this.itemRefs[i] = ref)} - className={ - 'autocompleteItem' + - (this.state.selectedIndex === i ? ' autocompleteItem--isActive' : '') - } - onMouseEnter={() => this.setState({ selectedIndex: i })} - onClick={this.onSubmit} - role="option" - > - {item.text} -
    - ))} -
    -
    - ) : ( - '' - )} - -
    {reference(this.getSelectedItem())}
    -
    -
    -
    - ) : ( - '' - )} -
    - {this.props.children} -
    -
    - ); - } -} diff --git a/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.scss b/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.scss deleted file mode 100644 index 7f723b5549acf..0000000000000 --- a/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.scss +++ /dev/null @@ -1,52 +0,0 @@ -.autocomplete { - position: relative; -} - -.autocompletePopup { - position: absolute; - top: -262px; - height: 260px; - width: 100%; -} - -.autocompleteItems { - border-right: $euiBorderThin; -} - -.autocompleteItems, -.autocompleteReference { - @include euiScrollBar; - height: 258px; - overflow: auto; -} - -.autocompleteReference { - padding: $euiSizeS $euiSizeM; - background-color: tintOrShade($euiColorLightestShade, 65%, 20%); -} - -.autocompleteItem { - padding: $euiSizeS $euiSizeM; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - font-family: $euiCodeFontFamily; - font-weight: $euiFontWeightRegular; -} - -.autocompleteItem--isActive { - color: $euiColorPrimary; - background-color: $euiFocusBackgroundColor; -} - -.autocompleteType { - padding: $euiSizeS; -} - -.autocompleteTable .euiTable { - background-color: transparent; -} - -.autocompleteDescList .euiDescriptionList__description { - margin-right: $euiSizeS; -} \ No newline at end of file diff --git a/x-pack/plugins/canvas/public/components/autocomplete/index.js b/x-pack/plugins/canvas/public/components/autocomplete/index.js deleted file mode 100644 index a5572c26d04f5..0000000000000 --- a/x-pack/plugins/canvas/public/components/autocomplete/index.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { Autocomplete } from './autocomplete'; diff --git a/x-pack/plugins/canvas/public/style/index.scss b/x-pack/plugins/canvas/public/style/index.scss index 41d12db3a1853..6c883b832737f 100644 --- a/x-pack/plugins/canvas/public/style/index.scss +++ b/x-pack/plugins/canvas/public/style/index.scss @@ -13,7 +13,6 @@ @import '../components/arg_form/arg_form'; @import '../components/asset_manager/asset_manager'; @import '../components/asset_picker/asset_picker'; -@import '../components/autocomplete/autocomplete'; @import '../components/clipboard/clipboard'; @import '../components/color_dot/color_dot'; @import '../components/color_palette/color_palette'; From 6f95145d28a5ab8dccaaf655f8af2cbce7ce337b Mon Sep 17 00:00:00 2001 From: Tre Date: Thu, 13 May 2021 14:32:58 -0600 Subject: [PATCH 19/27] [QA] Switch tests to use importExport - visualize (#98063) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../apps/visualize/_add_to_dashboard.ts | 3 + test/functional/apps/visualize/_area_chart.ts | 3 + .../functional/apps/visualize/_chart_types.ts | 2 +- test/functional/apps/visualize/_data_table.ts | 1 + .../visualize/_data_table_nontimeindex.ts | 1 + .../_data_table_notimeindex_filters.ts | 1 + .../apps/visualize/_embedding_chart.ts | 1 + .../apps/visualize/_experimental_vis.ts | 4 + .../functional/apps/visualize/_gauge_chart.ts | 3 + .../apps/visualize/_heatmap_chart.ts | 1 + .../visualize/_histogram_request_start.ts | 8 + test/functional/apps/visualize/_inspector.ts | 1 + test/functional/apps/visualize/_lab_mode.ts | 5 +- .../apps/visualize/_line_chart_split_chart.ts | 5 +- .../visualize/_line_chart_split_series.ts | 5 +- .../apps/visualize/_linked_saved_searches.ts | 1 + .../apps/visualize/_markdown_vis.ts | 1 + .../apps/visualize/_metric_chart.ts | 1 + test/functional/apps/visualize/_pie_chart.ts | 1 + .../apps/visualize/_point_series_options.ts | 5 +- test/functional/apps/visualize/_region_map.ts | 1 + .../functional/apps/visualize/_shared_item.ts | 1 + test/functional/apps/visualize/_tag_cloud.ts | 1 + test/functional/apps/visualize/_tile_map.ts | 1 + test/functional/apps/visualize/_tsvb_chart.ts | 18 +- .../apps/visualize/_tsvb_markdown.ts | 7 +- test/functional/apps/visualize/_tsvb_table.ts | 3 + .../apps/visualize/_tsvb_time_series.ts | 3 + test/functional/apps/visualize/_vega_chart.ts | 1 + .../apps/visualize/_vertical_bar_chart.ts | 4 + .../_vertical_bar_chart_nontimeindex.ts | 5 +- .../apps/visualize/_visualize_listing.ts | 1 + test/functional/apps/visualize/index.ts | 18 +- .../input_control_vis/chained_controls.ts | 1 + .../input_control_vis/dynamic_options.ts | 4 + .../input_control_options.ts | 1 + .../input_control_vis/input_control_range.ts | 7 +- .../apps/visualize/legacy/_data_table.ts | 1 + .../functional/apps/visualize/legacy/index.ts | 6 +- .../fixtures/kbn_archiver/visualize.json | 300 ++++++++++++++++++ .../functional/page_objects/visualize_page.ts | 12 + 41 files changed, 419 insertions(+), 30 deletions(-) create mode 100644 test/functional/fixtures/kbn_archiver/visualize.json diff --git a/test/functional/apps/visualize/_add_to_dashboard.ts b/test/functional/apps/visualize/_add_to_dashboard.ts index 17d628db86d25..4343f8b1469d6 100644 --- a/test/functional/apps/visualize/_add_to_dashboard.ts +++ b/test/functional/apps/visualize/_add_to_dashboard.ts @@ -26,6 +26,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ]); describe('Add to Dashboard', function describeIndexTests() { + before(async () => { + await PageObjects.visualize.initTests(); + }); it('adding a new metric to a new dashboard by value', async function () { await PageObjects.visualize.navigateToNewAggBasedVisualization(); await PageObjects.visualize.clickMetric(); diff --git a/test/functional/apps/visualize/_area_chart.ts b/test/functional/apps/visualize/_area_chart.ts index 2bad91565de72..99f65458bb606 100644 --- a/test/functional/apps/visualize/_area_chart.ts +++ b/test/functional/apps/visualize/_area_chart.ts @@ -34,6 +34,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); describe('area charts', function indexPatternCreation() { + before(async () => { + await PageObjects.visualize.initTests(); + }); const initAreaChart = async () => { log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); diff --git a/test/functional/apps/visualize/_chart_types.ts b/test/functional/apps/visualize/_chart_types.ts index 71bdc75d41d9c..f52d8f00c1e48 100644 --- a/test/functional/apps/visualize/_chart_types.ts +++ b/test/functional/apps/visualize/_chart_types.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import _ from 'lodash'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -17,6 +16,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('chart types', function () { before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewVisualization(); }); diff --git a/test/functional/apps/visualize/_data_table.ts b/test/functional/apps/visualize/_data_table.ts index 1ff5bdcc6da78..14181c084a77f 100644 --- a/test/functional/apps/visualize/_data_table.ts +++ b/test/functional/apps/visualize/_data_table.ts @@ -28,6 +28,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const vizName1 = 'Visualization DataTable'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/_data_table_nontimeindex.ts b/test/functional/apps/visualize/_data_table_nontimeindex.ts index 0146bb81134a7..1549f2aac0735 100644 --- a/test/functional/apps/visualize/_data_table_nontimeindex.ts +++ b/test/functional/apps/visualize/_data_table_nontimeindex.ts @@ -22,6 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const vizName1 = 'Visualization DataTable without time filter'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/_data_table_notimeindex_filters.ts b/test/functional/apps/visualize/_data_table_notimeindex_filters.ts index df219edc1d2d5..ef664bf4b3054 100644 --- a/test/functional/apps/visualize/_data_table_notimeindex_filters.ts +++ b/test/functional/apps/visualize/_data_table_notimeindex_filters.ts @@ -30,6 +30,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const vizName1 = 'Visualization DataTable w/o time filter'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/_embedding_chart.ts b/test/functional/apps/visualize/_embedding_chart.ts index a6f0b21f96b35..93ab2987dc4a8 100644 --- a/test/functional/apps/visualize/_embedding_chart.ts +++ b/test/functional/apps/visualize/_embedding_chart.ts @@ -26,6 +26,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('embedding', () => { describe('a data table', () => { before(async function () { + await PageObjects.visualize.initTests(); await PageObjects.visualize.navigateToNewAggBasedVisualization(); await PageObjects.visualize.clickDataTable(); await PageObjects.visualize.clickNewSearch(); diff --git a/test/functional/apps/visualize/_experimental_vis.ts b/test/functional/apps/visualize/_experimental_vis.ts index 7132d252cd23c..8e33285f909be 100644 --- a/test/functional/apps/visualize/_experimental_vis.ts +++ b/test/functional/apps/visualize/_experimental_vis.ts @@ -15,6 +15,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize']); describe('experimental visualizations in visualize app ', function () { + before(async () => { + await PageObjects.visualize.initTests(); + }); + describe('experimental visualizations', () => { beforeEach(async () => { log.debug('navigateToApp visualize'); diff --git a/test/functional/apps/visualize/_gauge_chart.ts b/test/functional/apps/visualize/_gauge_chart.ts index 0153e022e71b3..6dd460d4ac32b 100644 --- a/test/functional/apps/visualize/_gauge_chart.ts +++ b/test/functional/apps/visualize/_gauge_chart.ts @@ -19,6 +19,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'visEditor', 'visChart', 'timePicker']); describe('gauge chart', function indexPatternCreation() { + before(async () => { + await PageObjects.visualize.initTests(); + }); async function initGaugeVis() { log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); diff --git a/test/functional/apps/visualize/_heatmap_chart.ts b/test/functional/apps/visualize/_heatmap_chart.ts index 660f45179631e..d71d524cc8f3b 100644 --- a/test/functional/apps/visualize/_heatmap_chart.ts +++ b/test/functional/apps/visualize/_heatmap_chart.ts @@ -19,6 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const vizName1 = 'Visualization HeatmapChart'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickHeatmapChart'); diff --git a/test/functional/apps/visualize/_histogram_request_start.ts b/test/functional/apps/visualize/_histogram_request_start.ts index b027dbcd57780..8b5c31701d025 100644 --- a/test/functional/apps/visualize/_histogram_request_start.ts +++ b/test/functional/apps/visualize/_histogram_request_start.ts @@ -13,6 +13,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const log = getService('log'); const retry = getService('retry'); + const esArchiver = getService('esArchiver'); const PageObjects = getPageObjects([ 'common', @@ -24,6 +25,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('histogram agg onSearchRequestStart', function () { before(async function () { + // loading back default data + await esArchiver.load('empty_kibana'); + + await esArchiver.loadIfNeeded('logstash_functional'); + await esArchiver.loadIfNeeded('long_window_logstash'); + + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/_inspector.ts b/test/functional/apps/visualize/_inspector.ts index e46a833fd0fd7..f83eae2fc00bc 100644 --- a/test/functional/apps/visualize/_inspector.ts +++ b/test/functional/apps/visualize/_inspector.ts @@ -19,6 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('inspector', function describeIndexTests() { before(async function () { + await PageObjects.visualize.initTests(); await PageObjects.visualize.navigateToNewAggBasedVisualization(); await PageObjects.visualize.clickVerticalBarChart(); await PageObjects.visualize.clickNewSearch(); diff --git a/test/functional/apps/visualize/_lab_mode.ts b/test/functional/apps/visualize/_lab_mode.ts index 0a099ec27eee5..d3a02a8d17291 100644 --- a/test/functional/apps/visualize/_lab_mode.ts +++ b/test/functional/apps/visualize/_lab_mode.ts @@ -13,9 +13,12 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const log = getService('log'); - const PageObjects = getPageObjects(['common', 'header', 'discover', 'settings']); + const PageObjects = getPageObjects(['common', 'header', 'discover', 'settings', 'visualize']); describe('visualize lab mode', () => { + before(async () => { + await PageObjects.visualize.initTests(); + }); it('disabling does not break loading saved searches', async () => { await PageObjects.common.navigateToUrl('discover', '', { useActualUrl: true }); await PageObjects.discover.saveSearch('visualize_lab_mode_test'); diff --git a/test/functional/apps/visualize/_line_chart_split_chart.ts b/test/functional/apps/visualize/_line_chart_split_chart.ts index 1b6da1b39f1e3..91c1db533cee9 100644 --- a/test/functional/apps/visualize/_line_chart_split_chart.ts +++ b/test/functional/apps/visualize/_line_chart_split_chart.ts @@ -43,7 +43,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.clickGo(); }; - before(initLineChart); + before(async () => { + await PageObjects.visualize.initTests(); + await initLineChart(); + }); afterEach(async () => { await inspector.close(); diff --git a/test/functional/apps/visualize/_line_chart_split_series.ts b/test/functional/apps/visualize/_line_chart_split_series.ts index b3debc13c7770..6630690b89c2c 100644 --- a/test/functional/apps/visualize/_line_chart_split_series.ts +++ b/test/functional/apps/visualize/_line_chart_split_series.ts @@ -41,7 +41,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.clickGo(); }; - before(initLineChart); + before(async () => { + await PageObjects.visualize.initTests(); + await initLineChart(); + }); afterEach(async () => { await inspector.close(); diff --git a/test/functional/apps/visualize/_linked_saved_searches.ts b/test/functional/apps/visualize/_linked_saved_searches.ts index 160720d27ab61..cfb20cf4b59b8 100644 --- a/test/functional/apps/visualize/_linked_saved_searches.ts +++ b/test/functional/apps/visualize/_linked_saved_searches.ts @@ -30,6 +30,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { let discoverSavedSearchUrlPath: string; before(async () => { + await PageObjects.visualize.initTests(); await PageObjects.common.navigateToApp('discover'); await filterBar.addFilter('extension.raw', 'is', 'jpg'); await PageObjects.header.waitUntilLoadingHasFinished(); diff --git a/test/functional/apps/visualize/_markdown_vis.ts b/test/functional/apps/visualize/_markdown_vis.ts index c8a481dbda2c3..16cdda9b610ca 100644 --- a/test/functional/apps/visualize/_markdown_vis.ts +++ b/test/functional/apps/visualize/_markdown_vis.ts @@ -22,6 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('markdown app in visualize app', () => { before(async function () { + await PageObjects.visualize.initTests(); await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickMarkdownWidget(); await PageObjects.visEditor.setMarkdownTxt(markdown); diff --git a/test/functional/apps/visualize/_metric_chart.ts b/test/functional/apps/visualize/_metric_chart.ts index 8c74784ef96d8..7853a3a845bfc 100644 --- a/test/functional/apps/visualize/_metric_chart.ts +++ b/test/functional/apps/visualize/_metric_chart.ts @@ -19,6 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('metric chart', function () { before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickMetric'); diff --git a/test/functional/apps/visualize/_pie_chart.ts b/test/functional/apps/visualize/_pie_chart.ts index 16826b1676589..dd58ca6514c36 100644 --- a/test/functional/apps/visualize/_pie_chart.ts +++ b/test/functional/apps/visualize/_pie_chart.ts @@ -27,6 +27,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('pie chart', function () { const vizName1 = 'Visualization PieChart'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickPieChart'); diff --git a/test/functional/apps/visualize/_point_series_options.ts b/test/functional/apps/visualize/_point_series_options.ts index d4bcc19a7c87c..b81feaf29e194 100644 --- a/test/functional/apps/visualize/_point_series_options.ts +++ b/test/functional/apps/visualize/_point_series_options.ts @@ -61,7 +61,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { } describe('vlad point series', function describeIndexTests() { - before(initChart); + before(async () => { + await PageObjects.visualize.initTests(); + await initChart(); + }); describe('secondary value axis', function () { it('should show correct chart', async function () { diff --git a/test/functional/apps/visualize/_region_map.ts b/test/functional/apps/visualize/_region_map.ts index 3801d7d0cec12..916e8dbaee3a0 100644 --- a/test/functional/apps/visualize/_region_map.ts +++ b/test/functional/apps/visualize/_region_map.ts @@ -18,6 +18,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'visEditor', 'timePicker']); before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickRegionMap'); diff --git a/test/functional/apps/visualize/_shared_item.ts b/test/functional/apps/visualize/_shared_item.ts index a5dbe6c692978..3f9016ca2ff82 100644 --- a/test/functional/apps/visualize/_shared_item.ts +++ b/test/functional/apps/visualize/_shared_item.ts @@ -17,6 +17,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('data-shared-item', function indexPatternCreation() { before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.common.navigateToApp('visualize'); }); diff --git a/test/functional/apps/visualize/_tag_cloud.ts b/test/functional/apps/visualize/_tag_cloud.ts index c7d864e5cfb23..a6ac324d9dc61 100644 --- a/test/functional/apps/visualize/_tag_cloud.ts +++ b/test/functional/apps/visualize/_tag_cloud.ts @@ -34,6 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const termsField = 'machine.ram'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickTagCloud'); diff --git a/test/functional/apps/visualize/_tile_map.ts b/test/functional/apps/visualize/_tile_map.ts index 719c2c48761f9..812b6a7d86802 100644 --- a/test/functional/apps/visualize/_tile_map.ts +++ b/test/functional/apps/visualize/_tile_map.ts @@ -28,6 +28,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('tile map visualize app', function () { describe('incomplete config', function describeIndexTests() { before(async function () { + await PageObjects.visualize.initTests(); await browser.setWindowSize(1280, 1000); log.debug('navigateToApp visualize'); diff --git a/test/functional/apps/visualize/_tsvb_chart.ts b/test/functional/apps/visualize/_tsvb_chart.ts index 6568eab0fc1f4..690db676cb368 100644 --- a/test/functional/apps/visualize/_tsvb_chart.ts +++ b/test/functional/apps/visualize/_tsvb_chart.ts @@ -17,6 +17,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const inspector = getService('inspector'); const retry = getService('retry'); const security = getService('security'); + const PageObjects = getPageObjects([ 'visualize', 'visualBuilder', @@ -27,12 +28,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('visual builder', function describeIndexTests() { this.tags('includeFirefox'); + + before(async () => { + await PageObjects.visualize.initTests(); + }); + beforeEach(async () => { - await security.testUser.setRoles([ - 'kibana_admin', - 'test_logstash_reader', - 'kibana_sample_admin', - ]); + await security.testUser.setRoles( + ['kibana_admin', 'test_logstash_reader', 'kibana_sample_admin'], + false + ); await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickVisualBuilder(); await PageObjects.visualBuilder.checkVisualBuilderIsPresent(); @@ -141,7 +146,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async () => { await security.testUser.restoreDefaults(); - await esArchiver.unload('index_pattern_without_timefield'); + await esArchiver.load('empty_kibana'); + await PageObjects.visualize.initTests(); }); const switchIndexTest = async (useKibanaIndexes: boolean) => { diff --git a/test/functional/apps/visualize/_tsvb_markdown.ts b/test/functional/apps/visualize/_tsvb_markdown.ts index 880255eede5aa..89db60bc7645c 100644 --- a/test/functional/apps/visualize/_tsvb_markdown.ts +++ b/test/functional/apps/visualize/_tsvb_markdown.ts @@ -11,7 +11,11 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { - const { visualBuilder, timePicker } = getPageObjects(['visualBuilder', 'timePicker']); + const { visualBuilder, timePicker, visualize } = getPageObjects([ + 'visualBuilder', + 'timePicker', + 'visualize', + ]); const retry = getService('retry'); async function cleanupMarkdownData(variableName: 'variable' | 'label', checkedValue: string) { @@ -31,6 +35,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { describe('visual builder', function describeIndexTests() { describe('markdown', () => { before(async () => { + await visualize.initTests(); await visualBuilder.resetPage(); await visualBuilder.clickMarkdown(); await timePicker.setAbsoluteRange( diff --git a/test/functional/apps/visualize/_tsvb_table.ts b/test/functional/apps/visualize/_tsvb_table.ts index 662ca59dc192d..abe3b799e4711 100644 --- a/test/functional/apps/visualize/_tsvb_table.ts +++ b/test/functional/apps/visualize/_tsvb_table.ts @@ -18,6 +18,9 @@ export default function ({ getPageObjects }: FtrProviderContext) { ]); describe('visual builder', function describeIndexTests() { + before(async () => { + await visualize.initTests(); + }); describe('table', () => { beforeEach(async () => { await visualBuilder.resetPage('Sep 22, 2015 @ 06:00:00.000', 'Sep 22, 2015 @ 11:00:00.000'); diff --git a/test/functional/apps/visualize/_tsvb_time_series.ts b/test/functional/apps/visualize/_tsvb_time_series.ts index 58e8cd8dd0d46..a0c9d806facc6 100644 --- a/test/functional/apps/visualize/_tsvb_time_series.ts +++ b/test/functional/apps/visualize/_tsvb_time_series.ts @@ -26,6 +26,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); describe('visual builder', function describeIndexTests() { + before(async () => { + await visualize.initTests(); + }); beforeEach(async () => { await visualize.navigateToNewVisualization(); await visualize.clickVisualBuilder(); diff --git a/test/functional/apps/visualize/_vega_chart.ts b/test/functional/apps/visualize/_vega_chart.ts index 15d6e81c659f9..da33b390925a4 100644 --- a/test/functional/apps/visualize/_vega_chart.ts +++ b/test/functional/apps/visualize/_vega_chart.ts @@ -43,6 +43,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { describe('vega chart in visualize app', () => { before(async () => { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewVisualization(); log.debug('clickVega'); diff --git a/test/functional/apps/visualize/_vertical_bar_chart.ts b/test/functional/apps/visualize/_vertical_bar_chart.ts index 5dafdd5b04010..1fe0d2f9a955b 100644 --- a/test/functional/apps/visualize/_vertical_bar_chart.ts +++ b/test/functional/apps/visualize/_vertical_bar_chart.ts @@ -19,6 +19,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'visEditor', 'visChart', 'timePicker']); describe('vertical bar chart', function () { + before(async () => { + await PageObjects.visualize.initTests(); + }); + const vizName1 = 'Visualization VerticalBarChart'; const initBarChart = async () => { diff --git a/test/functional/apps/visualize/_vertical_bar_chart_nontimeindex.ts b/test/functional/apps/visualize/_vertical_bar_chart_nontimeindex.ts index 34f401b5afff6..5f066e96c6e7c 100644 --- a/test/functional/apps/visualize/_vertical_bar_chart_nontimeindex.ts +++ b/test/functional/apps/visualize/_vertical_bar_chart_nontimeindex.ts @@ -39,7 +39,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.clickGo(); }; - before(initBarChart); + before(async () => { + await PageObjects.visualize.initTests(); + await initBarChart(); + }); it('should save and load', async function () { await PageObjects.visualize.saveVisualizationExpectSuccessAndBreadcrumb(vizName1); diff --git a/test/functional/apps/visualize/_visualize_listing.ts b/test/functional/apps/visualize/_visualize_listing.ts index 399fa73da4bb3..90e7da1696702 100644 --- a/test/functional/apps/visualize/_visualize_listing.ts +++ b/test/functional/apps/visualize/_visualize_listing.ts @@ -18,6 +18,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('create and delete', function () { before(async function () { + await PageObjects.visualize.initTests(); await PageObjects.visualize.gotoVisualizationLandingPage(); await PageObjects.visualize.deleteAllVisualizations(); }); diff --git a/test/functional/apps/visualize/index.ts b/test/functional/apps/visualize/index.ts index 4dff3eada1f24..eb224b3c9b879 100644 --- a/test/functional/apps/visualize/index.ts +++ b/test/functional/apps/visualize/index.ts @@ -7,7 +7,6 @@ */ import { FtrProviderContext } from '../../ftr_provider_context.d'; -import { UI_SETTINGS } from '../../../../src/plugins/data/common'; export default function ({ getService, loadTestFile }: FtrProviderContext) { const browser = getService('browser'); @@ -19,17 +18,14 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { before(async () => { log.debug('Starting visualize before method'); await browser.setWindowSize(1280, 800); + await esArchiver.load('empty_kibana'); + await esArchiver.loadIfNeeded('logstash_functional'); await esArchiver.loadIfNeeded('long_window_logstash'); - await esArchiver.load('visualize'); - await kibanaServer.uiSettings.replace({ - defaultIndex: 'logstash-*', - [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0,0.[000]b', - }); }); // TODO: Remove when vislib is removed - describe('new charts library', function () { + describe('new charts library visualize ciGroup7', function () { this.tags('ciGroup7'); before(async () => { @@ -55,7 +51,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_vertical_bar_chart_nontimeindex')); }); - describe('', function () { + describe('visualize ciGroup9', function () { this.tags('ciGroup9'); loadTestFile(require.resolve('./_embedding_chart')); @@ -66,7 +62,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_chart_types')); }); - describe('', function () { + describe('visualize ciGroup10', function () { this.tags('ciGroup10'); loadTestFile(require.resolve('./_inspector')); @@ -78,7 +74,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_metric_chart')); }); - describe('', function () { + describe('visualize ciGroup4', function () { this.tags('ciGroup4'); loadTestFile(require.resolve('./_line_chart_split_series')); @@ -95,7 +91,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_region_map')); }); - describe('', function () { + describe('visualize ciGroup12', function () { this.tags('ciGroup12'); loadTestFile(require.resolve('./_tag_cloud')); diff --git a/test/functional/apps/visualize/input_control_vis/chained_controls.ts b/test/functional/apps/visualize/input_control_vis/chained_controls.ts index 7172be6c96966..18d1367b37e72 100644 --- a/test/functional/apps/visualize/input_control_vis/chained_controls.ts +++ b/test/functional/apps/visualize/input_control_vis/chained_controls.ts @@ -21,6 +21,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { this.tags('includeFirefox'); before(async () => { + await PageObjects.visualize.initTests(); await PageObjects.common.navigateToApp('visualize'); await PageObjects.visualize.loadSavedVisualization('chained input control', { navigateToVisualize: false, diff --git a/test/functional/apps/visualize/input_control_vis/dynamic_options.ts b/test/functional/apps/visualize/input_control_vis/dynamic_options.ts index babe5a61a0cbb..633ba40bb0493 100644 --- a/test/functional/apps/visualize/input_control_vis/dynamic_options.ts +++ b/test/functional/apps/visualize/input_control_vis/dynamic_options.ts @@ -16,6 +16,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // FLAKY: https://github.com/elastic/kibana/issues/98974 describe.skip('dynamic options', () => { + before(async () => { + await PageObjects.visualize.initTests(); + }); + describe('without chained controls', () => { beforeEach(async () => { await PageObjects.common.navigateToApp('visualize'); diff --git a/test/functional/apps/visualize/input_control_vis/input_control_options.ts b/test/functional/apps/visualize/input_control_vis/input_control_options.ts index 2e3b5d758436e..82f003440364f 100644 --- a/test/functional/apps/visualize/input_control_vis/input_control_options.ts +++ b/test/functional/apps/visualize/input_control_vis/input_control_options.ts @@ -22,6 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('input control options', () => { before(async () => { + await PageObjects.visualize.initTests(); await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickInputControlVis(); // set time range to time with no documents - input controls do not use time filter be default diff --git a/test/functional/apps/visualize/input_control_vis/input_control_range.ts b/test/functional/apps/visualize/input_control_vis/input_control_range.ts index caa008080b2a3..97e746ba4a4c0 100644 --- a/test/functional/apps/visualize/input_control_vis/input_control_range.ts +++ b/test/functional/apps/visualize/input_control_vis/input_control_range.ts @@ -14,10 +14,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const find = getService('find'); const security = getService('security'); + const PageObjects = getPageObjects(['visualize']); + const { visualize, visEditor } = getPageObjects(['visualize', 'visEditor']); describe('input control range', () => { before(async () => { + await PageObjects.visualize.initTests(); await security.testUser.setRoles(['kibana_admin', 'kibana_sample_admin']); await esArchiver.load('kibana_sample_data_flights_index_pattern'); await visualize.navigateToNewVisualization(); @@ -48,10 +51,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async () => { await esArchiver.unload('kibana_sample_data_flights_index_pattern'); - // loading back default data - await esArchiver.loadIfNeeded('logstash_functional'); - await esArchiver.loadIfNeeded('long_window_logstash'); - await esArchiver.load('visualize'); await security.testUser.restoreDefaults(); }); }); diff --git a/test/functional/apps/visualize/legacy/_data_table.ts b/test/functional/apps/visualize/legacy/_data_table.ts index 41ddbd2dfc236..6613e3d13a31b 100644 --- a/test/functional/apps/visualize/legacy/_data_table.ts +++ b/test/functional/apps/visualize/legacy/_data_table.ts @@ -22,6 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('legacy data table visualization', function indexPatternCreation() { before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/legacy/index.ts b/test/functional/apps/visualize/legacy/index.ts index 677f1b33df2b6..187e8f3f3a663 100644 --- a/test/functional/apps/visualize/legacy/index.ts +++ b/test/functional/apps/visualize/legacy/index.ts @@ -9,19 +9,21 @@ import { FtrProviderContext } from '../../../ftr_provider_context.d'; import { UI_SETTINGS } from '../../../../../src/plugins/data/common'; -export default function ({ getService, loadTestFile }: FtrProviderContext) { +export default function ({ getPageObjects, getService, loadTestFile }: FtrProviderContext) { const browser = getService('browser'); const log = getService('log'); const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['visualize']); describe('visualize with legacy visualizations', () => { before(async () => { + await PageObjects.visualize.initTests(); log.debug('Starting visualize legacy before method'); await browser.setWindowSize(1280, 800); await esArchiver.loadIfNeeded('logstash_functional'); await esArchiver.loadIfNeeded('long_window_logstash'); - await esArchiver.load('visualize'); + await kibanaServer.importExport.load('visualize'); await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*', [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0,0.[000]b', diff --git a/test/functional/fixtures/kbn_archiver/visualize.json b/test/functional/fixtures/kbn_archiver/visualize.json new file mode 100644 index 0000000000000..758841e8d81ef --- /dev/null +++ b/test/functional/fixtures/kbn_archiver/visualize.json @@ -0,0 +1,300 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.0.0", + "id": "logstash-*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzI2LDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "chained input control with dynamic options", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"chained input control with dynamic options\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1559759550755\",\"fieldName\":\"machine.os.raw\",\"parent\":\"\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1559759557302\",\"fieldName\":\"geo.src\",\"parent\":\"1559759550755\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_1_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "5d2de430-87c0-11e9-a991-3b492a7c3e09", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "control_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "logstash-*", + "name": "control_1_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-06-05T18:33:07.827Z", + "version": "WzMzLDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "dynamic options input control", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"dynamic options input control\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1559759127876\",\"fieldName\":\"geo.src\",\"parent\":\"\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "64983230-87bf-11e9-a991-3b492a7c3e09", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "control_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-06-05T18:26:10.771Z", + "version": "WzMyLDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "chained input control", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"chained input control\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1559757816862\",\"fieldName\":\"geo.src\",\"parent\":\"\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1559757836347\",\"fieldName\":\"clientip\",\"parent\":\"1559757816862\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_1_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "68305470-87bc-11e9-a991-3b492a7c3e09", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "control_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "logstash-*", + "name": "control_1_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-06-05T18:04:48.310Z", + "version": "WzMxLDJd" +} + +{ + "attributes": { + "fields": "[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"message\"}}},{\"name\":\"user\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"user.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"user\"}}}]", + "title": "test_index*" + }, + "id": "test_index*", + "references": [], + "type": "index-pattern", + "version": "WzI1LDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "AreaChart [no date field]", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"AreaChart [no date field]\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"addTooltip\":true,\"addLegend\":true,\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "AreaChart-no-date-field", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "test_index*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzM0LDJd" +} + +{ + "attributes": { + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "title": "log*" + }, + "coreMigrationVersion": "8.0.0", + "id": "log*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzM1LDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "AreaChart [no time filter]", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"AreaChart [no time filter]\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"addTooltip\":true,\"addLegend\":true,\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "AreaChart-no-time-filter", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "log*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzM2LDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Shared-Item Visualization AreaChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"area\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"smoothLines\":false,\"scale\":\"linear\",\"interpolate\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "8.0.0", + "id": "Shared-Item-Visualization-AreaChart", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzI5LDJd" +} + +{ + "attributes": { + "description": "VegaMap", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "VegaMap", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: https://vega.github.io/schema/vega/v5.json\\n config: {\\n kibana: {type: \\\"map\\\", latitude: 25, longitude: -70, zoom: 3}\\n }\\n data: [\\n {\\n name: table\\n url: {\\n index: kibana_sample_data_flights\\n %context%: true\\n // Uncomment to enable time filtering\\n // %timefield%: timestamp\\n body: {\\n size: 0\\n aggs: {\\n origins: {\\n terms: {field: \\\"OriginAirportID\\\", size: 10000}\\n aggs: {\\n originLocation: {\\n top_hits: {\\n size: 1\\n _source: {\\n includes: [\\\"OriginLocation\\\", \\\"Origin\\\"]\\n }\\n }\\n }\\n distinations: {\\n terms: {field: \\\"DestAirportID\\\", size: 10000}\\n aggs: {\\n destLocation: {\\n top_hits: {\\n size: 1\\n _source: {\\n includes: [\\\"DestLocation\\\"]\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n format: {property: \\\"aggregations.origins.buckets\\\"}\\n transform: [\\n {\\n type: geopoint\\n projection: projection\\n fields: [\\n originLocation.hits.hits[0]._source.OriginLocation.lon\\n originLocation.hits.hits[0]._source.OriginLocation.lat\\n ]\\n }\\n ]\\n }\\n {\\n name: selectedDatum\\n on: [\\n {trigger: \\\"!selected\\\", remove: true}\\n {trigger: \\\"selected\\\", insert: \\\"selected\\\"}\\n ]\\n }\\n ]\\n signals: [\\n {\\n name: selected\\n value: null\\n on: [\\n {events: \\\"@airport:mouseover\\\", update: \\\"datum\\\"}\\n {events: \\\"@airport:mouseout\\\", update: \\\"null\\\"}\\n ]\\n }\\n ]\\n scales: [\\n {\\n name: airportSize\\n type: linear\\n domain: {data: \\\"table\\\", field: \\\"doc_count\\\"}\\n range: [\\n {signal: \\\"zoom*zoom*0.2+1\\\"}\\n {signal: \\\"zoom*zoom*10+1\\\"}\\n ]\\n }\\n ]\\n marks: [\\n {\\n type: group\\n from: {\\n facet: {\\n name: facetedDatum\\n data: selectedDatum\\n field: distinations.buckets\\n }\\n }\\n data: [\\n {\\n name: facetDatumElems\\n source: facetedDatum\\n transform: [\\n {\\n type: geopoint\\n projection: projection\\n fields: [\\n destLocation.hits.hits[0]._source.DestLocation.lon\\n destLocation.hits.hits[0]._source.DestLocation.lat\\n ]\\n }\\n {type: \\\"formula\\\", expr: \\\"{x:parent.x, y:parent.y}\\\", as: \\\"source\\\"}\\n {type: \\\"formula\\\", expr: \\\"{x:datum.x, y:datum.y}\\\", as: \\\"target\\\"}\\n {type: \\\"linkpath\\\", shape: \\\"diagonal\\\"}\\n ]\\n }\\n ]\\n scales: [\\n {\\n name: lineThickness\\n type: log\\n clamp: true\\n range: [1, 8]\\n }\\n {\\n name: lineOpacity\\n type: log\\n clamp: true\\n range: [0.2, 0.8]\\n }\\n ]\\n marks: [\\n {\\n from: {data: \\\"facetDatumElems\\\"}\\n type: path\\n interactive: false\\n encode: {\\n update: {\\n path: {field: \\\"path\\\"}\\n stroke: {value: \\\"black\\\"}\\n strokeWidth: {scale: \\\"lineThickness\\\", field: \\\"doc_count\\\"}\\n strokeOpacity: {scale: \\\"lineOpacity\\\", field: \\\"doc_count\\\"}\\n }\\n }\\n }\\n ]\\n }\\n {\\n name: airport\\n type: symbol\\n from: {data: \\\"table\\\"}\\n encode: {\\n update: {\\n size: {scale: \\\"airportSize\\\", field: \\\"doc_count\\\"}\\n xc: {signal: \\\"datum.x\\\"}\\n yc: {signal: \\\"datum.y\\\"}\\n tooltip: {\\n signal: \\\"{title: datum.originLocation.hits.hits[0]._source.Origin + ' (' + datum.key + ')', connnections: length(datum.distinations.buckets), flights: datum.doc_count}\\\"\\n }\\n }\\n }\\n }\\n ]\\n}\"},\"title\":\"[Flights] Airport Connections (Hover Over Airport)\",\"type\":\"vega\"}" + }, + "coreMigrationVersion": "8.0.0", + "id": "VegaMap", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "version": "WzM3LDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization AreaChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Visualization AreaChart\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"labels\":{},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "Visualization-AreaChart", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzMwLDJd" +} + +{ + "attributes": { + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "title": "logstash*" + }, + "coreMigrationVersion": "8.0.0", + "id": "logstash*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzI3LDJd" +} + +{ + "attributes": { + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "timeFieldName": "@timestamp", + "title": "long-window-logstash-*" + }, + "coreMigrationVersion": "8.0.0", + "id": "long-window-logstash-*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzI4LDJd" +} \ No newline at end of file diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index 1ccea86905431..9a4c01f0f2767 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -8,6 +8,7 @@ import { FtrProviderContext } from '../ftr_provider_context'; import { VisualizeConstants } from '../../../src/plugins/visualize/public/application/visualize_constants'; +import { UI_SETTINGS } from '../../../src/plugins/data/common'; // TODO: Remove & Refactor to use the TTV page objects interface VisualizeSaveModalArgs { @@ -23,6 +24,7 @@ type DashboardPickerOption = | 'new-dashboard-option'; export function VisualizePageProvider({ getService, getPageObjects }: FtrProviderContext) { + const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); const retry = getService('retry'); const find = getService('find'); @@ -48,6 +50,16 @@ export function VisualizePageProvider({ getService, getPageObjects }: FtrProvide LOGSTASH_NON_TIME_BASED: 'logstash*', }; + public async initTests() { + await kibanaServer.savedObjects.clean({ types: ['visualization'] }); + await kibanaServer.importExport.load('visualize'); + + await kibanaServer.uiSettings.replace({ + defaultIndex: 'logstash-*', + [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0,0.[000]b', + }); + } + public async gotoVisualizationLandingPage() { await common.navigateToApp('visualize'); } From 9d9dfe4bbf6b37243b509a99375067a8781e32a7 Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Thu, 13 May 2021 15:44:18 -0500 Subject: [PATCH 20/27] [index pattern field editor] Update runtime field painless docs url (#100014) * update runtime field painless docs url --- .../index_pattern_field_editor/public/lib/documentation.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/index_pattern_field_editor/public/lib/documentation.ts b/src/plugins/index_pattern_field_editor/public/lib/documentation.ts index 9577f25184ba0..70f180d7cb5f2 100644 --- a/src/plugins/index_pattern_field_editor/public/lib/documentation.ts +++ b/src/plugins/index_pattern_field_editor/public/lib/documentation.ts @@ -11,11 +11,11 @@ import { DocLinksStart } from 'src/core/public'; export const getLinks = (docLinks: DocLinksStart) => { const { DOC_LINK_VERSION, ELASTIC_WEBSITE_URL } = docLinks; const docsBase = `${ELASTIC_WEBSITE_URL}guide/en`; - const esDocsBase = `${docsBase}/elasticsearch/reference/${DOC_LINK_VERSION}`; const painlessDocsBase = `${docsBase}/elasticsearch/painless/${DOC_LINK_VERSION}`; + const kibanaDocsBase = `${docsBase}/kibana/${DOC_LINK_VERSION}`; return { - runtimePainless: `${esDocsBase}/runtime.html#runtime-mapping-fields`, + runtimePainless: `${kibanaDocsBase}/managing-index-patterns.html#runtime-fields`, painlessSyntax: `${painlessDocsBase}/painless-lang-spec.html`, }; }; From 5507ba622625a2677a35b4aec5e667d1b6e6017c Mon Sep 17 00:00:00 2001 From: Scotty Bollinger Date: Thu, 13 May 2021 16:16:28 -0500 Subject: [PATCH 21/27] [Workplace Search] Fix bug when transitioning to personal dashboard (#100061) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The unmount callback should have never been in the useEffect keyed off of the pathname. Another issue appeared earlier and I tried to fix it with the now removed conditional, but it should have been removed into it’s own useEffect that only runs when the component is unmounted, not on every route change. Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../views/content_sources/source_router.test.tsx | 8 -------- .../views/content_sources/source_router.tsx | 8 ++++---- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.test.tsx index 528065da23af6..dda3eeea54926 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.test.tsx @@ -120,14 +120,6 @@ describe('SourceRouter', () => { }); describe('reset state', () => { - it('does not reset state when switching between source tree views', () => { - mockLocation.pathname = `/sources/${contentSource.id}`; - shallow(); - unmountHandler(); - - expect(resetSourceState).not.toHaveBeenCalled(); - }); - it('resets state when leaving source tree', () => { mockLocation.pathname = '/home'; shallow(); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx index cd20e32def16d..d5d6c8e541e4f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx @@ -55,12 +55,12 @@ export const SourceRouter: React.FC = () => { useEffect(() => { initializeSource(sourceId); - return () => { - // We only want to reset the state when leaving the source section. Otherwise there is an unwanted flash of UI. - if (!pathname.includes(sourceId)) resetSourceState(); - }; }, [pathname]); + useEffect(() => { + return resetSourceState; + }, []); + if (dataLoading) return ; const { From 0364e8f5aaddcdc6d67b35db474af2d8c06f9446 Mon Sep 17 00:00:00 2001 From: John Schulz Date: Thu, 13 May 2021 17:32:14 -0400 Subject: [PATCH 22/27] [Fleet] Fix error when searching for keys whose names have spaces (#100056) ## Summary fixes #99895 Can reproduce #99895 with something like ```shell curl 'http://localhost:5601/api/fleet/enrollment-api-keys' \ -H 'content-type: application/json' \ -H 'kbn-version: 8.0.0' \ -u elastic:changeme \ --data-raw '{"name":"with spaces","policy_id":"d6a93200-b1bd-11eb-90ac-052b474d74cd"}' ``` Kibana logs this stack trace ``` server log [10:57:07.863] [error][fleet][plugins] KQLSyntaxError: Expected AND, OR, end of input but "\" found. policy_id:"d6a93200-b1bd-11eb-90ac-052b474d74cd" AND name:with\ spaces* --------------------------------------------------------------^ at Object.fromKueryExpression (/Users/jfsiii/work/kibana/src/plugins/data/common/es_query/kuery/ast/ast.ts:52:13) at listEnrollmentApiKeys (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts:37:69) at Object.generateEnrollmentAPIKey (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts:160:31) at processTicksAndRejections (internal/process/task_queues.js:93:5) at postEnrollmentApiKeyHandler (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/routes/enrollment_api_key/handler.ts:53:20) at Router.handle (/Users/jfsiii/work/kibana/src/core/server/http/router/router.ts:273:30) at handler (/Users/jfsiii/work/kibana/src/core/server/http/router/router.ts:228:11) at exports.Manager.execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/toolkit.js:60:28) at Object.internals.handler (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/handler.js:46:20) at exports.execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/handler.js:31:20) at Request._lifecycle (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/request.js:370:32) at Request._execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/request.js:279:9) { shortMessage: 'Expected AND, OR, end of input but "\\" found.' ``` the `kuery` value which causes the `KQLSyntaxError` is ``` policy_id:\"d6a93200-b1bd-11eb-90ac-052b474d74cd\" AND name:with\\ spaces* ``` a value without spaces, e.g. `no_spaces` ``` policy_id:\"d6a93200-b1bd-11eb-90ac-052b474d74cd\" AND name:no_spaces* ``` is converted to this query object ``` { "bool": { "filter": [ { "bool": { "should": [ { "match_phrase": { "policy_id": "d6a93200-b1bd-11eb-90ac-052b474d74cd" } } ], "minimum_should_match": 1 } }, { "bool": { "should": [ { "query_string": { "fields": [ "name" ], "query": "no_spaces*" } } ], "minimum_should_match": 1 } } ] } ``` I tried some other approaches for handling the spaces based on what I saw in the docs like `name:"\"with spaces\"` and `name:(with spaces)*`but they all failed as well, like ``` KQLSyntaxError: Expected AND, OR, end of input but "*" found. policy_id:"d6a93200-b1bd-11eb-90ac-052b474d74cd" AND name:(with spaces)* -----------------------------------------------------------------------^ at Object.fromKueryExpression (/Users/jfsiii/work/kibana/src/plugins/data/common/es_query/kuery/ast/ast.ts:52:13) at listEnrollmentApiKeys (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts:37:69) at Object.generateEnrollmentAPIKey (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts:166:31) at processTicksAndRejections (internal/process/task_queues.js:93:5) at postEnrollmentApiKeyHandler (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/routes/enrollment_api_key/handler.ts:53:20) at Router.handle (/Users/jfsiii/work/kibana/src/core/server/http/router/router.ts:273:30) at handler (/Users/jfsiii/work/kibana/src/core/server/http/router/router.ts:228:11) at exports.Manager.execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/toolkit.js:60:28) at Object.internals.handler (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/handler.js:46:20) at exports.execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/handler.js:31:20) at Request._lifecycle (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/request.js:370:32) at Request._execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/request.js:279:9) { shortMessage: 'Expected AND, OR, end of input but "*" found.' ``` So I logged out the query object for a successful request, and put that in a function ``` { "query": { "bool": { "filter": [ { "bool": { "should": [ { "match_phrase": { "policy_id": "d6a93200-b1bd-11eb-90ac-052b474d74cd" } } ], "minimum_should_match": 1 } }, { "bool": { "should": [ { "query_string": { "fields": [ "name" ], "query": "(with spaces) *" } } ], "minimum_should_match": 1 } } ] } } } ``` ### 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 --- .../services/api_keys/enrollment_api_key.ts | 35 +++++++++++-- .../apis/enrollment_api_keys/crud.ts | 51 ++++++++++++++++++- 2 files changed, 80 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts b/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts index f0991ab01a6ed..511a0abecbc18 100644 --- a/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts +++ b/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts @@ -14,6 +14,7 @@ import type { SavedObjectsClientContract, ElasticsearchClient } from 'src/core/s import { esKuery } from '../../../../../../src/plugins/data/server'; import type { ESSearchResponse as SearchResponse } from '../../../../../../typings/elasticsearch'; import type { EnrollmentAPIKey, FleetServerEnrollmentAPIKey } from '../../types'; +import { IngestManagerError } from '../../errors'; import { ENROLLMENT_API_KEYS_INDEX } from '../../constants'; import { agentPolicyService } from '../agent_policy'; import { escapeSearchQueryPhrase } from '../saved_object'; @@ -28,10 +29,13 @@ export async function listEnrollmentApiKeys( page?: number; perPage?: number; kuery?: string; + query?: ReturnType; showInactive?: boolean; } ): Promise<{ items: EnrollmentAPIKey[]; total: any; page: any; perPage: any }> { const { page = 1, perPage = 20, kuery } = options; + const query = + options.query ?? (kuery && esKuery.toElasticsearchQuery(esKuery.fromKueryExpression(kuery))); const res = await esClient.search>({ index: ENROLLMENT_API_KEYS_INDEX, @@ -40,9 +44,7 @@ export async function listEnrollmentApiKeys( sort: 'created_at:desc', track_total_hits: true, ignore_unavailable: true, - body: kuery - ? { query: esKuery.toElasticsearchQuery(esKuery.fromKueryExpression(kuery)) } - : undefined, + body: query ? { query } : undefined, }); // @ts-expect-error @elastic/elasticsearch @@ -159,7 +161,7 @@ export async function generateEnrollmentAPIKey( const { items } = await listEnrollmentApiKeys(esClient, { page: page++, perPage: 100, - kuery: `policy_id:"${agentPolicyId}" AND name:${providedKeyName.replace(/ /g, '\\ ')}*`, + query: getQueryForExistingKeyNameOnPolicy(agentPolicyId, providedKeyName), }); if (items.length === 0) { hasMore = false; @@ -176,7 +178,7 @@ export async function generateEnrollmentAPIKey( k.name?.replace(providedKeyName, '').trim().match(uuidRegex) ) ) { - throw new Error( + throw new IngestManagerError( i18n.translate('xpack.fleet.serverError.enrollmentKeyDuplicate', { defaultMessage: 'An enrollment key named {providedKeyName} already exists for agent policy {agentPolicyId}', @@ -254,6 +256,29 @@ export async function generateEnrollmentAPIKey( }; } +function getQueryForExistingKeyNameOnPolicy(agentPolicyId: string, providedKeyName: string) { + const query = { + bool: { + filter: [ + { + bool: { + should: [{ match_phrase: { policy_id: agentPolicyId } }], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [{ query_string: { fields: ['name'], query: `(${providedKeyName}) *` } }], + minimum_should_match: 1, + }, + }, + ], + }, + }; + + return query; +} + export async function getEnrollmentAPIKeyById(esClient: ElasticsearchClient, apiKeyId: string) { const res = await esClient.search({ index: ENROLLMENT_API_KEYS_INDEX, diff --git a/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts b/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts index 5f38a6e050f40..25fb71ae42807 100644 --- a/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts +++ b/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts @@ -103,7 +103,7 @@ export default function (providerContext: FtrProviderContext) { .expect(400); }); - it('should allow to create an enrollment api key with an agent policy', async () => { + it('should allow to create an enrollment api key with only an agent policy', async () => { const { body: apiResponse } = await supertest .post(`/api/fleet/enrollment-api-keys`) .set('kbn-xsrf', 'xxx') @@ -115,6 +115,55 @@ export default function (providerContext: FtrProviderContext) { expect(apiResponse.item).to.have.keys('id', 'api_key', 'api_key_id', 'name', 'policy_id'); }); + it('should allow to create an enrollment api key with agent policy and unique name', async () => { + const { body: noSpacesRes } = await supertest + .post(`/api/fleet/enrollment-api-keys`) + .set('kbn-xsrf', 'xxx') + .send({ + policy_id: 'policy1', + name: 'something', + }); + expect(noSpacesRes.item).to.have.keys('id', 'api_key', 'api_key_id', 'name', 'policy_id'); + + const { body: hasSpacesRes } = await supertest + .post(`/api/fleet/enrollment-api-keys`) + .set('kbn-xsrf', 'xxx') + .send({ + policy_id: 'policy1', + name: 'something else', + }); + expect(hasSpacesRes.item).to.have.keys('id', 'api_key', 'api_key_id', 'name', 'policy_id'); + + const { body: noSpacesDupe } = await supertest + .post(`/api/fleet/enrollment-api-keys`) + .set('kbn-xsrf', 'xxx') + .send({ + policy_id: 'policy1', + name: 'something', + }) + .expect(400); + + expect(noSpacesDupe).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: 'An enrollment key named something already exists for agent policy policy1', + }); + + const { body: hasSpacesDupe } = await supertest + .post(`/api/fleet/enrollment-api-keys`) + .set('kbn-xsrf', 'xxx') + .send({ + policy_id: 'policy1', + name: 'something else', + }) + .expect(400); + expect(hasSpacesDupe).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: 'An enrollment key named something else already exists for agent policy policy1', + }); + }); + it('should create an ES ApiKey with metadata', async () => { const { body: apiResponse } = await supertest .post(`/api/fleet/enrollment-api-keys`) From 6bafb59fd5cc6cac55f07bd42df97e2ece0633e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Thu, 13 May 2021 23:35:38 +0200 Subject: [PATCH 23/27] fix-typo: Use of `than` instead of `then` (#100030) --- packages/kbn-legacy-logging/src/rotate/log_rotator.ts | 2 +- src/plugins/console/public/lib/autocomplete/engine.js | 2 +- .../importer/geojson_importer/geojson_importer.test.js | 2 +- .../inventory_view/components/waffle/legend_controls.tsx | 2 +- .../elasticsearch_util/elasticsearch_geo_utils.test.js | 4 ++-- .../plugins/maps/common/elasticsearch_util/total_hits.ts | 2 +- .../public/components/app/section/apm/index.test.tsx | 2 +- .../app/section/metrics/lib/format_duration.test.ts | 8 ++++---- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/kbn-legacy-logging/src/rotate/log_rotator.ts b/packages/kbn-legacy-logging/src/rotate/log_rotator.ts index 4d57d869b9008..4b1e34839030f 100644 --- a/packages/kbn-legacy-logging/src/rotate/log_rotator.ts +++ b/packages/kbn-legacy-logging/src/rotate/log_rotator.ts @@ -149,7 +149,7 @@ export class LogRotator { if (this.usePolling && !this.shouldUsePolling) { this.log( ['warning', 'logging:rotate'], - 'Looks like your current environment support a faster algorithm then polling. You can try to disable `usePolling`' + 'Looks like your current environment support a faster algorithm than polling. You can try to disable `usePolling`' ); } diff --git a/src/plugins/console/public/lib/autocomplete/engine.js b/src/plugins/console/public/lib/autocomplete/engine.js index 7852c9da7898f..bd72af3c0e8cf 100644 --- a/src/plugins/console/public/lib/autocomplete/engine.js +++ b/src/plugins/console/public/lib/autocomplete/engine.js @@ -146,7 +146,7 @@ export function populateContext(tokenPath, context, editor, includeAutoComplete, if (!wsToUse && walkStates.length > 1 && !includeAutoComplete) { console.info( - "more then one context active for current path, but autocomplete isn't requested", + "more than one context active for current path, but autocomplete isn't requested", walkStates ); } diff --git a/x-pack/plugins/file_upload/public/importer/geojson_importer/geojson_importer.test.js b/x-pack/plugins/file_upload/public/importer/geojson_importer/geojson_importer.test.js index 6b16c955c396e..6a58e863aed5f 100644 --- a/x-pack/plugins/file_upload/public/importer/geojson_importer/geojson_importer.test.js +++ b/x-pack/plugins/file_upload/public/importer/geojson_importer/geojson_importer.test.js @@ -286,7 +286,7 @@ describe('createChunks', () => { expect(chunks[1].length).toBe(2); }); - test('should break features into chunks containing only single feature when feature size is greater then maxChunkCharCount', () => { + test('should break features into chunks containing only single feature when feature size is greater than maxChunkCharCount', () => { const maxChunkCharCount = GEOMETRY_COLLECTION_DOC_CHARS * 0.8; const chunks = createChunks(features, ES_FIELD_TYPES.GEO_SHAPE, maxChunkCharCount); expect(chunks.length).toBe(5); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/legend_controls.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/legend_controls.tsx index f9e04b3d1772c..06b7739e03c54 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/legend_controls.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/legend_controls.tsx @@ -173,7 +173,7 @@ export const LegendControls = ({ const errors = !boundsValidRange ? [ i18n.translate('xpack.infra.legnedControls.boundRangeError', { - defaultMessage: 'Minimum must be smaller then the maximum', + defaultMessage: 'Minimum must be smaller than the maximum', }), ] : []; diff --git a/x-pack/plugins/maps/common/elasticsearch_util/elasticsearch_geo_utils.test.js b/x-pack/plugins/maps/common/elasticsearch_util/elasticsearch_geo_utils.test.js index 22b8a86158a74..a0908035c1480 100644 --- a/x-pack/plugins/maps/common/elasticsearch_util/elasticsearch_geo_utils.test.js +++ b/x-pack/plugins/maps/common/elasticsearch_util/elasticsearch_geo_utils.test.js @@ -421,7 +421,7 @@ describe('createExtentFilter', () => { }); }); - it('should make left longitude greater then right longitude when area crosses 180 meridian east to west', () => { + it('should make left longitude greater than right longitude when area crosses 180 meridian east to west', () => { const mapExtent = { maxLat: 39, maxLon: 200, @@ -440,7 +440,7 @@ describe('createExtentFilter', () => { }); }); - it('should make left longitude greater then right longitude when area crosses 180 meridian west to east', () => { + it('should make left longitude greater than right longitude when area crosses 180 meridian west to east', () => { const mapExtent = { maxLat: 39, maxLon: -100, diff --git a/x-pack/plugins/maps/common/elasticsearch_util/total_hits.ts b/x-pack/plugins/maps/common/elasticsearch_util/total_hits.ts index 5de38d3f28851..be197becc6a9d 100644 --- a/x-pack/plugins/maps/common/elasticsearch_util/total_hits.ts +++ b/x-pack/plugins/maps/common/elasticsearch_util/total_hits.ts @@ -20,7 +20,7 @@ export function isTotalHitsGreaterThan(totalHits: TotalHits, value: number) { if (value > totalHits.value) { throw new Error( i18n.translate('xpack.maps.totalHits.lowerBoundPrecisionExceeded', { - defaultMessage: `Unable to determine if total hits is greater than value. Total hits precision is lower then value. Total hits: {totalHitsString}, value: {value}. Ensure _search.body.track_total_hits is at least as large as value.`, + defaultMessage: `Unable to determine if total hits is greater than value. Total hits precision is lower than value. Total hits: {totalHitsString}, value: {value}. Ensure _search.body.track_total_hits is at least as large as value.`, values: { totalHitsString: JSON.stringify(totalHits, null, ''), value, diff --git a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx index e2669d87d6776..67fede05f3ced 100644 --- a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx @@ -60,7 +60,7 @@ describe('APMSection', () => { })); }); - it('renders transaction stat less then 1k', () => { + it('renders transaction stat less than 1k', () => { const resp = { appLink: '/app/apm', stats: { diff --git a/x-pack/plugins/observability/public/components/app/section/metrics/lib/format_duration.test.ts b/x-pack/plugins/observability/public/components/app/section/metrics/lib/format_duration.test.ts index b4b03b2194ef2..f3853fa5a91da 100644 --- a/x-pack/plugins/observability/public/components/app/section/metrics/lib/format_duration.test.ts +++ b/x-pack/plugins/observability/public/components/app/section/metrics/lib/format_duration.test.ts @@ -8,19 +8,19 @@ import { formatDuration } from './format_duration'; describe('formatDuration(seconds)', () => { - it('should work for less then a minute', () => { + it('should work for less than a minute', () => { expect(formatDuration(56)).toBe('56s'); }); - it('should work for less then a hour', () => { + it('should work for less than a hour', () => { expect(formatDuration(2000)).toBe('33m 20s'); }); - it('should work for less then a day', () => { + it('should work for less than a day', () => { expect(formatDuration(74566)).toBe('20h 42m'); }); - it('should work for more then a day', () => { + it('should work for more than a day', () => { expect(formatDuration(86400 * 3 + 3600 * 4)).toBe('3d 4h'); expect(formatDuration(86400 * 419 + 3600 * 6)).toBe('419d 6h'); }); From 7dd29a56ad89dc26d2381a8e537b4b11a3930f27 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 13 May 2021 15:36:06 -0600 Subject: [PATCH 24/27] [Security Solutions] Breaks down the io-ts packages to decrease plugin size (#100058) ## Summary The io-ts package was too large and needed to broken down more by domain to decrease the lists plugin size and any other plugin wanting to use the packages will not incur big hits as well. Before we had one large io-ts package: ``` @kbn/securitysolution-io-ts-utils ``` Now we have these broken down 4 packages: ``` @kbn/securitysolution-io-ts-utils @kbn/securitysolution-io-ts-types @kbn/securitysolution-io-ts-alerting-types @kbn/securitysolution-io-ts-list-types ``` Deps between these packages are: ``` @kbn/securitysolution-io-ts-utils (none) @kbn/securitysolution-io-ts-types -> @kbn/securitysolution-io-ts-utils @kbn/securitysolution-io-ts-alerting-types -> @kbn/securitysolution-io-ts-types, @kbn/securitysolution-io-ts-utils @kbn/securitysolution-io-ts-list-types -> @kbn/securitysolution-io-ts-types, @kbn/securitysolution-io-ts-utils ``` Short description and function of each (Also in each of their README.md): ``` @kbn/securitysolution-io-ts-utils, Smallest amount of utilities such as format, validate, etc... @kbn/securitysolution-io-ts-types, Base types such as to_number, to_string, etc... @kbn/securitysolution-io-ts-alerting-types, Alerting specific types such as severity, from, to, etc... @kbn/securitysolution-io-ts-list-types, list specific types such as exception lists, exception list types, etc... ``` ### Checklist Delete any items that are not applicable to this PR. - [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 --- package.json | 3 + packages/BUILD.bazel | 3 + .../BUILD.bazel | 94 +++++++++++++++++++ .../README.md | 8 ++ .../jest.config.js | 13 +++ .../package.json | 9 ++ .../src/actions/index.ts | 0 .../src/constants/index.mock.ts | 0 .../src/constants/index.ts | 0 .../src/default_actions_array/index.ts | 0 .../default_export_file_name/index.test.ts | 2 +- .../src/default_export_file_name/index.ts | 0 .../src/default_from_string/index.test.ts | 2 +- .../src/default_from_string/index.ts | 0 .../src/default_interval_string/index.test.ts | 2 +- .../src/default_interval_string/index.ts | 0 .../src/default_language_string/index.test.ts | 2 +- .../src/default_language_string/index.ts | 0 .../default_max_signals_number/index.test.ts | 2 +- .../src/default_max_signals_number/index.ts | 0 .../src/default_page/index.test.ts | 2 +- .../src/default_page/index.ts | 2 +- .../src/default_per_page/index.test.ts | 2 +- .../src/default_per_page/index.ts | 2 +- .../default_risk_score_mapping_array/index.ts | 0 .../default_severity_mapping_array/index.ts | 0 .../src/default_threat_array/index.test.ts | 2 +- .../src/default_threat_array/index.ts | 0 .../src/default_throttle_null/index.test.ts | 2 +- .../src/default_throttle_null/index.ts | 0 .../src/default_to_string/index.test.ts | 2 +- .../src/default_to_string/index.ts | 0 .../src/default_uuid/index.test.ts | 2 +- .../src/default_uuid/index.ts | 25 +++++ .../src/from/index.ts | 2 +- .../src/index.ts | 40 ++++++++ .../src/language/index.ts | 0 .../src/max_signals/index.ts | 2 +- .../src/normalized_ml_job_id/index.ts | 2 +- .../references_default_array/index.test.ts | 14 +-- .../src/references_default_array/index.ts | 0 .../src/risk_score/index.test.ts | 2 +- .../src/risk_score/index.ts | 0 .../src/risk_score_mapping/index.ts | 3 +- .../src/saved_object_attributes/index.ts | 0 .../src/severity/index.ts | 0 .../src/severity_mapping/index.ts | 2 +- .../src/threat/index.ts | 0 .../src/threat_mapping/index.test.ts | 3 +- .../src/threat_mapping/index.ts | 8 +- .../src/threat_subtechnique/index.ts | 0 .../src/threat_tactic/index.ts | 0 .../src/threat_technique/index.ts | 0 .../src/throttle/index.ts | 0 .../tsconfig.json | 19 ++++ .../BUILD.bazel | 94 +++++++++++++++++++ .../README.md | 8 ++ .../jest.config.js | 13 +++ .../package.json | 9 ++ .../src}/comment/index.mock.ts | 2 +- .../src}/comment/index.test.ts | 4 +- .../src}/comment/index.ts | 12 +-- .../src/constants/index.mock.ts | 24 +++++ .../src/constants/index.ts | 16 ++++ .../src}/create_comment/index.mock.ts | 0 .../src}/create_comment/index.test.ts | 2 +- .../src}/create_comment/index.ts | 2 +- .../src/created_at/index.ts | 0 .../src/created_by/index.ts | 0 .../src}/default_comments_array/index.test.ts | 2 +- .../src}/default_comments_array/index.ts | 0 .../index.test.ts | 2 +- .../default_create_comments_array/index.ts | 0 .../src}/default_namespace/index.test.ts | 2 +- .../src}/default_namespace/index.ts | 0 .../default_namespace_array/index.test.ts | 2 +- .../src}/default_namespace_array/index.ts | 0 .../index.test.ts | 2 +- .../default_update_comments_array/index.ts | 0 .../src/default_version_number}/index.test.ts | 2 +- .../src/default_version_number}/index.ts | 0 .../src/description/index.ts | 0 .../src}/endpoint/entries/index.mock.ts | 0 .../src}/endpoint/entries/index.test.ts | 2 +- .../src}/endpoint/entries/index.ts | 0 .../src}/endpoint/entry_match/index.mock.ts | 2 +- .../src}/endpoint/entry_match/index.test.ts | 2 +- .../src}/endpoint/entry_match/index.ts | 3 +- .../endpoint/entry_match_any/index.mock.ts | 2 +- .../endpoint/entry_match_any/index.test.ts | 2 +- .../src}/endpoint/entry_match_any/index.ts | 8 +- .../endpoint/entry_match_wildcard/index.ts | 3 +- .../src}/endpoint/entry_nested/index.mock.ts | 2 +- .../src}/endpoint/entry_nested/index.test.ts | 2 +- .../src}/endpoint/entry_nested/index.ts | 2 +- .../src}/endpoint/index.ts | 0 .../non_empty_nested_entries_array/index.ts | 0 .../src}/entries/index.mock.ts | 0 .../src}/entries/index.test.ts | 2 +- .../src}/entries/index.ts | 0 .../src}/entries_exist/index.mock.ts | 2 +- .../src}/entries_exist/index.test.ts | 2 +- .../src}/entries_exist/index.ts | 2 +- .../src}/entries_list/index.mock.ts | 2 +- .../src}/entries_list/index.test.ts | 2 +- .../src}/entries_list/index.ts | 2 +- .../src}/entry_match/index.mock.ts | 2 +- .../src}/entry_match/index.test.ts | 2 +- .../src}/entry_match/index.ts | 2 +- .../src}/entry_match_any/index.mock.ts | 2 +- .../src}/entry_match_any/index.test.ts | 2 +- .../src}/entry_match_any/index.ts | 3 +- .../src}/entry_match_wildcard/index.mock.ts | 2 +- .../src}/entry_match_wildcard/index.test.ts | 2 +- .../src}/entry_match_wildcard/index.ts | 2 +- .../src}/entry_nested/index.mock.ts | 2 +- .../src}/entry_nested/index.test.ts | 2 +- .../src}/entry_nested/index.ts | 2 +- .../src}/exception_list/index.ts | 0 .../src}/exception_list_item_type/index.ts | 0 .../src/id/index.ts | 2 +- .../src}/index.ts | 15 ++- .../src}/item_id/index.ts | 2 +- .../src}/list_operator/index.ts | 0 .../src}/lists/index.mock.ts | 2 +- .../src}/lists/index.test.ts | 2 +- .../src}/lists/index.ts | 2 +- .../src}/lists_default_array/index.test.ts | 2 +- .../src}/lists_default_array/index.ts | 0 .../src/meta/index.ts | 0 .../src/name/index.ts | 0 .../non_empty_entries_array/index.test.ts | 2 +- .../src}/non_empty_entries_array/index.ts | 0 .../index.test.ts | 2 +- .../non_empty_nested_entries_array/index.ts | 0 .../src}/os_type/index.ts | 2 +- .../src/tags/index.ts | 2 +- .../src}/type/index.ts | 0 .../src}/update_comment/index.mock.ts | 2 +- .../src}/update_comment/index.test.ts | 2 +- .../src}/update_comment/index.ts | 4 +- .../src/updated_at/index.ts | 0 .../src/updated_by/index.ts | 0 .../src/version/index.ts | 2 +- .../tsconfig.json | 19 ++++ .../BUILD.bazel | 93 ++++++++++++++++++ .../README.md | 8 ++ .../jest.config.js | 13 +++ .../package.json | 9 ++ .../src/default_array/index.test.ts | 2 +- .../src/default_array/index.ts | 0 .../src/default_boolean_false/index.test.ts | 2 +- .../src/default_boolean_false/index.ts | 0 .../src/default_boolean_true/index.test.ts | 2 +- .../src/default_boolean_true/index.ts | 0 .../src/default_empty_string/index.test.ts | 2 +- .../src/default_empty_string/index.ts | 0 .../src/default_string_array/index.test.ts | 2 +- .../src/default_string_array/index.ts | 0 .../index.test.ts | 2 +- .../src/default_string_boolean_false/index.ts | 0 .../src/default_uuid/index.test.ts | 43 +++++++++ .../src/default_uuid/index.ts | 0 .../src/empty_string_array/index.test.ts | 2 +- .../src/empty_string_array/index.ts | 0 .../src/index.ts | 28 ++++++ .../src/iso_date_string/index.test.ts | 2 +- .../src/iso_date_string/index.ts | 0 .../src/non_empty_array/index.test.ts | 2 +- .../src/non_empty_array/index.ts | 0 .../index.test.ts | 2 +- .../index.ts | 0 .../src/non_empty_string/index.test.ts | 2 +- .../src/non_empty_string/index.ts | 0 .../src/non_empty_string_array/index.test.ts | 2 +- .../src/non_empty_string_array/index.ts | 0 .../src/only_false_allowed/index.test.ts | 2 +- .../src/only_false_allowed/index.ts | 0 .../src/operator/index.ts | 0 .../src/parse_schedule_dates/index.ts | 4 - .../src/positive_integer/index.test.ts | 2 +- .../src/positive_integer/index.ts | 0 .../index.test.ts | 2 +- .../index.ts | 0 .../src/string_to_positive_number/index.ts | 0 .../src/uuid/index.test.ts | 2 +- .../src/uuid/index.ts | 0 .../tsconfig.json | 19 ++++ .../README.md | 14 +-- .../src/default_version_number/index.test.ts | 65 ------------- .../src/default_version_number/index.ts | 25 ----- .../src/index.ts | 64 ------------- x-pack/plugins/lists/common/constants.mock.ts | 2 +- .../build_exceptions_filter.test.ts | 2 +- .../exceptions/build_exceptions_filter.ts | 2 +- .../plugins/lists/common/exceptions/utils.ts | 2 +- .../common/schemas/common/schemas.test.ts | 6 +- .../lists/common/schemas/common/schemas.ts | 6 +- .../create_endpoint_list_item_schema.test.ts | 8 +- .../create_endpoint_list_item_schema.ts | 4 +- .../create_exception_list_item_schema.test.ts | 8 +- .../create_exception_list_item_schema.ts | 4 +- .../request/create_exception_list_schema.ts | 4 +- .../request/create_list_item_schema.ts | 2 +- .../schemas/request/create_list_schema.ts | 2 +- .../delete_endpoint_list_item_schema.ts | 2 +- .../delete_exception_list_item_schema.ts | 2 +- .../request/delete_exception_list_schema.ts | 2 +- .../request/delete_list_item_schema.ts | 2 +- .../schemas/request/delete_list_schema.ts | 3 +- .../export_exception_list_query_schema.ts | 2 +- .../request/find_endpoint_list_item_schema.ts | 2 +- .../find_exception_list_item_schema.ts | 8 +- .../request/find_exception_list_schema.ts | 7 +- .../schemas/request/find_list_item_schema.ts | 2 +- .../schemas/request/find_list_schema.ts | 2 +- .../request/import_list_item_query_schema.ts | 2 +- .../schemas/request/patch_list_item_schema.ts | 2 +- .../schemas/request/patch_list_schema.ts | 2 +- .../request/read_endpoint_list_item_schema.ts | 2 +- .../read_exception_list_item_schema.ts | 2 +- .../request/read_exception_list_schema.ts | 2 +- .../schemas/request/read_list_item_schema.ts | 2 +- .../schemas/request/read_list_schema.ts | 2 +- .../update_endpoint_list_item_schema.ts | 2 +- .../update_exception_list_item_schema.ts | 2 +- .../request/update_exception_list_schema.ts | 2 +- .../request/update_list_item_schema.ts | 2 +- .../schemas/request/update_list_schema.ts | 2 +- .../response/exception_list_item_schema.ts | 2 +- .../schemas/response/exception_list_schema.ts | 2 +- .../schemas/response/list_item_schema.ts | 2 +- .../common/schemas/response/list_schema.ts | 2 +- .../common/schemas/types/comment.mock.ts | 2 +- .../schemas/types/create_comment.mock.ts | 2 +- .../common/schemas/types/entries.mock.ts | 2 +- .../common/schemas/types/entry_exists.mock.ts | 2 +- .../common/schemas/types/entry_list.mock.ts | 2 +- .../common/schemas/types/entry_match.mock.ts | 2 +- .../schemas/types/entry_match_any.mock.ts | 2 +- .../types/entry_match_wildcard.mock.ts | 2 +- .../common/schemas/types/entry_nested.mock.ts | 2 +- .../schemas/types/update_comment.mock.ts | 2 +- x-pack/plugins/lists/common/shared_exports.ts | 2 +- .../components/builder/entry_renderer.tsx | 2 +- .../builder/exception_item_renderer.tsx | 2 +- .../builder/exception_items_renderer.tsx | 2 +- .../exceptions/components/builder/helpers.ts | 3 +- .../public/exceptions/transforms.test.ts | 2 +- .../plugins/lists/public/exceptions/types.ts | 2 +- .../plugins/lists/public/exceptions/utils.ts | 2 +- x-pack/plugins/lists/public/lists/types.ts | 2 +- .../lists/server/routes/delete_list_route.ts | 3 +- .../plugins/lists/server/routes/validate.ts | 6 +- .../lists/server/saved_objects/migrations.ts | 2 +- .../index_es_list_item_schema.ts | 2 +- .../elastic_query/index_es_list_schema.ts | 2 +- .../update_es_list_item_schema.ts | 2 +- .../elastic_query/update_es_list_schema.ts | 2 +- .../search_es_list_item_schema.ts | 2 +- .../elastic_response/search_es_list_schema.ts | 2 +- .../exceptions_list_so_schema.ts | 2 +- .../exception_lists/create_exception_list.ts | 2 +- .../create_exception_list_item.ts | 2 +- .../exception_lists/delete_exception_list.ts | 2 +- .../delete_exception_list_item.ts | 2 +- .../delete_exception_list_items_by_list.ts | 2 +- .../exception_list_client_types.ts | 8 +- .../exception_lists/find_exception_list.ts | 2 +- .../find_exception_list_item.ts | 2 +- .../find_exception_list_items.ts | 5 +- .../exception_lists/get_exception_list.ts | 2 +- .../get_exception_list_item.ts | 2 +- .../exception_lists/update_exception_list.ts | 2 +- .../update_exception_list_item.ts | 2 +- .../server/services/exception_lists/utils.ts | 2 +- .../server/services/items/create_list_item.ts | 2 +- .../services/items/create_list_items_bulk.ts | 2 +- .../server/services/items/delete_list_item.ts | 2 +- .../items/delete_list_item_by_value.ts | 2 +- .../server/services/items/get_list_item.ts | 2 +- .../services/items/get_list_item_by_value.ts | 2 +- .../services/items/get_list_item_by_values.ts | 2 +- .../items/search_list_item_by_values.ts | 2 +- .../server/services/items/update_list_item.ts | 2 +- .../items/write_lines_to_bulk_list_items.ts | 2 +- .../server/services/lists/create_list.ts | 2 +- .../lists/create_list_if_it_does_not_exist.ts | 8 +- .../server/services/lists/delete_list.ts | 2 +- .../lists/server/services/lists/get_list.ts | 2 +- .../services/lists/list_client_types.ts | 2 +- .../server/services/lists/update_list.ts | 2 +- .../services/utils/find_source_type.test.ts | 2 +- .../server/services/utils/find_source_type.ts | 2 +- .../services/utils/find_source_value.ts | 2 +- .../utils/get_query_filter_from_type_value.ts | 2 +- ...sform_elastic_named_search_to_list_item.ts | 2 +- .../utils/transform_elastic_to_list_item.ts | 2 +- .../transform_list_item_to_elastic_query.ts | 2 +- .../add_exception_modal/index.test.tsx | 2 +- .../edit_exception_modal/index.test.tsx | 2 +- .../components/exceptions/helpers.test.tsx | 2 +- .../endpoint/lib/artifacts/lists.test.ts | 2 +- .../server/endpoint/lib/artifacts/lists.ts | 2 +- .../filters/filter_events_against_list.ts | 2 +- yarn.lock | 9 ++ 306 files changed, 897 insertions(+), 423 deletions(-) create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/README.md create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/jest.config.js create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/package.json rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/actions/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/constants/index.mock.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/constants/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_actions_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_export_file_name/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_export_file_name/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_from_string/index.test.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_from_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_interval_string/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_interval_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_language_string/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_language_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_max_signals_number/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_max_signals_number/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_page/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_page/index.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_per_page/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_per_page/index.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_risk_score_mapping_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_severity_mapping_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_threat_array/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_threat_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_throttle_null/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_throttle_null/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_to_string/index.test.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_to_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_uuid/index.test.ts (95%) create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.ts rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/from/index.ts (92%) create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/language/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/max_signals/index.ts (86%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/normalized_ml_job_id/index.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/references_default_array/index.test.ts (77%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/references_default_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/risk_score/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/risk_score/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/risk_score_mapping/index.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/saved_object_attributes/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/severity/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/severity_mapping/index.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_mapping/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_mapping/index.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_subtechnique/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_tactic/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_technique/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/throttle/index.ts (100%) create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json create mode 100644 packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel create mode 100644 packages/kbn-securitysolution-io-ts-list-types/README.md create mode 100644 packages/kbn-securitysolution-io-ts-list-types/jest.config.js create mode 100644 packages/kbn-securitysolution-io-ts-list-types/package.json rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/comment/index.mock.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/comment/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/comment/index.ts (77%) create mode 100644 packages/kbn-securitysolution-io-ts-list-types/src/constants/index.mock.ts create mode 100644 packages/kbn-securitysolution-io-ts-list-types/src/constants/index.ts rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/create_comment/index.mock.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/create_comment/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/create_comment/index.ts (93%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/created_at/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/created_by/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_comments_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_comments_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_create_comments_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_create_comments_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_namespace/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_namespace/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_namespace_array/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_namespace_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_update_comments_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_update_comments_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/deafult_version_number => kbn-securitysolution-io-ts-list-types/src/default_version_number}/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils/src/deafult_version_number => kbn-securitysolution-io-ts-list-types/src/default_version_number}/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/description/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entries/index.mock.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entries/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entries/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match/index.mock.ts (86%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match/index.ts (84%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match_any/index.mock.ts (86%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match_any/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match_any/index.ts (76%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match_wildcard/index.ts (85%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_nested/index.mock.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_nested/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_nested/index.ts (91%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/non_empty_nested_entries_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries/index.mock.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_exist/index.mock.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_exist/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_exist/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_list/index.mock.ts (86%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_list/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_list/index.ts (91%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match/index.mock.ts (88%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_any/index.mock.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_any/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_any/index.ts (82%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_wildcard/index.mock.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_wildcard/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_wildcard/index.ts (91%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_nested/index.mock.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_nested/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_nested/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/exception_list/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/exception_list_item_type/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/id/index.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/index.ts (78%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/item_id/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/list_operator/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists/index.mock.ts (93%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists/index.ts (93%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists_default_array/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists_default_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/meta/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/name/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/non_empty_entries_array/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/non_empty_entries_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/non_empty_nested_entries_array/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/non_empty_nested_entries_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/os_type/index.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/tags/index.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/type/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/update_comment/index.mock.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/update_comment/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/update_comment/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/updated_at/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/updated_by/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/version/index.ts (90%) create mode 100644 packages/kbn-securitysolution-io-ts-list-types/tsconfig.json create mode 100644 packages/kbn-securitysolution-io-ts-types/BUILD.bazel create mode 100644 packages/kbn-securitysolution-io-ts-types/README.md create mode 100644 packages/kbn-securitysolution-io-ts-types/jest.config.js create mode 100644 packages/kbn-securitysolution-io-ts-types/package.json rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_boolean_false/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_boolean_false/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_boolean_true/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_boolean_true/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_empty_string/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_empty_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_string_array/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_string_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_string_boolean_false/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_string_boolean_false/index.ts (100%) create mode 100644 packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.test.ts rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_uuid/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/empty_string_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/empty_string_array/index.ts (100%) create mode 100644 packages/kbn-securitysolution-io-ts-types/src/index.ts rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/iso_date_string/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/iso_date_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_or_nullable_string_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_or_nullable_string_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_string/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_string_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_string_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/only_false_allowed/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/only_false_allowed/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/operator/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/parse_schedule_dates/index.ts (85%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/positive_integer/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/positive_integer/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/positive_integer_greater_than_zero/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/positive_integer_greater_than_zero/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/string_to_positive_number/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/uuid/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/uuid/index.ts (100%) create mode 100644 packages/kbn-securitysolution-io-ts-types/tsconfig.json delete mode 100644 packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.test.ts delete mode 100644 packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.ts diff --git a/package.json b/package.json index c04face1233ae..b79724dbb63bc 100644 --- a/package.json +++ b/package.json @@ -137,6 +137,9 @@ "@kbn/monaco": "link:packages/kbn-monaco", "@kbn/securitysolution-constants": "link:bazel-bin/packages/kbn-securitysolution-constants/npm_module", "@kbn/securitysolution-es-utils": "link:bazel-bin/packages/kbn-securitysolution-es-utils/npm_module", + "@kbn/securitysolution-io-ts-types": "link:bazel-bin/packages/kbn-securitysolution-io-ts-types/npm_module", + "@kbn/securitysolution-io-ts-alerting-types": "link:bazel-bin/packages/kbn-securitysolution-io-ts-alerting-types/npm_module", + "@kbn/securitysolution-io-ts-list-types": "link:bazel-bin/packages/kbn-securitysolution-io-ts-list-types/npm_module", "@kbn/securitysolution-io-ts-utils": "link:bazel-bin/packages/kbn-securitysolution-io-ts-utils/npm_module", "@kbn/securitysolution-utils": "link:bazel-bin/packages/kbn-securitysolution-utils/npm_module", "@kbn/server-http-tools": "link:packages/kbn-server-http-tools", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index c3d08ad49daea..a9c87043575fa 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -25,6 +25,9 @@ filegroup( "//packages/kbn-logging:build", "//packages/kbn-plugin-generator:build", "//packages/kbn-securitysolution-constants:build", + "//packages/kbn-securitysolution-io-ts-types:build", + "//packages/kbn-securitysolution-io-ts-alerting-types:build", + "//packages/kbn-securitysolution-io-ts-list-types:build", "//packages/kbn-securitysolution-io-ts-utils:build", "//packages/kbn-securitysolution-utils:build", "//packages/kbn-securitysolution-es-utils:build", diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel b/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel new file mode 100644 index 0000000000000..ba7123d0c1f21 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel @@ -0,0 +1,94 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-securitysolution-io-ts-alerting-types" +PKG_REQUIRE_NAME = "@kbn/securitysolution-io-ts-alerting-types" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/*.mock.*" + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", +] + +SRC_DEPS = [ + "//packages/kbn-securitysolution-io-ts-types", + "//packages/kbn-securitysolution-io-ts-utils", + "//packages/elastic-datemath", + "@npm//fp-ts", + "@npm//io-ts", + "@npm//lodash", + "@npm//moment", + "@npm//tslib", + "@npm//uuid", +] + +TYPES_DEPS = [ + "@npm//@types/flot", + "@npm//@types/jest", + "@npm//@types/lodash", + "@npm//@types/node", + "@npm//@types/uuid" +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/README.md b/packages/kbn-securitysolution-io-ts-alerting-types/README.md new file mode 100644 index 0000000000000..b8fa8234f2d85 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/README.md @@ -0,0 +1,8 @@ +# kbn-securitysolution-io-ts-alerting-types + +Types that are specific to the security solution alerting to be shared among plugins. + +Related packages are +* kbn-securitysolution-io-ts-utils +* kbn-securitysolution-io-ts-list-types +* kbn-securitysolution-io-ts-types \ No newline at end of file diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/jest.config.js b/packages/kbn-securitysolution-io-ts-alerting-types/jest.config.js new file mode 100644 index 0000000000000..6125b95a9bce5 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-securitysolution-io-ts-alerting-types'], +}; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/package.json b/packages/kbn-securitysolution-io-ts-alerting-types/package.json new file mode 100644 index 0000000000000..ac972e06c1dc9 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/package.json @@ -0,0 +1,9 @@ +{ + "name": "@kbn/securitysolution-io-ts-alerting-types", + "version": "1.0.0", + "description": "io ts utilities and types to be shared with plugins from the security solution project", + "license": "SSPL-1.0 OR Elastic License 2.0", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "private": true +} diff --git a/packages/kbn-securitysolution-io-ts-utils/src/actions/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/actions/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/actions/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/actions/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/constants/index.mock.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/constants/index.mock.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/constants/index.mock.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/constants/index.mock.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/constants/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/constants/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/constants/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/constants/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_actions_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_actions_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_actions_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_actions_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.test.ts index 1f81f056386d7..f0fe7f44a6f3e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultExportFileName } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_export_file_name', () => { test('it should validate a regular string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.test.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.test.ts index c1261f514540b..ccfb7923a230c 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultFromString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_from_string', () => { test('it should validate a from string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.test.ts index c4a0dc3664d0e..f5706677e6c5d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultIntervalString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_interval_string', () => { test('it should validate a interval string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.test.ts index 072c541a808a3..82bd8607dae72 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { Language } from '../language'; import { DefaultLanguageString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_language_string', () => { test('it should validate a string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.test.ts index bf703fa52d844..eb2af1dbea41a 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultMaxSignalsNumber } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { DEFAULT_MAX_SIGNALS } from '../constants'; describe('default_from_string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_page/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/default_page/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.test.ts index 3bcad15a7ebb8..cca1c7e2774f4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_page/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultPage } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_page', () => { test('it should validate a regular number greater than zero', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_page/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/default_page/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.ts index 056005b452a03..f9140be68ec8d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_page/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.ts @@ -8,7 +8,7 @@ import * as t from 'io-ts'; import { Either } from 'fp-ts/lib/Either'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; +import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; /** * Types the DefaultPerPage as: diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.test.ts index f7361ba12a570..88e91986a65dd 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultPerPage } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_per_page', () => { test('it should validate a regular number greater than zero', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.ts index 026642f91c08a..ea8f30c745062 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.ts @@ -8,7 +8,7 @@ import * as t from 'io-ts'; import { Either } from 'fp-ts/lib/Either'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; +import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; /** * Types the DefaultPerPage as: diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_risk_score_mapping_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_risk_score_mapping_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_risk_score_mapping_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_risk_score_mapping_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_severity_mapping_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_severity_mapping_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_severity_mapping_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_severity_mapping_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.test.ts index ac86b5508ff14..5f1ef3fc61fab 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { Threats } from '../threat'; import { DefaultThreatArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_threat_null', () => { test('it should validate an empty array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.test.ts index 4b8877bd532c2..b92815d4fe828 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { Throttle } from '../throttle'; import { DefaultThrottleNull } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_throttle_null', () => { test('it should validate a throttle string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.test.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.test.ts index bcab8ebd5f17c..31c35c8319fab 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultToString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_to_string', () => { test('it should validate a to string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.test.ts index d8cdff416037c..c471141a99a76 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultUuid } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_uuid', () => { test('it should validate a regular string', () => { diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.ts new file mode 100644 index 0000000000000..73bf807e92c43 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import * as t from 'io-ts'; +import { Either } from 'fp-ts/lib/Either'; +import uuid from 'uuid'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; + +/** + * Types the DefaultUuid as: + * - If null or undefined, then a default string uuid.v4() will be + * created otherwise it will be checked just against an empty string + */ +export const DefaultUuid = new t.Type( + 'DefaultUuid', + t.string.is, + (input, context): Either => + input == null ? t.success(uuid.v4()) : NonEmptyString.validate(input, context), + t.identity +); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/from/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/from/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts index 963e2fa0444f0..3bf4592a581f5 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/from/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts @@ -8,7 +8,7 @@ import { Either } from 'fp-ts/lib/Either'; import * as t from 'io-ts'; -import { parseScheduleDates } from '../parse_schedule_dates'; +import { parseScheduleDates } from '@kbn/securitysolution-io-ts-types'; const stringValidator = (input: unknown): input is string => typeof input === 'string'; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts new file mode 100644 index 0000000000000..639140be049f2 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './actions'; +export * from './constants'; +export * from './default_actions_array'; +export * from './default_export_file_name'; +export * from './default_from_string'; +export * from './default_interval_string'; +export * from './default_language_string'; +export * from './default_max_signals_number'; +export * from './default_page'; +export * from './default_per_page'; +export * from './default_risk_score_mapping_array'; +export * from './default_severity_mapping_array'; +export * from './default_threat_array'; +export * from './default_throttle_null'; +export * from './default_to_string'; +export * from './default_uuid'; +export * from './from'; +export * from './language'; +export * from './max_signals'; +export * from './normalized_ml_job_id'; +export * from './references_default_array'; +export * from './risk_score'; +export * from './risk_score_mapping'; +export * from './saved_object_attributes'; +export * from './severity'; +export * from './severity_mapping'; +export * from './threat'; +export * from './threat_mapping'; +export * from './threat_subtechnique'; +export * from './threat_tactic'; +export * from './threat_technique'; +export * from './throttle'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/language/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/language/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/language/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/language/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/max_signals/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts similarity index 86% rename from packages/kbn-securitysolution-io-ts-utils/src/max_signals/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts index 4c68cb01cf00f..83360234c65a1 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/max_signals/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts @@ -9,7 +9,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; +import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; export const max_signals = PositiveIntegerGreaterThanZero; export type MaxSignals = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/normalized_ml_job_id/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/normalized_ml_job_id/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/normalized_ml_job_id/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/normalized_ml_job_id/index.ts index 6c7eb0ae33ab9..db26264c029cd 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/normalized_ml_job_id/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/normalized_ml_job_id/index.ts @@ -10,7 +10,7 @@ import * as t from 'io-ts'; -import { NonEmptyArray } from '../non_empty_array'; +import { NonEmptyArray } from '@kbn/securitysolution-io-ts-types'; export const machine_learning_job_id_normalized = NonEmptyArray(t.string); export type MachineLearningJobIdNormalized = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.test.ts similarity index 77% rename from packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.test.ts index 41754a7ce0606..38fd27ac40fdf 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.test.ts @@ -8,13 +8,13 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { DefaultStringArray } from '../default_string_array'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { ReferencesDefaultArray } from '.'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_string_array', () => { test('it should validate an empty array', () => { const payload: string[] = []; - const decoded = DefaultStringArray.decode(payload); + const decoded = ReferencesDefaultArray.decode(payload); const message = pipe(decoded, foldLeftRight); expect(getPaths(left(message.errors))).toEqual([]); @@ -23,7 +23,7 @@ describe('default_string_array', () => { test('it should validate an array of strings', () => { const payload = ['value 1', 'value 2']; - const decoded = DefaultStringArray.decode(payload); + const decoded = ReferencesDefaultArray.decode(payload); const message = pipe(decoded, foldLeftRight); expect(getPaths(left(message.errors))).toEqual([]); @@ -32,18 +32,18 @@ describe('default_string_array', () => { test('it should not validate an array with a number', () => { const payload = ['value 1', 5]; - const decoded = DefaultStringArray.decode(payload); + const decoded = ReferencesDefaultArray.decode(payload); const message = pipe(decoded, foldLeftRight); expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultStringArray"', + 'Invalid value "5" supplied to "referencesWithDefaultArray"', ]); expect(message.schema).toEqual({}); }); test('it should return a default array entry', () => { const payload = null; - const decoded = DefaultStringArray.decode(payload); + const decoded = ReferencesDefaultArray.decode(payload); const message = pipe(decoded, foldLeftRight); expect(getPaths(left(message.errors))).toEqual([]); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.test.ts index bca8b92134928..d341ca8b3b4f7 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.test.ts @@ -8,7 +8,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { RiskScore } from '.'; describe('risk_score', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/risk_score_mapping/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/risk_score_mapping/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts index 1d7ca20e80b3b..b35b502811ec9 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/risk_score_mapping/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts @@ -9,10 +9,9 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; +import { operator } from '@kbn/securitysolution-io-ts-types'; import { RiskScore } from '../risk_score'; -import { operator } from '../operator'; - export const riskScoreOrUndefined = t.union([RiskScore, t.undefined]); export type RiskScoreOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/saved_object_attributes/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/saved_object_attributes/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/saved_object_attributes/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/saved_object_attributes/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/severity/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/severity/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/severity/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/severity/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/severity_mapping/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/severity_mapping/index.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/severity_mapping/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/severity_mapping/index.ts index 9e7ee7d2831cd..1a3fd50039c29 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/severity_mapping/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/severity_mapping/index.ts @@ -10,7 +10,7 @@ import * as t from 'io-ts'; -import { operator } from '../operator'; +import { operator } from '@kbn/securitysolution-io-ts-types'; import { severity } from '../severity'; export const severity_mapping_field = t.string; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/threat/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts index 7f754fb2d87de..16fd1647e5bfc 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts @@ -16,8 +16,7 @@ import { ThreatMappingEntries, threat_mapping, } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; -import { exactCheck } from '../exact_check'; +import { foldLeftRight, getPaths, exactCheck } from '@kbn/securitysolution-io-ts-utils'; describe('threat_mapping', () => { describe('threatMappingEntries', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.ts index 4fc64fe1e0982..abee0d2baceb0 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.ts @@ -9,10 +9,12 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; +import { + NonEmptyArray, + NonEmptyString, + PositiveIntegerGreaterThanZero, +} from '@kbn/securitysolution-io-ts-types'; import { language } from '../language'; -import { NonEmptyArray } from '../non_empty_array'; -import { NonEmptyString } from '../non_empty_string'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; export const threat_query = t.string; export type ThreatQuery = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_subtechnique/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_subtechnique/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_subtechnique/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_subtechnique/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_tactic/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_tactic/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_tactic/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_tactic/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_technique/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_technique/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_technique/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_technique/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/throttle/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/throttle/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/throttle/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/throttle/index.ts diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json b/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json new file mode 100644 index 0000000000000..3411ce2c93d05 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "incremental": true, + "outDir": "target", + "rootDir": "src", + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-alerting-types/src", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel b/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel new file mode 100644 index 0000000000000..e9b806288addd --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel @@ -0,0 +1,94 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-securitysolution-io-ts-list-types" +PKG_REQUIRE_NAME = "@kbn/securitysolution-io-list-types" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/*.mock.*" + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", +] + +SRC_DEPS = [ + "//packages/kbn-securitysolution-io-ts-types", + "//packages/kbn-securitysolution-io-ts-utils", + "//packages/elastic-datemath", + "@npm//fp-ts", + "@npm//io-ts", + "@npm//lodash", + "@npm//moment", + "@npm//tslib", + "@npm//uuid", +] + +TYPES_DEPS = [ + "@npm//@types/flot", + "@npm//@types/jest", + "@npm//@types/lodash", + "@npm//@types/node", + "@npm//@types/uuid" +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-securitysolution-io-ts-list-types/README.md b/packages/kbn-securitysolution-io-ts-list-types/README.md new file mode 100644 index 0000000000000..090ede2ed7d62 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/README.md @@ -0,0 +1,8 @@ +# kbn-securitysolution-io-ts-list-types + +io-ts types that are specific to lists to be shared among plugins + +Related packages are +* kbn-securitysolution-io-ts-alerting-types +* kbn-securitysolution-io-ts-ts-utils +* kbn-securitysolution-io-ts-types \ No newline at end of file diff --git a/packages/kbn-securitysolution-io-ts-list-types/jest.config.js b/packages/kbn-securitysolution-io-ts-list-types/jest.config.js new file mode 100644 index 0000000000000..0312733b6a02b --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-securitysolution-io-ts-list-types'], +}; diff --git a/packages/kbn-securitysolution-io-ts-list-types/package.json b/packages/kbn-securitysolution-io-ts-list-types/package.json new file mode 100644 index 0000000000000..74893e59855bc --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/package.json @@ -0,0 +1,9 @@ +{ + "name": "@kbn/securitysolution-io-ts-list-types", + "version": "1.0.0", + "description": "io ts utilities and types to be shared with plugins from the security solution project", + "license": "SSPL-1.0 OR Elastic License 2.0", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "private": true +} diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.mock.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/comment/index.mock.ts index 56440d628e4aa..380f7f13b6210 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.mock.ts @@ -7,7 +7,7 @@ */ import { Comment, CommentsArray } from '.'; -import { DATE_NOW, ID, USER } from '../../constants/index.mock'; +import { DATE_NOW, ID, USER } from '../constants/index.mock'; export const getCommentsMock = (): Comment => ({ comment: 'some old comment', diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/comment/index.test.ts index 0f0bfac5e2068..89e734a92fd04 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.test.ts @@ -17,8 +17,8 @@ import { CommentsArrayOrUndefined, commentsArrayOrUndefined, } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; -import { DATE_NOW } from '../../constants/index.mock'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; +import { DATE_NOW } from '../constants/index.mock'; describe('Comment', () => { describe('comment', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.ts similarity index 77% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/comment/index.ts index 783d8606b8a96..3b8cc6cc6ce95 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.ts @@ -8,12 +8,12 @@ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; -import { created_at } from '../../created_at'; -import { created_by } from '../../created_by'; -import { id } from '../../id'; -import { updated_at } from '../../updated_at'; -import { updated_by } from '../../updated_by'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; +import { created_at } from '../created_at'; +import { created_by } from '../created_by'; +import { id } from '../id'; +import { updated_at } from '../updated_at'; +import { updated_by } from '../updated_by'; export const comment = t.intersection([ t.exact( diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.mock.ts new file mode 100644 index 0000000000000..d2107ae864f15 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.mock.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +export const ENTRY_VALUE = 'some host name'; +export const FIELD = 'host.name'; +export const MATCH = 'match'; +export const MATCH_ANY = 'match_any'; +export const OPERATOR = 'included'; +export const NESTED = 'nested'; +export const NESTED_FIELD = 'parent.field'; +export const LIST_ID = 'some-list-id'; +export const LIST = 'list'; +export const TYPE = 'ip'; +export const EXISTS = 'exists'; +export const WILDCARD = 'wildcard'; +export const USER = 'some user'; +export const DATE_NOW = '2020-04-20T15:25:31.830Z'; + +// Exception List specific +export const ID = 'uuid_here'; diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.ts new file mode 100644 index 0000000000000..f86986fc328c5 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * This ID is used for _both_ the Saved Object ID and for the list_id + * for the single global space agnostic endpoint list. + * + * TODO: Create a kbn-securitysolution-constants and add this to it. + * @deprecated Use the ENDPOINT_LIST_ID from the kbn-securitysolution-constants. + */ +export const ENDPOINT_LIST_ID = 'endpoint_list'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.mock.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.mock.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.test.ts index 1ac605e232ea1..3baf0054221db 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.test.ts @@ -17,7 +17,7 @@ import { CreateCommentsArrayOrUndefined, createCommentsArrayOrUndefined, } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('CreateComment', () => { describe('createComment', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.ts similarity index 93% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.ts index 438f946e796d6..883675ce51f91 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; export const createComment = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/created_at/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/created_at/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/created_at/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/created_at/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/created_by/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/created_by/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/created_by/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/created_by/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.test.ts index 5e667380e2adf..440c601876682 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { CommentsArray } from '../comment'; import { DefaultCommentsArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getCommentsArrayMock } from '../comment/index.mock'; describe('default_comments_array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.test.ts index a4581fabbf6a9..de45fd9f300fa 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.test.ts @@ -8,7 +8,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { CommentsArray } from '../comment'; import { DefaultCommentsArray } from '../default_comments_array'; import { getCommentsArrayMock } from '../comment/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.test.ts index 1decca0de6c50..21e8c375b3d01 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultNamespace } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_namespace', () => { test('it should validate "single"', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.test.ts index 8bc7a16b96097..b02a3b96a5a3d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultNamespaceArray, DefaultNamespaceArrayType } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_namespace_array', () => { test('it should validate "null" single item as an array with a "single" value', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.test.ts index f52baa49530ec..fa6613538b18e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { UpdateCommentsArray } from '../update_comment'; import { DefaultUpdateCommentsArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getUpdateCommentsArrayMock } from '../update_comment/index.mock'; describe('default_update_comments_array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.test.ts index f77903d2d030d..fd7b12123b6bb 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultVersionNumber } from '../default_version_number'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_version_number', () => { test('it should validate a version number', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/description/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/description/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/description/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/description/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.mock.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.mock.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.test.ts index f5cb89ee79607..09f1740567bc1 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.test.ts @@ -14,7 +14,7 @@ import { nonEmptyEndpointEntriesArray, NonEmptyEndpointEntriesArray, } from '.'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEndpointEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEndpointEntryNestedMock } from '../entry_nested/index.mock'; import { getEndpointEntriesArrayMock } from './index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.mock.ts similarity index 86% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.mock.ts index 7104406c4869c..17a1a083d73d8 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.mock.ts @@ -7,7 +7,7 @@ */ import { EndpointEntryMatch } from '.'; -import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../../constants/index.mock'; export const getEndpointEntryMatchMock = (): EndpointEntryMatch => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.test.ts index cc0423fc119c7..fc3a2dded177d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEndpointEntryMatchMock } from './index.mock'; import { EndpointEntryMatch, endpointEntryMatch } from '.'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchMock } from '../../entry_match/index.mock'; describe('endpointEntryMatch', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.ts similarity index 84% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.ts index 83e2a0f61bb4a..07a1fc58a3d54 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.ts @@ -7,8 +7,7 @@ */ import * as t from 'io-ts'; -import { operatorIncluded } from '../../../operator'; -import { NonEmptyString } from '../../../non_empty_string'; +import { NonEmptyString, operatorIncluded } from '@kbn/securitysolution-io-ts-types'; export const endpointEntryMatch = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.mock.ts similarity index 86% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.mock.ts index 95bd6008f1d7c..13fb16d73457d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.mock.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../../constants/index.mock'; import { EndpointEntryMatchAny } from '.'; export const getEndpointEntryMatchAnyMock = (): EndpointEntryMatchAny => ({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.test.ts index 0fd878986d5a2..cf64647772519 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEndpointEntryMatchAnyMock } from './index.mock'; import { EndpointEntryMatchAny, endpointEntryMatchAny } from '.'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchAnyMock } from '../../entry_match_any/index.mock'; describe('endpointEntryMatchAny', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.ts similarity index 76% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.ts index b39a428bb49dd..23c15767a511c 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.ts @@ -7,9 +7,11 @@ */ import * as t from 'io-ts'; -import { nonEmptyOrNullableStringArray } from '../../../non_empty_or_nullable_string_array'; -import { operatorIncluded } from '../../../operator'; -import { NonEmptyString } from '../../../non_empty_string'; +import { + NonEmptyString, + nonEmptyOrNullableStringArray, + operatorIncluded, +} from '@kbn/securitysolution-io-ts-types'; export const endpointEntryMatchAny = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_wildcard/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_wildcard/index.ts similarity index 85% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_wildcard/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_wildcard/index.ts index b66c5a2588eef..2697f3edc3db4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_wildcard/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_wildcard/index.ts @@ -7,8 +7,7 @@ */ import * as t from 'io-ts'; -import { operatorIncluded } from '../../../operator'; -import { NonEmptyString } from '../../../non_empty_string'; +import { NonEmptyString, operatorIncluded } from '@kbn/securitysolution-io-ts-types'; export const endpointEntryMatchWildcard = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.mock.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.mock.ts index f59e29c8ce526..31d983ba58fe3 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.mock.ts @@ -7,7 +7,7 @@ */ import { EndpointEntryNested } from '.'; -import { FIELD, NESTED } from '../../../constants/index.mock'; +import { FIELD, NESTED } from '../../constants/index.mock'; import { getEndpointEntryMatchMock } from '../entry_match/index.mock'; import { getEndpointEntryMatchAnyMock } from '../entry_match_any/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.test.ts index 03c02f67b71ad..f8e54e4956527 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { EndpointEntryNested, endpointEntryNested } from '.'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEndpointEntryNestedMock } from './index.mock'; import { getEndpointEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.ts similarity index 91% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.ts index 249dcc9077b34..bd4c90d851a90 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { nonEmptyEndpointNestedEntriesArray } from '../non_empty_nested_entries_array'; export const endpointEntryNested = t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/non_empty_nested_entries_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/non_empty_nested_entries_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/non_empty_nested_entries_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/non_empty_nested_entries_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries/index.mock.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries/index.mock.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries/index.test.ts index b6e448f94ce6a..f68fea35e6fdf 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryMatchMock } from '../entry_match/index.mock'; import { entriesArray, entriesArrayOrUndefined, entry } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; import { getEntryListMock } from '../entries_list/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.mock.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.mock.ts index 0882883f4d239..ad2164a3862eb 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryExists } from '.'; -import { EXISTS, FIELD, OPERATOR } from '../../constants/index.mock'; +import { EXISTS, FIELD, OPERATOR } from '../constants/index.mock'; export const getEntryExistsMock = (): EntryExists => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.test.ts index db4edb54dfc29..05451b11de7a6 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryExistsMock } from './index.mock'; import { entriesExists, EntryExists } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesExists', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.ts index f8f1ddecc9ff9..6d65d458583bd 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.ts @@ -8,8 +8,8 @@ import * as t from 'io-ts'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { listOperator as operator } from '../list_operator'; -import { NonEmptyString } from '../../non_empty_string'; export const entriesExists = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.mock.ts similarity index 86% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.mock.ts index c4afb28f5ac54..2349b9d5ab2b3 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryList } from '.'; -import { FIELD, LIST, LIST_ID, OPERATOR, TYPE } from '../../constants/index.mock'; +import { FIELD, LIST, LIST_ID, OPERATOR, TYPE } from '../constants/index.mock'; export const getEntryListMock = (): EntryList => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.test.ts index 2be3803c356de..5b72242777875 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.test.ts @@ -11,7 +11,7 @@ import { left } from 'fp-ts/lib/Either'; import { getEntryListMock } from './index.mock'; import { entriesList, EntryList } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesList', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.ts similarity index 91% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.ts index b386ca35d2bbb..61d3c7b156fd2 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { type } from '../type'; import { listOperator as operator } from '../list_operator'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.mock.ts similarity index 88% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.mock.ts index 4fdd8d915fe04..38c9f0f922c46 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryMatch } from '.'; -import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../constants/index.mock'; export const getEntryMatchMock = (): EntryMatch => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.test.ts index 744c74c1223df..bff65ad7f6bec 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryMatchMock } from './index.mock'; import { entriesMatch, EntryMatch } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesMatch', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.ts index cab6d0dd4a07f..4f04e01cf8f63 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { listOperator as operator } from '../list_operator'; export const entriesMatch = t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.mock.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.mock.ts index 0022b00c604b0..efaf23fe1e784 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryMatchAny } from '.'; -import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../constants/index.mock'; export const getEntryMatchAnyMock = (): EntryMatchAny => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.test.ts index 60fc4cdc26005..c0eb017fdab54 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryMatchAnyMock } from './index.mock'; import { entriesMatchAny, EntryMatchAny } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesMatchAny', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.ts similarity index 82% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.ts index 0add9a610f30b..86e97c579a02c 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.ts @@ -8,9 +8,8 @@ import * as t from 'io-ts'; +import { NonEmptyString, nonEmptyOrNullableStringArray } from '@kbn/securitysolution-io-ts-types'; import { listOperator as operator } from '../list_operator'; -import { nonEmptyOrNullableStringArray } from '../../non_empty_or_nullable_string_array'; -import { NonEmptyString } from '../../non_empty_string'; export const entriesMatchAny = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.mock.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.mock.ts index 9810fe5e9875b..f81a8c6cba2ef 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryMatchWildcard } from '.'; -import { ENTRY_VALUE, FIELD, OPERATOR, WILDCARD } from '../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, OPERATOR, WILDCARD } from '../constants/index.mock'; export const getEntryMatchWildcardMock = (): EntryMatchWildcard => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.test.ts index d9170dd60ab40..8a5a152ce7e65 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryMatchWildcardMock } from './index.mock'; import { entriesMatchWildcard, EntryMatchWildcard } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesMatchWildcard', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.ts similarity index 91% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.ts index aab5ba5e8e32c..ea1953b983d45 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { listOperator as operator } from '../list_operator'; export const entriesMatchWildcard = t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.mock.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.mock.ts index acde4443cccb7..05f42cdf69bc0 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryNested } from '.'; -import { NESTED, NESTED_FIELD } from '../../constants/index.mock'; +import { NESTED, NESTED_FIELD } from '../constants/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; import { getEntryMatchExcludeMock, getEntryMatchMock } from '../entry_match/index.mock'; import { getEntryMatchAnyExcludeMock, getEntryMatchAnyMock } from '../entry_match_any/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.test.ts index b6bbc4dbef4a3..b21737535fd77 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryNestedMock } from './index.mock'; import { entriesNested, EntryNested } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.ts index ff224dd836a19..f5ac68cc98702 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { nonEmptyNestedEntriesArray } from '../non_empty_nested_entries_array'; export const entriesNested = t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/exception_list/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/exception_list/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/exception_list/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/exception_list/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/exception_list_item_type/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/exception_list_item_type/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/exception_list_item_type/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/exception_list_item_type/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/id/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/id/index.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/id/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/id/index.ts index 7b187d7730f73..5952bd2eda21f 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/id/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/id/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; export const id = NonEmptyString; export type Id = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/index.ts similarity index 78% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/index.ts index 9dd58e2a5a177..1a1c1c3314821 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/index.ts @@ -5,13 +5,19 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ + export * from './comment'; +export * from './constants'; export * from './create_comment'; +export * from './created_at'; +export * from './created_by'; export * from './default_comments_array'; export * from './default_create_comments_array'; export * from './default_namespace'; export * from './default_namespace_array'; export * from './default_update_comments_array'; +export * from './default_version_number'; +export * from './description'; export * from './endpoint'; export * from './entries'; export * from './entries_exist'; @@ -22,12 +28,19 @@ export * from './entry_match_wildcard'; export * from './entry_nested'; export * from './exception_list'; export * from './exception_list_item_type'; +export * from './id'; export * from './item_id'; +export * from './list_operator'; export * from './lists'; export * from './lists_default_array'; +export * from './meta'; +export * from './name'; export * from './non_empty_entries_array'; export * from './non_empty_nested_entries_array'; -export * from './list_operator'; export * from './os_type'; +export * from './tags'; export * from './type'; export * from './update_comment'; +export * from './updated_at'; +export * from './updated_by'; +export * from './version'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/item_id/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/item_id/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/item_id/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/item_id/index.ts index 171db8fd60fd1..dcb03884eadab 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/item_id/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/item_id/index.ts @@ -9,7 +9,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; export const item_id = NonEmptyString; export type ItemId = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/list_operator/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/list_operator/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/list_operator/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/list_operator/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.mock.ts similarity index 93% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists/index.mock.ts index c6f54b57d937b..e9f34c4cf789f 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.mock.ts @@ -7,7 +7,7 @@ */ import { List, ListArray } from '.'; -import { ENDPOINT_LIST_ID } from '../../constants'; +import { ENDPOINT_LIST_ID } from '../constants'; export const getListMock = (): List => ({ id: 'some_uuid', diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists/index.test.ts index 77d5e72ef8bc8..88dcc1ced8607 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEndpointListMock, getListArrayMock, getListMock } from './index.mock'; import { List, list, ListArray, listArray, ListArrayOrUndefined, listArrayOrUndefined } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('Lists', () => { describe('list', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.ts similarity index 93% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists/index.ts index 1bd1806564856..7881a6bb3322e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.ts @@ -7,9 +7,9 @@ */ import * as t from 'io-ts'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { exceptionListType } from '../exception_list'; import { namespaceType } from '../default_namespace'; -import { NonEmptyString } from '../../non_empty_string'; export const list = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.test.ts index 03d16d8e1b5ca..58a52d26aa34f 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultListArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getListArrayMock } from '../lists/index.mock'; describe('lists_default_array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/meta/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/meta/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/meta/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/meta/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/name/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/name/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/name/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/name/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.test.ts index 11e6e54b344a9..98976f3cd6d21 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { EntriesArray } from '../entries'; import { nonEmptyEntriesArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchMock } from '../entry_match/index.mock'; import { getEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.test.ts index 95b74a6d4fe43..8ac958577f8d7 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { EntriesArray } from '../entries'; import { nonEmptyNestedEntriesArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchMock } from '../entry_match/index.mock'; import { getEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/os_type/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/os_type/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/os_type/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/os_type/index.ts index 5ff60e05817d5..b7fa544c956ee 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/os_type/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/os_type/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { DefaultArray } from '../../default_array'; +import { DefaultArray } from '@kbn/securitysolution-io-ts-types'; export const osType = t.keyof({ linux: null, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/tags/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/tags/index.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/tags/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/tags/index.ts index 48bcca0551352..f0f23d9e4717d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/tags/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/tags/index.ts @@ -8,7 +8,7 @@ import * as t from 'io-ts'; -import { DefaultStringArray } from '../default_string_array'; +import { DefaultStringArray } from '@kbn/securitysolution-io-ts-types'; export const tags = DefaultStringArray; export type Tags = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/type/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/type/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/type/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/type/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.mock.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.mock.ts index 3b5cb256b28bf..e9a56119dcc20 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.mock.ts @@ -7,7 +7,7 @@ */ import { UpdateComment, UpdateCommentsArray } from '.'; -import { ID } from '../../constants/index.mock'; +import { ID } from '../constants/index.mock'; export const getUpdateCommentMock = (): UpdateComment => ({ comment: 'some comment', diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.test.ts index a6fc285f05465..8dd0301c54dd8 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.test.ts @@ -17,7 +17,7 @@ import { UpdateCommentsArrayOrUndefined, updateCommentsArrayOrUndefined, } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('CommentsUpdate', () => { describe('updateComment', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.ts index 496ff07c5616f..5499690c97716 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.ts @@ -7,8 +7,8 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; -import { id } from '../../id'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; +import { id } from '../id'; export const updateComment = t.intersection([ t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/updated_at/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/updated_at/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/updated_at/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/updated_at/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/updated_by/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/updated_by/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/updated_by/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/updated_by/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/version/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/version/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/version/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/version/index.ts index 38cb47ebce53e..97a81b546c841 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/version/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/version/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; +import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; /** * Note this is just a positive number, but we use it as a type here which is still ok. diff --git a/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json b/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json new file mode 100644 index 0000000000000..d926653a4230b --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "incremental": true, + "outDir": "target", + "rootDir": "src", + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-list-types/src", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-securitysolution-io-ts-types/BUILD.bazel b/packages/kbn-securitysolution-io-ts-types/BUILD.bazel new file mode 100644 index 0000000000000..0a21f5ed94f01 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/BUILD.bazel @@ -0,0 +1,93 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-securitysolution-io-ts-types" +PKG_REQUIRE_NAME = "@kbn/securitysolution-io-ts-types" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/*.mock.*" + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", +] + +SRC_DEPS = [ + "//packages/kbn-securitysolution-io-ts-utils", + "//packages/elastic-datemath", + "@npm//fp-ts", + "@npm//io-ts", + "@npm//lodash", + "@npm//moment", + "@npm//tslib", + "@npm//uuid", +] + +TYPES_DEPS = [ + "@npm//@types/flot", + "@npm//@types/jest", + "@npm//@types/lodash", + "@npm//@types/node", + "@npm//@types/uuid" +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-securitysolution-io-ts-types/README.md b/packages/kbn-securitysolution-io-ts-types/README.md new file mode 100644 index 0000000000000..552c663d819e3 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/README.md @@ -0,0 +1,8 @@ +# kbn-securitysolution-io-ts-types + +Generic io-ts types that are not specific to any particular domain for use with other packages or across different plugins/domains + +Related packages are: +* kbn-securitysolution-io-ts-utils +* kbn-securitysolution-io-ts-list-types +* kbn-securitysolution-io-ts-alerting-types \ No newline at end of file diff --git a/packages/kbn-securitysolution-io-ts-types/jest.config.js b/packages/kbn-securitysolution-io-ts-types/jest.config.js new file mode 100644 index 0000000000000..18d31eaa75219 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-securitysolution-io-ts-types'], +}; diff --git a/packages/kbn-securitysolution-io-ts-types/package.json b/packages/kbn-securitysolution-io-ts-types/package.json new file mode 100644 index 0000000000000..0381a6d24a136 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/package.json @@ -0,0 +1,9 @@ +{ + "name": "@kbn/securitysolution-io-ts-types", + "version": "1.0.0", + "description": "io ts utilities and types to be shared with plugins from the security solution project", + "license": "SSPL-1.0 OR Elastic License 2.0", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "private": true +} diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/default_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_array/index.test.ts index 82fa884b1c577..4ca45e7de3377 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_array/index.test.ts @@ -11,7 +11,7 @@ import * as t from 'io-ts'; import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; const testSchema = t.keyof({ valid: true, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.test.ts index bddf9cc0747ea..c87a67ec4e5d4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultBooleanFalse } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_boolean_false', () => { test('it should validate a boolean false', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.test.ts index a05fb586c2e92..3ec33fda392e4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultBooleanTrue } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_boolean_true', () => { test('it should validate a boolean false', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.test.ts index 5bdc9b298649e..02fb74510d604 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultEmptyString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_empty_string', () => { test('it should validate a regular string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.test.ts index c7137d9c56b0d..7b1f217f55ad5 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultStringArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_string_array', () => { test('it should validate an empty array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.test.ts index 2443e8f71fecd..3e96c942de74a 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultStringBooleanFalse } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_string_boolean_false', () => { test('it should validate a boolean false', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.ts diff --git a/packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.test.ts new file mode 100644 index 0000000000000..c471141a99a76 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.test.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { pipe } from 'fp-ts/lib/pipeable'; +import { left } from 'fp-ts/lib/Either'; +import { DefaultUuid } from '.'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; + +describe('default_uuid', () => { + test('it should validate a regular string', () => { + const payload = '1'; + const decoded = DefaultUuid.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + test('it should not validate a number', () => { + const payload = 5; + const decoded = DefaultUuid.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "DefaultUuid"']); + expect(message.schema).toEqual({}); + }); + + test('it should return a default of a uuid', () => { + const payload = null; + const decoded = DefaultUuid.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toMatch( + /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i + ); + }); +}); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.test.ts index 86ffba6eeb60a..5b7863947cad4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { EmptyStringArray, EmptyStringArrayEncoded } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('empty_string_array', () => { test('it should validate "null" and create an empty array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-types/src/index.ts b/packages/kbn-securitysolution-io-ts-types/src/index.ts new file mode 100644 index 0000000000000..8b5a4d9e4de9a --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/src/index.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './default_array'; +export * from './default_boolean_false'; +export * from './default_boolean_true'; +export * from './default_empty_string'; +export * from './default_string_array'; +export * from './default_string_boolean_false'; +export * from './default_uuid'; +export * from './empty_string_array'; +export * from './iso_date_string'; +export * from './non_empty_array'; +export * from './non_empty_or_nullable_string_array'; +export * from './non_empty_string'; +export * from './non_empty_string_array'; +export * from './operator'; +export * from './only_false_allowed'; +export * from './parse_schedule_dates'; +export * from './positive_integer'; +export * from './positive_integer_greater_than_zero'; +export * from './string_to_positive_number'; +export * from './uuid'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.test.ts index 4b73ed1b136dc..e70a738d7336e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { IsoDateString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('ios_date_string', () => { test('it should validate a iso string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.ts b/packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.test.ts index 0ea7eb5539ba9..0586195360142 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.test.ts @@ -11,7 +11,7 @@ import * as t from 'io-ts'; import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { NonEmptyArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; const testSchema = t.keyof({ valid: true, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.test.ts index fb2e91862d91e..355bd9d20061e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { nonEmptyOrNullableStringArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('nonEmptyOrNullableStringArray', () => { test('it should FAIL validation when given an empty array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.test.ts index 15c8ced8c915f..ae3b8cd9acad5 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.test.ts @@ -8,7 +8,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { NonEmptyString } from '.'; describe('non_empty_string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.test.ts index 9fec36f46dd27..f56fa7faed2a4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.test.ts @@ -8,7 +8,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { NonEmptyStringArray } from '.'; describe('non_empty_string_array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.test.ts index 7f06ec2153a50..de05872c0dc31 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { OnlyFalseAllowed } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('only_false_allowed', () => { test('it should validate a boolean false as false', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.ts b/packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/operator/index.ts b/packages/kbn-securitysolution-io-ts-types/src/operator/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/operator/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/operator/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/parse_schedule_dates/index.ts b/packages/kbn-securitysolution-io-ts-types/src/parse_schedule_dates/index.ts similarity index 85% rename from packages/kbn-securitysolution-io-ts-utils/src/parse_schedule_dates/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/parse_schedule_dates/index.ts index a2cc15d82391c..d6a99b5fbf880 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/parse_schedule_dates/index.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/parse_schedule_dates/index.ts @@ -9,10 +9,6 @@ import moment from 'moment'; import dateMath from '@elastic/datemath'; -/** - * TODO: Move this to kbn-securitysolution-utils - * @deprecated Use the parseScheduleDates from the kbn-securitysolution-utils. - */ export const parseScheduleDates = (time: string): moment.Moment | null => { const isValidDateString = !isNaN(Date.parse(time)); const isValidInput = isValidDateString || time.trim().startsWith('now'); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.test.ts index c6c841b746089..deea8951a3d39 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { PositiveInteger } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('positive_integer_greater_than_zero', () => { test('it should validate a positive number', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.ts b/packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.test.ts index 4655207a6448e..4ea6fe920cf14 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { PositiveIntegerGreaterThanZero } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('positive_integer_greater_than_zero', () => { test('it should validate a positive number', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.ts b/packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/string_to_positive_number/index.ts b/packages/kbn-securitysolution-io-ts-types/src/string_to_positive_number/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/string_to_positive_number/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/string_to_positive_number/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/uuid/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/uuid/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/uuid/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/uuid/index.test.ts index e8214ac60313f..4333fab102d44 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/uuid/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/uuid/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { UUID } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('uuid', () => { test('it should validate a uuid', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/uuid/index.ts b/packages/kbn-securitysolution-io-ts-types/src/uuid/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/uuid/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/uuid/index.ts diff --git a/packages/kbn-securitysolution-io-ts-types/tsconfig.json b/packages/kbn-securitysolution-io-ts-types/tsconfig.json new file mode 100644 index 0000000000000..42a059439ecb5 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "incremental": true, + "outDir": "target", + "rootDir": "src", + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-types/src", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-securitysolution-io-ts-utils/README.md b/packages/kbn-securitysolution-io-ts-utils/README.md index 908651b50b80a..146f965391aa0 100644 --- a/packages/kbn-securitysolution-io-ts-utils/README.md +++ b/packages/kbn-securitysolution-io-ts-utils/README.md @@ -1,10 +1,12 @@ # kbn-securitysolution-io-ts-utils -Temporary location for all the io-ts-utils from security solutions. This is a lift-and-shift, where -we are moving them here for phase 1. +Very small set of utilities for io-ts which we use across plugins within security solutions such as securitysolution, lists, cases, etc... +This folder should remain small and concise since it is pulled into front end and the more files we add the more weight will be added to all +of the plugins. Also, any new dependencies added to this will add weight here and the other plugins, so be careful of what is added here. -Phase 2 is deprecating across plugins any copied code or sharing of io-ts utils that are now in here. +You might consider making another package instead and putting a dependency on this one if needed, instead. -Phase 3 is replacing those deprecated types with the ones in here. - -Phase 4+ is (potentially) consolidating any duplication or everything altogether with the `kbn-io-ts-utils` project \ No newline at end of file +Related packages are +* kbn-securitysolution-io-ts-alerting-types +* kbn-securitysolution-io-ts-list-types +* kbn-securitysolution-io-ts-types \ No newline at end of file diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.test.ts b/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.test.ts deleted file mode 100644 index b9e9a3ff367e4..0000000000000 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.test.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { DefaultVersionNumber } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; - -describe('default_version_number', () => { - test('it should validate a version number', () => { - const payload = 5; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a 0', () => { - const payload = 0; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "0" supplied to "DefaultVersionNumber"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a -1', () => { - const payload = -1; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "DefaultVersionNumber"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a string', () => { - const payload = '5'; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultVersionNumber"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of 1', () => { - const payload = null; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(1); - }); -}); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.ts b/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.ts deleted file mode 100644 index 245ff9d0db7dd..0000000000000 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { version, Version } from '../version'; - -/** - * Types the DefaultVersionNumber as: - * - If null or undefined, then a default of the number 1 will be used - */ -export const DefaultVersionNumber = new t.Type( - 'DefaultVersionNumber', - version.is, - (input, context): Either => - input == null ? t.success(1) : version.validate(input, context), - t.identity -); - -export type DefaultVersionNumberDecoded = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/index.ts b/packages/kbn-securitysolution-io-ts-utils/src/index.ts index 1a18293393af5..c21096e497134 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/index.ts +++ b/packages/kbn-securitysolution-io-ts-utils/src/index.ts @@ -7,71 +7,7 @@ */ export * from './format_errors'; -export * from './actions'; -export * from './constants'; -export * from './created_at'; -export * from './created_by'; -export * from './default_version_number'; -export * from './default_actions_array'; -export * from './default_array'; -export * from './default_boolean_false'; -export * from './default_boolean_true'; -export * from './default_empty_string'; -export * from './default_export_file_name'; -export * from './default_from_string'; -export * from './default_interval_string'; -export * from './default_language_string'; -export * from './default_max_signals_number'; -export * from './default_page'; -export * from './default_per_page'; -export * from './default_risk_score_mapping_array'; -export * from './default_severity_mapping_array'; -export * from './default_string_array'; -export * from './default_string_boolean_false'; -export * from './default_threat_array'; -export * from './default_throttle_null'; -export * from './default_to_string'; -export * from './default_uuid'; -export * from './default_version_number'; -export * from './description'; -export * from './empty_string_array'; export * from './exact_check'; export * from './format_errors'; -export * from './from'; -export * from './id'; -export * from './iso_date_string'; -export * from './language'; -export * from './list_types'; -export * from './max_signals'; -export * from './meta'; -export * from './name'; -export * from './non_empty_array'; -export * from './non_empty_or_nullable_string_array'; -export * from './non_empty_string'; -export * from './non_empty_string_array'; -export * from './normalized_ml_job_id'; -export * from './only_false_allowed'; -export * from './operator'; -export * from './parse_schedule_dates'; -export * from './positive_integer'; -export * from './positive_integer_greater_than_zero'; -export * from './references_default_array'; -export * from './risk_score'; -export * from './risk_score_mapping'; -export * from './saved_object_attributes'; -export * from './severity'; -export * from './severity_mapping'; -export * from './string_to_positive_number'; -export * from './tags'; export * from './test_utils'; -export * from './threat'; -export * from './threat_mapping'; -export * from './threat_subtechnique'; -export * from './threat_tactic'; -export * from './threat_technique'; -export * from './throttle'; -export * from './updated_at'; -export * from './updated_by'; -export * from './uuid'; export * from './validate'; -export * from './version'; diff --git a/x-pack/plugins/lists/common/constants.mock.ts b/x-pack/plugins/lists/common/constants.mock.ts index 90f4825b97d43..325ed48113966 100644 --- a/x-pack/plugins/lists/common/constants.mock.ts +++ b/x-pack/plugins/lists/common/constants.mock.ts @@ -13,7 +13,7 @@ import { EntryMatch, EntryNested, OsTypeArray, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; export const DATE_NOW = '2020-04-20T15:25:31.830Z'; export const OLD_DATE_RELATIVE_TO_DATE_NOW = '2020-04-19T15:25:31.830Z'; diff --git a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.test.ts b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.test.ts index fa073b3b4cfb6..ae0cfbfbfc425 100644 --- a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.test.ts +++ b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryMatchAny } from '@kbn/securitysolution-io-ts-utils'; +import { EntryMatchAny } from '@kbn/securitysolution-io-ts-list-types'; import { getEntryMatchExcludeMock, getEntryMatchMock } from '../schemas/types/entry_match.mock'; import { diff --git a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts index 0fa069ba51013..eda81f91cd983 100644 --- a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts +++ b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts @@ -15,7 +15,7 @@ import { entriesMatch, entriesMatchAny, entriesNested, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { Filter } from '../../../../../src/plugins/data/common'; import { CreateExceptionListItemSchema, ExceptionListItemSchema } from '../schemas'; diff --git a/x-pack/plugins/lists/common/exceptions/utils.ts b/x-pack/plugins/lists/common/exceptions/utils.ts index 689687e44256a..f5881c1d3cbf4 100644 --- a/x-pack/plugins/lists/common/exceptions/utils.ts +++ b/x-pack/plugins/lists/common/exceptions/utils.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntriesArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; export const hasLargeValueList = (entries: EntriesArray): boolean => { const found = entries.filter(({ type }) => type === 'list'); diff --git a/x-pack/plugins/lists/common/schemas/common/schemas.test.ts b/x-pack/plugins/lists/common/schemas/common/schemas.test.ts index 2b007f01b56eb..c83691ead2ee6 100644 --- a/x-pack/plugins/lists/common/schemas/common/schemas.test.ts +++ b/x-pack/plugins/lists/common/schemas/common/schemas.test.ts @@ -11,15 +11,13 @@ import { ExceptionListTypeEnum, ListOperatorEnum as OperatorEnum, Type, - exactCheck, exceptionListType, - foldLeftRight, - getPaths, listOperator as operator, osType, osTypeArrayOrUndefined, type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('Common schemas', () => { describe('operator', () => { diff --git a/x-pack/plugins/lists/common/schemas/common/schemas.ts b/x-pack/plugins/lists/common/schemas/common/schemas.ts index eb84ee07981f3..612b7ea559e4a 100644 --- a/x-pack/plugins/lists/common/schemas/common/schemas.ts +++ b/x-pack/plugins/lists/common/schemas/common/schemas.ts @@ -8,18 +8,20 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; -import { DefaultNamespace, NonEmptyString } from '@kbn/securitysolution-io-ts-utils'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; +import { DefaultNamespace } from '@kbn/securitysolution-io-ts-list-types'; /** * @deprecated Directly use the type from the package and not from here */ export { + DefaultNamespace, Type, OsType, OsTypeArray, listOperator as operator, NonEmptyEntriesArray, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; export const list_id = NonEmptyString; export type ListId = t.TypeOf; diff --git a/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.test.ts b/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.test.ts index 30f3acc8a164a..e6287a87c86ef 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.test.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.test.ts @@ -7,12 +7,8 @@ import { left } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; -import { - CommentsArray, - exactCheck, - foldLeftRight, - getPaths, -} from '@kbn/securitysolution-io-ts-utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; +import { CommentsArray } from '@kbn/securitysolution-io-ts-list-types'; import { getCreateCommentsArrayMock } from '../types/create_comment.mock'; import { getCommentsMock } from '../types/comment.mock'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.ts index af58c61dbaf9f..322e31aacd040 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.ts @@ -9,7 +9,6 @@ import * as t from 'io-ts'; import { CreateCommentsArray, DefaultCreateCommentsArray, - DefaultUuid, EntriesArray, OsTypeArray, Tags, @@ -20,7 +19,8 @@ import { nonEmptyEndpointEntriesArray, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { DefaultUuid } from '@kbn/securitysolution-io-ts-types'; import { ItemId } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.test.ts b/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.test.ts index 1bb58d6195e7c..7e8d16663cf5d 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.test.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.test.ts @@ -7,12 +7,8 @@ import { left } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; -import { - CommentsArray, - exactCheck, - foldLeftRight, - getPaths, -} from '@kbn/securitysolution-io-ts-utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; +import { CommentsArray } from '@kbn/securitysolution-io-ts-list-types'; import { getCreateCommentsArrayMock } from '../types/create_comment.mock'; import { getCommentsMock } from '../types/comment.mock'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.ts index da5630ef3f002..d37c7f7aa67b2 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.ts @@ -9,7 +9,6 @@ import * as t from 'io-ts'; import { CreateCommentsArray, DefaultCreateCommentsArray, - DefaultUuid, EntriesArray, NamespaceType, OsTypeArray, @@ -21,7 +20,8 @@ import { nonEmptyEntriesArray, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { DefaultUuid } from '@kbn/securitysolution-io-ts-types'; import { ItemId, list_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts index 42955ddbd7017..91b3a98bdd5ac 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts @@ -7,7 +7,6 @@ import * as t from 'io-ts'; import { - DefaultUuid, DefaultVersionNumber, DefaultVersionNumberDecoded, NamespaceType, @@ -19,7 +18,8 @@ import { name, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { DefaultUuid } from '@kbn/securitysolution-io-ts-types'; import { ListId, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_list_item_schema.ts index 867b441960a2c..d11bd03ced916 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id, meta } from '@kbn/securitysolution-io-ts-utils'; +import { id, meta } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, value } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts index 8ac36cc3ad28e..5fa9da0cdc597 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts @@ -14,7 +14,7 @@ import { meta, name, type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { deserializer, serializer } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_endpoint_list_item_schema.ts index b8ff0834e8fb8..0b714885437a8 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_endpoint_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { item_id } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_exception_list_item_schema.ts index cc188bf52d75c..5c6fc9c158b3b 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_exception_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { NamespaceType, id } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, id } from '@kbn/securitysolution-io-ts-list-types'; import { item_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_exception_list_schema.ts index b816c08beb363..2d1d00a6759cf 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_exception_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { NamespaceType, id } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_list_item_schema.ts index 5b4aa63d2d090..9cb46b3e36f45 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, valueOrUndefined } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_list_schema.ts index 003dfdc6bd466..0d6bbc73a2571 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_list_schema.ts @@ -6,7 +6,8 @@ */ import * as t from 'io-ts'; -import { DefaultStringBooleanFalse, id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; +import { DefaultStringBooleanFalse } from '@kbn/securitysolution-io-ts-types'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/export_exception_list_query_schema.ts b/x-pack/plugins/lists/common/schemas/request/export_exception_list_query_schema.ts index d3c18f0d1c485..47bb1b70ad8b7 100644 --- a/x-pack/plugins/lists/common/schemas/request/export_exception_list_query_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/export_exception_list_query_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, namespace_type } from '../common/schemas'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_endpoint_list_item_schema.ts index 13f45a070b2b7..06b28ea6cbb4e 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_endpoint_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-utils'; +import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-types'; import { filter, sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_exception_list_item_schema.ts index 4abceb4b3592d..d92bfbec02f5a 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_exception_list_item_schema.ts @@ -7,13 +7,15 @@ import * as t from 'io-ts'; import { - DefaultNamespaceArray, - DefaultNamespaceArrayTypeDecoded, EmptyStringArray, EmptyStringArrayDecoded, NonEmptyStringArray, StringToPositiveNumber, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-types'; +import { + DefaultNamespaceArray, + DefaultNamespaceArrayTypeDecoded, +} from '@kbn/securitysolution-io-ts-list-types'; import { sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_exception_list_schema.ts index ea5b5c5aafdb6..6cf31c56ea599 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_exception_list_schema.ts @@ -6,11 +6,8 @@ */ import * as t from 'io-ts'; -import { - DefaultNamespaceArray, - NamespaceTypeArray, - StringToPositiveNumber, -} from '@kbn/securitysolution-io-ts-utils'; +import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-types'; +import { DefaultNamespaceArray, NamespaceTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { filter, sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_list_item_schema.ts index 6adf53d0eda86..e0d072780bbf8 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-utils'; +import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-types'; import { cursor, filter, list_id, sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_list_schema.ts index bf6a68d97a58e..4d929d581370c 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-utils'; +import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-types'; import { cursor, filter, sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/import_list_item_query_schema.ts b/x-pack/plugins/lists/common/schemas/request/import_list_item_query_schema.ts index 85644ff556443..cef803ffa5e45 100644 --- a/x-pack/plugins/lists/common/schemas/request/import_list_item_query_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/import_list_item_query_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { type } from '@kbn/securitysolution-io-ts-utils'; +import { type } from '@kbn/securitysolution-io-ts-list-types'; import { RequiredKeepUndefined } from '../../types'; import { deserializer, list_id, serializer } from '../common/schemas'; diff --git a/x-pack/plugins/lists/common/schemas/request/patch_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/patch_list_item_schema.ts index edea4f161f248..2989919421a3c 100644 --- a/x-pack/plugins/lists/common/schemas/request/patch_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/patch_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id, meta } from '@kbn/securitysolution-io-ts-utils'; +import { id, meta } from '@kbn/securitysolution-io-ts-list-types'; import { _version, value } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts index 144bf9c0f28a0..eea4ba9fc87d7 100644 --- a/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { description, id, meta, name } from '@kbn/securitysolution-io-ts-utils'; +import { description, id, meta, name } from '@kbn/securitysolution-io-ts-list-types'; import { _version, version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_endpoint_list_item_schema.ts index 116c70012c17e..3f221b473f432 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_endpoint_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { item_id } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_exception_list_item_schema.ts index a0bd46b30d2f6..9094296e56196 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_exception_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { NamespaceType, id } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, id } from '@kbn/securitysolution-io-ts-list-types'; import { item_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_exception_list_schema.ts index fc8a6ee43a5a2..9a361e04900ed 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_exception_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { NamespaceType, id } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_list_item_schema.ts index 450719f42ad4a..0bfa99ee078a1 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, value } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_list_schema.ts index e07e2de1a4b80..5d850b19c4d11 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; export const readListSchema = t.exact( t.type({ diff --git a/x-pack/plugins/lists/common/schemas/request/update_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_endpoint_list_item_schema.ts index d9e602419d61d..011ff24b7fa22 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_endpoint_list_item_schema.ts @@ -20,7 +20,7 @@ import { nonEmptyEntriesArray, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/update_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_exception_list_item_schema.ts index f3b87c5ff5925..1c751dd3a8c83 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_exception_list_item_schema.ts @@ -21,7 +21,7 @@ import { nonEmptyEntriesArray, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _version, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts index c8b354eff4d9e..c58c1c253a8c4 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts @@ -17,7 +17,7 @@ import { name, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _version, list_id, namespace_type, version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/update_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_list_item_schema.ts index 84916f15a59f6..f24902a12d3b7 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id, meta } from '@kbn/securitysolution-io-ts-utils'; +import { id, meta } from '@kbn/securitysolution-io-ts-list-types'; import { _version, value } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts index 6f520d399d577..230853e69fae4 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { description, id, meta, name, version } from '@kbn/securitysolution-io-ts-utils'; +import { description, id, meta, name, version } from '@kbn/securitysolution-io-ts-list-types'; import { _version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/response/exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/response/exception_list_item_schema.ts index 769cfb3548ced..0b6f8a7640529 100644 --- a/x-pack/plugins/lists/common/schemas/response/exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/exception_list_item_schema.ts @@ -20,7 +20,7 @@ import { tags, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _versionOrUndefined, diff --git a/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts index 880c2d4f89e4f..7bfc2af9863e2 100644 --- a/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts @@ -18,7 +18,7 @@ import { tags, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _versionOrUndefined, diff --git a/x-pack/plugins/lists/common/schemas/response/list_item_schema.ts b/x-pack/plugins/lists/common/schemas/response/list_item_schema.ts index 1f105afac8b44..3f11718bc42e6 100644 --- a/x-pack/plugins/lists/common/schemas/response/list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/list_item_schema.ts @@ -14,7 +14,7 @@ import { type, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _versionOrUndefined, diff --git a/x-pack/plugins/lists/common/schemas/response/list_schema.ts b/x-pack/plugins/lists/common/schemas/response/list_schema.ts index 58abe94772ff6..21504d64fdeaa 100644 --- a/x-pack/plugins/lists/common/schemas/response/list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/list_schema.ts @@ -16,7 +16,7 @@ import { type, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _versionOrUndefined, diff --git a/x-pack/plugins/lists/common/schemas/types/comment.mock.ts b/x-pack/plugins/lists/common/schemas/types/comment.mock.ts index 75b4b6a431ac3..5963cb4947a85 100644 --- a/x-pack/plugins/lists/common/schemas/types/comment.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/comment.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Comment, CommentsArray } from '@kbn/securitysolution-io-ts-utils'; +import { Comment, CommentsArray } from '@kbn/securitysolution-io-ts-list-types'; import { DATE_NOW, ID, USER } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/create_comment.mock.ts b/x-pack/plugins/lists/common/schemas/types/create_comment.mock.ts index 2d8dd7b462258..868c43fe5d6da 100644 --- a/x-pack/plugins/lists/common/schemas/types/create_comment.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/create_comment.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { CreateComment, CreateCommentsArray } from '@kbn/securitysolution-io-ts-utils'; +import { CreateComment, CreateCommentsArray } from '@kbn/securitysolution-io-ts-list-types'; export const getCreateCommentsMock = (): CreateComment => ({ comment: 'some comments', diff --git a/x-pack/plugins/lists/common/schemas/types/entries.mock.ts b/x-pack/plugins/lists/common/schemas/types/entries.mock.ts index ee43a0b26ad54..caa62c55c93bb 100644 --- a/x-pack/plugins/lists/common/schemas/types/entries.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entries.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntriesArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; import { getEntryMatchMock } from './entry_match.mock'; import { getEntryMatchAnyMock } from './entry_match_any.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_exists.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_exists.mock.ts index 3e26d261f44ca..6165184d2a404 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_exists.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_exists.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryExists } from '@kbn/securitysolution-io-ts-utils'; +import { EntryExists } from '@kbn/securitysolution-io-ts-list-types'; import { EXISTS, FIELD, OPERATOR } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_list.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_list.mock.ts index 7eadfcdf3454c..1cdc86d95ed88 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_list.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_list.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryList } from '@kbn/securitysolution-io-ts-utils'; +import { EntryList } from '@kbn/securitysolution-io-ts-list-types'; import { FIELD, LIST, LIST_ID, OPERATOR, TYPE } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_match.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_match.mock.ts index bc0eb3b5c4f85..efcd1e0877d1b 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_match.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_match.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryMatch } from '@kbn/securitysolution-io-ts-utils'; +import { EntryMatch } from '@kbn/securitysolution-io-ts-list-types'; import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_match_any.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_match_any.mock.ts index 74c3abbaa5881..60613fc72baba 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_match_any.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_match_any.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryMatchAny } from '@kbn/securitysolution-io-ts-utils'; +import { EntryMatchAny } from '@kbn/securitysolution-io-ts-list-types'; import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_match_wildcard.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_match_wildcard.mock.ts index 320664bd2f833..17e0cbd25901c 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_match_wildcard.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_match_wildcard.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryMatchWildcard } from '@kbn/securitysolution-io-ts-utils'; +import { EntryMatchWildcard } from '@kbn/securitysolution-io-ts-list-types'; import { ENTRY_VALUE, FIELD, OPERATOR, WILDCARD } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_nested.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_nested.mock.ts index f1d0a2bc76926..2497c3d4c3ce2 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_nested.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_nested.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryNested } from '@kbn/securitysolution-io-ts-utils'; +import { EntryNested } from '@kbn/securitysolution-io-ts-list-types'; import { NESTED, NESTED_FIELD } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/update_comment.mock.ts b/x-pack/plugins/lists/common/schemas/types/update_comment.mock.ts index dea0f9a08fc4c..783b595850bc5 100644 --- a/x-pack/plugins/lists/common/schemas/types/update_comment.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/update_comment.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { UpdateComment, UpdateCommentsArray } from '@kbn/securitysolution-io-ts-utils'; +import { UpdateComment, UpdateCommentsArray } from '@kbn/securitysolution-io-ts-list-types'; import { ID } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/shared_exports.ts b/x-pack/plugins/lists/common/shared_exports.ts index 38eb5aeee8cd2..bc9d0ca8d7b94 100644 --- a/x-pack/plugins/lists/common/shared_exports.ts +++ b/x-pack/plugins/lists/common/shared_exports.ts @@ -42,7 +42,7 @@ export { osTypeArray, OsTypeArray, Type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; export { ListSchema, diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx index 28d7469d18910..0ece28d409bd5 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useMemo } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiFormRow } from '@elastic/eui'; import styled from 'styled-components'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { AutocompleteStart } from '../../../../../../../src/plugins/data/public'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/common'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx index 5f094a64c3660..94c3bff8f4cf9 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx @@ -10,7 +10,7 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import styled from 'styled-components'; import { HttpStart } from 'kibana/public'; import { AutocompleteStart } from 'src/plugins/data/public'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListType } from '../../../../common'; import { IIndexPattern } from '../../../../../../../src/plugins/data/common'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx index 646803f2e6794..4ec152e155e39 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx @@ -10,7 +10,7 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import styled from 'styled-components'; import { HttpStart } from 'kibana/public'; import { addIdToItem } from '@kbn/securitysolution-utils'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { AutocompleteStart, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts index 6d3bdd09c93ea..18d607d6807fc 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts +++ b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts @@ -7,7 +7,8 @@ import uuid from 'uuid'; import { addIdToItem, removeIdFromItem } from '@kbn/securitysolution-utils'; -import { OsTypeArray, validate } from '@kbn/securitysolution-io-ts-utils'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { diff --git a/x-pack/plugins/lists/public/exceptions/transforms.test.ts b/x-pack/plugins/lists/public/exceptions/transforms.test.ts index c5c43b16d6428..b2a1efc1d2c1d 100644 --- a/x-pack/plugins/lists/public/exceptions/transforms.test.ts +++ b/x-pack/plugins/lists/public/exceptions/transforms.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Entry, EntryMatch, EntryNested } from '@kbn/securitysolution-io-ts-utils'; +import { Entry, EntryMatch, EntryNested } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema } from '../../common/schemas/response/exception_list_item_schema'; import { UpdateExceptionListItemSchema } from '../../common/schemas/request/update_exception_list_item_schema'; diff --git a/x-pack/plugins/lists/public/exceptions/types.ts b/x-pack/plugins/lists/public/exceptions/types.ts index a2842d81a7292..0cad700b2b598 100644 --- a/x-pack/plugins/lists/public/exceptions/types.ts +++ b/x-pack/plugins/lists/public/exceptions/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ExceptionListType, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { ExceptionListType, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { CreateExceptionListItemSchema, diff --git a/x-pack/plugins/lists/public/exceptions/utils.ts b/x-pack/plugins/lists/public/exceptions/utils.ts index 6324fdf1df420..c840a25b2a103 100644 --- a/x-pack/plugins/lists/public/exceptions/utils.ts +++ b/x-pack/plugins/lists/public/exceptions/utils.ts @@ -6,7 +6,7 @@ */ import { get } from 'lodash/fp'; -import { NamespaceType, NamespaceTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, NamespaceTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_TRUSTED_APPS_LIST_ID } from '../../common/constants'; import { diff --git a/x-pack/plugins/lists/public/lists/types.ts b/x-pack/plugins/lists/public/lists/types.ts index 6708620439803..ad82a63163ce3 100644 --- a/x-pack/plugins/lists/public/lists/types.ts +++ b/x-pack/plugins/lists/public/lists/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { HttpStart } from '../../../../../src/core/public'; diff --git a/x-pack/plugins/lists/server/routes/delete_list_route.ts b/x-pack/plugins/lists/server/routes/delete_list_route.ts index 033c49aa7b235..78235584bc0cd 100644 --- a/x-pack/plugins/lists/server/routes/delete_list_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_list_route.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { EntriesArray, validate } from '@kbn/securitysolution-io-ts-utils'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; diff --git a/x-pack/plugins/lists/server/routes/validate.ts b/x-pack/plugins/lists/server/routes/validate.ts index 005d9e85f4853..2577770cf32ef 100644 --- a/x-pack/plugins/lists/server/routes/validate.ts +++ b/x-pack/plugins/lists/server/routes/validate.ts @@ -8,14 +8,12 @@ import { pipe } from 'fp-ts/lib/pipeable'; import * as t from 'io-ts'; import { fold } from 'fp-ts/lib/Either'; +import { exactCheck, formatErrors, validate } from '@kbn/securitysolution-io-ts-utils'; import { NamespaceType, NonEmptyEntriesArray, - exactCheck, - formatErrors, nonEmptyEndpointEntriesArray, - validate, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListClient } from '../services/exception_lists/exception_list_client'; import { MAX_EXCEPTION_LIST_SIZE } from '../../common/constants'; diff --git a/x-pack/plugins/lists/server/saved_objects/migrations.ts b/x-pack/plugins/lists/server/saved_objects/migrations.ts index 316c5f1311774..485bd493f309e 100644 --- a/x-pack/plugins/lists/server/saved_objects/migrations.ts +++ b/x-pack/plugins/lists/server/saved_objects/migrations.ts @@ -13,7 +13,7 @@ import { OsTypeArray, entriesNested, entry, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_LIST_ID, ENDPOINT_TRUSTED_APPS_LIST_ID } from '../../common/constants'; import { ExceptionListSoSchema } from '../schemas/saved_objects'; diff --git a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_item_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_item_schema.ts index 696434a616c53..42788c15736b7 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_item_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_item_schema.ts @@ -12,7 +12,7 @@ import { metaOrUndefined, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { esDataTypeUnion } from '../common/schemas'; import { diff --git a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts index c69abaf785dec..4383e93346291 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts @@ -15,7 +15,7 @@ import { type, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { deserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_item_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_item_schema.ts index 1f49943a910bc..383b6f339bb58 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_item_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { metaOrUndefined, updated_at, updated_by } from '@kbn/securitysolution-io-ts-utils'; +import { metaOrUndefined, updated_at, updated_by } from '@kbn/securitysolution-io-ts-list-types'; import { esDataTypeUnion } from '../common/schemas'; diff --git a/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_schema.ts index fbeac92c66bdd..fe73d0fb9207f 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_schema.ts @@ -12,7 +12,7 @@ import { nameOrUndefined, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; export const updateEsListSchema = t.exact( t.type({ diff --git a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts index 8ac88a1610ea7..c787f70bfa675 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts @@ -12,7 +12,7 @@ import { metaOrUndefined, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { binaryOrUndefined, diff --git a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts index a060ebda04a46..536269b9c0ae2 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts @@ -15,7 +15,7 @@ import { type, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { deserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts b/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts index f6d2e891a60d0..c1f480e50c8f7 100644 --- a/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts +++ b/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts @@ -19,7 +19,7 @@ import { osTypeArray, tags, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { immutableOrUndefined, diff --git a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts index ef4ceb2f12922..5f2587fc1e986 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts @@ -14,7 +14,7 @@ import { Name, NamespaceType, Tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListSchema, Immutable, ListId, Version } from '../../../common/schemas'; import { ExceptionListSoSchema } from '../../schemas/saved_objects'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list_item.ts index 5f88244171f6a..0bcc888a4c313 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list_item.ts @@ -17,7 +17,7 @@ import { NamespaceType, OsTypeArray, Tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema, ItemId, ListId } from '../../../common/schemas'; import { ExceptionListSoSchema } from '../../schemas/saved_objects'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list.ts index afe9106e28d82..201cb9544a8f3 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list.ts @@ -6,7 +6,7 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; -import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListSchema, ListIdOrUndefined } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_item.ts index d0e1d2283cc6f..9f735fd51c7f2 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_item.ts @@ -6,7 +6,7 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; -import { Id, IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { Id, IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema, ItemIdOrUndefined } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_items_by_list.ts b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_items_by_list.ts index d9ec08b818f2d..b08872eac8e01 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_items_by_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_items_by_list.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectsClientContract } from '../../../../../../src/core/server/'; import { ListId } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts index 0954a55d44dcc..576b0c4d25aa0 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts @@ -10,7 +10,6 @@ import { CreateCommentsArray, Description, DescriptionOrUndefined, - EmptyStringArrayDecoded, EntriesArray, ExceptionListItemType, ExceptionListItemTypeOrUndefined, @@ -23,12 +22,15 @@ import { NameOrUndefined, NamespaceType, NamespaceTypeArray, - NonEmptyStringArrayDecoded, OsTypeArray, Tags, TagsOrUndefined, UpdateCommentsArray, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { + EmptyStringArrayDecoded, + NonEmptyStringArrayDecoded, +} from '@kbn/securitysolution-io-ts-types'; import { FilterOrUndefined, diff --git a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list.ts index 82ea5a4f104c5..dfe7a97d0b2f3 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list.ts @@ -6,7 +6,7 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; -import { NamespaceTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectType } from '../../../common/types'; import { diff --git a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_item.ts index cb9c16ffe3c7b..b75520614150b 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_item.ts @@ -6,7 +6,7 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; -import { NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { FilterOrUndefined, diff --git a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_items.ts b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_items.ts index 6721aff5b0c1e..ad4646a57a5ca 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_items.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_items.ts @@ -6,12 +6,11 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; +import { Id, NamespaceTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { EmptyStringArrayDecoded, - Id, - NamespaceTypeArray, NonEmptyStringArrayDecoded, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-types'; import { SavedObjectType, diff --git a/x-pack/plugins/lists/server/services/exception_lists/get_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/get_exception_list.ts index 342e03160b45b..928190efbf531 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/get_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/get_exception_list.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectsClientContract, diff --git a/x-pack/plugins/lists/server/services/exception_lists/get_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/get_exception_list_item.ts index cf469baa46370..be612868abe48 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/get_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/get_exception_list_item.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectsClientContract, diff --git a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts index 69d9b87227bca..3daa2e9157b5d 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts @@ -15,7 +15,7 @@ import { NamespaceType, OsTypeArray, TagsOrUndefined, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListSchema, diff --git a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts index 041008a06f3df..0d9ba8d8fefcc 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts @@ -17,7 +17,7 @@ import { OsTypeArray, TagsOrUndefined, UpdateCommentsArrayOrUndefined, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema, diff --git a/x-pack/plugins/lists/server/services/exception_lists/utils.ts b/x-pack/plugins/lists/server/services/exception_lists/utils.ts index 1322f153bf3bd..12fe8eabd4f6a 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/utils.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/utils.ts @@ -16,7 +16,7 @@ import { UpdateCommentsArrayOrUndefined, exceptionListItemType, exceptionListType, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectType, diff --git a/x-pack/plugins/lists/server/services/items/create_list_item.ts b/x-pack/plugins/lists/server/services/items/create_list_item.ts index 3c51f56c7916a..ebeef3e90933d 100644 --- a/x-pack/plugins/lists/server/services/items/create_list_item.ts +++ b/x-pack/plugins/lists/server/services/items/create_list_item.ts @@ -7,7 +7,7 @@ import uuid from 'uuid'; import { ElasticsearchClient } from 'kibana/server'; -import { IdOrUndefined, MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-utils'; +import { IdOrUndefined, MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-list-types'; import { DeserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/services/items/create_list_items_bulk.ts b/x-pack/plugins/lists/server/services/items/create_list_items_bulk.ts index 5928260ab94ac..00956a7c3c3fa 100644 --- a/x-pack/plugins/lists/server/services/items/create_list_items_bulk.ts +++ b/x-pack/plugins/lists/server/services/items/create_list_items_bulk.ts @@ -7,7 +7,7 @@ import uuid from 'uuid'; import { ElasticsearchClient } from 'kibana/server'; -import { MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-utils'; +import { MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-list-types'; import { transformListItemToElasticQuery } from '../utils'; import { DeserializerOrUndefined, SerializerOrUndefined } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/items/delete_list_item.ts b/x-pack/plugins/lists/server/services/items/delete_list_item.ts index 4fcb2656d2ba7..c08e683aafa1c 100644 --- a/x-pack/plugins/lists/server/services/items/delete_list_item.ts +++ b/x-pack/plugins/lists/server/services/items/delete_list_item.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id } from '@kbn/securitysolution-io-ts-utils'; +import { Id } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemSchema } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/items/delete_list_item_by_value.ts b/x-pack/plugins/lists/server/services/items/delete_list_item_by_value.ts index ccbe8d6fe7925..1adcf45e85748 100644 --- a/x-pack/plugins/lists/server/services/items/delete_list_item_by_value.ts +++ b/x-pack/plugins/lists/server/services/items/delete_list_item_by_value.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemArraySchema } from '../../../common/schemas'; import { getQueryFilterFromTypeValue } from '../utils'; diff --git a/x-pack/plugins/lists/server/services/items/get_list_item.ts b/x-pack/plugins/lists/server/services/items/get_list_item.ts index aca8deac24817..a1653cb31ce16 100644 --- a/x-pack/plugins/lists/server/services/items/get_list_item.ts +++ b/x-pack/plugins/lists/server/services/items/get_list_item.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id } from '@kbn/securitysolution-io-ts-utils'; +import { Id } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemSchema } from '../../../common/schemas'; import { transformElasticToListItem } from '../utils'; diff --git a/x-pack/plugins/lists/server/services/items/get_list_item_by_value.ts b/x-pack/plugins/lists/server/services/items/get_list_item_by_value.ts index 083dca2ea9410..a190f9388bef3 100644 --- a/x-pack/plugins/lists/server/services/items/get_list_item_by_value.ts +++ b/x-pack/plugins/lists/server/services/items/get_list_item_by_value.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemArraySchema } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/items/get_list_item_by_values.ts b/x-pack/plugins/lists/server/services/items/get_list_item_by_values.ts index 5a4d55172af23..0fcb958940d9b 100644 --- a/x-pack/plugins/lists/server/services/items/get_list_item_by_values.ts +++ b/x-pack/plugins/lists/server/services/items/get_list_item_by_values.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemArraySchema } from '../../../common/schemas'; import { diff --git a/x-pack/plugins/lists/server/services/items/search_list_item_by_values.ts b/x-pack/plugins/lists/server/services/items/search_list_item_by_values.ts index d6d8f66770653..2b525fde6a428 100644 --- a/x-pack/plugins/lists/server/services/items/search_list_item_by_values.ts +++ b/x-pack/plugins/lists/server/services/items/search_list_item_by_values.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { SearchListItemArraySchema } from '../../../common/schemas'; import { diff --git a/x-pack/plugins/lists/server/services/items/update_list_item.ts b/x-pack/plugins/lists/server/services/items/update_list_item.ts index 91c38dd3f331c..4f1a19430aeda 100644 --- a/x-pack/plugins/lists/server/services/items/update_list_item.ts +++ b/x-pack/plugins/lists/server/services/items/update_list_item.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id, MetaOrUndefined } from '@kbn/securitysolution-io-ts-utils'; +import { Id, MetaOrUndefined } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemSchema, _VersionOrUndefined } from '../../../common/schemas'; import { transformListItemToElasticQuery } from '../utils'; diff --git a/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts b/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts index 8a05e4667a290..b3ce823f9ac29 100644 --- a/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts +++ b/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts @@ -8,7 +8,7 @@ import { Readable } from 'stream'; import { ElasticsearchClient } from 'kibana/server'; -import { MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-utils'; +import { MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-list-types'; import { createListIfItDoesNotExist } from '../lists/create_list_if_it_does_not_exist'; import { diff --git a/x-pack/plugins/lists/server/services/lists/create_list.ts b/x-pack/plugins/lists/server/services/lists/create_list.ts index 6b0954f3fcc9d..d139ef3ea4bb1 100644 --- a/x-pack/plugins/lists/server/services/lists/create_list.ts +++ b/x-pack/plugins/lists/server/services/lists/create_list.ts @@ -13,7 +13,7 @@ import { MetaOrUndefined, Name, Type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { encodeHitVersion } from '../utils/encode_hit_version'; import { diff --git a/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts b/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts index 483810a9b1c43..71094a5ab49de 100644 --- a/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts +++ b/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts @@ -6,7 +6,13 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Description, Id, MetaOrUndefined, Name, Type } from '@kbn/securitysolution-io-ts-utils'; +import { + Description, + Id, + MetaOrUndefined, + Name, + Type, +} from '@kbn/securitysolution-io-ts-list-types'; import { DeserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/services/lists/delete_list.ts b/x-pack/plugins/lists/server/services/lists/delete_list.ts index 0e140544fa47d..a215044b92b4c 100644 --- a/x-pack/plugins/lists/server/services/lists/delete_list.ts +++ b/x-pack/plugins/lists/server/services/lists/delete_list.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id } from '@kbn/securitysolution-io-ts-utils'; +import { Id } from '@kbn/securitysolution-io-ts-list-types'; import { ListSchema } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/lists/get_list.ts b/x-pack/plugins/lists/server/services/lists/get_list.ts index a248f81449bfc..7ff17bc2ee553 100644 --- a/x-pack/plugins/lists/server/services/lists/get_list.ts +++ b/x-pack/plugins/lists/server/services/lists/get_list.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id } from '@kbn/securitysolution-io-ts-utils'; +import { Id } from '@kbn/securitysolution-io-ts-list-types'; import { ListSchema } from '../../../common/schemas'; import { transformElasticToList } from '../utils/transform_elastic_to_list'; diff --git a/x-pack/plugins/lists/server/services/lists/list_client_types.ts b/x-pack/plugins/lists/server/services/lists/list_client_types.ts index b684511ff679c..b4fe52019ec7b 100644 --- a/x-pack/plugins/lists/server/services/lists/list_client_types.ts +++ b/x-pack/plugins/lists/server/services/lists/list_client_types.ts @@ -17,7 +17,7 @@ import { Name, NameOrUndefined, Type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { DeserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/services/lists/update_list.ts b/x-pack/plugins/lists/server/services/lists/update_list.ts index 4917fec7397ea..374c3cd0e2def 100644 --- a/x-pack/plugins/lists/server/services/lists/update_list.ts +++ b/x-pack/plugins/lists/server/services/lists/update_list.ts @@ -11,7 +11,7 @@ import { Id, MetaOrUndefined, NameOrUndefined, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { decodeVersion } from '../utils/decode_version'; import { encodeHitVersion } from '../utils/encode_hit_version'; diff --git a/x-pack/plugins/lists/server/services/utils/find_source_type.test.ts b/x-pack/plugins/lists/server/services/utils/find_source_type.test.ts index e408f7d33b548..80b10142d553a 100644 --- a/x-pack/plugins/lists/server/services/utils/find_source_type.test.ts +++ b/x-pack/plugins/lists/server/services/utils/find_source_type.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { getSearchEsListItemMock } from '../../schemas/elastic_response/search_es_list_item_schema.mock'; import { SearchEsListItemSchema } from '../../schemas/elastic_response'; diff --git a/x-pack/plugins/lists/server/services/utils/find_source_type.ts b/x-pack/plugins/lists/server/services/utils/find_source_type.ts index 00a6985b2c751..e69eecbbe3129 100644 --- a/x-pack/plugins/lists/server/services/utils/find_source_type.ts +++ b/x-pack/plugins/lists/server/services/utils/find_source_type.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Type, type } from '@kbn/securitysolution-io-ts-utils'; +import { Type, type } from '@kbn/securitysolution-io-ts-list-types'; import { SearchEsListItemSchema } from '../../schemas/elastic_response'; diff --git a/x-pack/plugins/lists/server/services/utils/find_source_value.ts b/x-pack/plugins/lists/server/services/utils/find_source_value.ts index c12f4bdfcdb9f..7990481c3e3db 100644 --- a/x-pack/plugins/lists/server/services/utils/find_source_value.ts +++ b/x-pack/plugins/lists/server/services/utils/find_source_value.ts @@ -6,7 +6,7 @@ */ import Mustache from 'mustache'; -import { type } from '@kbn/securitysolution-io-ts-utils'; +import { type } from '@kbn/securitysolution-io-ts-list-types'; import { DeserializerOrUndefined } from '../../../common/schemas'; import { SearchEsListItemSchema } from '../../schemas/elastic_response'; diff --git a/x-pack/plugins/lists/server/services/utils/get_query_filter_from_type_value.ts b/x-pack/plugins/lists/server/services/utils/get_query_filter_from_type_value.ts index 0ece97b21d5b7..6a30cb5d6a847 100644 --- a/x-pack/plugins/lists/server/services/utils/get_query_filter_from_type_value.ts +++ b/x-pack/plugins/lists/server/services/utils/get_query_filter_from_type_value.ts @@ -6,7 +6,7 @@ */ import { isEmpty, isObject } from 'lodash/fp'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; export type QueryFilterType = [ { term: Record }, diff --git a/x-pack/plugins/lists/server/services/utils/transform_elastic_named_search_to_list_item.ts b/x-pack/plugins/lists/server/services/utils/transform_elastic_named_search_to_list_item.ts index f02ae17fa0293..902fc17039792 100644 --- a/x-pack/plugins/lists/server/services/utils/transform_elastic_named_search_to_list_item.ts +++ b/x-pack/plugins/lists/server/services/utils/transform_elastic_named_search_to_list_item.ts @@ -6,7 +6,7 @@ */ import type { estypes } from '@elastic/elasticsearch'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { SearchListItemArraySchema } from '../../../common/schemas'; import { SearchEsListItemSchema } from '../../schemas/elastic_response'; diff --git a/x-pack/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts b/x-pack/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts index 3e27bd24517e4..1cbf72e8eb653 100644 --- a/x-pack/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts +++ b/x-pack/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts @@ -6,7 +6,7 @@ */ import type { estypes } from '@elastic/elasticsearch'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemArraySchema } from '../../../common/schemas'; import { ErrorWithStatusCode } from '../../error_with_status_code'; diff --git a/x-pack/plugins/lists/server/services/utils/transform_list_item_to_elastic_query.ts b/x-pack/plugins/lists/server/services/utils/transform_list_item_to_elastic_query.ts index 32eb885871cb1..fc97bef54b0a6 100644 --- a/x-pack/plugins/lists/server/services/utils/transform_list_item_to_elastic_query.ts +++ b/x-pack/plugins/lists/server/services/utils/transform_list_item_to_elastic_query.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { SerializerOrUndefined } from '../../../common/schemas'; import { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx index d659f557ee751..5ec8999d20518 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx @@ -21,7 +21,7 @@ import { useFetchOrCreateRuleExceptionList } from '../use_fetch_or_create_rule_e import { useSignalIndex } from '../../../../detections/containers/detection_engine/alerts/use_signal_index'; import * as helpers from '../helpers'; import { getExceptionListItemSchemaMock } from '../../../../../../lists/common/schemas/response/exception_list_item_schema.mock'; -import { EntriesArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema } from '../../../../../../lists/common'; import { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx index 64ef1dead7e75..ab6d4b401bb41 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx @@ -20,7 +20,7 @@ import { import { useAddOrUpdateException } from '../use_add_exception'; import { useSignalIndex } from '../../../../detections/containers/detection_engine/alerts/use_signal_index'; import { getExceptionListItemSchemaMock } from '../../../../../../lists/common/schemas/response/exception_list_item_schema.mock'; -import { EntriesArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; import { getRulesEqlSchemaMock, getRulesSchemaMock, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx index 0560b790e4047..907b30fcaa879 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx @@ -56,7 +56,7 @@ import { ENTRIES_WITH_IDS, OLD_DATE_RELATIVE_TO_DATE_NOW, } from '../../../../../lists/common/constants.mock'; -import { EntriesArray, OsTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray, OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { CreateExceptionListItemSchema, ExceptionListItemSchema, diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts index ee6962f7e9535..5b4aed35bbc7c 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts @@ -9,7 +9,7 @@ import { ExceptionListClient } from '../../../../../lists/server'; import { listMock } from '../../../../../lists/server/mocks'; import { getFoundExceptionListItemSchemaMock } from '../../../../../lists/common/schemas/response/found_exception_list_item_schema.mock'; import { getExceptionListItemSchemaMock } from '../../../../../lists/common/schemas/response/exception_list_item_schema.mock'; -import { EntriesArray, EntryList } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray, EntryList } from '@kbn/securitysolution-io-ts-list-types'; import { buildArtifact, getEndpointExceptionList, diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts index 7a5b906860f10..f3bc195b5a896 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts @@ -7,7 +7,7 @@ import { createHash } from 'crypto'; import { deflate } from 'zlib'; -import { Entry, EntryNested } from '@kbn/securitysolution-io-ts-utils'; +import { Entry, EntryNested } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema } from '../../../../../lists/common/schemas'; import { validate } from '../../../../common/validate'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts index 58df4b3f11412..f50f0b521ed76 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts @@ -6,7 +6,7 @@ */ import type { estypes } from '@elastic/elasticsearch'; -import { entriesList } from '@kbn/securitysolution-io-ts-utils'; +import { entriesList } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema } from '../../../../../../lists/common/schemas'; import { hasLargeValueList } from '../../../../../common/detection_engine/utils'; diff --git a/yarn.lock b/yarn.lock index b8b4e54d25dcc..4857c7c908293 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2707,6 +2707,15 @@ uid "" "@kbn/securitysolution-es-utils@link:bazel-bin/packages/kbn-securitysolution-es-utils/npm_module": +"@kbn/securitysolution-io-ts-alerting-types@link:bazel-bin/packages/kbn-securitysolution-io-ts-alerting-types/npm_module": + version "0.0.0" + uid "" + +"@kbn/securitysolution-io-ts-list-types@link:bazel-bin/packages/kbn-securitysolution-io-ts-list-types/npm_module": + version "0.0.0" + uid "" + +"@kbn/securitysolution-io-ts-types@link:bazel-bin/packages/kbn-securitysolution-io-ts-types/npm_module": version "0.0.0" uid "" From 3da9a78eeb4f73c0fd8d457f6e9265b1623ad12b Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 13 May 2021 16:37:28 -0600 Subject: [PATCH 25/27] Removes circular deps for lists in tooling and bumps down byte limit for lists (#100082) ## Summary * Removes circular deps exception for lists * Bumps down byte limit for lists now that we have decreased the page bytes to be under 200kb --- packages/kbn-optimizer/limits.yml | 2 +- src/dev/run_find_plugins_with_circular_deps.ts | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 448b5ad650da5..5748984c7bc6e 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -46,7 +46,7 @@ pageLoadAssetSize: lens: 96624 licenseManagement: 41817 licensing: 29004 - lists: 280504 + lists: 200000 logstash: 53548 management: 46112 maps: 80000 diff --git a/src/dev/run_find_plugins_with_circular_deps.ts b/src/dev/run_find_plugins_with_circular_deps.ts index a737bc6a73004..4ce71b24332c1 100644 --- a/src/dev/run_find_plugins_with_circular_deps.ts +++ b/src/dev/run_find_plugins_with_circular_deps.ts @@ -19,9 +19,7 @@ interface Options { type CircularDepList = Set; -const allowedList: CircularDepList = new Set([ - 'x-pack/plugins/lists -> x-pack/plugins/security_solution', -]); +const allowedList: CircularDepList = new Set([]); run( async ({ flags, log }) => { From 7058e919bafdd8581ddf87fadb0e22fecedf6f99 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 13 May 2021 17:26:12 -0600 Subject: [PATCH 26/27] Updates the monorepo-packages list (#100096) ## Summary Updates the monorepo-packages list --- docs/developer/getting-started/monorepo-packages.asciidoc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/developer/getting-started/monorepo-packages.asciidoc b/docs/developer/getting-started/monorepo-packages.asciidoc index 7265cd415949c..92dc2a1a24377 100644 --- a/docs/developer/getting-started/monorepo-packages.asciidoc +++ b/docs/developer/getting-started/monorepo-packages.asciidoc @@ -82,12 +82,14 @@ yarn kbn watch-bazel - @kbn/legacy-logging - @kbn/logging - @kbn/securitysolution-constants -- @kbn/securitysolution-utils - @kbn/securitysolution-es-utils +- kbn/securitysolution-io-ts-alerting-types +- kbn/securitysolution-io-ts-list-types +- kbn/securitysolution-io-ts-types - @kbn/securitysolution-io-ts-utils +- @kbn/securitysolution-utils - @kbn/std - @kbn/telemetry-utils - @kbn/tinymath - @kbn/utility-types - @kbn/utils - From 108252bd8df012e5597cab1c20bc434e5dd627b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20S=C3=A1nchez?= Date: Fri, 14 May 2021 10:24:08 +0200 Subject: [PATCH 27/27] Disable contextMenu when event is not event.kind=event (#100027) --- .../timelines/components/timeline/body/actions/index.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx index 015c4c0b45949..0824dea0803ba 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx @@ -115,6 +115,11 @@ const ActionsComponent: React.FC = ({ ); const eventType = getEventType(ecsData); + const isEventContextMenuEnabled = useMemo( + () => isEventFilteringEnabled && !!ecsData.event?.kind && ecsData.event?.kind[0] === 'event', + [ecsData.event?.kind, isEventFilteringEnabled] + ); + return ( <> {showCheckboxes && ( @@ -197,7 +202,7 @@ const ActionsComponent: React.FC = ({ key="alert-context-menu" ecsRowData={ecsData} timelineId={timelineId} - disabled={eventType !== 'signal' && (!isEventFilteringEnabled || eventType !== 'raw')} + disabled={eventType !== 'signal' && !isEventContextMenuEnabled} refetch={refetch} onRuleChange={onRuleChange} />